Commit 3e3c60e3 authored by James Bottomley's avatar James Bottomley Committed by James Bottomley

[SCSI] aic7xxx: avoid checking SBLKCTL register for certain cards

For cards that don't support LVD, checking the SBLKCTL register to
determine the bus singalling doesn't work.  So, check that the card
supports LVD first (AHC_ULTRA2) before checking the register.
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 23183910
...@@ -2539,15 +2539,23 @@ static void ahc_linux_set_iu(struct scsi_target *starget, int iu) ...@@ -2539,15 +2539,23 @@ static void ahc_linux_set_iu(struct scsi_target *starget, int iu)
static void ahc_linux_get_signalling(struct Scsi_Host *shost) static void ahc_linux_get_signalling(struct Scsi_Host *shost)
{ {
struct ahc_softc *ahc = *(struct ahc_softc **)shost->hostdata; struct ahc_softc *ahc = *(struct ahc_softc **)shost->hostdata;
u8 mode = ahc_inb(ahc, SBLKCTL); u8 mode;
if (mode & ENAB40) if (!(ahc->features & AHC_ULTRA2)) {
spi_signalling(shost) = SPI_SIGNAL_LVD; /* non-LVD chipset, may not have SBLKCTL reg */
else if (mode & ENAB20)
spi_signalling(shost) = spi_signalling(shost) =
ahc->features & AHC_HVD ? ahc->features & AHC_HVD ?
SPI_SIGNAL_HVD : SPI_SIGNAL_HVD :
SPI_SIGNAL_SE; SPI_SIGNAL_SE;
return;
}
mode = ahc_inb(ahc, SBLKCTL);
if (mode & ENAB40)
spi_signalling(shost) = SPI_SIGNAL_LVD;
else if (mode & ENAB20)
spi_signalling(shost) = SPI_SIGNAL_SE;
else else
spi_signalling(shost) = SPI_SIGNAL_UNKNOWN; spi_signalling(shost) = SPI_SIGNAL_UNKNOWN;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment