diff options
Diffstat (limited to 'drivers/scsi/sata_nv.c')
-rw-r--r-- | drivers/scsi/sata_nv.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/drivers/scsi/sata_nv.c b/drivers/scsi/sata_nv.c index b0403ccd8a25..41a3421b02b4 100644 --- a/drivers/scsi/sata_nv.c +++ b/drivers/scsi/sata_nv.c | |||
@@ -20,6 +20,12 @@ | |||
20 | * If you do not delete the provisions above, a recipient may use your | 20 | * If you do not delete the provisions above, a recipient may use your |
21 | * version of this file under either the OSL or the GPL. | 21 | * version of this file under either the OSL or the GPL. |
22 | * | 22 | * |
23 | * 0.08 | ||
24 | * - Added support for MCP51 and MCP55. | ||
25 | * | ||
26 | * 0.07 | ||
27 | * - Added support for RAID class code. | ||
28 | * | ||
23 | * 0.06 | 29 | * 0.06 |
24 | * - Added generic SATA support by using a pci_device_id that filters on | 30 | * - Added generic SATA support by using a pci_device_id that filters on |
25 | * the IDE storage class code. | 31 | * the IDE storage class code. |
@@ -48,7 +54,7 @@ | |||
48 | #include <linux/libata.h> | 54 | #include <linux/libata.h> |
49 | 55 | ||
50 | #define DRV_NAME "sata_nv" | 56 | #define DRV_NAME "sata_nv" |
51 | #define DRV_VERSION "0.6" | 57 | #define DRV_VERSION "0.8" |
52 | 58 | ||
53 | #define NV_PORTS 2 | 59 | #define NV_PORTS 2 |
54 | #define NV_PIO_MASK 0x1f | 60 | #define NV_PIO_MASK 0x1f |
@@ -116,7 +122,9 @@ enum nv_host_type | |||
116 | GENERIC, | 122 | GENERIC, |
117 | NFORCE2, | 123 | NFORCE2, |
118 | NFORCE3, | 124 | NFORCE3, |
119 | CK804 | 125 | CK804, |
126 | MCP51, | ||
127 | MCP55 | ||
120 | }; | 128 | }; |
121 | 129 | ||
122 | static struct pci_device_id nv_pci_tbl[] = { | 130 | static struct pci_device_id nv_pci_tbl[] = { |
@@ -134,9 +142,18 @@ static struct pci_device_id nv_pci_tbl[] = { | |||
134 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, CK804 }, | 142 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, CK804 }, |
135 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2, | 143 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2, |
136 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, CK804 }, | 144 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, CK804 }, |
145 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA, | ||
146 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP51 }, | ||
147 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA2, | ||
148 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP51 }, | ||
149 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA, | ||
150 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP55 }, | ||
137 | { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, | 151 | { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, |
138 | PCI_ANY_ID, PCI_ANY_ID, | 152 | PCI_ANY_ID, PCI_ANY_ID, |
139 | PCI_CLASS_STORAGE_IDE<<8, 0xffff00, GENERIC }, | 153 | PCI_CLASS_STORAGE_IDE<<8, 0xffff00, GENERIC }, |
154 | { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, | ||
155 | PCI_ANY_ID, PCI_ANY_ID, | ||
156 | PCI_CLASS_STORAGE_RAID<<8, 0xffff00, GENERIC }, | ||
140 | { 0, } /* terminate list */ | 157 | { 0, } /* terminate list */ |
141 | }; | 158 | }; |
142 | 159 | ||
@@ -274,7 +291,8 @@ static irqreturn_t nv_interrupt (int irq, void *dev_instance, | |||
274 | struct ata_port *ap; | 291 | struct ata_port *ap; |
275 | 292 | ||
276 | ap = host_set->ports[i]; | 293 | ap = host_set->ports[i]; |
277 | if (ap && (!(ap->flags & ATA_FLAG_PORT_DISABLED))) { | 294 | if (ap && |
295 | !(ap->flags & (ATA_FLAG_PORT_DISABLED | ATA_FLAG_NOINTR))) { | ||
278 | struct ata_queued_cmd *qc; | 296 | struct ata_queued_cmd *qc; |
279 | 297 | ||
280 | qc = ata_qc_from_tag(ap, ap->active_tag); | 298 | qc = ata_qc_from_tag(ap, ap->active_tag); |