diff options
author | Werner Zeh <werner.zeh@siemens.com> | 2021-07-20 07:33:20 +0200 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2021-07-21 16:23:48 +0000 |
commit | 1412ffab198ae101e76c0d2bf4da808660027228 (patch) | |
tree | 795125bf131cdc0b8afe68f7d655adabab029c0a | |
parent | 061a93f93d2a3460423a50448e428cf08d282fff (diff) |
mb/siemens/mc_apl{1,2,3,5,6}: Set PCI bus master bit only if allowed
Take Kconfig switch PCI_ALLOW_BUS_MASTER into account and set the PCI
bus master bit for legacy devices only if it is allowed.
Change-Id: I7798a767d528419bb093f301140ab68cc8b9c5ae
Signed-off-by: Werner Zeh <werner.zeh@siemens.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/56442
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Mario Scheithauer <mario.scheithauer@siemens.com>
Reviewed-by: Paul Menzel <paulepanter@mailbox.org>
5 files changed, 21 insertions, 14 deletions
diff --git a/src/mainboard/siemens/mc_apl1/mainboard.c b/src/mainboard/siemens/mc_apl1/mainboard.c index bca0cbb4c8..114d6e32b8 100644 --- a/src/mainboard/siemens/mc_apl1/mainboard.c +++ b/src/mainboard/siemens/mc_apl1/mainboard.c @@ -215,10 +215,12 @@ static void mainboard_final(void *chip_info) /* Do board specific things */ variant_mainboard_final(); - /* Set Master Enable for on-board PCI device. */ - dev = dev_find_device(PCI_VENDOR_ID_SIEMENS, 0x403f, 0); - if (dev) { - pci_or_config16(dev, PCI_COMMAND, PCI_COMMAND_MASTER); + /* Set Master Enable for on-board PCI device if allowed. */ + if (CONFIG(PCI_ALLOW_BUS_MASTER)) { + dev = dev_find_device(PCI_VENDOR_ID_SIEMENS, 0x403f, 0); + if (dev) { + pci_or_config16(dev, PCI_COMMAND, PCI_COMMAND_MASTER); + } } /* Set up SPI OPCODE menu before the controller is locked. */ fast_spi_set_opcode_menu(); diff --git a/src/mainboard/siemens/mc_apl1/variants/mc_apl2/mainboard.c b/src/mainboard/siemens/mc_apl1/variants/mc_apl2/mainboard.c index 1baa8ec802..7d8b9f5181 100644 --- a/src/mainboard/siemens/mc_apl1/variants/mc_apl2/mainboard.c +++ b/src/mainboard/siemens/mc_apl1/variants/mc_apl2/mainboard.c @@ -10,9 +10,11 @@ void variant_mainboard_final(void) { struct device *dev; - /* Set Master Enable for on-board PCI device. */ - dev = dev_find_device(PCI_VENDOR_ID_SIEMENS, 0x403e, 0); - if (dev) { - pci_or_config16(dev, PCI_COMMAND, PCI_COMMAND_MASTER); + if (CONFIG(PCI_ALLOW_BUS_MASTER)) { + /* Set Master Enable for on-board PCI device if allowed. */ + dev = dev_find_device(PCI_VENDOR_ID_SIEMENS, 0x403e, 0); + if (dev) { + pci_or_config16(dev, PCI_COMMAND, PCI_COMMAND_MASTER); + } } } diff --git a/src/mainboard/siemens/mc_apl1/variants/mc_apl3/mainboard.c b/src/mainboard/siemens/mc_apl1/variants/mc_apl3/mainboard.c index 842f3778ae..4f43782cf4 100644 --- a/src/mainboard/siemens/mc_apl1/variants/mc_apl3/mainboard.c +++ b/src/mainboard/siemens/mc_apl1/variants/mc_apl3/mainboard.c @@ -36,10 +36,11 @@ void variant_mainboard_final(void) */ pcr_or32(PID_LPC, PCR_LPC_PRC, (PCR_LPC_CCE_EN | PCR_LPC_PCE_EN)); - /* Set Master Enable for on-board PCI device. */ + /* Set Master Enable for on-board PCI device if allowed. */ dev = dev_find_device(PCI_VENDOR_ID_SIEMENS, 0x403e, 0); if (dev) { - pci_or_config16(dev, PCI_COMMAND, PCI_COMMAND_MASTER); + if (CONFIG(PCI_ALLOW_BUS_MASTER)) + pci_or_config16(dev, PCI_COMMAND, PCI_COMMAND_MASTER); /* Disable clock outputs 0 and 2-4 (CLKOUT) for upstream * XIO2001 PCIe to PCI Bridge. diff --git a/src/mainboard/siemens/mc_apl1/variants/mc_apl5/mainboard.c b/src/mainboard/siemens/mc_apl1/variants/mc_apl5/mainboard.c index 7554fee6f1..82528d5952 100644 --- a/src/mainboard/siemens/mc_apl1/variants/mc_apl5/mainboard.c +++ b/src/mainboard/siemens/mc_apl1/variants/mc_apl5/mainboard.c @@ -43,10 +43,11 @@ void variant_mainboard_final(void) */ pcr_rmw32(PID_MODPHY, TX_DWORD3, (0x00 << 16), (0x4a << 16)); - /* Set Master Enable for on-board PCI device. */ + /* Set Master Enable for on-board PCI device if allowed. */ dev = dev_find_device(PCI_VENDOR_ID_SIEMENS, 0x403e, 0); if (dev) { - pci_or_config16(dev, PCI_COMMAND, PCI_COMMAND_MASTER); + if (CONFIG(PCI_ALLOW_BUS_MASTER)) + pci_or_config16(dev, PCI_COMMAND, PCI_COMMAND_MASTER); /* Disable clock outputs 0-3 (CLKOUT) for upstream XIO2001 PCIe * to PCI Bridge. */ diff --git a/src/mainboard/siemens/mc_apl1/variants/mc_apl6/mainboard.c b/src/mainboard/siemens/mc_apl1/variants/mc_apl6/mainboard.c index 1cecef7c00..2a8dd9b20f 100644 --- a/src/mainboard/siemens/mc_apl1/variants/mc_apl6/mainboard.c +++ b/src/mainboard/siemens/mc_apl1/variants/mc_apl6/mainboard.c @@ -36,10 +36,11 @@ void variant_mainboard_final(void) */ pcr_or32(PID_LPC, PCR_LPC_PRC, (PCR_LPC_CCE_EN | PCR_LPC_PCE_EN)); - /* Set Master Enable for on-board PCI device. */ + /* Set Master Enable for on-board PCI device if allowed. */ dev = dev_find_device(PCI_VENDOR_ID_SIEMENS, 0x403e, 0); if (dev) { - pci_or_config16(dev, PCI_COMMAND, PCI_COMMAND_MASTER); + if (CONFIG(PCI_ALLOW_BUS_MASTER)) + pci_or_config16(dev, PCI_COMMAND, PCI_COMMAND_MASTER); /* Disable clock outputs 0-3 (CLKOUT) for upstream * XIO2001 PCIe to PCI Bridge. |