diff options
-rw-r--r-- | drivers/scsi/scsi_transport_spi.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/scsi/scsi_transport_spi.c b/drivers/scsi/scsi_transport_spi.c index 2918b9600db7..7670919a087a 100644 --- a/drivers/scsi/scsi_transport_spi.c +++ b/drivers/scsi/scsi_transport_spi.c | |||
@@ -795,7 +795,8 @@ spi_dv_device_internal(struct scsi_request *sreq, u8 *buffer) | |||
795 | } | 795 | } |
796 | 796 | ||
797 | /* test width */ | 797 | /* test width */ |
798 | if (i->f->set_width && spi_max_width(starget) && sdev->wdtr) { | 798 | if (i->f->set_width && spi_max_width(starget) && |
799 | scsi_device_wide(sdev)) { | ||
799 | i->f->set_width(starget, 1); | 800 | i->f->set_width(starget, 1); |
800 | 801 | ||
801 | if (spi_dv_device_compare_inquiry(sreq, buffer, | 802 | if (spi_dv_device_compare_inquiry(sreq, buffer, |
@@ -811,14 +812,14 @@ spi_dv_device_internal(struct scsi_request *sreq, u8 *buffer) | |||
811 | return; | 812 | return; |
812 | 813 | ||
813 | /* device can't handle synchronous */ | 814 | /* device can't handle synchronous */ |
814 | if (!sdev->ppr && !sdev->sdtr) | 815 | if (!scsi_device_sync(sdev) && !scsi_device_dt(sdev)) |
815 | return; | 816 | return; |
816 | 817 | ||
817 | /* see if the device has an echo buffer. If it does we can | 818 | /* see if the device has an echo buffer. If it does we can |
818 | * do the SPI pattern write tests */ | 819 | * do the SPI pattern write tests */ |
819 | 820 | ||
820 | len = 0; | 821 | len = 0; |
821 | if (sdev->ppr) | 822 | if (scsi_device_dt(sdev)) |
822 | len = spi_dv_device_get_echo_buffer(sreq, buffer); | 823 | len = spi_dv_device_get_echo_buffer(sreq, buffer); |
823 | 824 | ||
824 | retry: | 825 | retry: |
@@ -828,9 +829,11 @@ spi_dv_device_internal(struct scsi_request *sreq, u8 *buffer) | |||
828 | DV_SET(period, spi_min_period(starget)); | 829 | DV_SET(period, spi_min_period(starget)); |
829 | /* try QAS requests; this should be harmless to set if the | 830 | /* try QAS requests; this should be harmless to set if the |
830 | * target supports it */ | 831 | * target supports it */ |
831 | DV_SET(qas, 1); | 832 | if (scsi_device_qas(sdev)) |
833 | DV_SET(qas, 1); | ||
832 | /* Also try IU transfers */ | 834 | /* Also try IU transfers */ |
833 | DV_SET(iu, 1); | 835 | if (scsi_device_ius(sdev)) |
836 | DV_SET(iu, 1); | ||
834 | if (spi_min_period(starget) < 9) { | 837 | if (spi_min_period(starget) < 9) { |
835 | /* This u320 (or u640). Ignore the coupled parameters | 838 | /* This u320 (or u640). Ignore the coupled parameters |
836 | * like DT and IU, but set the optional ones */ | 839 | * like DT and IU, but set the optional ones */ |