diff options
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/aic94xx/aic94xx_task.c | 10 | ||||
-rw-r--r-- | drivers/scsi/isci/request.c | 4 | ||||
-rw-r--r-- | drivers/scsi/isci/task.c | 2 | ||||
-rw-r--r-- | drivers/scsi/libsas/sas_ata.c | 66 | ||||
-rw-r--r-- | drivers/scsi/mac_scsi.c | 2 | ||||
-rw-r--r-- | drivers/scsi/megaraid/megaraid_sas_base.c | 2 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_ctl.h | 2 | ||||
-rw-r--r-- | drivers/scsi/mvsas/mv_sas.c | 4 | ||||
-rw-r--r-- | drivers/scsi/pm8001/pm8001_hwi.c | 2 | ||||
-rw-r--r-- | drivers/scsi/pm8001/pm80xx_hwi.c | 2 | ||||
-rw-r--r-- | drivers/scsi/ps3rom.c | 1 |
11 files changed, 27 insertions, 70 deletions
diff --git a/drivers/scsi/aic94xx/aic94xx_task.c b/drivers/scsi/aic94xx/aic94xx_task.c index 5ff1ce7ba1f4..cdd4ab683be9 100644 --- a/drivers/scsi/aic94xx/aic94xx_task.c +++ b/drivers/scsi/aic94xx/aic94xx_task.c | |||
@@ -373,10 +373,10 @@ static int asd_build_ata_ascb(struct asd_ascb *ascb, struct sas_task *task, | |||
373 | 373 | ||
374 | if (unlikely(task->ata_task.device_control_reg_update)) | 374 | if (unlikely(task->ata_task.device_control_reg_update)) |
375 | scb->header.opcode = CONTROL_ATA_DEV; | 375 | scb->header.opcode = CONTROL_ATA_DEV; |
376 | else if (dev->sata_dev.command_set == ATA_COMMAND_SET) | 376 | else if (dev->sata_dev.class == ATA_DEV_ATAPI) |
377 | scb->header.opcode = INITIATE_ATA_TASK; | ||
378 | else | ||
379 | scb->header.opcode = INITIATE_ATAPI_TASK; | 377 | scb->header.opcode = INITIATE_ATAPI_TASK; |
378 | else | ||
379 | scb->header.opcode = INITIATE_ATA_TASK; | ||
380 | 380 | ||
381 | scb->ata_task.proto_conn_rate = (1 << 5); /* STP */ | 381 | scb->ata_task.proto_conn_rate = (1 << 5); /* STP */ |
382 | if (dev->port->oob_mode == SAS_OOB_MODE) | 382 | if (dev->port->oob_mode == SAS_OOB_MODE) |
@@ -387,7 +387,7 @@ static int asd_build_ata_ascb(struct asd_ascb *ascb, struct sas_task *task, | |||
387 | if (likely(!task->ata_task.device_control_reg_update)) | 387 | if (likely(!task->ata_task.device_control_reg_update)) |
388 | scb->ata_task.fis.flags |= 0x80; /* C=1: update ATA cmd reg */ | 388 | scb->ata_task.fis.flags |= 0x80; /* C=1: update ATA cmd reg */ |
389 | scb->ata_task.fis.flags &= 0xF0; /* PM_PORT field shall be 0 */ | 389 | scb->ata_task.fis.flags &= 0xF0; /* PM_PORT field shall be 0 */ |
390 | if (dev->sata_dev.command_set == ATAPI_COMMAND_SET) | 390 | if (dev->sata_dev.class == ATA_DEV_ATAPI) |
391 | memcpy(scb->ata_task.atapi_packet, task->ata_task.atapi_packet, | 391 | memcpy(scb->ata_task.atapi_packet, task->ata_task.atapi_packet, |
392 | 16); | 392 | 16); |
393 | scb->ata_task.sister_scb = cpu_to_le16(0xFFFF); | 393 | scb->ata_task.sister_scb = cpu_to_le16(0xFFFF); |
@@ -399,7 +399,7 @@ static int asd_build_ata_ascb(struct asd_ascb *ascb, struct sas_task *task, | |||
399 | if (task->ata_task.dma_xfer) | 399 | if (task->ata_task.dma_xfer) |
400 | flags |= DATA_XFER_MODE_DMA; | 400 | flags |= DATA_XFER_MODE_DMA; |
401 | if (task->ata_task.use_ncq && | 401 | if (task->ata_task.use_ncq && |
402 | dev->sata_dev.command_set != ATAPI_COMMAND_SET) | 402 | dev->sata_dev.class != ATA_DEV_ATAPI) |
403 | flags |= ATA_Q_TYPE_NCQ; | 403 | flags |= ATA_Q_TYPE_NCQ; |
404 | flags |= data_dir_flags[task->data_dir]; | 404 | flags |= data_dir_flags[task->data_dir]; |
405 | scb->ata_task.ata_flags = flags; | 405 | scb->ata_task.ata_flags = flags; |
diff --git a/drivers/scsi/isci/request.c b/drivers/scsi/isci/request.c index 56e38096f0c4..cfd0084f1cd2 100644 --- a/drivers/scsi/isci/request.c +++ b/drivers/scsi/isci/request.c | |||
@@ -694,7 +694,7 @@ sci_io_request_construct_sata(struct isci_request *ireq, | |||
694 | } | 694 | } |
695 | 695 | ||
696 | /* ATAPI */ | 696 | /* ATAPI */ |
697 | if (dev->sata_dev.command_set == ATAPI_COMMAND_SET && | 697 | if (dev->sata_dev.class == ATA_DEV_ATAPI && |
698 | task->ata_task.fis.command == ATA_CMD_PACKET) { | 698 | task->ata_task.fis.command == ATA_CMD_PACKET) { |
699 | sci_atapi_construct(ireq); | 699 | sci_atapi_construct(ireq); |
700 | return SCI_SUCCESS; | 700 | return SCI_SUCCESS; |
@@ -2980,7 +2980,7 @@ static void sci_request_started_state_enter(struct sci_base_state_machine *sm) | |||
2980 | state = SCI_REQ_SMP_WAIT_RESP; | 2980 | state = SCI_REQ_SMP_WAIT_RESP; |
2981 | } else if (task && sas_protocol_ata(task->task_proto) && | 2981 | } else if (task && sas_protocol_ata(task->task_proto) && |
2982 | !task->ata_task.use_ncq) { | 2982 | !task->ata_task.use_ncq) { |
2983 | if (dev->sata_dev.command_set == ATAPI_COMMAND_SET && | 2983 | if (dev->sata_dev.class == ATA_DEV_ATAPI && |
2984 | task->ata_task.fis.command == ATA_CMD_PACKET) { | 2984 | task->ata_task.fis.command == ATA_CMD_PACKET) { |
2985 | state = SCI_REQ_ATAPI_WAIT_H2D; | 2985 | state = SCI_REQ_ATAPI_WAIT_H2D; |
2986 | } else if (task->data_dir == DMA_NONE) { | 2986 | } else if (task->data_dir == DMA_NONE) { |
diff --git a/drivers/scsi/isci/task.c b/drivers/scsi/isci/task.c index 3f63c6318b0d..6dcaed0c1fc8 100644 --- a/drivers/scsi/isci/task.c +++ b/drivers/scsi/isci/task.c | |||
@@ -588,7 +588,7 @@ int isci_task_abort_task(struct sas_task *task) | |||
588 | 588 | ||
589 | ret = TMF_RESP_FUNC_COMPLETE; | 589 | ret = TMF_RESP_FUNC_COMPLETE; |
590 | } else { | 590 | } else { |
591 | /* Fill in the tmf stucture */ | 591 | /* Fill in the tmf structure */ |
592 | isci_task_build_abort_task_tmf(&tmf, isci_tmf_ssp_task_abort, | 592 | isci_task_build_abort_task_tmf(&tmf, isci_tmf_ssp_task_abort, |
593 | old_request); | 593 | old_request); |
594 | 594 | ||
diff --git a/drivers/scsi/libsas/sas_ata.c b/drivers/scsi/libsas/sas_ata.c index 577770fdee86..932d9cc98d2f 100644 --- a/drivers/scsi/libsas/sas_ata.c +++ b/drivers/scsi/libsas/sas_ata.c | |||
@@ -138,7 +138,7 @@ static void sas_ata_task_done(struct sas_task *task) | |||
138 | 138 | ||
139 | if (stat->stat == SAS_PROTO_RESPONSE || stat->stat == SAM_STAT_GOOD || | 139 | if (stat->stat == SAS_PROTO_RESPONSE || stat->stat == SAM_STAT_GOOD || |
140 | ((stat->stat == SAM_STAT_CHECK_CONDITION && | 140 | ((stat->stat == SAM_STAT_CHECK_CONDITION && |
141 | dev->sata_dev.command_set == ATAPI_COMMAND_SET))) { | 141 | dev->sata_dev.class == ATA_DEV_ATAPI))) { |
142 | memcpy(dev->sata_dev.fis, resp->ending_fis, ATA_RESP_FIS_SIZE); | 142 | memcpy(dev->sata_dev.fis, resp->ending_fis, ATA_RESP_FIS_SIZE); |
143 | 143 | ||
144 | if (!link->sactive) { | 144 | if (!link->sactive) { |
@@ -272,7 +272,7 @@ static struct sas_internal *dev_to_sas_internal(struct domain_device *dev) | |||
272 | return to_sas_internal(dev->port->ha->core.shost->transportt); | 272 | return to_sas_internal(dev->port->ha->core.shost->transportt); |
273 | } | 273 | } |
274 | 274 | ||
275 | static void sas_get_ata_command_set(struct domain_device *dev); | 275 | static int sas_get_ata_command_set(struct domain_device *dev); |
276 | 276 | ||
277 | int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy) | 277 | int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy) |
278 | { | 278 | { |
@@ -297,8 +297,7 @@ int sas_get_ata_info(struct domain_device *dev, struct ex_phy *phy) | |||
297 | } | 297 | } |
298 | memcpy(dev->frame_rcvd, &dev->sata_dev.rps_resp.rps.fis, | 298 | memcpy(dev->frame_rcvd, &dev->sata_dev.rps_resp.rps.fis, |
299 | sizeof(struct dev_to_host_fis)); | 299 | sizeof(struct dev_to_host_fis)); |
300 | /* TODO switch to ata_dev_classify() */ | 300 | dev->sata_dev.class = sas_get_ata_command_set(dev); |
301 | sas_get_ata_command_set(dev); | ||
302 | } | 301 | } |
303 | return 0; | 302 | return 0; |
304 | } | 303 | } |
@@ -419,18 +418,7 @@ static int sas_ata_hard_reset(struct ata_link *link, unsigned int *class, | |||
419 | if (ret && ret != -EAGAIN) | 418 | if (ret && ret != -EAGAIN) |
420 | sas_ata_printk(KERN_ERR, dev, "reset failed (errno=%d)\n", ret); | 419 | sas_ata_printk(KERN_ERR, dev, "reset failed (errno=%d)\n", ret); |
421 | 420 | ||
422 | /* XXX: if the class changes during the reset the upper layer | 421 | *class = dev->sata_dev.class; |
423 | * should be informed, if the device has gone away we assume | ||
424 | * libsas will eventually delete it | ||
425 | */ | ||
426 | switch (dev->sata_dev.command_set) { | ||
427 | case ATA_COMMAND_SET: | ||
428 | *class = ATA_DEV_ATA; | ||
429 | break; | ||
430 | case ATAPI_COMMAND_SET: | ||
431 | *class = ATA_DEV_ATAPI; | ||
432 | break; | ||
433 | } | ||
434 | 422 | ||
435 | ap->cbl = ATA_CBL_SATA; | 423 | ap->cbl = ATA_CBL_SATA; |
436 | return ret; | 424 | return ret; |
@@ -619,50 +607,18 @@ void sas_ata_task_abort(struct sas_task *task) | |||
619 | complete(waiting); | 607 | complete(waiting); |
620 | } | 608 | } |
621 | 609 | ||
622 | static void sas_get_ata_command_set(struct domain_device *dev) | 610 | static int sas_get_ata_command_set(struct domain_device *dev) |
623 | { | 611 | { |
624 | struct dev_to_host_fis *fis = | 612 | struct dev_to_host_fis *fis = |
625 | (struct dev_to_host_fis *) dev->frame_rcvd; | 613 | (struct dev_to_host_fis *) dev->frame_rcvd; |
614 | struct ata_taskfile tf; | ||
626 | 615 | ||
627 | if (dev->dev_type == SAS_SATA_PENDING) | 616 | if (dev->dev_type == SAS_SATA_PENDING) |
628 | return; | 617 | return ATA_DEV_UNKNOWN; |
618 | |||
619 | ata_tf_from_fis((const u8 *)fis, &tf); | ||
629 | 620 | ||
630 | if ((fis->sector_count == 1 && /* ATA */ | 621 | return ata_dev_classify(&tf); |
631 | fis->lbal == 1 && | ||
632 | fis->lbam == 0 && | ||
633 | fis->lbah == 0 && | ||
634 | fis->device == 0) | ||
635 | || | ||
636 | (fis->sector_count == 0 && /* CE-ATA (mATA) */ | ||
637 | fis->lbal == 0 && | ||
638 | fis->lbam == 0xCE && | ||
639 | fis->lbah == 0xAA && | ||
640 | (fis->device & ~0x10) == 0)) | ||
641 | |||
642 | dev->sata_dev.command_set = ATA_COMMAND_SET; | ||
643 | |||
644 | else if ((fis->interrupt_reason == 1 && /* ATAPI */ | ||
645 | fis->lbal == 1 && | ||
646 | fis->byte_count_low == 0x14 && | ||
647 | fis->byte_count_high == 0xEB && | ||
648 | (fis->device & ~0x10) == 0)) | ||
649 | |||
650 | dev->sata_dev.command_set = ATAPI_COMMAND_SET; | ||
651 | |||
652 | else if ((fis->sector_count == 1 && /* SEMB */ | ||
653 | fis->lbal == 1 && | ||
654 | fis->lbam == 0x3C && | ||
655 | fis->lbah == 0xC3 && | ||
656 | fis->device == 0) | ||
657 | || | ||
658 | (fis->interrupt_reason == 1 && /* SATA PM */ | ||
659 | fis->lbal == 1 && | ||
660 | fis->byte_count_low == 0x69 && | ||
661 | fis->byte_count_high == 0x96 && | ||
662 | (fis->device & ~0x10) == 0)) | ||
663 | |||
664 | /* Treat it as a superset? */ | ||
665 | dev->sata_dev.command_set = ATAPI_COMMAND_SET; | ||
666 | } | 622 | } |
667 | 623 | ||
668 | void sas_probe_sata(struct asd_sas_port *port) | 624 | void sas_probe_sata(struct asd_sas_port *port) |
@@ -768,7 +724,7 @@ int sas_discover_sata(struct domain_device *dev) | |||
768 | if (dev->dev_type == SAS_SATA_PM) | 724 | if (dev->dev_type == SAS_SATA_PM) |
769 | return -ENODEV; | 725 | return -ENODEV; |
770 | 726 | ||
771 | sas_get_ata_command_set(dev); | 727 | dev->sata_dev.class = sas_get_ata_command_set(dev); |
772 | sas_fill_in_rphy(dev, dev->rphy); | 728 | sas_fill_in_rphy(dev, dev->rphy); |
773 | 729 | ||
774 | res = sas_notify_lldd_dev_found(dev); | 730 | res = sas_notify_lldd_dev_found(dev); |
diff --git a/drivers/scsi/mac_scsi.c b/drivers/scsi/mac_scsi.c index 953fd9b953c7..1e85c07e3b62 100644 --- a/drivers/scsi/mac_scsi.c +++ b/drivers/scsi/mac_scsi.c | |||
@@ -166,7 +166,7 @@ static void mac_scsi_reset_boot(struct Scsi_Host *instance) | |||
166 | XXX: Since bus errors in the PDMA routines never happen on my | 166 | XXX: Since bus errors in the PDMA routines never happen on my |
167 | computer, the bus error code is untested. | 167 | computer, the bus error code is untested. |
168 | If the code works as intended, a bus error results in Pseudo-DMA | 168 | If the code works as intended, a bus error results in Pseudo-DMA |
169 | beeing disabled, meaning that the driver switches to slow handshake. | 169 | being disabled, meaning that the driver switches to slow handshake. |
170 | If bus errors are NOT extremely rare, this has to be changed. | 170 | If bus errors are NOT extremely rare, this has to be changed. |
171 | */ | 171 | */ |
172 | 172 | ||
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index f05580e693d0..ff283d23788a 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c | |||
@@ -6783,7 +6783,7 @@ static int __init megasas_init(void) | |||
6783 | rval = pci_register_driver(&megasas_pci_driver); | 6783 | rval = pci_register_driver(&megasas_pci_driver); |
6784 | 6784 | ||
6785 | if (rval) { | 6785 | if (rval) { |
6786 | printk(KERN_DEBUG "megasas: PCI hotplug regisration failed \n"); | 6786 | printk(KERN_DEBUG "megasas: PCI hotplug registration failed \n"); |
6787 | goto err_pcidrv; | 6787 | goto err_pcidrv; |
6788 | } | 6788 | } |
6789 | 6789 | ||
diff --git a/drivers/scsi/mpt2sas/mpt2sas_ctl.h b/drivers/scsi/mpt2sas/mpt2sas_ctl.h index fa0567c96050..7f842c88abd2 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_ctl.h +++ b/drivers/scsi/mpt2sas/mpt2sas_ctl.h | |||
@@ -224,7 +224,7 @@ struct mpt2_ioctl_eventreport { | |||
224 | }; | 224 | }; |
225 | 225 | ||
226 | /** | 226 | /** |
227 | * struct mpt2_ioctl_command - generic mpt firmware passthru ioclt | 227 | * struct mpt2_ioctl_command - generic mpt firmware passthru ioctl |
228 | * @hdr - generic header | 228 | * @hdr - generic header |
229 | * @timeout - command timeout in seconds. (if zero then use driver default | 229 | * @timeout - command timeout in seconds. (if zero then use driver default |
230 | * value). | 230 | * value). |
diff --git a/drivers/scsi/mvsas/mv_sas.c b/drivers/scsi/mvsas/mv_sas.c index 85d86a5cdb60..2d5ab6d969ec 100644 --- a/drivers/scsi/mvsas/mv_sas.c +++ b/drivers/scsi/mvsas/mv_sas.c | |||
@@ -479,7 +479,7 @@ static int mvs_task_prep_ata(struct mvs_info *mvi, | |||
479 | 479 | ||
480 | if (task->ata_task.use_ncq) | 480 | if (task->ata_task.use_ncq) |
481 | flags |= MCH_FPDMA; | 481 | flags |= MCH_FPDMA; |
482 | if (dev->sata_dev.command_set == ATAPI_COMMAND_SET) { | 482 | if (dev->sata_dev.class == ATA_DEV_ATAPI) { |
483 | if (task->ata_task.fis.command != ATA_CMD_ID_ATAPI) | 483 | if (task->ata_task.fis.command != ATA_CMD_ID_ATAPI) |
484 | flags |= MCH_ATAPI; | 484 | flags |= MCH_ATAPI; |
485 | } | 485 | } |
@@ -546,7 +546,7 @@ static int mvs_task_prep_ata(struct mvs_info *mvi, | |||
546 | task->ata_task.fis.flags |= 0x80; /* C=1: update ATA cmd reg */ | 546 | task->ata_task.fis.flags |= 0x80; /* C=1: update ATA cmd reg */ |
547 | /* fill in command FIS and ATAPI CDB */ | 547 | /* fill in command FIS and ATAPI CDB */ |
548 | memcpy(buf_cmd, &task->ata_task.fis, sizeof(struct host_to_dev_fis)); | 548 | memcpy(buf_cmd, &task->ata_task.fis, sizeof(struct host_to_dev_fis)); |
549 | if (dev->sata_dev.command_set == ATAPI_COMMAND_SET) | 549 | if (dev->sata_dev.class == ATA_DEV_ATAPI) |
550 | memcpy(buf_cmd + STP_ATAPI_CMD, | 550 | memcpy(buf_cmd + STP_ATAPI_CMD, |
551 | task->ata_task.atapi_packet, 16); | 551 | task->ata_task.atapi_packet, 16); |
552 | 552 | ||
diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c index 933f21471951..96dcc097a463 100644 --- a/drivers/scsi/pm8001/pm8001_hwi.c +++ b/drivers/scsi/pm8001/pm8001_hwi.c | |||
@@ -4367,7 +4367,7 @@ static int pm8001_chip_sata_req(struct pm8001_hba_info *pm8001_ha, | |||
4367 | PM8001_IO_DBG(pm8001_ha, pm8001_printk("PIO\n")); | 4367 | PM8001_IO_DBG(pm8001_ha, pm8001_printk("PIO\n")); |
4368 | } | 4368 | } |
4369 | if (task->ata_task.use_ncq && | 4369 | if (task->ata_task.use_ncq && |
4370 | dev->sata_dev.command_set != ATAPI_COMMAND_SET) { | 4370 | dev->sata_dev.class != ATA_DEV_ATAPI) { |
4371 | ATAP = 0x07; /* FPDMA */ | 4371 | ATAP = 0x07; /* FPDMA */ |
4372 | PM8001_IO_DBG(pm8001_ha, pm8001_printk("FPDMA\n")); | 4372 | PM8001_IO_DBG(pm8001_ha, pm8001_printk("FPDMA\n")); |
4373 | } | 4373 | } |
diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c index b06443a0db2d..05cce463ab01 100644 --- a/drivers/scsi/pm8001/pm80xx_hwi.c +++ b/drivers/scsi/pm8001/pm80xx_hwi.c | |||
@@ -4077,7 +4077,7 @@ static int pm80xx_chip_sata_req(struct pm8001_hba_info *pm8001_ha, | |||
4077 | PM8001_IO_DBG(pm8001_ha, pm8001_printk("PIO\n")); | 4077 | PM8001_IO_DBG(pm8001_ha, pm8001_printk("PIO\n")); |
4078 | } | 4078 | } |
4079 | if (task->ata_task.use_ncq && | 4079 | if (task->ata_task.use_ncq && |
4080 | dev->sata_dev.command_set != ATAPI_COMMAND_SET) { | 4080 | dev->sata_dev.class != ATA_DEV_ATAPI) { |
4081 | ATAP = 0x07; /* FPDMA */ | 4081 | ATAP = 0x07; /* FPDMA */ |
4082 | PM8001_IO_DBG(pm8001_ha, pm8001_printk("FPDMA\n")); | 4082 | PM8001_IO_DBG(pm8001_ha, pm8001_printk("FPDMA\n")); |
4083 | } | 4083 | } |
diff --git a/drivers/scsi/ps3rom.c b/drivers/scsi/ps3rom.c index b3b48b5a984c..5298def33733 100644 --- a/drivers/scsi/ps3rom.c +++ b/drivers/scsi/ps3rom.c | |||
@@ -383,6 +383,7 @@ static int ps3rom_probe(struct ps3_system_bus_device *_dev) | |||
383 | if (!host) { | 383 | if (!host) { |
384 | dev_err(&dev->sbd.core, "%s:%u: scsi_host_alloc failed\n", | 384 | dev_err(&dev->sbd.core, "%s:%u: scsi_host_alloc failed\n", |
385 | __func__, __LINE__); | 385 | __func__, __LINE__); |
386 | error = -ENOMEM; | ||
386 | goto fail_teardown; | 387 | goto fail_teardown; |
387 | } | 388 | } |
388 | 389 | ||