diff options
Diffstat (limited to 'drivers/scsi/scsi_transport_spi.c')
| -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 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)  	}  	/* test width */ -	if (i->f->set_width && spi_max_width(starget) && sdev->wdtr) { +	if (i->f->set_width && spi_max_width(starget) && +	    scsi_device_wide(sdev)) {  		i->f->set_width(starget, 1);  		if (spi_dv_device_compare_inquiry(sreq, buffer, @@ -811,14 +812,14 @@ spi_dv_device_internal(struct scsi_request *sreq, u8 *buffer)  		return;  	/* device can't handle synchronous */ -	if (!sdev->ppr && !sdev->sdtr) +	if (!scsi_device_sync(sdev) && !scsi_device_dt(sdev))  		return;  	/* see if the device has an echo buffer.  If it does we can  	 * do the SPI pattern write tests */  	len = 0; -	if (sdev->ppr) +	if (scsi_device_dt(sdev))  		len = spi_dv_device_get_echo_buffer(sreq, buffer);   retry: @@ -828,9 +829,11 @@ spi_dv_device_internal(struct scsi_request *sreq, u8 *buffer)  	DV_SET(period, spi_min_period(starget));  	/* try QAS requests; this should be harmless to set if the  	 * target supports it */ -	DV_SET(qas, 1); +	if (scsi_device_qas(sdev)) +		DV_SET(qas, 1);  	/* Also try IU transfers */ -	DV_SET(iu, 1); +	if (scsi_device_ius(sdev)) +		DV_SET(iu, 1);  	if (spi_min_period(starget) < 9) {  		/* This u320 (or u640). Ignore the coupled parameters  		 * like DT and IU, but set the optional ones */  |