mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-29 21:26:51 +00:00
Cleanup for compatibility with another OS.
Submitted by: wolf
This commit is contained in:
parent
b5909509ee
commit
fe5278a5cc
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=6632
|
@ -1,6 +1,6 @@
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
**
|
**
|
||||||
** $Id: ncr.c,v 1.24 1995/02/15 20:06:38 se Exp $
|
** $Id: ncr.c,v 1.25 1995/02/17 16:45:08 se Exp $
|
||||||
**
|
**
|
||||||
** Device driver for the NCR 53C810 PCI-SCSI-Controller.
|
** Device driver for the NCR 53C810 PCI-SCSI-Controller.
|
||||||
**
|
**
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
***************************************************************************
|
***************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define NCR_PATCHLEVEL "pl15 95/02/15"
|
#define NCR_PATCHLEVEL "pl17 95/02/22"
|
||||||
|
|
||||||
#define NCR_VERSION (2)
|
#define NCR_VERSION (2)
|
||||||
#define MAX_UNITS (16)
|
#define MAX_UNITS (16)
|
||||||
|
@ -178,14 +178,17 @@
|
||||||
#include <pci/ncrreg.h>
|
#include <pci/ncrreg.h>
|
||||||
#else
|
#else
|
||||||
#include <sys/device.h>
|
#include <sys/device.h>
|
||||||
#include <i386/pci/ncrreg.h>
|
#include <i386/pci/ncr_reg.h>
|
||||||
#include <i386/pci/pcivar.h>
|
#include <i386/pci/pcivar.h>
|
||||||
#include <i386/pci/pcireg.h>
|
#include <i386/pci/pcireg.h>
|
||||||
|
#define DELAY(x) delay(x)
|
||||||
#endif /* __NetBSD */
|
#endif /* __NetBSD */
|
||||||
|
|
||||||
#include <scsi/scsi_all.h>
|
#include <scsi/scsi_all.h>
|
||||||
#include <scsi/scsiconf.h>
|
#include <scsi/scsiconf.h>
|
||||||
|
#ifndef __NetBSD__
|
||||||
#include <machine/clock.h>
|
#include <machine/clock.h>
|
||||||
|
#endif /* __NetBSD */
|
||||||
|
|
||||||
|
|
||||||
/*==========================================================
|
/*==========================================================
|
||||||
|
@ -296,7 +299,7 @@
|
||||||
|
|
||||||
/*==========================================================
|
/*==========================================================
|
||||||
**
|
**
|
||||||
** Software Interrupt Codes
|
** Software Interupt Codes
|
||||||
**
|
**
|
||||||
**==========================================================
|
**==========================================================
|
||||||
*/
|
*/
|
||||||
|
@ -557,7 +560,7 @@ struct tcb {
|
||||||
struct link jump_lcb;
|
struct link jump_lcb;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** pointer to interrupted getcc ccb
|
** pointer to interupted getcc ccb
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ccb_p hold_cp;
|
ccb_p hold_cp;
|
||||||
|
@ -1251,7 +1254,7 @@ static void ncr_attach (pcici_t tag, int unit);
|
||||||
|
|
||||||
|
|
||||||
static char ident[] =
|
static char ident[] =
|
||||||
"\n$Id: ncr.c,v 1.24 1995/02/15 20:06:38 se Exp $\n";
|
"\n$Id: ncr.c,v 1.25 1995/02/17 16:45:08 se Exp $\n";
|
||||||
|
|
||||||
u_long ncr_version = NCR_VERSION
|
u_long ncr_version = NCR_VERSION
|
||||||
+ (u_long) sizeof (struct ncb)
|
+ (u_long) sizeof (struct ncb)
|
||||||
|
@ -1403,9 +1406,9 @@ static struct script script0 = {
|
||||||
0,
|
0,
|
||||||
}/*-------------------------< START0 >----------------------*/,{
|
}/*-------------------------< START0 >----------------------*/,{
|
||||||
/*
|
/*
|
||||||
** Hook for interrupted GetConditionCode.
|
** Hook for interupted GetConditionCode.
|
||||||
** Will be patched to ... IFTRUE by
|
** Will be patched to ... IFTRUE by
|
||||||
** the interrupt handler.
|
** the interupt handler.
|
||||||
*/
|
*/
|
||||||
SCR_INT ^ IFFALSE (0),
|
SCR_INT ^ IFFALSE (0),
|
||||||
SIR_SENSE_RESTART,
|
SIR_SENSE_RESTART,
|
||||||
|
@ -1413,7 +1416,7 @@ static struct script script0 = {
|
||||||
}/*-------------------------< START1 >----------------------*/,{
|
}/*-------------------------< START1 >----------------------*/,{
|
||||||
/*
|
/*
|
||||||
** Hook for stalled start queue.
|
** Hook for stalled start queue.
|
||||||
** Will be patched to IFTRUE by the interrupt handler.
|
** Will be patched to IFTRUE by the interupt handler.
|
||||||
*/
|
*/
|
||||||
SCR_INT ^ IFFALSE (0),
|
SCR_INT ^ IFFALSE (0),
|
||||||
SIR_STALL_RESTART,
|
SIR_STALL_RESTART,
|
||||||
|
@ -1562,10 +1565,10 @@ static struct script script0 = {
|
||||||
** Then it will execute the next statement.
|
** Then it will execute the next statement.
|
||||||
**
|
**
|
||||||
** (4) There is a selection timeout.
|
** (4) There is a selection timeout.
|
||||||
** Then the ncr should interrupt the host and stop.
|
** Then the ncr should interupt the host and stop.
|
||||||
** Unfortunately, it seems to continue execution
|
** Unfortunately, it seems to continue execution
|
||||||
** of the script. But it will fail with an
|
** of the script. But it will fail with an
|
||||||
** IID-interrupt on the next WHEN.
|
** IID-interupt on the next WHEN.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
SCR_JUMPR ^ IFTRUE (WHEN (SCR_MSG_IN)),
|
SCR_JUMPR ^ IFTRUE (WHEN (SCR_MSG_IN)),
|
||||||
|
@ -2003,7 +2006,7 @@ static struct script script0 = {
|
||||||
SCR_JUMP ^ IFTRUE (DATA (0)),
|
SCR_JUMP ^ IFTRUE (DATA (0)),
|
||||||
PADDR (clrack),
|
PADDR (clrack),
|
||||||
/*
|
/*
|
||||||
** Size is not 1 .. have to interrupt.
|
** Size is not 1 .. have to interupt.
|
||||||
*/
|
*/
|
||||||
/*<<<*/ SCR_JUMPR ^ IFFALSE (DATA (1)),
|
/*<<<*/ SCR_JUMPR ^ IFFALSE (DATA (1)),
|
||||||
40,
|
40,
|
||||||
|
@ -2660,7 +2663,7 @@ static struct script script0 = {
|
||||||
}/*-------------------------< RESELECT2 >-------------------*/,{
|
}/*-------------------------< RESELECT2 >-------------------*/,{
|
||||||
/*
|
/*
|
||||||
** If it's not connected :(
|
** If it's not connected :(
|
||||||
** -> interrupted by SIGP bit.
|
** -> interupted by SIGP bit.
|
||||||
** Jump to start.
|
** Jump to start.
|
||||||
*/
|
*/
|
||||||
SCR_FROM_REG (ctest2),
|
SCR_FROM_REG (ctest2),
|
||||||
|
@ -3243,19 +3246,20 @@ ncr_attach(parent, self, aux)
|
||||||
|
|
||||||
static void ncr_attach (pcici_t config_id, int unit)
|
static void ncr_attach (pcici_t config_id, int unit)
|
||||||
{
|
{
|
||||||
ncb_p np;
|
ncb_p np = (struct ncb*) 0;
|
||||||
#if ! (__FreeBSD__ >= 2)
|
#if ! (__FreeBSD__ >= 2)
|
||||||
extern unsigned bio_imask;
|
extern unsigned bio_imask;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** allocate structure
|
** allocate structure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
np = (ncb_p) malloc (sizeof (struct ncb), M_DEVBUF, M_WAITOK);
|
if (!np) {
|
||||||
if (!np) return;
|
np = (ncb_p) malloc (sizeof (struct ncb), M_DEVBUF, M_WAITOK);
|
||||||
ncrp[unit]=np;
|
if (!np) return;
|
||||||
|
ncrp[unit]=np;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** initialize structure.
|
** initialize structure.
|
||||||
|
@ -3397,17 +3401,17 @@ static void ncr_attach (pcici_t config_id, int unit)
|
||||||
|
|
||||||
#ifndef __NetBSD__
|
#ifndef __NetBSD__
|
||||||
/*
|
/*
|
||||||
** Install the interrupt handler.
|
** Install the interupt handler.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!pci_map_int (config_id, ncr_intr, np, &bio_imask))
|
if (!pci_map_int (config_id, ncr_intr, np, &bio_imask))
|
||||||
printf ("\tinterruptless mode: reduced performance.\n");
|
printf ("\tinteruptless mode: reduced performance.\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** After SCSI devices have been opened, we cannot
|
** After SCSI devices have been opened, we cannot
|
||||||
** reset the bus safely, so we do it here.
|
** reset the bus safely, so we do it here.
|
||||||
** Interrupt handler does the real work.
|
** Interupt handler does the real work.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
OUTB (nc_scntl1, CRST);
|
OUTB (nc_scntl1, CRST);
|
||||||
|
@ -3415,7 +3419,7 @@ static void ncr_attach (pcici_t config_id, int unit)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** process the reset exception,
|
** process the reset exception,
|
||||||
** if interrupts are not enabled yet.
|
** if interupts are not enabled yet.
|
||||||
** than enable disconnects.
|
** than enable disconnects.
|
||||||
*/
|
*/
|
||||||
ncr_exception (np);
|
ncr_exception (np);
|
||||||
|
@ -3473,7 +3477,7 @@ static void ncr_attach (pcici_t config_id, int unit)
|
||||||
/*==========================================================
|
/*==========================================================
|
||||||
**
|
**
|
||||||
**
|
**
|
||||||
** Process pending device interrupts.
|
** Process pending device interupts.
|
||||||
**
|
**
|
||||||
**
|
**
|
||||||
**==========================================================
|
**==========================================================
|
||||||
|
@ -3543,7 +3547,7 @@ static INT32 ncr_start (struct scsi_xfer * xp)
|
||||||
**
|
**
|
||||||
** Reset SCSI bus
|
** Reset SCSI bus
|
||||||
**
|
**
|
||||||
** Interrupt handler does the real work.
|
** Interupt handler does the real work.
|
||||||
**
|
**
|
||||||
**---------------------------------------------
|
**---------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -3990,7 +3994,7 @@ static INT32 ncr_start (struct scsi_xfer * xp)
|
||||||
splx (oldspl);
|
splx (oldspl);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** If interrupts are enabled, return now.
|
** If interupts are enabled, return now.
|
||||||
** Command is successfully queued.
|
** Command is successfully queued.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -4003,7 +4007,7 @@ static INT32 ncr_start (struct scsi_xfer * xp)
|
||||||
|
|
||||||
/*----------------------------------------------------
|
/*----------------------------------------------------
|
||||||
**
|
**
|
||||||
** Interrupts not yet enabled - have to poll.
|
** Interupts not yet enabled - have to poll.
|
||||||
**
|
**
|
||||||
**----------------------------------------------------
|
**----------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -4782,7 +4786,7 @@ static void ncr_usercmd (ncb_p np)
|
||||||
**==========================================================
|
**==========================================================
|
||||||
**
|
**
|
||||||
** Misused to keep the driver running when
|
** Misused to keep the driver running when
|
||||||
** interrupts are not configured correctly.
|
** interupts are not configured correctly.
|
||||||
**
|
**
|
||||||
**----------------------------------------------------------
|
**----------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -4836,7 +4840,7 @@ static void ncr_timeout (ncb_p np)
|
||||||
**
|
**
|
||||||
** May be a target is hanging,
|
** May be a target is hanging,
|
||||||
** or another initator lets a tape device
|
** or another initator lets a tape device
|
||||||
** rewind with disconnect disabled :-(
|
** rewind with disabled disconnect :-(
|
||||||
**
|
**
|
||||||
** We won't accept that.
|
** We won't accept that.
|
||||||
*/
|
*/
|
||||||
|
@ -4907,7 +4911,7 @@ static void ncr_timeout (ncb_p np)
|
||||||
if (INB(nc_istat) & (INTF|SIP|DIP)) {
|
if (INB(nc_istat) & (INTF|SIP|DIP)) {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Process pending interrupts.
|
** Process pending interupts.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int oldspl = splbio ();
|
int oldspl = splbio ();
|
||||||
|
@ -4935,7 +4939,7 @@ void ncr_exception (ncb_p np)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** interrupt on the fly ?
|
** interupt on the fly ?
|
||||||
*/
|
*/
|
||||||
while ((istat = INB (nc_istat)) & INTF) {
|
while ((istat = INB (nc_istat)) & INTF) {
|
||||||
if (DEBUG_FLAGS & DEBUG_TINY) printf ("F");
|
if (DEBUG_FLAGS & DEBUG_TINY) printf ("F");
|
||||||
|
@ -5024,7 +5028,7 @@ void ncr_exception (ncb_p np)
|
||||||
};
|
};
|
||||||
|
|
||||||
/*-------------------------------------------
|
/*-------------------------------------------
|
||||||
** Programmed interrupt
|
** Programmed interupt
|
||||||
**-------------------------------------------
|
**-------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -5167,7 +5171,7 @@ void ncr_exception (ncb_p np)
|
||||||
/*
|
/*
|
||||||
** @RECOVER@ HTH, SGE, ABRT.
|
** @RECOVER@ HTH, SGE, ABRT.
|
||||||
**
|
**
|
||||||
** We should try to recover from these interrupts.
|
** We should try to recover from these interupts.
|
||||||
** They may occur if there are problems with synch transfers,
|
** They may occur if there are problems with synch transfers,
|
||||||
** or if targets are powerswitched while the driver is running.
|
** or if targets are powerswitched while the driver is running.
|
||||||
*/
|
*/
|
||||||
|
@ -5225,9 +5229,9 @@ void ncr_exception (ncb_p np)
|
||||||
**==========================================================
|
**==========================================================
|
||||||
**
|
**
|
||||||
** There seems to be a bug in the 53c810.
|
** There seems to be a bug in the 53c810.
|
||||||
** Although a STO-interrupt is pending,
|
** Although a STO-Interupt is pending,
|
||||||
** it continues executing script commands.
|
** it continues executing script commands.
|
||||||
** But it will fail and interrupt (IID) on
|
** But it will fail and interupt (IID) on
|
||||||
** the next instruction where it's looking
|
** the next instruction where it's looking
|
||||||
** for a valid phase.
|
** for a valid phase.
|
||||||
**
|
**
|
||||||
|
@ -5340,7 +5344,7 @@ static void ncr_int_ma (ncb_p np)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** find the interrupted script command,
|
** find the interupted script command,
|
||||||
** and the address at where to continue.
|
** and the address at where to continue.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -5446,7 +5450,7 @@ static void ncr_int_ma (ncb_p np)
|
||||||
/*==========================================================
|
/*==========================================================
|
||||||
**
|
**
|
||||||
**
|
**
|
||||||
** ncr chip exception handler for programmed interrupts.
|
** ncr chip exception handler for programmed interupts.
|
||||||
**
|
**
|
||||||
**
|
**
|
||||||
**==========================================================
|
**==========================================================
|
||||||
|
@ -5504,7 +5508,7 @@ void ncr_int_sir (ncb_p np)
|
||||||
|
|
||||||
/*--------------------------------------------------------------------
|
/*--------------------------------------------------------------------
|
||||||
**
|
**
|
||||||
** Processing of interrupted getcc selects
|
** Processing of interupted getcc selects
|
||||||
**
|
**
|
||||||
**--------------------------------------------------------------------
|
**--------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
@ -5512,7 +5516,7 @@ void ncr_int_sir (ncb_p np)
|
||||||
case SIR_SENSE_RESTART:
|
case SIR_SENSE_RESTART:
|
||||||
/*------------------------------------------
|
/*------------------------------------------
|
||||||
** Script processor is idle.
|
** Script processor is idle.
|
||||||
** Look for interrupted "check cond"
|
** Look for interupted "check cond"
|
||||||
**------------------------------------------
|
**------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -5550,7 +5554,7 @@ void ncr_int_sir (ncb_p np)
|
||||||
|
|
||||||
case SIR_SENSE_FAILED:
|
case SIR_SENSE_FAILED:
|
||||||
/*-------------------------------------------
|
/*-------------------------------------------
|
||||||
** While trying to reselect for
|
** While trying to select for
|
||||||
** getting the condition code,
|
** getting the condition code,
|
||||||
** a target reselected us.
|
** a target reselected us.
|
||||||
**-------------------------------------------
|
**-------------------------------------------
|
||||||
|
@ -5587,7 +5591,7 @@ void ncr_int_sir (ncb_p np)
|
||||||
** situation.
|
** situation.
|
||||||
**
|
**
|
||||||
** If the target doesn't answer this message immidiately
|
** If the target doesn't answer this message immidiately
|
||||||
** (as required by the standard), the SIR_NEGO_FAIL interrupt
|
** (as required by the standard), the SIR_NEGO_FAIL interupt
|
||||||
** will be raised eventually.
|
** will be raised eventually.
|
||||||
** The handler removes the HS_NEGOTIATE status, and sets the
|
** The handler removes the HS_NEGOTIATE status, and sets the
|
||||||
** negotiated value to the default (async / nowide).
|
** negotiated value to the default (async / nowide).
|
||||||
|
@ -6021,7 +6025,7 @@ void ncr_int_sir (ncb_p np)
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** else remove the interrupt.
|
** else remove the interupt.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
printf ("%s: queue empty.\n", ncr_name (np));
|
printf ("%s: queue empty.\n", ncr_name (np));
|
||||||
|
@ -6344,7 +6348,7 @@ static int ncr_scatter
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** insert extra break points at a distance of chunk.
|
** insert extra break points at a distance of chunk.
|
||||||
** We try to reduce the number of interrupts due to
|
** We try to reduce the number of interupts due to
|
||||||
** unexpected phase changes due to disconnects.
|
** unexpected phase changes due to disconnects.
|
||||||
** A typical harddisk may disconnect before ANY block.
|
** A typical harddisk may disconnect before ANY block.
|
||||||
** If we want to avoid unexpected phase changes at all
|
** If we want to avoid unexpected phase changes at all
|
||||||
|
@ -6427,7 +6431,7 @@ static int ncr_scatter
|
||||||
**
|
**
|
||||||
** Test the pci bus snoop logic :-(
|
** Test the pci bus snoop logic :-(
|
||||||
**
|
**
|
||||||
** Has to be called with interrupts disabled.
|
** Has to be called with disabled interupts.
|
||||||
**
|
**
|
||||||
**
|
**
|
||||||
**==========================================================
|
**==========================================================
|
||||||
|
|
Loading…
Reference in a new issue