diff options
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/3w-9xxx.c | 8 | ||||
-rw-r--r-- | drivers/scsi/3w-xxxx.c | 8 | ||||
-rw-r--r-- | drivers/scsi/ahci.c | 22 | ||||
-rw-r--r-- | drivers/scsi/ipr.c | 10 | ||||
-rw-r--r-- | drivers/scsi/libata-core.c | 6 | ||||
-rw-r--r-- | drivers/scsi/libata-scsi.c | 16 | ||||
-rw-r--r-- | drivers/scsi/megaraid.c | 8 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/aha152x_stub.c | 11 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/fdomain_stub.c | 10 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/nsp_cs.c | 13 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/qlogic_stub.c | 22 | ||||
-rw-r--r-- | drivers/scsi/pcmcia/sym53c500_cs.c | 9 | ||||
-rw-r--r-- | drivers/scsi/scsi_lib.c | 2 |
13 files changed, 98 insertions, 47 deletions
diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c index 34dbc37a79d4..bc6e4627c7a1 100644 --- a/drivers/scsi/3w-9xxx.c +++ b/drivers/scsi/3w-9xxx.c | |||
@@ -1916,9 +1916,9 @@ static void __twa_shutdown(TW_Device_Extension *tw_dev) | |||
1916 | } /* End __twa_shutdown() */ | 1916 | } /* End __twa_shutdown() */ |
1917 | 1917 | ||
1918 | /* Wrapper for __twa_shutdown */ | 1918 | /* Wrapper for __twa_shutdown */ |
1919 | static void twa_shutdown(struct device *dev) | 1919 | static void twa_shutdown(struct pci_dev *pdev) |
1920 | { | 1920 | { |
1921 | struct Scsi_Host *host = pci_get_drvdata(to_pci_dev(dev)); | 1921 | struct Scsi_Host *host = pci_get_drvdata(pdev); |
1922 | TW_Device_Extension *tw_dev = (TW_Device_Extension *)host->hostdata; | 1922 | TW_Device_Extension *tw_dev = (TW_Device_Extension *)host->hostdata; |
1923 | 1923 | ||
1924 | __twa_shutdown(tw_dev); | 1924 | __twa_shutdown(tw_dev); |
@@ -2140,9 +2140,7 @@ static struct pci_driver twa_driver = { | |||
2140 | .id_table = twa_pci_tbl, | 2140 | .id_table = twa_pci_tbl, |
2141 | .probe = twa_probe, | 2141 | .probe = twa_probe, |
2142 | .remove = twa_remove, | 2142 | .remove = twa_remove, |
2143 | .driver = { | 2143 | .shutdown = twa_shutdown |
2144 | .shutdown = twa_shutdown | ||
2145 | } | ||
2146 | }; | 2144 | }; |
2147 | 2145 | ||
2148 | /* This function is called on driver initialization */ | 2146 | /* This function is called on driver initialization */ |
diff --git a/drivers/scsi/3w-xxxx.c b/drivers/scsi/3w-xxxx.c index b6dc576da430..973c51fb0fe2 100644 --- a/drivers/scsi/3w-xxxx.c +++ b/drivers/scsi/3w-xxxx.c | |||
@@ -2264,9 +2264,9 @@ static void __tw_shutdown(TW_Device_Extension *tw_dev) | |||
2264 | } /* End __tw_shutdown() */ | 2264 | } /* End __tw_shutdown() */ |
2265 | 2265 | ||
2266 | /* Wrapper for __tw_shutdown */ | 2266 | /* Wrapper for __tw_shutdown */ |
2267 | static void tw_shutdown(struct device *dev) | 2267 | static void tw_shutdown(struct pci_dev *pdev) |
2268 | { | 2268 | { |
2269 | struct Scsi_Host *host = pci_get_drvdata(to_pci_dev(dev)); | 2269 | struct Scsi_Host *host = pci_get_drvdata(pdev); |
2270 | TW_Device_Extension *tw_dev = (TW_Device_Extension *)host->hostdata; | 2270 | TW_Device_Extension *tw_dev = (TW_Device_Extension *)host->hostdata; |
2271 | 2271 | ||
2272 | __tw_shutdown(tw_dev); | 2272 | __tw_shutdown(tw_dev); |
@@ -2451,9 +2451,7 @@ static struct pci_driver tw_driver = { | |||
2451 | .id_table = tw_pci_tbl, | 2451 | .id_table = tw_pci_tbl, |
2452 | .probe = tw_probe, | 2452 | .probe = tw_probe, |
2453 | .remove = tw_remove, | 2453 | .remove = tw_remove, |
2454 | .driver = { | 2454 | .shutdown = tw_shutdown, |
2455 | .shutdown = tw_shutdown | ||
2456 | } | ||
2457 | }; | 2455 | }; |
2458 | 2456 | ||
2459 | /* This function is called on driver initialization */ | 2457 | /* This function is called on driver initialization */ |
diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c index 9a547ca9c864..c5623694d10f 100644 --- a/drivers/scsi/ahci.c +++ b/drivers/scsi/ahci.c | |||
@@ -304,26 +304,19 @@ static int ahci_port_start(struct ata_port *ap) | |||
304 | struct device *dev = ap->host_set->dev; | 304 | struct device *dev = ap->host_set->dev; |
305 | struct ahci_host_priv *hpriv = ap->host_set->private_data; | 305 | struct ahci_host_priv *hpriv = ap->host_set->private_data; |
306 | struct ahci_port_priv *pp; | 306 | struct ahci_port_priv *pp; |
307 | int rc; | ||
308 | void *mem, *mmio = ap->host_set->mmio_base; | 307 | void *mem, *mmio = ap->host_set->mmio_base; |
309 | void *port_mmio = ahci_port_base(mmio, ap->port_no); | 308 | void *port_mmio = ahci_port_base(mmio, ap->port_no); |
310 | dma_addr_t mem_dma; | 309 | dma_addr_t mem_dma; |
311 | 310 | ||
312 | rc = ata_port_start(ap); | ||
313 | if (rc) | ||
314 | return rc; | ||
315 | |||
316 | pp = kmalloc(sizeof(*pp), GFP_KERNEL); | 311 | pp = kmalloc(sizeof(*pp), GFP_KERNEL); |
317 | if (!pp) { | 312 | if (!pp) |
318 | rc = -ENOMEM; | 313 | return -ENOMEM; |
319 | goto err_out; | ||
320 | } | ||
321 | memset(pp, 0, sizeof(*pp)); | 314 | memset(pp, 0, sizeof(*pp)); |
322 | 315 | ||
323 | mem = dma_alloc_coherent(dev, AHCI_PORT_PRIV_DMA_SZ, &mem_dma, GFP_KERNEL); | 316 | mem = dma_alloc_coherent(dev, AHCI_PORT_PRIV_DMA_SZ, &mem_dma, GFP_KERNEL); |
324 | if (!mem) { | 317 | if (!mem) { |
325 | rc = -ENOMEM; | 318 | kfree(pp); |
326 | goto err_out_kfree; | 319 | return -ENOMEM; |
327 | } | 320 | } |
328 | memset(mem, 0, AHCI_PORT_PRIV_DMA_SZ); | 321 | memset(mem, 0, AHCI_PORT_PRIV_DMA_SZ); |
329 | 322 | ||
@@ -373,12 +366,6 @@ static int ahci_port_start(struct ata_port *ap) | |||
373 | readl(port_mmio + PORT_CMD); /* flush */ | 366 | readl(port_mmio + PORT_CMD); /* flush */ |
374 | 367 | ||
375 | return 0; | 368 | return 0; |
376 | |||
377 | err_out_kfree: | ||
378 | kfree(pp); | ||
379 | err_out: | ||
380 | ata_port_stop(ap); | ||
381 | return rc; | ||
382 | } | 369 | } |
383 | 370 | ||
384 | 371 | ||
@@ -404,7 +391,6 @@ static void ahci_port_stop(struct ata_port *ap) | |||
404 | dma_free_coherent(dev, AHCI_PORT_PRIV_DMA_SZ, | 391 | dma_free_coherent(dev, AHCI_PORT_PRIV_DMA_SZ, |
405 | pp->cmd_slot, pp->cmd_slot_dma); | 392 | pp->cmd_slot, pp->cmd_slot_dma); |
406 | kfree(pp); | 393 | kfree(pp); |
407 | ata_port_stop(ap); | ||
408 | } | 394 | } |
409 | 395 | ||
410 | static u32 ahci_scr_read (struct ata_port *ap, unsigned int sc_reg_in) | 396 | static u32 ahci_scr_read (struct ata_port *ap, unsigned int sc_reg_in) |
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c index 80d022625c82..babd48363402 100644 --- a/drivers/scsi/ipr.c +++ b/drivers/scsi/ipr.c | |||
@@ -6012,7 +6012,7 @@ static int __devinit ipr_probe(struct pci_dev *pdev, | |||
6012 | 6012 | ||
6013 | /** | 6013 | /** |
6014 | * ipr_shutdown - Shutdown handler. | 6014 | * ipr_shutdown - Shutdown handler. |
6015 | * @dev: device struct | 6015 | * @pdev: pci device struct |
6016 | * | 6016 | * |
6017 | * This function is invoked upon system shutdown/reboot. It will issue | 6017 | * This function is invoked upon system shutdown/reboot. It will issue |
6018 | * an adapter shutdown to the adapter to flush the write cache. | 6018 | * an adapter shutdown to the adapter to flush the write cache. |
@@ -6020,9 +6020,9 @@ static int __devinit ipr_probe(struct pci_dev *pdev, | |||
6020 | * Return value: | 6020 | * Return value: |
6021 | * none | 6021 | * none |
6022 | **/ | 6022 | **/ |
6023 | static void ipr_shutdown(struct device *dev) | 6023 | static void ipr_shutdown(struct pci_dev *pdev) |
6024 | { | 6024 | { |
6025 | struct ipr_ioa_cfg *ioa_cfg = pci_get_drvdata(to_pci_dev(dev)); | 6025 | struct ipr_ioa_cfg *ioa_cfg = pci_get_drvdata(pdev); |
6026 | unsigned long lock_flags = 0; | 6026 | unsigned long lock_flags = 0; |
6027 | 6027 | ||
6028 | spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); | 6028 | spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags); |
@@ -6068,9 +6068,7 @@ static struct pci_driver ipr_driver = { | |||
6068 | .id_table = ipr_pci_table, | 6068 | .id_table = ipr_pci_table, |
6069 | .probe = ipr_probe, | 6069 | .probe = ipr_probe, |
6070 | .remove = ipr_remove, | 6070 | .remove = ipr_remove, |
6071 | .driver = { | 6071 | .shutdown = ipr_shutdown, |
6072 | .shutdown = ipr_shutdown, | ||
6073 | }, | ||
6074 | }; | 6072 | }; |
6075 | 6073 | ||
6076 | /** | 6074 | /** |
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index 36b401fee1f1..cb535fa185b9 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
@@ -1408,7 +1408,9 @@ void __sata_phy_reset(struct ata_port *ap) | |||
1408 | if (ap->flags & ATA_FLAG_SATA_RESET) { | 1408 | if (ap->flags & ATA_FLAG_SATA_RESET) { |
1409 | /* issue phy wake/reset */ | 1409 | /* issue phy wake/reset */ |
1410 | scr_write_flush(ap, SCR_CONTROL, 0x301); | 1410 | scr_write_flush(ap, SCR_CONTROL, 0x301); |
1411 | udelay(400); /* FIXME: a guess */ | 1411 | /* Couldn't find anything in SATA I/II specs, but |
1412 | * AHCI-1.1 10.4.2 says at least 1 ms. */ | ||
1413 | mdelay(1); | ||
1412 | } | 1414 | } |
1413 | scr_write_flush(ap, SCR_CONTROL, 0x300); /* phy wake/clear reset */ | 1415 | scr_write_flush(ap, SCR_CONTROL, 0x300); /* phy wake/clear reset */ |
1414 | 1416 | ||
@@ -1920,6 +1922,7 @@ static const char * ata_dma_blacklist [] = { | |||
1920 | "HITACHI CDR-8335", | 1922 | "HITACHI CDR-8335", |
1921 | "HITACHI CDR-8435", | 1923 | "HITACHI CDR-8435", |
1922 | "Toshiba CD-ROM XM-6202B", | 1924 | "Toshiba CD-ROM XM-6202B", |
1925 | "TOSHIBA CD-ROM XM-1702BC", | ||
1923 | "CD-532E-A", | 1926 | "CD-532E-A", |
1924 | "E-IDE CD-ROM CR-840", | 1927 | "E-IDE CD-ROM CR-840", |
1925 | "CD-ROM Drive/F5A", | 1928 | "CD-ROM Drive/F5A", |
@@ -1927,7 +1930,6 @@ static const char * ata_dma_blacklist [] = { | |||
1927 | "SAMSUNG CD-ROM SC-148C", | 1930 | "SAMSUNG CD-ROM SC-148C", |
1928 | "SAMSUNG CD-ROM SC", | 1931 | "SAMSUNG CD-ROM SC", |
1929 | "SanDisk SDP3B-64", | 1932 | "SanDisk SDP3B-64", |
1930 | "SAMSUNG CD-ROM SN-124", | ||
1931 | "ATAPI CD-ROM DRIVE 40X MAXIMUM", | 1933 | "ATAPI CD-ROM DRIVE 40X MAXIMUM", |
1932 | "_NEC DV5800A", | 1934 | "_NEC DV5800A", |
1933 | }; | 1935 | }; |
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c index 7a4adc4c8f09..794fb559efb0 100644 --- a/drivers/scsi/libata-scsi.c +++ b/drivers/scsi/libata-scsi.c | |||
@@ -1176,8 +1176,12 @@ unsigned int ata_scsiop_read_cap(struct ata_scsi_args *args, u8 *rbuf, | |||
1176 | n_sectors = ata_id_u32(args->id, 60); | 1176 | n_sectors = ata_id_u32(args->id, 60); |
1177 | n_sectors--; /* ATA TotalUserSectors - 1 */ | 1177 | n_sectors--; /* ATA TotalUserSectors - 1 */ |
1178 | 1178 | ||
1179 | tmp = n_sectors; /* note: truncates, if lba48 */ | ||
1180 | if (args->cmd->cmnd[0] == READ_CAPACITY) { | 1179 | if (args->cmd->cmnd[0] == READ_CAPACITY) { |
1180 | if( n_sectors >= 0xffffffffULL ) | ||
1181 | tmp = 0xffffffff ; /* Return max count on overflow */ | ||
1182 | else | ||
1183 | tmp = n_sectors ; | ||
1184 | |||
1181 | /* sector count, 32-bit */ | 1185 | /* sector count, 32-bit */ |
1182 | rbuf[0] = tmp >> (8 * 3); | 1186 | rbuf[0] = tmp >> (8 * 3); |
1183 | rbuf[1] = tmp >> (8 * 2); | 1187 | rbuf[1] = tmp >> (8 * 2); |
@@ -1191,10 +1195,12 @@ unsigned int ata_scsiop_read_cap(struct ata_scsi_args *args, u8 *rbuf, | |||
1191 | 1195 | ||
1192 | } else { | 1196 | } else { |
1193 | /* sector count, 64-bit */ | 1197 | /* sector count, 64-bit */ |
1194 | rbuf[2] = n_sectors >> (8 * 7); | 1198 | tmp = n_sectors >> (8 * 4); |
1195 | rbuf[3] = n_sectors >> (8 * 6); | 1199 | rbuf[2] = tmp >> (8 * 3); |
1196 | rbuf[4] = n_sectors >> (8 * 5); | 1200 | rbuf[3] = tmp >> (8 * 2); |
1197 | rbuf[5] = n_sectors >> (8 * 4); | 1201 | rbuf[4] = tmp >> (8 * 1); |
1202 | rbuf[5] = tmp; | ||
1203 | tmp = n_sectors; | ||
1198 | rbuf[6] = tmp >> (8 * 3); | 1204 | rbuf[6] = tmp >> (8 * 3); |
1199 | rbuf[7] = tmp >> (8 * 2); | 1205 | rbuf[7] = tmp >> (8 * 2); |
1200 | rbuf[8] = tmp >> (8 * 1); | 1206 | rbuf[8] = tmp >> (8 * 1); |
diff --git a/drivers/scsi/megaraid.c b/drivers/scsi/megaraid.c index ec81532eb845..a70cdf31311c 100644 --- a/drivers/scsi/megaraid.c +++ b/drivers/scsi/megaraid.c | |||
@@ -5036,9 +5036,9 @@ megaraid_remove_one(struct pci_dev *pdev) | |||
5036 | } | 5036 | } |
5037 | 5037 | ||
5038 | static void | 5038 | static void |
5039 | megaraid_shutdown(struct device *dev) | 5039 | megaraid_shutdown(struct pci_dev *pdev) |
5040 | { | 5040 | { |
5041 | struct Scsi_Host *host = pci_get_drvdata(to_pci_dev(dev)); | 5041 | struct Scsi_Host *host = pci_get_drvdata(pdev); |
5042 | adapter_t *adapter = (adapter_t *)host->hostdata; | 5042 | adapter_t *adapter = (adapter_t *)host->hostdata; |
5043 | 5043 | ||
5044 | __megaraid_shutdown(adapter); | 5044 | __megaraid_shutdown(adapter); |
@@ -5070,9 +5070,7 @@ static struct pci_driver megaraid_pci_driver = { | |||
5070 | .id_table = megaraid_pci_tbl, | 5070 | .id_table = megaraid_pci_tbl, |
5071 | .probe = megaraid_probe_one, | 5071 | .probe = megaraid_probe_one, |
5072 | .remove = __devexit_p(megaraid_remove_one), | 5072 | .remove = __devexit_p(megaraid_remove_one), |
5073 | .driver = { | 5073 | .shutdown = megaraid_shutdown, |
5074 | .shutdown = megaraid_shutdown, | ||
5075 | }, | ||
5076 | }; | 5074 | }; |
5077 | 5075 | ||
5078 | static int __init megaraid_init(void) | 5076 | static int __init megaraid_init(void) |
diff --git a/drivers/scsi/pcmcia/aha152x_stub.c b/drivers/scsi/pcmcia/aha152x_stub.c index e60b4c0a8427..f1f6bf596dc9 100644 --- a/drivers/scsi/pcmcia/aha152x_stub.c +++ b/drivers/scsi/pcmcia/aha152x_stub.c | |||
@@ -318,6 +318,16 @@ static int aha152x_event(event_t event, int priority, | |||
318 | return 0; | 318 | return 0; |
319 | } | 319 | } |
320 | 320 | ||
321 | static struct pcmcia_device_id aha152x_ids[] = { | ||
322 | PCMCIA_DEVICE_PROD_ID123("New Media", "SCSI", "Bus Toaster", 0xcdf7e4cc, 0x35f26476, 0xa8851d6e), | ||
323 | PCMCIA_DEVICE_PROD_ID123("NOTEWORTHY", "SCSI", "Bus Toaster", 0xad89c6e8, 0x35f26476, 0xa8851d6e), | ||
324 | PCMCIA_DEVICE_PROD_ID12("Adaptec, Inc.", "APA-1460 SCSI Host Adapter", 0x24ba9738, 0x3a3c3d20), | ||
325 | PCMCIA_DEVICE_PROD_ID12("New Media Corporation", "Multimedia Sound/SCSI", 0x085a850b, 0x80a6535c), | ||
326 | PCMCIA_DEVICE_PROD_ID12("NOTEWORTHY", "NWCOMB02 SCSI/AUDIO COMBO CARD", 0xad89c6e8, 0x5f9a615b), | ||
327 | PCMCIA_DEVICE_NULL, | ||
328 | }; | ||
329 | MODULE_DEVICE_TABLE(pcmcia, aha152x_ids); | ||
330 | |||
321 | static struct pcmcia_driver aha152x_cs_driver = { | 331 | static struct pcmcia_driver aha152x_cs_driver = { |
322 | .owner = THIS_MODULE, | 332 | .owner = THIS_MODULE, |
323 | .drv = { | 333 | .drv = { |
@@ -325,6 +335,7 @@ static struct pcmcia_driver aha152x_cs_driver = { | |||
325 | }, | 335 | }, |
326 | .attach = aha152x_attach, | 336 | .attach = aha152x_attach, |
327 | .detach = aha152x_detach, | 337 | .detach = aha152x_detach, |
338 | .id_table = aha152x_ids, | ||
328 | }; | 339 | }; |
329 | 340 | ||
330 | static int __init init_aha152x_cs(void) | 341 | static int __init init_aha152x_cs(void) |
diff --git a/drivers/scsi/pcmcia/fdomain_stub.c b/drivers/scsi/pcmcia/fdomain_stub.c index 3df7bc72e354..853e6ee9b71a 100644 --- a/drivers/scsi/pcmcia/fdomain_stub.c +++ b/drivers/scsi/pcmcia/fdomain_stub.c | |||
@@ -299,6 +299,15 @@ static int fdomain_event(event_t event, int priority, | |||
299 | return 0; | 299 | return 0; |
300 | } /* fdomain_event */ | 300 | } /* fdomain_event */ |
301 | 301 | ||
302 | |||
303 | static struct pcmcia_device_id fdomain_ids[] = { | ||
304 | PCMCIA_DEVICE_PROD_ID12("IBM Corp.", "SCSI PCMCIA Card", 0xe3736c88, 0x859cad20), | ||
305 | PCMCIA_DEVICE_PROD_ID1("SCSI PCMCIA Adapter Card", 0x8dacb57e), | ||
306 | PCMCIA_DEVICE_PROD_ID12(" SIMPLE TECHNOLOGY Corporation", "SCSI PCMCIA Credit Card Controller", 0x182bdafe, 0xc80d106f), | ||
307 | PCMCIA_DEVICE_NULL, | ||
308 | }; | ||
309 | MODULE_DEVICE_TABLE(pcmcia, fdomain_ids); | ||
310 | |||
302 | static struct pcmcia_driver fdomain_cs_driver = { | 311 | static struct pcmcia_driver fdomain_cs_driver = { |
303 | .owner = THIS_MODULE, | 312 | .owner = THIS_MODULE, |
304 | .drv = { | 313 | .drv = { |
@@ -306,6 +315,7 @@ static struct pcmcia_driver fdomain_cs_driver = { | |||
306 | }, | 315 | }, |
307 | .attach = fdomain_attach, | 316 | .attach = fdomain_attach, |
308 | .detach = fdomain_detach, | 317 | .detach = fdomain_detach, |
318 | .id_table = fdomain_ids, | ||
309 | }; | 319 | }; |
310 | 320 | ||
311 | static int __init init_fdomain_cs(void) | 321 | static int __init init_fdomain_cs(void) |
diff --git a/drivers/scsi/pcmcia/nsp_cs.c b/drivers/scsi/pcmcia/nsp_cs.c index 3dddb323e718..91b3f28e7a19 100644 --- a/drivers/scsi/pcmcia/nsp_cs.c +++ b/drivers/scsi/pcmcia/nsp_cs.c | |||
@@ -2125,6 +2125,18 @@ static int nsp_cs_event(event_t event, | |||
2125 | * module entry point | 2125 | * module entry point |
2126 | *====================================================================*/ | 2126 | *====================================================================*/ |
2127 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,68)) | 2127 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,68)) |
2128 | static struct pcmcia_device_id nsp_cs_ids[] = { | ||
2129 | PCMCIA_DEVICE_PROD_ID123("IO DATA", "CBSC16 ", "1", 0x547e66dc, 0x0d63a3fd, 0x51de003a), | ||
2130 | PCMCIA_DEVICE_PROD_ID123("KME ", "SCSI-CARD-001", "1", 0x534c02bc, 0x52008408, 0x51de003a), | ||
2131 | PCMCIA_DEVICE_PROD_ID123("KME ", "SCSI-CARD-002", "1", 0x534c02bc, 0xcb09d5b2, 0x51de003a), | ||
2132 | PCMCIA_DEVICE_PROD_ID123("KME ", "SCSI-CARD-003", "1", 0x534c02bc, 0xbc0ee524, 0x51de003a), | ||
2133 | PCMCIA_DEVICE_PROD_ID123("KME ", "SCSI-CARD-004", "1", 0x534c02bc, 0x226a7087, 0x51de003a), | ||
2134 | PCMCIA_DEVICE_PROD_ID123("WBT", "NinjaSCSI-3", "R1.0", 0xc7ba805f, 0xfdc7c97d, 0x6973710e), | ||
2135 | PCMCIA_DEVICE_PROD_ID123("WORKBIT", "UltraNinja-16", "1", 0x28191418, 0xb70f4b09, 0x51de003a), | ||
2136 | PCMCIA_DEVICE_NULL | ||
2137 | }; | ||
2138 | MODULE_DEVICE_TABLE(pcmcia, nsp_cs_ids); | ||
2139 | |||
2128 | static struct pcmcia_driver nsp_driver = { | 2140 | static struct pcmcia_driver nsp_driver = { |
2129 | .owner = THIS_MODULE, | 2141 | .owner = THIS_MODULE, |
2130 | .drv = { | 2142 | .drv = { |
@@ -2132,6 +2144,7 @@ static struct pcmcia_driver nsp_driver = { | |||
2132 | }, | 2144 | }, |
2133 | .attach = nsp_cs_attach, | 2145 | .attach = nsp_cs_attach, |
2134 | .detach = nsp_cs_detach, | 2146 | .detach = nsp_cs_detach, |
2147 | .id_table = nsp_cs_ids, | ||
2135 | }; | 2148 | }; |
2136 | #endif | 2149 | #endif |
2137 | 2150 | ||
diff --git a/drivers/scsi/pcmcia/qlogic_stub.c b/drivers/scsi/pcmcia/qlogic_stub.c index a0175f5d11cd..0dcf41102abf 100644 --- a/drivers/scsi/pcmcia/qlogic_stub.c +++ b/drivers/scsi/pcmcia/qlogic_stub.c | |||
@@ -395,6 +395,27 @@ static int qlogic_event(event_t event, int priority, event_callback_args_t * arg | |||
395 | return 0; | 395 | return 0; |
396 | } /* qlogic_event */ | 396 | } /* qlogic_event */ |
397 | 397 | ||
398 | static struct pcmcia_device_id qlogic_ids[] = { | ||
399 | PCMCIA_DEVICE_PROD_ID12("EIger Labs", "PCMCIA-to-SCSI Adapter", 0x88395fa7, 0x33b7a5e6), | ||
400 | PCMCIA_DEVICE_PROD_ID12("EPSON", "SCSI-2 PC Card SC200", 0xd361772f, 0x299d1751), | ||
401 | PCMCIA_DEVICE_PROD_ID12("MACNICA", "MIRACLE SCSI-II mPS110", 0x20841b68, 0xab3c3b6d), | ||
402 | PCMCIA_DEVICE_PROD_ID12("MIDORI ELECTRONICS ", "CN-SC43", 0x6534382a, 0xd67eee79), | ||
403 | PCMCIA_DEVICE_PROD_ID12("NEC", "PC-9801N-J03R", 0x18df0ba0, 0x24662e8a), | ||
404 | PCMCIA_DEVICE_PROD_ID12("KME ", "KXLC003", 0x82375a27, 0xf68e5bf7), | ||
405 | PCMCIA_DEVICE_PROD_ID12("KME ", "KXLC004", 0x82375a27, 0x68eace54), | ||
406 | PCMCIA_DEVICE_PROD_ID12("KME", "KXLC101", 0x3faee676, 0x194250ec), | ||
407 | PCMCIA_DEVICE_PROD_ID12("QLOGIC CORPORATION", "pc05", 0xd77b2930, 0xa85b2735), | ||
408 | PCMCIA_DEVICE_PROD_ID12("QLOGIC CORPORATION", "pc05 rev 1.10", 0xd77b2930, 0x70f8b5f8), | ||
409 | PCMCIA_DEVICE_PROD_ID123("KME", "KXLC002", "00", 0x3faee676, 0x81896b61, 0xf99f065f), | ||
410 | PCMCIA_DEVICE_PROD_ID12("RATOC System Inc.", "SCSI2 CARD 37", 0x85c10e17, 0x1a2640c1), | ||
411 | PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "SCSC200A PC CARD SCSI", 0xb4585a1a, 0xa6f06ebe), | ||
412 | PCMCIA_DEVICE_PROD_ID12("TOSHIBA", "SCSC200B PC CARD SCSI-10", 0xb4585a1a, 0x0a88dea0), | ||
413 | /* these conflict with other cards! */ | ||
414 | /* PCMCIA_DEVICE_PROD_ID123("MACNICA", "MIRACLE SCSI", "mPS100", 0x20841b68, 0xf8dedaeb, 0x89f7fafb), */ | ||
415 | /* PCMCIA_DEVICE_PROD_ID123("MACNICA", "MIRACLE SCSI", "mPS100", 0x20841b68, 0xf8dedaeb, 0x89f7fafb), */ | ||
416 | PCMCIA_DEVICE_NULL, | ||
417 | }; | ||
418 | MODULE_DEVICE_TABLE(pcmcia, qlogic_ids); | ||
398 | 419 | ||
399 | static struct pcmcia_driver qlogic_cs_driver = { | 420 | static struct pcmcia_driver qlogic_cs_driver = { |
400 | .owner = THIS_MODULE, | 421 | .owner = THIS_MODULE, |
@@ -403,6 +424,7 @@ static struct pcmcia_driver qlogic_cs_driver = { | |||
403 | }, | 424 | }, |
404 | .attach = qlogic_attach, | 425 | .attach = qlogic_attach, |
405 | .detach = qlogic_detach, | 426 | .detach = qlogic_detach, |
427 | .id_table = qlogic_ids, | ||
406 | }; | 428 | }; |
407 | 429 | ||
408 | static int __init init_qlogic_cs(void) | 430 | static int __init init_qlogic_cs(void) |
diff --git a/drivers/scsi/pcmcia/sym53c500_cs.c b/drivers/scsi/pcmcia/sym53c500_cs.c index 1667da9508b4..7d4b16b6797d 100644 --- a/drivers/scsi/pcmcia/sym53c500_cs.c +++ b/drivers/scsi/pcmcia/sym53c500_cs.c | |||
@@ -999,6 +999,14 @@ MODULE_AUTHOR("Bob Tracy <rct@frus.com>"); | |||
999 | MODULE_DESCRIPTION("SYM53C500 PCMCIA SCSI driver"); | 999 | MODULE_DESCRIPTION("SYM53C500 PCMCIA SCSI driver"); |
1000 | MODULE_LICENSE("GPL"); | 1000 | MODULE_LICENSE("GPL"); |
1001 | 1001 | ||
1002 | static struct pcmcia_device_id sym53c500_ids[] = { | ||
1003 | PCMCIA_DEVICE_PROD_ID12("BASICS by New Media Corporation", "SCSI Sym53C500", 0x23c78a9d, 0x0099e7f7), | ||
1004 | PCMCIA_DEVICE_PROD_ID12("New Media Corporation", "SCSI Bus Toaster Sym53C500", 0x085a850b, 0x45432eb8), | ||
1005 | PCMCIA_DEVICE_PROD_ID2("SCSI9000", 0x21648f44), | ||
1006 | PCMCIA_DEVICE_NULL, | ||
1007 | }; | ||
1008 | MODULE_DEVICE_TABLE(pcmcia, sym53c500_ids); | ||
1009 | |||
1002 | static struct pcmcia_driver sym53c500_cs_driver = { | 1010 | static struct pcmcia_driver sym53c500_cs_driver = { |
1003 | .owner = THIS_MODULE, | 1011 | .owner = THIS_MODULE, |
1004 | .drv = { | 1012 | .drv = { |
@@ -1006,6 +1014,7 @@ static struct pcmcia_driver sym53c500_cs_driver = { | |||
1006 | }, | 1014 | }, |
1007 | .attach = SYM53C500_attach, | 1015 | .attach = SYM53C500_attach, |
1008 | .detach = SYM53C500_detach, | 1016 | .detach = SYM53C500_detach, |
1017 | .id_table = sym53c500_ids, | ||
1009 | }; | 1018 | }; |
1010 | 1019 | ||
1011 | static int __init | 1020 | static int __init |
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 621dee8b8cb2..10506f9cd0c9 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -632,7 +632,7 @@ static void scsi_free_sgtable(struct scatterlist *sgl, int index) | |||
632 | { | 632 | { |
633 | struct scsi_host_sg_pool *sgp; | 633 | struct scsi_host_sg_pool *sgp; |
634 | 634 | ||
635 | BUG_ON(index > SG_MEMPOOL_NR); | 635 | BUG_ON(index >= SG_MEMPOOL_NR); |
636 | 636 | ||
637 | sgp = scsi_sg_pools + index; | 637 | sgp = scsi_sg_pools + index; |
638 | mempool_free(sgl, sgp->pool); | 638 | mempool_free(sgl, sgp->pool); |