]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - board/imgtec/malta/malta.c
malta: enable PIIX4 SERIRQ
[karo-tx-uboot.git] / board / imgtec / malta / malta.c
index a1a4c0186606656a4bf52fe8fe205c42306d93f3..d363e49919e96454e692658289271b448c29f64f 100644 (file)
@@ -171,6 +171,8 @@ struct serial_device *default_serial_console(void)
 void pci_init_board(void)
 {
        pci_dev_t bdf;
+       u32 val32;
+       u8 val8;
 
        switch (malta_sys_con()) {
        case SYSCON_GT64120:
@@ -205,4 +207,14 @@ void pci_init_board(void)
        pci_write_config_byte(bdf, PCI_CFG_PIIX4_PIRQRCB, 10);
        pci_write_config_byte(bdf, PCI_CFG_PIIX4_PIRQRCC, 11);
        pci_write_config_byte(bdf, PCI_CFG_PIIX4_PIRQRCD, 11);
+
+       /* mux SERIRQ onto SERIRQ pin */
+       pci_read_config_dword(bdf, PCI_CFG_PIIX4_GENCFG, &val32);
+       val32 |= PCI_CFG_PIIX4_GENCFG_SERIRQ;
+       pci_write_config_dword(bdf, PCI_CFG_PIIX4_GENCFG, val32);
+
+       /* enable SERIRQ - Linux currently depends upon this */
+       pci_read_config_byte(bdf, PCI_CFG_PIIX4_SERIRQC, &val8);
+       val8 |= PCI_CFG_PIIX4_SERIRQC_EN | PCI_CFG_PIIX4_SERIRQC_CONT;
+       pci_write_config_byte(bdf, PCI_CFG_PIIX4_SERIRQC, val8);
 }