diff options
| author | Tejun Heo <tj@kernel.org> | 2008-06-18 20:56:58 -0400 |
|---|---|---|
| committer | Jeff Garzik <jgarzik@redhat.com> | 2008-06-18 20:56:58 -0400 |
| commit | 9a3b103c27a7e3199b917bc3ca219530132afdfc (patch) | |
| tree | 16ae27606d646c8bf53996804359e27052298b02 /drivers/ata | |
| parent | 040dee53a724f54d47876674d50184873364f207 (diff) | |
ahci: sis can't do PMP
From: Piter PUNK <piterpunk@slackware.com>
SiS AHCIs say they can do PMP but can't and fail detection if SRST w/
pmp==15 is used. Turn off PMP support.
tj: added patch description, adapted patch to #upstream-fixes and
renamed board_ahci_sis to board_ahci_nopmp.
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/ata')
| -rw-r--r-- | drivers/ata/ahci.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 29f34d03bd75..6a4a2a25d97a 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
| @@ -90,6 +90,7 @@ enum { | |||
| 90 | board_ahci_mv = 4, | 90 | board_ahci_mv = 4, |
| 91 | board_ahci_sb700 = 5, | 91 | board_ahci_sb700 = 5, |
| 92 | board_ahci_mcp65 = 6, | 92 | board_ahci_mcp65 = 6, |
| 93 | board_ahci_nopmp = 7, | ||
| 93 | 94 | ||
| 94 | /* global controller registers */ | 95 | /* global controller registers */ |
| 95 | HOST_CAP = 0x00, /* host capabilities */ | 96 | HOST_CAP = 0x00, /* host capabilities */ |
| @@ -401,6 +402,14 @@ static const struct ata_port_info ahci_port_info[] = { | |||
| 401 | .udma_mask = ATA_UDMA6, | 402 | .udma_mask = ATA_UDMA6, |
| 402 | .port_ops = &ahci_ops, | 403 | .port_ops = &ahci_ops, |
| 403 | }, | 404 | }, |
| 405 | /* board_ahci_nopmp */ | ||
| 406 | { | ||
| 407 | AHCI_HFLAGS (AHCI_HFLAG_NO_PMP), | ||
| 408 | .flags = AHCI_FLAG_COMMON, | ||
| 409 | .pio_mask = 0x1f, /* pio0-4 */ | ||
| 410 | .udma_mask = ATA_UDMA6, | ||
| 411 | .port_ops = &ahci_ops, | ||
| 412 | }, | ||
| 404 | }; | 413 | }; |
| 405 | 414 | ||
| 406 | static const struct pci_device_id ahci_pci_tbl[] = { | 415 | static const struct pci_device_id ahci_pci_tbl[] = { |
| @@ -525,9 +534,9 @@ static const struct pci_device_id ahci_pci_tbl[] = { | |||
| 525 | { PCI_VDEVICE(NVIDIA, 0x0bc7), board_ahci }, /* MCP7B */ | 534 | { PCI_VDEVICE(NVIDIA, 0x0bc7), board_ahci }, /* MCP7B */ |
| 526 | 535 | ||
| 527 | /* SiS */ | 536 | /* SiS */ |
| 528 | { PCI_VDEVICE(SI, 0x1184), board_ahci }, /* SiS 966 */ | 537 | { PCI_VDEVICE(SI, 0x1184), board_ahci_nopmp }, /* SiS 966 */ |
| 529 | { PCI_VDEVICE(SI, 0x1185), board_ahci }, /* SiS 966 */ | 538 | { PCI_VDEVICE(SI, 0x1185), board_ahci_nopmp }, /* SiS 968 */ |
| 530 | { PCI_VDEVICE(SI, 0x0186), board_ahci }, /* SiS 968 */ | 539 | { PCI_VDEVICE(SI, 0x0186), board_ahci_nopmp }, /* SiS 968 */ |
| 531 | 540 | ||
| 532 | /* Marvell */ | 541 | /* Marvell */ |
| 533 | { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */ | 542 | { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */ |
