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 |
