diff options
author | David Woodhouse <dwmw2@infradead.org> | 2006-12-01 04:56:43 -0500 |
---|---|---|
committer | David Woodhouse <dwmw2@infradead.org> | 2006-12-01 04:56:43 -0500 |
commit | bd3c97a7c718bfb9f1e4f31c16c383a5c6f815eb (patch) | |
tree | 3f56594e813c6f35cbacbdb3e137ba5bfd0b3069 /drivers/ata/ahci.c | |
parent | 6c33cafc794d07c9254c160789120a0e98c088c9 (diff) | |
parent | 0215ffb08ce99e2bb59eca114a99499a4d06e704 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
Diffstat (limited to 'drivers/ata/ahci.c')
-rw-r--r-- | drivers/ata/ahci.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 25929123ffff..f510e1196dc6 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
@@ -314,6 +314,17 @@ static const struct pci_device_id ahci_pci_tbl[] = { | |||
314 | { PCI_VDEVICE(INTEL, 0x2824), board_ahci }, /* ICH8 */ | 314 | { PCI_VDEVICE(INTEL, 0x2824), board_ahci }, /* ICH8 */ |
315 | { PCI_VDEVICE(INTEL, 0x2829), board_ahci }, /* ICH8M */ | 315 | { PCI_VDEVICE(INTEL, 0x2829), board_ahci }, /* ICH8M */ |
316 | { PCI_VDEVICE(INTEL, 0x282a), board_ahci }, /* ICH8M */ | 316 | { PCI_VDEVICE(INTEL, 0x282a), board_ahci }, /* ICH8M */ |
317 | { PCI_VDEVICE(INTEL, 0x2922), board_ahci }, /* ICH9 */ | ||
318 | { PCI_VDEVICE(INTEL, 0x2923), board_ahci }, /* ICH9 */ | ||
319 | { PCI_VDEVICE(INTEL, 0x2924), board_ahci }, /* ICH9 */ | ||
320 | { PCI_VDEVICE(INTEL, 0x2925), board_ahci }, /* ICH9 */ | ||
321 | { PCI_VDEVICE(INTEL, 0x2927), board_ahci }, /* ICH9 */ | ||
322 | { PCI_VDEVICE(INTEL, 0x2929), board_ahci }, /* ICH9M */ | ||
323 | { PCI_VDEVICE(INTEL, 0x292a), board_ahci }, /* ICH9M */ | ||
324 | { PCI_VDEVICE(INTEL, 0x292b), board_ahci }, /* ICH9M */ | ||
325 | { PCI_VDEVICE(INTEL, 0x292f), board_ahci }, /* ICH9M */ | ||
326 | { PCI_VDEVICE(INTEL, 0x294d), board_ahci }, /* ICH9 */ | ||
327 | { PCI_VDEVICE(INTEL, 0x294e), board_ahci }, /* ICH9M */ | ||
317 | 328 | ||
318 | /* JMicron */ | 329 | /* JMicron */ |
319 | { PCI_VDEVICE(JMICRON, 0x2360), board_ahci }, /* JMicron JMB360 */ | 330 | { PCI_VDEVICE(JMICRON, 0x2360), board_ahci }, /* JMicron JMB360 */ |
@@ -334,6 +345,14 @@ static const struct pci_device_id ahci_pci_tbl[] = { | |||
334 | { PCI_VDEVICE(NVIDIA, 0x044d), board_ahci }, /* MCP65 */ | 345 | { PCI_VDEVICE(NVIDIA, 0x044d), board_ahci }, /* MCP65 */ |
335 | { PCI_VDEVICE(NVIDIA, 0x044e), board_ahci }, /* MCP65 */ | 346 | { PCI_VDEVICE(NVIDIA, 0x044e), board_ahci }, /* MCP65 */ |
336 | { PCI_VDEVICE(NVIDIA, 0x044f), board_ahci }, /* MCP65 */ | 347 | { PCI_VDEVICE(NVIDIA, 0x044f), board_ahci }, /* MCP65 */ |
348 | { PCI_VDEVICE(NVIDIA, 0x0554), board_ahci }, /* MCP67 */ | ||
349 | { PCI_VDEVICE(NVIDIA, 0x0555), board_ahci }, /* MCP67 */ | ||
350 | { PCI_VDEVICE(NVIDIA, 0x0556), board_ahci }, /* MCP67 */ | ||
351 | { PCI_VDEVICE(NVIDIA, 0x0557), board_ahci }, /* MCP67 */ | ||
352 | { PCI_VDEVICE(NVIDIA, 0x0558), board_ahci }, /* MCP67 */ | ||
353 | { PCI_VDEVICE(NVIDIA, 0x0559), board_ahci }, /* MCP67 */ | ||
354 | { PCI_VDEVICE(NVIDIA, 0x055a), board_ahci }, /* MCP67 */ | ||
355 | { PCI_VDEVICE(NVIDIA, 0x055b), board_ahci }, /* MCP67 */ | ||
337 | 356 | ||
338 | /* SiS */ | 357 | /* SiS */ |
339 | { PCI_VDEVICE(SI, 0x1184), board_ahci }, /* SiS 966 */ | 358 | { PCI_VDEVICE(SI, 0x1184), board_ahci }, /* SiS 966 */ |
@@ -736,8 +755,7 @@ static int ahci_softreset(struct ata_port *ap, unsigned int *class) | |||
736 | } | 755 | } |
737 | 756 | ||
738 | /* check BUSY/DRQ, perform Command List Override if necessary */ | 757 | /* check BUSY/DRQ, perform Command List Override if necessary */ |
739 | ahci_tf_read(ap, &tf); | 758 | if (ahci_check_status(ap) & (ATA_BUSY | ATA_DRQ)) { |
740 | if (tf.command & (ATA_BUSY | ATA_DRQ)) { | ||
741 | rc = ahci_clo(ap); | 759 | rc = ahci_clo(ap); |
742 | 760 | ||
743 | if (rc == -EOPNOTSUPP) { | 761 | if (rc == -EOPNOTSUPP) { |
@@ -1041,7 +1059,7 @@ static void ahci_host_intr(struct ata_port *ap) | |||
1041 | /* hmmm... a spurious interupt */ | 1059 | /* hmmm... a spurious interupt */ |
1042 | 1060 | ||
1043 | /* some devices send D2H reg with I bit set during NCQ command phase */ | 1061 | /* some devices send D2H reg with I bit set during NCQ command phase */ |
1044 | if (ap->sactive && status & PORT_IRQ_D2H_REG_FIS) | 1062 | if (ap->sactive && (status & PORT_IRQ_D2H_REG_FIS)) |
1045 | return; | 1063 | return; |
1046 | 1064 | ||
1047 | /* ignore interim PIO setup fis interrupts */ | 1065 | /* ignore interim PIO setup fis interrupts */ |