Subject: NCR 53C9X driver without interrupts ?
To: None <tech-kern@netbsd.org>
From: Mark Brinicombe <mark@causality.com>
List: tech-kern
Date: 09/08/1998 05:26:56
Hi,
  Ok just wondering if anyone has any thoughts on this ...

I need to use the MI ncr53c9x driver on an interfaces that is lacking
interrupts. i.e. the interrupt line from the NCR53C94 is not physically
wired up. This leads to a slight problem ;-)

The most obvious thought that came to mind was to intercept
ncr53c9x_scsi_cmd at the card driver level and always set the SCSI_POLL
flags in the xs structure. This of course does not work when xfers are
to buffers as if SCSI_POLL is set then biodone() will not get called from
scsipi_done().

My next idea was to add a NOINTR flag to the features register in the
ncr53c9x driver and test this where necessary (typicall whereever
SCSI_POLL is tested for). However looking at ncr53c9x_done and
ncr53c9x_poll it is clear that this will not work from the way these
functions are written. Basically for ncr53c9x_poll to work correctly it
assumes that it can test the xs structure for completion. This is set in
ncr53c9x_done but then when it calls scsipi_done the xs structure will
get freed thus thus completion state is lost to ncr53c9x_poll (This free 
of course is not performed if SCSI_POLL was set).

So I am right is assuming that there is no simple way of doing
non-interrupt driver xfers with the NCR53C9x driver into buffers ?

If so what is the solution ? Implement another means of passing the
information from ncr53c9x_done back to ncr53c9x_poll ?

Ok having interrupts would be far simpler but that's manufacturers for
you.

Cheers,
				mark