diff options
Diffstat (limited to 'drivers/ata/ahci.c')
-rw-r--r-- | drivers/ata/ahci.c | 94 |
1 files changed, 32 insertions, 62 deletions
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 1aabc81d82f1..25929123ffff 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
@@ -204,7 +204,7 @@ static u32 ahci_scr_read (struct ata_port *ap, unsigned int sc_reg); | |||
204 | static void ahci_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); | 204 | static void ahci_scr_write (struct ata_port *ap, unsigned int sc_reg, u32 val); |
205 | static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent); | 205 | static int ahci_init_one (struct pci_dev *pdev, const struct pci_device_id *ent); |
206 | static unsigned int ahci_qc_issue(struct ata_queued_cmd *qc); | 206 | static unsigned int ahci_qc_issue(struct ata_queued_cmd *qc); |
207 | static irqreturn_t ahci_interrupt (int irq, void *dev_instance, struct pt_regs *regs); | 207 | static irqreturn_t ahci_interrupt (int irq, void *dev_instance); |
208 | static void ahci_irq_clear(struct ata_port *ap); | 208 | static void ahci_irq_clear(struct ata_port *ap); |
209 | static int ahci_port_start(struct ata_port *ap); | 209 | static int ahci_port_start(struct ata_port *ap); |
210 | static void ahci_port_stop(struct ata_port *ap); | 210 | static void ahci_port_stop(struct ata_port *ap); |
@@ -299,76 +299,46 @@ static const struct ata_port_info ahci_port_info[] = { | |||
299 | 299 | ||
300 | static const struct pci_device_id ahci_pci_tbl[] = { | 300 | static const struct pci_device_id ahci_pci_tbl[] = { |
301 | /* Intel */ | 301 | /* Intel */ |
302 | { PCI_VENDOR_ID_INTEL, 0x2652, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 302 | { PCI_VDEVICE(INTEL, 0x2652), board_ahci }, /* ICH6 */ |
303 | board_ahci }, /* ICH6 */ | 303 | { PCI_VDEVICE(INTEL, 0x2653), board_ahci }, /* ICH6M */ |
304 | { PCI_VENDOR_ID_INTEL, 0x2653, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 304 | { PCI_VDEVICE(INTEL, 0x27c1), board_ahci }, /* ICH7 */ |
305 | board_ahci }, /* ICH6M */ | 305 | { PCI_VDEVICE(INTEL, 0x27c5), board_ahci }, /* ICH7M */ |
306 | { PCI_VENDOR_ID_INTEL, 0x27c1, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 306 | { PCI_VDEVICE(INTEL, 0x27c3), board_ahci }, /* ICH7R */ |
307 | board_ahci }, /* ICH7 */ | 307 | { PCI_VDEVICE(AL, 0x5288), board_ahci }, /* ULi M5288 */ |
308 | { PCI_VENDOR_ID_INTEL, 0x27c5, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 308 | { PCI_VDEVICE(INTEL, 0x2681), board_ahci }, /* ESB2 */ |
309 | board_ahci }, /* ICH7M */ | 309 | { PCI_VDEVICE(INTEL, 0x2682), board_ahci }, /* ESB2 */ |
310 | { PCI_VENDOR_ID_INTEL, 0x27c3, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 310 | { PCI_VDEVICE(INTEL, 0x2683), board_ahci }, /* ESB2 */ |
311 | board_ahci }, /* ICH7R */ | 311 | { PCI_VDEVICE(INTEL, 0x27c6), board_ahci }, /* ICH7-M DH */ |
312 | { PCI_VENDOR_ID_AL, 0x5288, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 312 | { PCI_VDEVICE(INTEL, 0x2821), board_ahci }, /* ICH8 */ |
313 | board_ahci }, /* ULi M5288 */ | 313 | { PCI_VDEVICE(INTEL, 0x2822), board_ahci }, /* ICH8 */ |
314 | { PCI_VENDOR_ID_INTEL, 0x2681, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 314 | { PCI_VDEVICE(INTEL, 0x2824), board_ahci }, /* ICH8 */ |
315 | board_ahci }, /* ESB2 */ | 315 | { PCI_VDEVICE(INTEL, 0x2829), board_ahci }, /* ICH8M */ |
316 | { PCI_VENDOR_ID_INTEL, 0x2682, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 316 | { PCI_VDEVICE(INTEL, 0x282a), board_ahci }, /* ICH8M */ |
317 | board_ahci }, /* ESB2 */ | ||
318 | { PCI_VENDOR_ID_INTEL, 0x2683, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
319 | board_ahci }, /* ESB2 */ | ||
320 | { PCI_VENDOR_ID_INTEL, 0x27c6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
321 | board_ahci }, /* ICH7-M DH */ | ||
322 | { PCI_VENDOR_ID_INTEL, 0x2821, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
323 | board_ahci }, /* ICH8 */ | ||
324 | { PCI_VENDOR_ID_INTEL, 0x2822, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
325 | board_ahci }, /* ICH8 */ | ||
326 | { PCI_VENDOR_ID_INTEL, 0x2824, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
327 | board_ahci }, /* ICH8 */ | ||
328 | { PCI_VENDOR_ID_INTEL, 0x2829, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
329 | board_ahci }, /* ICH8M */ | ||
330 | { PCI_VENDOR_ID_INTEL, 0x282a, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
331 | board_ahci }, /* ICH8M */ | ||
332 | 317 | ||
333 | /* JMicron */ | 318 | /* JMicron */ |
334 | { 0x197b, 0x2360, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 319 | { PCI_VDEVICE(JMICRON, 0x2360), board_ahci }, /* JMicron JMB360 */ |
335 | board_ahci }, /* JMicron JMB360 */ | 320 | { PCI_VDEVICE(JMICRON, 0x2361), board_ahci }, /* JMicron JMB361 */ |
336 | { 0x197b, 0x2361, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 321 | { PCI_VDEVICE(JMICRON, 0x2363), board_ahci }, /* JMicron JMB363 */ |
337 | board_ahci }, /* JMicron JMB361 */ | 322 | { PCI_VDEVICE(JMICRON, 0x2365), board_ahci }, /* JMicron JMB365 */ |
338 | { 0x197b, 0x2363, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 323 | { PCI_VDEVICE(JMICRON, 0x2366), board_ahci }, /* JMicron JMB366 */ |
339 | board_ahci }, /* JMicron JMB363 */ | ||
340 | { 0x197b, 0x2365, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
341 | board_ahci }, /* JMicron JMB365 */ | ||
342 | { 0x197b, 0x2366, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
343 | board_ahci }, /* JMicron JMB366 */ | ||
344 | 324 | ||
345 | /* ATI */ | 325 | /* ATI */ |
346 | { PCI_VENDOR_ID_ATI, 0x4380, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 326 | { PCI_VDEVICE(ATI, 0x4380), board_ahci }, /* ATI SB600 non-raid */ |
347 | board_ahci }, /* ATI SB600 non-raid */ | 327 | { PCI_VDEVICE(ATI, 0x4381), board_ahci }, /* ATI SB600 raid */ |
348 | { PCI_VENDOR_ID_ATI, 0x4381, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
349 | board_ahci }, /* ATI SB600 raid */ | ||
350 | 328 | ||
351 | /* VIA */ | 329 | /* VIA */ |
352 | { PCI_VENDOR_ID_VIA, 0x3349, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 330 | { PCI_VDEVICE(VIA, 0x3349), board_ahci_vt8251 }, /* VIA VT8251 */ |
353 | board_ahci_vt8251 }, /* VIA VT8251 */ | ||
354 | 331 | ||
355 | /* NVIDIA */ | 332 | /* NVIDIA */ |
356 | { PCI_VENDOR_ID_NVIDIA, 0x044c, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 333 | { PCI_VDEVICE(NVIDIA, 0x044c), board_ahci }, /* MCP65 */ |
357 | board_ahci }, /* MCP65 */ | 334 | { PCI_VDEVICE(NVIDIA, 0x044d), board_ahci }, /* MCP65 */ |
358 | { PCI_VENDOR_ID_NVIDIA, 0x044d, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 335 | { PCI_VDEVICE(NVIDIA, 0x044e), board_ahci }, /* MCP65 */ |
359 | board_ahci }, /* MCP65 */ | 336 | { PCI_VDEVICE(NVIDIA, 0x044f), board_ahci }, /* MCP65 */ |
360 | { PCI_VENDOR_ID_NVIDIA, 0x044e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
361 | board_ahci }, /* MCP65 */ | ||
362 | { PCI_VENDOR_ID_NVIDIA, 0x044f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
363 | board_ahci }, /* MCP65 */ | ||
364 | 337 | ||
365 | /* SiS */ | 338 | /* SiS */ |
366 | { PCI_VENDOR_ID_SI, 0x1184, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 339 | { PCI_VDEVICE(SI, 0x1184), board_ahci }, /* SiS 966 */ |
367 | board_ahci }, /* SiS 966 */ | 340 | { PCI_VDEVICE(SI, 0x1185), board_ahci }, /* SiS 966 */ |
368 | { PCI_VENDOR_ID_SI, 0x1185, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | 341 | { PCI_VDEVICE(SI, 0x0186), board_ahci }, /* SiS 968 */ |
369 | board_ahci }, /* SiS 966 */ | ||
370 | { PCI_VENDOR_ID_SI, 0x0186, PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
371 | board_ahci }, /* SiS 968 */ | ||
372 | 342 | ||
373 | { } /* terminate list */ | 343 | { } /* terminate list */ |
374 | }; | 344 | }; |
@@ -1089,7 +1059,7 @@ static void ahci_irq_clear(struct ata_port *ap) | |||
1089 | /* TODO */ | 1059 | /* TODO */ |
1090 | } | 1060 | } |
1091 | 1061 | ||
1092 | static irqreturn_t ahci_interrupt(int irq, void *dev_instance, struct pt_regs *regs) | 1062 | static irqreturn_t ahci_interrupt(int irq, void *dev_instance) |
1093 | { | 1063 | { |
1094 | struct ata_host *host = dev_instance; | 1064 | struct ata_host *host = dev_instance; |
1095 | struct ahci_host_priv *hpriv; | 1065 | struct ahci_host_priv *hpriv; |