diff options
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/loongson/common/cs5536/cs5536_isa.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/arch/mips/loongson/common/cs5536/cs5536_isa.c b/arch/mips/loongson/common/cs5536/cs5536_isa.c index a6eb2e853d94..924be39e7733 100644 --- a/arch/mips/loongson/common/cs5536/cs5536_isa.c +++ b/arch/mips/loongson/common/cs5536/cs5536_isa.c | |||
@@ -13,6 +13,7 @@ | |||
13 | * option) any later version. | 13 | * option) any later version. |
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include <linux/pci.h> | ||
16 | #include <cs5536/cs5536.h> | 17 | #include <cs5536/cs5536.h> |
17 | #include <cs5536/cs5536_pci.h> | 18 | #include <cs5536/cs5536_pci.h> |
18 | 19 | ||
@@ -314,3 +315,16 @@ u32 pci_isa_read_reg(int reg) | |||
314 | 315 | ||
315 | return conf_data; | 316 | return conf_data; |
316 | } | 317 | } |
318 | |||
319 | /* | ||
320 | * The mfgpt timer interrupt is running early, so we must keep the south bridge | ||
321 | * mmio always enabled. Otherwise we may race with the PCI configuration which | ||
322 | * may temporarily disable it. When that happens and the timer interrupt fires, | ||
323 | * we are not able to clear it and the system will hang. | ||
324 | */ | ||
325 | static void cs5536_isa_mmio_always_on(struct pci_dev *dev) | ||
326 | { | ||
327 | dev->mmio_always_on = 1; | ||
328 | } | ||
329 | DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_CS5536_ISA, | ||
330 | PCI_CLASS_BRIDGE_ISA, 8, cs5536_isa_mmio_always_on); | ||