aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sata_nv.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/sata_nv.c')
-rw-r--r--drivers/scsi/sata_nv.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/drivers/scsi/sata_nv.c b/drivers/scsi/sata_nv.c
index a61c1509aeb..03d9bc6e69d 100644
--- a/drivers/scsi/sata_nv.c
+++ b/drivers/scsi/sata_nv.c
@@ -30,6 +30,12 @@
30 * hotplug info, etc. 30 * hotplug info, etc.
31 * 31 *
32 * 32 *
33 * 0.08
34 * - Added support for MCP51 and MCP55.
35 *
36 * 0.07
37 * - Added support for RAID class code.
38 *
33 * 0.06 39 * 0.06
34 * - Added generic SATA support by using a pci_device_id that filters on 40 * - Added generic SATA support by using a pci_device_id that filters on
35 * the IDE storage class code. 41 * the IDE storage class code.
@@ -58,7 +64,7 @@
58#include <linux/libata.h> 64#include <linux/libata.h>
59 65
60#define DRV_NAME "sata_nv" 66#define DRV_NAME "sata_nv"
61#define DRV_VERSION "0.6" 67#define DRV_VERSION "0.8"
62 68
63#define NV_PORTS 2 69#define NV_PORTS 2
64#define NV_PIO_MASK 0x1f 70#define NV_PIO_MASK 0x1f
@@ -126,7 +132,9 @@ enum nv_host_type
126 GENERIC, 132 GENERIC,
127 NFORCE2, 133 NFORCE2,
128 NFORCE3, 134 NFORCE3,
129 CK804 135 CK804,
136 MCP51,
137 MCP55
130}; 138};
131 139
132static struct pci_device_id nv_pci_tbl[] = { 140static struct pci_device_id nv_pci_tbl[] = {
@@ -144,9 +152,18 @@ static struct pci_device_id nv_pci_tbl[] = {
144 PCI_ANY_ID, PCI_ANY_ID, 0, 0, CK804 }, 152 PCI_ANY_ID, PCI_ANY_ID, 0, 0, CK804 },
145 { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2, 153 { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2,
146 PCI_ANY_ID, PCI_ANY_ID, 0, 0, CK804 }, 154 PCI_ANY_ID, PCI_ANY_ID, 0, 0, CK804 },
155 { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA,
156 PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP51 },
157 { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA2,
158 PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP51 },
159 { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA,
160 PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP55 },
147 { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, 161 { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID,
148 PCI_ANY_ID, PCI_ANY_ID, 162 PCI_ANY_ID, PCI_ANY_ID,
149 PCI_CLASS_STORAGE_IDE<<8, 0xffff00, GENERIC }, 163 PCI_CLASS_STORAGE_IDE<<8, 0xffff00, GENERIC },
164 { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID,
165 PCI_ANY_ID, PCI_ANY_ID,
166 PCI_CLASS_STORAGE_RAID<<8, 0xffff00, GENERIC },
150 { 0, } /* terminate list */ 167 { 0, } /* terminate list */
151}; 168};
152 169
@@ -284,7 +301,8 @@ static irqreturn_t nv_interrupt (int irq, void *dev_instance,
284 struct ata_port *ap; 301 struct ata_port *ap;
285 302
286 ap = host_set->ports[i]; 303 ap = host_set->ports[i];
287 if (ap && (!(ap->flags & ATA_FLAG_PORT_DISABLED))) { 304 if (ap &&
305 !(ap->flags & (ATA_FLAG_PORT_DISABLED | ATA_FLAG_NOINTR))) {
288 struct ata_queued_cmd *qc; 306 struct ata_queued_cmd *qc;
289 307
290 qc = ata_qc_from_tag(ap, ap->active_tag); 308 qc = ata_qc_from_tag(ap, ap->active_tag);