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