[SCSI] spi transport: don't allow dt to be set on SE or HVD buses
This is really just a belt and braces test. The standards require disks to respond DT not capable on a non-LVD bus ... however, not all disks follow the standards ... Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
@@ -785,6 +785,7 @@ spi_dv_device_internal(struct scsi_device *sdev, u8 *buffer)
|
|||||||
{
|
{
|
||||||
struct spi_internal *i = to_spi_internal(sdev->host->transportt);
|
struct spi_internal *i = to_spi_internal(sdev->host->transportt);
|
||||||
struct scsi_target *starget = sdev->sdev_target;
|
struct scsi_target *starget = sdev->sdev_target;
|
||||||
|
struct Scsi_Host *shost = sdev->host;
|
||||||
int len = sdev->inquiry_len;
|
int len = sdev->inquiry_len;
|
||||||
/* first set us up for narrow async */
|
/* first set us up for narrow async */
|
||||||
DV_SET(offset, 0);
|
DV_SET(offset, 0);
|
||||||
@@ -844,6 +845,14 @@ spi_dv_device_internal(struct scsi_device *sdev, u8 *buffer)
|
|||||||
if (spi_min_period(starget) == 8)
|
if (spi_min_period(starget) == 8)
|
||||||
DV_SET(pcomp_en, 1);
|
DV_SET(pcomp_en, 1);
|
||||||
}
|
}
|
||||||
|
/* now that we've done all this, actually check the bus
|
||||||
|
* signal type (if known). Some devices are stupid on
|
||||||
|
* a SE bus and still claim they can try LVD only settings */
|
||||||
|
if (i->f->get_signalling)
|
||||||
|
i->f->get_signalling(shost);
|
||||||
|
if (spi_signalling(shost) == SPI_SIGNAL_SE ||
|
||||||
|
spi_signalling(shost) == SPI_SIGNAL_HVD)
|
||||||
|
DV_SET(dt, 0);
|
||||||
/* Do the read only INQUIRY tests */
|
/* Do the read only INQUIRY tests */
|
||||||
spi_dv_retrain(sdev, buffer, buffer + sdev->inquiry_len,
|
spi_dv_retrain(sdev, buffer, buffer + sdev->inquiry_len,
|
||||||
spi_dv_device_compare_inquiry);
|
spi_dv_device_compare_inquiry);
|
||||||
|
Reference in New Issue
Block a user