summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainboard/siemens/mc_bdx1/irqroute.h2
-rw-r--r--src/mainboard/siemens/mc_bdx1/mainboard.c14
2 files changed, 15 insertions, 1 deletions
diff --git a/src/mainboard/siemens/mc_bdx1/irqroute.h b/src/mainboard/siemens/mc_bdx1/irqroute.h
index c3911be75b..3b437fee55 100644
--- a/src/mainboard/siemens/mc_bdx1/irqroute.h
+++ b/src/mainboard/siemens/mc_bdx1/irqroute.h
@@ -33,7 +33,7 @@
/*
* Route each PIRQ[A-H] to a PIC IRQ[0-15]
* Reserved: 0, 1, 2, 8, 13
- * ACPI/SCI: 9
+ * ACPI/SCI: 10
*/
#define PIRQ_PIC_ROUTES \
PIRQ_PIC(A, 5), \
diff --git a/src/mainboard/siemens/mc_bdx1/mainboard.c b/src/mainboard/siemens/mc_bdx1/mainboard.c
index bad072b96e..8a5226b09f 100644
--- a/src/mainboard/siemens/mc_bdx1/mainboard.c
+++ b/src/mainboard/siemens/mc_bdx1/mainboard.c
@@ -32,6 +32,7 @@
#include <hwilib.h>
#include <i210.h>
#include <soc/pci_devs.h>
+#include <soc/irq.h>
#define MAX_PATH_DEPTH 12
#define MAX_NUM_MAPPINGS 10
@@ -91,6 +92,18 @@ static void mainboard_enable(device_t dev)
}
+static void mainboard_init(void *chip_info)
+{
+ uint8_t actl = 0;
+ device_t dev = dev_find_slot(0, PCI_DEVFN(LPC_DEV, LPC_FUNC));
+
+ /* Route SCI to IRQ 10 to free IRQ 9 slot. */
+ actl = pci_read_config8(dev, ACPI_CNTL_OFFSET);
+ actl &= ~SCIS_MASK;
+ actl |= SCIS_IRQ10;
+ pci_write_config8(dev, ACPI_CNTL_OFFSET, actl);
+}
+
static void mainboard_final(void *chip_info)
{
void *spi_base = NULL;
@@ -183,5 +196,6 @@ enum cb_err mainboard_get_mac_address(struct device *dev, uint8_t mac[6])
struct chip_operations mainboard_ops = {
.enable_dev = mainboard_enable,
+ .init = mainboard_init,
.final = mainboard_final
};