diff options
Diffstat (limited to 'arch/mips/pci/fixup-malta.c')
-rw-r--r-- | arch/mips/pci/fixup-malta.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/mips/pci/fixup-malta.c b/arch/mips/pci/fixup-malta.c index df36e2327c54..7a0eda782e35 100644 --- a/arch/mips/pci/fixup-malta.c +++ b/arch/mips/pci/fixup-malta.c | |||
@@ -54,6 +54,7 @@ int pcibios_plat_dev_init(struct pci_dev *dev) | |||
54 | static void malta_piix_func0_fixup(struct pci_dev *pdev) | 54 | static void malta_piix_func0_fixup(struct pci_dev *pdev) |
55 | { | 55 | { |
56 | unsigned char reg_val; | 56 | unsigned char reg_val; |
57 | u32 reg_val32; | ||
57 | /* PIIX PIRQC[A:D] irq mappings */ | 58 | /* PIIX PIRQC[A:D] irq mappings */ |
58 | static int piixirqmap[PIIX4_FUNC0_PIRQRC_IRQ_ROUTING_MAX] = { | 59 | static int piixirqmap[PIIX4_FUNC0_PIRQRC_IRQ_ROUTING_MAX] = { |
59 | 0, 0, 0, 3, | 60 | 0, 0, 0, 3, |
@@ -83,6 +84,16 @@ static void malta_piix_func0_fixup(struct pci_dev *pdev) | |||
83 | pci_write_config_byte(pdev, PIIX4_FUNC0_TOM, reg_val | | 84 | pci_write_config_byte(pdev, PIIX4_FUNC0_TOM, reg_val | |
84 | PIIX4_FUNC0_TOM_TOP_OF_MEMORY_MASK); | 85 | PIIX4_FUNC0_TOM_TOP_OF_MEMORY_MASK); |
85 | } | 86 | } |
87 | |||
88 | /* Mux SERIRQ to its pin */ | ||
89 | pci_read_config_dword(pdev, PIIX4_FUNC0_GENCFG, ®_val32); | ||
90 | pci_write_config_dword(pdev, PIIX4_FUNC0_GENCFG, | ||
91 | reg_val32 | PIIX4_FUNC0_GENCFG_SERIRQ); | ||
92 | |||
93 | /* Enable SERIRQ */ | ||
94 | pci_read_config_byte(pdev, PIIX4_FUNC0_SERIRQC, ®_val); | ||
95 | reg_val |= PIIX4_FUNC0_SERIRQC_EN | PIIX4_FUNC0_SERIRQC_CONT; | ||
96 | pci_write_config_byte(pdev, PIIX4_FUNC0_SERIRQC, reg_val); | ||
86 | } | 97 | } |
87 | 98 | ||
88 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_0, | 99 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_0, |