Commit c6353b4520788e34098bbf61c73fb9618ca7fdd6
Committed by
Jeff Garzik
1 parent
f9ce889b8f
Exists in
master
and in
39 other branches
ahci,ata_generic: let ata_generic handle new MBP w/ MCP89
For yet unknown reason, MCP89 on MBP 7,1 doesn't work w/ ahci under linux but the controller doesn't require explicit mode setting and works fine with ata_generic. Make ahci ignore the controller on MBP 7,1 and let ata_generic take it for now. Reported in bko#15923. https://bugzilla.kernel.org/show_bug.cgi?id=15923 NVIDIA is investigating why ahci mode doesn't work. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Peer Chen <pchen@nvidia.com> Cc: stable@kernel.org Reported-by: Anders Østhus <grapz666@gmail.com> Reported-by: Andreas Graf <andreas_graf@csgraf.de> Reported-by: Benoit Gschwind <gschwind@gnu-log.net> Reported-by: Damien Cassou <damien.cassou@gmail.com> Reported-by: tixetsal@juno.com Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Showing 3 changed files with 17 additions and 0 deletions Side-by-side Diff
drivers/ata/ahci.c
... | ... | @@ -1053,6 +1053,16 @@ |
1053 | 1053 | if (pdev->vendor == PCI_VENDOR_ID_MARVELL && !marvell_enable) |
1054 | 1054 | return -ENODEV; |
1055 | 1055 | |
1056 | + /* | |
1057 | + * For some reason, MCP89 on MacBook 7,1 doesn't work with | |
1058 | + * ahci, use ata_generic instead. | |
1059 | + */ | |
1060 | + if (pdev->vendor == PCI_VENDOR_ID_NVIDIA && | |
1061 | + pdev->device == PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA && | |
1062 | + pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE && | |
1063 | + pdev->subsystem_device == 0xcb89) | |
1064 | + return -ENODEV; | |
1065 | + | |
1056 | 1066 | /* Promise's PDC42819 is a SAS/SATA controller that has an AHCI mode. |
1057 | 1067 | * At the moment, we can only use the AHCI mode. Let the users know |
1058 | 1068 | * that for SAS drives they're out of luck. |
drivers/ata/ata_generic.c
... | ... | @@ -168,6 +168,12 @@ |
168 | 168 | { PCI_DEVICE(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C561), }, |
169 | 169 | { PCI_DEVICE(PCI_VENDOR_ID_OPTI, PCI_DEVICE_ID_OPTI_82C558), }, |
170 | 170 | { PCI_DEVICE(PCI_VENDOR_ID_CENATEK,PCI_DEVICE_ID_CENATEK_IDE), }, |
171 | + /* | |
172 | + * For some reason, MCP89 on MacBook 7,1 doesn't work with | |
173 | + * ahci, use ata_generic instead. | |
174 | + */ | |
175 | + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA, | |
176 | + PCI_VENDOR_ID_APPLE, 0xcb89, }, | |
171 | 177 | #if !defined(CONFIG_PATA_TOSHIBA) && !defined(CONFIG_PATA_TOSHIBA_MODULE) |
172 | 178 | { PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_1), }, |
173 | 179 | { PCI_DEVICE(PCI_VENDOR_ID_TOSHIBA,PCI_DEVICE_ID_TOSHIBA_PICCOLO_2), }, |
include/linux/pci_ids.h
... | ... | @@ -1261,6 +1261,7 @@ |
1261 | 1261 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE 0x0759 |
1262 | 1262 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_SMBUS 0x07D8 |
1263 | 1263 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP79_SMBUS 0x0AA2 |
1264 | +#define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP89_SATA 0x0D85 | |
1264 | 1265 | |
1265 | 1266 | #define PCI_VENDOR_ID_IMS 0x10e0 |
1266 | 1267 | #define PCI_DEVICE_ID_IMS_TT128 0x9128 |