diff options
Diffstat (limited to 'arch/alpha/kernel/pci.c')
-rw-r--r-- | arch/alpha/kernel/pci.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/arch/alpha/kernel/pci.c b/arch/alpha/kernel/pci.c index 36ab22a7ea12..5cf45fc51343 100644 --- a/arch/alpha/kernel/pci.c +++ b/arch/alpha/kernel/pci.c | |||
@@ -71,6 +71,23 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82378, quirk_i | |||
71 | static void __init | 71 | static void __init |
72 | quirk_cypress(struct pci_dev *dev) | 72 | quirk_cypress(struct pci_dev *dev) |
73 | { | 73 | { |
74 | /* The Notorious Cy82C693 chip. */ | ||
75 | |||
76 | /* The generic legacy mode IDE fixup in drivers/pci/probe.c | ||
77 | doesn't work correctly with the Cypress IDE controller as | ||
78 | it has non-standard register layout. Fix that. */ | ||
79 | if (dev->class >> 8 == PCI_CLASS_STORAGE_IDE) { | ||
80 | dev->resource[2].start = dev->resource[3].start = 0; | ||
81 | dev->resource[2].end = dev->resource[3].end = 0; | ||
82 | dev->resource[2].flags = dev->resource[3].flags = 0; | ||
83 | if (PCI_FUNC(dev->devfn) == 2) { | ||
84 | dev->resource[0].start = 0x170; | ||
85 | dev->resource[0].end = 0x177; | ||
86 | dev->resource[1].start = 0x376; | ||
87 | dev->resource[1].end = 0x376; | ||
88 | } | ||
89 | } | ||
90 | |||
74 | /* The Cypress bridge responds on the PCI bus in the address range | 91 | /* The Cypress bridge responds on the PCI bus in the address range |
75 | 0xffff0000-0xffffffff (conventional x86 BIOS ROM). There is no | 92 | 0xffff0000-0xffffffff (conventional x86 BIOS ROM). There is no |
76 | way to turn this off. The bridge also supports several extended | 93 | way to turn this off. The bridge also supports several extended |