Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 31 Mar 1995 06:06:03 -0800
From:      "Justin T. Gibbs" <gibbs>
To:        CVS-commiters, cvs-sys
Subject:   cvs commit: src/sys/gnu/misc/aic7xxx aic7xxx.c aic7xxx.seq
Message-ID:  <199503311406.GAA20408@freefall.cdrom.com>

next in thread | raw e-mail | index | archive | help
gibbs       95/03/31 06:06:03

  Modified:    sys/gnu/misc/aic7xxx aic7xxx.c aic7xxx.seq
  Log:
  Major overhaul of the aic7xxx driver:
  - Report valid residual byte counts.  We actually pause the sequencer
  when the residual is non-zero.  I thought about using DMA to do this,
  bus sequencer program space is tight.
  
  - Fix embarassing off by one error in the computation of a 2's
  compliment variable.  This was most likely the cause of the
  many problems reported with the tagged queuing code.
  
  - Handle "MAX_SYNC" as a special case (ie we are the ones starting
  the sync negotiation sequence).  This was done so that the target
  scratch area can be initialed to 0 offset (asyncronous transfers)
  safely.  The initialization to 0 (was 15) is necessary since in
  some cases a Wide negotiation could run into problems if SCSIRATE
  was set wrong and we went into data(in/out).
  
  - Trim the DMA routines a little by using some procedures.  Net
  effect is more functionality with 3 less instructions after this
  update.
  
  - Toggle the WIDEODD bit of the DFCNTRL whenever this is not the
  last SG block.  It has no effect in the 8bit bus configuration,
  but in the Wide configuration ensures that the overlap byte is
  held in the SCSI block if the transfer is odd so it will end
  up in the next SG (the correct behavior).



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199503311406.GAA20408>