Commit f4e7ddb6 authored by Guennadi Liakhovetski's avatar Guennadi Liakhovetski Committed by James Bottomley

[PATCH] kill obsolete typedefs and wrappers from tmscsim

Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent f51608c8
......@@ -6,7 +6,7 @@
***********************************************************************/
/* $Id: scsiiom.c,v 2.55.2.17 2000/12/20 00:39:37 garloff Exp $ */
static void __inline__
dc390_freetag (PDCB pDCB, PSRB pSRB)
dc390_freetag (struct dc390_dcb* pDCB, struct dc390_srb* pSRB)
{
if (pSRB->TagNumber < 255) {
pDCB->TagMask &= ~(1 << pSRB->TagNumber); /* free tag mask */
......@@ -15,10 +15,10 @@ dc390_freetag (PDCB pDCB, PSRB pSRB)
}
static UCHAR
dc390_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB )
static u8
dc390_StartSCSI( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB )
{
UCHAR cmd; UCHAR disc_allowed, try_sync_nego;
u8 cmd; u8 disc_allowed, try_sync_nego;
pSRB->ScsiPhase = SCSI_NOP0;
......@@ -69,7 +69,7 @@ dc390_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB )
/* Change 99/05/31: Don't use tags when not disconnecting (BUSY) */
if ((pDCB->SyncMode & EN_TAG_QUEUEING) && disc_allowed)
{
UCHAR tag_no = 0;
u8 tag_no = 0;
while ((1 << tag_no) & pDCB->TagMask) tag_no++;
if (tag_no >= sizeof (pDCB->TagMask)*8 || tag_no >= pDCB->MaxCommand) {
printk (KERN_WARNING "DC390: Out of tags for Dev. %02x %02x\n", pDCB->TargetID, pDCB->TargetLUN);
......@@ -92,7 +92,7 @@ dc390_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB )
if (try_sync_nego)
{
UCHAR Sync_Off = pDCB->SyncOffset;
u8 Sync_Off = pDCB->SyncOffset;
DEBUG0(printk (KERN_INFO "DC390: NEW Sync Nego code triggered (%i %i)\n", pDCB->TargetID, pDCB->TargetLUN));
pSRB->MsgOutBuf[0] = EXTENDED_MESSAGE;
pSRB->MsgOutBuf[1] = 3;
......@@ -121,8 +121,8 @@ dc390_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB )
}
else /* write cmnd to bus */
{
PUCHAR ptr; UCHAR i;
ptr = (PUCHAR) pSRB->pcmd->cmnd;
u8 *ptr; u8 i;
ptr = (u8 *) pSRB->pcmd->cmnd;
for (i=0; i<pSRB->pcmd->cmd_len; i++)
DC390_write8 (ScsiFifo, *(ptr++));
}
......@@ -154,18 +154,17 @@ dc390_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB )
#if DMA_INT
/* This is similar to AM53C974.c ... */
static UCHAR
dc390_dma_intr (PACB pACB)
static u8
dc390_dma_intr (struct dc390_acb* pACB)
{
PSRB pSRB;
UCHAR dstate;
DEBUG0(USHORT pstate;PDEVDECL1);
struct dc390_srb* pSRB;
u8 dstate;
DEBUG0(u16 pstate; struct pci_dev *pdev = pACB->pdev);
DEBUG0(PDEVSET1);
DEBUG0(PCI_READ_CONFIG_WORD (PDEV, PCI_STATUS, &pstate));
DEBUG0(pci_read_config_word(pdev, PCI_STATUS, &pstate));
DEBUG0(if (pstate & (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY))\
{ printk(KERN_WARNING "DC390: PCI state = %04x!\n", pstate); \
PCI_WRITE_CONFIG_WORD (PDEV, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY));});
pci_write_config_word(pdev, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY));});
dstate = DC390_read8 (DMA_Status);
......@@ -179,7 +178,7 @@ dc390_dma_intr (PACB pACB)
}
if (dstate & DMA_XFER_DONE)
{
UINT residual, xferCnt; int ctr = 6000000;
u32 residual, xferCnt; int ctr = 6000000;
if (! (DC390_read8 (DMA_Cmd) & READ_DIRECTION))
{
do
......@@ -217,18 +216,18 @@ dc390_dma_intr (PACB pACB)
static irqreturn_t __inline__
DC390_Interrupt( int irq, void *dev_id, struct pt_regs *regs)
{
PACB pACB, pACB2;
PDCB pDCB;
PSRB pSRB;
UCHAR sstatus=0;
UCHAR phase;
void (*stateV)( PACB, PSRB, PUCHAR );
UCHAR istate, istatus;
struct dc390_acb *pACB, *pACB2;
struct dc390_dcb *pDCB;
struct dc390_srb *pSRB;
u8 sstatus=0;
u8 phase;
void (*stateV)( struct dc390_acb*, struct dc390_srb*, u8 *);
u8 istate, istatus;
#if DMA_INT
UCHAR dstatus;
u8 dstatus;
#endif
pACB = (PACB)dev_id;
pACB = (struct dc390_acb*)dev_id;
for (pACB2 = dc390_pACB_start; (pACB2 && pACB2 != pACB); pACB2 = pACB2->pNextACB);
if (!pACB2)
{
......@@ -323,7 +322,7 @@ DC390_Interrupt( int irq, void *dev_id, struct pt_regs *regs)
( *stateV )( pACB, pSRB, &sstatus );
pSRB->ScsiPhase = sstatus & 7;
phase = (UCHAR) sstatus & 7;
phase = (u8) sstatus & 7;
DEBUG1(printk (KERN_INFO "DC390: [%i]%s(1) (%02x)\n", phase, dc390_p1_str[phase], sstatus));
stateV = (void *) dc390_phase1[phase];
( *stateV )( pACB, pSRB, &sstatus );
......@@ -345,12 +344,12 @@ static irqreturn_t do_DC390_Interrupt( int irq, void *dev_id, struct pt_regs *re
}
static void
dc390_DataOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_DataOut_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
UCHAR sstatus;
PSGL psgl;
UINT ResidCnt, xferCnt;
UCHAR dstate = 0;
u8 sstatus;
struct scatterlist *psgl;
u32 ResidCnt, xferCnt;
u8 dstate = 0;
sstatus = *psstatus;
......@@ -390,10 +389,10 @@ dc390_DataOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
}
else
{
ResidCnt = (UINT) DC390_read8 (Current_Fifo) & 0x1f;
ResidCnt |= (UINT) DC390_read8 (CtcReg_High) << 16;
ResidCnt |= (UINT) DC390_read8 (CtcReg_Mid) << 8;
ResidCnt += (UINT) DC390_read8 (CtcReg_Low);
ResidCnt = (u32) DC390_read8 (Current_Fifo) & 0x1f;
ResidCnt |= (u32) DC390_read8 (CtcReg_High) << 16;
ResidCnt |= (u32) DC390_read8 (CtcReg_Mid) << 8;
ResidCnt += (u32) DC390_read8 (CtcReg_Low);
xferCnt = pSRB->SGToBeXferLen - ResidCnt;
pSRB->SGBusAddr += xferCnt;
......@@ -409,13 +408,13 @@ dc390_DataOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
}
static void
dc390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_DataIn_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
UCHAR sstatus, residual, bval;
PSGL psgl;
UINT ResidCnt, i;
ULONG xferCnt;
PUCHAR ptr;
u8 sstatus, residual, bval;
struct scatterlist *psgl;
u32 ResidCnt, i;
unsigned long xferCnt;
u8 *ptr;
sstatus = *psstatus;
......@@ -443,9 +442,9 @@ dc390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
}
dc390_laststatus &= ~0xff000000;
dc390_laststatus |= dstate << 24;
DEBUG1(ResidCnt = ((ULONG) DC390_read8 (CtcReg_High) << 16) \
+ ((ULONG) DC390_read8 (CtcReg_Mid) << 8) \
+ ((ULONG) DC390_read8 (CtcReg_Low)));
DEBUG1(ResidCnt = ((unsigned long) DC390_read8 (CtcReg_High) << 16) \
+ ((unsigned long) DC390_read8 (CtcReg_Mid) << 8) \
+ ((unsigned long) DC390_read8 (CtcReg_Low)));
DEBUG1(printk (KERN_DEBUG "Count_2_Zero (ResidCnt=%i,ToBeXfer=%li),", ResidCnt, pSRB->SGToBeXferLen));
DC390_write8 (DMA_Cmd, READ_DIRECTION+DMA_IDLE_CMD); /* | DMA_INT */
......@@ -501,11 +500,11 @@ dc390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_laststatus &= ~0xff000000; dc390_laststatus |= bval << 24;
DEBUG1(printk (KERN_DEBUG "Blast: Read %i times DMA_Status %02x", 0xa000-i, bval));
ResidCnt = (UINT) DC390_read8 (CtcReg_High);
ResidCnt = (u32) DC390_read8 (CtcReg_High);
ResidCnt <<= 8;
ResidCnt |= (UINT) DC390_read8 (CtcReg_Mid);
ResidCnt |= (u32) DC390_read8 (CtcReg_Mid);
ResidCnt <<= 8;
ResidCnt |= (UINT) DC390_read8 (CtcReg_Low);
ResidCnt |= (u32) DC390_read8 (CtcReg_Low);
xferCnt = pSRB->SGToBeXferLen - ResidCnt;
pSRB->SGBusAddr += xferCnt;
......@@ -515,7 +514,7 @@ dc390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
if( residual )
{
bval = DC390_read8 (ScsiFifo); /* get one residual byte */
ptr = (PUCHAR) bus_to_virt( pSRB->SGBusAddr );
ptr = (u8 *) bus_to_virt( pSRB->SGBusAddr );
*ptr = bval;
pSRB->SGBusAddr++; xferCnt++;
pSRB->TotalXferredLen++;
......@@ -534,12 +533,12 @@ dc390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
}
static void
dc390_Command_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_Command_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
}
static void
dc390_Status_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_Status_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
pSRB->TargetStatus = DC390_read8 (ScsiFifo);
......@@ -552,7 +551,7 @@ dc390_Status_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
}
static void
dc390_MsgOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_MsgOut_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
if( pSRB->SRBState & (SRB_UNEXPECT_RESEL+SRB_ABORT_SENT) )
*psstatus = SCSI_NOP0;
......@@ -561,7 +560,7 @@ dc390_MsgOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
static void __inline__
dc390_reprog (PACB pACB, PDCB pDCB)
dc390_reprog (struct dc390_acb* pACB, struct dc390_dcb* pDCB)
{
DC390_write8 (Sync_Period, pDCB->SyncPeriod);
DC390_write8 (Sync_Offset, pDCB->SyncOffset);
......@@ -573,7 +572,7 @@ dc390_reprog (PACB pACB, PDCB pDCB)
#ifdef DC390_DEBUG0
static void
dc390_printMsg (UCHAR *MsgBuf, UCHAR len)
dc390_printMsg (u8 *MsgBuf, u8 len)
{
int i;
printk (" %02x", MsgBuf[0]);
......@@ -587,7 +586,7 @@ dc390_printMsg (UCHAR *MsgBuf, UCHAR len)
/* reject_msg */
static void __inline__
dc390_MsgIn_reject (PACB pACB, PSRB pSRB)
dc390_MsgIn_reject (struct dc390_acb* pACB, struct dc390_srb* pSRB)
{
pSRB->MsgOutBuf[0] = MESSAGE_REJECT;
pSRB->MsgCnt = 1; DC390_ENABLE_MSGOUT;
......@@ -596,18 +595,18 @@ dc390_MsgIn_reject (PACB pACB, PSRB pSRB)
/* abort command */
static void __inline__
dc390_EnableMsgOut_Abort ( PACB pACB, PSRB pSRB )
dc390_EnableMsgOut_Abort ( struct dc390_acb* pACB, struct dc390_srb* pSRB )
{
pSRB->MsgOutBuf[0] = ABORT;
pSRB->MsgCnt = 1; DC390_ENABLE_MSGOUT;
pSRB->pSRBDCB->DCBFlag &= ~ABORT_DEV_;
}
static PSRB
dc390_MsgIn_QTag (PACB pACB, PDCB pDCB, UCHAR tag)
static struct dc390_srb*
dc390_MsgIn_QTag (struct dc390_acb* pACB, struct dc390_dcb* pDCB, u8 tag)
{
PSRB lastSRB = pDCB->pGoingLast;
PSRB pSRB = pDCB->pGoingSRB;
struct dc390_srb* lastSRB = pDCB->pGoingLast;
struct dc390_srb* pSRB = pDCB->pGoingSRB;
if (pSRB)
{
......@@ -645,9 +644,9 @@ dc390_MsgIn_QTag (PACB pACB, PDCB pDCB, UCHAR tag)
/* set async transfer mode */
static void
dc390_MsgIn_set_async (PACB pACB, PSRB pSRB)
dc390_MsgIn_set_async (struct dc390_acb* pACB, struct dc390_srb* pSRB)
{
PDCB pDCB = pSRB->pSRBDCB;
struct dc390_dcb* pDCB = pSRB->pSRBDCB;
if (!(pSRB->SRBState & DO_SYNC_NEGO))
printk (KERN_INFO "DC390: Target %i initiates Non-Sync?\n", pDCB->TargetID);
pSRB->SRBState &= ~DO_SYNC_NEGO;
......@@ -663,13 +662,13 @@ dc390_MsgIn_set_async (PACB pACB, PSRB pSRB)
/* set sync transfer mode */
static void
dc390_MsgIn_set_sync (PACB pACB, PSRB pSRB)
dc390_MsgIn_set_sync (struct dc390_acb* pACB, struct dc390_srb* pSRB)
{
UCHAR bval;
USHORT wval, wval1;
PDCB pDCB = pSRB->pSRBDCB;
UCHAR oldsyncperiod = pDCB->SyncPeriod;
UCHAR oldsyncoffset = pDCB->SyncOffset;
u8 bval;
u16 wval, wval1;
struct dc390_dcb* pDCB = pSRB->pSRBDCB;
u8 oldsyncperiod = pDCB->SyncPeriod;
u8 oldsyncoffset = pDCB->SyncOffset;
if (!(pSRB->SRBState & DO_SYNC_NEGO))
{
......@@ -702,7 +701,7 @@ dc390_MsgIn_set_sync (PACB pACB, PSRB pSRB)
pDCB->SyncOffset |= pSRB->MsgInBuf[4];
pDCB->NegoPeriod = pSRB->MsgInBuf[3];
wval = (USHORT) pSRB->MsgInBuf[3];
wval = (u16) pSRB->MsgInBuf[3];
wval = wval << 2; wval -= 3; wval1 = wval / 25; /* compute speed */
if( (wval1 * 25) != wval) wval1++;
bval = FAST_CLK+FAST_SCSI; /* fast clock / fast scsi */
......@@ -722,7 +721,7 @@ dc390_MsgIn_set_sync (PACB pACB, PSRB pSRB)
}
pDCB->CtrlR3 = bval;
pDCB->SyncPeriod = (UCHAR)wval1;
pDCB->SyncPeriod = (u8)wval1;
if ((oldsyncperiod != wval1 || oldsyncoffset != pDCB->SyncOffset) && pDCB->TargetLUN == 0)
{
......@@ -738,20 +737,20 @@ dc390_MsgIn_set_sync (PACB pACB, PSRB pSRB)
/* handle RESTORE_PTR */
/* I presume, this command is already mapped, so, have to remap. */
static void
dc390_restore_ptr (PACB pACB, PSRB pSRB)
dc390_restore_ptr (struct dc390_acb* pACB, struct dc390_srb* pSRB)
{
Scsi_Cmnd* pcmd = pSRB->pcmd;
PSGL psgl;
struct scsi_cmnd *pcmd = pSRB->pcmd;
struct scatterlist *psgl;
pSRB->TotalXferredLen = 0;
pSRB->SGIndex = 0;
if (pcmd->use_sg) {
pSRB->pSegmentList = (PSGL) pcmd->request_buffer;
pSRB->pSegmentList = (struct scatterlist *)pcmd->request_buffer;
psgl = pSRB->pSegmentList;
//dc390_pci_sync(pSRB);
while (pSRB->TotalXferredLen + (ULONG) sg_dma_len(psgl) < pSRB->Saved_Ptr)
while (pSRB->TotalXferredLen + (unsigned long) sg_dma_len(psgl) < pSRB->Saved_Ptr)
{
pSRB->TotalXferredLen += (ULONG) sg_dma_len(psgl);
pSRB->TotalXferredLen += (unsigned long) sg_dma_len(psgl);
pSRB->SGIndex++;
if( pSRB->SGIndex < pSRB->SGcount )
{
......@@ -773,7 +772,7 @@ dc390_restore_ptr (PACB pACB, PSRB pSRB)
sg_dma_len(&pSRB->Segmentx) = pcmd->request_bufflen - pSRB->Saved_Ptr;
pSRB->SGcount = 1;
pSRB->pSegmentList = (PSGL) &pSRB->Segmentx;
pSRB->pSegmentList = (struct scatterlist *) &pSRB->Segmentx;
} else {
pSRB->SGcount = 0;
printk (KERN_INFO "DC390: RESTORE_PTR message for Transfer without Scatter-Gather ??\n");
......@@ -792,8 +791,8 @@ dc390_restore_ptr (PACB pACB, PSRB pSRB)
/* The old implementation was correct. Sigh! */
/* Check if the message is complete */
static UCHAR __inline__
dc390_MsgIn_complete (UCHAR *msgbuf, UINT len)
static u8 __inline__
dc390_MsgIn_complete (u8 *msgbuf, u32 len)
{
if (*msgbuf == EXTENDED_MESSAGE)
{
......@@ -809,9 +808,9 @@ dc390_MsgIn_complete (UCHAR *msgbuf, UINT len)
/* read and eval received messages */
static void
dc390_MsgIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_MsgIn_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
PDCB pDCB = pACB->pActiveDCB;
struct dc390_dcb* pDCB = pACB->pActiveDCB;
/* Read the msg */
......@@ -856,7 +855,7 @@ dc390_MsgIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
// nothing has to be done
case COMMAND_COMPLETE: break;
// SAVE POINTER may be ignored as we have the PSRB associated with the
// SAVE POINTER may be ignored as we have the struct dc390_srb* associated with the
// scsi command. Thanks, Gerard, for pointing it out.
case SAVE_POINTERS:
pSRB->Saved_Ptr = pSRB->TotalXferredLen;
......@@ -883,11 +882,11 @@ dc390_MsgIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
static void
dc390_DataIO_Comm( PACB pACB, PSRB pSRB, UCHAR ioDir)
dc390_DataIO_Comm( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 ioDir)
{
PSGL psgl;
ULONG lval;
PDCB pDCB = pACB->pActiveDCB;
struct scatterlist *psgl;
unsigned long lval;
struct dc390_dcb* pDCB = pACB->pActiveDCB;
if (pSRB == pACB->pTmpSRB)
{
......@@ -913,11 +912,11 @@ dc390_DataIO_Comm( PACB pACB, PSRB pSRB, UCHAR ioDir)
}
lval = pSRB->SGToBeXferLen;
DEBUG1(printk (KERN_DEBUG " DC390: Start transfer: %li bytes (address %08lx)\n", lval, pSRB->SGBusAddr));
DC390_write8 (CtcReg_Low, (UCHAR) lval);
DC390_write8 (CtcReg_Low, (u8) lval);
lval >>= 8;
DC390_write8 (CtcReg_Mid, (UCHAR) lval);
DC390_write8 (CtcReg_Mid, (u8) lval);
lval >>= 8;
DC390_write8 (CtcReg_High, (UCHAR) lval);
DC390_write8 (CtcReg_High, (u8) lval);
DC390_write32 (DMA_XferCnt, pSRB->SGToBeXferLen);
DC390_write32 (DMA_XferAddr, pSRB->SGBusAddr);
......@@ -956,36 +955,36 @@ dc390_DataIO_Comm( PACB pACB, PSRB pSRB, UCHAR ioDir)
static void
dc390_DataOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_DataOutPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
dc390_DataIO_Comm (pACB, pSRB, WRITE_DIRECTION);
}
static void
dc390_DataInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_DataInPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
dc390_DataIO_Comm (pACB, pSRB, READ_DIRECTION);
}
static void
dc390_CommandPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_CommandPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
PDCB pDCB;
UCHAR i, cnt;
PUCHAR ptr;
struct dc390_dcb* pDCB;
u8 i, cnt;
u8 *ptr;
DC390_write8 (ScsiCmd, RESET_ATN_CMD);
DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
if( !(pSRB->SRBFlag & AUTO_REQSENSE) )
{
cnt = (UCHAR) pSRB->pcmd->cmd_len;
ptr = (PUCHAR) pSRB->pcmd->cmnd;
cnt = (u8) pSRB->pcmd->cmd_len;
ptr = (u8 *) pSRB->pcmd->cmnd;
for(i=0; i < cnt; i++)
DC390_write8 (ScsiFifo, *(ptr++));
}
else
{
UCHAR bval = 0;
u8 bval = 0;
DC390_write8 (ScsiFifo, REQUEST_SENSE);
pDCB = pACB->pActiveDCB;
DC390_write8 (ScsiFifo, pDCB->TargetLUN << 5);
......@@ -1000,7 +999,7 @@ dc390_CommandPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
}
static void
dc390_StatusPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_StatusPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
pSRB->SRBState = SRB_STATUS;
......@@ -1009,11 +1008,11 @@ dc390_StatusPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
}
static void
dc390_MsgOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_MsgOutPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
UCHAR bval, i, cnt;
PUCHAR ptr;
PDCB pDCB;
u8 bval, i, cnt;
u8 *ptr;
struct dc390_dcb* pDCB;
DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
pDCB = pACB->pActiveDCB;
......@@ -1022,7 +1021,7 @@ dc390_MsgOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
cnt = pSRB->MsgCnt;
if( cnt )
{
ptr = (PUCHAR) pSRB->MsgOutBuf;
ptr = (u8 *) pSRB->MsgOutBuf;
for(i=0; i < cnt; i++)
DC390_write8 (ScsiFifo, *(ptr++));
pSRB->MsgCnt = 0;
......@@ -1062,7 +1061,7 @@ dc390_MsgOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
}
static void
dc390_MsgInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_MsgInPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
if( !(pSRB->SRBState & SRB_MSGIN) )
......@@ -1075,21 +1074,21 @@ dc390_MsgInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
}
static void
dc390_Nop_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_Nop_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
}
static void
dc390_Nop_1( PACB pACB, PSRB pSRB, PUCHAR psstatus)
dc390_Nop_1( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus)
{
}
static void
dc390_SetXferRate( PACB pACB, PDCB pDCB )
dc390_SetXferRate( struct dc390_acb* pACB, struct dc390_dcb* pDCB )
{
UCHAR bval, i, cnt;
PDCB ptr;
u8 bval, i, cnt;
struct dc390_dcb* ptr;
if( !(pDCB->TargetLUN) )
{
......@@ -1117,11 +1116,11 @@ dc390_SetXferRate( PACB pACB, PDCB pDCB )
static void
dc390_Disconnect( PACB pACB )
dc390_Disconnect( struct dc390_acb* pACB )
{
PDCB pDCB;
PSRB pSRB, psrb;
UCHAR i, cnt;
struct dc390_dcb *pDCB;
struct dc390_srb *pSRB, *psrb;
u8 i, cnt;
DEBUG0(printk(KERN_INFO "DISC,"));
......@@ -1198,11 +1197,11 @@ dc390_Disconnect( PACB pACB )
static void
dc390_Reselect( PACB pACB )
dc390_Reselect( struct dc390_acb* pACB )
{
PDCB pDCB;
PSRB pSRB;
UCHAR id, lun;
struct dc390_dcb* pDCB;
struct dc390_srb* pSRB;
u8 id, lun;
DEBUG0(printk(KERN_INFO "RSEL,"));
pACB->Connected = 1;
......@@ -1283,10 +1282,10 @@ dc390_Reselect( PACB pACB )
DC390_write8 (ScsiCmd, MSG_ACCEPTED_CMD); /* ;to release the /ACK signal */
}
static UCHAR __inline__
static u8 __inline__
dc390_tagq_blacklist (char* name)
{
UCHAR i;
u8 i;
for(i=0; i<BADDEVCNT; i++)
if (memcmp (name, dc390_baddevname1[i], 28) == 0)
return 1;
......@@ -1295,7 +1294,7 @@ dc390_tagq_blacklist (char* name)
static void
dc390_disc_tagq_set (PDCB pDCB, PSCSI_INQDATA ptr)
dc390_disc_tagq_set (struct dc390_dcb* pDCB, PSCSI_INQDATA ptr)
{
/* Check for SCSI format (ANSI and Response data format) */
if ( (ptr->Vers & 0x07) >= 2 || (ptr->RDF & 0x0F) == 2 )
......@@ -1317,9 +1316,9 @@ dc390_disc_tagq_set (PDCB pDCB, PSCSI_INQDATA ptr)
static void
dc390_add_dev (PACB pACB, PDCB pDCB, PSCSI_INQDATA ptr)
dc390_add_dev (struct dc390_acb* pACB, struct dc390_dcb* pDCB, PSCSI_INQDATA ptr)
{
UCHAR bval1 = ptr->DevType & SCSI_DEVTYPE;
u8 bval1 = ptr->DevType & SCSI_DEVTYPE;
pDCB->DevType = bval1;
/* if (bval1 == TYPE_DISK || bval1 == TYPE_MOD) */
dc390_disc_tagq_set (pDCB, ptr);
......@@ -1327,22 +1326,24 @@ dc390_add_dev (PACB pACB, PDCB pDCB, PSCSI_INQDATA ptr)
static void
dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB )
dc390_SRBdone( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB )
{
UCHAR bval, status, i;
PSCSICMD pcmd;
u8 bval, status, i;
struct scsi_cmnd *pcmd;
PSCSI_INQDATA ptr;
PSGL ptr2;
ULONG swlval;
struct scatterlist *ptr2;
unsigned long swlval;
pcmd = pSRB->pcmd;
/* KG: Moved pci_unmap here */
dc390_pci_unmap(pSRB);
status = pSRB->TargetStatus;
if (pcmd->use_sg) {
ptr2 = (struct scatterlist *) (pcmd->request_buffer);
ptr = (PSCSI_INQDATA) (page_address(ptr2->page) + ptr2->offset);
} else
ptr = (PSCSI_INQDATA) (pcmd->request_buffer);
if( pcmd->use_sg )
ptr = (PSCSI_INQDATA) (page_address(((PSGL) ptr)->page) + ((PSGL) ptr)->offset);
DEBUG0(printk (" SRBdone (%02x,%08x), SRB %p, pid %li\n", status, pcmd->result,\
pSRB, pcmd->pid));
......@@ -1379,7 +1380,7 @@ dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB )
}
if(pSRB->RetryCnt == 0)
{
//(UINT)(pSRB->pcmd->cmnd[0]) = pSRB->Segment0[0];
//(u32)(pSRB->pcmd->cmnd[0]) = pSRB->Segment0[0];
pSRB->TotalXferredLen = pSRB->SavedTotXLen;
if( (pSRB->TotalXferredLen) &&
(pSRB->TotalXferredLen >= pcmd->underflow) )
......@@ -1387,7 +1388,7 @@ dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB )
else
pcmd->result = MK_RES_LNX(DRIVER_SENSE,DID_OK,0,CHECK_CONDITION);
REMOVABLEDEBUG(printk(KERN_INFO "Cmd=%02x,Result=%08x,XferL=%08x\n",pSRB->pcmd->cmnd[0],\
(UINT) pcmd->result, (UINT) pSRB->TotalXferredLen));
(u32) pcmd->result, (u32) pSRB->TotalXferredLen));
goto ckc_e;
}
else /* Retry */
......@@ -1395,19 +1396,17 @@ dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB )
pSRB->RetryCnt--;
pSRB->AdaptStatus = 0;
pSRB->TargetStatus = 0;
//*((PUINT) &(pSRB->CmdBlock[0])) = pSRB->Segment0[0];
//*((PUINT) &(pSRB->CmdBlock[4])) = pSRB->Segment0[1];
/* Don't retry on TEST_UNIT_READY */
if( pSRB->pcmd->cmnd[0] == TEST_UNIT_READY /* || pSRB->pcmd->cmnd[0] == START_STOP */)
{
pcmd->result = MK_RES_LNX(DRIVER_SENSE,DID_OK,0,CHECK_CONDITION);
REMOVABLEDEBUG(printk(KERN_INFO "Cmd=%02x, Result=%08x, XferL=%08x\n",pSRB->pcmd->cmnd[0],\
(UINT) pcmd->result, (UINT) pSRB->TotalXferredLen));
(u32) pcmd->result, (u32) pSRB->TotalXferredLen));
goto ckc_e;
}
SET_RES_DRV(pcmd->result,DRIVER_SENSE);
pcmd->use_sg = pSRB->SavedSGCount;
//pSRB->ScsiCmdLen = (UCHAR) (pSRB->Segment1[0] >> 8);
//pSRB->ScsiCmdLen = (u8) (pSRB->Segment1[0] >> 8);
DEBUG0 (printk ("DC390: RETRY pid %li (%02x), target %02i-%02i\n", pcmd->pid, pcmd->cmnd[0], pcmd->device->id, pcmd->device->lun));
pSRB->SGIndex = 0;
pSRB->TotalXferredLen = 0;
......@@ -1437,14 +1436,14 @@ dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB )
ptr2++;
}
REMOVABLEDEBUG(printk(KERN_INFO "XferredLen=%08x,NotXferLen=%08x\n",\
(UINT) pSRB->TotalXferredLen, (UINT) swlval));
(u32) pSRB->TotalXferredLen, (u32) swlval));
}
dc390_RequestSense( pACB, pDCB, pSRB );
return;
}
else if( status_byte(status) == QUEUE_FULL )
{
bval = (UCHAR) pDCB->GoingSRBCnt;
bval = (u8) pDCB->GoingSRBCnt;
bval--;
pDCB->MaxCommand = bval;
dc390_freetag (pDCB, pSRB);
......@@ -1569,12 +1568,12 @@ dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB )
/* Remove all SRBs from Going list and inform midlevel */
static void
dc390_DoingSRB_Done( PACB pACB, PSCSICMD cmd )
dc390_DoingSRB_Done(struct dc390_acb* pACB, struct scsi_cmnd *cmd)
{
PDCB pDCB, pdcb;
PSRB psrb, psrb2;
UCHAR i;
PSCSICMD pcmd;
struct dc390_dcb *pDCB, *pdcb;
struct dc390_srb *psrb, *psrb2;
u8 i;
struct scsi_cmnd *pcmd;
pDCB = pACB->pLinkDCB;
pdcb = pDCB;
......@@ -1610,7 +1609,7 @@ dc390_DoingSRB_Done( PACB pACB, PSCSICMD cmd )
static void
dc390_ResetSCSIBus( PACB pACB )
dc390_ResetSCSIBus( struct dc390_acb* pACB )
{
//DC390_write8 (ScsiCmd, RST_DEVICE_CMD);
//udelay (250);
......@@ -1625,7 +1624,7 @@ dc390_ResetSCSIBus( PACB pACB )
}
static void
dc390_ScsiRstDetect( PACB pACB )
dc390_ScsiRstDetect( struct dc390_acb* pACB )
{
printk ("DC390: Rst_Detect: laststat = %08x\n", dc390_laststatus);
//DEBUG0(printk(KERN_INFO "RST_DETECT,"));
......@@ -1658,9 +1657,9 @@ dc390_ScsiRstDetect( PACB pACB )
static void __inline__
dc390_RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB )
dc390_RequestSense( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB )
{
PSCSICMD pcmd;
struct scsi_cmnd *pcmd;
pcmd = pSRB->pcmd;
......@@ -1668,9 +1667,9 @@ dc390_RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB )
pcmd->cmnd[0], pDCB->TargetID, pDCB->TargetLUN));
pSRB->SRBFlag |= AUTO_REQSENSE;
//pSRB->Segment0[0] = (UINT) pSRB->CmdBlock[0];
//pSRB->Segment0[1] = (UINT) pSRB->CmdBlock[4];
//pSRB->Segment1[0] = ((UINT)(pcmd->cmd_len) << 8) + pSRB->SGcount;
//pSRB->Segment0[0] = (u32) pSRB->CmdBlock[0];
//pSRB->Segment0[1] = (u32) pSRB->CmdBlock[4];
//pSRB->Segment1[0] = ((u32)(pcmd->cmd_len) << 8) + pSRB->SGcount;
//pSRB->Segment1[1] = pSRB->TotalXferredLen;
pSRB->SavedSGCount = pcmd->use_sg;
pSRB->SavedTotXLen = pSRB->TotalXferredLen;
......@@ -1683,8 +1682,8 @@ dc390_RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB )
//pSRB->CmdBlock[0] = REQUEST_SENSE;
//pSRB->CmdBlock[1] = pDCB->TargetLUN << 5;
//(USHORT) pSRB->CmdBlock[2] = 0;
//(USHORT) pSRB->CmdBlock[4] = sizeof(pcmd->sense_buffer);
//(u16) pSRB->CmdBlock[2] = 0;
//(u16) pSRB->CmdBlock[4] = sizeof(pcmd->sense_buffer);
//pSRB->ScsiCmdLen = 6;
pSRB->TotalXferredLen = 0;
......@@ -1698,7 +1697,7 @@ dc390_RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB )
static void __inline__
dc390_InvalidCmd( PACB pACB )
dc390_InvalidCmd( struct dc390_acb* pACB )
{
if( pACB->pActiveDCB->pActiveSRB->SRBState & (SRB_START_+SRB_MSGOUT) )
DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
......
......@@ -221,11 +221,8 @@
#endif
#define DCBDEBUG1(x) C_NOP
/* Includes */
#include <linux/config.h>
#include <linux/module.h>
#include <asm/dma.h>
#include <asm/io.h>
#include <asm/system.h>
#include <linux/delay.h>
#include <linux/signal.h>
#include <linux/sched.h>
......@@ -235,44 +232,30 @@
#include <linux/pci.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
#include <linux/ctype.h>
#include <linux/mm.h>
#include <linux/config.h>
#include <linux/version.h>
#include <linux/blkdev.h>
#include <linux/timer.h>
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/spinlock.h>
#include <asm/io.h>
#if 0
#include <scsi/scsi.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
#else
#include "scsi.h"
#endif
#include <scsi/scsi_host.h>
#include <linux/stat.h>
#include <scsi/scsicam.h>
#include "dc390.h"
#define PCI_DEVICE_ID_AMD53C974 PCI_DEVICE_ID_AMD_SCSI
/* Locking */
/* Note: Starting from 2.1.9x, the mid-level scsi code issues a
* spinlock_irqsave (&io_request_lock) before calling the driver's
* routines, so we don't need to lock, except in the IRQ handler.
* The policy 3, let the midlevel scsi code do the io_request_locks
* and us locking on a driver specific lock, shouldn't hurt anybody; it
* just causes a minor performance degradation for setting the locks.
*/
/* spinlock things
* level 3: lock on both adapter specific locks and (global) io_request_lock
* level 2: lock on adapter specific locks only
* level 1: rely on the locking of the mid level code (io_request_lock)
* undef : traditional save_flags; cli; restore_flags;
*/
#include <linux/init.h>
#include <linux/spinlock.h>
static struct pci_device_id tmscsim_pci_tbl[] = {
static struct pci_device_id tmscsim_pci_tbl[] = {
{
.vendor = PCI_VENDOR_ID_AMD,
.device = PCI_DEVICE_ID_AMD53C974,
......@@ -283,62 +266,47 @@ static struct pci_device_id tmscsim_pci_tbl[] = {
};
MODULE_DEVICE_TABLE(pci, tmscsim_pci_tbl);
/* These macros are used for uniform access to 2.0.x and 2.1.x PCI config space*/
#define PDEV pdev
#define PDEVDECL struct pci_dev *pdev
#define PDEVDECL0 struct pci_dev *pdev = NULL
#define PDEVDECL1 struct pci_dev *pdev
#define PDEVSET pACB->pdev=pdev
#define PDEVSET1 pdev=pACB->pdev
#define PCI_WRITE_CONFIG_BYTE(pd, rv, bv) pci_write_config_byte (pd, rv, bv)
#define PCI_READ_CONFIG_BYTE(pd, rv, bv) pci_read_config_byte (pd, rv, bv)
#define PCI_WRITE_CONFIG_WORD(pd, rv, bv) pci_write_config_word (pd, rv, bv)
#define PCI_READ_CONFIG_WORD(pd, rv, bv) pci_read_config_word (pd, rv, bv)
#define PCI_PRESENT (1)
#define PCI_GET_IO_AND_IRQ do{io_port = pci_resource_start (pdev, 0); irq = pdev->irq;} while(0)
#include "tmscsim.h"
static UCHAR dc390_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB );
static void dc390_DataOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_Command_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_Status_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_MsgOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_MsgIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_DataOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_DataInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_CommandPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_StatusPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_MsgOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_MsgInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_Nop_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_Nop_1( PACB pACB, PSRB pSRB, PUCHAR psstatus);
static void dc390_SetXferRate( PACB pACB, PDCB pDCB );
static void dc390_Disconnect( PACB pACB );
static void dc390_Reselect( PACB pACB );
static void dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB );
static void dc390_DoingSRB_Done( PACB pACB, PSCSICMD cmd );
static void dc390_ScsiRstDetect( PACB pACB );
static void dc390_ResetSCSIBus( PACB pACB );
static void __inline__ dc390_RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB );
static void __inline__ dc390_InvalidCmd( PACB pACB );
static void __inline__ dc390_EnableMsgOut_Abort (PACB, PSRB);
static u8 dc390_StartSCSI( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB );
static void dc390_DataOut_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_DataIn_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_Command_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_Status_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_MsgOut_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_MsgIn_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_DataOutPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_DataInPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_CommandPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_StatusPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_MsgOutPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_MsgInPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_Nop_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_Nop_1( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus);
static void dc390_SetXferRate( struct dc390_acb* pACB, struct dc390_dcb* pDCB );
static void dc390_Disconnect( struct dc390_acb* pACB );
static void dc390_Reselect( struct dc390_acb* pACB );
static void dc390_SRBdone( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB );
static void dc390_DoingSRB_Done( struct dc390_acb* pACB, struct scsi_cmnd * cmd);
static void dc390_ScsiRstDetect( struct dc390_acb* pACB );
static void dc390_ResetSCSIBus( struct dc390_acb* pACB );
static void __inline__ dc390_RequestSense( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB );
static void __inline__ dc390_InvalidCmd( struct dc390_acb* pACB );
static void __inline__ dc390_EnableMsgOut_Abort (struct dc390_acb*, struct dc390_srb*);
static irqreturn_t do_DC390_Interrupt( int, void *, struct pt_regs *);
static int dc390_initAdapter( PSH psh, ULONG io_port, UCHAR Irq, UCHAR index );
static void dc390_updateDCB (PACB pACB, PDCB pDCB);
static int dc390_initAdapter(struct Scsi_Host *psh, unsigned long io_port, u8 Irq, u8 index );
static void dc390_updateDCB (struct dc390_acb* pACB, struct dc390_dcb* pDCB);
static int DC390_proc_info (struct Scsi_Host *shpnt, char *buffer, char **start,
off_t offset, int length, int inout);
static PACB dc390_pACB_start= NULL;
static PACB dc390_pACB_current = NULL;
static ULONG dc390_lastabortedpid = 0;
static UINT dc390_laststatus = 0;
static UCHAR dc390_adapterCnt = 0;
static struct dc390_acb* dc390_pACB_start= NULL;
static struct dc390_acb* dc390_pACB_current = NULL;
static unsigned long dc390_lastabortedpid = 0;
static u32 dc390_laststatus = 0;
static u8 dc390_adapterCnt = 0;
/* Startup values, to be overriden on the commandline */
static int tmscsim[] = {-2, -2, -2, -2, -2, -2};
......@@ -351,7 +319,7 @@ MODULE_DESCRIPTION("SCSI host adapter driver for Tekram DC390 and other AMD53C97
MODULE_LICENSE("GPL");
MODULE_SUPPORTED_DEVICE("sd,sr,sg,st");
static PVOID dc390_phase0[]={
static void *dc390_phase0[]={
dc390_DataOut_0,
dc390_DataIn_0,
dc390_Command_0,
......@@ -363,7 +331,7 @@ static PVOID dc390_phase0[]={
dc390_Nop_1
};
static PVOID dc390_phase1[]={
static void *dc390_phase1[]={
dc390_DataOutPhase,
dc390_DataInPhase,
dc390_CommandPhase,
......@@ -402,15 +370,15 @@ static char* dc390_p1_str[] = {
#endif
/* Devices erroneously pretending to be able to do TagQ */
static UCHAR dc390_baddevname1[2][28] ={
static u8 dc390_baddevname1[2][28] ={
"SEAGATE ST3390N 9546",
"HP C3323-300 4269"};
#define BADDEVCNT 2
static char* dc390_adapname = "DC390";
static UCHAR dc390_eepromBuf[MAX_ADAPTER_NUM][EE_LEN];
static UCHAR dc390_clock_period1[] = {4, 5, 6, 7, 8, 10, 13, 20};
static UCHAR dc390_clock_speed[] = {100,80,67,57,50, 40, 31, 20};
static u8 dc390_eepromBuf[MAX_ADAPTER_NUM][EE_LEN];
static u8 dc390_clock_period1[] = {4, 5, 6, 7, 8, 10, 13, 20};
static u8 dc390_clock_speed[] = {100,80,67,57,50, 40, 31, 20};
/***********************************************************************
* Functions for access to DC390 EEPROM
......@@ -419,46 +387,45 @@ static UCHAR dc390_clock_speed[] = {100,80,67,57,50, 40, 31, 20};
**********************************************************************/
static void __devinit dc390_EnDisableCE( UCHAR mode, PDEVDECL, PUCHAR regval )
static void __devinit dc390_EnDisableCE(u8 mode, struct pci_dev *pdev, u8 *regval)
{
UCHAR bval;
u8 bval;
bval = 0;
if(mode == ENABLE_CE)
*regval = 0xc0;
else
*regval = 0x80;
PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval);
pci_write_config_byte(pdev, *regval, bval);
if(mode == DISABLE_CE)
PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval);
pci_write_config_byte(pdev, *regval, bval);
udelay(160);
}
/* Override EEprom values with explicitly set values */
static void __devinit dc390_EEprom_Override (UCHAR index)
static void __devinit dc390_EEprom_Override (u8 index)
{
PUCHAR ptr;
UCHAR id;
ptr = (PUCHAR) dc390_eepromBuf[index];
u8 *ptr = (u8 *) dc390_eepromBuf[index];
u8 id;
/* Adapter Settings */
if (tmscsim[0] != -2)
ptr[EE_ADAPT_SCSI_ID] = (UCHAR)tmscsim[0]; /* Adapter ID */
ptr[EE_ADAPT_SCSI_ID] = (u8)tmscsim[0]; /* Adapter ID */
if (tmscsim[3] != -2)
ptr[EE_MODE2] = (UCHAR)tmscsim[3];
ptr[EE_MODE2] = (u8)tmscsim[3];
if (tmscsim[5] != -2)
ptr[EE_DELAY] = tmscsim[5]; /* Reset delay */
if (tmscsim[4] != -2)
ptr[EE_TAG_CMD_NUM] = (UCHAR)tmscsim[4]; /* Tagged Cmds */
ptr[EE_TAG_CMD_NUM] = (u8)tmscsim[4]; /* Tagged Cmds */
/* Device Settings */
for (id = 0; id < MAX_SCSI_ID; id++)
{
if (tmscsim[2] != -2)
ptr[id<<2] = (UCHAR)tmscsim[2]; /* EE_MODE1 */
ptr[id<<2] = (u8)tmscsim[2]; /* EE_MODE1 */
if (tmscsim[1] != -2)
ptr[(id<<2) + 1] = (UCHAR)tmscsim[1]; /* EE_Speed */
ptr[(id<<2) + 1] = (u8)tmscsim[1]; /* EE_Speed */
}
}
......@@ -527,36 +494,36 @@ static int __init dc390_setup (char *str)
__setup("tmscsim=", dc390_setup);
#endif
static void __devinit dc390_EEpromOutDI( PDEVDECL, PUCHAR regval, UCHAR Carry )
static void __devinit dc390_EEpromOutDI(struct pci_dev *pdev, u8 *regval, u8 Carry)
{
UCHAR bval;
u8 bval;
bval = 0;
if(Carry)
{
bval = 0x40;
*regval = 0x80;
PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval);
pci_write_config_byte(pdev, *regval, bval);
}
udelay(160);
bval |= 0x80;
PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval);
pci_write_config_byte(pdev, *regval, bval);
udelay(160);
bval = 0;
PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval);
pci_write_config_byte(pdev, *regval, bval);
udelay(160);
}
static UCHAR __devinit dc390_EEpromInDO( PDEVDECL )
static u8 __devinit dc390_EEpromInDO(struct pci_dev *pdev)
{
UCHAR bval;
u8 bval;
PCI_WRITE_CONFIG_BYTE(PDEV, 0x80, 0x80);
pci_write_config_byte(pdev, 0x80, 0x80);
udelay(160);
PCI_WRITE_CONFIG_BYTE(PDEV, 0x80, 0x40);
pci_write_config_byte(pdev, 0x80, 0x40);
udelay(160);
PCI_READ_CONFIG_BYTE(PDEV, 0x00, &bval);
pci_read_config_byte(pdev, 0x00, &bval);
if(bval == 0x22)
return(1);
else
......@@ -564,68 +531,68 @@ static UCHAR __devinit dc390_EEpromInDO( PDEVDECL )
}
static USHORT __devinit dc390_EEpromGetData1( PDEVDECL )
static u16 __devinit dc390_EEpromGetData1(struct pci_dev *pdev)
{
UCHAR i;
UCHAR carryFlag;
USHORT wval;
u8 i;
u8 carryFlag;
u16 wval;
wval = 0;
for(i=0; i<16; i++)
{
wval <<= 1;
carryFlag = dc390_EEpromInDO(PDEV);
carryFlag = dc390_EEpromInDO(pdev);
wval |= carryFlag;
}
return(wval);
}
static void __devinit dc390_Prepare( PDEVDECL, PUCHAR regval, UCHAR EEpromCmd )
static void __devinit dc390_Prepare(struct pci_dev *pdev, u8 *regval, u8 EEpromCmd)
{
UCHAR i,j;
UCHAR carryFlag;
u8 i,j;
u8 carryFlag;
carryFlag = 1;
j = 0x80;
for(i=0; i<9; i++)
{
dc390_EEpromOutDI(PDEV,regval,carryFlag);
dc390_EEpromOutDI(pdev, regval, carryFlag);
carryFlag = (EEpromCmd & j) ? 1 : 0;
j >>= 1;
}
}
static void __devinit dc390_ReadEEprom( PDEVDECL, PUSHORT ptr)
static void __devinit dc390_ReadEEprom(struct pci_dev *pdev, u16 *ptr)
{
UCHAR regval,cmd;
UCHAR i;
u8 regval,cmd;
u8 i;
cmd = EEPROM_READ;
for(i=0; i<0x40; i++)
{
dc390_EnDisableCE(ENABLE_CE, PDEV, &regval);
dc390_Prepare(PDEV, &regval, cmd++);
*ptr++ = dc390_EEpromGetData1(PDEV);
dc390_EnDisableCE(DISABLE_CE, PDEV, &regval);
dc390_EnDisableCE(ENABLE_CE, pdev, &regval);
dc390_Prepare(pdev, &regval, cmd++);
*ptr++ = dc390_EEpromGetData1(pdev);
dc390_EnDisableCE(DISABLE_CE, pdev, &regval);
}
}
static void __devinit dc390_interpret_delay (UCHAR index)
static void __devinit dc390_interpret_delay (u8 index)
{
char interpd [] = {1,3,5,10,16,30,60,120};
dc390_eepromBuf[index][EE_DELAY] = interpd [dc390_eepromBuf[index][EE_DELAY]];
}
static UCHAR __devinit dc390_CheckEEpromCheckSum( PDEVDECL, UCHAR index )
static u8 __devinit dc390_CheckEEpromCheckSum(struct pci_dev *pdev, u8 index)
{
UCHAR i;
u8 i;
char EEbuf[128];
USHORT wval, *ptr = (PUSHORT)EEbuf;
u16 wval, *ptr = (u16 *)EEbuf;
dc390_ReadEEprom( PDEV, ptr );
dc390_ReadEEprom(pdev, ptr);
memcpy (dc390_eepromBuf[index], EEbuf, EE_ADAPT_SCSI_ID);
memcpy (&dc390_eepromBuf[index][EE_ADAPT_SCSI_ID],
&EEbuf[REAL_EE_ADAPT_SCSI_ID], EE_LEN - EE_ADAPT_SCSI_ID);
......@@ -643,9 +610,9 @@ static UCHAR __devinit dc390_CheckEEpromCheckSum( PDEVDECL, UCHAR index )
* (DCBs, SRBs, Queueing)
*
**********************************************************************/
static PDCB __inline__ dc390_findDCB ( PACB pACB, UCHAR id, UCHAR lun)
static struct dc390_dcb __inline__ *dc390_findDCB ( struct dc390_acb* pACB, u8 id, u8 lun)
{
PDCB pDCB = pACB->pLinkDCB; if (!pDCB) return 0;
struct dc390_dcb* pDCB = pACB->pLinkDCB; if (!pDCB) return 0;
while (pDCB->TargetID != id || pDCB->TargetLUN != lun)
{
pDCB = pDCB->pNextDCB;
......@@ -675,26 +642,10 @@ static PDCB __inline__ dc390_findDCB ( PACB pACB, UCHAR id, UCHAR lun)
* Lists are managed using two pointers and eventually a counter
*/
#if 0
/* Look for a SCSI cmd in a SRB queue */
static PSRB dc390_find_cmd_in_SRBq (PSCSICMD cmd, PSRB queue)
{
PSRB q = queue;
while (q)
{
if (q->pcmd == cmd) return q;
q = q->pNextSRB;
if (q == queue) return 0;
}
return q;
}
#endif
/* Return next free SRB */
static __inline__ PSRB dc390_Free_get ( PACB pACB )
static __inline__ struct dc390_srb* dc390_Free_get ( struct dc390_acb* pACB )
{
PSRB pSRB;
struct dc390_srb* pSRB;
pSRB = pACB->pFreeSRB;
DEBUG0(printk ("DC390: Get Free SRB %p\n", pSRB));
......@@ -708,7 +659,7 @@ static __inline__ PSRB dc390_Free_get ( PACB pACB )
}
/* Insert SRB oin top of free list */
static __inline__ void dc390_Free_insert (PACB pACB, PSRB pSRB)
static __inline__ void dc390_Free_insert (struct dc390_acb* pACB, struct dc390_srb* pSRB)
{
DEBUG0(printk ("DC390: Free SRB %p\n", pSRB));
pSRB->pNextSRB = pACB->pFreeSRB;
......@@ -717,7 +668,7 @@ static __inline__ void dc390_Free_insert (PACB pACB, PSRB pSRB)
/* Inserts a SRB to the top of the Waiting list */
static __inline__ void dc390_Waiting_insert ( PDCB pDCB, PSRB pSRB )
static __inline__ void dc390_Waiting_insert ( struct dc390_dcb* pDCB, struct dc390_srb* pSRB )
{
DEBUG0(printk ("DC390: Insert pSRB %p cmd %li to Waiting\n", pSRB, pSRB->pcmd->pid));
pSRB->pNextSRB = pDCB->pWaitingSRB;
......@@ -729,7 +680,7 @@ static __inline__ void dc390_Waiting_insert ( PDCB pDCB, PSRB pSRB )
/* Queue SRB to waiting list */
static __inline__ void dc390_Waiting_append ( PDCB pDCB, PSRB pSRB)
static __inline__ void dc390_Waiting_append ( struct dc390_dcb* pDCB, struct dc390_srb* pSRB)
{
DEBUG0(printk ("DC390: Append pSRB %p cmd %li to Waiting\n", pSRB, pSRB->pcmd->pid));
if( pDCB->pWaitingSRB )
......@@ -743,7 +694,7 @@ static __inline__ void dc390_Waiting_append ( PDCB pDCB, PSRB pSRB)
pDCB->pDCBACB->CmdInQ++;
}
static __inline__ void dc390_Going_append (PDCB pDCB, PSRB pSRB)
static __inline__ void dc390_Going_append (struct dc390_dcb* pDCB, struct dc390_srb* pSRB)
{
pDCB->GoingSRBCnt++;
DEBUG0(printk("DC390: Append SRB %p to Going\n", pSRB));
......@@ -758,14 +709,14 @@ static __inline__ void dc390_Going_append (PDCB pDCB, PSRB pSRB)
pSRB->pNextSRB = NULL;
}
static __inline__ void dc390_Going_remove (PDCB pDCB, PSRB pSRB)
static __inline__ void dc390_Going_remove (struct dc390_dcb* pDCB, struct dc390_srb* pSRB)
{
DEBUG0(printk("DC390: Remove SRB %p from Going\n", pSRB));
if (pSRB == pDCB->pGoingSRB)
pDCB->pGoingSRB = pSRB->pNextSRB;
else
{
PSRB psrb = pDCB->pGoingSRB;
struct dc390_srb* psrb = pDCB->pGoingSRB;
while (psrb && psrb->pNextSRB != pSRB)
psrb = psrb->pNextSRB;
if (!psrb)
......@@ -778,7 +729,7 @@ static __inline__ void dc390_Going_remove (PDCB pDCB, PSRB pSRB)
}
/* Moves SRB from Going list to the top of Waiting list */
static void dc390_Going_to_Waiting ( PDCB pDCB, PSRB pSRB )
static void dc390_Going_to_Waiting ( struct dc390_dcb* pDCB, struct dc390_srb* pSRB )
{
DEBUG0(printk(KERN_INFO "DC390: Going_to_Waiting (SRB %p) pid = %li\n", pSRB, pSRB->pcmd->pid));
/* Remove SRB from Going */
......@@ -789,7 +740,7 @@ static void dc390_Going_to_Waiting ( PDCB pDCB, PSRB pSRB )
}
/* Moves first SRB from Waiting list to Going list */
static __inline__ void dc390_Waiting_to_Going ( PDCB pDCB, PSRB pSRB )
static __inline__ void dc390_Waiting_to_Going ( struct dc390_dcb* pDCB, struct dc390_srb* pSRB )
{
/* Remove from waiting list */
DEBUG0(printk("DC390: Remove SRB %p from head of Waiting\n", pSRB));
......@@ -801,7 +752,7 @@ static __inline__ void dc390_Waiting_to_Going ( PDCB pDCB, PSRB pSRB )
static void DC390_waiting_timed_out (unsigned long ptr);
/* Sets the timer to wake us up */
static void dc390_waiting_timer (PACB pACB, unsigned long to)
static void dc390_waiting_timer (struct dc390_acb* pACB, unsigned long to)
{
if (timer_pending (&pACB->Waiting_Timer)) return;
init_timer (&pACB->Waiting_Timer);
......@@ -816,10 +767,10 @@ static void dc390_waiting_timer (PACB pACB, unsigned long to)
/* Send the next command from the waiting list to the bus */
static void dc390_Waiting_process ( PACB pACB )
static void dc390_Waiting_process ( struct dc390_acb* pACB )
{
PDCB ptr, ptr1;
PSRB pSRB;
struct dc390_dcb *ptr, *ptr1;
struct dc390_srb *pSRB;
if( (pACB->pActiveDCB) || (pACB->ACBFlag & (RESET_DETECT+RESET_DONE+RESET_DEV) ) )
return;
......@@ -854,7 +805,7 @@ static void dc390_Waiting_process ( PACB pACB )
/* Wake up waiting queue */
static void DC390_waiting_timed_out (unsigned long ptr)
{
PACB pACB = (PACB)ptr;
struct dc390_acb* pACB = (struct dc390_acb*)ptr;
unsigned long iflags;
DEBUG0(printk ("DC390: Debug: Waiting queue woken up by timer!\n"));
spin_lock_irqsave(pACB->pScsiHost->host_lock, iflags);
......@@ -863,15 +814,15 @@ static void DC390_waiting_timed_out (unsigned long ptr)
}
/***********************************************************************
* Function: static void dc390_SendSRB (PACB pACB, PSRB pSRB)
* Function: static void dc390_SendSRB (struct dc390_acb* pACB, struct dc390_srb* pSRB)
*
* Purpose: Send SCSI Request Block (pSRB) to adapter (pACB)
*
***********************************************************************/
static void dc390_SendSRB( PACB pACB, PSRB pSRB )
static void dc390_SendSRB( struct dc390_acb* pACB, struct dc390_srb* pSRB )
{
PDCB pDCB;
struct dc390_dcb* pDCB;
pDCB = pSRB->pSRBDCB;
if( (pDCB->MaxCommand <= pDCB->GoingSRBCnt) || (pACB->pActiveDCB) ||
......@@ -913,10 +864,10 @@ static struct scatterlist* dc390_sg_build_single(struct scatterlist *sg, void *a
}
/* Create pci mapping */
static int dc390_pci_map (PSRB pSRB)
static int dc390_pci_map (struct dc390_srb* pSRB)
{
int error = 0;
Scsi_Cmnd *pcmd = pSRB->pcmd;
struct scsi_cmnd *pcmd = pSRB->pcmd;
struct pci_dev *pdev = pSRB->pSRBDCB->pDCBACB->pdev;
dc390_cmd_scp_t* cmdp = ((dc390_cmd_scp_t*)(&pcmd->SCp));
......@@ -933,9 +884,9 @@ static int dc390_pci_map (PSRB pSRB)
DEBUG1(printk("%s(): Mapped sense buffer %p at %x\n", __FUNCTION__, pcmd->sense_buffer, cmdp->saved_dma_handle));
/* Map SG list */
} else if (pcmd->use_sg) {
pSRB->pSegmentList = (PSGL) pcmd->request_buffer;
pSRB->pSegmentList = (struct scatterlist *) pcmd->request_buffer;
pSRB->SGcount = pci_map_sg(pdev, pSRB->pSegmentList, pcmd->use_sg,
scsi_to_pci_dma_dir(pcmd->sc_data_direction));
pcmd->sc_data_direction);
/* TODO: error handling */
if (!pSRB->SGcount)
error = 1;
......@@ -945,7 +896,7 @@ static int dc390_pci_map (PSRB pSRB)
} else if (pcmd->request_buffer && pcmd->request_bufflen) {
pSRB->pSegmentList = dc390_sg_build_single(&pSRB->Segmentx, pcmd->request_buffer, pcmd->request_bufflen);
pSRB->SGcount = pci_map_sg(pdev, pSRB->pSegmentList, 1,
scsi_to_pci_dma_dir(pcmd->sc_data_direction));
pcmd->sc_data_direction);
cmdp->saved_dma_handle = sg_dma_address(pSRB->pSegmentList);
/* TODO: error handling */
......@@ -960,9 +911,9 @@ static int dc390_pci_map (PSRB pSRB)
}
/* Remove pci mapping */
static void dc390_pci_unmap (PSRB pSRB)
static void dc390_pci_unmap (struct dc390_srb* pSRB)
{
Scsi_Cmnd* pcmd = pSRB->pcmd;
struct scsi_cmnd *pcmd = pSRB->pcmd;
struct pci_dev *pdev = pSRB->pSRBDCB->pDCBACB->pdev;
DEBUG1(dc390_cmd_scp_t* cmdp = ((dc390_cmd_scp_t*)(&pcmd->SCp)));
......@@ -970,24 +921,24 @@ static void dc390_pci_unmap (PSRB pSRB)
pci_unmap_sg(pdev, &pSRB->Segmentx, 1, DMA_FROM_DEVICE);
DEBUG1(printk("%s(): Unmapped sense buffer at %x\n", __FUNCTION__, cmdp->saved_dma_handle));
} else if (pcmd->use_sg) {
pci_unmap_sg(pdev, pcmd->request_buffer, pcmd->use_sg, scsi_to_pci_dma_dir(pcmd->sc_data_direction));
pci_unmap_sg(pdev, pcmd->request_buffer, pcmd->use_sg, pcmd->sc_data_direction);
DEBUG1(printk("%s(): Unmapped SG at %p with %d elements\n", __FUNCTION__, pcmd->request_buffer, pcmd->use_sg));
} else if (pcmd->request_buffer && pcmd->request_bufflen) {
pci_unmap_sg(pdev, &pSRB->Segmentx, 1, scsi_to_pci_dma_dir(pcmd->sc_data_direction));
pci_unmap_sg(pdev, &pSRB->Segmentx, 1, pcmd->sc_data_direction);
DEBUG1(printk("%s(): Unmapped request buffer at %x\n", __FUNCTION__, cmdp->saved_dma_handle));
}
}
/***********************************************************************
* Function: static void dc390_BuildSRB (Scsi_Cmd *pcmd, PDCB pDCB,
* PSRB pSRB)
* Function: static void dc390_BuildSRB (Scsi_Cmd *pcmd, struct dc390_dcb* pDCB,
* struct dc390_srb* pSRB)
*
* Purpose: Prepare SRB for being sent to Device DCB w/ command *pcmd
*
***********************************************************************/
static void dc390_BuildSRB (Scsi_Cmnd* pcmd, PDCB pDCB, PSRB pSRB)
static void dc390_BuildSRB (struct scsi_cmnd *pcmd, struct dc390_dcb* pDCB, struct dc390_srb* pSRB)
{
pSRB->pSRBDCB = pDCB;
pSRB->pcmd = pcmd;
......@@ -1015,8 +966,8 @@ static void dc390_BuildSRB (Scsi_Cmnd* pcmd, PDCB pDCB, PSRB pSRB)
}
/***********************************************************************
* Function : static int DC390_queue_command (Scsi_Cmnd *cmd,
* void (*done)(Scsi_Cmnd *))
* Function : static int DC390_queue_command (struct scsi_cmnd *cmd,
* void (*done)(struct scsi_cmnd *))
*
* Purpose : enqueues a SCSI command
*
......@@ -1033,11 +984,12 @@ static void dc390_BuildSRB (Scsi_Cmnd* pcmd, PDCB pDCB, PSRB pSRB)
*
***********************************************************************/
static int DC390_queue_command (Scsi_Cmnd *cmd, void (* done)(Scsi_Cmnd *))
static int DC390_queue_command(struct scsi_cmnd *cmd,
void (* done)(struct scsi_cmnd *))
{
PDCB pDCB = (PDCB) cmd->device->hostdata;
PSRB pSRB;
PACB pACB = (PACB) cmd->device->host->hostdata;
struct dc390_dcb* pDCB = (struct dc390_dcb*) cmd->device->hostdata;
struct dc390_srb* pSRB;
struct dc390_acb* pACB = (struct dc390_acb*) cmd->device->host->hostdata;
DEBUG0(/* if(pACB->scan_devices) */ \
printk(KERN_INFO "DC390: Queue Cmd=%02x,Tgt=%d,LUN=%d (pid=%li), buffer=%p\n",\
......@@ -1181,7 +1133,7 @@ static int DC390_bios_param (struct scsi_device *sdev, struct block_device *bdev
sector_t capacity, int geom[])
{
int heads, sectors, cylinders;
PACB pACB = (PACB) sdev->host->hostdata;
struct dc390_acb* pACB = (struct dc390_acb*) sdev->host->hostdata;
int ret_code = -1;
int size = capacity;
unsigned char *buf;
......@@ -1221,9 +1173,11 @@ static int DC390_bios_param (struct scsi_device *sdev, struct block_device *bdev
}
#endif
static void dc390_dumpinfo (PACB pACB, PDCB pDCB, PSRB pSRB)
static void dc390_dumpinfo (struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB)
{
USHORT pstat; PDEVDECL1;
struct pci_dev *pdev;
u16 pstat;
if (!pDCB) pDCB = pACB->pActiveDCB;
if (!pSRB && pDCB) pSRB = pDCB->pActiveSRB;
......@@ -1257,14 +1211,16 @@ static void dc390_dumpinfo (PACB pACB, PDCB pDCB, PSRB pSRB)
DC390_read32(DMA_Wk_ByteCntr), DC390_read32(DMA_Wk_AddrCntr),
DC390_read8(DMA_Status), DC390_read32(DMA_ScsiBusCtrl));
DC390_write32 (DMA_ScsiBusCtrl, EN_INT_ON_PCI_ABORT);
PDEVSET1; PCI_READ_CONFIG_WORD(PDEV, PCI_STATUS, &pstat);
pdev = pACB->pdev;
pci_read_config_word(pdev, PCI_STATUS, &pstat);
printk ("DC390: Register dump: PCI Status: %04x\n", pstat);
printk ("DC390: In case of driver trouble read linux/Documentation/scsi/tmscsim.txt\n");
}
/***********************************************************************
* Function : int DC390_abort (Scsi_Cmnd *cmd)
* Function : int DC390_abort (struct scsi_cmnd *cmd)
*
* Purpose : Abort an errant SCSI command
*
......@@ -1275,14 +1231,14 @@ static void dc390_dumpinfo (PACB pACB, PDCB pDCB, PSRB pSRB)
* Status: Buggy !
***********************************************************************/
static int DC390_abort (Scsi_Cmnd *cmd)
static int DC390_abort (struct scsi_cmnd *cmd)
{
PDCB pDCB = (PDCB) cmd->device->hostdata;
PSRB pSRB, psrb;
UINT count, i;
struct dc390_dcb *pDCB = (struct dc390_dcb*) cmd->device->hostdata;
struct dc390_srb *pSRB, *psrb;
u32 count, i;
int status;
//ULONG sbac;
PACB pACB = (PACB) cmd->device->host->hostdata;
//unsigned long sbac;
struct dc390_acb *pACB = (struct dc390_acb*) cmd->device->host->hostdata;
printk ("DC390: Abort command (pid %li, Device %02i-%02i)\n",
cmd->pid, cmd->device->id, cmd->device->lun);
......@@ -1406,9 +1362,9 @@ static int DC390_abort (Scsi_Cmnd *cmd)
}
static void dc390_ResetDevParam( PACB pACB )
static void dc390_ResetDevParam( struct dc390_acb* pACB )
{
PDCB pDCB, pdcb;
struct dc390_dcb *pDCB, *pdcb;
pDCB = pACB->pLinkDCB;
if (! pDCB) return;
......@@ -1431,11 +1387,11 @@ static void dc390_ResetDevParam( PACB pACB )
#if 0
/* Moves all SRBs from Going to Waiting for all DCBs */
static void dc390_RecoverSRB( PACB pACB )
static void dc390_RecoverSRB( struct dc390_acb* pACB )
{
PDCB pDCB, pdcb;
PSRB psrb, psrb2;
UINT cnt, i;
struct dc390_dcb *pDCB, *pdcb;
struct dc390_srb *psrb, *psrb2;
u32 cnt, i;
pDCB = pACB->pLinkDCB;
if( !pDCB ) return;
......@@ -1470,7 +1426,7 @@ static void dc390_RecoverSRB( PACB pACB )
#endif
/***********************************************************************
* Function : int DC390_reset (Scsi_Cmnd *cmd, ...)
* Function : int DC390_reset (struct scsi_cmnd *cmd, ...)
*
* Purpose : perform a hard reset on the SCSI bus
*
......@@ -1480,10 +1436,10 @@ static void dc390_RecoverSRB( PACB pACB )
* Returns : 0 on success.
***********************************************************************/
static int DC390_reset (Scsi_Cmnd *cmd)
static int DC390_reset (struct scsi_cmnd *cmd)
{
UCHAR bval;
PACB pACB = (PACB) cmd->device->host->hostdata;
u8 bval;
struct dc390_acb* pACB = (struct dc390_acb*) cmd->device->host->hostdata;
printk(KERN_INFO "DC390: RESET ... ");
......@@ -1526,7 +1482,7 @@ static int DC390_reset (Scsi_Cmnd *cmd)
* Purpose : Set the configuration dependent DCB parameters
***********************************************************************/
static void dc390_updateDCB (PACB pACB, PDCB pDCB)
static void dc390_updateDCB (struct dc390_acb* pACB, struct dc390_dcb* pDCB)
{
pDCB->SyncMode &= EN_TAG_QUEUEING | SYNC_NEGO_DONE /*| EN_ATN_STOP*/;
if (pDCB->DevMode & TAG_QUEUEING_) {
......@@ -1558,15 +1514,15 @@ static void dc390_updateDCB (PACB pACB, PDCB pDCB)
* Inputs : psrb - pointer to this scsi request block structure
***********************************************************************/
static void __inline__ dc390_initSRB( PSRB psrb )
static void __inline__ dc390_initSRB( struct dc390_srb* psrb )
{
/* psrb->PhysSRB = virt_to_phys( psrb ); */
}
static void dc390_linkSRB( PACB pACB )
static void dc390_linkSRB( struct dc390_acb* pACB )
{
UINT count, i;
u32 count, i;
count = pACB->SRBCount;
for( i=0; i<count; i++)
......@@ -1589,10 +1545,10 @@ static void dc390_linkSRB( PACB pACB )
* io_port, Irq, index: Resources and adapter index
***********************************************************************/
static void __devinit dc390_initACB (PSH psh, ULONG io_port, UCHAR Irq, UCHAR index)
static void __devinit dc390_initACB (struct Scsi_Host *psh, unsigned long io_port, u8 Irq, u8 index)
{
PACB pACB;
UCHAR i;
struct dc390_acb* pACB;
u8 i;
psh->can_queue = MAX_CMD_QUEUE;
psh->cmd_per_lun = MAX_CMD_PER_LUN;
......@@ -1605,10 +1561,10 @@ static void __devinit dc390_initACB (PSH psh, ULONG io_port, UCHAR Irq, UCHAR in
psh->dma_channel = -1;
psh->last_reset = jiffies;
pACB = (PACB) psh->hostdata;
pACB = (struct dc390_acb*) psh->hostdata;
pACB->pScsiHost = psh;
pACB->IOPortBase = (USHORT) io_port;
pACB->IOPortBase = (u16) io_port;
pACB->IRQLevel = Irq;
DEBUG0(printk (KERN_INFO "DC390: Adapter index %i, ID %i, IO 0x%08x, IRQ 0x%02x\n", \
......@@ -1660,13 +1616,13 @@ static void __devinit dc390_initACB (PSH psh, ULONG io_port, UCHAR Irq, UCHAR in
* Outputs: 0 on success, -1 on error
***********************************************************************/
static int __devinit dc390_initAdapter (PSH psh, ULONG io_port, UCHAR Irq, UCHAR index)
static int __devinit dc390_initAdapter (struct Scsi_Host *psh, unsigned long io_port, u8 Irq, u8 index)
{
PACB pACB, pACB2;
UCHAR dstate;
struct dc390_acb *pACB, *pACB2;
u8 dstate;
int i;
pACB = (PACB) psh->hostdata;
pACB = (struct dc390_acb*) psh->hostdata;
if (request_region (io_port, psh->n_io_port, "tmscsim") == NULL) {
printk(KERN_ERR "DC390: register IO ports error!\n");
......@@ -1731,13 +1687,14 @@ static int __devinit dc390_initAdapter (PSH psh, ULONG io_port, UCHAR Irq, UCHAR
}
static void __devinit dc390_set_pci_cfg (PDEVDECL)
static void __devinit dc390_set_pci_cfg (struct pci_dev *pdev)
{
USHORT cmd;
PCI_READ_CONFIG_WORD (PDEV, PCI_COMMAND, &cmd);
u16 cmd;
pci_read_config_word(pdev, PCI_COMMAND, &cmd);
cmd |= PCI_COMMAND_SERR | PCI_COMMAND_PARITY | PCI_COMMAND_IO;
PCI_WRITE_CONFIG_WORD (PDEV, PCI_COMMAND, cmd);
PCI_WRITE_CONFIG_WORD (PDEV, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY));
pci_write_config_word(pdev, PCI_COMMAND, cmd);
pci_write_config_word(pdev, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY));
}
/**
......@@ -1748,15 +1705,15 @@ static void __devinit dc390_set_pci_cfg (PDEVDECL)
*/
static int dc390_slave_alloc(struct scsi_device *scsi_device)
{
PACB pACB = (PACB) scsi_device->host->hostdata;
PDCB pDCB, pDCB2 = 0;
struct dc390_acb *pACB = (struct dc390_acb*) scsi_device->host->hostdata;
struct dc390_dcb *pDCB, *pDCB2 = 0;
uint id = scsi_device->id;
uint lun = scsi_device->lun;
pDCB = kmalloc(sizeof(DC390_DCB), GFP_KERNEL);
pDCB = kmalloc(sizeof(struct dc390_dcb), GFP_KERNEL);
if (!pDCB)
return -ENOMEM;
memset(pDCB, 0, sizeof(DC390_DCB));
memset(pDCB, 0, sizeof(struct dc390_dcb));
if (!pACB->DCBCnt++) {
pACB->pLinkDCB = pDCB;
......@@ -1816,9 +1773,9 @@ static int dc390_slave_alloc(struct scsi_device *scsi_device)
*/
static void dc390_slave_destroy(struct scsi_device *scsi_device)
{
PACB pACB = (PACB) scsi_device->host->hostdata;
PDCB pDCB = (PDCB) scsi_device->hostdata;
PDCB pPrevDCB = pACB->pLinkDCB;
struct dc390_acb* pACB = (struct dc390_acb*) scsi_device->host->hostdata;
struct dc390_dcb* pDCB = (struct dc390_dcb*) scsi_device->hostdata;
struct dc390_dcb* pPrevDCB = pACB->pLinkDCB;
pACB->scan_devices = 0;
......@@ -1853,12 +1810,12 @@ static void dc390_slave_destroy(struct scsi_device *scsi_device)
static int dc390_slave_configure(struct scsi_device *scsi_device)
{
PACB pACB = (PACB) scsi_device->host->hostdata;
struct dc390_acb* pACB = (struct dc390_acb*) scsi_device->host->hostdata;
pACB->scan_devices = 0;
return 0;
}
static Scsi_Host_Template driver_template = {
static struct scsi_host_template driver_template = {
.module = THIS_MODULE,
.proc_name = "tmscsim",
.proc_info = DC390_proc_info,
......@@ -1883,7 +1840,7 @@ static int __devinit dc390_init_one(struct pci_dev *dev,
struct Scsi_Host *scsi_host;
unsigned long io_port;
u8 irq;
PACB pACB;
struct dc390_acb* pACB;
int ret = -ENOMEM;
if (pci_enable_device(dev))
......@@ -1893,11 +1850,11 @@ static int __devinit dc390_init_one(struct pci_dev *dev,
irq = dev->irq;
/* allocate scsi host information (includes out adapter) */
scsi_host = scsi_host_alloc(&driver_template, sizeof(struct _ACB));
scsi_host = scsi_host_alloc(&driver_template, sizeof(struct dc390_acb));
if (!scsi_host)
goto nomem;
pACB = (PACB) scsi_host->hostdata;
pACB = (struct dc390_acb*) scsi_host->hostdata;
if (dc390_CheckEEpromCheckSum (dev, dc390_adapterCnt)) {
int speed;
......@@ -1910,13 +1867,13 @@ static int __devinit dc390_init_one(struct pci_dev *dev,
printk(KERN_INFO "DC390: Used defaults: AdaptID=%i, SpeedIdx=%i (%i.%i MHz),"
" DevMode=0x%02x, AdaptMode=0x%02x, TaggedCmnds=%i (%i), DelayReset=%is\n",
tmscsim[0], tmscsim[1], speed/10, speed%10,
(UCHAR)tmscsim[2], (UCHAR)tmscsim[3], tmscsim[4], 2 << (tmscsim[4]), tmscsim[5]);
(u8)tmscsim[2], (u8)tmscsim[3], tmscsim[4], 2 << (tmscsim[4]), tmscsim[5]);
} else {
dc390_check_for_safe_settings();
dc390_EEprom_Override(dc390_adapterCnt);
}
DEBUG0(printk(KERN_INFO "DC390: pSH = %8x, Index %02i\n", (UINT) scsi_host, dc390_adapterCnt));
DEBUG0(printk(KERN_INFO "DC390: pSH = %8x, Index %02i\n", (u32) scsi_host, dc390_adapterCnt));
dc390_initACB(scsi_host, io_port, irq, dc390_adapterCnt);
......@@ -1959,7 +1916,7 @@ static void __devexit dc390_remove_one(struct pci_dev *dev)
{
struct Scsi_Host *scsi_host = pci_get_drvdata(dev);
unsigned long iflags;
PACB pACB = (PACB) scsi_host->hostdata;
struct dc390_acb* pACB = (struct dc390_acb*) scsi_host->hostdata;
u8 bval;
scsi_remove_host(scsi_host);
......@@ -2014,19 +1971,19 @@ static int DC390_proc_info (struct Scsi_Host *shpnt, char *buffer, char **start,
{
int dev, spd, spd1;
char *pos = buffer;
PACB pACB;
PDCB pDCB;
struct dc390_acb* pACB;
struct dc390_dcb* pDCB;
pACB = dc390_pACB_start;
while(pACB != (PACB)-1)
while(pACB != (struct dc390_acb*)-1)
{
if (shpnt == pACB->pScsiHost)
break;
pACB = pACB->pNextACB;
}
if (pACB == (PACB)-1) return(-ESRCH);
if (pACB == (struct dc390_acb*)-1) return(-ESRCH);
if(inout) /* Has data been written to the file ? */
return -ENOSYS;
......@@ -2087,7 +2044,7 @@ static int DC390_proc_info (struct Scsi_Host *shpnt, char *buffer, char **start,
for (dev = 0; dev < pACB->DCBCnt; dev++)
{
PSRB pSRB;
struct dc390_srb* pSRB;
if (pDCB->WaitSRBCnt)
SPRINTF ("DCB (%02i-%i): Waiting: %i:", pDCB->TargetID, pDCB->TargetLUN,
pDCB->WaitSRBCnt);
......
......@@ -29,215 +29,167 @@ typedef u16 USHORT; /* 16 bits */
typedef u32 UINT; /* 32 bits */
typedef unsigned long ULONG; /* 32/64 bits */
typedef UCHAR *PUCHAR;
typedef USHORT *PUSHORT;
typedef UINT *PUINT;
typedef ULONG *PULONG;
typedef Scsi_Host_Template *PSHT;
typedef struct Scsi_Host *PSH;
typedef Scsi_Device *PSCSIDEV;
typedef Scsi_Cmnd *PSCSICMD;
typedef void *PVOID;
typedef struct scatterlist *PSGL, SGL;
/*;-----------------------------------------------------------------------*/
typedef struct _SyncMsg
{
UCHAR ExtendMsg;
UCHAR ExtMsgLen;
UCHAR SyncXferReq;
UCHAR Period;
UCHAR ReqOffset;
} SyncMsg;
/*;-----------------------------------------------------------------------*/
typedef struct _Capacity
{
ULONG BlockCount;
ULONG BlockLength;
} Capacity;
/*;-----------------------------------------------------------------------*/
typedef struct _SGentry
{
ULONG SGXferDataPtr;
ULONG SGXferDataLen;
} SGentry;
typedef struct _SGentry1
{
ULONG SGXLen;
ULONG SGXPtr;
} SGentry1, *PSGE;
/*
;-----------------------------------------------------------------------
; SCSI Request Block
;-----------------------------------------------------------------------
*/
struct _SRB
struct dc390_srb
{
//UCHAR CmdBlock[12];
//u8 CmdBlock[12];
struct _SRB *pNextSRB;
struct _DCB *pSRBDCB;
PSCSICMD pcmd;
PSGL pSegmentList;
struct dc390_srb *pNextSRB;
struct dc390_dcb *pSRBDCB;
struct scsi_cmnd *pcmd;
struct scatterlist *pSegmentList;
/* 0x10: */
SGL Segmentx; /* make a one entry of S/G list table */
struct scatterlist Segmentx; /* make a one entry of S/G list table */
/* 0x1c: */
ULONG SGBusAddr; /*;a segment starting address as seen by AM53C974A*/
ULONG SGToBeXferLen; /*; to be xfer length */
ULONG TotalXferredLen;
ULONG SavedTotXLen;
UINT SRBState;
unsigned long SGBusAddr; /*;a segment starting address as seen by AM53C974A*/
unsigned long SGToBeXferLen; /*; to be xfer length */
unsigned long TotalXferredLen;
unsigned long SavedTotXLen;
u32 SRBState;
/* 0x30: */
UCHAR SRBStatus;
UCHAR SRBFlag; /*; b0-AutoReqSense,b6-Read,b7-write */
u8 SRBStatus;
u8 SRBFlag; /*; b0-AutoReqSense,b6-Read,b7-write */
/*; b4-settimeout,b5-Residual valid */
UCHAR AdaptStatus;
UCHAR TargetStatus;
u8 AdaptStatus;
u8 TargetStatus;
UCHAR ScsiPhase;
UCHAR TagNumber;
UCHAR SGIndex;
UCHAR SGcount;
u8 ScsiPhase;
u8 TagNumber;
u8 SGIndex;
u8 SGcount;
/* 0x38: */
UCHAR MsgCnt;
UCHAR EndMessage;
UCHAR RetryCnt;
UCHAR SavedSGCount;
u8 MsgCnt;
u8 EndMessage;
u8 RetryCnt;
u8 SavedSGCount;
ULONG Saved_Ptr;
unsigned long Saved_Ptr;
/* 0x40: */
UCHAR MsgInBuf[6];
UCHAR MsgOutBuf[6];
u8 MsgInBuf[6];
u8 MsgOutBuf[6];
//UCHAR IORBFlag; /*;81h-Reset, 2-retry */
//u8 IORBFlag; /*;81h-Reset, 2-retry */
/* 0x4c: */
};
typedef struct _SRB DC390_SRB, *PSRB;
/*
;-----------------------------------------------------------------------
; Device Control Block
;-----------------------------------------------------------------------
*/
struct _DCB
struct dc390_dcb
{
struct _DCB *pNextDCB;
struct _ACB *pDCBACB;
/* Aborted Commands */
//PSCSICMD AboIORBhead;
//PSCSICMD AboIORBtail;
//ULONG AboIORBcnt;
struct dc390_dcb *pNextDCB;
struct dc390_acb *pDCBACB;
/* 0x08: */
/* Queued SRBs */
PSRB pWaitingSRB;
PSRB pWaitLast;
PSRB pGoingSRB;
PSRB pGoingLast;
PSRB pActiveSRB;
UCHAR WaitSRBCnt; /* Not used */
UCHAR GoingSRBCnt;
struct dc390_srb *pWaitingSRB;
struct dc390_srb *pWaitLast;
struct dc390_srb *pGoingSRB;
struct dc390_srb *pGoingLast;
struct dc390_srb *pActiveSRB;
u8 WaitSRBCnt; /* Not used */
u8 GoingSRBCnt;
UCHAR DevType;
UCHAR MaxCommand;
u8 DevType;
u8 MaxCommand;
/* 0x20: */
UINT TagMask;
u32 TagMask;
UCHAR TargetID; /*; SCSI Target ID (SCSI Only) */
UCHAR TargetLUN; /*; SCSI Log. Unit (SCSI Only) */
UCHAR DevMode;
UCHAR DCBFlag;
u8 TargetID; /*; SCSI Target ID (SCSI Only) */
u8 TargetLUN; /*; SCSI Log. Unit (SCSI Only) */
u8 DevMode;
u8 DCBFlag;
UCHAR CtrlR1;
UCHAR CtrlR3;
UCHAR CtrlR4;
UCHAR Inquiry7;
u8 CtrlR1;
u8 CtrlR3;
u8 CtrlR4;
u8 Inquiry7;
/* 0x2c: */
UCHAR SyncMode; /*; 0:async mode */
UCHAR NegoPeriod; /*;for nego. */
UCHAR SyncPeriod; /*;for reg. */
UCHAR SyncOffset; /*;for reg. and nego.(low nibble) */
u8 SyncMode; /*; 0:async mode */
u8 NegoPeriod; /*;for nego. */
u8 SyncPeriod; /*;for reg. */
u8 SyncOffset; /*;for reg. and nego.(low nibble) */
/* 0x30:*/
//UCHAR InqDataBuf[8];
//UCHAR CapacityBuf[8];
//u8 InqDataBuf[8];
//u8 CapacityBuf[8];
///* 0x40: */
};
typedef struct _DCB DC390_DCB, *PDCB;
/*
;-----------------------------------------------------------------------
; Adapter Control Block
;-----------------------------------------------------------------------
*/
struct _ACB
struct dc390_acb
{
PSH pScsiHost;
struct _ACB *pNextACB;
USHORT IOPortBase;
UCHAR IRQLevel;
UCHAR status;
UCHAR SRBCount;
UCHAR AdapterIndex; /*; nth Adapter this driver */
UCHAR DCBCnt;
UCHAR TagMaxNum;
UCHAR ACBFlag;
UCHAR Gmode2;
UCHAR scan_devices;
PDCB pLinkDCB;
PDCB pLastDCB;
PDCB pDCBRunRobin;
PDCB pActiveDCB;
PSRB pFreeSRB;
PSRB pTmpSRB;
UCHAR msgin123[4];
UCHAR DCBmap[MAX_SCSI_ID];
UCHAR Connected;
UCHAR pad;
struct Scsi_Host *pScsiHost;
struct dc390_acb *pNextACB;
u16 IOPortBase;
u8 IRQLevel;
u8 status;
u8 SRBCount;
u8 AdapterIndex; /*; nth Adapter this driver */
u8 DCBCnt;
u8 TagMaxNum;
u8 ACBFlag;
u8 Gmode2;
u8 scan_devices;
struct dc390_dcb *pLinkDCB;
struct dc390_dcb *pLastDCB;
struct dc390_dcb *pDCBRunRobin;
struct dc390_dcb *pActiveDCB;
struct dc390_srb *pFreeSRB;
struct dc390_srb *pTmpSRB;
u8 msgin123[4];
u8 DCBmap[MAX_SCSI_ID];
u8 Connected;
u8 pad;
#if defined(USE_SPINLOCKS) && USE_SPINLOCKS > 1 && (defined(CONFIG_SMP) || DEBUG_SPINLOCKS > 0)
spinlock_t lock;
#endif
UCHAR sel_timeout;
UCHAR glitch_cfg;
u8 sel_timeout;
u8 glitch_cfg;
UCHAR MsgLen;
UCHAR Ignore_IRQ; /* Not used */
u8 MsgLen;
u8 Ignore_IRQ; /* Not used */
PDEVDECL1; /* Pointer to PCI cfg. space */
struct pci_dev *pdev;
ULONG Cmds;
UINT SelLost;
UINT SelConn;
UINT CmdInQ;
UINT CmdOutOfSRB;
unsigned long Cmds;
u32 SelLost;
u32 SelConn;
u32 CmdInQ;
u32 CmdOutOfSRB;
struct timer_list Waiting_Timer;
DC390_SRB TmpSRB;
DC390_SRB SRB_array[MAX_SRB_CNT]; /* 50 SRBs */
struct dc390_srb TmpSRB;
struct dc390_srb SRB_array[MAX_SRB_CNT]; /* 50 SRBs */
};
typedef struct _ACB DC390_ACB, *PACB;
/*;-----------------------------------------------------------------------*/
......@@ -402,17 +354,17 @@ typedef struct {
typedef struct _SCSIInqData { /* INQUIRY */
UCHAR DevType; /* Periph Qualifier & Periph Dev Type*/
UCHAR RMB_TypeMod; /* rem media bit & Dev Type Modifier */
UCHAR Vers; /* ISO, ECMA, & ANSI versions */
UCHAR RDF; /* AEN, TRMIOP, & response data format*/
UCHAR AddLen; /* length of additional data */
UCHAR Res1; /* reserved */
UCHAR Res2; /* reserved */
UCHAR Flags; /* RelADr,Wbus32,Wbus16,Sync,etc. */
UCHAR VendorID[8]; /* Vendor Identification */
UCHAR ProductID[16]; /* Product Identification */
UCHAR ProductRev[4]; /* Product Revision */
u8 DevType; /* Periph Qualifier & Periph Dev Type*/
u8 RMB_TypeMod; /* rem media bit & Dev Type Modifier */
u8 Vers; /* ISO, ECMA, & ANSI versions */
u8 RDF; /* AEN, TRMIOP, & response data format*/
u8 AddLen; /* length of additional data */
u8 Res1; /* reserved */
u8 Res2; /* reserved */
u8 Flags; /* RelADr,Wbus32,Wbus16,Sync,etc. */
u8 VendorID[8]; /* Vendor Identification */
u8 ProductID[16]; /* Product Identification */
u8 ProductRev[4]; /* Product Revision */
} SCSI_INQDATA, *PSCSI_INQDATA;
......@@ -461,10 +413,10 @@ typedef struct _SCSIInqData { /* INQUIRY */
*/
typedef struct _EEprom
{
UCHAR EE_MODE1;
UCHAR EE_SPEED;
UCHAR xx1;
UCHAR xx2;
u8 EE_MODE1;
u8 EE_SPEED;
u8 xx1;
u8 xx2;
} EEprom, *PEEprom;
#define REAL_EE_ADAPT_SCSI_ID 64
......@@ -676,7 +628,7 @@ UCHAR xx2;
(inb (pACB->IOPortBase + (address)))
#define DC390_read8_(address, base) \
(inb ((USHORT)(base) + (address)))
(inb ((u16)(base) + (address)))
#define DC390_read16(address) \
(inw (pACB->IOPortBase + (address)))
......@@ -688,7 +640,7 @@ UCHAR xx2;
outb ((value), pACB->IOPortBase + (address))
#define DC390_write8_(address,value,base) \
outb ((value), (USHORT)(base) + (address))
outb ((value), (u16)(base) + (address))
#define DC390_write16(address,value) \
outw ((value), pACB->IOPortBase + (address))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment