Martin Roth (martinroth@google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/12629
-gerrit
commit 468d67222d3da2b9949336637194918316a14b0f Author: Martin Roth martinroth@google.com Date: Wed Dec 2 16:20:53 2015 -0700
fsp_baytrail: Change A, A, A, A IRQ routing to A, A, A, B
Devices that have their interrupt routing set to A, A, A, A don't get any interrupt values assigned because that series evaluates to 0. The code that sets the interrupt values checks to make sure a value is set by verifying that it's not 0. On Bay Trail, these are all single-function graphics devices, so by changing one of the unused interrupt lines from A to any other value, it assigns the values correctly.
This issue did not affect ACPI interrupt routing.
This is just a workaround, and the root issue still needs to be fixed.
Change-Id: I78866e3e0079435037e457a4fb04979254b56ee2 Signed-off-by: Martin Roth martinroth@google.com --- src/mainboard/intel/bayleybay_fsp/irqroute.h | 3 ++- src/mainboard/intel/minnowmax/irqroute.h | 3 ++- src/mainboard/siemens/mc_tcu3/irqroute.h | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/mainboard/intel/bayleybay_fsp/irqroute.h b/src/mainboard/intel/bayleybay_fsp/irqroute.h index e3523e9..8b6a46e 100644 --- a/src/mainboard/intel/bayleybay_fsp/irqroute.h +++ b/src/mainboard/intel/bayleybay_fsp/irqroute.h @@ -44,8 +44,9 @@ #define PCIE_BRIDGE_IRQ_ROUTES \ PCIE_BRIDGE_DEV(RP, BRIDGE1_DEV, E, F, G, H)
+/* Devices set as A, A, A, A evaluate as 0, and don't get set */ #define PCI_DEV_PIRQ_ROUTES \ - PCI_DEV_PIRQ_ROUTE(GFX_DEV, A, A, A, A), \ + PCI_DEV_PIRQ_ROUTE(GFX_DEV, A, A, A, B), \ PCI_DEV_PIRQ_ROUTE(EMMC_DEV, D, E, F, G), \ PCI_DEV_PIRQ_ROUTE(SDIO_DEV, B, A, A, A), \ PCI_DEV_PIRQ_ROUTE(SD_DEV, C, A, A, A), \ diff --git a/src/mainboard/intel/minnowmax/irqroute.h b/src/mainboard/intel/minnowmax/irqroute.h index bdf3d94..4242acf 100644 --- a/src/mainboard/intel/minnowmax/irqroute.h +++ b/src/mainboard/intel/minnowmax/irqroute.h @@ -45,8 +45,9 @@ #define PCIE_BRIDGE_IRQ_ROUTES \ PCIE_BRIDGE_DEV(RP, BRIDGE1_DEV, E, F, G, H)
+/* Devices set as A, A, A, A evaluate as 0, and don't get set */ #define PCI_DEV_PIRQ_ROUTES \ - PCI_DEV_PIRQ_ROUTE(GFX_DEV, A, A, A, A), \ + PCI_DEV_PIRQ_ROUTE(GFX_DEV, A, A, A, B), \ PCI_DEV_PIRQ_ROUTE(EMMC_DEV, D, E, F, G), \ PCI_DEV_PIRQ_ROUTE(SDIO_DEV, B, A, A, A), \ PCI_DEV_PIRQ_ROUTE(SD_DEV, C, A, A, A), \ diff --git a/src/mainboard/siemens/mc_tcu3/irqroute.h b/src/mainboard/siemens/mc_tcu3/irqroute.h index e3523e9..8b6a46e 100644 --- a/src/mainboard/siemens/mc_tcu3/irqroute.h +++ b/src/mainboard/siemens/mc_tcu3/irqroute.h @@ -44,8 +44,9 @@ #define PCIE_BRIDGE_IRQ_ROUTES \ PCIE_BRIDGE_DEV(RP, BRIDGE1_DEV, E, F, G, H)
+/* Devices set as A, A, A, A evaluate as 0, and don't get set */ #define PCI_DEV_PIRQ_ROUTES \ - PCI_DEV_PIRQ_ROUTE(GFX_DEV, A, A, A, A), \ + PCI_DEV_PIRQ_ROUTE(GFX_DEV, A, A, A, B), \ PCI_DEV_PIRQ_ROUTE(EMMC_DEV, D, E, F, G), \ PCI_DEV_PIRQ_ROUTE(SDIO_DEV, B, A, A, A), \ PCI_DEV_PIRQ_ROUTE(SD_DEV, C, A, A, A), \