Skip to content

Commit

Permalink
[SCSI] aic7xxx: fix the BIOS limits setting routines
Browse files Browse the repository at this point in the history
Following the go around over the SONY DVD that needs artificial limits,
this should be the correct code for all cases (minus the debugging
prints).

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
  • Loading branch information
James Bottomley authored and James Bottomley committed Jun 14, 2005
1 parent d736a27 commit 12021ff
Showing 1 changed file with 25 additions and 10 deletions.
35 changes: 25 additions & 10 deletions drivers/scsi/aic7xxx/aic7xxx_osm.c
Original file line number Diff line number Diff line change
Expand Up @@ -621,20 +621,35 @@ ahc_linux_target_alloc(struct scsi_target *starget)
memset(targ, 0, sizeof(*targ));

if (sc) {
int maxsync = AHC_SYNCRATE_DT;
int ultra = 0;
int flags = sc->device_flags[target_offset];

if (ahc->flags & AHC_NEWEEPROM_FMT) {
if (flags & CFSYNCHISULTRA)
ultra = 1;
} else if (flags & CFULTRAEN)
ultra = 1;
/* AIC nutcase; 10MHz appears as ultra = 1, CFXFER = 0x04
* change it to ultra=0, CFXFER = 0 */
if(ultra && (flags & CFXFER) == 0x04) {
ultra = 0;
flags &= ~CFXFER;
}

if ((ahc->features & AHC_ULTRA2) != 0) {
scsirate = sc->device_flags[target_offset] & CFXFER;
scsirate = (flags & CFXFER) | (ultra ? 0x8 : 0);
} else {
scsirate = (sc->device_flags[target_offset] & CFXFER) << 4;
if (sc->device_flags[target_offset] & CFSYNCH)
scsirate |= SOFS;
scsirate = (flags & CFXFER) << 4;
maxsync = ultra ? AHC_SYNCRATE_ULTRA :
AHC_SYNCRATE_FAST;
}
if (sc->device_flags[target_offset] & CFWIDEB) {
scsirate |= WIDEXFER;
spi_max_width(starget) = 1;
} else
spi_max_width(starget) = 0;
spi_max_width(starget) = (flags & CFWIDEB) ? 1 : 0;
if (!(flags & CFSYNCH))
spi_max_offset(starget) = 0;
spi_min_period(starget) =
ahc_find_period(ahc, scsirate, AHC_SYNCRATE_DT);
ahc_find_period(ahc, scsirate, maxsync);

tinfo = ahc_fetch_transinfo(ahc, channel, ahc->our_id,
starget->id, &tstate);
}
Expand Down

0 comments on commit 12021ff

Please sign in to comment.