aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/scsi_transport_spi.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/scsi/scsi_transport_spi.c b/drivers/scsi/scsi_transport_spi.c
index 2918b9600db..7670919a087 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 */