Skip to content

Commit

Permalink
[SCSI] aic7xxx: pause sequencer before touching SBLKCTL
Browse files Browse the repository at this point in the history
Some cards need to pause the sequencer before the SBLKCTL register is
touched.  This fixes a PCI related oops seen on powerpc macs with this
card caused by trying to ascertain the bus signalling before beginning
domain validation.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
  • Loading branch information
Doug Ledford authored and James Bottomley committed Sep 23, 2006
1 parent 3e3c60e commit cf2b5d3
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions drivers/scsi/aic7xxx/aic7xxx_osm.c
Original file line number Diff line number Diff line change
Expand Up @@ -2539,6 +2539,7 @@ static void ahc_linux_set_iu(struct scsi_target *starget, int iu)
static void ahc_linux_get_signalling(struct Scsi_Host *shost)
{
struct ahc_softc *ahc = *(struct ahc_softc **)shost->hostdata;
unsigned long flags;
u8 mode;

if (!(ahc->features & AHC_ULTRA2)) {
Expand All @@ -2550,7 +2551,11 @@ static void ahc_linux_get_signalling(struct Scsi_Host *shost)
return;
}

ahc_lock(ahc, &flags);
ahc_pause(ahc);
mode = ahc_inb(ahc, SBLKCTL);
ahc_unpause(ahc);
ahc_unlock(ahc, &flags);

if (mode & ENAB40)
spi_signalling(shost) = SPI_SIGNAL_LVD;
Expand Down

0 comments on commit cf2b5d3

Please sign in to comment.