Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60eef257 authored by James Bottomley's avatar James Bottomley
Browse files

[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: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent b2d8bfe1
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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 scsi_target *starget = sdev->sdev_target;
	struct Scsi_Host *shost = sdev->host;
	int len = sdev->inquiry_len;
	/* first set us up for narrow async */
	DV_SET(offset, 0);
@@ -844,6 +845,14 @@ spi_dv_device_internal(struct scsi_device *sdev, u8 *buffer)
		if (spi_min_period(starget) == 8)
			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 */
	spi_dv_retrain(sdev, buffer, buffer + sdev->inquiry_len,
		       spi_dv_device_compare_inquiry);