* [PATCH] kill obsolete typedefs and wrappers from tmscsim
@ 2004-06-24 8:15 Christoph Hellwig
2004-06-24 22:44 ` Guennadi Liakhovetski
0 siblings, 1 reply; 8+ messages in thread
From: Christoph Hellwig @ 2004-06-24 8:15 UTC (permalink / raw)
To: g.liakhovetski; +Cc: linux-scsi
--- 1.15/drivers/scsi/scsiiom.c 2004-06-23 21:43:11 +02:00
+++ edited/drivers/scsi/scsiiom.c 2004-06-23 22:13:54 +02:00
@@ -121,8 +121,8 @@
}
else /* write cmnd to bus */
{
- PUCHAR ptr; UCHAR i;
- ptr = (PUCHAR) pSRB->pcmd->cmnd;
+ u8 *ptr; UCHAR i;
+ ptr = (u8 *) pSRB->pcmd->cmnd;
for (i=0; i<pSRB->pcmd->cmd_len; i++)
DC390_write8 (ScsiFifo, *(ptr++));
}
@@ -159,13 +159,12 @@
{
PSRB pSRB;
UCHAR dstate;
- DEBUG0(USHORT pstate;PDEVDECL1);
+ DEBUG0(USHORT pstate; struct pci_dev *pdev = pACB->pdev);
- DEBUG0(PDEVSET1);
- DEBUG0(PCI_READ_CONFIG_WORD (PDEV, PCI_STATUS, &pstate));
+ DEBUG0(pci_read_config_word(pdev, PCI_STATUS, &pstate));
DEBUG0(if (pstate & (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY))\
{ printk(KERN_WARNING "DC390: PCI state = %04x!\n", pstate); \
- PCI_WRITE_CONFIG_WORD (PDEV, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY));});
+ pci_write_config_word(pdev, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY));});
dstate = DC390_read8 (DMA_Status);
@@ -222,7 +221,7 @@
PSRB pSRB;
UCHAR sstatus=0;
UCHAR phase;
- void (*stateV)( PACB, PSRB, PUCHAR );
+ void (*stateV)( PACB, PSRB, u8 *);
UCHAR istate, istatus;
#if DMA_INT
UCHAR dstatus;
@@ -345,10 +344,10 @@
}
static void
-dc390_DataOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_DataOut_0( PACB pACB, PSRB pSRB, u8 *psstatus)
{
UCHAR sstatus;
- PSGL psgl;
+ struct scatterlist *psgl;
UINT ResidCnt, xferCnt;
UCHAR dstate = 0;
@@ -409,13 +408,13 @@
}
static void
-dc390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_DataIn_0( PACB pACB, PSRB pSRB, u8 *psstatus)
{
UCHAR sstatus, residual, bval;
- PSGL psgl;
+ struct scatterlist *psgl;
UINT ResidCnt, i;
ULONG xferCnt;
- PUCHAR ptr;
+ u8 *ptr;
sstatus = *psstatus;
@@ -515,7 +514,7 @@
if( residual )
{
bval = DC390_read8 (ScsiFifo); /* get one residual byte */
- ptr = (PUCHAR) bus_to_virt( pSRB->SGBusAddr );
+ ptr = (u8 *) bus_to_virt( pSRB->SGBusAddr );
*ptr = bval;
pSRB->SGBusAddr++; xferCnt++;
pSRB->TotalXferredLen++;
@@ -534,12 +533,12 @@
}
static void
-dc390_Command_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_Command_0( PACB pACB, PSRB pSRB, u8 *psstatus)
{
}
static void
-dc390_Status_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_Status_0( PACB pACB, PSRB pSRB, u8 *psstatus)
{
pSRB->TargetStatus = DC390_read8 (ScsiFifo);
@@ -552,7 +551,7 @@
}
static void
-dc390_MsgOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_MsgOut_0( PACB pACB, PSRB pSRB, u8 *psstatus)
{
if( pSRB->SRBState & (SRB_UNEXPECT_RESEL+SRB_ABORT_SENT) )
*psstatus = SCSI_NOP0;
@@ -740,12 +739,12 @@
static void
dc390_restore_ptr (PACB pACB, PSRB pSRB)
{
- Scsi_Cmnd* pcmd = pSRB->pcmd;
- PSGL psgl;
+ struct scsi_cmnd *pcmd = pSRB->pcmd;
+ struct scatterlist *psgl;
pSRB->TotalXferredLen = 0;
pSRB->SGIndex = 0;
if (pcmd->use_sg) {
- pSRB->pSegmentList = (PSGL) pcmd->request_buffer;
+ pSRB->pSegmentList = (struct scatterlist *)pcmd->request_buffer;
psgl = pSRB->pSegmentList;
//dc390_pci_sync(pSRB);
@@ -773,7 +772,7 @@
sg_dma_len(&pSRB->Segmentx) = pcmd->request_bufflen - pSRB->Saved_Ptr;
pSRB->SGcount = 1;
- pSRB->pSegmentList = (PSGL) &pSRB->Segmentx;
+ pSRB->pSegmentList = (struct scatterlist *) &pSRB->Segmentx;
} else {
pSRB->SGcount = 0;
printk (KERN_INFO "DC390: RESTORE_PTR message for Transfer without Scatter-Gather ??\n");
@@ -809,7 +808,7 @@
/* read and eval received messages */
static void
-dc390_MsgIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_MsgIn_0( PACB pACB, PSRB pSRB, u8 *psstatus)
{
PDCB pDCB = pACB->pActiveDCB;
@@ -885,7 +884,7 @@
static void
dc390_DataIO_Comm( PACB pACB, PSRB pSRB, UCHAR ioDir)
{
- PSGL psgl;
+ struct scatterlist *psgl;
ULONG lval;
PDCB pDCB = pACB->pActiveDCB;
@@ -956,30 +955,30 @@
static void
-dc390_DataOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_DataOutPhase( PACB pACB, PSRB pSRB, u8 *psstatus)
{
dc390_DataIO_Comm (pACB, pSRB, WRITE_DIRECTION);
}
static void
-dc390_DataInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_DataInPhase( PACB pACB, PSRB pSRB, u8 *psstatus)
{
dc390_DataIO_Comm (pACB, pSRB, READ_DIRECTION);
}
static void
-dc390_CommandPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_CommandPhase( PACB pACB, PSRB pSRB, u8 *psstatus)
{
PDCB pDCB;
UCHAR i, cnt;
- PUCHAR ptr;
+ u8 *ptr;
DC390_write8 (ScsiCmd, RESET_ATN_CMD);
DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
if( !(pSRB->SRBFlag & AUTO_REQSENSE) )
{
- cnt = (UCHAR) pSRB->pcmd->cmd_len;
- ptr = (PUCHAR) pSRB->pcmd->cmnd;
+ cnt = (u8) pSRB->pcmd->cmd_len;
+ ptr = (u8 *) pSRB->pcmd->cmnd;
for(i=0; i < cnt; i++)
DC390_write8 (ScsiFifo, *(ptr++));
}
@@ -1000,7 +999,7 @@
}
static void
-dc390_StatusPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_StatusPhase( PACB pACB, PSRB pSRB, u8 *psstatus)
{
DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
pSRB->SRBState = SRB_STATUS;
@@ -1009,10 +1008,10 @@
}
static void
-dc390_MsgOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_MsgOutPhase( PACB pACB, PSRB pSRB, u8 *psstatus)
{
UCHAR bval, i, cnt;
- PUCHAR ptr;
+ u8 *ptr;
PDCB pDCB;
DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
@@ -1022,7 +1021,7 @@
cnt = pSRB->MsgCnt;
if( cnt )
{
- ptr = (PUCHAR) pSRB->MsgOutBuf;
+ ptr = (u8 *) pSRB->MsgOutBuf;
for(i=0; i < cnt; i++)
DC390_write8 (ScsiFifo, *(ptr++));
pSRB->MsgCnt = 0;
@@ -1062,7 +1061,7 @@
}
static void
-dc390_MsgInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_MsgInPhase( PACB pACB, PSRB pSRB, u8 *psstatus)
{
DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
if( !(pSRB->SRBState & SRB_MSGIN) )
@@ -1075,12 +1074,12 @@
}
static void
-dc390_Nop_0( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_Nop_0( PACB pACB, PSRB pSRB, u8 *psstatus)
{
}
static void
-dc390_Nop_1( PACB pACB, PSRB pSRB, PUCHAR psstatus)
+dc390_Nop_1( PACB pACB, PSRB pSRB, u8 *psstatus)
{
}
@@ -1330,9 +1329,9 @@
dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB )
{
UCHAR bval, status, i;
- PSCSICMD pcmd;
+ struct scsi_cmnd *pcmd;
PSCSI_INQDATA ptr;
- PSGL ptr2;
+ struct scatterlist *ptr2;
ULONG swlval;
pcmd = pSRB->pcmd;
@@ -1340,9 +1339,11 @@
dc390_pci_unmap(pSRB);
status = pSRB->TargetStatus;
- ptr = (PSCSI_INQDATA) (pcmd->request_buffer);
- if( pcmd->use_sg )
- ptr = (PSCSI_INQDATA) (page_address(((PSGL) ptr)->page) + ((PSGL) ptr)->offset);
+ if (pcmd->use_sg) {
+ ptr2 = (struct scatterlist *) ptr;
+ ptr = (PSCSI_INQDATA) (page_address(ptr2->page) + ptr2->offset);
+ } else
+ ptr = (PSCSI_INQDATA) (pcmd->request_buffer);
DEBUG0(printk (" SRBdone (%02x,%08x), SRB %p, pid %li\n", status, pcmd->result,\
pSRB, pcmd->pid));
@@ -1395,8 +1396,6 @@
pSRB->RetryCnt--;
pSRB->AdaptStatus = 0;
pSRB->TargetStatus = 0;
- //*((PUINT) &(pSRB->CmdBlock[0])) = pSRB->Segment0[0];
- //*((PUINT) &(pSRB->CmdBlock[4])) = pSRB->Segment0[1];
/* Don't retry on TEST_UNIT_READY */
if( pSRB->pcmd->cmnd[0] == TEST_UNIT_READY /* || pSRB->pcmd->cmnd[0] == START_STOP */)
{
@@ -1569,12 +1568,12 @@
/* Remove all SRBs from Going list and inform midlevel */
static void
-dc390_DoingSRB_Done( PACB pACB, PSCSICMD cmd )
+dc390_DoingSRB_Done(PACB pACB, struct scsi_cmnd *cmd)
{
PDCB pDCB, pdcb;
PSRB psrb, psrb2;
UCHAR i;
- PSCSICMD pcmd;
+ struct scsi_cmnd *pcmd;
pDCB = pACB->pLinkDCB;
pdcb = pDCB;
@@ -1660,7 +1659,7 @@
static void __inline__
dc390_RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB )
{
- PSCSICMD pcmd;
+ struct scsi_cmnd *pcmd;
pcmd = pSRB->pcmd;
===== drivers/scsi/tmscsim.c 1.42 vs edited =====
--- 1.42/drivers/scsi/tmscsim.c 2004-06-23 21:43:11 +02:00
+++ edited/drivers/scsi/tmscsim.c 2004-06-24 10:02:20 +02:00
@@ -221,11 +221,8 @@
#endif
#define DCBDEBUG1(x) C_NOP
-/* Includes */
+#include <linux/config.h>
#include <linux/module.h>
-#include <asm/dma.h>
-#include <asm/io.h>
-#include <asm/system.h>
#include <linux/delay.h>
#include <linux/signal.h>
#include <linux/sched.h>
@@ -235,44 +232,30 @@
#include <linux/pci.h>
#include <linux/proc_fs.h>
#include <linux/string.h>
-#include <linux/ctype.h>
#include <linux/mm.h>
-#include <linux/config.h>
-#include <linux/version.h>
#include <linux/blkdev.h>
#include <linux/timer.h>
#include <linux/interrupt.h>
+#include <linux/init.h>
+#include <linux/spinlock.h>
+#include <asm/io.h>
+#if 0
+#include <scsi/scsi.h>
+#include <scsi/scsi_cmnd.h>
+#include <scsi/scsi_device.h>
+#else
#include "scsi.h"
+#endif
#include <scsi/scsi_host.h>
-#include <linux/stat.h>
#include <scsi/scsicam.h>
#include "dc390.h"
#define PCI_DEVICE_ID_AMD53C974 PCI_DEVICE_ID_AMD_SCSI
-/* Locking */
-
-/* Note: Starting from 2.1.9x, the mid-level scsi code issues a
- * spinlock_irqsave (&io_request_lock) before calling the driver's
- * routines, so we don't need to lock, except in the IRQ handler.
- * The policy 3, let the midlevel scsi code do the io_request_locks
- * and us locking on a driver specific lock, shouldn't hurt anybody; it
- * just causes a minor performance degradation for setting the locks.
- */
-/* spinlock things
- * level 3: lock on both adapter specific locks and (global) io_request_lock
- * level 2: lock on adapter specific locks only
- * level 1: rely on the locking of the mid level code (io_request_lock)
- * undef : traditional save_flags; cli; restore_flags;
- */
-
-#include <linux/init.h>
-#include <linux/spinlock.h>
-
-static struct pci_device_id tmscsim_pci_tbl[] = {
+ static struct pci_device_id tmscsim_pci_tbl[] = {
{
.vendor = PCI_VENDOR_ID_AMD,
.device = PCI_DEVICE_ID_AMD53C974,
@@ -283,44 +266,29 @@
};
MODULE_DEVICE_TABLE(pci, tmscsim_pci_tbl);
-/* These macros are used for uniform access to 2.0.x and 2.1.x PCI config space*/
-
-#define PDEV pdev
-#define PDEVDECL struct pci_dev *pdev
-#define PDEVDECL0 struct pci_dev *pdev = NULL
-#define PDEVDECL1 struct pci_dev *pdev
-#define PDEVSET pACB->pdev=pdev
-#define PDEVSET1 pdev=pACB->pdev
-#define PCI_WRITE_CONFIG_BYTE(pd, rv, bv) pci_write_config_byte (pd, rv, bv)
-#define PCI_READ_CONFIG_BYTE(pd, rv, bv) pci_read_config_byte (pd, rv, bv)
-#define PCI_WRITE_CONFIG_WORD(pd, rv, bv) pci_write_config_word (pd, rv, bv)
-#define PCI_READ_CONFIG_WORD(pd, rv, bv) pci_read_config_word (pd, rv, bv)
-#define PCI_PRESENT (1)
-#define PCI_GET_IO_AND_IRQ do{io_port = pci_resource_start (pdev, 0); irq = pdev->irq;} while(0)
-
#include "tmscsim.h"
static UCHAR dc390_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB );
-static void dc390_DataOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_Command_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_Status_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_MsgOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_MsgIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_DataOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_DataInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_CommandPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_StatusPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_MsgOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_MsgInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_Nop_0( PACB pACB, PSRB pSRB, PUCHAR psstatus);
-static void dc390_Nop_1( PACB pACB, PSRB pSRB, PUCHAR psstatus);
+static void dc390_DataOut_0( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_DataIn_0( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_Command_0( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_Status_0( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_MsgOut_0( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_MsgIn_0( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_DataOutPhase( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_DataInPhase( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_CommandPhase( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_StatusPhase( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_MsgOutPhase( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_MsgInPhase( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_Nop_0( PACB pACB, PSRB pSRB, u8 *psstatus);
+static void dc390_Nop_1( PACB pACB, PSRB pSRB, u8 *psstatus);
static void dc390_SetXferRate( PACB pACB, PDCB pDCB );
static void dc390_Disconnect( PACB pACB );
static void dc390_Reselect( PACB pACB );
static void dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB );
-static void dc390_DoingSRB_Done( PACB pACB, PSCSICMD cmd );
+static void dc390_DoingSRB_Done( PACB pACB, struct scsi_cmnd * cmd);
static void dc390_ScsiRstDetect( PACB pACB );
static void dc390_ResetSCSIBus( PACB pACB );
static void __inline__ dc390_RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB );
@@ -328,7 +296,7 @@
static void __inline__ dc390_EnableMsgOut_Abort (PACB, PSRB);
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, ULONG io_port, UCHAR Irq, UCHAR index );
static void dc390_updateDCB (PACB pACB, PDCB pDCB);
static int DC390_proc_info (struct Scsi_Host *shpnt, char *buffer, char **start,
@@ -351,7 +319,7 @@
MODULE_LICENSE("GPL");
MODULE_SUPPORTED_DEVICE("sd,sr,sg,st");
-static PVOID dc390_phase0[]={
+static void *dc390_phase0[]={
dc390_DataOut_0,
dc390_DataIn_0,
dc390_Command_0,
@@ -363,7 +331,7 @@
dc390_Nop_1
};
-static PVOID dc390_phase1[]={
+static void *dc390_phase1[]={
dc390_DataOutPhase,
dc390_DataInPhase,
dc390_CommandPhase,
@@ -419,7 +387,7 @@
**********************************************************************/
-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;
@@ -428,9 +396,9 @@
*regval = 0xc0;
else
*regval = 0x80;
- PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval);
+ pci_write_config_byte(pdev, *regval, bval);
if(mode == DISABLE_CE)
- PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval);
+ pci_write_config_byte(pdev, *regval, bval);
udelay(160);
}
@@ -438,9 +406,8 @@
/* Override EEprom values with explicitly set values */
static void __devinit dc390_EEprom_Override (UCHAR index)
{
- PUCHAR ptr;
- UCHAR id;
- ptr = (PUCHAR) dc390_eepromBuf[index];
+ u8 *ptr = (u8 *) dc390_eepromBuf[index];
+ u8 id;
/* Adapter Settings */
if (tmscsim[0] != -2)
@@ -527,7 +494,7 @@
__setup("tmscsim=", dc390_setup);
#endif
-static void __devinit dc390_EEpromOutDI( PDEVDECL, PUCHAR regval, UCHAR Carry )
+static void __devinit dc390_EEpromOutDI(struct pci_dev *pdev, u8 *regval, u8 Carry)
{
UCHAR bval;
@@ -536,27 +503,27 @@
{
bval = 0x40;
*regval = 0x80;
- PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval);
+ pci_write_config_byte(pdev, *regval, bval);
}
udelay(160);
bval |= 0x80;
- PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval);
+ pci_write_config_byte(pdev, *regval, bval);
udelay(160);
bval = 0;
- PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval);
+ pci_write_config_byte(pdev, *regval, bval);
udelay(160);
}
-static UCHAR __devinit dc390_EEpromInDO( PDEVDECL )
+static u8 __devinit dc390_EEpromInDO(struct pci_dev *pdev)
{
UCHAR bval;
- PCI_WRITE_CONFIG_BYTE(PDEV, 0x80, 0x80);
+ pci_write_config_byte(pdev, 0x80, 0x80);
udelay(160);
- PCI_WRITE_CONFIG_BYTE(PDEV, 0x80, 0x40);
+ pci_write_config_byte(pdev, 0x80, 0x40);
udelay(160);
- PCI_READ_CONFIG_BYTE(PDEV, 0x00, &bval);
+ pci_read_config_byte(pdev, 0x00, &bval);
if(bval == 0x22)
return(1);
else
@@ -564,7 +531,7 @@
}
-static USHORT __devinit dc390_EEpromGetData1( PDEVDECL )
+static u16 __devinit dc390_EEpromGetData1(struct pci_dev *pdev)
{
UCHAR i;
UCHAR carryFlag;
@@ -574,14 +541,14 @@
for(i=0; i<16; i++)
{
wval <<= 1;
- carryFlag = dc390_EEpromInDO(PDEV);
+ carryFlag = dc390_EEpromInDO(pdev);
wval |= carryFlag;
}
return(wval);
}
-static void __devinit dc390_Prepare( PDEVDECL, PUCHAR regval, UCHAR EEpromCmd )
+static void __devinit dc390_Prepare(struct pci_dev *pdev, u8 *regval, u8 EEpromCmd)
{
UCHAR i,j;
UCHAR carryFlag;
@@ -590,14 +557,14 @@
j = 0x80;
for(i=0; i<9; i++)
{
- dc390_EEpromOutDI(PDEV,regval,carryFlag);
+ dc390_EEpromOutDI(pdev, regval, carryFlag);
carryFlag = (EEpromCmd & j) ? 1 : 0;
j >>= 1;
}
}
-static void __devinit dc390_ReadEEprom( PDEVDECL, PUSHORT ptr)
+static void __devinit dc390_ReadEEprom(struct pci_dev *pdev, u16 *ptr)
{
UCHAR regval,cmd;
UCHAR i;
@@ -605,10 +572,10 @@
cmd = EEPROM_READ;
for(i=0; i<0x40; i++)
{
- dc390_EnDisableCE(ENABLE_CE, PDEV, ®val);
- dc390_Prepare(PDEV, ®val, cmd++);
- *ptr++ = dc390_EEpromGetData1(PDEV);
- dc390_EnDisableCE(DISABLE_CE, PDEV, ®val);
+ dc390_EnDisableCE(ENABLE_CE, pdev, ®val);
+ dc390_Prepare(pdev, ®val, cmd++);
+ *ptr++ = dc390_EEpromGetData1(pdev);
+ dc390_EnDisableCE(DISABLE_CE, pdev, ®val);
}
}
@@ -619,13 +586,13 @@
dc390_eepromBuf[index][EE_DELAY] = interpd [dc390_eepromBuf[index][EE_DELAY]];
}
-static UCHAR __devinit dc390_CheckEEpromCheckSum( PDEVDECL, UCHAR index )
+static UCHAR __devinit dc390_CheckEEpromCheckSum(struct pci_dev *pdev, u8 index)
{
UCHAR i;
char EEbuf[128];
- USHORT wval, *ptr = (PUSHORT)EEbuf;
+ USHORT wval, *ptr = (u16 *)EEbuf;
- dc390_ReadEEprom( PDEV, ptr );
+ dc390_ReadEEprom(pdev, ptr);
memcpy (dc390_eepromBuf[index], EEbuf, EE_ADAPT_SCSI_ID);
memcpy (&dc390_eepromBuf[index][EE_ADAPT_SCSI_ID],
&EEbuf[REAL_EE_ADAPT_SCSI_ID], EE_LEN - EE_ADAPT_SCSI_ID);
@@ -675,22 +642,6 @@
* Lists are managed using two pointers and eventually a counter
*/
-
-#if 0
-/* Look for a SCSI cmd in a SRB queue */
-static PSRB dc390_find_cmd_in_SRBq (PSCSICMD cmd, PSRB queue)
-{
- PSRB q = queue;
- while (q)
- {
- if (q->pcmd == cmd) return q;
- q = q->pNextSRB;
- if (q == queue) return 0;
- }
- return q;
-}
-#endif
-
/* Return next free SRB */
static __inline__ PSRB dc390_Free_get ( PACB pACB )
{
@@ -916,7 +867,7 @@
static int dc390_pci_map (PSRB pSRB)
{
int error = 0;
- Scsi_Cmnd *pcmd = pSRB->pcmd;
+ struct scsi_cmnd *pcmd = pSRB->pcmd;
struct pci_dev *pdev = pSRB->pSRBDCB->pDCBACB->pdev;
dc390_cmd_scp_t* cmdp = ((dc390_cmd_scp_t*)(&pcmd->SCp));
@@ -933,9 +884,9 @@
DEBUG1(printk("%s(): Mapped sense buffer %p at %x\n", __FUNCTION__, pcmd->sense_buffer, cmdp->saved_dma_handle));
/* Map SG list */
} else if (pcmd->use_sg) {
- pSRB->pSegmentList = (PSGL) pcmd->request_buffer;
+ pSRB->pSegmentList = (struct scatterlist *) pcmd->request_buffer;
pSRB->SGcount = pci_map_sg(pdev, pSRB->pSegmentList, pcmd->use_sg,
- scsi_to_pci_dma_dir(pcmd->sc_data_direction));
+ pcmd->sc_data_direction);
/* TODO: error handling */
if (!pSRB->SGcount)
error = 1;
@@ -945,7 +896,7 @@
} else if (pcmd->request_buffer && pcmd->request_bufflen) {
pSRB->pSegmentList = dc390_sg_build_single(&pSRB->Segmentx, pcmd->request_buffer, pcmd->request_bufflen);
pSRB->SGcount = pci_map_sg(pdev, pSRB->pSegmentList, 1,
- scsi_to_pci_dma_dir(pcmd->sc_data_direction));
+ pcmd->sc_data_direction);
cmdp->saved_dma_handle = sg_dma_address(pSRB->pSegmentList);
/* TODO: error handling */
@@ -962,7 +913,7 @@
/* Remove pci mapping */
static void dc390_pci_unmap (PSRB pSRB)
{
- Scsi_Cmnd* pcmd = pSRB->pcmd;
+ struct scsi_cmnd *pcmd = pSRB->pcmd;
struct pci_dev *pdev = pSRB->pSRBDCB->pDCBACB->pdev;
DEBUG1(dc390_cmd_scp_t* cmdp = ((dc390_cmd_scp_t*)(&pcmd->SCp)));
@@ -970,10 +921,10 @@
pci_unmap_sg(pdev, &pSRB->Segmentx, 1, DMA_FROM_DEVICE);
DEBUG1(printk("%s(): Unmapped sense buffer at %x\n", __FUNCTION__, cmdp->saved_dma_handle));
} else if (pcmd->use_sg) {
- pci_unmap_sg(pdev, pcmd->request_buffer, pcmd->use_sg, scsi_to_pci_dma_dir(pcmd->sc_data_direction));
+ pci_unmap_sg(pdev, pcmd->request_buffer, pcmd->use_sg, pcmd->sc_data_direction);
DEBUG1(printk("%s(): Unmapped SG at %p with %d elements\n", __FUNCTION__, pcmd->request_buffer, pcmd->use_sg));
} else if (pcmd->request_buffer && pcmd->request_bufflen) {
- pci_unmap_sg(pdev, &pSRB->Segmentx, 1, scsi_to_pci_dma_dir(pcmd->sc_data_direction));
+ pci_unmap_sg(pdev, &pSRB->Segmentx, 1, pcmd->sc_data_direction);
DEBUG1(printk("%s(): Unmapped request buffer at %x\n", __FUNCTION__, cmdp->saved_dma_handle));
}
}
@@ -987,7 +938,7 @@
*
***********************************************************************/
-static void dc390_BuildSRB (Scsi_Cmnd* pcmd, PDCB pDCB, PSRB pSRB)
+static void dc390_BuildSRB (struct scsi_cmnd *pcmd, PDCB pDCB, PSRB pSRB)
{
pSRB->pSRBDCB = pDCB;
pSRB->pcmd = pcmd;
@@ -1015,8 +966,8 @@
}
/***********************************************************************
- * Function : static int DC390_queue_command (Scsi_Cmnd *cmd,
- * void (*done)(Scsi_Cmnd *))
+ * Function : static int DC390_queue_command (struct scsi_cmnd *cmd,
+ * void (*done)(struct scsi_cmnd *))
*
* Purpose : enqueues a SCSI command
*
@@ -1033,7 +984,8 @@
*
***********************************************************************/
-static int DC390_queue_command (Scsi_Cmnd *cmd, void (* done)(Scsi_Cmnd *))
+static int DC390_queue_command(struct scsi_cmnd *cmd,
+ void (* done)(struct scsi_cmnd *))
{
PDCB pDCB = (PDCB) cmd->device->hostdata;
PSRB pSRB;
@@ -1223,7 +1175,9 @@
static void dc390_dumpinfo (PACB pACB, PDCB pDCB, PSRB pSRB)
{
- USHORT pstat; PDEVDECL1;
+ struct pci_dev *pdev;
+ USHORT pstat;
+
if (!pDCB) pDCB = pACB->pActiveDCB;
if (!pSRB && pDCB) pSRB = pDCB->pActiveSRB;
@@ -1257,14 +1211,16 @@
DC390_read32(DMA_Wk_ByteCntr), DC390_read32(DMA_Wk_AddrCntr),
DC390_read8(DMA_Status), DC390_read32(DMA_ScsiBusCtrl));
DC390_write32 (DMA_ScsiBusCtrl, EN_INT_ON_PCI_ABORT);
- PDEVSET1; PCI_READ_CONFIG_WORD(PDEV, PCI_STATUS, &pstat);
+
+ pdev = pACB->pdev;
+ pci_read_config_word(pdev, PCI_STATUS, &pstat);
printk ("DC390: Register dump: PCI Status: %04x\n", pstat);
printk ("DC390: In case of driver trouble read linux/Documentation/scsi/tmscsim.txt\n");
}
/***********************************************************************
- * Function : int DC390_abort (Scsi_Cmnd *cmd)
+ * Function : int DC390_abort (struct scsi_cmnd *cmd)
*
* Purpose : Abort an errant SCSI command
*
@@ -1275,7 +1231,7 @@
* Status: Buggy !
***********************************************************************/
-static int DC390_abort (Scsi_Cmnd *cmd)
+static int DC390_abort (struct scsi_cmnd *cmd)
{
PDCB pDCB = (PDCB) cmd->device->hostdata;
PSRB pSRB, psrb;
@@ -1470,7 +1426,7 @@
#endif
/***********************************************************************
- * Function : int DC390_reset (Scsi_Cmnd *cmd, ...)
+ * Function : int DC390_reset (struct scsi_cmnd *cmd, ...)
*
* Purpose : perform a hard reset on the SCSI bus
*
@@ -1480,7 +1436,7 @@
* Returns : 0 on success.
***********************************************************************/
-static int DC390_reset (Scsi_Cmnd *cmd)
+static int DC390_reset (struct scsi_cmnd *cmd)
{
UCHAR bval;
PACB pACB = (PACB) cmd->device->host->hostdata;
@@ -1589,7 +1545,7 @@
* 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, ULONG io_port, UCHAR Irq, UCHAR index)
{
PACB pACB;
UCHAR i;
@@ -1660,7 +1616,7 @@
* 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, ULONG io_port, UCHAR Irq, UCHAR index)
{
PACB pACB, pACB2;
UCHAR dstate;
@@ -1731,13 +1687,14 @@
}
-static void __devinit dc390_set_pci_cfg (PDEVDECL)
+static void __devinit dc390_set_pci_cfg (struct pci_dev *pdev)
{
- USHORT cmd;
- PCI_READ_CONFIG_WORD (PDEV, PCI_COMMAND, &cmd);
+ u16 cmd;
+
+ pci_read_config_word(pdev, PCI_COMMAND, &cmd);
cmd |= PCI_COMMAND_SERR | PCI_COMMAND_PARITY | PCI_COMMAND_IO;
- PCI_WRITE_CONFIG_WORD (PDEV, PCI_COMMAND, cmd);
- PCI_WRITE_CONFIG_WORD (PDEV, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY));
+ pci_write_config_word(pdev, PCI_COMMAND, cmd);
+ pci_write_config_word(pdev, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY));
}
/**
@@ -1858,7 +1815,7 @@
return 0;
}
-static Scsi_Host_Template driver_template = {
+static struct scsi_host_template driver_template = {
.module = THIS_MODULE,
.proc_name = "tmscsim",
.proc_info = DC390_proc_info,
===== drivers/scsi/tmscsim.h 1.7 vs edited =====
--- 1.7/drivers/scsi/tmscsim.h 2004-05-28 00:52:39 +02:00
+++ edited/drivers/scsi/tmscsim.h 2004-06-23 22:20:50 +02:00
@@ -29,17 +29,6 @@
typedef u32 UINT; /* 32 bits */
typedef unsigned long ULONG; /* 32/64 bits */
-typedef UCHAR *PUCHAR;
-typedef USHORT *PUSHORT;
-typedef UINT *PUINT;
-typedef ULONG *PULONG;
-typedef Scsi_Host_Template *PSHT;
-typedef struct Scsi_Host *PSH;
-typedef Scsi_Device *PSCSIDEV;
-typedef Scsi_Cmnd *PSCSICMD;
-typedef void *PVOID;
-typedef struct scatterlist *PSGL, SGL;
-
/*;-----------------------------------------------------------------------*/
typedef struct _SyncMsg
@@ -81,11 +70,11 @@
struct _SRB *pNextSRB;
struct _DCB *pSRBDCB;
-PSCSICMD pcmd;
-PSGL pSegmentList;
+struct scsi_cmnd *pcmd;
+struct scatterlist *pSegmentList;
/* 0x10: */
-SGL Segmentx; /* make a one entry of S/G list table */
+struct scatterlist Segmentx; /* make a one entry of S/G list table */
/* 0x1c: */
ULONG SGBusAddr; /*;a segment starting address as seen by AM53C974A*/
@@ -135,11 +124,6 @@
struct _DCB *pNextDCB;
struct _ACB *pDCBACB;
-/* Aborted Commands */
-//PSCSICMD AboIORBhead;
-//PSCSICMD AboIORBtail;
-//ULONG AboIORBcnt;
-
/* 0x08: */
/* Queued SRBs */
PSRB pWaitingSRB;
@@ -186,7 +170,7 @@
*/
struct _ACB
{
-PSH pScsiHost;
+struct Scsi_Host *pScsiHost;
struct _ACB *pNextACB;
USHORT IOPortBase;
UCHAR IRQLevel;
@@ -223,7 +207,7 @@
UCHAR MsgLen;
UCHAR Ignore_IRQ; /* Not used */
-PDEVDECL1; /* Pointer to PCI cfg. space */
+struct pci_dev *pdev;
ULONG Cmds;
UINT SelLost;
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: [PATCH] kill obsolete typedefs and wrappers from tmscsim 2004-06-24 8:15 [PATCH] kill obsolete typedefs and wrappers from tmscsim Christoph Hellwig @ 2004-06-24 22:44 ` Guennadi Liakhovetski 2004-06-25 9:50 ` Christoph Hellwig 0 siblings, 1 reply; 8+ messages in thread From: Guennadi Liakhovetski @ 2004-06-24 22:44 UTC (permalink / raw) To: Christoph Hellwig; +Cc: linux-scsi [-- Attachment #1: Type: TEXT/PLAIN, Size: 1607 bytes --] Great! Thanks very much, Christoph! It would take me, perhaps, until 2.8 to clean up all that stuff. However, I've got a couple of questions to this your patch: On Thu, 24 Jun 2004, Christoph Hellwig wrote: > - PUCHAR ptr; UCHAR i; > - ptr = (PUCHAR) pSRB->pcmd->cmnd; > + u8 *ptr; UCHAR i; > + ptr = (u8 *) pSRB->pcmd->cmnd; Why don't we remove all UCHAR / USHORT / UINT / ULONG... types altogether? PUCHAR == (UCHAR*), and you replace PUCHAR with (u8*), although it is not obvious, that UCHAR == u8... I know, many scsi (at least) drivers use them, and each of them defines them itself, but... As well as all those PACB, PSRB, PDCB,... > @@ -1340,9 +1339,11 @@ > dc390_pci_unmap(pSRB); > > status = pSRB->TargetStatus; > - ptr = (PSCSI_INQDATA) (pcmd->request_buffer); > - if( pcmd->use_sg ) > - ptr = (PSCSI_INQDATA) (page_address(((PSGL) ptr)->page) + ((PSGL) ptr)->offset); > + if (pcmd->use_sg) { > + ptr2 = (struct scatterlist *) ptr; > + ptr = (PSCSI_INQDATA) (page_address(ptr2->page) + ptr2->offset); > + } else > + ptr = (PSCSI_INQDATA) (pcmd->request_buffer); > > DEBUG0(printk (" SRBdone (%02x,%08x), SRB %p, pid %li\n", status, pcmd->result,\ > pSRB, pcmd->pid)); This seems a typo (ptr uninitialised). Attaching a new, extended, and, hopefully, fixed version of your patch. Please, have a look. I think, it is better to push all this cleanup as a single patch, even though it looks horribly big... It compiles, will run-test tomorrow (well, already today, but in about 20 hours). Thanks Guennadi --- Guennadi Liakhovetski [-- Attachment #2: Type: TEXT/PLAIN, Size: 70177 bytes --] diff -u a/drivers/scsi/scsiiom.c b/drivers/scsi/scsiiom.c --- a/drivers/scsi/scsiiom.c 23 Jun 2004 21:40:16 +++ b/drivers/scsi/scsiiom.c 24 Jun 2004 22:28:19 @@ -6,7 +6,7 @@ ***********************************************************************/ /* $Id: scsiiom.c,v 2.55.2.17 2000/12/20 00:39:37 garloff Exp $ */ static void __inline__ -dc390_freetag (PDCB pDCB, PSRB pSRB) +dc390_freetag (struct dc390_DCB* pDCB, struct dc390_SRB* pSRB) { if (pSRB->TagNumber < 255) { pDCB->TagMask &= ~(1 << pSRB->TagNumber); /* free tag mask */ @@ -15,10 +15,10 @@ } -static UCHAR -dc390_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB ) +static u8 +dc390_StartSCSI( struct dc390_ACB* pACB, struct dc390_DCB* pDCB, struct dc390_SRB* pSRB ) { - UCHAR cmd; UCHAR disc_allowed, try_sync_nego; + u8 cmd; u8 disc_allowed, try_sync_nego; pSRB->ScsiPhase = SCSI_NOP0; @@ -69,7 +69,7 @@ /* Change 99/05/31: Don't use tags when not disconnecting (BUSY) */ if ((pDCB->SyncMode & EN_TAG_QUEUEING) && disc_allowed) { - UCHAR tag_no = 0; + u8 tag_no = 0; while ((1 << tag_no) & pDCB->TagMask) tag_no++; if (tag_no >= sizeof (pDCB->TagMask)*8 || tag_no >= pDCB->MaxCommand) { printk (KERN_WARNING "DC390: Out of tags for Dev. %02x %02x\n", pDCB->TargetID, pDCB->TargetLUN); @@ -92,7 +92,7 @@ if (try_sync_nego) { - UCHAR Sync_Off = pDCB->SyncOffset; + u8 Sync_Off = pDCB->SyncOffset; DEBUG0(printk (KERN_INFO "DC390: NEW Sync Nego code triggered (%i %i)\n", pDCB->TargetID, pDCB->TargetLUN)); pSRB->MsgOutBuf[0] = EXTENDED_MESSAGE; pSRB->MsgOutBuf[1] = 3; @@ -121,8 +121,8 @@ } else /* write cmnd to bus */ { - PUCHAR ptr; UCHAR i; - ptr = (PUCHAR) pSRB->pcmd->cmnd; + u8 *ptr; u8 i; + ptr = (u8 *) pSRB->pcmd->cmnd; for (i=0; i<pSRB->pcmd->cmd_len; i++) DC390_write8 (ScsiFifo, *(ptr++)); } @@ -154,18 +154,17 @@ #if DMA_INT /* This is similar to AM53C974.c ... */ -static UCHAR -dc390_dma_intr (PACB pACB) +static u8 +dc390_dma_intr (struct dc390_ACB* pACB) { - PSRB pSRB; - UCHAR dstate; - DEBUG0(USHORT pstate;PDEVDECL1); + struct dc390_SRB* pSRB; + u8 dstate; + DEBUG0(u16 pstate; struct pci_dev *pdev = pACB->pdev); - DEBUG0(PDEVSET1); - DEBUG0(PCI_READ_CONFIG_WORD (PDEV, PCI_STATUS, &pstate)); + DEBUG0(pci_read_config_word(pdev, PCI_STATUS, &pstate)); DEBUG0(if (pstate & (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY))\ { printk(KERN_WARNING "DC390: PCI state = %04x!\n", pstate); \ - PCI_WRITE_CONFIG_WORD (PDEV, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY));}); + pci_write_config_word(pdev, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY));}); dstate = DC390_read8 (DMA_Status); @@ -179,7 +178,7 @@ } if (dstate & DMA_XFER_DONE) { - UINT residual, xferCnt; int ctr = 6000000; + u32 residual, xferCnt; int ctr = 6000000; if (! (DC390_read8 (DMA_Cmd) & READ_DIRECTION)) { do @@ -217,18 +216,18 @@ static irqreturn_t __inline__ DC390_Interrupt( int irq, void *dev_id, struct pt_regs *regs) { - PACB pACB, pACB2; - PDCB pDCB; - PSRB pSRB; - UCHAR sstatus=0; - UCHAR phase; - void (*stateV)( PACB, PSRB, PUCHAR ); - UCHAR istate, istatus; + struct dc390_ACB *pACB, *pACB2; + struct dc390_DCB *pDCB; + struct dc390_SRB *pSRB; + u8 sstatus=0; + u8 phase; + void (*stateV)( struct dc390_ACB*, struct dc390_SRB*, u8 *); + u8 istate, istatus; #if DMA_INT - UCHAR dstatus; + u8 dstatus; #endif - pACB = (PACB)dev_id; + pACB = (struct dc390_ACB*)dev_id; for (pACB2 = dc390_pACB_start; (pACB2 && pACB2 != pACB); pACB2 = pACB2->pNextACB); if (!pACB2) { @@ -323,7 +322,7 @@ ( *stateV )( pACB, pSRB, &sstatus ); pSRB->ScsiPhase = sstatus & 7; - phase = (UCHAR) sstatus & 7; + phase = (u8) sstatus & 7; DEBUG1(printk (KERN_INFO "DC390: [%i]%s(1) (%02x)\n", phase, dc390_p1_str[phase], sstatus)); stateV = (void *) dc390_phase1[phase]; ( *stateV )( pACB, pSRB, &sstatus ); @@ -345,12 +344,12 @@ } static void -dc390_DataOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_DataOut_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { - UCHAR sstatus; - PSGL psgl; - UINT ResidCnt, xferCnt; - UCHAR dstate = 0; + u8 sstatus; + struct scatterlist *psgl; + u32 ResidCnt, xferCnt; + u8 dstate = 0; sstatus = *psstatus; @@ -390,10 +389,10 @@ } else { - ResidCnt = (UINT) DC390_read8 (Current_Fifo) & 0x1f; - ResidCnt |= (UINT) DC390_read8 (CtcReg_High) << 16; - ResidCnt |= (UINT) DC390_read8 (CtcReg_Mid) << 8; - ResidCnt += (UINT) DC390_read8 (CtcReg_Low); + ResidCnt = (u32) DC390_read8 (Current_Fifo) & 0x1f; + ResidCnt |= (u32) DC390_read8 (CtcReg_High) << 16; + ResidCnt |= (u32) DC390_read8 (CtcReg_Mid) << 8; + ResidCnt += (u32) DC390_read8 (CtcReg_Low); xferCnt = pSRB->SGToBeXferLen - ResidCnt; pSRB->SGBusAddr += xferCnt; @@ -409,13 +408,13 @@ } static void -dc390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_DataIn_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { - UCHAR sstatus, residual, bval; - PSGL psgl; - UINT ResidCnt, i; - ULONG xferCnt; - PUCHAR ptr; + u8 sstatus, residual, bval; + struct scatterlist *psgl; + u32 ResidCnt, i; + unsigned long xferCnt; + u8 *ptr; sstatus = *psstatus; @@ -443,9 +442,9 @@ } dc390_laststatus &= ~0xff000000; dc390_laststatus |= dstate << 24; - DEBUG1(ResidCnt = ((ULONG) DC390_read8 (CtcReg_High) << 16) \ - + ((ULONG) DC390_read8 (CtcReg_Mid) << 8) \ - + ((ULONG) DC390_read8 (CtcReg_Low))); + DEBUG1(ResidCnt = ((unsigned long) DC390_read8 (CtcReg_High) << 16) \ + + ((unsigned long) DC390_read8 (CtcReg_Mid) << 8) \ + + ((unsigned long) DC390_read8 (CtcReg_Low))); DEBUG1(printk (KERN_DEBUG "Count_2_Zero (ResidCnt=%i,ToBeXfer=%li),", ResidCnt, pSRB->SGToBeXferLen)); DC390_write8 (DMA_Cmd, READ_DIRECTION+DMA_IDLE_CMD); /* | DMA_INT */ @@ -501,11 +500,11 @@ dc390_laststatus &= ~0xff000000; dc390_laststatus |= bval << 24; DEBUG1(printk (KERN_DEBUG "Blast: Read %i times DMA_Status %02x", 0xa000-i, bval)); - ResidCnt = (UINT) DC390_read8 (CtcReg_High); + ResidCnt = (u32) DC390_read8 (CtcReg_High); ResidCnt <<= 8; - ResidCnt |= (UINT) DC390_read8 (CtcReg_Mid); + ResidCnt |= (u32) DC390_read8 (CtcReg_Mid); ResidCnt <<= 8; - ResidCnt |= (UINT) DC390_read8 (CtcReg_Low); + ResidCnt |= (u32) DC390_read8 (CtcReg_Low); xferCnt = pSRB->SGToBeXferLen - ResidCnt; pSRB->SGBusAddr += xferCnt; @@ -515,7 +514,7 @@ if( residual ) { bval = DC390_read8 (ScsiFifo); /* get one residual byte */ - ptr = (PUCHAR) bus_to_virt( pSRB->SGBusAddr ); + ptr = (u8 *) bus_to_virt( pSRB->SGBusAddr ); *ptr = bval; pSRB->SGBusAddr++; xferCnt++; pSRB->TotalXferredLen++; @@ -534,12 +533,12 @@ } static void -dc390_Command_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_Command_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { } static void -dc390_Status_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_Status_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { pSRB->TargetStatus = DC390_read8 (ScsiFifo); @@ -552,7 +551,7 @@ } static void -dc390_MsgOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_MsgOut_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { if( pSRB->SRBState & (SRB_UNEXPECT_RESEL+SRB_ABORT_SENT) ) *psstatus = SCSI_NOP0; @@ -561,7 +560,7 @@ static void __inline__ -dc390_reprog (PACB pACB, PDCB pDCB) +dc390_reprog (struct dc390_ACB* pACB, struct dc390_DCB* pDCB) { DC390_write8 (Sync_Period, pDCB->SyncPeriod); DC390_write8 (Sync_Offset, pDCB->SyncOffset); @@ -573,7 +572,7 @@ #ifdef DC390_DEBUG0 static void -dc390_printMsg (UCHAR *MsgBuf, UCHAR len) +dc390_printMsg (u8 *MsgBuf, u8 len) { int i; printk (" %02x", MsgBuf[0]); @@ -587,7 +586,7 @@ /* reject_msg */ static void __inline__ -dc390_MsgIn_reject (PACB pACB, PSRB pSRB) +dc390_MsgIn_reject (struct dc390_ACB* pACB, struct dc390_SRB* pSRB) { pSRB->MsgOutBuf[0] = MESSAGE_REJECT; pSRB->MsgCnt = 1; DC390_ENABLE_MSGOUT; @@ -596,18 +595,18 @@ /* abort command */ static void __inline__ -dc390_EnableMsgOut_Abort ( PACB pACB, PSRB pSRB ) +dc390_EnableMsgOut_Abort ( struct dc390_ACB* pACB, struct dc390_SRB* pSRB ) { pSRB->MsgOutBuf[0] = ABORT; pSRB->MsgCnt = 1; DC390_ENABLE_MSGOUT; pSRB->pSRBDCB->DCBFlag &= ~ABORT_DEV_; } -static PSRB -dc390_MsgIn_QTag (PACB pACB, PDCB pDCB, UCHAR tag) +static struct dc390_SRB* +dc390_MsgIn_QTag (struct dc390_ACB* pACB, struct dc390_DCB* pDCB, u8 tag) { - PSRB lastSRB = pDCB->pGoingLast; - PSRB pSRB = pDCB->pGoingSRB; + struct dc390_SRB* lastSRB = pDCB->pGoingLast; + struct dc390_SRB* pSRB = pDCB->pGoingSRB; if (pSRB) { @@ -645,9 +644,9 @@ /* set async transfer mode */ static void -dc390_MsgIn_set_async (PACB pACB, PSRB pSRB) +dc390_MsgIn_set_async (struct dc390_ACB* pACB, struct dc390_SRB* pSRB) { - PDCB pDCB = pSRB->pSRBDCB; + struct dc390_DCB* pDCB = pSRB->pSRBDCB; if (!(pSRB->SRBState & DO_SYNC_NEGO)) printk (KERN_INFO "DC390: Target %i initiates Non-Sync?\n", pDCB->TargetID); pSRB->SRBState &= ~DO_SYNC_NEGO; @@ -663,13 +662,13 @@ /* set sync transfer mode */ static void -dc390_MsgIn_set_sync (PACB pACB, PSRB pSRB) +dc390_MsgIn_set_sync (struct dc390_ACB* pACB, struct dc390_SRB* pSRB) { - UCHAR bval; - USHORT wval, wval1; - PDCB pDCB = pSRB->pSRBDCB; - UCHAR oldsyncperiod = pDCB->SyncPeriod; - UCHAR oldsyncoffset = pDCB->SyncOffset; + u8 bval; + u16 wval, wval1; + struct dc390_DCB* pDCB = pSRB->pSRBDCB; + u8 oldsyncperiod = pDCB->SyncPeriod; + u8 oldsyncoffset = pDCB->SyncOffset; if (!(pSRB->SRBState & DO_SYNC_NEGO)) { @@ -702,7 +701,7 @@ pDCB->SyncOffset |= pSRB->MsgInBuf[4]; pDCB->NegoPeriod = pSRB->MsgInBuf[3]; - wval = (USHORT) pSRB->MsgInBuf[3]; + wval = (u16) pSRB->MsgInBuf[3]; wval = wval << 2; wval -= 3; wval1 = wval / 25; /* compute speed */ if( (wval1 * 25) != wval) wval1++; bval = FAST_CLK+FAST_SCSI; /* fast clock / fast scsi */ @@ -722,7 +721,7 @@ } pDCB->CtrlR3 = bval; - pDCB->SyncPeriod = (UCHAR)wval1; + pDCB->SyncPeriod = (u8)wval1; if ((oldsyncperiod != wval1 || oldsyncoffset != pDCB->SyncOffset) && pDCB->TargetLUN == 0) { @@ -738,20 +737,20 @@ /* handle RESTORE_PTR */ /* I presume, this command is already mapped, so, have to remap. */ static void -dc390_restore_ptr (PACB pACB, PSRB pSRB) +dc390_restore_ptr (struct dc390_ACB* pACB, struct dc390_SRB* pSRB) { - Scsi_Cmnd* pcmd = pSRB->pcmd; - PSGL psgl; + struct scsi_cmnd *pcmd = pSRB->pcmd; + struct scatterlist *psgl; pSRB->TotalXferredLen = 0; pSRB->SGIndex = 0; if (pcmd->use_sg) { - pSRB->pSegmentList = (PSGL) pcmd->request_buffer; + pSRB->pSegmentList = (struct scatterlist *)pcmd->request_buffer; psgl = pSRB->pSegmentList; //dc390_pci_sync(pSRB); - while (pSRB->TotalXferredLen + (ULONG) sg_dma_len(psgl) < pSRB->Saved_Ptr) + while (pSRB->TotalXferredLen + (unsigned long) sg_dma_len(psgl) < pSRB->Saved_Ptr) { - pSRB->TotalXferredLen += (ULONG) sg_dma_len(psgl); + pSRB->TotalXferredLen += (unsigned long) sg_dma_len(psgl); pSRB->SGIndex++; if( pSRB->SGIndex < pSRB->SGcount ) { @@ -773,7 +772,7 @@ sg_dma_len(&pSRB->Segmentx) = pcmd->request_bufflen - pSRB->Saved_Ptr; pSRB->SGcount = 1; - pSRB->pSegmentList = (PSGL) &pSRB->Segmentx; + pSRB->pSegmentList = (struct scatterlist *) &pSRB->Segmentx; } else { pSRB->SGcount = 0; printk (KERN_INFO "DC390: RESTORE_PTR message for Transfer without Scatter-Gather ??\n"); @@ -792,8 +791,8 @@ /* The old implementation was correct. Sigh! */ /* Check if the message is complete */ -static UCHAR __inline__ -dc390_MsgIn_complete (UCHAR *msgbuf, UINT len) +static u8 __inline__ +dc390_MsgIn_complete (u8 *msgbuf, u32 len) { if (*msgbuf == EXTENDED_MESSAGE) { @@ -809,9 +808,9 @@ /* read and eval received messages */ static void -dc390_MsgIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_MsgIn_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { - PDCB pDCB = pACB->pActiveDCB; + struct dc390_DCB* pDCB = pACB->pActiveDCB; /* Read the msg */ @@ -856,7 +855,7 @@ // nothing has to be done case COMMAND_COMPLETE: break; - // SAVE POINTER may be ignored as we have the PSRB associated with the + // SAVE POINTER may be ignored as we have the struct dc390_SRB* associated with the // scsi command. Thanks, Gerard, for pointing it out. case SAVE_POINTERS: pSRB->Saved_Ptr = pSRB->TotalXferredLen; @@ -883,11 +882,11 @@ static void -dc390_DataIO_Comm( PACB pACB, PSRB pSRB, UCHAR ioDir) +dc390_DataIO_Comm( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 ioDir) { - PSGL psgl; - ULONG lval; - PDCB pDCB = pACB->pActiveDCB; + struct scatterlist *psgl; + unsigned long lval; + struct dc390_DCB* pDCB = pACB->pActiveDCB; if (pSRB == pACB->pTmpSRB) { @@ -913,11 +912,11 @@ } lval = pSRB->SGToBeXferLen; DEBUG1(printk (KERN_DEBUG " DC390: Start transfer: %li bytes (address %08lx)\n", lval, pSRB->SGBusAddr)); - DC390_write8 (CtcReg_Low, (UCHAR) lval); + DC390_write8 (CtcReg_Low, (u8) lval); lval >>= 8; - DC390_write8 (CtcReg_Mid, (UCHAR) lval); + DC390_write8 (CtcReg_Mid, (u8) lval); lval >>= 8; - DC390_write8 (CtcReg_High, (UCHAR) lval); + DC390_write8 (CtcReg_High, (u8) lval); DC390_write32 (DMA_XferCnt, pSRB->SGToBeXferLen); DC390_write32 (DMA_XferAddr, pSRB->SGBusAddr); @@ -956,36 +955,36 @@ static void -dc390_DataOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_DataOutPhase( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { dc390_DataIO_Comm (pACB, pSRB, WRITE_DIRECTION); } static void -dc390_DataInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_DataInPhase( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { dc390_DataIO_Comm (pACB, pSRB, READ_DIRECTION); } static void -dc390_CommandPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_CommandPhase( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { - PDCB pDCB; - UCHAR i, cnt; - PUCHAR ptr; + struct dc390_DCB* pDCB; + u8 i, cnt; + u8 *ptr; DC390_write8 (ScsiCmd, RESET_ATN_CMD); DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); if( !(pSRB->SRBFlag & AUTO_REQSENSE) ) { - cnt = (UCHAR) pSRB->pcmd->cmd_len; - ptr = (PUCHAR) pSRB->pcmd->cmnd; + cnt = (u8) pSRB->pcmd->cmd_len; + ptr = (u8 *) pSRB->pcmd->cmnd; for(i=0; i < cnt; i++) DC390_write8 (ScsiFifo, *(ptr++)); } else { - UCHAR bval = 0; + u8 bval = 0; DC390_write8 (ScsiFifo, REQUEST_SENSE); pDCB = pACB->pActiveDCB; DC390_write8 (ScsiFifo, pDCB->TargetLUN << 5); @@ -1000,7 +999,7 @@ } static void -dc390_StatusPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_StatusPhase( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); pSRB->SRBState = SRB_STATUS; @@ -1009,11 +1008,11 @@ } static void -dc390_MsgOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_MsgOutPhase( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { - UCHAR bval, i, cnt; - PUCHAR ptr; - PDCB pDCB; + u8 bval, i, cnt; + u8 *ptr; + struct dc390_DCB* pDCB; DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); pDCB = pACB->pActiveDCB; @@ -1022,7 +1021,7 @@ cnt = pSRB->MsgCnt; if( cnt ) { - ptr = (PUCHAR) pSRB->MsgOutBuf; + ptr = (u8 *) pSRB->MsgOutBuf; for(i=0; i < cnt; i++) DC390_write8 (ScsiFifo, *(ptr++)); pSRB->MsgCnt = 0; @@ -1062,7 +1061,7 @@ } static void -dc390_MsgInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_MsgInPhase( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); if( !(pSRB->SRBState & SRB_MSGIN) ) @@ -1075,21 +1074,21 @@ } static void -dc390_Nop_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_Nop_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { } static void -dc390_Nop_1( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_Nop_1( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus) { } static void -dc390_SetXferRate( PACB pACB, PDCB pDCB ) +dc390_SetXferRate( struct dc390_ACB* pACB, struct dc390_DCB* pDCB ) { - UCHAR bval, i, cnt; - PDCB ptr; + u8 bval, i, cnt; + struct dc390_DCB* ptr; if( !(pDCB->TargetLUN) ) { @@ -1117,11 +1116,11 @@ static void -dc390_Disconnect( PACB pACB ) +dc390_Disconnect( struct dc390_ACB* pACB ) { - PDCB pDCB; - PSRB pSRB, psrb; - UCHAR i, cnt; + struct dc390_DCB *pDCB; + struct dc390_SRB *pSRB, *psrb; + u8 i, cnt; DEBUG0(printk(KERN_INFO "DISC,")); @@ -1198,11 +1197,11 @@ static void -dc390_Reselect( PACB pACB ) +dc390_Reselect( struct dc390_ACB* pACB ) { - PDCB pDCB; - PSRB pSRB; - UCHAR id, lun; + struct dc390_DCB* pDCB; + struct dc390_SRB* pSRB; + u8 id, lun; DEBUG0(printk(KERN_INFO "RSEL,")); pACB->Connected = 1; @@ -1283,10 +1282,10 @@ DC390_write8 (ScsiCmd, MSG_ACCEPTED_CMD); /* ;to release the /ACK signal */ } -static UCHAR __inline__ +static u8 __inline__ dc390_tagq_blacklist (char* name) { - UCHAR i; + u8 i; for(i=0; i<BADDEVCNT; i++) if (memcmp (name, dc390_baddevname1[i], 28) == 0) return 1; @@ -1295,7 +1294,7 @@ static void -dc390_disc_tagq_set (PDCB pDCB, PSCSI_INQDATA ptr) +dc390_disc_tagq_set (struct dc390_DCB* pDCB, PSCSI_INQDATA ptr) { /* Check for SCSI format (ANSI and Response data format) */ if ( (ptr->Vers & 0x07) >= 2 || (ptr->RDF & 0x0F) == 2 ) @@ -1317,9 +1316,9 @@ static void -dc390_add_dev (PACB pACB, PDCB pDCB, PSCSI_INQDATA ptr) +dc390_add_dev (struct dc390_ACB* pACB, struct dc390_DCB* pDCB, PSCSI_INQDATA ptr) { - UCHAR bval1 = ptr->DevType & SCSI_DEVTYPE; + u8 bval1 = ptr->DevType & SCSI_DEVTYPE; pDCB->DevType = bval1; /* if (bval1 == TYPE_DISK || bval1 == TYPE_MOD) */ dc390_disc_tagq_set (pDCB, ptr); @@ -1327,22 +1326,24 @@ static void -dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB ) +dc390_SRBdone( struct dc390_ACB* pACB, struct dc390_DCB* pDCB, struct dc390_SRB* pSRB ) { - UCHAR bval, status, i; - PSCSICMD pcmd; + u8 bval, status, i; + struct scsi_cmnd *pcmd; PSCSI_INQDATA ptr; - PSGL ptr2; - ULONG swlval; + struct scatterlist *ptr2; + unsigned long swlval; pcmd = pSRB->pcmd; /* KG: Moved pci_unmap here */ dc390_pci_unmap(pSRB); status = pSRB->TargetStatus; - ptr = (PSCSI_INQDATA) (pcmd->request_buffer); - if( pcmd->use_sg ) - ptr = (PSCSI_INQDATA) (page_address(((PSGL) ptr)->page) + ((PSGL) ptr)->offset); + 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); DEBUG0(printk (" SRBdone (%02x,%08x), SRB %p, pid %li\n", status, pcmd->result,\ pSRB, pcmd->pid)); @@ -1379,7 +1380,7 @@ } if(pSRB->RetryCnt == 0) { - //(UINT)(pSRB->pcmd->cmnd[0]) = pSRB->Segment0[0]; + //(u32)(pSRB->pcmd->cmnd[0]) = pSRB->Segment0[0]; pSRB->TotalXferredLen = pSRB->SavedTotXLen; if( (pSRB->TotalXferredLen) && (pSRB->TotalXferredLen >= pcmd->underflow) ) @@ -1387,7 +1388,7 @@ else pcmd->result = MK_RES_LNX(DRIVER_SENSE,DID_OK,0,CHECK_CONDITION); REMOVABLEDEBUG(printk(KERN_INFO "Cmd=%02x,Result=%08x,XferL=%08x\n",pSRB->pcmd->cmnd[0],\ - (UINT) pcmd->result, (UINT) pSRB->TotalXferredLen)); + (u32) pcmd->result, (u32) pSRB->TotalXferredLen)); goto ckc_e; } else /* Retry */ @@ -1395,19 +1396,17 @@ pSRB->RetryCnt--; pSRB->AdaptStatus = 0; pSRB->TargetStatus = 0; - //*((PUINT) &(pSRB->CmdBlock[0])) = pSRB->Segment0[0]; - //*((PUINT) &(pSRB->CmdBlock[4])) = pSRB->Segment0[1]; /* Don't retry on TEST_UNIT_READY */ if( pSRB->pcmd->cmnd[0] == TEST_UNIT_READY /* || pSRB->pcmd->cmnd[0] == START_STOP */) { pcmd->result = MK_RES_LNX(DRIVER_SENSE,DID_OK,0,CHECK_CONDITION); REMOVABLEDEBUG(printk(KERN_INFO "Cmd=%02x, Result=%08x, XferL=%08x\n",pSRB->pcmd->cmnd[0],\ - (UINT) pcmd->result, (UINT) pSRB->TotalXferredLen)); + (u32) pcmd->result, (u32) pSRB->TotalXferredLen)); goto ckc_e; } SET_RES_DRV(pcmd->result,DRIVER_SENSE); pcmd->use_sg = pSRB->SavedSGCount; - //pSRB->ScsiCmdLen = (UCHAR) (pSRB->Segment1[0] >> 8); + //pSRB->ScsiCmdLen = (u8) (pSRB->Segment1[0] >> 8); DEBUG0 (printk ("DC390: RETRY pid %li (%02x), target %02i-%02i\n", pcmd->pid, pcmd->cmnd[0], pcmd->device->id, pcmd->device->lun)); pSRB->SGIndex = 0; pSRB->TotalXferredLen = 0; @@ -1437,14 +1436,14 @@ ptr2++; } REMOVABLEDEBUG(printk(KERN_INFO "XferredLen=%08x,NotXferLen=%08x\n",\ - (UINT) pSRB->TotalXferredLen, (UINT) swlval)); + (u32) pSRB->TotalXferredLen, (u32) swlval)); } dc390_RequestSense( pACB, pDCB, pSRB ); return; } else if( status_byte(status) == QUEUE_FULL ) { - bval = (UCHAR) pDCB->GoingSRBCnt; + bval = (u8) pDCB->GoingSRBCnt; bval--; pDCB->MaxCommand = bval; dc390_freetag (pDCB, pSRB); @@ -1569,12 +1568,12 @@ /* Remove all SRBs from Going list and inform midlevel */ static void -dc390_DoingSRB_Done( PACB pACB, PSCSICMD cmd ) +dc390_DoingSRB_Done(struct dc390_ACB* pACB, struct scsi_cmnd *cmd) { - PDCB pDCB, pdcb; - PSRB psrb, psrb2; - UCHAR i; - PSCSICMD pcmd; + struct dc390_DCB *pDCB, *pdcb; + struct dc390_SRB *psrb, *psrb2; + u8 i; + struct scsi_cmnd *pcmd; pDCB = pACB->pLinkDCB; pdcb = pDCB; @@ -1610,7 +1609,7 @@ static void -dc390_ResetSCSIBus( PACB pACB ) +dc390_ResetSCSIBus( struct dc390_ACB* pACB ) { //DC390_write8 (ScsiCmd, RST_DEVICE_CMD); //udelay (250); @@ -1625,7 +1624,7 @@ } static void -dc390_ScsiRstDetect( PACB pACB ) +dc390_ScsiRstDetect( struct dc390_ACB* pACB ) { printk ("DC390: Rst_Detect: laststat = %08x\n", dc390_laststatus); //DEBUG0(printk(KERN_INFO "RST_DETECT,")); @@ -1658,9 +1657,9 @@ static void __inline__ -dc390_RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB ) +dc390_RequestSense( struct dc390_ACB* pACB, struct dc390_DCB* pDCB, struct dc390_SRB* pSRB ) { - PSCSICMD pcmd; + struct scsi_cmnd *pcmd; pcmd = pSRB->pcmd; @@ -1668,9 +1667,9 @@ pcmd->cmnd[0], pDCB->TargetID, pDCB->TargetLUN)); pSRB->SRBFlag |= AUTO_REQSENSE; - //pSRB->Segment0[0] = (UINT) pSRB->CmdBlock[0]; - //pSRB->Segment0[1] = (UINT) pSRB->CmdBlock[4]; - //pSRB->Segment1[0] = ((UINT)(pcmd->cmd_len) << 8) + pSRB->SGcount; + //pSRB->Segment0[0] = (u32) pSRB->CmdBlock[0]; + //pSRB->Segment0[1] = (u32) pSRB->CmdBlock[4]; + //pSRB->Segment1[0] = ((u32)(pcmd->cmd_len) << 8) + pSRB->SGcount; //pSRB->Segment1[1] = pSRB->TotalXferredLen; pSRB->SavedSGCount = pcmd->use_sg; pSRB->SavedTotXLen = pSRB->TotalXferredLen; @@ -1683,8 +1682,8 @@ //pSRB->CmdBlock[0] = REQUEST_SENSE; //pSRB->CmdBlock[1] = pDCB->TargetLUN << 5; - //(USHORT) pSRB->CmdBlock[2] = 0; - //(USHORT) pSRB->CmdBlock[4] = sizeof(pcmd->sense_buffer); + //(u16) pSRB->CmdBlock[2] = 0; + //(u16) pSRB->CmdBlock[4] = sizeof(pcmd->sense_buffer); //pSRB->ScsiCmdLen = 6; pSRB->TotalXferredLen = 0; @@ -1698,7 +1697,7 @@ static void __inline__ -dc390_InvalidCmd( PACB pACB ) +dc390_InvalidCmd( struct dc390_ACB* pACB ) { if( pACB->pActiveDCB->pActiveSRB->SRBState & (SRB_START_+SRB_MSGOUT) ) DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); diff -u a/drivers/scsi/tmscsim.c b/drivers/scsi/tmscsim.c --- a/drivers/scsi/tmscsim.c 24 Jun 2004 21:07:14 +++ b/drivers/scsi/tmscsim.c 24 Jun 2004 22:26:35 @@ -221,11 +221,8 @@ #endif #define DCBDEBUG1(x) C_NOP -/* Includes */ +#include <linux/config.h> #include <linux/module.h> -#include <asm/dma.h> -#include <asm/io.h> -#include <asm/system.h> #include <linux/delay.h> #include <linux/signal.h> #include <linux/sched.h> @@ -235,44 +232,30 @@ #include <linux/pci.h> #include <linux/proc_fs.h> #include <linux/string.h> -#include <linux/ctype.h> #include <linux/mm.h> -#include <linux/config.h> -#include <linux/version.h> #include <linux/blkdev.h> #include <linux/timer.h> #include <linux/interrupt.h> +#include <linux/init.h> +#include <linux/spinlock.h> +#include <asm/io.h> +#if 0 +#include <scsi/scsi.h> +#include <scsi/scsi_cmnd.h> +#include <scsi/scsi_device.h> +#else #include "scsi.h" +#endif #include <scsi/scsi_host.h> -#include <linux/stat.h> #include <scsi/scsicam.h> #include "dc390.h" #define PCI_DEVICE_ID_AMD53C974 PCI_DEVICE_ID_AMD_SCSI -/* Locking */ - -/* Note: Starting from 2.1.9x, the mid-level scsi code issues a - * spinlock_irqsave (&io_request_lock) before calling the driver's - * routines, so we don't need to lock, except in the IRQ handler. - * The policy 3, let the midlevel scsi code do the io_request_locks - * and us locking on a driver specific lock, shouldn't hurt anybody; it - * just causes a minor performance degradation for setting the locks. - */ -/* spinlock things - * level 3: lock on both adapter specific locks and (global) io_request_lock - * level 2: lock on adapter specific locks only - * level 1: rely on the locking of the mid level code (io_request_lock) - * undef : traditional save_flags; cli; restore_flags; - */ - -#include <linux/init.h> -#include <linux/spinlock.h> - -static struct pci_device_id tmscsim_pci_tbl[] = { + static struct pci_device_id tmscsim_pci_tbl[] = { { .vendor = PCI_VENDOR_ID_AMD, .device = PCI_DEVICE_ID_AMD53C974, @@ -283,62 +266,47 @@ }; MODULE_DEVICE_TABLE(pci, tmscsim_pci_tbl); -/* These macros are used for uniform access to 2.0.x and 2.1.x PCI config space*/ - -#define PDEV pdev -#define PDEVDECL struct pci_dev *pdev -#define PDEVDECL0 struct pci_dev *pdev = NULL -#define PDEVDECL1 struct pci_dev *pdev -#define PDEVSET pACB->pdev=pdev -#define PDEVSET1 pdev=pACB->pdev -#define PCI_WRITE_CONFIG_BYTE(pd, rv, bv) pci_write_config_byte (pd, rv, bv) -#define PCI_READ_CONFIG_BYTE(pd, rv, bv) pci_read_config_byte (pd, rv, bv) -#define PCI_WRITE_CONFIG_WORD(pd, rv, bv) pci_write_config_word (pd, rv, bv) -#define PCI_READ_CONFIG_WORD(pd, rv, bv) pci_read_config_word (pd, rv, bv) -#define PCI_PRESENT (1) -#define PCI_GET_IO_AND_IRQ do{io_port = pci_resource_start (pdev, 0); irq = pdev->irq;} while(0) - #include "tmscsim.h" -static UCHAR dc390_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB ); -static void dc390_DataOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_Command_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_Status_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_MsgOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_MsgIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_DataOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_DataInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_CommandPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_StatusPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_MsgOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_MsgInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_Nop_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_Nop_1( PACB pACB, PSRB pSRB, PUCHAR psstatus); - -static void dc390_SetXferRate( PACB pACB, PDCB pDCB ); -static void dc390_Disconnect( PACB pACB ); -static void dc390_Reselect( PACB pACB ); -static void dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB ); -static void dc390_DoingSRB_Done( PACB pACB, PSCSICMD cmd ); -static void dc390_ScsiRstDetect( PACB pACB ); -static void dc390_ResetSCSIBus( PACB pACB ); -static void __inline__ dc390_RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB ); -static void __inline__ dc390_InvalidCmd( PACB pACB ); -static void __inline__ dc390_EnableMsgOut_Abort (PACB, PSRB); +static u8 dc390_StartSCSI( struct dc390_ACB* pACB, struct dc390_DCB* pDCB, struct dc390_SRB* pSRB ); +static void dc390_DataOut_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_DataIn_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_Command_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_Status_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_MsgOut_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_MsgIn_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_DataOutPhase( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_DataInPhase( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_CommandPhase( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_StatusPhase( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_MsgOutPhase( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_MsgInPhase( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_Nop_0( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); +static void dc390_Nop_1( struct dc390_ACB* pACB, struct dc390_SRB* pSRB, u8 *psstatus); + +static void dc390_SetXferRate( struct dc390_ACB* pACB, struct dc390_DCB* pDCB ); +static void dc390_Disconnect( struct dc390_ACB* pACB ); +static void dc390_Reselect( struct dc390_ACB* pACB ); +static void dc390_SRBdone( struct dc390_ACB* pACB, struct dc390_DCB* pDCB, struct dc390_SRB* pSRB ); +static void dc390_DoingSRB_Done( struct dc390_ACB* pACB, struct scsi_cmnd * cmd); +static void dc390_ScsiRstDetect( struct dc390_ACB* pACB ); +static void dc390_ResetSCSIBus( struct dc390_ACB* pACB ); +static void __inline__ dc390_RequestSense( struct dc390_ACB* pACB, struct dc390_DCB* pDCB, struct dc390_SRB* pSRB ); +static void __inline__ dc390_InvalidCmd( struct dc390_ACB* pACB ); +static void __inline__ dc390_EnableMsgOut_Abort (struct dc390_ACB*, struct dc390_SRB*); static irqreturn_t do_DC390_Interrupt( int, void *, struct pt_regs *); -static int dc390_initAdapter( PSH psh, ULONG io_port, UCHAR Irq, UCHAR index ); -static void dc390_updateDCB (PACB pACB, PDCB pDCB); +static int dc390_initAdapter(struct Scsi_Host *psh, unsigned long io_port, u8 Irq, u8 index ); +static void dc390_updateDCB (struct dc390_ACB* pACB, struct dc390_DCB* pDCB); static int DC390_proc_info (struct Scsi_Host *shpnt, char *buffer, char **start, off_t offset, int length, int inout); -static PACB dc390_pACB_start= NULL; -static PACB dc390_pACB_current = NULL; -static ULONG dc390_lastabortedpid = 0; -static UINT dc390_laststatus = 0; -static UCHAR dc390_adapterCnt = 0; +static struct dc390_ACB* dc390_pACB_start= NULL; +static struct dc390_ACB* dc390_pACB_current = NULL; +static unsigned long dc390_lastabortedpid = 0; +static u32 dc390_laststatus = 0; +static u8 dc390_adapterCnt = 0; /* Startup values, to be overriden on the commandline */ static int tmscsim[] = {-2, -2, -2, -2, -2, -2}; @@ -351,7 +319,7 @@ MODULE_LICENSE("GPL"); MODULE_SUPPORTED_DEVICE("sd,sr,sg,st"); -static PVOID dc390_phase0[]={ +static void *dc390_phase0[]={ dc390_DataOut_0, dc390_DataIn_0, dc390_Command_0, @@ -363,7 +331,7 @@ dc390_Nop_1 }; -static PVOID dc390_phase1[]={ +static void *dc390_phase1[]={ dc390_DataOutPhase, dc390_DataInPhase, dc390_CommandPhase, @@ -402,15 +370,15 @@ #endif /* Devices erroneously pretending to be able to do TagQ */ -static UCHAR dc390_baddevname1[2][28] ={ +static u8 dc390_baddevname1[2][28] ={ "SEAGATE ST3390N 9546", "HP C3323-300 4269"}; #define BADDEVCNT 2 static char* dc390_adapname = "DC390"; -static UCHAR dc390_eepromBuf[MAX_ADAPTER_NUM][EE_LEN]; -static UCHAR dc390_clock_period1[] = {4, 5, 6, 7, 8, 10, 13, 20}; -static UCHAR dc390_clock_speed[] = {100,80,67,57,50, 40, 31, 20}; +static u8 dc390_eepromBuf[MAX_ADAPTER_NUM][EE_LEN]; +static u8 dc390_clock_period1[] = {4, 5, 6, 7, 8, 10, 13, 20}; +static u8 dc390_clock_speed[] = {100,80,67,57,50, 40, 31, 20}; /*********************************************************************** * Functions for access to DC390 EEPROM @@ -419,46 +387,45 @@ **********************************************************************/ -static void __devinit dc390_EnDisableCE( UCHAR mode, PDEVDECL, PUCHAR regval ) +static void __devinit dc390_EnDisableCE(u8 mode, struct pci_dev *pdev, u8 *regval) { - UCHAR bval; + u8 bval; bval = 0; if(mode == ENABLE_CE) *regval = 0xc0; else *regval = 0x80; - PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval); + pci_write_config_byte(pdev, *regval, bval); if(mode == DISABLE_CE) - PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval); + pci_write_config_byte(pdev, *regval, bval); udelay(160); } /* Override EEprom values with explicitly set values */ -static void __devinit dc390_EEprom_Override (UCHAR index) +static void __devinit dc390_EEprom_Override (u8 index) { - PUCHAR ptr; - UCHAR id; - ptr = (PUCHAR) dc390_eepromBuf[index]; + u8 *ptr = (u8 *) dc390_eepromBuf[index]; + u8 id; /* Adapter Settings */ if (tmscsim[0] != -2) - ptr[EE_ADAPT_SCSI_ID] = (UCHAR)tmscsim[0]; /* Adapter ID */ + ptr[EE_ADAPT_SCSI_ID] = (u8)tmscsim[0]; /* Adapter ID */ if (tmscsim[3] != -2) - ptr[EE_MODE2] = (UCHAR)tmscsim[3]; + ptr[EE_MODE2] = (u8)tmscsim[3]; if (tmscsim[5] != -2) ptr[EE_DELAY] = tmscsim[5]; /* Reset delay */ if (tmscsim[4] != -2) - ptr[EE_TAG_CMD_NUM] = (UCHAR)tmscsim[4]; /* Tagged Cmds */ + ptr[EE_TAG_CMD_NUM] = (u8)tmscsim[4]; /* Tagged Cmds */ /* Device Settings */ for (id = 0; id < MAX_SCSI_ID; id++) { if (tmscsim[2] != -2) - ptr[id<<2] = (UCHAR)tmscsim[2]; /* EE_MODE1 */ + ptr[id<<2] = (u8)tmscsim[2]; /* EE_MODE1 */ if (tmscsim[1] != -2) - ptr[(id<<2) + 1] = (UCHAR)tmscsim[1]; /* EE_Speed */ + ptr[(id<<2) + 1] = (u8)tmscsim[1]; /* EE_Speed */ } } @@ -527,36 +494,36 @@ __setup("tmscsim=", dc390_setup); #endif -static void __devinit dc390_EEpromOutDI( PDEVDECL, PUCHAR regval, UCHAR Carry ) +static void __devinit dc390_EEpromOutDI(struct pci_dev *pdev, u8 *regval, u8 Carry) { - UCHAR bval; + u8 bval; bval = 0; if(Carry) { bval = 0x40; *regval = 0x80; - PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval); + pci_write_config_byte(pdev, *regval, bval); } udelay(160); bval |= 0x80; - PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval); + pci_write_config_byte(pdev, *regval, bval); udelay(160); bval = 0; - PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval); + pci_write_config_byte(pdev, *regval, bval); udelay(160); } -static UCHAR __devinit dc390_EEpromInDO( PDEVDECL ) +static u8 __devinit dc390_EEpromInDO(struct pci_dev *pdev) { - UCHAR bval; + u8 bval; - PCI_WRITE_CONFIG_BYTE(PDEV, 0x80, 0x80); + pci_write_config_byte(pdev, 0x80, 0x80); udelay(160); - PCI_WRITE_CONFIG_BYTE(PDEV, 0x80, 0x40); + pci_write_config_byte(pdev, 0x80, 0x40); udelay(160); - PCI_READ_CONFIG_BYTE(PDEV, 0x00, &bval); + pci_read_config_byte(pdev, 0x00, &bval); if(bval == 0x22) return(1); else @@ -564,68 +531,68 @@ } -static USHORT __devinit dc390_EEpromGetData1( PDEVDECL ) +static u16 __devinit dc390_EEpromGetData1(struct pci_dev *pdev) { - UCHAR i; - UCHAR carryFlag; - USHORT wval; + u8 i; + u8 carryFlag; + u16 wval; wval = 0; for(i=0; i<16; i++) { wval <<= 1; - carryFlag = dc390_EEpromInDO(PDEV); + carryFlag = dc390_EEpromInDO(pdev); wval |= carryFlag; } return(wval); } -static void __devinit dc390_Prepare( PDEVDECL, PUCHAR regval, UCHAR EEpromCmd ) +static void __devinit dc390_Prepare(struct pci_dev *pdev, u8 *regval, u8 EEpromCmd) { - UCHAR i,j; - UCHAR carryFlag; + u8 i,j; + u8 carryFlag; carryFlag = 1; j = 0x80; for(i=0; i<9; i++) { - dc390_EEpromOutDI(PDEV,regval,carryFlag); + dc390_EEpromOutDI(pdev, regval, carryFlag); carryFlag = (EEpromCmd & j) ? 1 : 0; j >>= 1; } } -static void __devinit dc390_ReadEEprom( PDEVDECL, PUSHORT ptr) +static void __devinit dc390_ReadEEprom(struct pci_dev *pdev, u16 *ptr) { - UCHAR regval,cmd; - UCHAR i; + u8 regval,cmd; + u8 i; cmd = EEPROM_READ; for(i=0; i<0x40; i++) { - dc390_EnDisableCE(ENABLE_CE, PDEV, ®val); - dc390_Prepare(PDEV, ®val, cmd++); - *ptr++ = dc390_EEpromGetData1(PDEV); - dc390_EnDisableCE(DISABLE_CE, PDEV, ®val); + dc390_EnDisableCE(ENABLE_CE, pdev, ®val); + dc390_Prepare(pdev, ®val, cmd++); + *ptr++ = dc390_EEpromGetData1(pdev); + dc390_EnDisableCE(DISABLE_CE, pdev, ®val); } } -static void __devinit dc390_interpret_delay (UCHAR index) +static void __devinit dc390_interpret_delay (u8 index) { char interpd [] = {1,3,5,10,16,30,60,120}; dc390_eepromBuf[index][EE_DELAY] = interpd [dc390_eepromBuf[index][EE_DELAY]]; } -static UCHAR __devinit dc390_CheckEEpromCheckSum( PDEVDECL, UCHAR index ) +static u8 __devinit dc390_CheckEEpromCheckSum(struct pci_dev *pdev, u8 index) { - UCHAR i; + u8 i; char EEbuf[128]; - USHORT wval, *ptr = (PUSHORT)EEbuf; + u16 wval, *ptr = (u16 *)EEbuf; - dc390_ReadEEprom( PDEV, ptr ); + dc390_ReadEEprom(pdev, ptr); memcpy (dc390_eepromBuf[index], EEbuf, EE_ADAPT_SCSI_ID); memcpy (&dc390_eepromBuf[index][EE_ADAPT_SCSI_ID], &EEbuf[REAL_EE_ADAPT_SCSI_ID], EE_LEN - EE_ADAPT_SCSI_ID); @@ -643,9 +610,9 @@ * (DCBs, SRBs, Queueing) * **********************************************************************/ -static PDCB __inline__ dc390_findDCB ( PACB pACB, UCHAR id, UCHAR lun) +static struct dc390_DCB __inline__ *dc390_findDCB ( struct dc390_ACB* pACB, u8 id, u8 lun) { - PDCB pDCB = pACB->pLinkDCB; if (!pDCB) return 0; + struct dc390_DCB* pDCB = pACB->pLinkDCB; if (!pDCB) return 0; while (pDCB->TargetID != id || pDCB->TargetLUN != lun) { pDCB = pDCB->pNextDCB; @@ -675,26 +642,10 @@ * Lists are managed using two pointers and eventually a counter */ - -#if 0 -/* Look for a SCSI cmd in a SRB queue */ -static PSRB dc390_find_cmd_in_SRBq (PSCSICMD cmd, PSRB queue) -{ - PSRB q = queue; - while (q) - { - if (q->pcmd == cmd) return q; - q = q->pNextSRB; - if (q == queue) return 0; - } - return q; -} -#endif - /* Return next free SRB */ -static __inline__ PSRB dc390_Free_get ( PACB pACB ) +static __inline__ struct dc390_SRB* dc390_Free_get ( struct dc390_ACB* pACB ) { - PSRB pSRB; + struct dc390_SRB* pSRB; pSRB = pACB->pFreeSRB; DEBUG0(printk ("DC390: Get Free SRB %p\n", pSRB)); @@ -708,7 +659,7 @@ } /* Insert SRB oin top of free list */ -static __inline__ void dc390_Free_insert (PACB pACB, PSRB pSRB) +static __inline__ void dc390_Free_insert (struct dc390_ACB* pACB, struct dc390_SRB* pSRB) { DEBUG0(printk ("DC390: Free SRB %p\n", pSRB)); pSRB->pNextSRB = pACB->pFreeSRB; @@ -717,7 +668,7 @@ /* Inserts a SRB to the top of the Waiting list */ -static __inline__ void dc390_Waiting_insert ( PDCB pDCB, PSRB pSRB ) +static __inline__ void dc390_Waiting_insert ( struct dc390_DCB* pDCB, struct dc390_SRB* pSRB ) { DEBUG0(printk ("DC390: Insert pSRB %p cmd %li to Waiting\n", pSRB, pSRB->pcmd->pid)); pSRB->pNextSRB = pDCB->pWaitingSRB; @@ -729,7 +680,7 @@ /* Queue SRB to waiting list */ -static __inline__ void dc390_Waiting_append ( PDCB pDCB, PSRB pSRB) +static __inline__ void dc390_Waiting_append ( struct dc390_DCB* pDCB, struct dc390_SRB* pSRB) { DEBUG0(printk ("DC390: Append pSRB %p cmd %li to Waiting\n", pSRB, pSRB->pcmd->pid)); if( pDCB->pWaitingSRB ) @@ -743,7 +694,7 @@ pDCB->pDCBACB->CmdInQ++; } -static __inline__ void dc390_Going_append (PDCB pDCB, PSRB pSRB) +static __inline__ void dc390_Going_append (struct dc390_DCB* pDCB, struct dc390_SRB* pSRB) { pDCB->GoingSRBCnt++; DEBUG0(printk("DC390: Append SRB %p to Going\n", pSRB)); @@ -758,14 +709,14 @@ pSRB->pNextSRB = NULL; } -static __inline__ void dc390_Going_remove (PDCB pDCB, PSRB pSRB) +static __inline__ void dc390_Going_remove (struct dc390_DCB* pDCB, struct dc390_SRB* pSRB) { DEBUG0(printk("DC390: Remove SRB %p from Going\n", pSRB)); if (pSRB == pDCB->pGoingSRB) pDCB->pGoingSRB = pSRB->pNextSRB; else { - PSRB psrb = pDCB->pGoingSRB; + struct dc390_SRB* psrb = pDCB->pGoingSRB; while (psrb && psrb->pNextSRB != pSRB) psrb = psrb->pNextSRB; if (!psrb) @@ -778,7 +729,7 @@ } /* Moves SRB from Going list to the top of Waiting list */ -static void dc390_Going_to_Waiting ( PDCB pDCB, PSRB pSRB ) +static void dc390_Going_to_Waiting ( struct dc390_DCB* pDCB, struct dc390_SRB* pSRB ) { DEBUG0(printk(KERN_INFO "DC390: Going_to_Waiting (SRB %p) pid = %li\n", pSRB, pSRB->pcmd->pid)); /* Remove SRB from Going */ @@ -789,7 +740,7 @@ } /* Moves first SRB from Waiting list to Going list */ -static __inline__ void dc390_Waiting_to_Going ( PDCB pDCB, PSRB pSRB ) +static __inline__ void dc390_Waiting_to_Going ( struct dc390_DCB* pDCB, struct dc390_SRB* pSRB ) { /* Remove from waiting list */ DEBUG0(printk("DC390: Remove SRB %p from head of Waiting\n", pSRB)); @@ -801,7 +752,7 @@ static void DC390_waiting_timed_out (unsigned long ptr); /* Sets the timer to wake us up */ -static void dc390_waiting_timer (PACB pACB, unsigned long to) +static void dc390_waiting_timer (struct dc390_ACB* pACB, unsigned long to) { if (timer_pending (&pACB->Waiting_Timer)) return; init_timer (&pACB->Waiting_Timer); @@ -816,10 +767,10 @@ /* Send the next command from the waiting list to the bus */ -static void dc390_Waiting_process ( PACB pACB ) +static void dc390_Waiting_process ( struct dc390_ACB* pACB ) { - PDCB ptr, ptr1; - PSRB pSRB; + struct dc390_DCB *ptr, *ptr1; + struct dc390_SRB *pSRB; if( (pACB->pActiveDCB) || (pACB->ACBFlag & (RESET_DETECT+RESET_DONE+RESET_DEV) ) ) return; @@ -854,7 +805,7 @@ /* Wake up waiting queue */ static void DC390_waiting_timed_out (unsigned long ptr) { - PACB pACB = (PACB)ptr; + struct dc390_ACB* pACB = (struct dc390_ACB*)ptr; unsigned long iflags; DEBUG0(printk ("DC390: Debug: Waiting queue woken up by timer!\n")); spin_lock_irqsave(pACB->pScsiHost->host_lock, iflags); @@ -863,15 +814,15 @@ } /*********************************************************************** - * Function: static void dc390_SendSRB (PACB pACB, PSRB pSRB) + * Function: static void dc390_SendSRB (struct dc390_ACB* pACB, struct dc390_SRB* pSRB) * * Purpose: Send SCSI Request Block (pSRB) to adapter (pACB) * ***********************************************************************/ -static void dc390_SendSRB( PACB pACB, PSRB pSRB ) +static void dc390_SendSRB( struct dc390_ACB* pACB, struct dc390_SRB* pSRB ) { - PDCB pDCB; + struct dc390_DCB* pDCB; pDCB = pSRB->pSRBDCB; if( (pDCB->MaxCommand <= pDCB->GoingSRBCnt) || (pACB->pActiveDCB) || @@ -913,10 +864,10 @@ } /* Create pci mapping */ -static int dc390_pci_map (PSRB pSRB) +static int dc390_pci_map (struct dc390_SRB* pSRB) { int error = 0; - Scsi_Cmnd *pcmd = pSRB->pcmd; + struct scsi_cmnd *pcmd = pSRB->pcmd; struct pci_dev *pdev = pSRB->pSRBDCB->pDCBACB->pdev; dc390_cmd_scp_t* cmdp = ((dc390_cmd_scp_t*)(&pcmd->SCp)); @@ -933,9 +884,9 @@ DEBUG1(printk("%s(): Mapped sense buffer %p at %x\n", __FUNCTION__, pcmd->sense_buffer, cmdp->saved_dma_handle)); /* Map SG list */ } else if (pcmd->use_sg) { - pSRB->pSegmentList = (PSGL) pcmd->request_buffer; + pSRB->pSegmentList = (struct scatterlist *) pcmd->request_buffer; pSRB->SGcount = pci_map_sg(pdev, pSRB->pSegmentList, pcmd->use_sg, - scsi_to_pci_dma_dir(pcmd->sc_data_direction)); + pcmd->sc_data_direction); /* TODO: error handling */ if (!pSRB->SGcount) error = 1; @@ -945,7 +896,7 @@ } else if (pcmd->request_buffer && pcmd->request_bufflen) { pSRB->pSegmentList = dc390_sg_build_single(&pSRB->Segmentx, pcmd->request_buffer, pcmd->request_bufflen); pSRB->SGcount = pci_map_sg(pdev, pSRB->pSegmentList, 1, - scsi_to_pci_dma_dir(pcmd->sc_data_direction)); + pcmd->sc_data_direction); cmdp->saved_dma_handle = sg_dma_address(pSRB->pSegmentList); /* TODO: error handling */ @@ -960,9 +911,9 @@ } /* Remove pci mapping */ -static void dc390_pci_unmap (PSRB pSRB) +static void dc390_pci_unmap (struct dc390_SRB* pSRB) { - Scsi_Cmnd* pcmd = pSRB->pcmd; + struct scsi_cmnd *pcmd = pSRB->pcmd; struct pci_dev *pdev = pSRB->pSRBDCB->pDCBACB->pdev; DEBUG1(dc390_cmd_scp_t* cmdp = ((dc390_cmd_scp_t*)(&pcmd->SCp))); @@ -970,24 +921,24 @@ pci_unmap_sg(pdev, &pSRB->Segmentx, 1, DMA_FROM_DEVICE); DEBUG1(printk("%s(): Unmapped sense buffer at %x\n", __FUNCTION__, cmdp->saved_dma_handle)); } else if (pcmd->use_sg) { - pci_unmap_sg(pdev, pcmd->request_buffer, pcmd->use_sg, scsi_to_pci_dma_dir(pcmd->sc_data_direction)); + pci_unmap_sg(pdev, pcmd->request_buffer, pcmd->use_sg, pcmd->sc_data_direction); DEBUG1(printk("%s(): Unmapped SG at %p with %d elements\n", __FUNCTION__, pcmd->request_buffer, pcmd->use_sg)); } else if (pcmd->request_buffer && pcmd->request_bufflen) { - pci_unmap_sg(pdev, &pSRB->Segmentx, 1, scsi_to_pci_dma_dir(pcmd->sc_data_direction)); + pci_unmap_sg(pdev, &pSRB->Segmentx, 1, pcmd->sc_data_direction); DEBUG1(printk("%s(): Unmapped request buffer at %x\n", __FUNCTION__, cmdp->saved_dma_handle)); } } /*********************************************************************** - * Function: static void dc390_BuildSRB (Scsi_Cmd *pcmd, PDCB pDCB, - * PSRB pSRB) + * Function: static void dc390_BuildSRB (Scsi_Cmd *pcmd, struct dc390_DCB* pDCB, + * struct dc390_SRB* pSRB) * * Purpose: Prepare SRB for being sent to Device DCB w/ command *pcmd * ***********************************************************************/ -static void dc390_BuildSRB (Scsi_Cmnd* pcmd, PDCB pDCB, PSRB pSRB) +static void dc390_BuildSRB (struct scsi_cmnd *pcmd, struct dc390_DCB* pDCB, struct dc390_SRB* pSRB) { pSRB->pSRBDCB = pDCB; pSRB->pcmd = pcmd; @@ -1015,8 +966,8 @@ } /*********************************************************************** - * Function : static int DC390_queue_command (Scsi_Cmnd *cmd, - * void (*done)(Scsi_Cmnd *)) + * Function : static int DC390_queue_command (struct scsi_cmnd *cmd, + * void (*done)(struct scsi_cmnd *)) * * Purpose : enqueues a SCSI command * @@ -1033,11 +984,12 @@ * ***********************************************************************/ -static int DC390_queue_command (Scsi_Cmnd *cmd, void (* done)(Scsi_Cmnd *)) +static int DC390_queue_command(struct scsi_cmnd *cmd, + void (* done)(struct scsi_cmnd *)) { - PDCB pDCB = (PDCB) cmd->device->hostdata; - PSRB pSRB; - PACB pACB = (PACB) cmd->device->host->hostdata; + struct dc390_DCB* pDCB = (struct dc390_DCB*) cmd->device->hostdata; + struct dc390_SRB* pSRB; + struct dc390_ACB* pACB = (struct dc390_ACB*) cmd->device->host->hostdata; DEBUG0(/* if(pACB->scan_devices) */ \ printk(KERN_INFO "DC390: Queue Cmd=%02x,Tgt=%d,LUN=%d (pid=%li), buffer=%p\n",\ @@ -1181,7 +1133,7 @@ sector_t capacity, int geom[]) { int heads, sectors, cylinders; - PACB pACB = (PACB) sdev->host->hostdata; + struct dc390_ACB* pACB = (struct dc390_ACB*) sdev->host->hostdata; int ret_code = -1; int size = capacity; unsigned char *buf; @@ -1221,9 +1173,11 @@ } #endif -static void dc390_dumpinfo (PACB pACB, PDCB pDCB, PSRB pSRB) +static void dc390_dumpinfo (struct dc390_ACB* pACB, struct dc390_DCB* pDCB, struct dc390_SRB* pSRB) { - USHORT pstat; PDEVDECL1; + struct pci_dev *pdev; + u16 pstat; + if (!pDCB) pDCB = pACB->pActiveDCB; if (!pSRB && pDCB) pSRB = pDCB->pActiveSRB; @@ -1257,14 +1211,16 @@ DC390_read32(DMA_Wk_ByteCntr), DC390_read32(DMA_Wk_AddrCntr), DC390_read8(DMA_Status), DC390_read32(DMA_ScsiBusCtrl)); DC390_write32 (DMA_ScsiBusCtrl, EN_INT_ON_PCI_ABORT); - PDEVSET1; PCI_READ_CONFIG_WORD(PDEV, PCI_STATUS, &pstat); + + pdev = pACB->pdev; + pci_read_config_word(pdev, PCI_STATUS, &pstat); printk ("DC390: Register dump: PCI Status: %04x\n", pstat); printk ("DC390: In case of driver trouble read linux/Documentation/scsi/tmscsim.txt\n"); } /*********************************************************************** - * Function : int DC390_abort (Scsi_Cmnd *cmd) + * Function : int DC390_abort (struct scsi_cmnd *cmd) * * Purpose : Abort an errant SCSI command * @@ -1275,14 +1231,14 @@ * Status: Buggy ! ***********************************************************************/ -static int DC390_abort (Scsi_Cmnd *cmd) +static int DC390_abort (struct scsi_cmnd *cmd) { - PDCB pDCB = (PDCB) cmd->device->hostdata; - PSRB pSRB, psrb; - UINT count, i; + struct dc390_DCB *pDCB = (struct dc390_DCB*) cmd->device->hostdata; + struct dc390_SRB *pSRB, *psrb; + u32 count, i; int status; - //ULONG sbac; - PACB pACB = (PACB) cmd->device->host->hostdata; + //unsigned long sbac; + struct dc390_ACB *pACB = (struct dc390_ACB*) cmd->device->host->hostdata; printk ("DC390: Abort command (pid %li, Device %02i-%02i)\n", cmd->pid, cmd->device->id, cmd->device->lun); @@ -1406,9 +1362,9 @@ } -static void dc390_ResetDevParam( PACB pACB ) +static void dc390_ResetDevParam( struct dc390_ACB* pACB ) { - PDCB pDCB, pdcb; + struct dc390_DCB *pDCB, *pdcb; pDCB = pACB->pLinkDCB; if (! pDCB) return; @@ -1431,11 +1387,11 @@ #if 0 /* Moves all SRBs from Going to Waiting for all DCBs */ -static void dc390_RecoverSRB( PACB pACB ) +static void dc390_RecoverSRB( struct dc390_ACB* pACB ) { - PDCB pDCB, pdcb; - PSRB psrb, psrb2; - UINT cnt, i; + struct dc390_DCB *pDCB, *pdcb; + struct dc390_SRB *psrb, *psrb2; + u32 cnt, i; pDCB = pACB->pLinkDCB; if( !pDCB ) return; @@ -1470,7 +1426,7 @@ #endif /*********************************************************************** - * Function : int DC390_reset (Scsi_Cmnd *cmd, ...) + * Function : int DC390_reset (struct scsi_cmnd *cmd, ...) * * Purpose : perform a hard reset on the SCSI bus * @@ -1480,10 +1436,10 @@ * Returns : 0 on success. ***********************************************************************/ -static int DC390_reset (Scsi_Cmnd *cmd) +static int DC390_reset (struct scsi_cmnd *cmd) { - UCHAR bval; - PACB pACB = (PACB) cmd->device->host->hostdata; + u8 bval; + struct dc390_ACB* pACB = (struct dc390_ACB*) cmd->device->host->hostdata; printk(KERN_INFO "DC390: RESET ... "); @@ -1526,7 +1482,7 @@ * Purpose : Set the configuration dependent DCB parameters ***********************************************************************/ -static void dc390_updateDCB (PACB pACB, PDCB pDCB) +static void dc390_updateDCB (struct dc390_ACB* pACB, struct dc390_DCB* pDCB) { pDCB->SyncMode &= EN_TAG_QUEUEING | SYNC_NEGO_DONE /*| EN_ATN_STOP*/; if (pDCB->DevMode & TAG_QUEUEING_) { @@ -1558,15 +1514,15 @@ * Inputs : psrb - pointer to this scsi request block structure ***********************************************************************/ -static void __inline__ dc390_initSRB( PSRB psrb ) +static void __inline__ dc390_initSRB( struct dc390_SRB* psrb ) { /* psrb->PhysSRB = virt_to_phys( psrb ); */ } -static void dc390_linkSRB( PACB pACB ) +static void dc390_linkSRB( struct dc390_ACB* pACB ) { - UINT count, i; + u32 count, i; count = pACB->SRBCount; for( i=0; i<count; i++) @@ -1589,10 +1545,10 @@ * io_port, Irq, index: Resources and adapter index ***********************************************************************/ -static void __devinit dc390_initACB (PSH psh, ULONG io_port, UCHAR Irq, UCHAR index) +static void __devinit dc390_initACB (struct Scsi_Host *psh, unsigned long io_port, u8 Irq, u8 index) { - PACB pACB; - UCHAR i; + struct dc390_ACB* pACB; + u8 i; psh->can_queue = MAX_CMD_QUEUE; psh->cmd_per_lun = MAX_CMD_PER_LUN; @@ -1605,10 +1561,10 @@ psh->dma_channel = -1; psh->last_reset = jiffies; - pACB = (PACB) psh->hostdata; + pACB = (struct dc390_ACB*) psh->hostdata; pACB->pScsiHost = psh; - pACB->IOPortBase = (USHORT) io_port; + pACB->IOPortBase = (u16) io_port; pACB->IRQLevel = Irq; DEBUG0(printk (KERN_INFO "DC390: Adapter index %i, ID %i, IO 0x%08x, IRQ 0x%02x\n", \ @@ -1660,13 +1616,13 @@ * Outputs: 0 on success, -1 on error ***********************************************************************/ -static int __devinit dc390_initAdapter (PSH psh, ULONG io_port, UCHAR Irq, UCHAR index) +static int __devinit dc390_initAdapter (struct Scsi_Host *psh, unsigned long io_port, u8 Irq, u8 index) { - PACB pACB, pACB2; - UCHAR dstate; + struct dc390_ACB *pACB, *pACB2; + u8 dstate; int i; - pACB = (PACB) psh->hostdata; + pACB = (struct dc390_ACB*) psh->hostdata; if (request_region (io_port, psh->n_io_port, "tmscsim") == NULL) { printk(KERN_ERR "DC390: register IO ports error!\n"); @@ -1731,13 +1687,14 @@ } -static void __devinit dc390_set_pci_cfg (PDEVDECL) +static void __devinit dc390_set_pci_cfg (struct pci_dev *pdev) { - USHORT cmd; - PCI_READ_CONFIG_WORD (PDEV, PCI_COMMAND, &cmd); + u16 cmd; + + pci_read_config_word(pdev, PCI_COMMAND, &cmd); cmd |= PCI_COMMAND_SERR | PCI_COMMAND_PARITY | PCI_COMMAND_IO; - PCI_WRITE_CONFIG_WORD (PDEV, PCI_COMMAND, cmd); - PCI_WRITE_CONFIG_WORD (PDEV, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY)); + pci_write_config_word(pdev, PCI_COMMAND, cmd); + pci_write_config_word(pdev, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY)); } /** @@ -1748,15 +1705,15 @@ */ static int dc390_slave_alloc(struct scsi_device *scsi_device) { - PACB pACB = (PACB) scsi_device->host->hostdata; - PDCB pDCB, pDCB2 = 0; + struct dc390_ACB *pACB = (struct dc390_ACB*) scsi_device->host->hostdata; + struct dc390_DCB *pDCB, *pDCB2 = 0; uint id = scsi_device->id; uint lun = scsi_device->lun; - pDCB = kmalloc(sizeof(DC390_DCB), GFP_KERNEL); + pDCB = kmalloc(sizeof(struct dc390_DCB), GFP_KERNEL); if (!pDCB) return -ENOMEM; - memset(pDCB, 0, sizeof(DC390_DCB)); + memset(pDCB, 0, sizeof(struct dc390_DCB)); if (!pACB->DCBCnt++) { pACB->pLinkDCB = pDCB; @@ -1816,9 +1773,9 @@ */ static void dc390_slave_destroy(struct scsi_device *scsi_device) { - PACB pACB = (PACB) scsi_device->host->hostdata; - PDCB pDCB = (PDCB) scsi_device->hostdata; - PDCB pPrevDCB = pACB->pLinkDCB; + struct dc390_ACB* pACB = (struct dc390_ACB*) scsi_device->host->hostdata; + struct dc390_DCB* pDCB = (struct dc390_DCB*) scsi_device->hostdata; + struct dc390_DCB* pPrevDCB = pACB->pLinkDCB; pACB->scan_devices = 0; @@ -1853,12 +1810,12 @@ static int dc390_slave_configure(struct scsi_device *scsi_device) { - PACB pACB = (PACB) scsi_device->host->hostdata; + struct dc390_ACB* pACB = (struct dc390_ACB*) scsi_device->host->hostdata; pACB->scan_devices = 0; return 0; } -static Scsi_Host_Template driver_template = { +static struct scsi_host_template driver_template = { .module = THIS_MODULE, .proc_name = "tmscsim", .proc_info = DC390_proc_info, @@ -1883,7 +1840,7 @@ struct Scsi_Host *scsi_host; unsigned long io_port; u8 irq; - PACB pACB; + struct dc390_ACB* pACB; int ret = -ENOMEM; if (pci_enable_device(dev)) @@ -1893,11 +1850,11 @@ irq = dev->irq; /* allocate scsi host information (includes out adapter) */ - scsi_host = scsi_host_alloc(&driver_template, sizeof(struct _ACB)); + scsi_host = scsi_host_alloc(&driver_template, sizeof(struct dc390_ACB)); if (!scsi_host) goto nomem; - pACB = (PACB) scsi_host->hostdata; + pACB = (struct dc390_ACB*) scsi_host->hostdata; if (dc390_CheckEEpromCheckSum (dev, dc390_adapterCnt)) { int speed; @@ -1910,13 +1867,13 @@ printk(KERN_INFO "DC390: Used defaults: AdaptID=%i, SpeedIdx=%i (%i.%i MHz)," " DevMode=0x%02x, AdaptMode=0x%02x, TaggedCmnds=%i (%i), DelayReset=%is\n", tmscsim[0], tmscsim[1], speed/10, speed%10, - (UCHAR)tmscsim[2], (UCHAR)tmscsim[3], tmscsim[4], 2 << (tmscsim[4]), tmscsim[5]); + (u8)tmscsim[2], (u8)tmscsim[3], tmscsim[4], 2 << (tmscsim[4]), tmscsim[5]); } else { dc390_check_for_safe_settings(); dc390_EEprom_Override(dc390_adapterCnt); } - DEBUG0(printk(KERN_INFO "DC390: pSH = %8x, Index %02i\n", (UINT) scsi_host, dc390_adapterCnt)); + DEBUG0(printk(KERN_INFO "DC390: pSH = %8x, Index %02i\n", (u32) scsi_host, dc390_adapterCnt)); dc390_initACB(scsi_host, io_port, irq, dc390_adapterCnt); @@ -1959,7 +1916,7 @@ { struct Scsi_Host *scsi_host = pci_get_drvdata(dev); unsigned long iflags; - PACB pACB = (PACB) scsi_host->hostdata; + struct dc390_ACB* pACB = (struct dc390_ACB*) scsi_host->hostdata; u8 bval; scsi_remove_host(scsi_host); @@ -2014,19 +1971,19 @@ { int dev, spd, spd1; char *pos = buffer; - PACB pACB; - PDCB pDCB; + struct dc390_ACB* pACB; + struct dc390_DCB* pDCB; pACB = dc390_pACB_start; - while(pACB != (PACB)-1) + while(pACB != (struct dc390_ACB*)-1) { if (shpnt == pACB->pScsiHost) break; pACB = pACB->pNextACB; } - if (pACB == (PACB)-1) return(-ESRCH); + if (pACB == (struct dc390_ACB*)-1) return(-ESRCH); if(inout) /* Has data been written to the file ? */ return -ENOSYS; @@ -2087,7 +2044,7 @@ for (dev = 0; dev < pACB->DCBCnt; dev++) { - PSRB pSRB; + struct dc390_SRB* pSRB; if (pDCB->WaitSRBCnt) SPRINTF ("DCB (%02i-%i): Waiting: %i:", pDCB->TargetID, pDCB->TargetLUN, pDCB->WaitSRBCnt); diff -u a/drivers/scsi/tmscsim.h b/drivers/scsi/tmscsim.h --- a/drivers/scsi/tmscsim.h 23 Jun 2004 21:39:19 +++ b/drivers/scsi/tmscsim.h 24 Jun 2004 21:33:43 @@ -29,215 +29,167 @@ typedef u32 UINT; /* 32 bits */ typedef unsigned long ULONG; /* 32/64 bits */ -typedef UCHAR *PUCHAR; -typedef USHORT *PUSHORT; -typedef UINT *PUINT; -typedef ULONG *PULONG; -typedef Scsi_Host_Template *PSHT; -typedef struct Scsi_Host *PSH; -typedef Scsi_Device *PSCSIDEV; -typedef Scsi_Cmnd *PSCSICMD; -typedef void *PVOID; -typedef struct scatterlist *PSGL, SGL; - - -/*;-----------------------------------------------------------------------*/ -typedef struct _SyncMsg -{ -UCHAR ExtendMsg; -UCHAR ExtMsgLen; -UCHAR SyncXferReq; -UCHAR Period; -UCHAR ReqOffset; -} SyncMsg; -/*;-----------------------------------------------------------------------*/ -typedef struct _Capacity -{ -ULONG BlockCount; -ULONG BlockLength; -} Capacity; -/*;-----------------------------------------------------------------------*/ -typedef struct _SGentry -{ -ULONG SGXferDataPtr; -ULONG SGXferDataLen; -} SGentry; - -typedef struct _SGentry1 -{ -ULONG SGXLen; -ULONG SGXPtr; -} SGentry1, *PSGE; - /* ;----------------------------------------------------------------------- ; SCSI Request Block ;----------------------------------------------------------------------- */ -struct _SRB +struct dc390_SRB { -//UCHAR CmdBlock[12]; +//u8 CmdBlock[12]; -struct _SRB *pNextSRB; -struct _DCB *pSRBDCB; -PSCSICMD pcmd; -PSGL pSegmentList; +struct dc390_SRB *pNextSRB; +struct dc390_DCB *pSRBDCB; +struct scsi_cmnd *pcmd; +struct scatterlist *pSegmentList; /* 0x10: */ -SGL Segmentx; /* make a one entry of S/G list table */ +struct scatterlist Segmentx; /* make a one entry of S/G list table */ /* 0x1c: */ -ULONG SGBusAddr; /*;a segment starting address as seen by AM53C974A*/ -ULONG SGToBeXferLen; /*; to be xfer length */ -ULONG TotalXferredLen; -ULONG SavedTotXLen; -UINT SRBState; +unsigned long SGBusAddr; /*;a segment starting address as seen by AM53C974A*/ +unsigned long SGToBeXferLen; /*; to be xfer length */ +unsigned long TotalXferredLen; +unsigned long SavedTotXLen; +u32 SRBState; /* 0x30: */ -UCHAR SRBStatus; -UCHAR SRBFlag; /*; b0-AutoReqSense,b6-Read,b7-write */ +u8 SRBStatus; +u8 SRBFlag; /*; b0-AutoReqSense,b6-Read,b7-write */ /*; b4-settimeout,b5-Residual valid */ -UCHAR AdaptStatus; -UCHAR TargetStatus; +u8 AdaptStatus; +u8 TargetStatus; -UCHAR ScsiPhase; -UCHAR TagNumber; -UCHAR SGIndex; -UCHAR SGcount; +u8 ScsiPhase; +u8 TagNumber; +u8 SGIndex; +u8 SGcount; /* 0x38: */ -UCHAR MsgCnt; -UCHAR EndMessage; -UCHAR RetryCnt; -UCHAR SavedSGCount; +u8 MsgCnt; +u8 EndMessage; +u8 RetryCnt; +u8 SavedSGCount; -ULONG Saved_Ptr; +unsigned long Saved_Ptr; /* 0x40: */ -UCHAR MsgInBuf[6]; -UCHAR MsgOutBuf[6]; +u8 MsgInBuf[6]; +u8 MsgOutBuf[6]; -//UCHAR IORBFlag; /*;81h-Reset, 2-retry */ +//u8 IORBFlag; /*;81h-Reset, 2-retry */ /* 0x4c: */ }; -typedef struct _SRB DC390_SRB, *PSRB; - /* ;----------------------------------------------------------------------- ; Device Control Block ;----------------------------------------------------------------------- */ -struct _DCB +struct dc390_DCB { -struct _DCB *pNextDCB; -struct _ACB *pDCBACB; - -/* Aborted Commands */ -//PSCSICMD AboIORBhead; -//PSCSICMD AboIORBtail; -//ULONG AboIORBcnt; +struct dc390_DCB *pNextDCB; +struct dc390_ACB *pDCBACB; /* 0x08: */ /* Queued SRBs */ -PSRB pWaitingSRB; -PSRB pWaitLast; -PSRB pGoingSRB; -PSRB pGoingLast; -PSRB pActiveSRB; -UCHAR WaitSRBCnt; /* Not used */ -UCHAR GoingSRBCnt; +struct dc390_SRB *pWaitingSRB; +struct dc390_SRB *pWaitLast; +struct dc390_SRB *pGoingSRB; +struct dc390_SRB *pGoingLast; +struct dc390_SRB *pActiveSRB; +u8 WaitSRBCnt; /* Not used */ +u8 GoingSRBCnt; -UCHAR DevType; -UCHAR MaxCommand; +u8 DevType; +u8 MaxCommand; /* 0x20: */ -UINT TagMask; +u32 TagMask; -UCHAR TargetID; /*; SCSI Target ID (SCSI Only) */ -UCHAR TargetLUN; /*; SCSI Log. Unit (SCSI Only) */ -UCHAR DevMode; -UCHAR DCBFlag; - -UCHAR CtrlR1; -UCHAR CtrlR3; -UCHAR CtrlR4; -UCHAR Inquiry7; +u8 TargetID; /*; SCSI Target ID (SCSI Only) */ +u8 TargetLUN; /*; SCSI Log. Unit (SCSI Only) */ +u8 DevMode; +u8 DCBFlag; + +u8 CtrlR1; +u8 CtrlR3; +u8 CtrlR4; +u8 Inquiry7; /* 0x2c: */ -UCHAR SyncMode; /*; 0:async mode */ -UCHAR NegoPeriod; /*;for nego. */ -UCHAR SyncPeriod; /*;for reg. */ -UCHAR SyncOffset; /*;for reg. and nego.(low nibble) */ +u8 SyncMode; /*; 0:async mode */ +u8 NegoPeriod; /*;for nego. */ +u8 SyncPeriod; /*;for reg. */ +u8 SyncOffset; /*;for reg. and nego.(low nibble) */ /* 0x30:*/ -//UCHAR InqDataBuf[8]; -//UCHAR CapacityBuf[8]; +//u8 InqDataBuf[8]; +//u8 CapacityBuf[8]; ///* 0x40: */ }; -typedef struct _DCB DC390_DCB, *PDCB; + /* ;----------------------------------------------------------------------- ; Adapter Control Block ;----------------------------------------------------------------------- */ -struct _ACB +struct dc390_ACB { -PSH pScsiHost; -struct _ACB *pNextACB; -USHORT IOPortBase; -UCHAR IRQLevel; -UCHAR status; - -UCHAR SRBCount; -UCHAR AdapterIndex; /*; nth Adapter this driver */ -UCHAR DCBCnt; - -UCHAR TagMaxNum; -UCHAR ACBFlag; -UCHAR Gmode2; -UCHAR scan_devices; - -PDCB pLinkDCB; -PDCB pLastDCB; -PDCB pDCBRunRobin; - -PDCB pActiveDCB; -PSRB pFreeSRB; -PSRB pTmpSRB; - -UCHAR msgin123[4]; -UCHAR DCBmap[MAX_SCSI_ID]; -UCHAR Connected; -UCHAR pad; +struct Scsi_Host *pScsiHost; +struct dc390_ACB *pNextACB; +u16 IOPortBase; +u8 IRQLevel; +u8 status; + +u8 SRBCount; +u8 AdapterIndex; /*; nth Adapter this driver */ +u8 DCBCnt; + +u8 TagMaxNum; +u8 ACBFlag; +u8 Gmode2; +u8 scan_devices; + +struct dc390_DCB *pLinkDCB; +struct dc390_DCB *pLastDCB; +struct dc390_DCB *pDCBRunRobin; + +struct dc390_DCB *pActiveDCB; +struct dc390_SRB *pFreeSRB; +struct dc390_SRB *pTmpSRB; + +u8 msgin123[4]; +u8 DCBmap[MAX_SCSI_ID]; +u8 Connected; +u8 pad; #if defined(USE_SPINLOCKS) && USE_SPINLOCKS > 1 && (defined(CONFIG_SMP) || DEBUG_SPINLOCKS > 0) spinlock_t lock; #endif -UCHAR sel_timeout; -UCHAR glitch_cfg; +u8 sel_timeout; +u8 glitch_cfg; -UCHAR MsgLen; -UCHAR Ignore_IRQ; /* Not used */ +u8 MsgLen; +u8 Ignore_IRQ; /* Not used */ -PDEVDECL1; /* Pointer to PCI cfg. space */ +struct pci_dev *pdev; -ULONG Cmds; -UINT SelLost; -UINT SelConn; -UINT CmdInQ; -UINT CmdOutOfSRB; +unsigned long Cmds; +u32 SelLost; +u32 SelConn; +u32 CmdInQ; +u32 CmdOutOfSRB; struct timer_list Waiting_Timer; -DC390_SRB TmpSRB; -DC390_SRB SRB_array[MAX_SRB_CNT]; /* 50 SRBs */ +struct dc390_SRB TmpSRB; +struct dc390_SRB SRB_array[MAX_SRB_CNT]; /* 50 SRBs */ }; -typedef struct _ACB DC390_ACB, *PACB; /*;-----------------------------------------------------------------------*/ @@ -402,17 +354,17 @@ typedef struct _SCSIInqData { /* INQUIRY */ - UCHAR DevType; /* Periph Qualifier & Periph Dev Type*/ - UCHAR RMB_TypeMod; /* rem media bit & Dev Type Modifier */ - UCHAR Vers; /* ISO, ECMA, & ANSI versions */ - UCHAR RDF; /* AEN, TRMIOP, & response data format*/ - UCHAR AddLen; /* length of additional data */ - UCHAR Res1; /* reserved */ - UCHAR Res2; /* reserved */ - UCHAR Flags; /* RelADr,Wbus32,Wbus16,Sync,etc. */ - UCHAR VendorID[8]; /* Vendor Identification */ - UCHAR ProductID[16]; /* Product Identification */ - UCHAR ProductRev[4]; /* Product Revision */ + u8 DevType; /* Periph Qualifier & Periph Dev Type*/ + u8 RMB_TypeMod; /* rem media bit & Dev Type Modifier */ + u8 Vers; /* ISO, ECMA, & ANSI versions */ + u8 RDF; /* AEN, TRMIOP, & response data format*/ + u8 AddLen; /* length of additional data */ + u8 Res1; /* reserved */ + u8 Res2; /* reserved */ + u8 Flags; /* RelADr,Wbus32,Wbus16,Sync,etc. */ + u8 VendorID[8]; /* Vendor Identification */ + u8 ProductID[16]; /* Product Identification */ + u8 ProductRev[4]; /* Product Revision */ } SCSI_INQDATA, *PSCSI_INQDATA; @@ -461,10 +413,10 @@ */ typedef struct _EEprom { -UCHAR EE_MODE1; -UCHAR EE_SPEED; -UCHAR xx1; -UCHAR xx2; +u8 EE_MODE1; +u8 EE_SPEED; +u8 xx1; +u8 xx2; } EEprom, *PEEprom; #define REAL_EE_ADAPT_SCSI_ID 64 @@ -676,7 +628,7 @@ (inb (pACB->IOPortBase + (address))) #define DC390_read8_(address, base) \ - (inb ((USHORT)(base) + (address))) + (inb ((u16)(base) + (address))) #define DC390_read16(address) \ (inw (pACB->IOPortBase + (address))) @@ -688,7 +640,7 @@ outb ((value), pACB->IOPortBase + (address)) #define DC390_write8_(address,value,base) \ - outb ((value), (USHORT)(base) + (address)) + outb ((value), (u16)(base) + (address)) #define DC390_write16(address,value) \ outw ((value), pACB->IOPortBase + (address)) ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] kill obsolete typedefs and wrappers from tmscsim 2004-06-24 22:44 ` Guennadi Liakhovetski @ 2004-06-25 9:50 ` Christoph Hellwig 2004-06-25 19:42 ` Guennadi Liakhovetski 0 siblings, 1 reply; 8+ messages in thread From: Christoph Hellwig @ 2004-06-25 9:50 UTC (permalink / raw) To: Guennadi Liakhovetski; +Cc: Christoph Hellwig, linux-scsi On Fri, Jun 25, 2004 at 12:44:56AM +0200, Guennadi Liakhovetski wrote: > Why don't we remove all UCHAR / USHORT / UINT / ULONG... types altogether? One thing at a time, the patch is already huge enough. > PUCHAR == (UCHAR*), and you replace PUCHAR with (u8*), although it is not > obvious, that UCHAR == u8... I know, many scsi (at least) drivers use > them, and each of them defines them itself, but... As well as all those > PACB, PSRB, PDCB,... That'll happen sooner or later :) > >- ptr = (PSCSI_INQDATA) (pcmd->request_buffer); > >- if( pcmd->use_sg ) > >- ptr = (PSCSI_INQDATA) (page_address(((PSGL) ptr)->page) + ((PSGL) > >ptr)->offset); > >+ if (pcmd->use_sg) { > >+ ptr2 = (struct scatterlist *) ptr; > >+ ptr = (PSCSI_INQDATA) (page_address(ptr2->page) + ptr2->offset); > >+ } else > >+ ptr = (PSCSI_INQDATA) (pcmd->request_buffer); > > > > DEBUG0(printk (" SRBdone (%02x,%08x), SRB %p, pid %li\n", status, > > pcmd->result,\ > > pSRB, pcmd->pid)); > > This seems a typo (ptr uninitialised). Indeed, thanks. I wonder why gcc didn't spit a warning. > Attaching a new, extended, and, hopefully, fixed version of your patch. > Please, have a look. I think, it is better to push all this cleanup as a > single patch, even though it looks horribly big... It compiles, will > run-test tomorrow (well, already today, but in about 20 hours). We hsould probably call the types dc390_acb and dc390_dcb instead of the shouting names? Or maybe even better dc390_hba and dc390_lun so the names are descriptive? ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] kill obsolete typedefs and wrappers from tmscsim 2004-06-25 9:50 ` Christoph Hellwig @ 2004-06-25 19:42 ` Guennadi Liakhovetski 2004-06-26 11:17 ` Christoph Hellwig 0 siblings, 1 reply; 8+ messages in thread From: Guennadi Liakhovetski @ 2004-06-25 19:42 UTC (permalink / raw) To: Christoph Hellwig; +Cc: linux-scsi On Fri, 25 Jun 2004, Christoph Hellwig wrote: > On Fri, Jun 25, 2004 at 12:44:56AM +0200, Guennadi Liakhovetski wrote: >> Why don't we remove all UCHAR / USHORT / UINT / ULONG... types altogether? > > One thing at a time, the patch is already huge enough. Well, I thought, it was inconsistent to leave UCHAR, removing PUCHAR, thus allowing UCHAR c; u8 *pc = &c; and, since we are already at it... >> PUCHAR == (UCHAR*), and you replace PUCHAR with (u8*), although it is not >> obvious, that UCHAR == u8... I know, many scsi (at least) drivers use >> them, and each of them defines them itself, but... As well as all those >> PACB, PSRB, PDCB,... > > That'll happen sooner or later :) So, why not now?:-) >>> - ptr = (PSCSI_INQDATA) (pcmd->request_buffer); >>> - if( pcmd->use_sg ) >>> - ptr = (PSCSI_INQDATA) (page_address(((PSGL) ptr)->page) + ((PSGL) >>> ptr)->offset); >>> + if (pcmd->use_sg) { >>> + ptr2 = (struct scatterlist *) ptr; >>> + ptr = (PSCSI_INQDATA) (page_address(ptr2->page) + ptr2->offset); >>> + } else >>> + ptr = (PSCSI_INQDATA) (pcmd->request_buffer); >>> >>> DEBUG0(printk (" SRBdone (%02x,%08x), SRB %p, pid %li\n", status, >>> pcmd->result,\ >>> pSRB, pcmd->pid)); >> >> This seems a typo (ptr uninitialised). > > Indeed, thanks. I wonder why gcc didn't spit a warning. Mine did (3.3.2). Otherwise, how would I find it?:-) >> Attaching a new, extended, and, hopefully, fixed version of your patch. >> Please, have a look. I think, it is better to push all this cleanup as a >> single patch, even though it looks horribly big... It compiles, will >> run-test tomorrow (well, already today, but in about 20 hours). > > We hsould probably call the types dc390_acb and dc390_dcb instead of the > shouting names? Or maybe even better dc390_hba and dc390_lun so the > names are descriptive? Sure, that's easy!:-) I kept capitals initially, because all functions are called like FindDCB, DoingSRB_Done, etc. But if we rename dc390_dcb into dc390_lun, we would have to rename all respective functions, but that's a bit too much, I think. So, is it ok to just "smallify" the types, going the Middle Way?:-) If you don't object, I'll send tomorrow a new version of the patch with the only chenge: s/dc390_ACB/dc390_acb/g, s/dc390_DCB/dc390_dcb/g, s/dc390_SRB/dc390_srb/g. Do you want to rediff your 3rd patch yourself or should I do it? Essentially, as you know, up to now the "old" EH code was used by tmscsim. Switching to the "new" one seems a pretty essential change. Is there a way I could test it a bit? I can now boot and run from IDE, loading tmscsim as a module, to which I have a disk and a CD-ROM connected. How can I exercise eh-paths a bit without destroying the hardware?:-) Thanks Guennadi --- Guennadi Liakhovetski ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] kill obsolete typedefs and wrappers from tmscsim 2004-06-25 19:42 ` Guennadi Liakhovetski @ 2004-06-26 11:17 ` Christoph Hellwig 2004-06-26 22:32 ` Guennadi Liakhovetski 2004-07-04 21:37 ` Guennadi Liakhovetski 0 siblings, 2 replies; 8+ messages in thread From: Christoph Hellwig @ 2004-06-26 11:17 UTC (permalink / raw) To: Guennadi Liakhovetski; +Cc: linux-scsi > >That'll happen sooner or later :) > > So, why not now?:-) Okay, okay - you've won :) > Sure, that's easy!:-) I kept capitals initially, because all functions are > called like FindDCB, DoingSRB_Done, etc. But if we rename dc390_dcb into > dc390_lun, we would have to rename all respective functions, but that's > a bit too much, I think. So, is it ok to just "smallify" the types, going > the Middle Way?:-) Yes. > Do you want to rediff your 3rd patch yourself or should I do it? I can rediff it. > Essentially, as you know, up to now the "old" EH code was used by tmscsim. > Switching to the "new" one seems a pretty essential change. No. Old EH is completely gone in 2.6. The tmscsim driver claims to implement new EH but gets it wrong currently.. > Is there a way > I could test it a bit? I can now boot and run from IDE, loading tmscsim as > a module, to which I have a disk and a CD-ROM connected. How can I > exercise eh-paths a bit without destroying the hardware?:-) A good way to test EH is to improperly terminate the bus and wait for failures to happen or similar things. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] kill obsolete typedefs and wrappers from tmscsim 2004-06-26 11:17 ` Christoph Hellwig @ 2004-06-26 22:32 ` Guennadi Liakhovetski 2004-07-04 21:37 ` Guennadi Liakhovetski 1 sibling, 0 replies; 8+ messages in thread From: Guennadi Liakhovetski @ 2004-06-26 22:32 UTC (permalink / raw) To: Christoph Hellwig, James Bottomley; +Cc: linux-scsi [-- Attachment #1: Type: TEXT/PLAIN, Size: 2160 bytes --] On Sat, 26 Jun 2004, Christoph Hellwig wrote: >>> That'll happen sooner or later :) >> >> So, why not now?:-) > > Okay, okay - you've won :) > >> Sure, that's easy!:-) I kept capitals initially, because all functions are >> called like FindDCB, DoingSRB_Done, etc. But if we rename dc390_dcb into >> dc390_lun, we would have to rename all respective functions, but that's >> a bit too much, I think. So, is it ok to just "smallify" the types, going >> the Middle Way?:-) > > Yes. Ok, attached. You didn't sign-off for it. After half an hour searching through my LKML archives I found that email from Linus, explaining what to do in this case:-) And it was pretty much what I had in head, so, I put "originally submitted" by you, and then signed-off myself. Ough. Hope, you don't mind:-) James, please, apply. >> Do you want to rediff your 3rd patch yourself or should I do it? > > I can rediff it. Ok, thanks. >> Essentially, as you know, up to now the "old" EH code was used by tmscsim. >> Switching to the "new" one seems a pretty essential change. > > No. Old EH is completely gone in 2.6. The tmscsim driver claims to > implement new EH but gets it wrong currently.. Ok, I was just confused by #define OLD_EH in dc390.h I looked through this your patch. Ok, I more or less can understand it, great, thanks! One question, though. Is result = DID_ABORT << 16 no more needed in ->eh_abort_handler()? And one more - del_timer in bus_reset. Shouldn't we rather drop the host_lock, call del_timer_sync and then re-accuire the lock? There might be some other places like that... >> Is there a way >> I could test it a bit? I can now boot and run from IDE, loading tmscsim as >> a module, to which I have a disk and a CD-ROM connected. How can I >> exercise eh-paths a bit without destroying the hardware?:-) > > A good way to test EH is to improperly terminate the bus and wait for > failures to happen or similar things. Hm, on that PC I can only boot either from SCSI or from a floppy. So, to test that I would have to make a boot-floppy... And then I would better disconnect the disk, right?:-) Thanks Guennadi --- Guennadi Liakhovetski [-- Attachment #2: Type: TEXT/PLAIN, Size: 70342 bytes --] Original version submitted on 24 June 2004 by Christoph Hellwig. Additions and modifications by: Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> diff -u a/drivers/scsi/scsiiom.c b/drivers/scsi/scsiiom.c --- a/drivers/scsi/scsiiom.c 23 Jun 2004 21:40:16 +++ b/drivers/scsi/scsiiom.c 24 Jun 2004 22:28:19 @@ -6,7 +6,7 @@ ***********************************************************************/ /* $Id: scsiiom.c,v 2.55.2.17 2000/12/20 00:39:37 garloff Exp $ */ static void __inline__ -dc390_freetag (PDCB pDCB, PSRB pSRB) +dc390_freetag (struct dc390_dcb* pDCB, struct dc390_srb* pSRB) { if (pSRB->TagNumber < 255) { pDCB->TagMask &= ~(1 << pSRB->TagNumber); /* free tag mask */ @@ -15,10 +15,10 @@ } -static UCHAR -dc390_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB ) +static u8 +dc390_StartSCSI( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB ) { - UCHAR cmd; UCHAR disc_allowed, try_sync_nego; + u8 cmd; u8 disc_allowed, try_sync_nego; pSRB->ScsiPhase = SCSI_NOP0; @@ -69,7 +69,7 @@ /* Change 99/05/31: Don't use tags when not disconnecting (BUSY) */ if ((pDCB->SyncMode & EN_TAG_QUEUEING) && disc_allowed) { - UCHAR tag_no = 0; + u8 tag_no = 0; while ((1 << tag_no) & pDCB->TagMask) tag_no++; if (tag_no >= sizeof (pDCB->TagMask)*8 || tag_no >= pDCB->MaxCommand) { printk (KERN_WARNING "DC390: Out of tags for Dev. %02x %02x\n", pDCB->TargetID, pDCB->TargetLUN); @@ -92,7 +92,7 @@ if (try_sync_nego) { - UCHAR Sync_Off = pDCB->SyncOffset; + u8 Sync_Off = pDCB->SyncOffset; DEBUG0(printk (KERN_INFO "DC390: NEW Sync Nego code triggered (%i %i)\n", pDCB->TargetID, pDCB->TargetLUN)); pSRB->MsgOutBuf[0] = EXTENDED_MESSAGE; pSRB->MsgOutBuf[1] = 3; @@ -121,8 +121,8 @@ } else /* write cmnd to bus */ { - PUCHAR ptr; UCHAR i; - ptr = (PUCHAR) pSRB->pcmd->cmnd; + u8 *ptr; u8 i; + ptr = (u8 *) pSRB->pcmd->cmnd; for (i=0; i<pSRB->pcmd->cmd_len; i++) DC390_write8 (ScsiFifo, *(ptr++)); } @@ -154,18 +154,17 @@ #if DMA_INT /* This is similar to AM53C974.c ... */ -static UCHAR -dc390_dma_intr (PACB pACB) +static u8 +dc390_dma_intr (struct dc390_acb* pACB) { - PSRB pSRB; - UCHAR dstate; - DEBUG0(USHORT pstate;PDEVDECL1); + struct dc390_srb* pSRB; + u8 dstate; + DEBUG0(u16 pstate; struct pci_dev *pdev = pACB->pdev); - DEBUG0(PDEVSET1); - DEBUG0(PCI_READ_CONFIG_WORD (PDEV, PCI_STATUS, &pstate)); + DEBUG0(pci_read_config_word(pdev, PCI_STATUS, &pstate)); DEBUG0(if (pstate & (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY))\ { printk(KERN_WARNING "DC390: PCI state = %04x!\n", pstate); \ - PCI_WRITE_CONFIG_WORD (PDEV, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY));}); + pci_write_config_word(pdev, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY));}); dstate = DC390_read8 (DMA_Status); @@ -179,7 +178,7 @@ } if (dstate & DMA_XFER_DONE) { - UINT residual, xferCnt; int ctr = 6000000; + u32 residual, xferCnt; int ctr = 6000000; if (! (DC390_read8 (DMA_Cmd) & READ_DIRECTION)) { do @@ -217,18 +216,18 @@ static irqreturn_t __inline__ DC390_Interrupt( int irq, void *dev_id, struct pt_regs *regs) { - PACB pACB, pACB2; - PDCB pDCB; - PSRB pSRB; - UCHAR sstatus=0; - UCHAR phase; - void (*stateV)( PACB, PSRB, PUCHAR ); - UCHAR istate, istatus; + struct dc390_acb *pACB, *pACB2; + struct dc390_dcb *pDCB; + struct dc390_srb *pSRB; + u8 sstatus=0; + u8 phase; + void (*stateV)( struct dc390_acb*, struct dc390_srb*, u8 *); + u8 istate, istatus; #if DMA_INT - UCHAR dstatus; + u8 dstatus; #endif - pACB = (PACB)dev_id; + pACB = (struct dc390_acb*)dev_id; for (pACB2 = dc390_pACB_start; (pACB2 && pACB2 != pACB); pACB2 = pACB2->pNextACB); if (!pACB2) { @@ -323,7 +322,7 @@ ( *stateV )( pACB, pSRB, &sstatus ); pSRB->ScsiPhase = sstatus & 7; - phase = (UCHAR) sstatus & 7; + phase = (u8) sstatus & 7; DEBUG1(printk (KERN_INFO "DC390: [%i]%s(1) (%02x)\n", phase, dc390_p1_str[phase], sstatus)); stateV = (void *) dc390_phase1[phase]; ( *stateV )( pACB, pSRB, &sstatus ); @@ -345,12 +344,12 @@ } static void -dc390_DataOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_DataOut_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { - UCHAR sstatus; - PSGL psgl; - UINT ResidCnt, xferCnt; - UCHAR dstate = 0; + u8 sstatus; + struct scatterlist *psgl; + u32 ResidCnt, xferCnt; + u8 dstate = 0; sstatus = *psstatus; @@ -390,10 +389,10 @@ } else { - ResidCnt = (UINT) DC390_read8 (Current_Fifo) & 0x1f; - ResidCnt |= (UINT) DC390_read8 (CtcReg_High) << 16; - ResidCnt |= (UINT) DC390_read8 (CtcReg_Mid) << 8; - ResidCnt += (UINT) DC390_read8 (CtcReg_Low); + ResidCnt = (u32) DC390_read8 (Current_Fifo) & 0x1f; + ResidCnt |= (u32) DC390_read8 (CtcReg_High) << 16; + ResidCnt |= (u32) DC390_read8 (CtcReg_Mid) << 8; + ResidCnt += (u32) DC390_read8 (CtcReg_Low); xferCnt = pSRB->SGToBeXferLen - ResidCnt; pSRB->SGBusAddr += xferCnt; @@ -409,13 +408,13 @@ } static void -dc390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_DataIn_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { - UCHAR sstatus, residual, bval; - PSGL psgl; - UINT ResidCnt, i; - ULONG xferCnt; - PUCHAR ptr; + u8 sstatus, residual, bval; + struct scatterlist *psgl; + u32 ResidCnt, i; + unsigned long xferCnt; + u8 *ptr; sstatus = *psstatus; @@ -443,9 +442,9 @@ } dc390_laststatus &= ~0xff000000; dc390_laststatus |= dstate << 24; - DEBUG1(ResidCnt = ((ULONG) DC390_read8 (CtcReg_High) << 16) \ - + ((ULONG) DC390_read8 (CtcReg_Mid) << 8) \ - + ((ULONG) DC390_read8 (CtcReg_Low))); + DEBUG1(ResidCnt = ((unsigned long) DC390_read8 (CtcReg_High) << 16) \ + + ((unsigned long) DC390_read8 (CtcReg_Mid) << 8) \ + + ((unsigned long) DC390_read8 (CtcReg_Low))); DEBUG1(printk (KERN_DEBUG "Count_2_Zero (ResidCnt=%i,ToBeXfer=%li),", ResidCnt, pSRB->SGToBeXferLen)); DC390_write8 (DMA_Cmd, READ_DIRECTION+DMA_IDLE_CMD); /* | DMA_INT */ @@ -501,11 +500,11 @@ dc390_laststatus &= ~0xff000000; dc390_laststatus |= bval << 24; DEBUG1(printk (KERN_DEBUG "Blast: Read %i times DMA_Status %02x", 0xa000-i, bval)); - ResidCnt = (UINT) DC390_read8 (CtcReg_High); + ResidCnt = (u32) DC390_read8 (CtcReg_High); ResidCnt <<= 8; - ResidCnt |= (UINT) DC390_read8 (CtcReg_Mid); + ResidCnt |= (u32) DC390_read8 (CtcReg_Mid); ResidCnt <<= 8; - ResidCnt |= (UINT) DC390_read8 (CtcReg_Low); + ResidCnt |= (u32) DC390_read8 (CtcReg_Low); xferCnt = pSRB->SGToBeXferLen - ResidCnt; pSRB->SGBusAddr += xferCnt; @@ -515,7 +514,7 @@ if( residual ) { bval = DC390_read8 (ScsiFifo); /* get one residual byte */ - ptr = (PUCHAR) bus_to_virt( pSRB->SGBusAddr ); + ptr = (u8 *) bus_to_virt( pSRB->SGBusAddr ); *ptr = bval; pSRB->SGBusAddr++; xferCnt++; pSRB->TotalXferredLen++; @@ -534,12 +533,12 @@ } static void -dc390_Command_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_Command_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { } static void -dc390_Status_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_Status_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { pSRB->TargetStatus = DC390_read8 (ScsiFifo); @@ -552,7 +551,7 @@ } static void -dc390_MsgOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_MsgOut_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { if( pSRB->SRBState & (SRB_UNEXPECT_RESEL+SRB_ABORT_SENT) ) *psstatus = SCSI_NOP0; @@ -561,7 +560,7 @@ static void __inline__ -dc390_reprog (PACB pACB, PDCB pDCB) +dc390_reprog (struct dc390_acb* pACB, struct dc390_dcb* pDCB) { DC390_write8 (Sync_Period, pDCB->SyncPeriod); DC390_write8 (Sync_Offset, pDCB->SyncOffset); @@ -573,7 +572,7 @@ #ifdef DC390_DEBUG0 static void -dc390_printMsg (UCHAR *MsgBuf, UCHAR len) +dc390_printMsg (u8 *MsgBuf, u8 len) { int i; printk (" %02x", MsgBuf[0]); @@ -587,7 +586,7 @@ /* reject_msg */ static void __inline__ -dc390_MsgIn_reject (PACB pACB, PSRB pSRB) +dc390_MsgIn_reject (struct dc390_acb* pACB, struct dc390_srb* pSRB) { pSRB->MsgOutBuf[0] = MESSAGE_REJECT; pSRB->MsgCnt = 1; DC390_ENABLE_MSGOUT; @@ -596,18 +595,18 @@ /* abort command */ static void __inline__ -dc390_EnableMsgOut_Abort ( PACB pACB, PSRB pSRB ) +dc390_EnableMsgOut_Abort ( struct dc390_acb* pACB, struct dc390_srb* pSRB ) { pSRB->MsgOutBuf[0] = ABORT; pSRB->MsgCnt = 1; DC390_ENABLE_MSGOUT; pSRB->pSRBDCB->DCBFlag &= ~ABORT_DEV_; } -static PSRB -dc390_MsgIn_QTag (PACB pACB, PDCB pDCB, UCHAR tag) +static struct dc390_srb* +dc390_MsgIn_QTag (struct dc390_acb* pACB, struct dc390_dcb* pDCB, u8 tag) { - PSRB lastSRB = pDCB->pGoingLast; - PSRB pSRB = pDCB->pGoingSRB; + struct dc390_srb* lastSRB = pDCB->pGoingLast; + struct dc390_srb* pSRB = pDCB->pGoingSRB; if (pSRB) { @@ -645,9 +644,9 @@ /* set async transfer mode */ static void -dc390_MsgIn_set_async (PACB pACB, PSRB pSRB) +dc390_MsgIn_set_async (struct dc390_acb* pACB, struct dc390_srb* pSRB) { - PDCB pDCB = pSRB->pSRBDCB; + struct dc390_dcb* pDCB = pSRB->pSRBDCB; if (!(pSRB->SRBState & DO_SYNC_NEGO)) printk (KERN_INFO "DC390: Target %i initiates Non-Sync?\n", pDCB->TargetID); pSRB->SRBState &= ~DO_SYNC_NEGO; @@ -663,13 +662,13 @@ /* set sync transfer mode */ static void -dc390_MsgIn_set_sync (PACB pACB, PSRB pSRB) +dc390_MsgIn_set_sync (struct dc390_acb* pACB, struct dc390_srb* pSRB) { - UCHAR bval; - USHORT wval, wval1; - PDCB pDCB = pSRB->pSRBDCB; - UCHAR oldsyncperiod = pDCB->SyncPeriod; - UCHAR oldsyncoffset = pDCB->SyncOffset; + u8 bval; + u16 wval, wval1; + struct dc390_dcb* pDCB = pSRB->pSRBDCB; + u8 oldsyncperiod = pDCB->SyncPeriod; + u8 oldsyncoffset = pDCB->SyncOffset; if (!(pSRB->SRBState & DO_SYNC_NEGO)) { @@ -702,7 +701,7 @@ pDCB->SyncOffset |= pSRB->MsgInBuf[4]; pDCB->NegoPeriod = pSRB->MsgInBuf[3]; - wval = (USHORT) pSRB->MsgInBuf[3]; + wval = (u16) pSRB->MsgInBuf[3]; wval = wval << 2; wval -= 3; wval1 = wval / 25; /* compute speed */ if( (wval1 * 25) != wval) wval1++; bval = FAST_CLK+FAST_SCSI; /* fast clock / fast scsi */ @@ -722,7 +721,7 @@ } pDCB->CtrlR3 = bval; - pDCB->SyncPeriod = (UCHAR)wval1; + pDCB->SyncPeriod = (u8)wval1; if ((oldsyncperiod != wval1 || oldsyncoffset != pDCB->SyncOffset) && pDCB->TargetLUN == 0) { @@ -738,20 +737,20 @@ /* handle RESTORE_PTR */ /* I presume, this command is already mapped, so, have to remap. */ static void -dc390_restore_ptr (PACB pACB, PSRB pSRB) +dc390_restore_ptr (struct dc390_acb* pACB, struct dc390_srb* pSRB) { - Scsi_Cmnd* pcmd = pSRB->pcmd; - PSGL psgl; + struct scsi_cmnd *pcmd = pSRB->pcmd; + struct scatterlist *psgl; pSRB->TotalXferredLen = 0; pSRB->SGIndex = 0; if (pcmd->use_sg) { - pSRB->pSegmentList = (PSGL) pcmd->request_buffer; + pSRB->pSegmentList = (struct scatterlist *)pcmd->request_buffer; psgl = pSRB->pSegmentList; //dc390_pci_sync(pSRB); - while (pSRB->TotalXferredLen + (ULONG) sg_dma_len(psgl) < pSRB->Saved_Ptr) + while (pSRB->TotalXferredLen + (unsigned long) sg_dma_len(psgl) < pSRB->Saved_Ptr) { - pSRB->TotalXferredLen += (ULONG) sg_dma_len(psgl); + pSRB->TotalXferredLen += (unsigned long) sg_dma_len(psgl); pSRB->SGIndex++; if( pSRB->SGIndex < pSRB->SGcount ) { @@ -773,7 +772,7 @@ sg_dma_len(&pSRB->Segmentx) = pcmd->request_bufflen - pSRB->Saved_Ptr; pSRB->SGcount = 1; - pSRB->pSegmentList = (PSGL) &pSRB->Segmentx; + pSRB->pSegmentList = (struct scatterlist *) &pSRB->Segmentx; } else { pSRB->SGcount = 0; printk (KERN_INFO "DC390: RESTORE_PTR message for Transfer without Scatter-Gather ??\n"); @@ -792,8 +791,8 @@ /* The old implementation was correct. Sigh! */ /* Check if the message is complete */ -static UCHAR __inline__ -dc390_MsgIn_complete (UCHAR *msgbuf, UINT len) +static u8 __inline__ +dc390_MsgIn_complete (u8 *msgbuf, u32 len) { if (*msgbuf == EXTENDED_MESSAGE) { @@ -809,9 +808,9 @@ /* read and eval received messages */ static void -dc390_MsgIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_MsgIn_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { - PDCB pDCB = pACB->pActiveDCB; + struct dc390_dcb* pDCB = pACB->pActiveDCB; /* Read the msg */ @@ -856,7 +855,7 @@ // nothing has to be done case COMMAND_COMPLETE: break; - // SAVE POINTER may be ignored as we have the PSRB associated with the + // SAVE POINTER may be ignored as we have the struct dc390_srb* associated with the // scsi command. Thanks, Gerard, for pointing it out. case SAVE_POINTERS: pSRB->Saved_Ptr = pSRB->TotalXferredLen; @@ -883,11 +882,11 @@ static void -dc390_DataIO_Comm( PACB pACB, PSRB pSRB, UCHAR ioDir) +dc390_DataIO_Comm( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 ioDir) { - PSGL psgl; - ULONG lval; - PDCB pDCB = pACB->pActiveDCB; + struct scatterlist *psgl; + unsigned long lval; + struct dc390_dcb* pDCB = pACB->pActiveDCB; if (pSRB == pACB->pTmpSRB) { @@ -913,11 +912,11 @@ } lval = pSRB->SGToBeXferLen; DEBUG1(printk (KERN_DEBUG " DC390: Start transfer: %li bytes (address %08lx)\n", lval, pSRB->SGBusAddr)); - DC390_write8 (CtcReg_Low, (UCHAR) lval); + DC390_write8 (CtcReg_Low, (u8) lval); lval >>= 8; - DC390_write8 (CtcReg_Mid, (UCHAR) lval); + DC390_write8 (CtcReg_Mid, (u8) lval); lval >>= 8; - DC390_write8 (CtcReg_High, (UCHAR) lval); + DC390_write8 (CtcReg_High, (u8) lval); DC390_write32 (DMA_XferCnt, pSRB->SGToBeXferLen); DC390_write32 (DMA_XferAddr, pSRB->SGBusAddr); @@ -956,36 +955,36 @@ static void -dc390_DataOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_DataOutPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { dc390_DataIO_Comm (pACB, pSRB, WRITE_DIRECTION); } static void -dc390_DataInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_DataInPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { dc390_DataIO_Comm (pACB, pSRB, READ_DIRECTION); } static void -dc390_CommandPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_CommandPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { - PDCB pDCB; - UCHAR i, cnt; - PUCHAR ptr; + struct dc390_dcb* pDCB; + u8 i, cnt; + u8 *ptr; DC390_write8 (ScsiCmd, RESET_ATN_CMD); DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); if( !(pSRB->SRBFlag & AUTO_REQSENSE) ) { - cnt = (UCHAR) pSRB->pcmd->cmd_len; - ptr = (PUCHAR) pSRB->pcmd->cmnd; + cnt = (u8) pSRB->pcmd->cmd_len; + ptr = (u8 *) pSRB->pcmd->cmnd; for(i=0; i < cnt; i++) DC390_write8 (ScsiFifo, *(ptr++)); } else { - UCHAR bval = 0; + u8 bval = 0; DC390_write8 (ScsiFifo, REQUEST_SENSE); pDCB = pACB->pActiveDCB; DC390_write8 (ScsiFifo, pDCB->TargetLUN << 5); @@ -1000,7 +999,7 @@ } static void -dc390_StatusPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_StatusPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); pSRB->SRBState = SRB_STATUS; @@ -1009,11 +1008,11 @@ } static void -dc390_MsgOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_MsgOutPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { - UCHAR bval, i, cnt; - PUCHAR ptr; - PDCB pDCB; + u8 bval, i, cnt; + u8 *ptr; + struct dc390_dcb* pDCB; DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); pDCB = pACB->pActiveDCB; @@ -1022,7 +1021,7 @@ cnt = pSRB->MsgCnt; if( cnt ) { - ptr = (PUCHAR) pSRB->MsgOutBuf; + ptr = (u8 *) pSRB->MsgOutBuf; for(i=0; i < cnt; i++) DC390_write8 (ScsiFifo, *(ptr++)); pSRB->MsgCnt = 0; @@ -1062,7 +1061,7 @@ } static void -dc390_MsgInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_MsgInPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); if( !(pSRB->SRBState & SRB_MSGIN) ) @@ -1075,21 +1074,21 @@ } static void -dc390_Nop_0( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_Nop_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { } static void -dc390_Nop_1( PACB pACB, PSRB pSRB, PUCHAR psstatus) +dc390_Nop_1( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus) { } static void -dc390_SetXferRate( PACB pACB, PDCB pDCB ) +dc390_SetXferRate( struct dc390_acb* pACB, struct dc390_dcb* pDCB ) { - UCHAR bval, i, cnt; - PDCB ptr; + u8 bval, i, cnt; + struct dc390_dcb* ptr; if( !(pDCB->TargetLUN) ) { @@ -1117,11 +1116,11 @@ static void -dc390_Disconnect( PACB pACB ) +dc390_Disconnect( struct dc390_acb* pACB ) { - PDCB pDCB; - PSRB pSRB, psrb; - UCHAR i, cnt; + struct dc390_dcb *pDCB; + struct dc390_srb *pSRB, *psrb; + u8 i, cnt; DEBUG0(printk(KERN_INFO "DISC,")); @@ -1198,11 +1197,11 @@ static void -dc390_Reselect( PACB pACB ) +dc390_Reselect( struct dc390_acb* pACB ) { - PDCB pDCB; - PSRB pSRB; - UCHAR id, lun; + struct dc390_dcb* pDCB; + struct dc390_srb* pSRB; + u8 id, lun; DEBUG0(printk(KERN_INFO "RSEL,")); pACB->Connected = 1; @@ -1283,10 +1282,10 @@ DC390_write8 (ScsiCmd, MSG_ACCEPTED_CMD); /* ;to release the /ACK signal */ } -static UCHAR __inline__ +static u8 __inline__ dc390_tagq_blacklist (char* name) { - UCHAR i; + u8 i; for(i=0; i<BADDEVCNT; i++) if (memcmp (name, dc390_baddevname1[i], 28) == 0) return 1; @@ -1295,7 +1294,7 @@ static void -dc390_disc_tagq_set (PDCB pDCB, PSCSI_INQDATA ptr) +dc390_disc_tagq_set (struct dc390_dcb* pDCB, PSCSI_INQDATA ptr) { /* Check for SCSI format (ANSI and Response data format) */ if ( (ptr->Vers & 0x07) >= 2 || (ptr->RDF & 0x0F) == 2 ) @@ -1317,9 +1316,9 @@ static void -dc390_add_dev (PACB pACB, PDCB pDCB, PSCSI_INQDATA ptr) +dc390_add_dev (struct dc390_acb* pACB, struct dc390_dcb* pDCB, PSCSI_INQDATA ptr) { - UCHAR bval1 = ptr->DevType & SCSI_DEVTYPE; + u8 bval1 = ptr->DevType & SCSI_DEVTYPE; pDCB->DevType = bval1; /* if (bval1 == TYPE_DISK || bval1 == TYPE_MOD) */ dc390_disc_tagq_set (pDCB, ptr); @@ -1327,22 +1326,24 @@ static void -dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB ) +dc390_SRBdone( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB ) { - UCHAR bval, status, i; - PSCSICMD pcmd; + u8 bval, status, i; + struct scsi_cmnd *pcmd; PSCSI_INQDATA ptr; - PSGL ptr2; - ULONG swlval; + struct scatterlist *ptr2; + unsigned long swlval; pcmd = pSRB->pcmd; /* KG: Moved pci_unmap here */ dc390_pci_unmap(pSRB); status = pSRB->TargetStatus; - ptr = (PSCSI_INQDATA) (pcmd->request_buffer); - if( pcmd->use_sg ) - ptr = (PSCSI_INQDATA) (page_address(((PSGL) ptr)->page) + ((PSGL) ptr)->offset); + 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); DEBUG0(printk (" SRBdone (%02x,%08x), SRB %p, pid %li\n", status, pcmd->result,\ pSRB, pcmd->pid)); @@ -1379,7 +1380,7 @@ } if(pSRB->RetryCnt == 0) { - //(UINT)(pSRB->pcmd->cmnd[0]) = pSRB->Segment0[0]; + //(u32)(pSRB->pcmd->cmnd[0]) = pSRB->Segment0[0]; pSRB->TotalXferredLen = pSRB->SavedTotXLen; if( (pSRB->TotalXferredLen) && (pSRB->TotalXferredLen >= pcmd->underflow) ) @@ -1387,7 +1388,7 @@ else pcmd->result = MK_RES_LNX(DRIVER_SENSE,DID_OK,0,CHECK_CONDITION); REMOVABLEDEBUG(printk(KERN_INFO "Cmd=%02x,Result=%08x,XferL=%08x\n",pSRB->pcmd->cmnd[0],\ - (UINT) pcmd->result, (UINT) pSRB->TotalXferredLen)); + (u32) pcmd->result, (u32) pSRB->TotalXferredLen)); goto ckc_e; } else /* Retry */ @@ -1395,19 +1396,17 @@ pSRB->RetryCnt--; pSRB->AdaptStatus = 0; pSRB->TargetStatus = 0; - //*((PUINT) &(pSRB->CmdBlock[0])) = pSRB->Segment0[0]; - //*((PUINT) &(pSRB->CmdBlock[4])) = pSRB->Segment0[1]; /* Don't retry on TEST_UNIT_READY */ if( pSRB->pcmd->cmnd[0] == TEST_UNIT_READY /* || pSRB->pcmd->cmnd[0] == START_STOP */) { pcmd->result = MK_RES_LNX(DRIVER_SENSE,DID_OK,0,CHECK_CONDITION); REMOVABLEDEBUG(printk(KERN_INFO "Cmd=%02x, Result=%08x, XferL=%08x\n",pSRB->pcmd->cmnd[0],\ - (UINT) pcmd->result, (UINT) pSRB->TotalXferredLen)); + (u32) pcmd->result, (u32) pSRB->TotalXferredLen)); goto ckc_e; } SET_RES_DRV(pcmd->result,DRIVER_SENSE); pcmd->use_sg = pSRB->SavedSGCount; - //pSRB->ScsiCmdLen = (UCHAR) (pSRB->Segment1[0] >> 8); + //pSRB->ScsiCmdLen = (u8) (pSRB->Segment1[0] >> 8); DEBUG0 (printk ("DC390: RETRY pid %li (%02x), target %02i-%02i\n", pcmd->pid, pcmd->cmnd[0], pcmd->device->id, pcmd->device->lun)); pSRB->SGIndex = 0; pSRB->TotalXferredLen = 0; @@ -1437,14 +1436,14 @@ ptr2++; } REMOVABLEDEBUG(printk(KERN_INFO "XferredLen=%08x,NotXferLen=%08x\n",\ - (UINT) pSRB->TotalXferredLen, (UINT) swlval)); + (u32) pSRB->TotalXferredLen, (u32) swlval)); } dc390_RequestSense( pACB, pDCB, pSRB ); return; } else if( status_byte(status) == QUEUE_FULL ) { - bval = (UCHAR) pDCB->GoingSRBCnt; + bval = (u8) pDCB->GoingSRBCnt; bval--; pDCB->MaxCommand = bval; dc390_freetag (pDCB, pSRB); @@ -1569,12 +1568,12 @@ /* Remove all SRBs from Going list and inform midlevel */ static void -dc390_DoingSRB_Done( PACB pACB, PSCSICMD cmd ) +dc390_DoingSRB_Done(struct dc390_acb* pACB, struct scsi_cmnd *cmd) { - PDCB pDCB, pdcb; - PSRB psrb, psrb2; - UCHAR i; - PSCSICMD pcmd; + struct dc390_dcb *pDCB, *pdcb; + struct dc390_srb *psrb, *psrb2; + u8 i; + struct scsi_cmnd *pcmd; pDCB = pACB->pLinkDCB; pdcb = pDCB; @@ -1610,7 +1609,7 @@ static void -dc390_ResetSCSIBus( PACB pACB ) +dc390_ResetSCSIBus( struct dc390_acb* pACB ) { //DC390_write8 (ScsiCmd, RST_DEVICE_CMD); //udelay (250); @@ -1625,7 +1624,7 @@ } static void -dc390_ScsiRstDetect( PACB pACB ) +dc390_ScsiRstDetect( struct dc390_acb* pACB ) { printk ("DC390: Rst_Detect: laststat = %08x\n", dc390_laststatus); //DEBUG0(printk(KERN_INFO "RST_DETECT,")); @@ -1658,9 +1657,9 @@ static void __inline__ -dc390_RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB ) +dc390_RequestSense( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB ) { - PSCSICMD pcmd; + struct scsi_cmnd *pcmd; pcmd = pSRB->pcmd; @@ -1668,9 +1667,9 @@ pcmd->cmnd[0], pDCB->TargetID, pDCB->TargetLUN)); pSRB->SRBFlag |= AUTO_REQSENSE; - //pSRB->Segment0[0] = (UINT) pSRB->CmdBlock[0]; - //pSRB->Segment0[1] = (UINT) pSRB->CmdBlock[4]; - //pSRB->Segment1[0] = ((UINT)(pcmd->cmd_len) << 8) + pSRB->SGcount; + //pSRB->Segment0[0] = (u32) pSRB->CmdBlock[0]; + //pSRB->Segment0[1] = (u32) pSRB->CmdBlock[4]; + //pSRB->Segment1[0] = ((u32)(pcmd->cmd_len) << 8) + pSRB->SGcount; //pSRB->Segment1[1] = pSRB->TotalXferredLen; pSRB->SavedSGCount = pcmd->use_sg; pSRB->SavedTotXLen = pSRB->TotalXferredLen; @@ -1683,8 +1682,8 @@ //pSRB->CmdBlock[0] = REQUEST_SENSE; //pSRB->CmdBlock[1] = pDCB->TargetLUN << 5; - //(USHORT) pSRB->CmdBlock[2] = 0; - //(USHORT) pSRB->CmdBlock[4] = sizeof(pcmd->sense_buffer); + //(u16) pSRB->CmdBlock[2] = 0; + //(u16) pSRB->CmdBlock[4] = sizeof(pcmd->sense_buffer); //pSRB->ScsiCmdLen = 6; pSRB->TotalXferredLen = 0; @@ -1698,7 +1697,7 @@ static void __inline__ -dc390_InvalidCmd( PACB pACB ) +dc390_InvalidCmd( struct dc390_acb* pACB ) { if( pACB->pActiveDCB->pActiveSRB->SRBState & (SRB_START_+SRB_MSGOUT) ) DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); diff -u a/drivers/scsi/tmscsim.c b/drivers/scsi/tmscsim.c --- a/drivers/scsi/tmscsim.c 24 Jun 2004 21:07:14 +++ b/drivers/scsi/tmscsim.c 24 Jun 2004 22:26:35 @@ -221,11 +221,8 @@ #endif #define DCBDEBUG1(x) C_NOP -/* Includes */ +#include <linux/config.h> #include <linux/module.h> -#include <asm/dma.h> -#include <asm/io.h> -#include <asm/system.h> #include <linux/delay.h> #include <linux/signal.h> #include <linux/sched.h> @@ -235,44 +232,30 @@ #include <linux/pci.h> #include <linux/proc_fs.h> #include <linux/string.h> -#include <linux/ctype.h> #include <linux/mm.h> -#include <linux/config.h> -#include <linux/version.h> #include <linux/blkdev.h> #include <linux/timer.h> #include <linux/interrupt.h> +#include <linux/init.h> +#include <linux/spinlock.h> +#include <asm/io.h> +#if 0 +#include <scsi/scsi.h> +#include <scsi/scsi_cmnd.h> +#include <scsi/scsi_device.h> +#else #include "scsi.h" +#endif #include <scsi/scsi_host.h> -#include <linux/stat.h> #include <scsi/scsicam.h> #include "dc390.h" #define PCI_DEVICE_ID_AMD53C974 PCI_DEVICE_ID_AMD_SCSI -/* Locking */ - -/* Note: Starting from 2.1.9x, the mid-level scsi code issues a - * spinlock_irqsave (&io_request_lock) before calling the driver's - * routines, so we don't need to lock, except in the IRQ handler. - * The policy 3, let the midlevel scsi code do the io_request_locks - * and us locking on a driver specific lock, shouldn't hurt anybody; it - * just causes a minor performance degradation for setting the locks. - */ -/* spinlock things - * level 3: lock on both adapter specific locks and (global) io_request_lock - * level 2: lock on adapter specific locks only - * level 1: rely on the locking of the mid level code (io_request_lock) - * undef : traditional save_flags; cli; restore_flags; - */ - -#include <linux/init.h> -#include <linux/spinlock.h> - -static struct pci_device_id tmscsim_pci_tbl[] = { + static struct pci_device_id tmscsim_pci_tbl[] = { { .vendor = PCI_VENDOR_ID_AMD, .device = PCI_DEVICE_ID_AMD53C974, @@ -283,62 +266,47 @@ }; MODULE_DEVICE_TABLE(pci, tmscsim_pci_tbl); -/* These macros are used for uniform access to 2.0.x and 2.1.x PCI config space*/ - -#define PDEV pdev -#define PDEVDECL struct pci_dev *pdev -#define PDEVDECL0 struct pci_dev *pdev = NULL -#define PDEVDECL1 struct pci_dev *pdev -#define PDEVSET pACB->pdev=pdev -#define PDEVSET1 pdev=pACB->pdev -#define PCI_WRITE_CONFIG_BYTE(pd, rv, bv) pci_write_config_byte (pd, rv, bv) -#define PCI_READ_CONFIG_BYTE(pd, rv, bv) pci_read_config_byte (pd, rv, bv) -#define PCI_WRITE_CONFIG_WORD(pd, rv, bv) pci_write_config_word (pd, rv, bv) -#define PCI_READ_CONFIG_WORD(pd, rv, bv) pci_read_config_word (pd, rv, bv) -#define PCI_PRESENT (1) -#define PCI_GET_IO_AND_IRQ do{io_port = pci_resource_start (pdev, 0); irq = pdev->irq;} while(0) - #include "tmscsim.h" -static UCHAR dc390_StartSCSI( PACB pACB, PDCB pDCB, PSRB pSRB ); -static void dc390_DataOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_DataIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_Command_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_Status_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_MsgOut_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_MsgIn_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_DataOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_DataInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_CommandPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_StatusPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_MsgOutPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_MsgInPhase( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_Nop_0( PACB pACB, PSRB pSRB, PUCHAR psstatus); -static void dc390_Nop_1( PACB pACB, PSRB pSRB, PUCHAR psstatus); - -static void dc390_SetXferRate( PACB pACB, PDCB pDCB ); -static void dc390_Disconnect( PACB pACB ); -static void dc390_Reselect( PACB pACB ); -static void dc390_SRBdone( PACB pACB, PDCB pDCB, PSRB pSRB ); -static void dc390_DoingSRB_Done( PACB pACB, PSCSICMD cmd ); -static void dc390_ScsiRstDetect( PACB pACB ); -static void dc390_ResetSCSIBus( PACB pACB ); -static void __inline__ dc390_RequestSense( PACB pACB, PDCB pDCB, PSRB pSRB ); -static void __inline__ dc390_InvalidCmd( PACB pACB ); -static void __inline__ dc390_EnableMsgOut_Abort (PACB, PSRB); +static u8 dc390_StartSCSI( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB ); +static void dc390_DataOut_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_DataIn_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_Command_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_Status_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_MsgOut_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_MsgIn_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_DataOutPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_DataInPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_CommandPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_StatusPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_MsgOutPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_MsgInPhase( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_Nop_0( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); +static void dc390_Nop_1( struct dc390_acb* pACB, struct dc390_srb* pSRB, u8 *psstatus); + +static void dc390_SetXferRate( struct dc390_acb* pACB, struct dc390_dcb* pDCB ); +static void dc390_Disconnect( struct dc390_acb* pACB ); +static void dc390_Reselect( struct dc390_acb* pACB ); +static void dc390_SRBdone( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB ); +static void dc390_DoingSRB_Done( struct dc390_acb* pACB, struct scsi_cmnd * cmd); +static void dc390_ScsiRstDetect( struct dc390_acb* pACB ); +static void dc390_ResetSCSIBus( struct dc390_acb* pACB ); +static void __inline__ dc390_RequestSense( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB ); +static void __inline__ dc390_InvalidCmd( struct dc390_acb* pACB ); +static void __inline__ dc390_EnableMsgOut_Abort (struct dc390_acb*, struct dc390_srb*); static irqreturn_t do_DC390_Interrupt( int, void *, struct pt_regs *); -static int dc390_initAdapter( PSH psh, ULONG io_port, UCHAR Irq, UCHAR index ); -static void dc390_updateDCB (PACB pACB, PDCB pDCB); +static int dc390_initAdapter(struct Scsi_Host *psh, unsigned long io_port, u8 Irq, u8 index ); +static void dc390_updateDCB (struct dc390_acb* pACB, struct dc390_dcb* pDCB); static int DC390_proc_info (struct Scsi_Host *shpnt, char *buffer, char **start, off_t offset, int length, int inout); -static PACB dc390_pACB_start= NULL; -static PACB dc390_pACB_current = NULL; -static ULONG dc390_lastabortedpid = 0; -static UINT dc390_laststatus = 0; -static UCHAR dc390_adapterCnt = 0; +static struct dc390_acb* dc390_pACB_start= NULL; +static struct dc390_acb* dc390_pACB_current = NULL; +static unsigned long dc390_lastabortedpid = 0; +static u32 dc390_laststatus = 0; +static u8 dc390_adapterCnt = 0; /* Startup values, to be overriden on the commandline */ static int tmscsim[] = {-2, -2, -2, -2, -2, -2}; @@ -351,7 +319,7 @@ MODULE_LICENSE("GPL"); MODULE_SUPPORTED_DEVICE("sd,sr,sg,st"); -static PVOID dc390_phase0[]={ +static void *dc390_phase0[]={ dc390_DataOut_0, dc390_DataIn_0, dc390_Command_0, @@ -363,7 +331,7 @@ dc390_Nop_1 }; -static PVOID dc390_phase1[]={ +static void *dc390_phase1[]={ dc390_DataOutPhase, dc390_DataInPhase, dc390_CommandPhase, @@ -402,15 +370,15 @@ #endif /* Devices erroneously pretending to be able to do TagQ */ -static UCHAR dc390_baddevname1[2][28] ={ +static u8 dc390_baddevname1[2][28] ={ "SEAGATE ST3390N 9546", "HP C3323-300 4269"}; #define BADDEVCNT 2 static char* dc390_adapname = "DC390"; -static UCHAR dc390_eepromBuf[MAX_ADAPTER_NUM][EE_LEN]; -static UCHAR dc390_clock_period1[] = {4, 5, 6, 7, 8, 10, 13, 20}; -static UCHAR dc390_clock_speed[] = {100,80,67,57,50, 40, 31, 20}; +static u8 dc390_eepromBuf[MAX_ADAPTER_NUM][EE_LEN]; +static u8 dc390_clock_period1[] = {4, 5, 6, 7, 8, 10, 13, 20}; +static u8 dc390_clock_speed[] = {100,80,67,57,50, 40, 31, 20}; /*********************************************************************** * Functions for access to DC390 EEPROM @@ -419,46 +387,45 @@ **********************************************************************/ -static void __devinit dc390_EnDisableCE( UCHAR mode, PDEVDECL, PUCHAR regval ) +static void __devinit dc390_EnDisableCE(u8 mode, struct pci_dev *pdev, u8 *regval) { - UCHAR bval; + u8 bval; bval = 0; if(mode == ENABLE_CE) *regval = 0xc0; else *regval = 0x80; - PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval); + pci_write_config_byte(pdev, *regval, bval); if(mode == DISABLE_CE) - PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval); + pci_write_config_byte(pdev, *regval, bval); udelay(160); } /* Override EEprom values with explicitly set values */ -static void __devinit dc390_EEprom_Override (UCHAR index) +static void __devinit dc390_EEprom_Override (u8 index) { - PUCHAR ptr; - UCHAR id; - ptr = (PUCHAR) dc390_eepromBuf[index]; + u8 *ptr = (u8 *) dc390_eepromBuf[index]; + u8 id; /* Adapter Settings */ if (tmscsim[0] != -2) - ptr[EE_ADAPT_SCSI_ID] = (UCHAR)tmscsim[0]; /* Adapter ID */ + ptr[EE_ADAPT_SCSI_ID] = (u8)tmscsim[0]; /* Adapter ID */ if (tmscsim[3] != -2) - ptr[EE_MODE2] = (UCHAR)tmscsim[3]; + ptr[EE_MODE2] = (u8)tmscsim[3]; if (tmscsim[5] != -2) ptr[EE_DELAY] = tmscsim[5]; /* Reset delay */ if (tmscsim[4] != -2) - ptr[EE_TAG_CMD_NUM] = (UCHAR)tmscsim[4]; /* Tagged Cmds */ + ptr[EE_TAG_CMD_NUM] = (u8)tmscsim[4]; /* Tagged Cmds */ /* Device Settings */ for (id = 0; id < MAX_SCSI_ID; id++) { if (tmscsim[2] != -2) - ptr[id<<2] = (UCHAR)tmscsim[2]; /* EE_MODE1 */ + ptr[id<<2] = (u8)tmscsim[2]; /* EE_MODE1 */ if (tmscsim[1] != -2) - ptr[(id<<2) + 1] = (UCHAR)tmscsim[1]; /* EE_Speed */ + ptr[(id<<2) + 1] = (u8)tmscsim[1]; /* EE_Speed */ } } @@ -527,36 +494,36 @@ __setup("tmscsim=", dc390_setup); #endif -static void __devinit dc390_EEpromOutDI( PDEVDECL, PUCHAR regval, UCHAR Carry ) +static void __devinit dc390_EEpromOutDI(struct pci_dev *pdev, u8 *regval, u8 Carry) { - UCHAR bval; + u8 bval; bval = 0; if(Carry) { bval = 0x40; *regval = 0x80; - PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval); + pci_write_config_byte(pdev, *regval, bval); } udelay(160); bval |= 0x80; - PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval); + pci_write_config_byte(pdev, *regval, bval); udelay(160); bval = 0; - PCI_WRITE_CONFIG_BYTE(PDEV, *regval, bval); + pci_write_config_byte(pdev, *regval, bval); udelay(160); } -static UCHAR __devinit dc390_EEpromInDO( PDEVDECL ) +static u8 __devinit dc390_EEpromInDO(struct pci_dev *pdev) { - UCHAR bval; + u8 bval; - PCI_WRITE_CONFIG_BYTE(PDEV, 0x80, 0x80); + pci_write_config_byte(pdev, 0x80, 0x80); udelay(160); - PCI_WRITE_CONFIG_BYTE(PDEV, 0x80, 0x40); + pci_write_config_byte(pdev, 0x80, 0x40); udelay(160); - PCI_READ_CONFIG_BYTE(PDEV, 0x00, &bval); + pci_read_config_byte(pdev, 0x00, &bval); if(bval == 0x22) return(1); else @@ -564,68 +531,68 @@ } -static USHORT __devinit dc390_EEpromGetData1( PDEVDECL ) +static u16 __devinit dc390_EEpromGetData1(struct pci_dev *pdev) { - UCHAR i; - UCHAR carryFlag; - USHORT wval; + u8 i; + u8 carryFlag; + u16 wval; wval = 0; for(i=0; i<16; i++) { wval <<= 1; - carryFlag = dc390_EEpromInDO(PDEV); + carryFlag = dc390_EEpromInDO(pdev); wval |= carryFlag; } return(wval); } -static void __devinit dc390_Prepare( PDEVDECL, PUCHAR regval, UCHAR EEpromCmd ) +static void __devinit dc390_Prepare(struct pci_dev *pdev, u8 *regval, u8 EEpromCmd) { - UCHAR i,j; - UCHAR carryFlag; + u8 i,j; + u8 carryFlag; carryFlag = 1; j = 0x80; for(i=0; i<9; i++) { - dc390_EEpromOutDI(PDEV,regval,carryFlag); + dc390_EEpromOutDI(pdev, regval, carryFlag); carryFlag = (EEpromCmd & j) ? 1 : 0; j >>= 1; } } -static void __devinit dc390_ReadEEprom( PDEVDECL, PUSHORT ptr) +static void __devinit dc390_ReadEEprom(struct pci_dev *pdev, u16 *ptr) { - UCHAR regval,cmd; - UCHAR i; + u8 regval,cmd; + u8 i; cmd = EEPROM_READ; for(i=0; i<0x40; i++) { - dc390_EnDisableCE(ENABLE_CE, PDEV, ®val); - dc390_Prepare(PDEV, ®val, cmd++); - *ptr++ = dc390_EEpromGetData1(PDEV); - dc390_EnDisableCE(DISABLE_CE, PDEV, ®val); + dc390_EnDisableCE(ENABLE_CE, pdev, ®val); + dc390_Prepare(pdev, ®val, cmd++); + *ptr++ = dc390_EEpromGetData1(pdev); + dc390_EnDisableCE(DISABLE_CE, pdev, ®val); } } -static void __devinit dc390_interpret_delay (UCHAR index) +static void __devinit dc390_interpret_delay (u8 index) { char interpd [] = {1,3,5,10,16,30,60,120}; dc390_eepromBuf[index][EE_DELAY] = interpd [dc390_eepromBuf[index][EE_DELAY]]; } -static UCHAR __devinit dc390_CheckEEpromCheckSum( PDEVDECL, UCHAR index ) +static u8 __devinit dc390_CheckEEpromCheckSum(struct pci_dev *pdev, u8 index) { - UCHAR i; + u8 i; char EEbuf[128]; - USHORT wval, *ptr = (PUSHORT)EEbuf; + u16 wval, *ptr = (u16 *)EEbuf; - dc390_ReadEEprom( PDEV, ptr ); + dc390_ReadEEprom(pdev, ptr); memcpy (dc390_eepromBuf[index], EEbuf, EE_ADAPT_SCSI_ID); memcpy (&dc390_eepromBuf[index][EE_ADAPT_SCSI_ID], &EEbuf[REAL_EE_ADAPT_SCSI_ID], EE_LEN - EE_ADAPT_SCSI_ID); @@ -643,9 +610,9 @@ * (DCBs, SRBs, Queueing) * **********************************************************************/ -static PDCB __inline__ dc390_findDCB ( PACB pACB, UCHAR id, UCHAR lun) +static struct dc390_dcb __inline__ *dc390_findDCB ( struct dc390_acb* pACB, u8 id, u8 lun) { - PDCB pDCB = pACB->pLinkDCB; if (!pDCB) return 0; + struct dc390_dcb* pDCB = pACB->pLinkDCB; if (!pDCB) return 0; while (pDCB->TargetID != id || pDCB->TargetLUN != lun) { pDCB = pDCB->pNextDCB; @@ -675,26 +642,10 @@ * Lists are managed using two pointers and eventually a counter */ - -#if 0 -/* Look for a SCSI cmd in a SRB queue */ -static PSRB dc390_find_cmd_in_SRBq (PSCSICMD cmd, PSRB queue) -{ - PSRB q = queue; - while (q) - { - if (q->pcmd == cmd) return q; - q = q->pNextSRB; - if (q == queue) return 0; - } - return q; -} -#endif - /* Return next free SRB */ -static __inline__ PSRB dc390_Free_get ( PACB pACB ) +static __inline__ struct dc390_srb* dc390_Free_get ( struct dc390_acb* pACB ) { - PSRB pSRB; + struct dc390_srb* pSRB; pSRB = pACB->pFreeSRB; DEBUG0(printk ("DC390: Get Free SRB %p\n", pSRB)); @@ -708,7 +659,7 @@ } /* Insert SRB oin top of free list */ -static __inline__ void dc390_Free_insert (PACB pACB, PSRB pSRB) +static __inline__ void dc390_Free_insert (struct dc390_acb* pACB, struct dc390_srb* pSRB) { DEBUG0(printk ("DC390: Free SRB %p\n", pSRB)); pSRB->pNextSRB = pACB->pFreeSRB; @@ -717,7 +668,7 @@ /* Inserts a SRB to the top of the Waiting list */ -static __inline__ void dc390_Waiting_insert ( PDCB pDCB, PSRB pSRB ) +static __inline__ void dc390_Waiting_insert ( struct dc390_dcb* pDCB, struct dc390_srb* pSRB ) { DEBUG0(printk ("DC390: Insert pSRB %p cmd %li to Waiting\n", pSRB, pSRB->pcmd->pid)); pSRB->pNextSRB = pDCB->pWaitingSRB; @@ -729,7 +680,7 @@ /* Queue SRB to waiting list */ -static __inline__ void dc390_Waiting_append ( PDCB pDCB, PSRB pSRB) +static __inline__ void dc390_Waiting_append ( struct dc390_dcb* pDCB, struct dc390_srb* pSRB) { DEBUG0(printk ("DC390: Append pSRB %p cmd %li to Waiting\n", pSRB, pSRB->pcmd->pid)); if( pDCB->pWaitingSRB ) @@ -743,7 +694,7 @@ pDCB->pDCBACB->CmdInQ++; } -static __inline__ void dc390_Going_append (PDCB pDCB, PSRB pSRB) +static __inline__ void dc390_Going_append (struct dc390_dcb* pDCB, struct dc390_srb* pSRB) { pDCB->GoingSRBCnt++; DEBUG0(printk("DC390: Append SRB %p to Going\n", pSRB)); @@ -758,14 +709,14 @@ pSRB->pNextSRB = NULL; } -static __inline__ void dc390_Going_remove (PDCB pDCB, PSRB pSRB) +static __inline__ void dc390_Going_remove (struct dc390_dcb* pDCB, struct dc390_srb* pSRB) { DEBUG0(printk("DC390: Remove SRB %p from Going\n", pSRB)); if (pSRB == pDCB->pGoingSRB) pDCB->pGoingSRB = pSRB->pNextSRB; else { - PSRB psrb = pDCB->pGoingSRB; + struct dc390_srb* psrb = pDCB->pGoingSRB; while (psrb && psrb->pNextSRB != pSRB) psrb = psrb->pNextSRB; if (!psrb) @@ -778,7 +729,7 @@ } /* Moves SRB from Going list to the top of Waiting list */ -static void dc390_Going_to_Waiting ( PDCB pDCB, PSRB pSRB ) +static void dc390_Going_to_Waiting ( struct dc390_dcb* pDCB, struct dc390_srb* pSRB ) { DEBUG0(printk(KERN_INFO "DC390: Going_to_Waiting (SRB %p) pid = %li\n", pSRB, pSRB->pcmd->pid)); /* Remove SRB from Going */ @@ -789,7 +740,7 @@ } /* Moves first SRB from Waiting list to Going list */ -static __inline__ void dc390_Waiting_to_Going ( PDCB pDCB, PSRB pSRB ) +static __inline__ void dc390_Waiting_to_Going ( struct dc390_dcb* pDCB, struct dc390_srb* pSRB ) { /* Remove from waiting list */ DEBUG0(printk("DC390: Remove SRB %p from head of Waiting\n", pSRB)); @@ -801,7 +752,7 @@ static void DC390_waiting_timed_out (unsigned long ptr); /* Sets the timer to wake us up */ -static void dc390_waiting_timer (PACB pACB, unsigned long to) +static void dc390_waiting_timer (struct dc390_acb* pACB, unsigned long to) { if (timer_pending (&pACB->Waiting_Timer)) return; init_timer (&pACB->Waiting_Timer); @@ -816,10 +767,10 @@ /* Send the next command from the waiting list to the bus */ -static void dc390_Waiting_process ( PACB pACB ) +static void dc390_Waiting_process ( struct dc390_acb* pACB ) { - PDCB ptr, ptr1; - PSRB pSRB; + struct dc390_dcb *ptr, *ptr1; + struct dc390_srb *pSRB; if( (pACB->pActiveDCB) || (pACB->ACBFlag & (RESET_DETECT+RESET_DONE+RESET_DEV) ) ) return; @@ -854,7 +805,7 @@ /* Wake up waiting queue */ static void DC390_waiting_timed_out (unsigned long ptr) { - PACB pACB = (PACB)ptr; + struct dc390_acb* pACB = (struct dc390_acb*)ptr; unsigned long iflags; DEBUG0(printk ("DC390: Debug: Waiting queue woken up by timer!\n")); spin_lock_irqsave(pACB->pScsiHost->host_lock, iflags); @@ -863,15 +814,15 @@ } /*********************************************************************** - * Function: static void dc390_SendSRB (PACB pACB, PSRB pSRB) + * Function: static void dc390_SendSRB (struct dc390_acb* pACB, struct dc390_srb* pSRB) * * Purpose: Send SCSI Request Block (pSRB) to adapter (pACB) * ***********************************************************************/ -static void dc390_SendSRB( PACB pACB, PSRB pSRB ) +static void dc390_SendSRB( struct dc390_acb* pACB, struct dc390_srb* pSRB ) { - PDCB pDCB; + struct dc390_dcb* pDCB; pDCB = pSRB->pSRBDCB; if( (pDCB->MaxCommand <= pDCB->GoingSRBCnt) || (pACB->pActiveDCB) || @@ -913,10 +864,10 @@ } /* Create pci mapping */ -static int dc390_pci_map (PSRB pSRB) +static int dc390_pci_map (struct dc390_srb* pSRB) { int error = 0; - Scsi_Cmnd *pcmd = pSRB->pcmd; + struct scsi_cmnd *pcmd = pSRB->pcmd; struct pci_dev *pdev = pSRB->pSRBDCB->pDCBACB->pdev; dc390_cmd_scp_t* cmdp = ((dc390_cmd_scp_t*)(&pcmd->SCp)); @@ -933,9 +884,9 @@ DEBUG1(printk("%s(): Mapped sense buffer %p at %x\n", __FUNCTION__, pcmd->sense_buffer, cmdp->saved_dma_handle)); /* Map SG list */ } else if (pcmd->use_sg) { - pSRB->pSegmentList = (PSGL) pcmd->request_buffer; + pSRB->pSegmentList = (struct scatterlist *) pcmd->request_buffer; pSRB->SGcount = pci_map_sg(pdev, pSRB->pSegmentList, pcmd->use_sg, - scsi_to_pci_dma_dir(pcmd->sc_data_direction)); + pcmd->sc_data_direction); /* TODO: error handling */ if (!pSRB->SGcount) error = 1; @@ -945,7 +896,7 @@ } else if (pcmd->request_buffer && pcmd->request_bufflen) { pSRB->pSegmentList = dc390_sg_build_single(&pSRB->Segmentx, pcmd->request_buffer, pcmd->request_bufflen); pSRB->SGcount = pci_map_sg(pdev, pSRB->pSegmentList, 1, - scsi_to_pci_dma_dir(pcmd->sc_data_direction)); + pcmd->sc_data_direction); cmdp->saved_dma_handle = sg_dma_address(pSRB->pSegmentList); /* TODO: error handling */ @@ -960,9 +911,9 @@ } /* Remove pci mapping */ -static void dc390_pci_unmap (PSRB pSRB) +static void dc390_pci_unmap (struct dc390_srb* pSRB) { - Scsi_Cmnd* pcmd = pSRB->pcmd; + struct scsi_cmnd *pcmd = pSRB->pcmd; struct pci_dev *pdev = pSRB->pSRBDCB->pDCBACB->pdev; DEBUG1(dc390_cmd_scp_t* cmdp = ((dc390_cmd_scp_t*)(&pcmd->SCp))); @@ -970,24 +921,24 @@ pci_unmap_sg(pdev, &pSRB->Segmentx, 1, DMA_FROM_DEVICE); DEBUG1(printk("%s(): Unmapped sense buffer at %x\n", __FUNCTION__, cmdp->saved_dma_handle)); } else if (pcmd->use_sg) { - pci_unmap_sg(pdev, pcmd->request_buffer, pcmd->use_sg, scsi_to_pci_dma_dir(pcmd->sc_data_direction)); + pci_unmap_sg(pdev, pcmd->request_buffer, pcmd->use_sg, pcmd->sc_data_direction); DEBUG1(printk("%s(): Unmapped SG at %p with %d elements\n", __FUNCTION__, pcmd->request_buffer, pcmd->use_sg)); } else if (pcmd->request_buffer && pcmd->request_bufflen) { - pci_unmap_sg(pdev, &pSRB->Segmentx, 1, scsi_to_pci_dma_dir(pcmd->sc_data_direction)); + pci_unmap_sg(pdev, &pSRB->Segmentx, 1, pcmd->sc_data_direction); DEBUG1(printk("%s(): Unmapped request buffer at %x\n", __FUNCTION__, cmdp->saved_dma_handle)); } } /*********************************************************************** - * Function: static void dc390_BuildSRB (Scsi_Cmd *pcmd, PDCB pDCB, - * PSRB pSRB) + * Function: static void dc390_BuildSRB (Scsi_Cmd *pcmd, struct dc390_dcb* pDCB, + * struct dc390_srb* pSRB) * * Purpose: Prepare SRB for being sent to Device DCB w/ command *pcmd * ***********************************************************************/ -static void dc390_BuildSRB (Scsi_Cmnd* pcmd, PDCB pDCB, PSRB pSRB) +static void dc390_BuildSRB (struct scsi_cmnd *pcmd, struct dc390_dcb* pDCB, struct dc390_srb* pSRB) { pSRB->pSRBDCB = pDCB; pSRB->pcmd = pcmd; @@ -1015,8 +966,8 @@ } /*********************************************************************** - * Function : static int DC390_queue_command (Scsi_Cmnd *cmd, - * void (*done)(Scsi_Cmnd *)) + * Function : static int DC390_queue_command (struct scsi_cmnd *cmd, + * void (*done)(struct scsi_cmnd *)) * * Purpose : enqueues a SCSI command * @@ -1033,11 +984,12 @@ * ***********************************************************************/ -static int DC390_queue_command (Scsi_Cmnd *cmd, void (* done)(Scsi_Cmnd *)) +static int DC390_queue_command(struct scsi_cmnd *cmd, + void (* done)(struct scsi_cmnd *)) { - PDCB pDCB = (PDCB) cmd->device->hostdata; - PSRB pSRB; - PACB pACB = (PACB) cmd->device->host->hostdata; + struct dc390_dcb* pDCB = (struct dc390_dcb*) cmd->device->hostdata; + struct dc390_srb* pSRB; + struct dc390_acb* pACB = (struct dc390_acb*) cmd->device->host->hostdata; DEBUG0(/* if(pACB->scan_devices) */ \ printk(KERN_INFO "DC390: Queue Cmd=%02x,Tgt=%d,LUN=%d (pid=%li), buffer=%p\n",\ @@ -1181,7 +1133,7 @@ sector_t capacity, int geom[]) { int heads, sectors, cylinders; - PACB pACB = (PACB) sdev->host->hostdata; + struct dc390_acb* pACB = (struct dc390_acb*) sdev->host->hostdata; int ret_code = -1; int size = capacity; unsigned char *buf; @@ -1221,9 +1173,11 @@ } #endif -static void dc390_dumpinfo (PACB pACB, PDCB pDCB, PSRB pSRB) +static void dc390_dumpinfo (struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb* pSRB) { - USHORT pstat; PDEVDECL1; + struct pci_dev *pdev; + u16 pstat; + if (!pDCB) pDCB = pACB->pActiveDCB; if (!pSRB && pDCB) pSRB = pDCB->pActiveSRB; @@ -1257,14 +1211,16 @@ DC390_read32(DMA_Wk_ByteCntr), DC390_read32(DMA_Wk_AddrCntr), DC390_read8(DMA_Status), DC390_read32(DMA_ScsiBusCtrl)); DC390_write32 (DMA_ScsiBusCtrl, EN_INT_ON_PCI_ABORT); - PDEVSET1; PCI_READ_CONFIG_WORD(PDEV, PCI_STATUS, &pstat); + + pdev = pACB->pdev; + pci_read_config_word(pdev, PCI_STATUS, &pstat); printk ("DC390: Register dump: PCI Status: %04x\n", pstat); printk ("DC390: In case of driver trouble read linux/Documentation/scsi/tmscsim.txt\n"); } /*********************************************************************** - * Function : int DC390_abort (Scsi_Cmnd *cmd) + * Function : int DC390_abort (struct scsi_cmnd *cmd) * * Purpose : Abort an errant SCSI command * @@ -1275,14 +1231,14 @@ * Status: Buggy ! ***********************************************************************/ -static int DC390_abort (Scsi_Cmnd *cmd) +static int DC390_abort (struct scsi_cmnd *cmd) { - PDCB pDCB = (PDCB) cmd->device->hostdata; - PSRB pSRB, psrb; - UINT count, i; + struct dc390_dcb *pDCB = (struct dc390_dcb*) cmd->device->hostdata; + struct dc390_srb *pSRB, *psrb; + u32 count, i; int status; - //ULONG sbac; - PACB pACB = (PACB) cmd->device->host->hostdata; + //unsigned long sbac; + struct dc390_acb *pACB = (struct dc390_acb*) cmd->device->host->hostdata; printk ("DC390: Abort command (pid %li, Device %02i-%02i)\n", cmd->pid, cmd->device->id, cmd->device->lun); @@ -1406,9 +1362,9 @@ } -static void dc390_ResetDevParam( PACB pACB ) +static void dc390_ResetDevParam( struct dc390_acb* pACB ) { - PDCB pDCB, pdcb; + struct dc390_dcb *pDCB, *pdcb; pDCB = pACB->pLinkDCB; if (! pDCB) return; @@ -1431,11 +1387,11 @@ #if 0 /* Moves all SRBs from Going to Waiting for all DCBs */ -static void dc390_RecoverSRB( PACB pACB ) +static void dc390_RecoverSRB( struct dc390_acb* pACB ) { - PDCB pDCB, pdcb; - PSRB psrb, psrb2; - UINT cnt, i; + struct dc390_dcb *pDCB, *pdcb; + struct dc390_srb *psrb, *psrb2; + u32 cnt, i; pDCB = pACB->pLinkDCB; if( !pDCB ) return; @@ -1470,7 +1426,7 @@ #endif /*********************************************************************** - * Function : int DC390_reset (Scsi_Cmnd *cmd, ...) + * Function : int DC390_reset (struct scsi_cmnd *cmd, ...) * * Purpose : perform a hard reset on the SCSI bus * @@ -1480,10 +1436,10 @@ * Returns : 0 on success. ***********************************************************************/ -static int DC390_reset (Scsi_Cmnd *cmd) +static int DC390_reset (struct scsi_cmnd *cmd) { - UCHAR bval; - PACB pACB = (PACB) cmd->device->host->hostdata; + u8 bval; + struct dc390_acb* pACB = (struct dc390_acb*) cmd->device->host->hostdata; printk(KERN_INFO "DC390: RESET ... "); @@ -1526,7 +1482,7 @@ * Purpose : Set the configuration dependent DCB parameters ***********************************************************************/ -static void dc390_updateDCB (PACB pACB, PDCB pDCB) +static void dc390_updateDCB (struct dc390_acb* pACB, struct dc390_dcb* pDCB) { pDCB->SyncMode &= EN_TAG_QUEUEING | SYNC_NEGO_DONE /*| EN_ATN_STOP*/; if (pDCB->DevMode & TAG_QUEUEING_) { @@ -1558,15 +1514,15 @@ * Inputs : psrb - pointer to this scsi request block structure ***********************************************************************/ -static void __inline__ dc390_initSRB( PSRB psrb ) +static void __inline__ dc390_initSRB( struct dc390_srb* psrb ) { /* psrb->PhysSRB = virt_to_phys( psrb ); */ } -static void dc390_linkSRB( PACB pACB ) +static void dc390_linkSRB( struct dc390_acb* pACB ) { - UINT count, i; + u32 count, i; count = pACB->SRBCount; for( i=0; i<count; i++) @@ -1589,10 +1545,10 @@ * io_port, Irq, index: Resources and adapter index ***********************************************************************/ -static void __devinit dc390_initACB (PSH psh, ULONG io_port, UCHAR Irq, UCHAR index) +static void __devinit dc390_initACB (struct Scsi_Host *psh, unsigned long io_port, u8 Irq, u8 index) { - PACB pACB; - UCHAR i; + struct dc390_acb* pACB; + u8 i; psh->can_queue = MAX_CMD_QUEUE; psh->cmd_per_lun = MAX_CMD_PER_LUN; @@ -1605,10 +1561,10 @@ psh->dma_channel = -1; psh->last_reset = jiffies; - pACB = (PACB) psh->hostdata; + pACB = (struct dc390_acb*) psh->hostdata; pACB->pScsiHost = psh; - pACB->IOPortBase = (USHORT) io_port; + pACB->IOPortBase = (u16) io_port; pACB->IRQLevel = Irq; DEBUG0(printk (KERN_INFO "DC390: Adapter index %i, ID %i, IO 0x%08x, IRQ 0x%02x\n", \ @@ -1660,13 +1616,13 @@ * Outputs: 0 on success, -1 on error ***********************************************************************/ -static int __devinit dc390_initAdapter (PSH psh, ULONG io_port, UCHAR Irq, UCHAR index) +static int __devinit dc390_initAdapter (struct Scsi_Host *psh, unsigned long io_port, u8 Irq, u8 index) { - PACB pACB, pACB2; - UCHAR dstate; + struct dc390_acb *pACB, *pACB2; + u8 dstate; int i; - pACB = (PACB) psh->hostdata; + pACB = (struct dc390_acb*) psh->hostdata; if (request_region (io_port, psh->n_io_port, "tmscsim") == NULL) { printk(KERN_ERR "DC390: register IO ports error!\n"); @@ -1731,13 +1687,14 @@ } -static void __devinit dc390_set_pci_cfg (PDEVDECL) +static void __devinit dc390_set_pci_cfg (struct pci_dev *pdev) { - USHORT cmd; - PCI_READ_CONFIG_WORD (PDEV, PCI_COMMAND, &cmd); + u16 cmd; + + pci_read_config_word(pdev, PCI_COMMAND, &cmd); cmd |= PCI_COMMAND_SERR | PCI_COMMAND_PARITY | PCI_COMMAND_IO; - PCI_WRITE_CONFIG_WORD (PDEV, PCI_COMMAND, cmd); - PCI_WRITE_CONFIG_WORD (PDEV, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY)); + pci_write_config_word(pdev, PCI_COMMAND, cmd); + pci_write_config_word(pdev, PCI_STATUS, (PCI_STATUS_SIG_SYSTEM_ERROR | PCI_STATUS_DETECTED_PARITY)); } /** @@ -1748,15 +1705,15 @@ */ static int dc390_slave_alloc(struct scsi_device *scsi_device) { - PACB pACB = (PACB) scsi_device->host->hostdata; - PDCB pDCB, pDCB2 = 0; + struct dc390_acb *pACB = (struct dc390_acb*) scsi_device->host->hostdata; + struct dc390_dcb *pDCB, *pDCB2 = 0; uint id = scsi_device->id; uint lun = scsi_device->lun; - pDCB = kmalloc(sizeof(DC390_DCB), GFP_KERNEL); + pDCB = kmalloc(sizeof(struct dc390_dcb), GFP_KERNEL); if (!pDCB) return -ENOMEM; - memset(pDCB, 0, sizeof(DC390_DCB)); + memset(pDCB, 0, sizeof(struct dc390_dcb)); if (!pACB->DCBCnt++) { pACB->pLinkDCB = pDCB; @@ -1816,9 +1773,9 @@ */ static void dc390_slave_destroy(struct scsi_device *scsi_device) { - PACB pACB = (PACB) scsi_device->host->hostdata; - PDCB pDCB = (PDCB) scsi_device->hostdata; - PDCB pPrevDCB = pACB->pLinkDCB; + struct dc390_acb* pACB = (struct dc390_acb*) scsi_device->host->hostdata; + struct dc390_dcb* pDCB = (struct dc390_dcb*) scsi_device->hostdata; + struct dc390_dcb* pPrevDCB = pACB->pLinkDCB; pACB->scan_devices = 0; @@ -1853,12 +1810,12 @@ static int dc390_slave_configure(struct scsi_device *scsi_device) { - PACB pACB = (PACB) scsi_device->host->hostdata; + struct dc390_acb* pACB = (struct dc390_acb*) scsi_device->host->hostdata; pACB->scan_devices = 0; return 0; } -static Scsi_Host_Template driver_template = { +static struct scsi_host_template driver_template = { .module = THIS_MODULE, .proc_name = "tmscsim", .proc_info = DC390_proc_info, @@ -1883,7 +1840,7 @@ struct Scsi_Host *scsi_host; unsigned long io_port; u8 irq; - PACB pACB; + struct dc390_acb* pACB; int ret = -ENOMEM; if (pci_enable_device(dev)) @@ -1893,11 +1850,11 @@ irq = dev->irq; /* allocate scsi host information (includes out adapter) */ - scsi_host = scsi_host_alloc(&driver_template, sizeof(struct _ACB)); + scsi_host = scsi_host_alloc(&driver_template, sizeof(struct dc390_acb)); if (!scsi_host) goto nomem; - pACB = (PACB) scsi_host->hostdata; + pACB = (struct dc390_acb*) scsi_host->hostdata; if (dc390_CheckEEpromCheckSum (dev, dc390_adapterCnt)) { int speed; @@ -1910,13 +1867,13 @@ printk(KERN_INFO "DC390: Used defaults: AdaptID=%i, SpeedIdx=%i (%i.%i MHz)," " DevMode=0x%02x, AdaptMode=0x%02x, TaggedCmnds=%i (%i), DelayReset=%is\n", tmscsim[0], tmscsim[1], speed/10, speed%10, - (UCHAR)tmscsim[2], (UCHAR)tmscsim[3], tmscsim[4], 2 << (tmscsim[4]), tmscsim[5]); + (u8)tmscsim[2], (u8)tmscsim[3], tmscsim[4], 2 << (tmscsim[4]), tmscsim[5]); } else { dc390_check_for_safe_settings(); dc390_EEprom_Override(dc390_adapterCnt); } - DEBUG0(printk(KERN_INFO "DC390: pSH = %8x, Index %02i\n", (UINT) scsi_host, dc390_adapterCnt)); + DEBUG0(printk(KERN_INFO "DC390: pSH = %8x, Index %02i\n", (u32) scsi_host, dc390_adapterCnt)); dc390_initACB(scsi_host, io_port, irq, dc390_adapterCnt); @@ -1959,7 +1916,7 @@ { struct Scsi_Host *scsi_host = pci_get_drvdata(dev); unsigned long iflags; - PACB pACB = (PACB) scsi_host->hostdata; + struct dc390_acb* pACB = (struct dc390_acb*) scsi_host->hostdata; u8 bval; scsi_remove_host(scsi_host); @@ -2014,19 +1971,19 @@ { int dev, spd, spd1; char *pos = buffer; - PACB pACB; - PDCB pDCB; + struct dc390_acb* pACB; + struct dc390_dcb* pDCB; pACB = dc390_pACB_start; - while(pACB != (PACB)-1) + while(pACB != (struct dc390_acb*)-1) { if (shpnt == pACB->pScsiHost) break; pACB = pACB->pNextACB; } - if (pACB == (PACB)-1) return(-ESRCH); + if (pACB == (struct dc390_acb*)-1) return(-ESRCH); if(inout) /* Has data been written to the file ? */ return -ENOSYS; @@ -2087,7 +2044,7 @@ for (dev = 0; dev < pACB->DCBCnt; dev++) { - PSRB pSRB; + struct dc390_srb* pSRB; if (pDCB->WaitSRBCnt) SPRINTF ("DCB (%02i-%i): Waiting: %i:", pDCB->TargetID, pDCB->TargetLUN, pDCB->WaitSRBCnt); diff -u a/drivers/scsi/tmscsim.h b/drivers/scsi/tmscsim.h --- a/drivers/scsi/tmscsim.h 23 Jun 2004 21:39:19 +++ b/drivers/scsi/tmscsim.h 24 Jun 2004 21:33:43 @@ -29,215 +29,167 @@ typedef u32 UINT; /* 32 bits */ typedef unsigned long ULONG; /* 32/64 bits */ -typedef UCHAR *PUCHAR; -typedef USHORT *PUSHORT; -typedef UINT *PUINT; -typedef ULONG *PULONG; -typedef Scsi_Host_Template *PSHT; -typedef struct Scsi_Host *PSH; -typedef Scsi_Device *PSCSIDEV; -typedef Scsi_Cmnd *PSCSICMD; -typedef void *PVOID; -typedef struct scatterlist *PSGL, SGL; - - -/*;-----------------------------------------------------------------------*/ -typedef struct _SyncMsg -{ -UCHAR ExtendMsg; -UCHAR ExtMsgLen; -UCHAR SyncXferReq; -UCHAR Period; -UCHAR ReqOffset; -} SyncMsg; -/*;-----------------------------------------------------------------------*/ -typedef struct _Capacity -{ -ULONG BlockCount; -ULONG BlockLength; -} Capacity; -/*;-----------------------------------------------------------------------*/ -typedef struct _SGentry -{ -ULONG SGXferDataPtr; -ULONG SGXferDataLen; -} SGentry; - -typedef struct _SGentry1 -{ -ULONG SGXLen; -ULONG SGXPtr; -} SGentry1, *PSGE; - /* ;----------------------------------------------------------------------- ; SCSI Request Block ;----------------------------------------------------------------------- */ -struct _SRB +struct dc390_srb { -//UCHAR CmdBlock[12]; +//u8 CmdBlock[12]; -struct _SRB *pNextSRB; -struct _DCB *pSRBDCB; -PSCSICMD pcmd; -PSGL pSegmentList; +struct dc390_srb *pNextSRB; +struct dc390_dcb *pSRBDCB; +struct scsi_cmnd *pcmd; +struct scatterlist *pSegmentList; /* 0x10: */ -SGL Segmentx; /* make a one entry of S/G list table */ +struct scatterlist Segmentx; /* make a one entry of S/G list table */ /* 0x1c: */ -ULONG SGBusAddr; /*;a segment starting address as seen by AM53C974A*/ -ULONG SGToBeXferLen; /*; to be xfer length */ -ULONG TotalXferredLen; -ULONG SavedTotXLen; -UINT SRBState; +unsigned long SGBusAddr; /*;a segment starting address as seen by AM53C974A*/ +unsigned long SGToBeXferLen; /*; to be xfer length */ +unsigned long TotalXferredLen; +unsigned long SavedTotXLen; +u32 SRBState; /* 0x30: */ -UCHAR SRBStatus; -UCHAR SRBFlag; /*; b0-AutoReqSense,b6-Read,b7-write */ +u8 SRBStatus; +u8 SRBFlag; /*; b0-AutoReqSense,b6-Read,b7-write */ /*; b4-settimeout,b5-Residual valid */ -UCHAR AdaptStatus; -UCHAR TargetStatus; +u8 AdaptStatus; +u8 TargetStatus; -UCHAR ScsiPhase; -UCHAR TagNumber; -UCHAR SGIndex; -UCHAR SGcount; +u8 ScsiPhase; +u8 TagNumber; +u8 SGIndex; +u8 SGcount; /* 0x38: */ -UCHAR MsgCnt; -UCHAR EndMessage; -UCHAR RetryCnt; -UCHAR SavedSGCount; +u8 MsgCnt; +u8 EndMessage; +u8 RetryCnt; +u8 SavedSGCount; -ULONG Saved_Ptr; +unsigned long Saved_Ptr; /* 0x40: */ -UCHAR MsgInBuf[6]; -UCHAR MsgOutBuf[6]; +u8 MsgInBuf[6]; +u8 MsgOutBuf[6]; -//UCHAR IORBFlag; /*;81h-Reset, 2-retry */ +//u8 IORBFlag; /*;81h-Reset, 2-retry */ /* 0x4c: */ }; -typedef struct _SRB DC390_SRB, *PSRB; - /* ;----------------------------------------------------------------------- ; Device Control Block ;----------------------------------------------------------------------- */ -struct _DCB +struct dc390_dcb { -struct _DCB *pNextDCB; -struct _ACB *pDCBACB; - -/* Aborted Commands */ -//PSCSICMD AboIORBhead; -//PSCSICMD AboIORBtail; -//ULONG AboIORBcnt; +struct dc390_dcb *pNextDCB; +struct dc390_acb *pDCBACB; /* 0x08: */ /* Queued SRBs */ -PSRB pWaitingSRB; -PSRB pWaitLast; -PSRB pGoingSRB; -PSRB pGoingLast; -PSRB pActiveSRB; -UCHAR WaitSRBCnt; /* Not used */ -UCHAR GoingSRBCnt; +struct dc390_srb *pWaitingSRB; +struct dc390_srb *pWaitLast; +struct dc390_srb *pGoingSRB; +struct dc390_srb *pGoingLast; +struct dc390_srb *pActiveSRB; +u8 WaitSRBCnt; /* Not used */ +u8 GoingSRBCnt; -UCHAR DevType; -UCHAR MaxCommand; +u8 DevType; +u8 MaxCommand; /* 0x20: */ -UINT TagMask; +u32 TagMask; -UCHAR TargetID; /*; SCSI Target ID (SCSI Only) */ -UCHAR TargetLUN; /*; SCSI Log. Unit (SCSI Only) */ -UCHAR DevMode; -UCHAR DCBFlag; - -UCHAR CtrlR1; -UCHAR CtrlR3; -UCHAR CtrlR4; -UCHAR Inquiry7; +u8 TargetID; /*; SCSI Target ID (SCSI Only) */ +u8 TargetLUN; /*; SCSI Log. Unit (SCSI Only) */ +u8 DevMode; +u8 DCBFlag; + +u8 CtrlR1; +u8 CtrlR3; +u8 CtrlR4; +u8 Inquiry7; /* 0x2c: */ -UCHAR SyncMode; /*; 0:async mode */ -UCHAR NegoPeriod; /*;for nego. */ -UCHAR SyncPeriod; /*;for reg. */ -UCHAR SyncOffset; /*;for reg. and nego.(low nibble) */ +u8 SyncMode; /*; 0:async mode */ +u8 NegoPeriod; /*;for nego. */ +u8 SyncPeriod; /*;for reg. */ +u8 SyncOffset; /*;for reg. and nego.(low nibble) */ /* 0x30:*/ -//UCHAR InqDataBuf[8]; -//UCHAR CapacityBuf[8]; +//u8 InqDataBuf[8]; +//u8 CapacityBuf[8]; ///* 0x40: */ }; -typedef struct _DCB DC390_DCB, *PDCB; + /* ;----------------------------------------------------------------------- ; Adapter Control Block ;----------------------------------------------------------------------- */ -struct _ACB +struct dc390_acb { -PSH pScsiHost; -struct _ACB *pNextACB; -USHORT IOPortBase; -UCHAR IRQLevel; -UCHAR status; - -UCHAR SRBCount; -UCHAR AdapterIndex; /*; nth Adapter this driver */ -UCHAR DCBCnt; - -UCHAR TagMaxNum; -UCHAR ACBFlag; -UCHAR Gmode2; -UCHAR scan_devices; - -PDCB pLinkDCB; -PDCB pLastDCB; -PDCB pDCBRunRobin; - -PDCB pActiveDCB; -PSRB pFreeSRB; -PSRB pTmpSRB; - -UCHAR msgin123[4]; -UCHAR DCBmap[MAX_SCSI_ID]; -UCHAR Connected; -UCHAR pad; +struct Scsi_Host *pScsiHost; +struct dc390_acb *pNextACB; +u16 IOPortBase; +u8 IRQLevel; +u8 status; + +u8 SRBCount; +u8 AdapterIndex; /*; nth Adapter this driver */ +u8 DCBCnt; + +u8 TagMaxNum; +u8 ACBFlag; +u8 Gmode2; +u8 scan_devices; + +struct dc390_dcb *pLinkDCB; +struct dc390_dcb *pLastDCB; +struct dc390_dcb *pDCBRunRobin; + +struct dc390_dcb *pActiveDCB; +struct dc390_srb *pFreeSRB; +struct dc390_srb *pTmpSRB; + +u8 msgin123[4]; +u8 DCBmap[MAX_SCSI_ID]; +u8 Connected; +u8 pad; #if defined(USE_SPINLOCKS) && USE_SPINLOCKS > 1 && (defined(CONFIG_SMP) || DEBUG_SPINLOCKS > 0) spinlock_t lock; #endif -UCHAR sel_timeout; -UCHAR glitch_cfg; +u8 sel_timeout; +u8 glitch_cfg; -UCHAR MsgLen; -UCHAR Ignore_IRQ; /* Not used */ +u8 MsgLen; +u8 Ignore_IRQ; /* Not used */ -PDEVDECL1; /* Pointer to PCI cfg. space */ +struct pci_dev *pdev; -ULONG Cmds; -UINT SelLost; -UINT SelConn; -UINT CmdInQ; -UINT CmdOutOfSRB; +unsigned long Cmds; +u32 SelLost; +u32 SelConn; +u32 CmdInQ; +u32 CmdOutOfSRB; struct timer_list Waiting_Timer; -DC390_SRB TmpSRB; -DC390_SRB SRB_array[MAX_SRB_CNT]; /* 50 SRBs */ +struct dc390_srb TmpSRB; +struct dc390_srb SRB_array[MAX_SRB_CNT]; /* 50 SRBs */ }; -typedef struct _ACB DC390_ACB, *PACB; /*;-----------------------------------------------------------------------*/ @@ -402,17 +354,17 @@ typedef struct _SCSIInqData { /* INQUIRY */ - UCHAR DevType; /* Periph Qualifier & Periph Dev Type*/ - UCHAR RMB_TypeMod; /* rem media bit & Dev Type Modifier */ - UCHAR Vers; /* ISO, ECMA, & ANSI versions */ - UCHAR RDF; /* AEN, TRMIOP, & response data format*/ - UCHAR AddLen; /* length of additional data */ - UCHAR Res1; /* reserved */ - UCHAR Res2; /* reserved */ - UCHAR Flags; /* RelADr,Wbus32,Wbus16,Sync,etc. */ - UCHAR VendorID[8]; /* Vendor Identification */ - UCHAR ProductID[16]; /* Product Identification */ - UCHAR ProductRev[4]; /* Product Revision */ + u8 DevType; /* Periph Qualifier & Periph Dev Type*/ + u8 RMB_TypeMod; /* rem media bit & Dev Type Modifier */ + u8 Vers; /* ISO, ECMA, & ANSI versions */ + u8 RDF; /* AEN, TRMIOP, & response data format*/ + u8 AddLen; /* length of additional data */ + u8 Res1; /* reserved */ + u8 Res2; /* reserved */ + u8 Flags; /* RelADr,Wbus32,Wbus16,Sync,etc. */ + u8 VendorID[8]; /* Vendor Identification */ + u8 ProductID[16]; /* Product Identification */ + u8 ProductRev[4]; /* Product Revision */ } SCSI_INQDATA, *PSCSI_INQDATA; @@ -461,10 +413,10 @@ */ typedef struct _EEprom { -UCHAR EE_MODE1; -UCHAR EE_SPEED; -UCHAR xx1; -UCHAR xx2; +u8 EE_MODE1; +u8 EE_SPEED; +u8 xx1; +u8 xx2; } EEprom, *PEEprom; #define REAL_EE_ADAPT_SCSI_ID 64 @@ -676,7 +628,7 @@ (inb (pACB->IOPortBase + (address))) #define DC390_read8_(address, base) \ - (inb ((USHORT)(base) + (address))) + (inb ((u16)(base) + (address))) #define DC390_read16(address) \ (inw (pACB->IOPortBase + (address))) @@ -688,7 +640,7 @@ outb ((value), pACB->IOPortBase + (address)) #define DC390_write8_(address,value,base) \ - outb ((value), (USHORT)(base) + (address)) + outb ((value), (u16)(base) + (address)) #define DC390_write16(address,value) \ outw ((value), pACB->IOPortBase + (address)) ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] kill obsolete typedefs and wrappers from tmscsim 2004-06-26 11:17 ` Christoph Hellwig 2004-06-26 22:32 ` Guennadi Liakhovetski @ 2004-07-04 21:37 ` Guennadi Liakhovetski 2004-07-19 20:09 ` Guennadi Liakhovetski 1 sibling, 1 reply; 8+ messages in thread From: Guennadi Liakhovetski @ 2004-07-04 21:37 UTC (permalink / raw) To: Christoph Hellwig, James Bottomley; +Cc: linux-scsi [-- Attachment #1: Type: TEXT/PLAIN, Size: 587 bytes --] On Sat, 26 Jun 2004, Christoph Hellwig wrote: >> Do you want to rediff your 3rd patch yourself or should I do it? > > I can rediff it. Christoph, attached is a port of your patch to my current (after the bug-2139 patch, they don't collide, however) tree. Please, have a look if I've done it right. Notice, I didn't change the del_timer() call, I'd like to hear somebody's comments to it, and, as said before, there are 2 more places, where del_timer() is called, so, if indeed needed, they can be addressed together in a separate patch. Thanks Guennadi --- Guennadi Liakhovetski [-- Attachment #2: Type: TEXT/PLAIN, Size: 11881 bytes --] diff -u a/drivers/scsi/dc390.h b/drivers/scsi/dc390.h --- a/drivers/scsi/dc390.h Wed Jun 23 23:12:40 2004 +++ b/drivers/scsi/dc390.h Sat Dec 7 00:14:27 2002 @@ -1,32 +0,0 @@ -/*********************************************************************** - * FILE NAME : DC390.H * - * BY : C.L. Huang * - * Description: Device Driver for Tekram DC-390(T) PCI SCSI * - * Bus Master Host Adapter * - ***********************************************************************/ -/* $Id: dc390.h,v 2.43.2.22 2000/12/20 00:39:36 garloff Exp $ */ - -/* - * DC390/AMD 53C974 driver, header file - */ - -#ifndef DC390_H -#define DC390_H - -#include <linux/version.h> - -#define DC390_BANNER "Tekram DC390/AM53C974" -#define DC390_VERSION "2.1d 2004-05-27" - -/* We don't have eh_abort_handler, eh_device_reset_handler, - * eh_bus_reset_handler, eh_host_reset_handler yet! - * So long: Use old exception handling :-( */ -#define OLD_EH - -#if LINUX_VERSION_CODE < KERNEL_VERSION (2,1,70) || defined (OLD_EH) -# define NEW_EH -#else -# define NEW_EH use_new_eh_code: 1, -# define USE_NEW_EH -#endif -#endif /* DC390_H */ diff -ur a/drivers/scsi/scsiiom.c b/drivers/scsi/scsiiom.c --- a/drivers/scsi/scsiiom.c Sun Jul 4 22:25:35 2004 +++ b/drivers/scsi/scsiiom.c Sun Jul 4 22:25:48 2004 @@ -1594,18 +1594,6 @@ psrb2 = psrb->pNextSRB; pcmd = psrb->pcmd; dc390_Free_insert (pACB, psrb); -#ifndef USE_NEW_EH - /* New EH will crash on being given timed out cmnds */ - if (pcmd == cmd) - pcmd->result = MK_RES(0,DID_ABORT,0,0); - else - pcmd->result = MK_RES(0,DID_RESET,0,0); - -/* ReleaseSRB( pDCB, pSRB ); */ - - DEBUG0(printk (KERN_DEBUG "DC390: DoingSRB_Done: done pid %li\n", pcmd->pid)); - pcmd->scsi_done( pcmd ); -#endif psrb = psrb2; } pdcb->GoingSRBCnt = 0; diff -ur a/drivers/scsi/tmscsim.c b/drivers/scsi/tmscsim.c --- a/drivers/scsi/tmscsim.c Wed Jun 30 22:36:12 2004 +++ b/drivers/scsi/tmscsim.c Sun Jul 4 22:35:28 2004 @@ -240,17 +240,15 @@ #include <linux/spinlock.h> #include <asm/io.h> -#if 0 #include <scsi/scsi.h> #include <scsi/scsi_cmnd.h> #include <scsi/scsi_device.h> -#else -#include "scsi.h" -#endif #include <scsi/scsi_host.h> #include <scsi/scsicam.h> -#include "dc390.h" + +#define DC390_BANNER "Tekram DC390/AM53C974" +#define DC390_VERSION "2.1d 2004-05-27" #define PCI_DEVICE_ID_AMD53C974 PCI_DEVICE_ID_AMD_SCSI @@ -304,7 +302,6 @@ static struct dc390_acb* dc390_pACB_start= NULL; static struct dc390_acb* dc390_pACB_current = NULL; -static unsigned long dc390_lastabortedpid = 0; static u32 dc390_laststatus = 0; static u8 dc390_adapterCnt = 0; @@ -1219,146 +1216,54 @@ } -/*********************************************************************** - * Function : int DC390_abort (struct scsi_cmnd *cmd) - * - * Purpose : Abort an errant SCSI command - * - * Inputs : cmd - command to abort - * - * Returns : 0 on success, -1 on failure. - * - * Status: Buggy ! - ***********************************************************************/ - -static int DC390_abort (struct scsi_cmnd *cmd) +static int DC390_abort(struct scsi_cmnd *cmd) { - struct dc390_dcb *pDCB = (struct dc390_dcb*) cmd->device->hostdata; - struct dc390_srb *pSRB, *psrb; - u32 count, i; - int status; - //unsigned long sbac; - struct dc390_acb *pACB = (struct dc390_acb*) cmd->device->host->hostdata; - - printk ("DC390: Abort command (pid %li, Device %02i-%02i)\n", - cmd->pid, cmd->device->id, cmd->device->lun); - - if( !pDCB ) goto NOT_RUN; - - /* Added 98/07/02 KG */ - /* - pSRB = pDCB->pActiveSRB; - if (pSRB && pSRB->pcmd == cmd ) - goto ON_GOING; - */ - - pSRB = pDCB->pWaitingSRB; - if( !pSRB ) - goto ON_GOING; + struct dc390_acb *pACB = (struct dc390_acb*) cmd->device->host->hostdata; + struct dc390_dcb *pDCB = (struct dc390_dcb*) cmd->device->hostdata; + struct dc390_srb *pSRB, *psrb; - /* Now scan Waiting queue */ - if( pSRB->pcmd == cmd ) - { - pDCB->pWaitingSRB = pSRB->pNextSRB; - goto IN_WAIT; - } - else - { - psrb = pSRB; - if( !(psrb->pNextSRB) ) - goto ON_GOING; - while( psrb->pNextSRB->pcmd != cmd ) - { - psrb = psrb->pNextSRB; - if( !(psrb->pNextSRB) || psrb == pSRB) - goto ON_GOING; - } - pSRB = psrb->pNextSRB; - psrb->pNextSRB = pSRB->pNextSRB; - if( pSRB == pDCB->pWaitLast ) - pDCB->pWaitLast = psrb; -IN_WAIT: - dc390_Free_insert (pACB, pSRB); + printk("DC390: Abort command (pid %li, Device %02i-%02i)\n", + cmd->pid, cmd->device->id, cmd->device->lun); + + pSRB = pDCB->pWaitingSRB; + if (!pSRB) + goto on_going; + + /* Now scan Waiting queue */ + if (pSRB->pcmd != cmd) { + psrb = pSRB; + if (!(psrb->pNextSRB)) + goto on_going; + + while (psrb->pNextSRB->pcmd != cmd) { + psrb = psrb->pNextSRB; + if (!(psrb->pNextSRB) || psrb == pSRB) + goto on_going; + } + + pSRB = psrb->pNextSRB; + psrb->pNextSRB = pSRB->pNextSRB; + if (pSRB == pDCB->pWaitLast) + pDCB->pWaitLast = psrb; + } else + pDCB->pWaitingSRB = pSRB->pNextSRB; + + dc390_Free_insert(pACB, pSRB); pDCB->WaitSRBCnt--; INIT_LIST_HEAD((struct list_head*)&cmd->SCp); - status = SCSI_ABORT_SUCCESS; - goto ABO_X; - } - /* SRB has already been sent ! */ -ON_GOING: - /* abort() is too stupid for already sent commands at the moment. - * If it's called we are in trouble anyway, so let's dump some info - * into the syslog at least. (KG, 98/08/20,99/06/20) */ - dc390_dumpinfo (pACB, pDCB, pSRB); - pSRB = pDCB->pGoingSRB; - pDCB->DCBFlag |= ABORT_DEV_; - /* Now for the hard part: The command is currently processed */ - for( count = pDCB->GoingSRBCnt, i=0; i<count; i++) - { - if( pSRB->pcmd != cmd ) - pSRB = pSRB->pNextSRB; - else - { - if( (pACB->pActiveDCB == pDCB) && (pDCB->pActiveSRB == pSRB) ) - { - status = SCSI_ABORT_BUSY; - printk ("DC390: Abort current command (pid %li, SRB %p)\n", - cmd->pid, pSRB); - goto ABO_X; - } - else - { - status = SCSI_ABORT_SNOOZE; - goto ABO_X; - } - } - } + return SUCCESS; -NOT_RUN: - status = SCSI_ABORT_NOT_RUNNING; +on_going: + /* abort() is too stupid for already sent commands at the moment. + * If it's called we are in trouble anyway, so let's dump some info + * into the syslog at least. (KG, 98/08/20,99/06/20) */ + dc390_dumpinfo(pACB, pDCB, pSRB); -ABO_X: - cmd->result = DID_ABORT << 16; - printk(KERN_INFO "DC390: Aborted pid %li with status %i\n", cmd->pid, status); -#if 0 - if (cmd->pid == dc390_lastabortedpid) /* repeated failure ? */ - { - /* Let's do something to help the bus getting clean again */ - DC390_write8 (DMA_Cmd, DMA_IDLE_CMD); - DC390_write8 (ScsiCmd, DMA_COMMAND); - //DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); - //DC390_write8 (ScsiCmd, RESET_ATN_CMD); - DC390_write8 (ScsiCmd, NOP_CMD); - //udelay (10000); - //DC390_read8 (INT_Status); - //DC390_write8 (ScsiCmd, EN_SEL_RESEL); - } - sbac = DC390_read32 (DMA_ScsiBusCtrl); - if (sbac & SCSI_BUSY) - { /* clear BSY, SEL and ATN */ - printk (KERN_WARNING "DC390: Reset SCSI device: "); - //DC390_write32 (DMA_ScsiBusCtrl, (sbac | SCAM) & ~SCSI_LINES); - //udelay (250); - //sbac = DC390_read32 (DMA_ScsiBusCtrl); - //printk ("%08lx ", sbac); - //DC390_write32 (DMA_ScsiBusCtrl, sbac & ~(SCSI_LINES | SCAM)); - //udelay (100); - //sbac = DC390_read32 (DMA_ScsiBusCtrl); - //printk ("%08lx ", sbac); - DC390_write8 (ScsiCmd, RST_DEVICE_CMD); - udelay (250); - DC390_write8 (ScsiCmd, NOP_CMD); - sbac = DC390_read32 (DMA_ScsiBusCtrl); - printk ("%08lx\n", sbac); - } -#endif - dc390_lastabortedpid = cmd->pid; - //do_DC390_Interrupt (pACB->IRQLevel, 0, 0); -#ifndef USE_NEW_EH - if (status == SCSI_ABORT_SUCCESS) cmd->scsi_done(cmd); -#endif - return( status ); + pDCB->DCBFlag |= ABORT_DEV_; + printk(KERN_INFO "DC390: Aborted pid %li\n", cmd->pid); + + return FAILED; } @@ -1385,93 +1290,38 @@ } -#if 0 -/* Moves all SRBs from Going to Waiting for all DCBs */ -static void dc390_RecoverSRB( struct dc390_acb* pACB ) +static int DC390_bus_reset (struct scsi_cmnd *cmd) { - struct dc390_dcb *pDCB, *pdcb; - struct dc390_srb *psrb, *psrb2; - u32 cnt, i; + struct dc390_acb* pACB = (struct dc390_acb*) cmd->device->host->hostdata; + u8 bval; - pDCB = pACB->pLinkDCB; - if( !pDCB ) return; - pdcb = pDCB; - do - { - cnt = pdcb->GoingSRBCnt; - psrb = pdcb->pGoingSRB; - for (i=0; i<cnt; i++) - { - psrb2 = psrb; - psrb = psrb->pNextSRB; -/* dc390_RewaitSRB( pDCB, psrb ); */ - if( pdcb->pWaitingSRB ) - { - psrb2->pNextSRB = pdcb->pWaitingSRB; - pdcb->pWaitingSRB = psrb2; - } - else - { - pdcb->pWaitingSRB = psrb2; - pdcb->pWaitLast = psrb2; - psrb2->pNextSRB = NULL; - } - } - pdcb->GoingSRBCnt = 0; - pdcb->pGoingSRB = NULL; - pdcb->TagMask = 0; - pdcb = pdcb->pNextDCB; - } while( pdcb != pDCB ); -} -#endif + del_timer (&pACB->Waiting_Timer); -/*********************************************************************** - * Function : int DC390_reset (struct scsi_cmnd *cmd, ...) - * - * Purpose : perform a hard reset on the SCSI bus - * - * Inputs : cmd - command which caused the SCSI RESET - * resetFlags - how hard to try - * - * Returns : 0 on success. - ***********************************************************************/ + bval = DC390_read8(CtrlReg1) | DIS_INT_ON_SCSI_RST; + DC390_write8(CtrlReg1, bval); /* disable IRQ on bus reset */ -static int DC390_reset (struct scsi_cmnd *cmd) -{ - u8 bval; - struct dc390_acb* pACB = (struct dc390_acb*) cmd->device->host->hostdata; - - printk(KERN_INFO "DC390: RESET ... "); + pACB->ACBFlag |= RESET_DEV; + dc390_ResetSCSIBus(pACB); - if (timer_pending (&pACB->Waiting_Timer)) del_timer (&pACB->Waiting_Timer); - bval = DC390_read8 (CtrlReg1); - bval |= DIS_INT_ON_SCSI_RST; - DC390_write8 (CtrlReg1, bval); /* disable IRQ on bus reset */ - - pACB->ACBFlag |= RESET_DEV; - dc390_ResetSCSIBus( pACB ); - - dc390_ResetDevParam( pACB ); - udelay (1000); - pACB->pScsiHost->last_reset = jiffies + 3*HZ/2 + dc390_ResetDevParam(pACB); + udelay(1000); + pACB->pScsiHost->last_reset = jiffies + 3*HZ/2 + HZ * dc390_eepromBuf[pACB->AdapterIndex][EE_DELAY]; - DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD); - DC390_read8 (INT_Status); /* Reset Pending INT */ + DC390_write8(ScsiCmd, CLEAR_FIFO_CMD); + DC390_read8(INT_Status); /* Reset Pending INT */ - dc390_DoingSRB_Done( pACB, cmd ); - /* dc390_RecoverSRB (pACB); */ - pACB->pActiveDCB = NULL; + dc390_DoingSRB_Done(pACB, cmd); - pACB->ACBFlag = 0; - bval = DC390_read8 (CtrlReg1); - bval &= ~DIS_INT_ON_SCSI_RST; - DC390_write8 (CtrlReg1, bval); /* re-enable interrupt */ + pACB->pActiveDCB = NULL; + pACB->ACBFlag = 0; + + bval = DC390_read8(CtrlReg1) & ~DIS_INT_ON_SCSI_RST; + DC390_write8(CtrlReg1, bval); /* re-enable interrupt */ - dc390_Waiting_process( pACB ); + dc390_Waiting_process(pACB); - printk("done\n"); - return( SCSI_RESET_SUCCESS ); + return SUCCESS; } #include "scsiiom.c" @@ -1825,7 +1675,7 @@ .slave_destroy = dc390_slave_destroy, .queuecommand = DC390_queue_command, .eh_abort_handler = DC390_abort, - .eh_bus_reset_handler = DC390_reset, + .eh_bus_reset_handler = DC390_bus_reset, .bios_param = DC390_bios_param, .can_queue = 42, .this_id = 7, ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] kill obsolete typedefs and wrappers from tmscsim 2004-07-04 21:37 ` Guennadi Liakhovetski @ 2004-07-19 20:09 ` Guennadi Liakhovetski 0 siblings, 0 replies; 8+ messages in thread From: Guennadi Liakhovetski @ 2004-07-19 20:09 UTC (permalink / raw) To: Christoph Hellwig; +Cc: James Bottomley, linux-scsi On Sun, 4 Jul 2004, Guennadi Liakhovetski wrote: > On Sat, 26 Jun 2004, Christoph Hellwig wrote: > >>> Do you want to rediff your 3rd patch yourself or should I do it? >> >> I can rediff it. > > Christoph, attached is a port of your patch to my current (after the bug-2139 > patch, they don't collide, however) tree. Please, have a look if I've done it > right. Christoph, a bug in the "actual" (2.6.7) tmscsim error-handling was triggered by the patch from Kurt, removing the CONFIG_SCSI_REPORT_LUNS config-option, reported by Matthias Haase (he's also sent an email to you). My current tree, including your patch + a couple of other my irrelevant for this problem patches, doesn't have this problem! So, thanks again! And this is yet another reason to get your patch into the scsi-misc. I guess, your confirmation, that my port is ok, is needed. > Notice, I didn't change the del_timer() call, I'd like to hear > somebody's comments to it, and, as said before, there are 2 more places, > where del_timer() is called, so, if indeed needed, they can be addressed > together in a separate patch. That's still on the TODO. Thanks Guennadi --- Guennadi Liakhovetski ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2004-07-19 20:09 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2004-06-24 8:15 [PATCH] kill obsolete typedefs and wrappers from tmscsim Christoph Hellwig 2004-06-24 22:44 ` Guennadi Liakhovetski 2004-06-25 9:50 ` Christoph Hellwig 2004-06-25 19:42 ` Guennadi Liakhovetski 2004-06-26 11:17 ` Christoph Hellwig 2004-06-26 22:32 ` Guennadi Liakhovetski 2004-07-04 21:37 ` Guennadi Liakhovetski 2004-07-19 20:09 ` Guennadi Liakhovetski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox