atp870u: Remove the first level of crap
cover atp870u: Remove the first level of crap
This patch series removes the first level of crap from atp870u - the worst (in-tree) SCSI driver [1], allowing some more work to be done next.
First the driver is converted to C from something that looks like a (bad) assembler code: use of tmport for all I/O accesses and gotos all over the code.
Then I/O access wrappers are introduced.
Finally, is870, is880 and is885 are unified and two of them removed.
Tested on AEC-6710D (ATP870IU-C).
[1] http://www.spinics.net/lists/linux-scsi/msg81142.html
atp870u.c | 3226 ++++++++++++++++---------------------------------------------- 1 file changed, 880 insertions(+), 2346 deletions(-)
Signature · 1 line
Ondrej Zary
PATCH 1/34 atp870u: Remove workport
Remove workport temporary variable to simplify the code.
--- drivers/scsi/atp870u.c | 59 +++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 31 deletions(-)
drivers/scsi/atp870u.c +28 -31
@@ -51,7 +51,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)unsigned char i, j, c, target_id, lun,cmdp;unsigned char *prd;struct scsi_cmnd *workreq; -unsigned int workport, tmport, tmport1; +unsigned int tmport, tmport1;unsigned long adrcnt, k;#ifdef ED_DBGP unsigned long l;
@@ -76,10 +76,9 @@ ch_sel:#endif dev->in_int[c] =1 ; cmdp =inb (dev->ioport[c] +0x10 ); - workport = dev->ioport[c];if (dev->working[c] !=0 ) {if (dev->dev_id ==ATP885_DEVID ) { - tmport1 = workport +0x16 ; + tmport1 = dev->ioport[c] +0x16 ;if ((inb (tmport1) &0x80 ) ==0 )outb ((inb (tmport1) |0x80 ), tmport1); }
@@ -160,7 +159,7 @@ stop_dma:* Flip wide */ if (dev->wide_id[c] !=0 ) { - tmport = workport +0x1b ; + tmport = dev->ioport[c] +0x1b ;outb (0x01 , tmport);while ((inb (tmport) &0x01 ) !=0x01 ) {outb (0x01 , tmport);
@@ -276,9 +275,9 @@ stop_dma:if (dev->dev_id ==ATP885_DEVID ) { j =inb (dev->baseport +0x29 ) &0xfe ;outb (j, dev->baseport +0x29 ); - tmport = workport +0x16 ; + tmport = dev->ioport[c] +0x16 ; }else { - tmport = workport +0x10 ; + tmport = dev->ioport[c] +0x10 ;outb (0x45 , tmport); tmport +=0x06 ; }
@@ -293,7 +292,7 @@ stop_dma: target_id &=0x07 ; }if (dev->dev_id ==ATP885_DEVID ) { - tmport = workport +0x10 ; + tmport = dev->ioport[c] +0x10 ;outb (0x45 , tmport); } workreq = dev->id[c][target_id].curr_req;
@@ -304,7 +303,7 @@ stop_dma:printk ("\n" );#endif - tmport = workport +0x0f ; + tmport = dev->ioport[c] +0x0f ;outb (lun, tmport); tmport +=0x02 ;outb (dev->id[c][target_id].devsp, tmport++);
@@ -338,21 +337,21 @@ stop_dma:outb (i,tmpcip); }else if ((dev->dev_id ==ATP880_DEVID1 ) || (dev->dev_id ==ATP880_DEVID2 ) ) { - tmport = workport -0x05 ; + tmport = dev->ioport[c] -0x05 ;if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) {outb ((unsigned char ) ((inb (tmport) &0x3f ) |0xc0 ), tmport); }else {outb ((unsigned char ) (inb (tmport) &0x3f ), tmport); } }else { - tmport = workport +0x3a ; + tmport = dev->ioport[c] +0x3a ;if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) {outb ((unsigned char ) ((inb (tmport) &0xf3 ) |0x08 ), tmport); }else {outb ((unsigned char ) (inb (tmport) &0xf3 ), tmport); } } - tmport = workport +0x1b ; + tmport = dev->ioport[c] +0x1b ; j =0 ; id =1 ; id = id << target_id;
@@ -367,7 +366,7 @@ stop_dma:outb (j,tmport); }if (dev->id[c][target_id].last_len ==0 ) { - tmport = workport +0x18 ; + tmport = dev->ioport[c] +0x18 ;outb (0x08 , tmport); dev->in_int[c] =0 ;#ifdef ED_DBGP
@@ -414,7 +413,7 @@ stop_dma:outb (0x00 , tmpcip); tmpcip -=0x02 ; } - tmport = workport +0x18 ; + tmport = dev->ioport[c] +0x18 ;/* * Check transfer direction */
@@ -488,7 +487,7 @@ go_42:* Take it back wide */ if (dev->wide_id[c] !=0 ) { - tmport = workport +0x1b ; + tmport = dev->ioport[c] +0x1b ;outb (0x01 , tmport);while ((inb (tmport) &0x01 ) !=0x01 ) {outb (0x01 , tmport);
@@ -523,7 +522,7 @@ go_42:outb (0x06 , tmpcip);outb (0x00 , tmpcip); tmpcip = tmpcip -2 ; - tmport = workport +0x10 ; + tmport = dev->ioport[c] +0x10 ;outb (0x41 , tmport);if (dev->dev_id ==ATP885_DEVID ) { tmport +=2 ;
@@ -549,7 +548,7 @@ go_42:outb (0x06 , tmpcip);outb (0x00 , tmpcip); tmpcip = tmpcip -2 ; - tmport = workport +0x10 ; + tmport = dev->ioport[c] +0x10 ;outb (0x41 , tmport);if (dev->dev_id ==ATP885_DEVID ) { tmport +=2 ;
@@ -584,7 +583,7 @@ go_42: dev->in_int[c] =0 ; goto handled; }else { -// tmport = workport + 0x17; +// tmport = dev->ioport[c] + 0x17; // inb(tmport); // dev->working[c] = 0; dev->in_int[c] =0 ;
@@ -713,7 +712,6 @@ static void send_s870(struct atp_unit *dev,unsigned char c)unsigned char *prd;unsigned short int tmpcip, w;unsigned long l, bttl =0 ; -unsigned int workport;unsigned long sg_count;if (dev->in_snd[c] !=0 ) {
@@ -759,12 +757,11 @@ static void send_s870(struct atp_unit *dev,unsigned char c) dev->in_snd[c] =0 ;return ; cmd_subp: - workport = dev->ioport[c]; - tmport = workport +0x1f ; + tmport = dev->ioport[c] +0x1f ;if ((inb (tmport) &0xb0 ) !=0 ) { goto abortsnd; } - tmport = workport +0x1c ; + tmport = dev->ioport[c] +0x1c ;if (inb (tmport) ==0 ) { goto oktosend; }
@@ -800,7 +797,7 @@ oktosend: l =0 ; } - tmport = workport +0x1b ; + tmport = dev->ioport[c] +0x1b ; j =0 ; target_id =scmd_id (workreq);
@@ -823,7 +820,7 @@ oktosend:* Write the command */ - tmport = workport; + tmport = dev->ioport[c];outb (workreq->cmd_len, tmport++);outb (0x2c , tmport++);if (dev->dev_id ==ATP885_DEVID ) {
@@ -834,7 +831,7 @@ oktosend:for (i =0 ; i < workreq->cmd_len; i++) {outb (workreq->cmnd[i], tmport++); } - tmport = workport +0x0f ; + tmport = dev->ioport[c] +0x0f ;outb (workreq->device->lun, tmport); tmport +=0x02 ;/*
@@ -874,11 +871,11 @@ oktosend: }outb ((unsigned char ) (inb (tmport) |0x80 ), tmport);outb (0x80 , tmport); - tmport = workport +0x1c ; + tmport = dev->ioport[c] +0x1c ; dev->id[c][target_id].dirct =0 ;if (l ==0 ) {if (inb (tmport) ==0 ) { - tmport = workport +0x18 ; + tmport = dev->ioport[c] +0x18 ;#ifdef ED_DBGP printk ("change SCSI_CMD_REG 0x08\n" );#endif
@@ -947,7 +944,7 @@ oktosend: }else if ((dev->dev_id ==ATP880_DEVID1 ) || (dev->dev_id ==ATP880_DEVID2 )) { tmpcip =tmpcip -2 ; - tmport = workport -0x05 ; + tmport = dev->ioport[c] -0x05 ;if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) {outb ((unsigned char ) ((inb (tmport) &0x3f ) |0xc0 ), tmport); }else {
@@ -955,19 +952,19 @@ oktosend: } }else { tmpcip =tmpcip -2 ; - tmport = workport +0x3a ; + tmport = dev->ioport[c] +0x3a ;if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) {outb ((inb (tmport) &0xf3 ) |0x08 , tmport); }else {outb (inb (tmport) &0xf3 , tmport); } } - tmport = workport +0x1c ; + tmport = dev->ioport[c] +0x1c ;if (workreq->sc_data_direction ==DMA_TO_DEVICE ) { dev->id[c][target_id].dirct =0x20 ;if (inb (tmport) ==0 ) { - tmport = workport +0x18 ; + tmport = dev->ioport[c] +0x18 ;outb (0x08 , tmport);outb (0x01 , tmpcip);#ifdef ED_DBGP
@@ -980,7 +977,7 @@ oktosend:return ; }if (inb (tmport) ==0 ) { - tmport = workport +0x18 ; + tmport = dev->ioport[c] +0x18 ;outb (0x08 , tmport);outb (0x09 , tmpcip);#ifdef ED_DBGP
Signature · 1 line
Ondrej Zary
PATCH 2/34 atp870u: Remove tmport1
In reply to Ondrej ZaryRemove tmport1 temporary variable to simplify the code.
--- drivers/scsi/atp870u.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)
drivers/scsi/atp870u.c +3 -4
@@ -51,7 +51,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)unsigned char i, j, c, target_id, lun,cmdp;unsigned char *prd;struct scsi_cmnd *workreq; -unsigned int tmport, tmport1; +unsigned int tmport;unsigned long adrcnt, k;#ifdef ED_DBGP unsigned long l;
@@ -78,9 +78,8 @@ ch_sel: cmdp =inb (dev->ioport[c] +0x10 );if (dev->working[c] !=0 ) {if (dev->dev_id ==ATP885_DEVID ) { - tmport1 = dev->ioport[c] +0x16 ; -if ((inb (tmport1) &0x80 ) ==0 ) -outb ((inb (tmport1) |0x80 ), tmport1); +if ((inb (dev->ioport[c] +0x16 ) &0x80 ) ==0 ) +outb ((inb (dev->ioport[c] +0x16 ) |0x80 ), dev->ioport[c] +0x16 ); } tmpcip = dev->pciport[c];if ((inb (tmpcip) &0x08 ) !=0 )
Signature · 1 line
Ondrej Zary
PATCH 3/34 atp870u: Untangle tmport
In reply to Ondrej ZaryUntangle the tmport crap so it becomes obvious what ports are accessed.
--- drivers/scsi/atp870u.c | 186 ++++++++++++++++++------------------------------ 1 file changed, 71 insertions(+), 115 deletions(-)
drivers/scsi/atp870u.c +71 -115
@@ -51,7 +51,6 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)unsigned char i, j, c, target_id, lun,cmdp;unsigned char *prd;struct scsi_cmnd *workreq; -unsigned int tmport;unsigned long adrcnt, k;#ifdef ED_DBGP unsigned long l;
@@ -61,8 +60,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)struct atp_unit *dev = (struct atp_unit *)&host->hostdata;for (c =0 ; c <2 ; c++) { - tmport = dev->ioport[c] +0x1f ; - j =inb (tmport); + j =inb (dev->ioport[c] +0x1f );if ((j &0x80 ) !=0 ) { goto ch_sel;
@@ -97,9 +95,8 @@ ch_sel: stop_dma: tmpcip = dev->pciport[c];outb (0x00 , tmpcip); - tmport -=0x08 ; - i =inb (tmport); + i =inb (dev->ioport[c] +0x17 );if (dev->dev_id ==ATP885_DEVID ) { tmpcip +=2 ;
@@ -107,9 +104,7 @@ stop_dma: tmpcip -=2 ; } - tmport -=0x02 ; - target_id =inb (tmport); - tmport +=0x02 ; + target_id =inb (dev->ioport[c] +0x15 );/* * Remap wide devices onto id numbers
@@ -137,11 +132,10 @@ stop_dma: dev->last_cmd[c] =0xff ; }if (dev->dev_id ==ATP885_DEVID ) { - tmport -=0x05 ; adrcnt =0 ; - ((unsigned char *) &adrcnt)[2 ] =inb (tmport++); - ((unsigned char *) &adrcnt)[1 ] =inb (tmport++); - ((unsigned char *) &adrcnt)[0 ] =inb (tmport); + ((unsigned char *) &adrcnt)[2 ] =inb (dev->ioport[c] +0x12 ); + ((unsigned char *) &adrcnt)[1 ] =inb (dev->ioport[c] +0x13 ); + ((unsigned char *) &adrcnt)[0 ] =inb (dev->ioport[c] +0x14 );if (dev->id[c][target_id].last_len != adrcnt) { k = dev->id[c][target_id].last_len;
@@ -150,7 +144,7 @@ stop_dma: dev->id[c][target_id].last_len = adrcnt; }#ifdef ED_DBGP -printk ("tmport = %x dev->id[c][target_id].last_len = %d dev->id[c][target_id].tran_len = %d\n" ,tmport,dev->id[c][target_id].last_len,dev->id[c][target_id].tran_len); +printk ("dev->id[c][target_id].last_len = %d dev->id[c][target_id].tran_len = %d\n" ,dev->id[c][target_id].last_len,dev->id[c][target_id].tran_len);#endif }
@@ -158,10 +152,9 @@ stop_dma:* Flip wide */ if (dev->wide_id[c] !=0 ) { - tmport = dev->ioport[c] +0x1b ; -outb (0x01 , tmport); -while ((inb (tmport) &0x01 ) !=0x01 ) { -outb (0x01 , tmport); +outb (0x01 , dev->ioport[c] +0x1b ); +while ((inb (dev->ioport[c] +0x1b ) &0x01 ) !=0x01 ) { +outb (0x01 , dev->ioport[c] +0x1b ); } }/*
@@ -196,19 +189,16 @@ stop_dma:if ((dev->last_cmd[c] &0xf0 ) !=0x40 ) { dev->last_cmd[c] =0xff ; } - tmport -=0x05 ; adrcnt =0 ; - ((unsigned char *) &adrcnt)[2 ] =inb (tmport++); - ((unsigned char *) &adrcnt)[1 ] =inb (tmport++); - ((unsigned char *) &adrcnt)[0 ] =inb (tmport); + ((unsigned char *) &adrcnt)[2 ] =inb (dev->ioport[c] +0x12 ); + ((unsigned char *) &adrcnt)[1 ] =inb (dev->ioport[c] +0x13 ); + ((unsigned char *) &adrcnt)[0 ] =inb (dev->ioport[c] +0x14 ); k = dev->id[c][target_id].last_len; k -= adrcnt; dev->id[c][target_id].tran_len = k; dev->id[c][target_id].last_len = adrcnt; - tmport -=0x04 ; -outb (0x41 , tmport); - tmport +=0x08 ; -outb (0x08 , tmport); +outb (0x41 , dev->ioport[c] +0x10 ); +outb (0x08 , dev->ioport[c] +0x18 ); dev->in_int[c] =0 ; goto handled; }
@@ -227,10 +217,8 @@ stop_dma:printk (KERN_DEBUG "Device reselect\n" );#endif lun =0 ; - tmport -=0x07 ;if (cmdp ==0x44 || i==0x80 ) { - tmport +=0x0d ; - lun =inb (tmport) &0x07 ; + lun =inb (dev->ioport[c] +0x1d ) &0x07 ; }else {if ((dev->last_cmd[c] &0xf0 ) !=0x40 ) { dev->last_cmd[c] =0xff ;
@@ -239,31 +227,27 @@ stop_dma:#ifdef ED_DBGP printk ("cmdp = 0x41\n" );#endif - tmport +=0x02 ; adrcnt =0 ; - ((unsigned char *) &adrcnt)[2 ] =inb (tmport++); - ((unsigned char *) &adrcnt)[1 ] =inb (tmport++); - ((unsigned char *) &adrcnt)[0 ] =inb (tmport); + ((unsigned char *) &adrcnt)[2 ] =inb (dev->ioport[c] +0x12 ); + ((unsigned char *) &adrcnt)[1 ] =inb (dev->ioport[c] +0x13 ); + ((unsigned char *) &adrcnt)[0 ] =inb (dev->ioport[c] +0x14 ); k = dev->id[c][target_id].last_len; k -= adrcnt; dev->id[c][target_id].tran_len = k; dev->id[c][target_id].last_len = adrcnt; - tmport +=0x04 ; -outb (0x08 , tmport); +outb (0x08 , dev->ioport[c] +0x18 ); dev->in_int[c] =0 ; goto handled; }else {#ifdef ED_DBGP printk ("cmdp != 0x41\n" );#endif -outb (0x46 , tmport); +outb (0x46 , dev->ioport[c] +0x10 ); dev->id[c][target_id].dirct =0x00 ; - tmport +=0x02 ; -outb (0x00 , tmport++); -outb (0x00 , tmport++); -outb (0x00 , tmport++); - tmport +=0x03 ; -outb (0x08 , tmport); +outb (0x00 , dev->ioport[c] +0x12 ); +outb (0x00 , dev->ioport[c] +0x13 ); +outb (0x00 , dev->ioport[c] +0x14 ); +outb (0x08 , dev->ioport[c] +0x18 ); dev->in_int[c] =0 ; goto handled; }
@@ -274,14 +258,10 @@ stop_dma:if (dev->dev_id ==ATP885_DEVID ) { j =inb (dev->baseport +0x29 ) &0xfe ;outb (j, dev->baseport +0x29 ); - tmport = dev->ioport[c] +0x16 ; - }else { - tmport = dev->ioport[c] +0x10 ; -outb (0x45 , tmport); - tmport +=0x06 ; - } - - target_id =inb (tmport); + }else +outb (0x45 , dev->ioport[c] +0x10 ); + + target_id =inb (dev->ioport[c] +0x16 );/* * Remap wide identifiers */
@@ -290,10 +270,8 @@ stop_dma: }else { target_id &=0x07 ; } -if (dev->dev_id ==ATP885_DEVID ) { - tmport = dev->ioport[c] +0x10 ; -outb (0x45 , tmport); - } +if (dev->dev_id ==ATP885_DEVID ) +outb (0x45 , dev->ioport[c] +0x10 ); workreq = dev->id[c][target_id].curr_req;#ifdef ED_DBGP scmd_printk (KERN_DEBUG , workreq,"CDB" );
@@ -302,18 +280,16 @@ stop_dma:printk ("\n" );#endif - tmport = dev->ioport[c] +0x0f ; -outb (lun, tmport); - tmport +=0x02 ; -outb (dev->id[c][target_id].devsp, tmport++); +outb (lun, dev->ioport[c] +0x0f ); +outb (dev->id[c][target_id].devsp, dev->ioport[c] +0x11 ); adrcnt = dev->id[c][target_id].tran_len; k = dev->id[c][target_id].last_len; -outb (((unsigned char *) &k)[2 ], tmport++); -outb (((unsigned char *) &k)[1 ], tmport++); -outb (((unsigned char *) &k)[0 ], tmport++); +outb (((unsigned char *) &k)[2 ], dev->ioport[c] +0x12 ); +outb (((unsigned char *) &k)[1 ], dev->ioport[c] +0x13 ); +outb (((unsigned char *) &k)[0 ], dev->ioport[c] +0x14 );#ifdef ED_DBGP -printk ("k %x, k[0] 0x%x k[1] 0x%x k[2] 0x%x\n" , k,inb (tmport-1 ),inb (tmport-2 ),inb (tmport-3 )); +printk ("k %x, k[0] 0x%x k[1] 0x%x k[2] 0x%x\n" , k,inb (dev->ioport[c] +0x14 ),inb (dev->ioport[c] +0x13 ),inb (dev->ioport[c] +0x12 ));#endif /* Remap wide */ j = target_id;
@@ -322,8 +298,8 @@ stop_dma: }/* Add direction */ j |= dev->id[c][target_id].dirct; -outb (j, tmport++); -outb (0x80 ,tmport); +outb (j, dev->ioport[c] +0x15 ); +outb (0x80 , dev->ioport[c] +0x16 );/* enable 32 bit fifo transfer */ if (dev->dev_id ==ATP885_DEVID ) {
@@ -336,21 +312,18 @@ stop_dma:outb (i,tmpcip); }else if ((dev->dev_id ==ATP880_DEVID1 ) || (dev->dev_id ==ATP880_DEVID2 ) ) { - tmport = dev->ioport[c] -0x05 ;if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) { -outb ((unsigned char ) ((inb (tmport) &0x3f ) |0xc0 ), tmport); +outb ((unsigned char ) ((inb (dev->ioport[c] -0x05 ) &0x3f ) |0xc0 ), dev->ioport[c] -0x05 );///minus 0x05??? }else { -outb ((unsigned char ) (inb (tmport) &0x3f ), tmport); +outb ((unsigned char ) (inb (dev->ioport[c] -0x05 ) &0x3f ), dev->ioport[c] -0x05 );///minus 0x05??? } }else { - tmport = dev->ioport[c] +0x3a ;if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) { -outb ((unsigned char ) ((inb (tmport) &0xf3 ) |0x08 ), tmport); +outb ((unsigned char ) ((inb (dev->ioport[c] +0x3a ) &0xf3 ) |0x08 ), dev->ioport[c] +0x3a ); }else { -outb ((unsigned char ) (inb (tmport) &0xf3 ), tmport); +outb ((unsigned char ) (inb (dev->ioport[c] +0x3a ) &0xf3 ), dev->ioport[c] +0x3a ); } } - tmport = dev->ioport[c] +0x1b ; j =0 ; id =1 ; id = id << target_id;
@@ -360,13 +333,12 @@ stop_dma:if ((id & dev->wide_id[c]) !=0 ) { j |=0x01 ; } -outb (j, tmport); -while ((inb (tmport) &0x01 ) != j) { -outb (j,tmport); +outb (j, dev->ioport[c] +0x1b ); +while ((inb (dev->ioport[c] +0x1b ) &0x01 ) != j) { +outb (j,dev->ioport[c] +0x1b ); }if (dev->id[c][target_id].last_len ==0 ) { - tmport = dev->ioport[c] +0x18 ; -outb (0x08 , tmport); +outb (0x08 , dev->ioport[c] +0x18 ); dev->in_int[c] =0 ;#ifdef ED_DBGP printk ("dev->id[c][target_id].last_len = 0\n" );
@@ -412,12 +384,11 @@ stop_dma:outb (0x00 , tmpcip); tmpcip -=0x02 ; } - tmport = dev->ioport[c] +0x18 ;/* * Check transfer direction */ if (dev->id[c][target_id].dirct !=0 ) { -outb (0x08 , tmport); +outb (0x08 , dev->ioport[c] +0x18 );outb (0x01 , tmpcip); dev->in_int[c] =0 ;#ifdef ED_DBGP
@@ -425,7 +396,7 @@ stop_dma:#endif goto handled; } -outb (0x08 , tmport); +outb (0x08 , dev->ioport[c] +0x18 );outb (0x09 , tmpcip); dev->in_int[c] =0 ;#ifdef ED_DBGP
@@ -454,8 +425,7 @@ stop_dma: dev->last_cmd[c] =0xff ; } errstus =0 ; - tmport -=0x08 ; - errstus =inb (tmport); + errstus =inb (dev->ioport[c] +0x0f );if (((dev->r1f[c][target_id] &0x10 ) !=0 )&&(dev->dev_id==ATP885_DEVID )) {printk (KERN_WARNING "AEC67162 CRC ERROR !\n" ); errstus =0x02 ;
@@ -486,10 +456,9 @@ go_42:* Take it back wide */ if (dev->wide_id[c] !=0 ) { - tmport = dev->ioport[c] +0x1b ; -outb (0x01 , tmport); -while ((inb (tmport) &0x01 ) !=0x01 ) { -outb (0x01 , tmport); +outb (0x01 , dev->ioport[c] +0x1b ); +while ((inb (dev->ioport[c] +0x1b ) &0x01 ) !=0x01 ) { +outb (0x01 , dev->ioport[c] +0x1b ); } }/*
@@ -521,21 +490,17 @@ go_42:outb (0x06 , tmpcip);outb (0x00 , tmpcip); tmpcip = tmpcip -2 ; - tmport = dev->ioport[c] +0x10 ; -outb (0x41 , tmport); +outb (0x41 , dev->ioport[c] +0x10 );if (dev->dev_id ==ATP885_DEVID ) { - tmport +=2 ; k = dev->id[c][target_id].last_len; -outb ((unsigned char ) (((unsigned char *) (&k))[2 ]), tmport++); -outb ((unsigned char ) (((unsigned char *) (&k))[1 ]), tmport++); -outb ((unsigned char ) (((unsigned char *) (&k))[0 ]), tmport); +outb ((unsigned char ) (((unsigned char *) (&k))[2 ]), dev->ioport[c] +0x12 ); +outb ((unsigned char ) (((unsigned char *) (&k))[1 ]), dev->ioport[c] +0x13 ); +outb ((unsigned char ) (((unsigned char *) (&k))[0 ]), dev->ioport[c] +0x14 ); dev->id[c][target_id].dirct =0x00 ; - tmport +=0x04 ; }else { dev->id[c][target_id].dirct =0x00 ; - tmport +=0x08 ; } -outb (0x08 , tmport); +outb (0x08 , dev->ioport[c] +0x18 );outb (0x09 , tmpcip); dev->in_int[c] =0 ; goto handled;
@@ -547,43 +512,34 @@ go_42:outb (0x06 , tmpcip);outb (0x00 , tmpcip); tmpcip = tmpcip -2 ; - tmport = dev->ioport[c] +0x10 ; -outb (0x41 , tmport); +outb (0x41 , dev->ioport[c] +0x10 );if (dev->dev_id ==ATP885_DEVID ) { - tmport +=2 ; k = dev->id[c][target_id].last_len; -outb ((unsigned char ) (((unsigned char *) (&k))[2 ]), tmport++); -outb ((unsigned char ) (((unsigned char *) (&k))[1 ]), tmport++); -outb ((unsigned char ) (((unsigned char *) (&k))[0 ]), tmport++); - }else { - tmport +=5 ; +outb ((unsigned char ) (((unsigned char *) (&k))[2 ]), dev->ioport[c] +0x12 ); +outb ((unsigned char ) (((unsigned char *) (&k))[1 ]), dev->ioport[c] +0x13 ); +outb ((unsigned char ) (((unsigned char *) (&k))[0 ]), dev->ioport[c] +0x14 ); } -outb ((unsigned char ) (inb (tmport) |0x20 ), tmport); +outb ((unsigned char ) (inb (dev->ioport[c] +0x15 ) |0x20 ), dev->ioport[c] +0x15 ); dev->id[c][target_id].dirct =0x20 ; - tmport +=0x03 ; -outb (0x08 , tmport); +outb (0x08 , dev->ioport[c] +0x18 );outb (0x01 , tmpcip); dev->in_int[c] =0 ; goto handled; } - tmport -=0x07 ;if (i ==0x0a ) { -outb (0x30 , tmport); +outb (0x30 , dev->ioport[c] +0x10 ); }else { -outb (0x46 , tmport); +outb (0x46 , dev->ioport[c] +0x10 ); } dev->id[c][target_id].dirct =0x00 ; - tmport +=0x02 ; -outb (0x00 , tmport++); -outb (0x00 , tmport++); -outb (0x00 , tmport++); - tmport +=0x03 ; -outb (0x08 , tmport); +outb (0x00 , dev->ioport[c] +0x12 ); +outb (0x00 , dev->ioport[c] +0x13 ); +outb (0x00 , dev->ioport[c] +0x14 ); +outb (0x08 , dev->ioport[c] +0x18 ); dev->in_int[c] =0 ; goto handled; }else { -// tmport = dev->ioport[c] + 0x17; -// inb(tmport); +// inb(dev->ioport[c] + 0x17); // dev->working[c] = 0; dev->in_int[c] =0 ; goto handled;
Signature · 1 line
Ondrej Zary
PATCH 4/34 atp870u: Untangle tmport #2
In reply to Ondrej ZaryUntangle the tmport crap so it becomes obvious what ports are accessed.
--- drivers/scsi/atp870u.c | 79 ++++++++++++++++++++---------------------------- 1 file changed, 32 insertions(+), 47 deletions(-)
drivers/scsi/atp870u.c +32 -47
@@ -562,7 +562,7 @@ static int atp870u_queuecommand_lck(struct scsi_cmnd *req_p, void (*done) (struct scsi_cmnd *)) {unsigned char c; -unsigned int tmport,m; +unsigned int m;struct atp_unit *dev;struct Scsi_Host *host;
@@ -631,11 +631,10 @@ static int atp870u_queuecommand_lck(struct scsi_cmnd *req_p,return 0 ; } dev->quereq[c][dev->quend[c]] = req_p; - tmport = dev->ioport[c] +0x1c ;#ifdef ED_DBGP -printk ("dev->ioport[c] = %x inb(tmport) = %x dev->in_int[%d] = %d dev->in_snd[%d] = %d\n" ,dev->ioport[c],inb (tmport),c,dev->in_int[c],c,dev->in_snd[c]); +printk ("dev->ioport[c] = %x inb(dev->ioport[c] + 0x1c) = %x dev->in_int[%d] = %d dev->in_snd[%d] = %d\n" ,dev->ioport[c],inb (dev->ioport[c] +0x1c ),c,dev->in_int[c],c,dev->in_snd[c]);#endif -if ((inb (tmport) ==0 ) && (dev->in_int[c] ==0 ) && (dev->in_snd[c] ==0 )) { +if ((inb (dev->ioport[c] +0x1c ) ==0 ) && (dev->in_int[c] ==0 ) && (dev->in_snd[c] ==0 )) {#ifdef ED_DBGP printk ("Call sent_s870(atp870u_queuecommand)\n" );#endif
@@ -660,7 +659,6 @@ static DEF_SCSI_QCMD(atp870u_queuecommand)*/ static void send_s870 (struct atp_unit *dev,unsigned char c) { -unsigned int tmport;struct scsi_cmnd *workreq;unsigned int i;//,k; unsigned char j, target_id;
@@ -712,12 +710,10 @@ static void send_s870(struct atp_unit *dev,unsigned char c) dev->in_snd[c] =0 ;return ; cmd_subp: - tmport = dev->ioport[c] +0x1f ; -if ((inb (tmport) &0xb0 ) !=0 ) { +if ((inb (dev->ioport[c] +0x1f ) &0xb0 ) !=0 ) { goto abortsnd; } - tmport = dev->ioport[c] +0x1c ; -if (inb (tmport) ==0 ) { +if (inb (dev->ioport[c] +0x1c ) ==0 ) { goto oktosend; } abortsnd:
@@ -752,7 +748,6 @@ oktosend: l =0 ; } - tmport = dev->ioport[c] +0x1b ; j =0 ; target_id =scmd_id (workreq);
@@ -764,9 +759,9 @@ oktosend:if ((w & dev->wide_id[c]) !=0 ) { j |=0x01 ; } -outb (j, tmport); -while ((inb (tmport) &0x01 ) != j) { -outb (j,tmport); +outb (j, dev->ioport[c] +0x1b ); +while ((inb (dev->ioport[c] +0x1b ) &0x01 ) != j) { +outb (j,dev->ioport[c] +0x1b );#ifdef ED_DBGP printk ("send_s870 while loop 1\n" );#endif
@@ -775,24 +770,21 @@ oktosend:* Write the command */ - tmport = dev->ioport[c]; -outb (workreq->cmd_len, tmport++); -outb (0x2c , tmport++); +outb (workreq->cmd_len, dev->ioport[c] +0x00 ); +outb (0x2c , dev->ioport[c] +0x01 );if (dev->dev_id ==ATP885_DEVID ) { -outb (0x7f , tmport++); +outb (0x7f , dev->ioport[c] +0x02 ); }else { -outb (0xcf , tmport++); +outb (0xcf , dev->ioport[c] +0x02 ); }for (i =0 ; i < workreq->cmd_len; i++) { -outb (workreq->cmnd[i], tmport++); +outb (workreq->cmnd[i], dev->ioport[c] +0x03 + i); } - tmport = dev->ioport[c] +0x0f ; -outb (workreq->device->lun, tmport); - tmport +=0x02 ; +outb (workreq->device->lun, dev->ioport[c] +0x0f );/* * Write the target */ -outb (dev->id[c][target_id].devsp, tmport++); +outb (dev->id[c][target_id].devsp, dev->ioport[c] +0x11 );#ifdef ED_DBGP printk ("dev->id[%d][%d].devsp = %2x\n" ,c,target_id,dev->id[c][target_id].devsp);#endif
@@ -801,9 +793,9 @@ oktosend:/* * Write transfer size */ -outb ((unsigned char ) (((unsigned char *) (&l))[2 ]), tmport++); -outb ((unsigned char ) (((unsigned char *) (&l))[1 ]), tmport++); -outb ((unsigned char ) (((unsigned char *) (&l))[0 ]), tmport++); +outb ((unsigned char ) (((unsigned char *) (&l))[2 ]), dev->ioport[c] +0x12 ); +outb ((unsigned char ) (((unsigned char *) (&l))[1 ]), dev->ioport[c] +0x13 ); +outb ((unsigned char ) (((unsigned char *) (&l))[0 ]), dev->ioport[c] +0x14 ); j = target_id; dev->id[c][j].last_len = l; dev->id[c][j].tran_len =0 ;
@@ -820,21 +812,19 @@ oktosend:* Check transfer direction */ if (workreq->sc_data_direction ==DMA_TO_DEVICE ) { -outb ((unsigned char ) (j |0x20 ), tmport++); +outb ((unsigned char ) (j |0x20 ), dev->ioport[c] +0x15 ); }else { -outb (j, tmport++); +outb (j, dev->ioport[c] +0x15 ); } -outb ((unsigned char ) (inb (tmport) |0x80 ), tmport); -outb (0x80 , tmport); - tmport = dev->ioport[c] +0x1c ; +outb ((unsigned char ) (inb (dev->ioport[c] +0x16 ) |0x80 ), dev->ioport[c] +0x16 ); +outb (0x80 , dev->ioport[c] +0x16 ); dev->id[c][target_id].dirct =0 ;if (l ==0 ) { -if (inb (tmport) ==0 ) { - tmport = dev->ioport[c] +0x18 ; +if (inb (dev->ioport[c] +0x1c ) ==0 ) {#ifdef ED_DBGP printk ("change SCSI_CMD_REG 0x08\n" );#endif -outb (0x08 , tmport); +outb (0x08 , dev->ioport[c] +0x18 ); }else { dev->last_cmd[c] |=0x40 ; }
@@ -899,28 +889,24 @@ oktosend: }else if ((dev->dev_id ==ATP880_DEVID1 ) || (dev->dev_id ==ATP880_DEVID2 )) { tmpcip =tmpcip -2 ; - tmport = dev->ioport[c] -0x05 ;if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) { -outb ((unsigned char ) ((inb (tmport) &0x3f ) |0xc0 ), tmport); +outb ((unsigned char ) ((inb (dev->ioport[c] -0x05 ) &0x3f ) |0xc0 ), dev->ioport[c] -0x05 ); }else { -outb ((unsigned char ) (inb (tmport) &0x3f ), tmport); +outb ((unsigned char ) (inb (dev->ioport[c] -0x05 ) &0x3f ), dev->ioport[c] -0x05 ); } }else { tmpcip =tmpcip -2 ; - tmport = dev->ioport[c] +0x3a ;if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) { -outb ((inb (tmport) &0xf3 ) |0x08 , tmport); +outb ((inb (dev->ioport[c] +0x3a ) &0xf3 ) |0x08 , dev->ioport[c] +0x3a ); }else { -outb (inb (tmport) &0xf3 , tmport); +outb (inb (dev->ioport[c] +0x3a ) &0xf3 , dev->ioport[c] +0x3a ); } } - tmport = dev->ioport[c] +0x1c ;if (workreq->sc_data_direction ==DMA_TO_DEVICE ) { dev->id[c][target_id].dirct =0x20 ; -if (inb (tmport) ==0 ) { - tmport = dev->ioport[c] +0x18 ; -outb (0x08 , tmport); +if (inb (dev->ioport[c] +0x1c ) ==0 ) { +outb (0x08 , dev->ioport[c] +0x18 );outb (0x01 , tmpcip);#ifdef ED_DBGP printk ("start DMA(to target)\n" );
@@ -931,9 +917,8 @@ oktosend: dev->in_snd[c] =0 ;return ; } -if (inb (tmport) ==0 ) { - tmport = dev->ioport[c] +0x18 ; -outb (0x08 , tmport); +if (inb (dev->ioport[c] +0x1c ) ==0 ) { +outb (0x08 , dev->ioport[c] +0x18 );outb (0x09 , tmpcip);#ifdef ED_DBGP printk ("start DMA(to host)\n" );
Signature · 1 line
Ondrej Zary
PATCH 5/34 atp870u: Untangle tmport #3
In reply to Ondrej ZaryUntangle the tmport crap so it becomes obvious what ports are accessed.
--- drivers/scsi/atp870u.c | 118 ++++++++++++++++++++---------------------------- 1 file changed, 49 insertions(+), 69 deletions(-)
drivers/scsi/atp870u.c +49 -69
@@ -933,38 +933,36 @@ oktosend:static unsigned char fun_scam (struct atp_unit *dev,unsigned short int *val) { -unsigned int tmport;unsigned short int i, k;unsigned char j; - tmport = dev->ioport[0 ] +0x1c ; -outw (*val, tmport); +outw (*val, dev->ioport[0 ] +0x1c ); FUN_D7:for (i =0 ; i <10 ; i++) {/* stable >= bus settle delay(400 ns) */ - k =inw (tmport); + k =inw (dev->ioport[0 ] +0x1c ); j = (unsigned char ) (k >>8 );if ((k &0x8000 ) !=0 ) {/* DB7 all release? */ goto FUN_D7; } } *val |=0x4000 ;/* assert DB6 */ -outw (*val, tmport); +outw (*val, dev->ioport[0 ] +0x1c ); *val &=0xdfff ;/* assert DB5 */ -outw (*val, tmport); +outw (*val, dev->ioport[0 ] +0x1c ); FUN_D5:for (i =0 ; i <10 ; i++) {/* stable >= bus settle delay(400 ns) */ -if ((inw (tmport) &0x2000 ) !=0 ) {/* DB5 all release? */ +if ((inw (dev->ioport[0 ] +0x1c ) &0x2000 ) !=0 ) {/* DB5 all release? */ goto FUN_D5; } } *val |=0x8000 ;/* no DB4-0, assert DB7 */ *val &=0xe0ff ; -outw (*val, tmport); +outw (*val, dev->ioport[0 ] +0x1c ); *val &=0xbfff ;/* release DB6 */ -outw (*val, tmport); +outw (*val, dev->ioport[0 ] +0x1c ); FUN_D6:for (i =0 ; i <10 ; i++) {/* stable >= bus settle delay(400 ns) */ -if ((inw (tmport) &0x4000 ) !=0 ) {/* DB6 all release? */ +if ((inw (dev->ioport[0 ] +0x1c ) &0x4000 ) !=0 ) {/* DB6 all release? */ goto FUN_D6; } }
@@ -975,7 +973,6 @@ FUN_D6:static void tscam (struct Scsi_Host *host) { -unsigned int tmport;unsigned char i, j, k;unsigned long n;unsigned short int m, assignid_map, val;
@@ -992,11 +989,9 @@ static void tscam(struct Scsi_Host *host)} */ - tmport = dev->ioport[0 ] +1 ; -outb (0x08 , tmport++); -outb (0x7f , tmport); - tmport = dev->ioport[0 ] +0x11 ; -outb (0x20 , tmport); +outb (0x08 , dev->ioport[0 ] +1 ); +outb (0x7f , dev->ioport[0 ] +2 ); +outb (0x20 , dev->ioport[0 ] +0x11 );if ((dev->scam_on &0x40 ) ==0 ) {return ;
@@ -1009,14 +1004,13 @@ static void tscam(struct Scsi_Host *host) j =8 ; } assignid_map = m; - tmport = dev->ioport[0 ] +0x02 ; -outb (0x02 , tmport++);/* 2*2=4ms,3EH 2/32*3E=3.9ms */ -outb (0 , tmport++); -outb (0 , tmport++); -outb (0 , tmport++); -outb (0 , tmport++); -outb (0 , tmport++); -outb (0 , tmport++); +outb (0x02 , dev->ioport[0 ] +0x02 );/* 2*2=4ms,3EH 2/32*3E=3.9ms */ +outb (0 , dev->ioport[0 ] +0x03 ); +outb (0 , dev->ioport[0 ] +0x04 ); +outb (0 , dev->ioport[0 ] +0x05 ); +outb (0 , dev->ioport[0 ] +0x06 ); +outb (0 , dev->ioport[0 ] +0x07 ); +outb (0 , dev->ioport[0 ] +0x08 );for (i =0 ; i < j; i++) { m =1 ;
@@ -1024,79 +1018,69 @@ static void tscam(struct Scsi_Host *host)if ((m & assignid_map) !=0 ) {continue ; } - tmport = dev->ioport[0 ] +0x0f ; -outb (0 , tmport++); - tmport +=0x02 ; -outb (0 , tmport++); -outb (0 , tmport++); -outb (0 , tmport++); +outb (0 , dev->ioport[0 ] +0x0f ); +outb (0 , dev->ioport[0 ] +0x12 ); +outb (0 , dev->ioport[0 ] +0x13 ); +outb (0 , dev->ioport[0 ] +0x14 );if (i >7 ) { k = (i &0x07 ) |0x40 ; }else { k = i; } -outb (k, tmport++); - tmport = dev->ioport[0 ] +0x1b ; +outb (k, dev->ioport[0 ] +0x15 );if (dev->chip_ver ==4 ) { -outb (0x01 , tmport); +outb (0x01 , dev->ioport[0 ] +0x1b ); }else { -outb (0x00 , tmport); +outb (0x00 , dev->ioport[0 ] +0x1b ); } wait_rdyok: - tmport = dev->ioport[0 ] +0x18 ; -outb (0x09 , tmport); - tmport +=0x07 ; +outb (0x09 , dev->ioport[0 ] +0x18 ); -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (dev->ioport[0 ] +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; - k =inb (tmport); + k =inb (dev->ioport[0 ] +0x17 );if (k !=0x16 ) {if ((k ==0x85 ) || (k ==0x42 )) {continue ; } - tmport = dev->ioport[0 ] +0x10 ; -outb (0x41 , tmport); +outb (0x41 , dev->ioport[0 ] +0x10 ); goto wait_rdyok; } assignid_map |= m; } - tmport = dev->ioport[0 ] +0x02 ; -outb (0x7f , tmport); - tmport = dev->ioport[0 ] +0x1b ; -outb (0x02 , tmport); +outb (0x7f , dev->ioport[0 ] +0x02 ); +outb (0x02 , dev->ioport[0 ] +0x1b );outb (0 ,0x80 ); val =0x0080 ;/* bsy */ - tmport = dev->ioport[0 ] +0x1c ; -outw (val, tmport); +outw (val, dev->ioport[0 ] +0x1c ); val |=0x0040 ;/* sel */ -outw (val, tmport); +outw (val, dev->ioport[0 ] +0x1c ); val |=0x0004 ;/* msg */ -outw (val, tmport); +outw (val, dev->ioport[0 ] +0x1c );inb (0x80 );/* 2 deskew delay(45ns*2=90ns) */ val &=0x007f ;/* no bsy */ -outw (val, tmport); +outw (val, dev->ioport[0 ] +0x1c );mdelay (128 ); val &=0x00fb ;/* after 1ms no msg */ -outw (val, tmport); +outw (val, dev->ioport[0 ] +0x1c ); wait_nomsg: -if ((inb (tmport) &0x04 ) !=0 ) { +if ((inb (dev->ioport[0 ] +0x1c ) &0x04 ) !=0 ) { goto wait_nomsg; }outb (1 ,0x80 );udelay (100 );for (n =0 ; n <0x30000 ; n++) { -if ((inb (tmport) &0x80 ) !=0 ) {/* bsy ? */ +if ((inb (dev->ioport[0 ] +0x1c ) &0x80 ) !=0 ) {/* bsy ? */ goto wait_io; } } goto TCM_SYNC; wait_io:for (n =0 ; n <0x30000 ; n++) { -if ((inb (tmport) &0x81 ) ==0x0081 ) { +if ((inb (dev->ioport[0 ] +0x1c ) &0x81 ) ==0x0081 ) { goto wait_io1; } }
@@ -1104,10 +1088,10 @@ wait_io: wait_io1:inb (0x80 ); val |=0x8003 ;/* io,cd,db7 */ -outw (val, tmport); +outw (val, dev->ioport[0 ] +0x1c );inb (0x80 ); val &=0x00bf ;/* no sel */ -outw (val, tmport); +outw (val, dev->ioport[0 ] +0x1c );outb (2 ,0x80 ); TCM_SYNC:/*
@@ -1120,18 +1104,14 @@ TCM_SYNC:*/ mdelay (2 );udelay (48 ); -if ((inb (tmport) &0x80 ) ==0x00 ) {/* bsy ? */ -outw (0 , tmport--); -outb (0 , tmport); - tmport = dev->ioport[0 ] +0x15 ; -outb (0 , tmport); - tmport +=0x03 ; -outb (0x09 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0 ) +if ((inb (dev->ioport[0 ] +0x1c ) &0x80 ) ==0x00 ) {/* bsy ? */ +outw (0 , dev->ioport[0 ] +0x1c ); +outb (0 , dev->ioport[0 ] +0x1b ); +outb (0 , dev->ioport[0 ] +0x15 ); +outb (0x09 , dev->ioport[0 ] +0x18 ); +while ((inb (dev->ioport[0 ] +0x1f ) &0x80 ) ==0 )cpu_relax (); - tmport -=0x08 ; -inb (tmport); +inb (dev->ioport[0 ] +0x17 );return ; } val &=0x00ff ;/* synchronization */
@@ -1145,7 +1125,7 @@ TCM_SYNC: i =8 ; j =0 ; TCM_ID: -if ((inw (tmport) &0x2000 ) ==0 ) { +if ((inw (dev->ioport[0 ] +0x1c ) &0x2000 ) ==0 ) { goto TCM_ID; }outb (5 ,0x80 );
Signature · 1 line
Ondrej Zary
PATCH 6/34 atp870u: Untangle tmport #4
In reply to Ondrej ZaryUntangle the tmport crap so it becomes obvious what ports are accessed.
--- drivers/scsi/atp870u.c | 370 ++++++++++++++++++------------------------------ 1 file changed, 138 insertions(+), 232 deletions(-)
drivers/scsi/atp870u.c +138 -232
@@ -1207,7 +1207,6 @@ G2Q_QUIN: /* k=binID#, */static void is870 (struct atp_unit *dev,unsigned int wkport) { -unsigned int tmport;unsigned char i, j, k, rmb, n;unsigned short int m;static unsigned char mbuf[512 ];
@@ -1218,8 +1217,7 @@ static void is870(struct atp_unit *dev, unsigned int wkport)static unsigned char synw[6 ] = {0x80 ,1 ,3 ,1 ,0x0c ,0x07 };static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 }; - tmport = wkport +0x3a ; -outb ((unsigned char ) (inb (tmport) |0x10 ), tmport); +outb ((unsigned char ) (inb (wkport +0x3a ) |0x10 ), wkport +0x3a );for (i =0 ; i <16 ; i++) {if ((dev->chip_ver !=4 ) && (i >7 )) {
@@ -1234,135 +1232,105 @@ static void is870(struct atp_unit *dev, unsigned int wkport)printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[0 ]);continue ; } - tmport = wkport +0x1b ;if (dev->chip_ver ==4 ) { -outb (0x01 , tmport); +outb (0x01 , wkport +0x1b ); }else { -outb (0x00 , tmport); - } - tmport = wkport +1 ; -outb (0x08 , tmport++); -outb (0x7f , tmport++); -outb (satn[0 ], tmport++); -outb (satn[1 ], tmport++); -outb (satn[2 ], tmport++); -outb (satn[3 ], tmport++); -outb (satn[4 ], tmport++); -outb (satn[5 ], tmport++); - tmport +=0x06 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[0 ][i].devsp, tmport++); -outb (0 , tmport++); -outb (satn[6 ], tmport++); -outb (satn[7 ], tmport++); +outb (0x00 , wkport +0x1b ); + } +outb (0x08 , wkport +1 ); +outb (0x7f , wkport +2 ); +outb (satn[0 ], wkport +3 ); +outb (satn[1 ], wkport +4 ); +outb (satn[2 ], wkport +5 ); +outb (satn[3 ], wkport +6 ); +outb (satn[4 ], wkport +7 ); +outb (satn[5 ], wkport +8 ); +outb (0 , wkport +0x0f ); +outb (dev->id[0 ][i].devsp, wkport +0x11 ); +outb (0 , wkport +0x12 ); +outb (satn[6 ], wkport +0x13 ); +outb (satn[7 ], wkport +0x14 ); j = i;if ((j &0x08 ) !=0 ) { j = (j &0x07 ) |0x40 ; } -outb (j, tmport); - tmport +=0x03 ; -outb (satn[8 ], tmport); - tmport +=0x07 ; +outb (j, wkport +0x15 ); +outb (satn[8 ], wkport +0x18 ); -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if (inb (tmport) !=0x11 &&inb (tmport) !=0x8e ) +if (inb (wkport +0x17 ) !=0x11 &&inb (wkport +0x17 ) !=0x8e )continue ; -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x17 ) !=0x8e )cpu_relax (); dev->active_id[0 ] |= m; - tmport = wkport +0x10 ; -outb (0x30 , tmport); - tmport = wkport +0x04 ; -outb (0x00 , tmport); +outb (0x30 , wkport +0x10 ); +outb (0x00 , wkport +0x04 ); phase_cmd: - tmport = wkport +0x18 ; -outb (0x08 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (0x08 , wkport +0x18 ); +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x17 );if (j !=0x16 ) { - tmport = wkport +0x10 ; -outb (0x41 , tmport); +outb (0x41 , wkport +0x10 ); goto phase_cmd; } sel_ok: - tmport = wkport +3 ; -outb (inqd[0 ], tmport++); -outb (inqd[1 ], tmport++); -outb (inqd[2 ], tmport++); -outb (inqd[3 ], tmport++); -outb (inqd[4 ], tmport++); -outb (inqd[5 ], tmport); - tmport +=0x07 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[0 ][i].devsp, tmport++); -outb (0 , tmport++); -outb (inqd[6 ], tmport++); -outb (inqd[7 ], tmport++); - tmport +=0x03 ; -outb (inqd[8 ], tmport); - tmport +=0x07 ; - -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (inqd[0 ], wkport +3 ); +outb (inqd[1 ], wkport +4 ); +outb (inqd[2 ], wkport +5 ); +outb (inqd[3 ], wkport +6 ); +outb (inqd[4 ], wkport +7 ); +outb (inqd[5 ], wkport +8 ); +outb (0 , wkport +0x0f ); +outb (dev->id[0 ][i].devsp, wkport +0x11 ); +outb (0 , wkport +0x12 ); +outb (inqd[6 ], wkport +0x13 ); +outb (inqd[7 ], wkport +0x14 ); +outb (inqd[8 ], wkport +0x18 ); + +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if (inb (tmport) !=0x11 &&inb (tmport) !=0x8e ) +if (inb (wkport +0x17 ) !=0x11 &&inb (wkport +0x17 ) !=0x8e )continue ; -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x17 ) !=0x8e )cpu_relax (); - tmport = wkport +0x1b ;if (dev->chip_ver ==4 ) -outb (0x00 , tmport); +outb (0x00 , wkport +0x1b ); - tmport = wkport +0x18 ; -outb (0x08 , tmport); - tmport +=0x07 ; +outb (0x08 , wkport +0x18 ); j =0 ; rd_inq_data: - k =inb (tmport); + k =inb (wkport +0x1f );if ((k &0x01 ) !=0 ) { - tmport -=0x06 ; - mbuf[j++] =inb (tmport); - tmport +=0x06 ; + mbuf[j++] =inb (wkport +0x19 ); goto rd_inq_data; }if ((k &0x80 ) ==0 ) { goto rd_inq_data; } - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x17 );if (j ==0x16 ) { goto inq_ok; } - tmport = wkport +0x10 ; -outb (0x46 , tmport); - tmport +=0x02 ; -outb (0 , tmport++); -outb (0 , tmport++); -outb (0 , tmport++); - tmport +=0x03 ; -outb (0x08 , tmport); - tmport +=0x07 ; +outb (0x46 , wkport +0x10 ); +outb (0 , wkport +0x12 ); +outb (0 , wkport +0x13 ); +outb (0 , wkport +0x14 ); +outb (0x08 , wkport +0x18 ); -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if (inb (tmport) !=0x16 ) { +if (inb (wkport +0x17 ) !=0x16 ) { goto sel_ok; } inq_ok:
@@ -1380,57 +1348,43 @@ inq_ok:if ((dev->global_map[0 ] &0x20 ) ==0 ) { goto not_wide; } - tmport = wkport +0x1b ; -outb (0x01 , tmport); - tmport = wkport +3 ; -outb (satn[0 ], tmport++); -outb (satn[1 ], tmport++); -outb (satn[2 ], tmport++); -outb (satn[3 ], tmport++); -outb (satn[4 ], tmport++); -outb (satn[5 ], tmport++); - tmport +=0x06 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[0 ][i].devsp, tmport++); -outb (0 , tmport++); -outb (satn[6 ], tmport++); -outb (satn[7 ], tmport++); - tmport +=0x03 ; -outb (satn[8 ], tmport); - tmport +=0x07 ; - -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (0x01 , wkport +0x1b ); +outb (satn[0 ], wkport +3 ); +outb (satn[1 ], wkport +4 ); +outb (satn[2 ], wkport +5 ); +outb (satn[3 ], wkport +6 ); +outb (satn[4 ], wkport +7 ); +outb (satn[5 ], wkport +8 ); +outb (0 , wkport +0x0f ); +outb (dev->id[0 ][i].devsp, wkport +0x11 ); +outb (0 , wkport +0x12 ); +outb (satn[6 ], wkport +0x13 ); +outb (satn[7 ], wkport +0x14 ); +outb (satn[8 ], wkport +0x18 ); + +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if (inb (tmport) !=0x11 &&inb (tmport) !=0x8e ) +if (inb (wkport +0x17 ) !=0x11 &&inb (wkport +0x17 ) !=0x8e )continue ; -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x17 ) !=0x8e )cpu_relax (); try_wide: j =0 ; - tmport = wkport +0x14 ; -outb (0x05 , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0x05 , wkport +0x14 ); +outb (0x20 , wkport +0x18 ); -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; -outb (wide[j++], tmport); - tmport +=0x06 ; - } +while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x1f ) &0x01 ) !=0 ) +outb (wide[j++], wkport +0x19 ); } - tmport -=0x08 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (tmport) &0x0f ; + j =inb (wkport +0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1442,18 +1396,12 @@ try_wide: }continue ; widep_out: - tmport = wkport +0x18 ; -outb (0x20 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; -outb (0 , tmport); - tmport +=0x06 ; - } +outb (0x20 , wkport +0x18 ); +while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x1f ) &0x01 ) !=0 ) +outb (0 , wkport +0x19 ); } - tmport -=0x08 ; - j =inb (tmport) &0x0f ; + j =inb (wkport +0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1465,25 +1413,19 @@ widep_out: }continue ; widep_in: - tmport = wkport +0x14 ; -outb (0xff , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0xff , wkport +0x14 ); +outb (0x20 , wkport +0x18 ); k =0 ; widep_in1: - j =inb (tmport); + j =inb (wkport +0x1f );if ((j &0x01 ) !=0 ) { - tmport -=0x06 ; - mbuf[k++] =inb (tmport); - tmport +=0x06 ; + mbuf[k++] =inb (wkport +0x19 ); goto widep_in1; }if ((j &0x80 ) ==0x00 ) { goto widep_in1; } - tmport -=0x08 ; - j =inb (tmport) &0x0f ; + j =inb (wkport +0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1495,19 +1437,14 @@ widep_in1: }continue ; widep_cmd: - tmport = wkport +0x10 ; -outb (0x30 , tmport); - tmport = wkport +0x14 ; -outb (0x00 , tmport); - tmport +=0x04 ; -outb (0x08 , tmport); - tmport +=0x07 ; +outb (0x30 , wkport +0x10 ); +outb (0x00 , wkport +0x14 ); +outb (0x08 , wkport +0x18 ); -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x17 );if (j !=0x16 ) {if (j ==0x4e ) { goto widep_out;
@@ -1535,69 +1472,56 @@ not_wide: }continue ; set_sync: - tmport = wkport +0x1b ; j =0 ;if ((m & dev->wide_id[0 ]) !=0 ) { j |=0x01 ; } -outb (j, tmport); - tmport = wkport +3 ; -outb (satn[0 ], tmport++); -outb (satn[1 ], tmport++); -outb (satn[2 ], tmport++); -outb (satn[3 ], tmport++); -outb (satn[4 ], tmport++); -outb (satn[5 ], tmport++); - tmport +=0x06 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[0 ][i].devsp, tmport++); -outb (0 , tmport++); -outb (satn[6 ], tmport++); -outb (satn[7 ], tmport++); - tmport +=0x03 ; -outb (satn[8 ], tmport); - tmport +=0x07 ; - -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (j, wkport +0x1b ); +outb (satn[0 ], wkport +3 ); +outb (satn[1 ], wkport +4 ); +outb (satn[2 ], wkport +5 ); +outb (satn[3 ], wkport +6 ); +outb (satn[4 ], wkport +7 ); +outb (satn[5 ], wkport +8 ); +outb (0 , wkport +0x0f ); +outb (dev->id[0 ][i].devsp, wkport +0x11 ); +outb (0 , wkport +0x12 ); +outb (satn[6 ], wkport +0x13 ); +outb (satn[7 ], wkport +0x14 ); +outb (satn[8 ], wkport +0x18 ); + +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if (inb (tmport) !=0x11 &&inb (tmport) !=0x8e ) +if (inb (wkport +0x17 ) !=0x11 &&inb (wkport +0x17 ) !=0x8e )continue ; -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x17 ) !=0x8e )cpu_relax (); try_sync: j =0 ; - tmport = wkport +0x14 ; -outb (0x06 , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0x06 , wkport +0x14 ); +outb (0x20 , wkport +0x18 ); -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; +while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x1f ) &0x01 ) !=0 ) {if ((m & dev->wide_id[0 ]) !=0 ) { -outb (synw[j++], tmport); +outb (synw[j++], wkport +0x19 ); }else {if ((m & dev->ultra_map[0 ]) !=0 ) { -outb (synu[j++], tmport); +outb (synu[j++], wkport +0x19 ); }else { -outb (synn[j++], tmport); +outb (synn[j++], wkport +0x19 ); } } - tmport +=0x06 ; } } - tmport -=0x08 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (tmport) &0x0f ; + j =inb (wkport +0x17 ) &0x0f ;if (j ==0x0f ) { goto phase_ins; }
@@ -1609,18 +1533,12 @@ try_sync: }continue ; phase_outs: - tmport = wkport +0x18 ; -outb (0x20 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0x00 ) { -if ((inb (tmport) &0x01 ) !=0x00 ) { - tmport -=0x06 ; -outb (0x00 , tmport); - tmport +=0x06 ; - } +outb (0x20 , wkport +0x18 ); +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) { +if ((inb (wkport +0x1f ) &0x01 ) !=0x00 ) +outb (0x00 , wkport +0x19 ); } - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -1636,29 +1554,23 @@ phase_outs: }continue ; phase_ins: - tmport = wkport +0x14 ; -outb (0xff , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0xff , wkport +0x14 ); +outb (0x20 , wkport +0x18 ); k =0 ; phase_ins1: - j =inb (tmport); + j =inb (wkport +0x1f );if ((j &0x01 ) !=0x00 ) { - tmport -=0x06 ; - mbuf[k++] =inb (tmport); - tmport +=0x06 ; + mbuf[k++] =inb (wkport +0x19 ); goto phase_ins1; }if ((j &0x80 ) ==0x00 ) { goto phase_ins1; } - tmport -=0x08 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (tmport); + j =inb (wkport +0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -1674,20 +1586,15 @@ phase_ins1: }continue ; phase_cmds: - tmport = wkport +0x10 ; -outb (0x30 , tmport); +outb (0x30 , wkport +0x10 ); tar_dcons: - tmport = wkport +0x14 ; -outb (0x00 , tmport); - tmport +=0x04 ; -outb (0x08 , tmport); - tmport +=0x07 ; +outb (0x00 , wkport +0x14 ); +outb (0x08 , wkport +0x18 ); -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x17 );if (j !=0x16 ) {continue ; }
@@ -1727,8 +1634,7 @@ tar_dcons: set_syn_ok: dev->id[0 ][i].devsp = (dev->id[0 ][i].devsp &0x0f ) | j; } - tmport = wkport +0x3a ; -outb ((unsigned char ) (inb (tmport) &0xef ), tmport); +outb ((unsigned char ) (inb (wkport +0x3a ) &0xef ), wkport +0x3a ); }static void is880 (struct atp_unit *dev,unsigned int wkport)
Signature · 1 line
Ondrej Zary
PATCH 7/34 atp870u: Untangle tmport #5
In reply to Ondrej ZaryUntangle the tmport crap so it becomes obvious what ports are accessed.
--- drivers/scsi/atp870u.c | 470 ++++++++++++++++++------------------------------ 1 file changed, 173 insertions(+), 297 deletions(-)
drivers/scsi/atp870u.c +173 -297
@@ -1639,7 +1639,6 @@ set_syn_ok:static void is880 (struct atp_unit *dev,unsigned int wkport) { -unsigned int tmport;unsigned char i, j, k, rmb, n, lvdmode;unsigned short int m;static unsigned char mbuf[512 ];
@@ -1664,130 +1663,100 @@ static void is880(struct atp_unit *dev, unsigned int wkport)printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[0 ]);continue ; } - tmport = wkport +0x5b ; -outb (0x01 , tmport); - tmport = wkport +0x41 ; -outb (0x08 , tmport++); -outb (0x7f , tmport++); -outb (satn[0 ], tmport++); -outb (satn[1 ], tmport++); -outb (satn[2 ], tmport++); -outb (satn[3 ], tmport++); -outb (satn[4 ], tmport++); -outb (satn[5 ], tmport++); - tmport +=0x06 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[0 ][i].devsp, tmport++); -outb (0 , tmport++); -outb (satn[6 ], tmport++); -outb (satn[7 ], tmport++); +outb (0x01 , wkport +0x5b ); +outb (0x08 , wkport +0x41 ); +outb (0x7f , wkport +0x42 ); +outb (satn[0 ], wkport +0x43 ); +outb (satn[1 ], wkport +0x44 ); +outb (satn[2 ], wkport +0x45 ); +outb (satn[3 ], wkport +0x46 ); +outb (satn[4 ], wkport +0x47 ); +outb (satn[5 ], wkport +0x48 ); +outb (0 , wkport +0x4f ); +outb (dev->id[0 ][i].devsp, wkport +0x51 ); +outb (0 , wkport +0x52 ); +outb (satn[6 ], wkport +0x53 ); +outb (satn[7 ], wkport +0x54 ); j = i;if ((j &0x08 ) !=0 ) { j = (j &0x07 ) |0x40 ; } -outb (j, tmport); - tmport +=0x03 ; -outb (satn[8 ], tmport); - tmport +=0x07 ; +outb (j, wkport +0x55 ); +outb (satn[8 ], wkport +0x58 ); -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x5f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if (inb (tmport) !=0x11 &&inb (tmport) !=0x8e ) +if (inb (wkport +0x57 ) !=0x11 &&inb (wkport +0x57 ) !=0x8e )continue ; -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x57 ) !=0x8e )cpu_relax (); dev->active_id[0 ] |= m; - tmport = wkport +0x50 ; -outb (0x30 , tmport); - tmport = wkport +0x54 ; -outb (0x00 , tmport); +outb (0x30 , wkport +0x50 ); +outb (0x00 , wkport +0x54 ); phase_cmd: - tmport = wkport +0x58 ; -outb (0x08 , tmport); - tmport +=0x07 ; +outb (0x08 , wkport +0x58 ); -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x5f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x57 );if (j !=0x16 ) { - tmport = wkport +0x50 ; -outb (0x41 , tmport); +outb (0x41 , wkport +0x50 ); goto phase_cmd; } sel_ok: - tmport = wkport +0x43 ; -outb (inqd[0 ], tmport++); -outb (inqd[1 ], tmport++); -outb (inqd[2 ], tmport++); -outb (inqd[3 ], tmport++); -outb (inqd[4 ], tmport++); -outb (inqd[5 ], tmport); - tmport +=0x07 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[0 ][i].devsp, tmport++); -outb (0 , tmport++); -outb (inqd[6 ], tmport++); -outb (inqd[7 ], tmport++); - tmport +=0x03 ; -outb (inqd[8 ], tmport); - tmport +=0x07 ; +outb (inqd[0 ], wkport +0x43 ); +outb (inqd[1 ], wkport +0x44 ); +outb (inqd[2 ], wkport +0x45 ); +outb (inqd[3 ], wkport +0x46 ); +outb (inqd[4 ], wkport +0x47 ); +outb (inqd[5 ], wkport +0x48 ); +outb (0 , wkport +0x4f ); +outb (dev->id[0 ][i].devsp, wkport +0x51 ); +outb (0 , wkport +0x52 ); +outb (inqd[6 ], wkport +0x53 ); +outb (inqd[7 ], wkport +0x54 ); +outb (inqd[8 ], wkport +0x58 ); -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x5f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if (inb (tmport) !=0x11 &&inb (tmport) !=0x8e ) +if (inb (wkport +0x57 ) !=0x11 &&inb (wkport +0x57 ) !=0x8e )continue ; -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x57 ) !=0x8e )cpu_relax (); - tmport = wkport +0x5b ; -outb (0x00 , tmport); - tmport = wkport +0x58 ; -outb (0x08 , tmport); - tmport +=0x07 ; +outb (0x00 , wkport +0x5b ); +outb (0x08 , wkport +0x58 ); j =0 ; rd_inq_data: - k =inb (tmport); + k =inb (wkport +0x5f );if ((k &0x01 ) !=0 ) { - tmport -=0x06 ; - mbuf[j++] =inb (tmport); - tmport +=0x06 ; + mbuf[j++] =inb (wkport +0x59 ); goto rd_inq_data; }if ((k &0x80 ) ==0 ) { goto rd_inq_data; } - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x57 );if (j ==0x16 ) { goto inq_ok; } - tmport = wkport +0x50 ; -outb (0x46 , tmport); - tmport +=0x02 ; -outb (0 , tmport++); -outb (0 , tmport++); -outb (0 , tmport++); - tmport +=0x03 ; -outb (0x08 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (0x46 , wkport +0x50 ); +outb (0 , wkport +0x52 ); +outb (0 , wkport +0x53 ); +outb (0 , wkport +0x54 ); +outb (0x08 , wkport +0x58 ); +while ((inb (wkport +0x5f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if (inb (tmport) !=0x16 ) +if (inb (wkport +0x57 ) !=0x16 ) goto sel_ok; inq_ok:
@@ -1810,58 +1779,43 @@ inq_ok: goto chg_wide; } - tmport = wkport +0x5b ; -outb (0x01 , tmport); - tmport = wkport +0x43 ; -outb (satn[0 ], tmport++); -outb (satn[1 ], tmport++); -outb (satn[2 ], tmport++); -outb (satn[3 ], tmport++); -outb (satn[4 ], tmport++); -outb (satn[5 ], tmport++); - tmport +=0x06 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[0 ][i].devsp, tmport++); -outb (0 , tmport++); -outb (satn[6 ], tmport++); -outb (satn[7 ], tmport++); - tmport +=0x03 ; -outb (satn[8 ], tmport); - tmport +=0x07 ; - -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (0x01 , wkport +0x5b ); +outb (satn[0 ], wkport +0x43 ); +outb (satn[1 ], wkport +0x44 ); +outb (satn[2 ], wkport +0x45 ); +outb (satn[3 ], wkport +0x46 ); +outb (satn[4 ], wkport +0x47 ); +outb (satn[5 ], wkport +0x48 ); +outb (0 , wkport +0x4f ); +outb (dev->id[0 ][i].devsp, wkport +0x51 ); +outb (0 , wkport +0x52 ); +outb (satn[6 ], wkport +0x53 ); +outb (satn[7 ], wkport +0x54 ); +outb (satn[8 ], wkport +0x58 ); + +while ((inb (wkport +0x5f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; - -if (inb (tmport) !=0x11 &&inb (tmport) !=0x8e ) +if (inb (wkport +0x57 ) !=0x11 &&inb (wkport +0x57 ) !=0x8e )continue ; -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x57 ) !=0x8e )cpu_relax (); try_u3: j =0 ; - tmport = wkport +0x54 ; -outb (0x09 , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0x09 , wkport +0x54 ); +outb (0x20 , wkport +0x58 ); -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; -outb (u3[j++], tmport); - tmport +=0x06 ; - } +while ((inb (wkport +0x5f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x5f ) &0x01 ) !=0 ) +outb (u3[j++], wkport +0x59 ); } - tmport -=0x08 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x57 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (tmport) &0x0f ; + j =inb (wkport +0x57 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -1873,18 +1827,12 @@ try_u3: }continue ; u3p_out: - tmport = wkport +0x58 ; -outb (0x20 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; -outb (0 , tmport); - tmport +=0x06 ; - } +outb (0x20 , wkport +0x58 ); +while ((inb (wkport +0x5f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x5f ) &0x01 ) !=0 ) +outb (0 , wkport +0x59 ); } - tmport -=0x08 ; - j =inb (tmport) &0x0f ; + j =inb (wkport +0x57 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -1896,25 +1844,19 @@ u3p_out: }continue ; u3p_in: - tmport = wkport +0x54 ; -outb (0x09 , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0x09 , wkport +0x54 ); +outb (0x20 , wkport +0x58 ); k =0 ; u3p_in1: - j =inb (tmport); + j =inb (wkport +0x5f );if ((j &0x01 ) !=0 ) { - tmport -=0x06 ; - mbuf[k++] =inb (tmport); - tmport +=0x06 ; + mbuf[k++] =inb (wkport +0x59 ); goto u3p_in1; }if ((j &0x80 ) ==0x00 ) { goto u3p_in1; } - tmport -=0x08 ; - j =inb (tmport) &0x0f ; + j =inb (wkport +0x57 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -1926,19 +1868,14 @@ u3p_in1: }continue ; u3p_cmd: - tmport = wkport +0x50 ; -outb (0x30 , tmport); - tmport = wkport +0x54 ; -outb (0x00 , tmport); - tmport +=0x04 ; -outb (0x08 , tmport); - tmport +=0x07 ; +outb (0x30 , wkport +0x50 ); +outb (0x00 , wkport +0x54 ); +outb (0x08 , wkport +0x58 ); -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x5f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x57 );if (j !=0x16 ) {if (j ==0x4e ) { goto u3p_out;
@@ -1962,56 +1899,42 @@ u3p_cmd:continue ; } chg_wide: - tmport = wkport +0x5b ; -outb (0x01 , tmport); - tmport = wkport +0x43 ; -outb (satn[0 ], tmport++); -outb (satn[1 ], tmport++); -outb (satn[2 ], tmport++); -outb (satn[3 ], tmport++); -outb (satn[4 ], tmport++); -outb (satn[5 ], tmport++); - tmport +=0x06 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[0 ][i].devsp, tmport++); -outb (0 , tmport++); -outb (satn[6 ], tmport++); -outb (satn[7 ], tmport++); - tmport +=0x03 ; -outb (satn[8 ], tmport); - tmport +=0x07 ; - -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (0x01 , wkport +0x5b ); +outb (satn[0 ], wkport +0x43 ); +outb (satn[1 ], wkport +0x44 ); +outb (satn[2 ], wkport +0x45 ); +outb (satn[3 ], wkport +0x46 ); +outb (satn[4 ], wkport +0x47 ); +outb (satn[5 ], wkport +0x48 ); +outb (0 , wkport +0x4f ); +outb (dev->id[0 ][i].devsp, wkport +0x51 ); +outb (0 , wkport +0x52 ); +outb (satn[6 ], wkport +0x53 ); +outb (satn[7 ], wkport +0x54 ); +outb (satn[8 ], wkport +0x58 ); + +while ((inb (wkport +0x5f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if (inb (tmport) !=0x11 &&inb (tmport) !=0x8e ) +if (inb (wkport +0x57 ) !=0x11 &&inb (wkport +0x57 ) !=0x8e )continue ; -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x57 ) !=0x8e )cpu_relax (); try_wide: j =0 ; - tmport = wkport +0x54 ; -outb (0x05 , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0x05 , wkport +0x54 ); +outb (0x20 , wkport +0x58 ); -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; -outb (wide[j++], tmport); - tmport +=0x06 ; - } +while ((inb (wkport +0x5f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x5f ) &0x01 ) !=0 ) +outb (wide[j++], wkport +0x59 ); } - tmport -=0x08 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x57 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (tmport) &0x0f ; + j =inb (wkport +0x57 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -2023,18 +1946,12 @@ try_wide: }continue ; widep_out: - tmport = wkport +0x58 ; -outb (0x20 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; -outb (0 , tmport); - tmport +=0x06 ; - } +outb (0x20 , wkport +0x58 ); +while ((inb (wkport +0x5f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x5f ) &0x01 ) !=0 ) +outb (0 , wkport +0x59 ); } - tmport -=0x08 ; - j =inb (tmport) &0x0f ; + j =inb (wkport +0x57 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -2046,25 +1963,19 @@ widep_out: }continue ; widep_in: - tmport = wkport +0x54 ; -outb (0xff , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0xff , wkport +0x54 ); +outb (0x20 , wkport +0x58 ); k =0 ; widep_in1: - j =inb (tmport); + j =inb (wkport +0x5f );if ((j &0x01 ) !=0 ) { - tmport -=0x06 ; - mbuf[k++] =inb (tmport); - tmport +=0x06 ; + mbuf[k++] =inb (wkport +0x59 ); goto widep_in1; }if ((j &0x80 ) ==0x00 ) { goto widep_in1; } - tmport -=0x08 ; - j =inb (tmport) &0x0f ; + j =inb (wkport +0x57 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -2076,19 +1987,14 @@ widep_in1: }continue ; widep_cmd: - tmport = wkport +0x50 ; -outb (0x30 , tmport); - tmport = wkport +0x54 ; -outb (0x00 , tmport); - tmport +=0x04 ; -outb (0x08 , tmport); - tmport +=0x07 ; +outb (0x30 , wkport +0x50 ); +outb (0x00 , wkport +0x54 ); +outb (0x08 , wkport +0x58 ); -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x5f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x57 );if (j !=0x16 ) {if (j ==0x4e ) { goto widep_out;
@@ -2129,73 +2035,60 @@ set_sync: synuw[4 ] =0x0a ; } } - tmport = wkport +0x5b ; j =0 ;if ((m & dev->wide_id[0 ]) !=0 ) { j |=0x01 ; } -outb (j, tmport); - tmport = wkport +0x43 ; -outb (satn[0 ], tmport++); -outb (satn[1 ], tmport++); -outb (satn[2 ], tmport++); -outb (satn[3 ], tmport++); -outb (satn[4 ], tmport++); -outb (satn[5 ], tmport++); - tmport +=0x06 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[0 ][i].devsp, tmport++); -outb (0 , tmport++); -outb (satn[6 ], tmport++); -outb (satn[7 ], tmport++); - tmport +=0x03 ; -outb (satn[8 ], tmport); - tmport +=0x07 ; - -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (j, wkport +0x5b ); +outb (satn[0 ], wkport +0x43 ); +outb (satn[1 ], wkport +0x44 ); +outb (satn[2 ], wkport +0x45 ); +outb (satn[3 ], wkport +0x46 ); +outb (satn[4 ], wkport +0x47 ); +outb (satn[5 ], wkport +0x48 ); +outb (0 , wkport +0x4f ); +outb (dev->id[0 ][i].devsp, wkport +0x51 ); +outb (0 , wkport +0x52 ); +outb (satn[6 ], wkport +0x53 ); +outb (satn[7 ], wkport +0x54 ); +outb (satn[8 ], wkport +0x58 ); + +while ((inb (wkport +0x5f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if ((inb (tmport) !=0x11 ) && (inb (tmport) !=0x8e )) { +if ((inb (wkport +0x57 ) !=0x11 ) && (inb (wkport +0x57 ) !=0x8e )) {continue ; } -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x57 ) !=0x8e )cpu_relax (); try_sync: j =0 ; - tmport = wkport +0x54 ; -outb (0x06 , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0x06 , wkport +0x54 ); +outb (0x20 , wkport +0x58 ); -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; +while ((inb (wkport +0x5f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x5f ) &0x01 ) !=0 ) {if ((m & dev->wide_id[0 ]) !=0 ) {if ((m & dev->ultra_map[0 ]) !=0 ) { -outb (synuw[j++], tmport); +outb (synuw[j++], wkport +0x59 ); }else { -outb (synw[j++], tmport); +outb (synw[j++], wkport +0x59 ); } }else {if ((m & dev->ultra_map[0 ]) !=0 ) { -outb (synu[j++], tmport); +outb (synu[j++], wkport +0x59 ); }else { -outb (synn[j++], tmport); +outb (synn[j++], wkport +0x59 ); } } - tmport +=0x06 ; } } - tmport -=0x08 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x57 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (tmport) &0x0f ; + j =inb (wkport +0x57 ) &0x0f ;if (j ==0x0f ) { goto phase_ins; }
@@ -2207,18 +2100,12 @@ try_sync: }continue ; phase_outs: - tmport = wkport +0x58 ; -outb (0x20 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0x00 ) { -if ((inb (tmport) &0x01 ) !=0x00 ) { - tmport -=0x06 ; -outb (0x00 , tmport); - tmport +=0x06 ; - } +outb (0x20 , wkport +0x58 ); +while ((inb (wkport +0x5f ) &0x80 ) ==0x00 ) { +if ((inb (wkport +0x5f ) &0x01 ) !=0x00 ) +outb (0x00 , wkport +0x59 ); } - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x57 );if (j ==0x85 ) { goto tar_dcons; }
@@ -2234,29 +2121,23 @@ phase_outs: }continue ; phase_ins: - tmport = wkport +0x54 ; -outb (0x06 , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0x06 , wkport +0x54 ); +outb (0x20 , wkport +0x58 ); k =0 ; phase_ins1: - j =inb (tmport); + j =inb (wkport +0x5f );if ((j &0x01 ) !=0x00 ) { - tmport -=0x06 ; - mbuf[k++] =inb (tmport); - tmport +=0x06 ; + mbuf[k++] =inb (wkport +0x59 ); goto phase_ins1; }if ((j &0x80 ) ==0x00 ) { goto phase_ins1; } - tmport -=0x08 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x57 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (tmport); + j =inb (wkport +0x57 );if (j ==0x85 ) { goto tar_dcons; }
@@ -2272,20 +2153,15 @@ phase_ins1: }continue ; phase_cmds: - tmport = wkport +0x50 ; -outb (0x30 , tmport); +outb (0x30 , wkport +0x50 ); tar_dcons: - tmport = wkport +0x54 ; -outb (0x00 , tmport); - tmport +=0x04 ; -outb (0x08 , tmport); - tmport +=0x07 ; +outb (0x00 , wkport +0x54 ); +outb (0x08 , wkport +0x58 ); -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x5f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x57 );if (j !=0x16 ) {continue ; }
Signature · 1 line
Ondrej Zary
PATCH 8/34 atp870u: Untangle tmport #6
In reply to Ondrej ZaryUntangle the tmport crap so it becomes obvious what ports are accessed.
--- drivers/scsi/atp870u.c | 136 +++++++++++++++++------------------------------- 1 file changed, 49 insertions(+), 87 deletions(-)
drivers/scsi/atp870u.c +49 -87
@@ -2264,7 +2264,7 @@ static int atp870u_probe(struct pci_dev *pdev, const struct pci_device_id *ent) {unsigned char k, m, c;unsigned long flags; -unsigned int base_io, tmport, error,n; +unsigned int base_io, error,n;unsigned char host_id;struct Scsi_Host *shpnt =NULL ;struct atp_unit *atpdev, *p;
@@ -2322,12 +2322,9 @@ static int atp870u_probe(struct pci_dev *pdev, const struct pci_device_id *ent) atpdev->dev_id = ent->device; atpdev->host_id[0 ] = host_id; - tmport = base_io +0x22 ; - atpdev->scam_on =inb (tmport); - tmport +=0x13 ; - atpdev->global_map[0 ] =inb (tmport); - tmport +=0x07 ; - atpdev->ultra_map[0 ] =inw (tmport); + atpdev->scam_on =inb (base_io +0x22 ); + atpdev->global_map[0 ] =inb (base_io +0x35 ); + atpdev->ultra_map[0 ] =inw (base_io +0x3c ); n =0x3f09 ; next_fblk_880:
@@ -2402,37 +2399,26 @@ flash_ok_880: }spin_lock_irqsave (shpnt->host_lock, flags); - tmport = base_io +0x38 ; - k =inb (tmport) &0x80 ; -outb (k, tmport); - tmport +=0x03 ; -outb (0x20 , tmport); + k =inb (base_io +0x38 ) &0x80 ; +outb (k, base_io +0x38 ); +outb (0x20 , base_io +0x3b );mdelay (32 ); -outb (0 , tmport); +outb (0 , base_io +0x3b );mdelay (32 ); - tmport = base_io +0x5b ; -inb (tmport); - tmport -=0x04 ; -inb (tmport); - tmport = base_io +0x40 ; -outb ((host_id |0x08 ), tmport); - tmport +=0x18 ; -outb (0 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0 ) +inb (base_io +0x5b ); +inb (base_io +0x57 ); +outb ((host_id |0x08 ), base_io +0x40 ); +outb (0 , base_io +0x58 ); +while ((inb (base_io +0x5f ) &0x80 ) ==0 )mdelay (1 ); - tmport -=0x08 ; -inb (tmport); - tmport = base_io +0x41 ; -outb (8 , tmport++); -outb (0x7f , tmport); - tmport = base_io +0x51 ; -outb (0x20 , tmport); +inb (base_io +0x57 ); +outb (8 , base_io +0x41 ); +outb (0x7f , base_io +0x42 ); +outb (0x20 , base_io +0x51 );tscam (shpnt);is880 (p, base_io); - tmport = base_io +0x38 ; -outb (0xb0 , tmport); +outb (0xb0 , base_io +0x38 ); shpnt->max_id =16 ; shpnt->this_id = host_id; shpnt->unique_id = base_io;
@@ -2546,47 +2532,35 @@ flash_ok_885:inb (base_io +0x97 );inb (base_io +0xdb );inb (base_io +0xd7 ); - tmport = base_io +0x80 ; k=p->host_id[0 ];if (k >7 ) k = (k &0x07 ) |0x40 ; k |=0x08 ; -outb (k, tmport); - tmport +=0x18 ; -outb (0 , tmport); - tmport +=0x07 ; +outb (k, base_io +0x80 ); +outb (0 , base_io +0x98 ); -while ((inb (tmport) &0x80 ) ==0 ) +while ((inb (base_io +0x9f ) &0x80 ) ==0 )cpu_relax (); - tmport -=0x08 ; -inb (tmport); - tmport = base_io +0x81 ; -outb (8 , tmport++); -outb (0x7f , tmport); - tmport = base_io +0x91 ; -outb (0x20 , tmport); +inb (base_io +0x97 ); +outb (8 , base_io +0x81 ); +outb (0x7f , base_io +0x82 ); +outb (0x20 , base_io +0x91 ); - tmport = base_io +0xc0 ; k=p->host_id[1 ];if (k >7 ) k = (k &0x07 ) |0x40 ; k |=0x08 ; -outb (k, tmport); - tmport +=0x18 ; -outb (0 , tmport); - tmport +=0x07 ; +outb (k, base_io +0xc0 ); +outb (0 , base_io +0xd8 ); -while ((inb (tmport) &0x80 ) ==0 ) +while ((inb (base_io +0xdf ) &0x80 ) ==0 )cpu_relax (); - tmport -=0x08 ; -inb (tmport); - tmport = base_io +0xc1 ; -outb (8 , tmport++); -outb (0x7f , tmport); - tmport = base_io +0xd1 ; -outb (0x20 , tmport); +inb (base_io +0xd7 ); +outb (8 , base_io +0xc1 ); +outb (0x7f , base_io +0xc2 ); +outb (0x20 , base_io +0xd1 );tscam_885 ();printk (KERN_INFO " Scanning Channel A SCSI Device ...\n" );
@@ -2624,11 +2598,9 @@ flash_ok_885: atpdev->dev_id = ent->device; host_id &=0x07 ; atpdev->host_id[0 ] = host_id; - tmport = base_io +0x22 ; - atpdev->scam_on =inb (tmport); - tmport +=0x0b ; - atpdev->global_map[0 ] =inb (tmport++); - atpdev->ultra_map[0 ] =inw (tmport); + atpdev->scam_on =inb (base_io +0x22 ); + atpdev->global_map[0 ] =inb (base_io +0x2d ); + atpdev->ultra_map[0 ] =inw (base_io +0x2e );if (atpdev->ultra_map[0 ] ==0 ) { atpdev->scam_on =0x00 ;
@@ -2656,39 +2628,29 @@ flash_ok_885:spin_lock_irqsave (shpnt->host_lock, flags);if (atpdev->chip_ver >0x07 ) {/* check if atp876 chip then enable terminator */ - tmport = base_io +0x3e ; -outb (0x00 , tmport); +outb (0x00 , base_io +0x3e ); } - tmport = base_io +0x3a ; - k = (inb (tmport) &0xf3 ) |0x10 ; -outb (k, tmport); -outb ((k &0xdf ), tmport); + k = (inb (base_io +0x3a ) &0xf3 ) |0x10 ; +outb (k, base_io +0x3a ); +outb ((k &0xdf ), base_io +0x3a );mdelay (32 ); -outb (k, tmport); +outb (k, base_io +0x3a );mdelay (32 ); - tmport = base_io; -outb ((host_id |0x08 ), tmport); - tmport +=0x18 ; -outb (0 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0 ) +outb ((host_id |0x08 ), base_io +0 ); +outb (0 , base_io +0x18 ); +while ((inb (base_io +0x1f ) &0x80 ) ==0 )mdelay (1 ); - tmport -=0x08 ; -inb (tmport); - tmport = base_io +1 ; -outb (8 , tmport++); -outb (0x7f , tmport); - tmport = base_io +0x11 ; -outb (0x20 , tmport); +inb (base_io +0x17 ); +outb (8 , base_io +1 ); +outb (0x7f , base_io +2 ); +outb (0x20 , base_io +0x11 );tscam (shpnt);is870 (p, base_io); - tmport = base_io +0x3a ; -outb ((inb (tmport) &0xef ), tmport); - tmport++; -outb ((inb (tmport) |0x20 ), tmport); +outb ((inb (base_io +0x3a ) &0xef ), base_io +0x3a ); +outb ((inb (base_io +0x3b ) |0x20 ), base_io +0x3b );if (atpdev->chip_ver ==4 ) shpnt->max_id =16 ;else
Signature · 1 line
Ondrej Zary
PATCH 9/34 atp870u: Untangle tmport #7
In reply to Ondrej ZaryUntangle the tmport crap so it becomes obvious what ports are accessed.
--- drivers/scsi/atp870u.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-)
drivers/scsi/atp870u.c +5 -11
@@ -2716,7 +2716,6 @@ static int atp870u_abort(struct scsi_cmnd * SCpnt) {unsigned char j, k, c;struct scsi_cmnd *workrequ; -unsigned int tmport;struct atp_unit *dev;struct Scsi_Host *host; host = SCpnt->device->host;
@@ -2726,18 +2725,13 @@ static int atp870u_abort(struct scsi_cmnd * SCpnt)printk (" atp870u: abort Channel = %x \n" , c);printk ("working=%x last_cmd=%x " , dev->working[c], dev->last_cmd[c]);printk (" quhdu=%x quendu=%x " , dev->quhd[c], dev->quend[c]); - tmport = dev->ioport[c];for (j =0 ; j <0x18 ; j++) { -printk (" r%2x=%2x" , j,inb (tmport++)); +printk (" r%2x=%2x" , j,inb (dev->ioport[c] + j)); } - tmport +=0x04 ; -printk (" r1c=%2x" ,inb (tmport)); - tmport +=0x03 ; -printk (" r1f=%2x in_snd=%2x " ,inb (tmport), dev->in_snd[c]); - tmport= dev->pciport[c]; -printk (" d00=%2x" ,inb (tmport)); - tmport +=0x02 ; -printk (" d02=%2x" ,inb (tmport)); +printk (" r1c=%2x" ,inb (dev->ioport[c] +0x1c )); +printk (" r1f=%2x in_snd=%2x " ,inb (dev->ioport[c] +0x1f ), dev->in_snd[c]); +printk (" d00=%2x" ,inb (dev->pciport[c])); +printk (" d02=%2x" ,inb (dev->pciport[c] +0x02 ));for (j=0 ;j<16 ;j++) {if (dev->id[c][j].curr_req !=NULL ) { workrequ = dev->id[c][j].curr_req;
Signature · 1 line
Ondrej Zary
PATCH 10/34 atp870u: Untangle tmport #8
In reply to Ondrej ZaryUntangle the tmport crap so it becomes obvious what ports are accessed.
--- drivers/scsi/atp870u.c | 478 ++++++++++++++++++------------------------------ 1 file changed, 177 insertions(+), 301 deletions(-)
drivers/scsi/atp870u.c +177 -301
@@ -2871,7 +2871,6 @@ static void tscam_885(void)static void is885 (struct atp_unit *dev,unsigned int wkport,unsigned char c) { -unsigned int tmport;unsigned char i, j, k, rmb, n, lvdmode;unsigned short int m;static unsigned char mbuf[512 ];
@@ -2896,123 +2895,93 @@ static void is885(struct atp_unit *dev, unsigned int wkport,unsigned char c)printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[c]);continue ; } - tmport = wkport +0x1b ; -outb (0x01 , tmport); - tmport = wkport +0x01 ; -outb (0x08 , tmport++); -outb (0x7f , tmport++); -outb (satn[0 ], tmport++); -outb (satn[1 ], tmport++); -outb (satn[2 ], tmport++); -outb (satn[3 ], tmport++); -outb (satn[4 ], tmport++); -outb (satn[5 ], tmport++); - tmport +=0x06 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[c][i].devsp, tmport++); +outb (0x01 , wkport +0x1b ); +outb (0x08 , wkport +0x01 ); +outb (0x7f , wkport +0x02 ); +outb (satn[0 ], wkport +0x03 ); +outb (satn[1 ], wkport +0x04 ); +outb (satn[2 ], wkport +0x05 ); +outb (satn[3 ], wkport +0x06 ); +outb (satn[4 ], wkport +0x07 ); +outb (satn[5 ], wkport +0x08 ); +outb (0 , wkport +0x0f ); +outb (dev->id[c][i].devsp, wkport +0x11 ); -outb (0 , tmport++); -outb (satn[6 ], tmport++); -outb (satn[7 ], tmport++); +outb (0 , wkport +0x12 ); +outb (satn[6 ], wkport +0x13 ); +outb (satn[7 ], wkport +0x14 ); j = i;if ((j &0x08 ) !=0 ) { j = (j &0x07 ) |0x40 ; } -outb (j, tmport); - tmport +=0x03 ; -outb (satn[8 ], tmport); - tmport +=0x07 ; +outb (j, wkport +0x15 ); +outb (satn[8 ], wkport +0x18 ); -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if ((inb (tmport) !=0x11 ) && (inb (tmport) !=0x8e )) { +if ((inb (wkport +0x17 ) !=0x11 ) && (inb (wkport +0x17 ) !=0x8e )) {continue ; } -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x17 ) !=0x8e )cpu_relax (); dev->active_id[c] |= m; - tmport = wkport +0x10 ; -outb (0x30 , tmport); - tmport = wkport +0x14 ; -outb (0x00 , tmport); +outb (0x30 , wkport +0x10 ); +outb (0x00 , wkport +0x14 ); phase_cmd: - tmport = wkport +0x18 ; -outb (0x08 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (0x08 , wkport +0x18 ); +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x17 );if (j !=0x16 ) { - tmport = wkport +0x10 ; -outb (0x41 , tmport); +outb (0x41 , wkport +0x10 ); goto phase_cmd; } sel_ok: - tmport = wkport +0x03 ; -outb (inqd[0 ], tmport++); -outb (inqd[1 ], tmport++); -outb (inqd[2 ], tmport++); -outb (inqd[3 ], tmport++); -outb (inqd[4 ], tmport++); -outb (inqd[5 ], tmport); - tmport +=0x07 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[c][i].devsp, tmport++); -outb (0 , tmport++); -outb (inqd[6 ], tmport++); -outb (inqd[7 ], tmport++); - tmport +=0x03 ; -outb (inqd[8 ], tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (inqd[0 ], wkport +0x03 ); +outb (inqd[1 ], wkport +0x04 ); +outb (inqd[2 ], wkport +0x05 ); +outb (inqd[3 ], wkport +0x06 ); +outb (inqd[4 ], wkport +0x07 ); +outb (inqd[5 ], wkport +0x08 ); +outb (0 , wkport +0x0f ); +outb (dev->id[c][i].devsp, wkport +0x11 ); +outb (0 , wkport +0x12 ); +outb (inqd[6 ], wkport +0x13 ); +outb (inqd[7 ], wkport +0x14 ); +outb (inqd[8 ], wkport +0x18 ); +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if ((inb (tmport) !=0x11 ) && (inb (tmport) !=0x8e )) { +if ((inb (wkport +0x17 ) !=0x11 ) && (inb (wkport +0x17 ) !=0x8e )) {continue ; } -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x17 ) !=0x8e )cpu_relax (); - tmport = wkport +0x1b ; -outb (0x00 , tmport); - tmport = wkport +0x18 ; -outb (0x08 , tmport); - tmport +=0x07 ; +outb (0x00 , wkport +0x1b ); +outb (0x08 , wkport +0x18 ); j =0 ; rd_inq_data: - k =inb (tmport); + k =inb (wkport +0x1f );if ((k &0x01 ) !=0 ) { - tmport -=0x06 ; - mbuf[j++] =inb (tmport); - tmport +=0x06 ; + mbuf[j++] =inb (wkport +0x19 ); goto rd_inq_data; }if ((k &0x80 ) ==0 ) { goto rd_inq_data; } - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x17 );if (j ==0x16 ) { goto inq_ok; } - tmport = wkport +0x10 ; -outb (0x46 , tmport); - tmport +=0x02 ; -outb (0 , tmport++); -outb (0 , tmport++); -outb (0 , tmport++); - tmport +=0x03 ; -outb (0x08 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (0x46 , wkport +0x10 ); +outb (0 , wkport +0x12 ); +outb (0 , wkport +0x13 ); +outb (0 , wkport +0x14 ); +outb (0x08 , wkport +0x18 ); +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if (inb (tmport) !=0x16 ) { +if (inb (wkport +0x17 ) !=0x16 ) { goto sel_ok; } inq_ok:
@@ -3034,54 +3003,40 @@ inq_ok: goto chg_wide; } - tmport = wkport +0x1b ; -outb (0x01 , tmport); - tmport = wkport +0x03 ; -outb (satn[0 ], tmport++); -outb (satn[1 ], tmport++); -outb (satn[2 ], tmport++); -outb (satn[3 ], tmport++); -outb (satn[4 ], tmport++); -outb (satn[5 ], tmport++); - tmport +=0x06 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[c][i].devsp, tmport++); -outb (0 , tmport++); -outb (satn[6 ], tmport++); -outb (satn[7 ], tmport++); - tmport +=0x03 ; -outb (satn[8 ], tmport); - tmport +=0x07 ; - -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (0x01 , wkport +0x1b ); +outb (satn[0 ], wkport +0x03 ); +outb (satn[1 ], wkport +0x04 ); +outb (satn[2 ], wkport +0x05 ); +outb (satn[3 ], wkport +0x06 ); +outb (satn[4 ], wkport +0x07 ); +outb (satn[5 ], wkport +0x08 ); +outb (0 , wkport +0x0f ); +outb (dev->id[c][i].devsp, wkport +0x11 ); +outb (0 , wkport +0x12 ); +outb (satn[6 ], wkport +0x13 ); +outb (satn[7 ], wkport +0x14 ); +outb (satn[8 ], wkport +0x18 ); + +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if ((inb (tmport) !=0x11 ) && (inb (tmport) !=0x8e )) { +if ((inb (wkport +0x17 ) !=0x11 ) && (inb (wkport +0x17 ) !=0x8e )) {continue ; } -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x17 ) !=0x8e )cpu_relax (); try_u3: j =0 ; - tmport = wkport +0x14 ; -outb (0x09 , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; - -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; -outb (u3[j++], tmport); - tmport +=0x06 ; - } +outb (0x09 , wkport +0x14 ); +outb (0x20 , wkport +0x18 ); + +while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x1f ) &0x01 ) !=0 ) +outb (u3[j++], wkport +0x19 );cpu_relax (); } - tmport -=0x08 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (tmport) &0x0f ; + j =inb (wkport +0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -3093,19 +3048,13 @@ try_u3: }continue ; u3p_out: - tmport = wkport +0x18 ; -outb (0x20 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; -outb (0 , tmport); - tmport +=0x06 ; - } +outb (0x20 , wkport +0x18 ); +while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x1f ) &0x01 ) !=0 ) +outb (0 , wkport +0x19 );cpu_relax (); } - tmport -=0x08 ; - j =inb (tmport) &0x0f ; + j =inb (wkport +0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -3117,25 +3066,19 @@ u3p_out: }continue ; u3p_in: - tmport = wkport +0x14 ; -outb (0x09 , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0x09 , wkport +0x14 ); +outb (0x20 , wkport +0x18 ); k =0 ; u3p_in1: - j =inb (tmport); + j =inb (wkport +0x1f );if ((j &0x01 ) !=0 ) { - tmport -=0x06 ; - mbuf[k++] =inb (tmport); - tmport +=0x06 ; + mbuf[k++] =inb (wkport +0x19 ); goto u3p_in1; }if ((j &0x80 ) ==0x00 ) { goto u3p_in1; } - tmport -=0x08 ; - j =inb (tmport) &0x0f ; + j =inb (wkport +0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -3147,16 +3090,11 @@ u3p_in1: }continue ; u3p_cmd: - tmport = wkport +0x10 ; -outb (0x30 , tmport); - tmport = wkport +0x14 ; -outb (0x00 , tmport); - tmport +=0x04 ; -outb (0x08 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0x00 ); - tmport -=0x08 ; - j =inb (tmport); +outb (0x30 , wkport +0x10 ); +outb (0x00 , wkport +0x14 ); +outb (0x08 , wkport +0x18 ); +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ); + j =inb (wkport +0x17 );if (j !=0x16 ) {if (j ==0x4e ) { goto u3p_out;
@@ -3183,54 +3121,40 @@ u3p_cmd:continue ; } chg_wide: - tmport = wkport +0x1b ; -outb (0x01 , tmport); - tmport = wkport +0x03 ; -outb (satn[0 ], tmport++); -outb (satn[1 ], tmport++); -outb (satn[2 ], tmport++); -outb (satn[3 ], tmport++); -outb (satn[4 ], tmport++); -outb (satn[5 ], tmport++); - tmport +=0x06 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[c][i].devsp, tmport++); -outb (0 , tmport++); -outb (satn[6 ], tmport++); -outb (satn[7 ], tmport++); - tmport +=0x03 ; -outb (satn[8 ], tmport); - tmport +=0x07 ; - -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (0x01 , wkport +0x1b ); +outb (satn[0 ], wkport +0x03 ); +outb (satn[1 ], wkport +0x04 ); +outb (satn[2 ], wkport +0x05 ); +outb (satn[3 ], wkport +0x06 ); +outb (satn[4 ], wkport +0x07 ); +outb (satn[5 ], wkport +0x08 ); +outb (0 , wkport +0x0f ); +outb (dev->id[c][i].devsp, wkport +0x11 ); +outb (0 , wkport +0x12 ); +outb (satn[6 ], wkport +0x13 ); +outb (satn[7 ], wkport +0x14 ); +outb (satn[8 ], wkport +0x18 ); + +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if ((inb (tmport) !=0x11 ) && (inb (tmport) !=0x8e )) { +if ((inb (wkport +0x17 ) !=0x11 ) && (inb (wkport +0x17 ) !=0x8e )) {continue ; } -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x17 ) !=0x8e )cpu_relax (); try_wide: j =0 ; - tmport = wkport +0x14 ; -outb (0x05 , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; - -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; -outb (wide[j++], tmport); - tmport +=0x06 ; - } +outb (0x05 , wkport +0x14 ); +outb (0x20 , wkport +0x18 ); + +while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x1f ) &0x01 ) !=0 ) +outb (wide[j++], wkport +0x19 );cpu_relax (); } - tmport -=0x08 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (tmport) &0x0f ; + j =inb (wkport +0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -3242,19 +3166,13 @@ try_wide: }continue ; widep_out: - tmport = wkport +0x18 ; -outb (0x20 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; -outb (0 , tmport); - tmport +=0x06 ; - } +outb (0x20 , wkport +0x18 ); +while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x1f ) &0x01 ) !=0 ) +outb (0 , wkport +0x19 );cpu_relax (); } - tmport -=0x08 ; - j =inb (tmport) &0x0f ; + j =inb (wkport +0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -3266,25 +3184,19 @@ widep_out: }continue ; widep_in: - tmport = wkport +0x14 ; -outb (0xff , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0xff , wkport +0x14 ); +outb (0x20 , wkport +0x18 ); k =0 ; widep_in1: - j =inb (tmport); + j =inb (wkport +0x1f );if ((j &0x01 ) !=0 ) { - tmport -=0x06 ; - mbuf[k++] =inb (tmport); - tmport +=0x06 ; + mbuf[k++] =inb (wkport +0x19 ); goto widep_in1; }if ((j &0x80 ) ==0x00 ) { goto widep_in1; } - tmport -=0x08 ; - j =inb (tmport) &0x0f ; + j =inb (wkport +0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -3296,17 +3208,12 @@ widep_in1: }continue ; widep_cmd: - tmport = wkport +0x10 ; -outb (0x30 , tmport); - tmport = wkport +0x14 ; -outb (0x00 , tmport); - tmport +=0x04 ; -outb (0x08 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (0x30 , wkport +0x10 ); +outb (0x00 , wkport +0x14 ); +outb (0x08 , wkport +0x18 ); +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x17 );if (j !=0x16 ) {if (j ==0x4e ) { goto widep_out;
@@ -3348,69 +3255,56 @@ set_sync: synuw[4 ]=0x0a ; } } - tmport = wkport +0x1b ; j =0 ;if ((m & dev->wide_id[c]) !=0 ) { j |=0x01 ; } -outb (j, tmport); - tmport = wkport +0x03 ; -outb (satn[0 ], tmport++); -outb (satn[1 ], tmport++); -outb (satn[2 ], tmport++); -outb (satn[3 ], tmport++); -outb (satn[4 ], tmport++); -outb (satn[5 ], tmport++); - tmport +=0x06 ; -outb (0 , tmport); - tmport +=0x02 ; -outb (dev->id[c][i].devsp, tmport++); -outb (0 , tmport++); -outb (satn[6 ], tmport++); -outb (satn[7 ], tmport++); - tmport +=0x03 ; -outb (satn[8 ], tmport); - tmport +=0x07 ; - -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (j, wkport +0x1b ); +outb (satn[0 ], wkport +0x03 ); +outb (satn[1 ], wkport +0x04 ); +outb (satn[2 ], wkport +0x05 ); +outb (satn[3 ], wkport +0x06 ); +outb (satn[4 ], wkport +0x07 ); +outb (satn[5 ], wkport +0x08 ); +outb (0 , wkport +0x0f ); +outb (dev->id[c][i].devsp, wkport +0x11 ); +outb (0 , wkport +0x12 ); +outb (satn[6 ], wkport +0x13 ); +outb (satn[7 ], wkport +0x14 ); +outb (satn[8 ], wkport +0x18 ); + +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; -if ((inb (tmport) !=0x11 ) && (inb (tmport) !=0x8e )) { +if ((inb (wkport +0x17 ) !=0x11 ) && (inb (wkport +0x17 ) !=0x8e )) {continue ; } -while (inb (tmport) !=0x8e ) +while (inb (wkport +0x17 ) !=0x8e )cpu_relax (); try_sync: j =0 ; - tmport = wkport +0x14 ; -outb (0x06 , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; - -while ((inb (tmport) &0x80 ) ==0 ) { -if ((inb (tmport) &0x01 ) !=0 ) { - tmport -=0x06 ; +outb (0x06 , wkport +0x14 ); +outb (0x20 , wkport +0x18 ); + +while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { +if ((inb (wkport +0x1f ) &0x01 ) !=0 ) {if ((m & dev->wide_id[c]) !=0 ) {if ((m & dev->ultra_map[c]) !=0 ) { -outb (synuw[j++], tmport); +outb (synuw[j++], wkport +0x19 ); }else { -outb (synw[j++], tmport); +outb (synw[j++], wkport +0x19 ); } }else {if ((m & dev->ultra_map[c]) !=0 ) { -outb (synu[j++], tmport); +outb (synu[j++], wkport +0x19 ); }else { -outb (synn[j++], tmport); +outb (synn[j++], wkport +0x19 ); } } - tmport +=0x06 ; } } - tmport -=0x08 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +while ((inb (wkport +0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (tmport) &0x0f ; + j =inb (wkport +0x17 ) &0x0f ;if (j ==0x0f ) { goto phase_ins; }
@@ -3422,19 +3316,13 @@ try_sync: }continue ; phase_outs: - tmport = wkport +0x18 ; -outb (0x20 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0x00 ) { -if ((inb (tmport) &0x01 ) !=0x00 ) { - tmport -=0x06 ; -outb (0x00 , tmport); - tmport +=0x06 ; - } +outb (0x20 , wkport +0x18 ); +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) { +if ((inb (wkport +0x1f ) &0x01 ) !=0x00 ) +outb (0x00 , wkport +0x19 );cpu_relax (); } - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -3450,26 +3338,20 @@ phase_outs: }continue ; phase_ins: - tmport = wkport +0x14 ; -outb (0x06 , tmport); - tmport +=0x04 ; -outb (0x20 , tmport); - tmport +=0x07 ; +outb (0x06 , wkport +0x14 ); +outb (0x20 , wkport +0x18 ); k =0 ; phase_ins1: - j =inb (tmport); + j =inb (wkport +0x1f );if ((j &0x01 ) !=0x00 ) { - tmport -=0x06 ; - mbuf[k++] =inb (tmport); - tmport +=0x06 ; + mbuf[k++] =inb (wkport +0x19 ); goto phase_ins1; }if ((j &0x80 ) ==0x00 ) { goto phase_ins1; } - tmport -=0x08 ; -while ((inb (tmport) &0x80 ) ==0x00 ); - j =inb (tmport); +while ((inb (wkport +0x17 ) &0x80 ) ==0x00 ); + j =inb (wkport +0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -3485,18 +3367,13 @@ phase_ins1: }continue ; phase_cmds: - tmport = wkport +0x10 ; -outb (0x30 , tmport); +outb (0x30 , wkport +0x10 ); tar_dcons: - tmport = wkport +0x14 ; -outb (0x00 , tmport); - tmport +=0x04 ; -outb (0x08 , tmport); - tmport +=0x07 ; -while ((inb (tmport) &0x80 ) ==0x00 ) +outb (0x00 , wkport +0x14 ); +outb (0x08 , wkport +0x18 ); +while ((inb (wkport +0x1f ) &0x80 ) ==0x00 )cpu_relax (); - tmport -=0x08 ; - j =inb (tmport); + j =inb (wkport +0x17 );if (j !=0x16 ) {continue ; }
@@ -3543,8 +3420,7 @@ tar_dcons:printk ("dev->id[%2d][%2d].devsp = %2x\n" ,c,i,dev->id[c][i].devsp);#endif } - tmport = wkport +0x16 ; -outb (0x80 , tmport); +outb (0x80 , wkport +0x16 ); }module_init (atp870u_init);
Signature · 1 line
Ondrej Zary
PATCH 11/34 atp870u: Untangle tmpcip
In reply to Ondrej ZaryUntangle the tmpcip crap so it becomes obvious what ports are accessed.
--- drivers/scsi/atp870u.c | 64 +++++++++++++++++------------------------------- 1 file changed, 23 insertions(+), 41 deletions(-)
drivers/scsi/atp870u.c +23 -41
@@ -47,7 +47,7 @@ static void tscam_885(void);static irqreturn_t atp870u_intr_handle (int irq,void *dev_id) {unsigned long flags; -unsigned short int tmpcip, id; +unsigned short int id;unsigned char i, j, c, target_id, lun,cmdp;unsigned char *prd;struct scsi_cmnd *workreq;
@@ -79,30 +79,24 @@ ch_sel:if ((inb (dev->ioport[c] +0x16 ) &0x80 ) ==0 )outb ((inb (dev->ioport[c] +0x16 ) |0x80 ), dev->ioport[c] +0x16 ); } - tmpcip = dev->pciport[c]; -if ((inb (tmpcip) &0x08 ) !=0 ) +if ((inb (dev->pciport[c]) &0x08 ) !=0 ) { - tmpcip +=0x2 ;for (k=0 ; k <1000 ; k++) { -if ((inb (tmpcip) &0x08 ) ==0 ) { +if ((inb (dev->pciport[c] +2 ) &0x08 ) ==0 ) { goto stop_dma; } -if ((inb (tmpcip) &0x01 ) ==0 ) { +if ((inb (dev->pciport[c] +2 ) &0x01 ) ==0 ) { goto stop_dma; } } } stop_dma: - tmpcip = dev->pciport[c]; -outb (0x00 , tmpcip); +outb (0x00 , dev->pciport[c]); i =inb (dev->ioport[c] +0x17 ); -if (dev->dev_id ==ATP885_DEVID ) { - tmpcip +=2 ; -outb (0x06 , tmpcip); - tmpcip -=2 ; - } +if (dev->dev_id ==ATP885_DEVID ) +outb (0x06 , dev->pciport[c] +2 ); target_id =inb (dev->ioport[c] +0x15 );
@@ -303,13 +297,12 @@ stop_dma:/* enable 32 bit fifo transfer */ if (dev->dev_id ==ATP885_DEVID ) { - tmpcip = dev->pciport[c] +1 ; - i=inb (tmpcip) &0xf3 ; + i=inb (dev->pciport[c] +1 ) &0xf3 ;//j=workreq->cmnd[0]; if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) { i |=0x0c ; } -outb (i,tmpcip); +outb (i, dev->pciport[c] +1 ); }else if ((dev->dev_id ==ATP880_DEVID1 ) || (dev->dev_id ==ATP880_DEVID2 ) ) {if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) {
@@ -371,25 +364,20 @@ stop_dma: } } } - tmpcip = dev->pciport[c] +0x04 ; -outl (dev->id[c][target_id].prdaddr, tmpcip); +outl (dev->id[c][target_id].prdaddr, dev->pciport[c] +0x04 );#ifdef ED_DBGP printk ("dev->id[%d][%d].prdaddr 0x%8x\n" , c, target_id, dev->id[c][target_id].prdaddr);#endif -if (dev->dev_id ==ATP885_DEVID ) { - tmpcip -=0x04 ; - }else { - tmpcip -=0x02 ; -outb (0x06 , tmpcip); -outb (0x00 , tmpcip); - tmpcip -=0x02 ; +if (dev->dev_id !=ATP885_DEVID ) { +outb (0x06 , dev->pciport[c] +2 ); +outb (0x00 , dev->pciport[c] +2 ); }/* * Check transfer direction */ if (dev->id[c][target_id].dirct !=0 ) {outb (0x08 , dev->ioport[c] +0x18 ); -outb (0x01 , tmpcip); +outb (0x01 , dev->pciport[c]); dev->in_int[c] =0 ;#ifdef ED_DBGP printk ("status 0x80 return dirct != 0\n" );
@@ -397,7 +385,7 @@ stop_dma: goto handled; }outb (0x08 , dev->ioport[c] +0x18 ); -outb (0x09 , tmpcip); +outb (0x09 , dev->pciport[c]); dev->in_int[c] =0 ;#ifdef ED_DBGP printk ("status 0x80 return dirct = 0\n" );
@@ -484,12 +472,9 @@ go_42: } i &=0x0f ;if (i ==0x09 ) { - tmpcip +=4 ; -outl (dev->id[c][target_id].prdaddr, tmpcip); - tmpcip = tmpcip -2 ; -outb (0x06 , tmpcip); -outb (0x00 , tmpcip); - tmpcip = tmpcip -2 ; +outl (dev->id[c][target_id].prdaddr, dev->pciport[c] +4 ); +outb (0x06 , dev->pciport[c] +2 ); +outb (0x00 , dev->pciport[c] +2 );outb (0x41 , dev->ioport[c] +0x10 );if (dev->dev_id ==ATP885_DEVID ) { k = dev->id[c][target_id].last_len;
@@ -501,17 +486,14 @@ go_42: dev->id[c][target_id].dirct =0x00 ; }outb (0x08 , dev->ioport[c] +0x18 ); -outb (0x09 , tmpcip); +outb (0x09 , dev->pciport[c]); dev->in_int[c] =0 ; goto handled; }if (i ==0x08 ) { - tmpcip +=4 ; -outl (dev->id[c][target_id].prdaddr, tmpcip); - tmpcip = tmpcip -2 ; -outb (0x06 , tmpcip); -outb (0x00 , tmpcip); - tmpcip = tmpcip -2 ; +outl (dev->id[c][target_id].prdaddr, dev->pciport[c] +4 ); +outb (0x06 , dev->pciport[c] +2 ); +outb (0x00 , dev->pciport[c] +2 );outb (0x41 , dev->ioport[c] +0x10 );if (dev->dev_id ==ATP885_DEVID ) { k = dev->id[c][target_id].last_len;
@@ -522,7 +504,7 @@ go_42:outb ((unsigned char ) (inb (dev->ioport[c] +0x15 ) |0x20 ), dev->ioport[c] +0x15 ); dev->id[c][target_id].dirct =0x20 ;outb (0x08 , dev->ioport[c] +0x18 ); -outb (0x01 , tmpcip); +outb (0x01 , dev->pciport[c]); dev->in_int[c] =0 ; goto handled; }
Signature · 1 line
Ondrej Zary
PATCH 12/34 atp870u: Untangle tmpcip #2
In reply to Ondrej ZaryUntangle the tmpcip crap so it becomes obvious what ports are accessed.
--- drivers/scsi/atp870u.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-)
drivers/scsi/atp870u.c +9 -16
@@ -645,7 +645,7 @@ static void send_s870(struct atp_unit *dev,unsigned char c)unsigned int i;//,k; unsigned char j, target_id;unsigned char *prd; -unsigned short int tmpcip, w; +unsigned short int w;unsigned long l, bttl =0 ;unsigned long sg_count;
@@ -813,7 +813,6 @@ oktosend: dev->in_snd[c] =0 ;return ; } - tmpcip = dev->pciport[c]; prd = dev->id[c][target_id].prd_table; dev->id[c][target_id].prd_pos = prd;
@@ -850,34 +849,28 @@ oktosend:printk ("2. bttl %x, l %x\n" ,bttl, l);#endif } - tmpcip +=4 ;#ifdef ED_DBGP -printk ("send_s870: prdaddr_2 0x%8x tmpcip %x target_id %d\n" , dev->id[c][target_id].prdaddr,tmpcip,target_id); +printk ("send_s870: prdaddr_2 0x%8x target_id %d\n" , dev->id[c][target_id].prdaddr,target_id);#endif dev->id[c][target_id].prdaddr = dev->id[c][target_id].prd_bus; -outl (dev->id[c][target_id].prdaddr, tmpcip); - tmpcip = tmpcip -2 ; -outb (0x06 , tmpcip); -outb (0x00 , tmpcip); +outl (dev->id[c][target_id].prdaddr, dev->pciport[c] +4 ); +outb (0x06 , dev->pciport[c] +2 ); +outb (0x00 , dev->pciport[c] +2 );if (dev->dev_id ==ATP885_DEVID ) { - tmpcip--; - j=inb (tmpcip) &0xf3 ; + j =inb (dev->pciport[c] +1 ) &0xf3 ;if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) { j |=0x0c ; } -outb (j,tmpcip); - tmpcip--; +outb (j, dev->pciport[c] +1 ); }else if ((dev->dev_id ==ATP880_DEVID1 ) || (dev->dev_id ==ATP880_DEVID2 )) { - tmpcip =tmpcip -2 ;if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) {outb ((unsigned char ) ((inb (dev->ioport[c] -0x05 ) &0x3f ) |0xc0 ), dev->ioport[c] -0x05 ); }else {outb ((unsigned char ) (inb (dev->ioport[c] -0x05 ) &0x3f ), dev->ioport[c] -0x05 ); } }else { - tmpcip =tmpcip -2 ;if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) {outb ((inb (dev->ioport[c] +0x3a ) &0xf3 ) |0x08 , dev->ioport[c] +0x3a ); }else {
@@ -889,7 +882,7 @@ oktosend: dev->id[c][target_id].dirct =0x20 ;if (inb (dev->ioport[c] +0x1c ) ==0 ) {outb (0x08 , dev->ioport[c] +0x18 ); -outb (0x01 , tmpcip); +outb (0x01 , dev->pciport[c]);#ifdef ED_DBGP printk ("start DMA(to target)\n" );#endif
@@ -901,7 +894,7 @@ oktosend: }if (inb (dev->ioport[c] +0x1c ) ==0 ) {outb (0x08 , dev->ioport[c] +0x18 ); -outb (0x09 , tmpcip); +outb (0x09 , dev->pciport[c]);#ifdef ED_DBGP printk ("start DMA(to host)\n" );#endif
Signature · 1 line
Ondrej Zary
PATCH 13/34 atp870u: Remove ugly gotos
In reply to Ondrej Zary--- drivers/scsi/atp870u.c | 84 +++++++++++++++++------------------------------- 1 file changed, 30 insertions(+), 54 deletions(-)
drivers/scsi/atp870u.c +30 -54
@@ -55,20 +55,17 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)#ifdef ED_DBGP unsigned long l;#endif -int errstus;struct Scsi_Host *host = dev_id;struct atp_unit *dev = (struct atp_unit *)&host->hostdata;for (c =0 ; c <2 ; c++) { j =inb (dev->ioport[c] +0x1f );if ((j &0x80 ) !=0 ) - { - goto ch_sel; - } +break ; dev->in_int[c] =0 ; } -return IRQ_NONE ; -ch_sel: +if ((j &0x80 ) ==0 ) +return IRQ_NONE ;#ifdef ED_DBGP printk ("atp870u_intr_handle enter\n" );#endif
@@ -82,15 +79,12 @@ ch_sel:if ((inb (dev->pciport[c]) &0x08 ) !=0 ) {for (k=0 ; k <1000 ; k++) { -if ((inb (dev->pciport[c] +2 ) &0x08 ) ==0 ) { - goto stop_dma; - } -if ((inb (dev->pciport[c] +2 ) &0x01 ) ==0 ) { - goto stop_dma; - } +if ((inb (dev->pciport[c] +2 ) &0x08 ) ==0 ) +break ; +if ((inb (dev->pciport[c] +2 ) &0x01 ) ==0 ) +break ; } } -stop_dma:outb (0x00 , dev->pciport[c]); i =inb (dev->ioport[c] +0x17 );
@@ -170,13 +164,13 @@ stop_dma:#ifdef ED_DBGP printk ("Status 0x85 return\n" );#endif - goto handled; +return IRQ_HANDLED ; }if (i ==0x40 ) { dev->last_cmd[c] |=0x40 ; dev->in_int[c] =0 ; - goto handled; +return IRQ_HANDLED ; }if (i ==0x21 ) {
@@ -194,7 +188,7 @@ stop_dma:outb (0x41 , dev->ioport[c] +0x10 );outb (0x08 , dev->ioport[c] +0x18 ); dev->in_int[c] =0 ; - goto handled; +return IRQ_HANDLED ; }if (dev->dev_id ==ATP885_DEVID ) {
@@ -231,7 +225,7 @@ stop_dma: dev->id[c][target_id].last_len = adrcnt;outb (0x08 , dev->ioport[c] +0x18 ); dev->in_int[c] =0 ; - goto handled; +return IRQ_HANDLED ; }else {#ifdef ED_DBGP printk ("cmdp != 0x41\n" );
@@ -243,7 +237,7 @@ stop_dma:outb (0x00 , dev->ioport[c] +0x14 );outb (0x08 , dev->ioport[c] +0x18 ); dev->in_int[c] =0 ; - goto handled; +return IRQ_HANDLED ; } }if (dev->last_cmd[c] !=0xff ) {
@@ -336,7 +330,7 @@ stop_dma:#ifdef ED_DBGP printk ("dev->id[c][target_id].last_len = 0\n" );#endif - goto handled; +return IRQ_HANDLED ; }#ifdef ED_DBGP printk ("target_id = %d adrcnt = %d\n" ,target_id,adrcnt);
@@ -382,7 +376,7 @@ stop_dma:#ifdef ED_DBGP printk ("status 0x80 return dirct != 0\n" );#endif - goto handled; +return IRQ_HANDLED ; }outb (0x08 , dev->ioport[c] +0x18 );outb (0x09 , dev->pciport[c]);
@@ -390,7 +384,7 @@ stop_dma:#ifdef ED_DBGP printk ("status 0x80 return dirct = 0\n" );#endif - goto handled; +return IRQ_HANDLED ; }/*
@@ -399,27 +393,19 @@ stop_dma: workreq = dev->id[c][target_id].curr_req; -if (i ==0x42 ) { -if ((dev->last_cmd[c] &0xf0 ) !=0x40 ) - { - dev->last_cmd[c] =0xff ; - } - errstus =0x02 ; - workreq->result = errstus; - goto go_42; - } -if (i ==0x16 ) { +if (i ==0x42 || i ==0x16 ) {if ((dev->last_cmd[c] &0xf0 ) !=0x40 ) { dev->last_cmd[c] =0xff ; } - errstus =0 ; - errstus =inb (dev->ioport[c] +0x0f ); -if (((dev->r1f[c][target_id] &0x10 ) !=0 )&&(dev->dev_id==ATP885_DEVID )) { -printk (KERN_WARNING "AEC67162 CRC ERROR !\n" ); - errstus =0x02 ; - } - workreq->result = errstus; -go_42: +if (i ==0x16 ) { + workreq->result =inb (dev->ioport[c] +0x0f ); +if (((dev->r1f[c][target_id] &0x10 ) !=0 )&&(dev->dev_id==ATP885_DEVID )) { +printk (KERN_WARNING "AEC67162 CRC ERROR !\n" ); + workreq->result =0x02 ; + } + }else + workreq->result =0x02 ; +if (dev->dev_id ==ATP885_DEVID ) { j =inb (dev->baseport +0x29 ) |0x01 ;outb (j, dev->baseport +0x29 );
@@ -462,7 +448,7 @@ go_42: }spin_unlock_irqrestore (dev->host->host_lock, flags); dev->in_int[c] =0 ; - goto handled; +return IRQ_HANDLED ; }if ((dev->last_cmd[c] &0xf0 ) !=0x40 ) { dev->last_cmd[c] =0xff ;
@@ -488,7 +474,7 @@ go_42:outb (0x08 , dev->ioport[c] +0x18 );outb (0x09 , dev->pciport[c]); dev->in_int[c] =0 ; - goto handled; +return IRQ_HANDLED ; }if (i ==0x08 ) {outl (dev->id[c][target_id].prdaddr, dev->pciport[c] +4 );
@@ -506,7 +492,7 @@ go_42:outb (0x08 , dev->ioport[c] +0x18 );outb (0x01 , dev->pciport[c]); dev->in_int[c] =0 ; - goto handled; +return IRQ_HANDLED ; }if (i ==0x0a ) {outb (0x30 , dev->ioport[c] +0x10 );
@@ -518,19 +504,9 @@ go_42:outb (0x00 , dev->ioport[c] +0x13 );outb (0x00 , dev->ioport[c] +0x14 );outb (0x08 , dev->ioport[c] +0x18 ); - dev->in_int[c] =0 ; - goto handled; - }else { -// inb(dev->ioport[c] + 0x17); -// dev->working[c] = 0; - dev->in_int[c] =0 ; - goto handled; } - -handled: -#ifdef ED_DBGP -printk ("atp870u_intr_handle exit\n" ); -#endif + dev->in_int[c] =0 ; +return IRQ_HANDLED ; }/**
Signature · 1 line
Ondrej Zary
PATCH 14/34 atp870u: Remove ugly gotos #2
In reply to Ondrej Zary--- drivers/scsi/atp870u.c | 68 +++++++++++++++++++++--------------------------- 1 file changed, 30 insertions(+), 38 deletions(-)
drivers/scsi/atp870u.c +30 -38
@@ -617,7 +617,7 @@ static DEF_SCSI_QCMD(atp870u_queuecommand)*/ static void send_s870 (struct atp_unit *dev,unsigned char c) { -struct scsi_cmnd *workreq; +struct scsi_cmnd *workreq =NULL ;unsigned int i;//,k; unsigned char j, target_id;unsigned char *prd;
@@ -638,50 +638,42 @@ static void send_s870(struct atp_unit *dev,unsigned char c)if ((dev->last_cmd[c] !=0xff ) && ((dev->last_cmd[c] &0x40 ) !=0 )) { dev->last_cmd[c] &=0x0f ; workreq = dev->id[c][dev->last_cmd[c]].curr_req; -if (workreq !=NULL ) {/* check NULL pointer */ - goto cmd_subp; - } - dev->last_cmd[c] =0xff ; -if (dev->quhd[c] == dev->quend[c]) { - dev->in_snd[c] =0 ; -return ; +if (!workreq) { + dev->last_cmd[c] =0xff ; +if (dev->quhd[c] == dev->quend[c]) { + dev->in_snd[c] =0 ; +return ; + } } } -if ((dev->last_cmd[c] !=0xff ) && (dev->working[c] !=0 )) { - dev->in_snd[c] =0 ; -return ; - } - dev->working[c]++; - j = dev->quhd[c]; - dev->quhd[c]++; -if (dev->quhd[c] >= qcnt) { - dev->quhd[c] =0 ; - } - workreq = dev->quereq[c][dev->quhd[c]]; -if (dev->id[c][scmd_id (workreq)].curr_req ==NULL ) { +if (!workreq) { +if ((dev->last_cmd[c] !=0xff ) && (dev->working[c] !=0 )) { + dev->in_snd[c] =0 ; +return ; + } + dev->working[c]++; + j = dev->quhd[c]; + dev->quhd[c]++; +if (dev->quhd[c] >= qcnt) + dev->quhd[c] =0 ; + workreq = dev->quereq[c][dev->quhd[c]]; +if (dev->id[c][scmd_id (workreq)].curr_req !=NULL ) { + dev->quhd[c] = j; + dev->working[c]--; + dev->in_snd[c] =0 ; +return ; + } dev->id[c][scmd_id (workreq)].curr_req = workreq; dev->last_cmd[c] =scmd_id (workreq); - goto cmd_subp; - } - dev->quhd[c] = j; - dev->working[c]--; - dev->in_snd[c] =0 ; -return ; -cmd_subp: -if ((inb (dev->ioport[c] +0x1f ) &0xb0 ) !=0 ) { - goto abortsnd; - } -if (inb (dev->ioport[c] +0x1c ) ==0 ) { - goto oktosend; } -abortsnd: +if ((inb (dev->ioport[c] +0x1f ) &0xb0 ) !=0 ||inb (dev->ioport[c] +0x1c ) !=0 ) {#ifdef ED_DBGP -printk ("Abort to Send\n" ); +printk ("Abort to Send\n" );#endif - dev->last_cmd[c] |=0x40 ; - dev->in_snd[c] =0 ; -return ; -oktosend: + dev->last_cmd[c] |=0x40 ; + dev->in_snd[c] =0 ; +return ; + }#ifdef ED_DBGP printk ("OK to Send\n" );scmd_printk (KERN_DEBUG , workreq,"CDB" );
Signature · 1 line
Ondrej Zary
PATCH 15/34 atp870u: Remove ugly gotos #3
In reply to Ondrej Zary--- drivers/scsi/atp870u.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-)
drivers/scsi/atp870u.c +6 -12
@@ -880,34 +880,28 @@ static unsigned char fun_scam(struct atp_unit *dev, unsigned short int *val)unsigned char j;outw (*val, dev->ioport[0 ] +0x1c ); -FUN_D7:for (i =0 ; i <10 ; i++) {/* stable >= bus settle delay(400 ns) */ k =inw (dev->ioport[0 ] +0x1c ); j = (unsigned char ) (k >>8 ); -if ((k &0x8000 ) !=0 ) {/* DB7 all release? */ - goto FUN_D7; - } +if ((k &0x8000 ) !=0 )/* DB7 all release? */ + i =0 ; } *val |=0x4000 ;/* assert DB6 */ outw (*val, dev->ioport[0 ] +0x1c ); *val &=0xdfff ;/* assert DB5 */ outw (*val, dev->ioport[0 ] +0x1c ); -FUN_D5:for (i =0 ; i <10 ; i++) {/* stable >= bus settle delay(400 ns) */ -if ((inw (dev->ioport[0 ] +0x1c ) &0x2000 ) !=0 ) {/* DB5 all release? */ - goto FUN_D5; - } +if ((inw (dev->ioport[0 ] +0x1c ) &0x2000 ) !=0 )/* DB5 all release? */ + i =0 ; } *val |=0x8000 ;/* no DB4-0, assert DB7 */ *val &=0xe0ff ;outw (*val, dev->ioport[0 ] +0x1c ); *val &=0xbfff ;/* release DB6 */ outw (*val, dev->ioport[0 ] +0x1c ); -FUN_D6:for (i =0 ; i <10 ; i++) {/* stable >= bus settle delay(400 ns) */ -if ((inw (dev->ioport[0 ] +0x1c ) &0x4000 ) !=0 ) {/* DB6 all release? */ - goto FUN_D6; - } +if ((inw (dev->ioport[0 ] +0x1c ) &0x4000 ) !=0 )/* DB6 all release? */ + i =0 ; }return j;
Signature · 1 line
Ondrej Zary
PATCH 16/34 atp870u: Remove ugly gotos #4
In reply to Ondrej Zary--- drivers/scsi/atp870u.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-)
drivers/scsi/atp870u.c +15 -17
@@ -970,19 +970,19 @@ static void tscam(struct Scsi_Host *host) }else {outb (0x00 , dev->ioport[0 ] +0x1b ); } -wait_rdyok: -outb (0x09 , dev->ioport[0 ] +0x18 ); - -while ((inb (dev->ioport[0 ] +0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - k =inb (dev->ioport[0 ] +0x17 ); -if (k !=0x16 ) { -if ((k ==0x85 ) || (k ==0x42 )) { -continue ; - } -outb (0x41 , dev->ioport[0 ] +0x10 ); - goto wait_rdyok; - } +do { +outb (0x09 , dev->ioport[0 ] +0x18 ); + +while ((inb (dev->ioport[0 ] +0x1f ) &0x80 ) ==0x00 ) +cpu_relax (); + k =inb (dev->ioport[0 ] +0x17 ); +if ((k ==0x85 ) || (k ==0x42 )) +break ; +if (k !=0x16 ) +outb (0x41 , dev->ioport[0 ] +0x10 ); + }while (k !=0x16 ); +if ((k ==0x85 ) || (k ==0x42 )) +continue ; assignid_map |= m; }
@@ -1003,10 +1003,8 @@ wait_rdyok:mdelay (128 ); val &=0x00fb ;/* after 1ms no msg */ outw (val, dev->ioport[0 ] +0x1c ); -wait_nomsg: -if ((inb (dev->ioport[0 ] +0x1c ) &0x04 ) !=0 ) { - goto wait_nomsg; - } +while ((inb (dev->ioport[0 ] +0x1c ) &0x04 ) !=0 ) + ;outb (1 ,0x80 );udelay (100 );for (n =0 ; n <0x30000 ; n++) {
Signature · 1 line
Ondrej Zary
PATCH 17/34 atp870u: Remove ugly gotos #5
In reply to Ondrej Zary--- drivers/scsi/atp870u.c | 134 ++++++++++++++++++++++-------------------------- 1 file changed, 62 insertions(+), 72 deletions(-)
drivers/scsi/atp870u.c +62 -72
@@ -1007,28 +1007,22 @@ static void tscam(struct Scsi_Host *host) ;outb (1 ,0x80 );udelay (100 ); -for (n =0 ; n <0x30000 ; n++) { -if ((inb (dev->ioport[0 ] +0x1c ) &0x80 ) !=0 ) {/* bsy ? */ - goto wait_io; - } - } - goto TCM_SYNC; -wait_io: -for (n =0 ; n <0x30000 ; n++) { -if ((inb (dev->ioport[0 ] +0x1c ) &0x81 ) ==0x0081 ) { - goto wait_io1; - } - } - goto TCM_SYNC; -wait_io1: -inb (0x80 ); - val |=0x8003 ;/* io,cd,db7 */ -outw (val, dev->ioport[0 ] +0x1c ); -inb (0x80 ); - val &=0x00bf ;/* no sel */ -outw (val, dev->ioport[0 ] +0x1c ); -outb (2 ,0x80 ); -TCM_SYNC: +for (n =0 ; n <0x30000 ; n++) +if ((inb (dev->ioport[0 ] +0x1c ) &0x80 ) !=0 )/* bsy ? */ +break ; +if (n <0x30000 ) +for (n =0 ; n <0x30000 ; n++) +if ((inb (dev->ioport[0 ] +0x1c ) &0x81 ) ==0x0081 ) { +inb (0x80 ); + val |=0x8003 ;/* io,cd,db7 */ +outw (val, dev->ioport[0 ] +0x1c ); +inb (0x80 ); + val &=0x00bf ;/* no sel */ +outw (val, dev->ioport[0 ] +0x1c ); +outb (2 ,0x80 ); +break ; + } +while (1 ) {/* * The funny division into multiple delays is to accomodate * arches like ARM where udelay() multiplies its argument by
@@ -1059,31 +1053,28 @@ TCM_SYNC:outb (4 ,0x80 ); i =8 ; j =0 ; -TCM_ID: -if ((inw (dev->ioport[0 ] +0x1c ) &0x2000 ) ==0 ) { - goto TCM_ID; - } -outb (5 ,0x80 ); - val &=0x00ff ;/* get ID_STRING */ - val |=0x2000 ; - k =fun_scam (dev, &val); -if ((k &0x03 ) ==0 ) { - goto TCM_5; - } - mbuf[j] <<=0x01 ; - mbuf[j] &=0xfe ; -if ((k &0x02 ) !=0 ) { - mbuf[j] |=0x01 ; - } - i--; -if (i >0 ) { - goto TCM_ID; + +while (1 ) { +if ((inw (dev->ioport[0 ] +0x1c ) &0x2000 ) ==0 ) +continue ; +outb (5 ,0x80 ); + val &=0x00ff ;/* get ID_STRING */ + val |=0x2000 ; + k =fun_scam (dev, &val); +if ((k &0x03 ) ==0 ) +break ; + mbuf[j] <<=0x01 ; + mbuf[j] &=0xfe ; +if ((k &0x02 ) !=0 ) + mbuf[j] |=0x01 ; + i--; +if (i >0 ) +continue ; + j++; + i =8 ; } - j++; - i =8 ; - goto TCM_ID; -TCM_5:/* isolation complete.. */ +/* isolation complete.. */ /* mbuf[32]=0; printk(" \n%x %x %x %s\n ",assignid_map,mbuf[0],mbuf[1],&mbuf[2]); */ i =15 ;
@@ -1091,33 +1082,33 @@ TCM_5: /* isolation complete.. */if ((j &0x20 ) !=0 ) {/* bit5=1:ID up to 7 */ i =7 ; } -if ((j &0x06 ) ==0 ) {/* IDvalid? */ - goto G2Q5; - } - k = mbuf[1 ]; -small_id: - m =1 ; - m <<= k; -if ((m & assignid_map) ==0 ) { - goto G2Q_QUIN; - } -if (k >0 ) { - k--; - goto small_id; - } -G2Q5:/* srch from max acceptable ID# */ - k = i;/* max acceptable ID# */ -G2Q_LP: - m =1 ; - m <<= k; -if ((m & assignid_map) ==0 ) { - goto G2Q_QUIN; +if ((j &0x06 ) !=0 ) {/* IDvalid? */ + k = mbuf[1 ]; +while (1 ) { + m =1 ; + m <<= k; +if ((m & assignid_map) ==0 ) +break ; +if (k >0 ) + k--; +else +break ; + } } -if (k >0 ) { - k--; - goto G2Q_LP; +if ((m & assignid_map) !=0 ) {/* srch from max acceptable ID# */ + k = i;/* max acceptable ID# */ +while (1 ) { + m =1 ; + m <<= k; +if ((m & assignid_map) ==0 ) +break ; +if (k >0 ) + k--; +else +break ; + } } -G2Q_QUIN:/* k=binID#, */ +/* k=binID#, */ assignid_map |= m;if (k <8 ) { quintet[0 ] =0x38 ;/* 1st dft ID<8 */
@@ -1136,8 +1127,7 @@ G2Q_QUIN: /* k=binID#, */ val |= m;fun_scam (dev, &val); - goto TCM_SYNC; - + } }static void is870 (struct atp_unit *dev,unsigned int wkport)
Signature · 1 line
Ondrej Zary
PATCH 18/34 atp870u: Introduce HW access wrappers
In reply to Ondrej ZaryIntroduce *_read? and *_write? wrappers to improve code readability. Also make sure that baseport is always initialized, not only for ATP880.
--- drivers/scsi/atp870u.c | 472 ++++++++++++++++++++++++++---------------------- 1 file changed, 252 insertions(+), 220 deletions(-)
drivers/scsi/atp870u.c +252 -220
@@ -44,6 +44,51 @@ static void send_s870(struct atp_unit *dev,unsigned char c);static void is885 (struct atp_unit *dev,unsigned int wkport,unsigned char c);static void tscam_885 (void ); +static inline void atp_writeb_base (struct atp_unit *atp,u8 reg,u8 val) +{ +outb (val, atp->baseport + reg); +} + +static inline void atp_writeb_io (struct atp_unit *atp,u8 channel,u8 reg,u8 val) +{ +outb (val, atp->ioport[channel] + reg); +} + +static inline void atp_writew_io (struct atp_unit *atp,u8 channel,u8 reg,u16 val) +{ +outw (val, atp->ioport[channel] + reg); +} + +static inline void atp_writeb_pci (struct atp_unit *atp,u8 channel,u8 reg,u8 val) +{ +outb (val, atp->pciport[channel] + reg); +} + +static inline void atp_writel_pci (struct atp_unit *atp,u8 channel,u8 reg,u32 val) +{ +outl (val, atp->pciport[channel] + reg); +} + +static inline u8 atp_readb_base (struct atp_unit *atp,u8 reg) +{ +return inb (atp->baseport + reg); +} + +static inline u8 atp_readb_io (struct atp_unit *atp,u8 channel,u8 reg) +{ +return inb (atp->ioport[channel] + reg); +} + +static inline u16 atp_readw_io (struct atp_unit *atp,u8 channel,u8 reg) +{ +return inw (atp->ioport[channel] + reg); +} + +static inline u8 atp_readb_pci (struct atp_unit *atp,u8 channel,u8 reg) +{ +return inb (atp->pciport[channel] + reg); +} +static irqreturn_t atp870u_intr_handle (int irq,void *dev_id) {unsigned long flags;
@@ -59,7 +104,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)struct atp_unit *dev = (struct atp_unit *)&host->hostdata;for (c =0 ; c <2 ; c++) { - j =inb (dev->ioport[c] +0x1f ); + j =atp_readb_io (dev, c,0x1f );if ((j &0x80 ) !=0 )break ; dev->in_int[c] =0 ;
@@ -70,29 +115,29 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)printk ("atp870u_intr_handle enter\n" );#endif dev->in_int[c] =1 ; - cmdp =inb (dev->ioport[c] +0x10 ); + cmdp =atp_readb_io (dev, c,0x10 );if (dev->working[c] !=0 ) {if (dev->dev_id ==ATP885_DEVID ) { -if ((inb (dev->ioport[c] +0x16 ) &0x80 ) ==0 ) -outb ((inb (dev->ioport[c] +0x16 ) |0x80 ), dev->ioport[c] +0x16 ); +if ((atp_readb_io (dev, c,0x16 ) &0x80 ) ==0 ) +atp_writeb_io (dev, c,0x16 , (atp_readb_io (dev, c,0x16 ) |0x80 )); } -if ((inb (dev->pciport[c]) &0x08 ) !=0 ) +if ((atp_readb_pci (dev, c,0x00 ) &0x08 ) !=0 ) {for (k=0 ; k <1000 ; k++) { -if ((inb (dev->pciport[c] +2 ) &0x08 ) ==0 ) +if ((atp_readb_pci (dev, c,2 ) &0x08 ) ==0 )break ; -if ((inb (dev->pciport[c] +2 ) &0x01 ) ==0 ) +if ((atp_readb_pci (dev, c,2 ) &0x01 ) ==0 )break ; } } -outb (0x00 , dev->pciport[c]); +atp_writeb_pci (dev, c,0 ,0x00 ); - i =inb (dev->ioport[c] +0x17 ); + i =atp_readb_io (dev, c,0x17 );if (dev->dev_id ==ATP885_DEVID ) -outb (0x06 , dev->pciport[c] +2 ); +atp_writeb_pci (dev, c,2 ,0x06 ); - target_id =inb (dev->ioport[c] +0x15 ); + target_id =atp_readb_io (dev, c,0x15 );/* * Remap wide devices onto id numbers
@@ -121,9 +166,9 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id) }if (dev->dev_id ==ATP885_DEVID ) { adrcnt =0 ; - ((unsigned char *) &adrcnt)[2 ] =inb (dev->ioport[c] +0x12 ); - ((unsigned char *) &adrcnt)[1 ] =inb (dev->ioport[c] +0x13 ); - ((unsigned char *) &adrcnt)[0 ] =inb (dev->ioport[c] +0x14 ); + ((unsigned char *) &adrcnt)[2 ] =atp_readb_io (dev, c,0x12 ); + ((unsigned char *) &adrcnt)[1 ] =atp_readb_io (dev, c,0x13 ); + ((unsigned char *) &adrcnt)[0 ] =atp_readb_io (dev, c,0x14 );if (dev->id[c][target_id].last_len != adrcnt) { k = dev->id[c][target_id].last_len;
@@ -140,10 +185,9 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)* Flip wide */ if (dev->wide_id[c] !=0 ) { -outb (0x01 , dev->ioport[c] +0x1b ); -while ((inb (dev->ioport[c] +0x1b ) &0x01 ) !=0x01 ) { -outb (0x01 , dev->ioport[c] +0x1b ); - } +atp_writeb_io (dev, c,0x1b ,0x01 ); +while ((atp_readb_io (dev, c,0x1b ) &0x01 ) !=0x01 ) +atp_writeb_io (dev, c,0x1b ,0x01 ); }/* * Issue more commands
@@ -178,15 +222,15 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id) dev->last_cmd[c] =0xff ; } adrcnt =0 ; - ((unsigned char *) &adrcnt)[2 ] =inb (dev->ioport[c] +0x12 ); - ((unsigned char *) &adrcnt)[1 ] =inb (dev->ioport[c] +0x13 ); - ((unsigned char *) &adrcnt)[0 ] =inb (dev->ioport[c] +0x14 ); + ((unsigned char *) &adrcnt)[2 ] =atp_readb_io (dev, c,0x12 ); + ((unsigned char *) &adrcnt)[1 ] =atp_readb_io (dev, c,0x13 ); + ((unsigned char *) &adrcnt)[0 ] =atp_readb_io (dev, c,0x14 ); k = dev->id[c][target_id].last_len; k -= adrcnt; dev->id[c][target_id].tran_len = k; dev->id[c][target_id].last_len = adrcnt; -outb (0x41 , dev->ioport[c] +0x10 ); -outb (0x08 , dev->ioport[c] +0x18 ); +atp_writeb_io (dev, c,0x10 ,0x41 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); dev->in_int[c] =0 ;return IRQ_HANDLED ; }
@@ -205,9 +249,9 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)printk (KERN_DEBUG "Device reselect\n" );#endif lun =0 ; -if (cmdp ==0x44 || i==0x80 ) { - lun =inb (dev->ioport[c] +0x1d ) &0x07 ; - }else { +if (cmdp ==0x44 || i ==0x80 ) + lun =atp_readb_io (dev, c,0x1d ) &0x07 ; +else {if ((dev->last_cmd[c] &0xf0 ) !=0x40 ) { dev->last_cmd[c] =0xff ; }
@@ -216,26 +260,26 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)printk ("cmdp = 0x41\n" );#endif adrcnt =0 ; - ((unsigned char *) &adrcnt)[2 ] =inb (dev->ioport[c] +0x12 ); - ((unsigned char *) &adrcnt)[1 ] =inb (dev->ioport[c] +0x13 ); - ((unsigned char *) &adrcnt)[0 ] =inb (dev->ioport[c] +0x14 ); + ((unsigned char *) &adrcnt)[2 ] =atp_readb_io (dev, c,0x12 ); + ((unsigned char *) &adrcnt)[1 ] =atp_readb_io (dev, c,0x13 ); + ((unsigned char *) &adrcnt)[0 ] =atp_readb_io (dev, c,0x14 ); k = dev->id[c][target_id].last_len; k -= adrcnt; dev->id[c][target_id].tran_len = k; dev->id[c][target_id].last_len = adrcnt; -outb (0x08 , dev->ioport[c] +0x18 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); dev->in_int[c] =0 ;return IRQ_HANDLED ; }else {#ifdef ED_DBGP printk ("cmdp != 0x41\n" );#endif -outb (0x46 , dev->ioport[c] +0x10 ); +atp_writeb_io (dev, c,0x10 ,0x46 ); dev->id[c][target_id].dirct =0x00 ; -outb (0x00 , dev->ioport[c] +0x12 ); -outb (0x00 , dev->ioport[c] +0x13 ); -outb (0x00 , dev->ioport[c] +0x14 ); -outb (0x08 , dev->ioport[c] +0x18 ); +atp_writeb_io (dev, c,0x12 ,0x00 ); +atp_writeb_io (dev, c,0x13 ,0x00 ); +atp_writeb_io (dev, c,0x14 ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); dev->in_int[c] =0 ;return IRQ_HANDLED ; }
@@ -244,12 +288,12 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id) dev->last_cmd[c] |=0x40 ; }if (dev->dev_id ==ATP885_DEVID ) { - j =inb (dev->baseport +0x29 ) &0xfe ; -outb (j, dev->baseport +0x29 ); + j =atp_readb_base (dev,0x29 ) &0xfe ; +atp_writeb_base (dev,0x29 , j); }else -outb (0x45 , dev->ioport[c] +0x10 ); +atp_writeb_io (dev, c,0x10 ,0x45 ); - target_id =inb (dev->ioport[c] +0x16 ); + target_id =atp_readb_io (dev, c,0x16 );/* * Remap wide identifiers */
@@ -259,7 +303,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id) target_id &=0x07 ; }if (dev->dev_id ==ATP885_DEVID ) -outb (0x45 , dev->ioport[c] +0x10 ); +atp_writeb_io (dev, c,0x10 ,0x45 ); workreq = dev->id[c][target_id].curr_req;#ifdef ED_DBGP scmd_printk (KERN_DEBUG , workreq,"CDB" );
@@ -268,16 +312,16 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)printk ("\n" );#endif -outb (lun, dev->ioport[c] +0x0f ); -outb (dev->id[c][target_id].devsp, dev->ioport[c] +0x11 ); +atp_writeb_io (dev, c,0x0f , lun); +atp_writeb_io (dev, c,0x11 , dev->id[c][target_id].devsp); adrcnt = dev->id[c][target_id].tran_len; k = dev->id[c][target_id].last_len; -outb (((unsigned char *) &k)[2 ], dev->ioport[c] +0x12 ); -outb (((unsigned char *) &k)[1 ], dev->ioport[c] +0x13 ); -outb (((unsigned char *) &k)[0 ], dev->ioport[c] +0x14 ); +atp_writeb_io (dev, c,0x12 , ((unsigned char *) &k)[2 ]); +atp_writeb_io (dev, c,0x13 , ((unsigned char *) &k)[1 ]); +atp_writeb_io (dev, c,0x14 , ((unsigned char *) &k)[0 ]);#ifdef ED_DBGP -printk ("k %x, k[0] 0x%x k[1] 0x%x k[2] 0x%x\n" , k,inb (dev->ioport[c] +0x14 ),inb (dev->ioport[c] +0x13 ),inb (dev->ioport[c] +0x12 )); +printk ("k %x, k[0] 0x%x k[1] 0x%x k[2] 0x%x\n" , k,atp_readb_io (dev, c,0x14 ),atp_readb_io (dev, c,0x13 ),atp_readb_io (dev, c,0x12 ));#endif /* Remap wide */ j = target_id;
@@ -286,30 +330,28 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id) }/* Add direction */ j |= dev->id[c][target_id].dirct; -outb (j, dev->ioport[c] +0x15 ); -outb (0x80 , dev->ioport[c] +0x16 ); +atp_writeb_io (dev, c,0x15 , j); +atp_writeb_io (dev, c,0x16 ,0x80 );/* enable 32 bit fifo transfer */ if (dev->dev_id ==ATP885_DEVID ) { - i=inb (dev->pciport[c] +1 ) &0xf3 ; + i =atp_readb_pci (dev, c,1 ) &0xf3 ;//j=workreq->cmnd[0]; if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) { i |=0x0c ; } -outb (i, dev->pciport[c] +1 ); +atp_writeb_pci (dev, c,1 , i); }else if ((dev->dev_id ==ATP880_DEVID1 ) || (dev->dev_id ==ATP880_DEVID2 ) ) { -if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) { -outb ((unsigned char ) ((inb (dev->ioport[c] -0x05 ) &0x3f ) |0xc0 ), dev->ioport[c] -0x05 );///minus 0x05??? - }else { -outb ((unsigned char ) (inb (dev->ioport[c] -0x05 ) &0x3f ), dev->ioport[c] -0x05 );///minus 0x05??? - } +if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) +atp_writeb_base (dev,0x3b , (atp_readb_base (dev,0x3b ) &0x3f ) |0xc0 ); +else +atp_writeb_base (dev,0x3b ,atp_readb_base (dev,0x3b ) &0x3f ); }else { -if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) { -outb ((unsigned char ) ((inb (dev->ioport[c] +0x3a ) &0xf3 ) |0x08 ), dev->ioport[c] +0x3a ); - }else { -outb ((unsigned char ) (inb (dev->ioport[c] +0x3a ) &0xf3 ), dev->ioport[c] +0x3a ); - } +if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) +atp_writeb_io (dev, c,0x3a , (atp_readb_io (dev, c,0x3a ) &0xf3 ) |0x08 ); +else +atp_writeb_io (dev, c,0x3a ,atp_readb_io (dev, c,0x3a ) &0xf3 ); } j =0 ; id =1 ;
@@ -320,12 +362,11 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)if ((id & dev->wide_id[c]) !=0 ) { j |=0x01 ; } -outb (j, dev->ioport[c] +0x1b ); -while ((inb (dev->ioport[c] +0x1b ) &0x01 ) != j) { -outb (j,dev->ioport[c] +0x1b ); - } +atp_writeb_io (dev, c,0x1b , j); +while ((atp_readb_io (dev, c,0x1b ) &0x01 ) != j) +atp_writeb_io (dev, c,0x1b , j);if (dev->id[c][target_id].last_len ==0 ) { -outb (0x08 , dev->ioport[c] +0x18 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); dev->in_int[c] =0 ;#ifdef ED_DBGP printk ("dev->id[c][target_id].last_len = 0\n" );
@@ -358,28 +399,28 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id) } } } -outl (dev->id[c][target_id].prdaddr, dev->pciport[c] +0x04 ); +atp_writel_pci (dev, c,0x04 , dev->id[c][target_id].prdaddr);#ifdef ED_DBGP printk ("dev->id[%d][%d].prdaddr 0x%8x\n" , c, target_id, dev->id[c][target_id].prdaddr);#endif if (dev->dev_id !=ATP885_DEVID ) { -outb (0x06 , dev->pciport[c] +2 ); -outb (0x00 , dev->pciport[c] +2 ); +atp_writeb_pci (dev, c,2 ,0x06 ); +atp_writeb_pci (dev, c,2 ,0x00 ); }/* * Check transfer direction */ if (dev->id[c][target_id].dirct !=0 ) { -outb (0x08 , dev->ioport[c] +0x18 ); -outb (0x01 , dev->pciport[c]); +atp_writeb_io (dev, c,0x18 ,0x08 ); +atp_writeb_pci (dev, c,0 ,0x01 ); dev->in_int[c] =0 ;#ifdef ED_DBGP printk ("status 0x80 return dirct != 0\n" );#endif return IRQ_HANDLED ; } -outb (0x08 , dev->ioport[c] +0x18 ); -outb (0x09 , dev->pciport[c]); +atp_writeb_io (dev, c,0x18 ,0x08 ); +atp_writeb_pci (dev, c,0 ,0x09 ); dev->in_int[c] =0 ;#ifdef ED_DBGP printk ("status 0x80 return dirct = 0\n" );
@@ -398,7 +439,7 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id) dev->last_cmd[c] =0xff ; }if (i ==0x16 ) { - workreq->result =inb (dev->ioport[c] +0x0f ); + workreq->result =atp_readb_io (dev, c,0x0f );if (((dev->r1f[c][target_id] &0x10 ) !=0 )&&(dev->dev_id==ATP885_DEVID )) {printk (KERN_WARNING "AEC67162 CRC ERROR !\n" ); workreq->result =0x02 ;
@@ -407,8 +448,8 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id) workreq->result =0x02 ;if (dev->dev_id ==ATP885_DEVID ) { - j =inb (dev->baseport +0x29 ) |0x01 ; -outb (j, dev->baseport +0x29 ); + j =atp_readb_base (dev,0x29 ) |0x01 ; +atp_writeb_base (dev,0x29 , j); }/* * Complete the command
@@ -430,10 +471,9 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)* Take it back wide */ if (dev->wide_id[c] !=0 ) { -outb (0x01 , dev->ioport[c] +0x1b ); -while ((inb (dev->ioport[c] +0x1b ) &0x01 ) !=0x01 ) { -outb (0x01 , dev->ioport[c] +0x1b ); - } +atp_writeb_io (dev, c,0x1b ,0x01 ); +while ((atp_readb_io (dev, c,0x1b ) &0x01 ) !=0x01 ) +atp_writeb_io (dev, c,0x1b ,0x01 ); }/* * If there is stuff to send and nothing going then send it
@@ -458,52 +498,51 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id) } i &=0x0f ;if (i ==0x09 ) { -outl (dev->id[c][target_id].prdaddr, dev->pciport[c] +4 ); -outb (0x06 , dev->pciport[c] +2 ); -outb (0x00 , dev->pciport[c] +2 ); -outb (0x41 , dev->ioport[c] +0x10 ); +atp_writel_pci (dev, c,4 , dev->id[c][target_id].prdaddr); +atp_writeb_pci (dev, c,2 ,0x06 ); +atp_writeb_pci (dev, c,2 ,0x00 ); +atp_writeb_io (dev, c,0x10 ,0x41 );if (dev->dev_id ==ATP885_DEVID ) { k = dev->id[c][target_id].last_len; -outb ((unsigned char ) (((unsigned char *) (&k))[2 ]), dev->ioport[c] +0x12 ); -outb ((unsigned char ) (((unsigned char *) (&k))[1 ]), dev->ioport[c] +0x13 ); -outb ((unsigned char ) (((unsigned char *) (&k))[0 ]), dev->ioport[c] +0x14 ); +atp_writeb_io (dev, c,0x12 , ((unsigned char *) (&k))[2 ]); +atp_writeb_io (dev, c,0x13 , ((unsigned char *) (&k))[1 ]); +atp_writeb_io (dev, c,0x14 , ((unsigned char *) (&k))[0 ]); dev->id[c][target_id].dirct =0x00 ; }else { dev->id[c][target_id].dirct =0x00 ; } -outb (0x08 , dev->ioport[c] +0x18 ); -outb (0x09 , dev->pciport[c]); +atp_writeb_io (dev, c,0x18 ,0x08 ); +atp_writeb_pci (dev, c,0 ,0x09 ); dev->in_int[c] =0 ;return IRQ_HANDLED ; }if (i ==0x08 ) { -outl (dev->id[c][target_id].prdaddr, dev->pciport[c] +4 ); -outb (0x06 , dev->pciport[c] +2 ); -outb (0x00 , dev->pciport[c] +2 ); -outb (0x41 , dev->ioport[c] +0x10 ); +atp_writel_pci (dev, c,4 , dev->id[c][target_id].prdaddr); +atp_writeb_pci (dev, c,2 ,0x06 ); +atp_writeb_pci (dev, c,2 ,0x00 ); +atp_writeb_io (dev, c,0x10 ,0x41 );if (dev->dev_id ==ATP885_DEVID ) { k = dev->id[c][target_id].last_len; -outb ((unsigned char ) (((unsigned char *) (&k))[2 ]), dev->ioport[c] +0x12 ); -outb ((unsigned char ) (((unsigned char *) (&k))[1 ]), dev->ioport[c] +0x13 ); -outb ((unsigned char ) (((unsigned char *) (&k))[0 ]), dev->ioport[c] +0x14 ); +atp_writeb_io (dev, c,0x12 , ((unsigned char *) (&k))[2 ]); +atp_writeb_io (dev, c,0x13 , ((unsigned char *) (&k))[1 ]); +atp_writeb_io (dev, c,0x14 , ((unsigned char *) (&k))[0 ]); } -outb ((unsigned char ) (inb (dev->ioport[c] +0x15 ) |0x20 ), dev->ioport[c] +0x15 ); +atp_writeb_io (dev, c,0x15 ,atp_readb_io (dev, c,0x15 ) |0x20 ); dev->id[c][target_id].dirct =0x20 ; -outb (0x08 , dev->ioport[c] +0x18 ); -outb (0x01 , dev->pciport[c]); +atp_writeb_io (dev, c,0x18 ,0x08 ); +atp_writeb_pci (dev, c,0 ,0x01 ); dev->in_int[c] =0 ;return IRQ_HANDLED ; } -if (i ==0x0a ) { -outb (0x30 , dev->ioport[c] +0x10 ); - }else { -outb (0x46 , dev->ioport[c] +0x10 ); - } +if (i ==0x0a ) +atp_writeb_io (dev, c,0x10 ,0x30 ); +else +atp_writeb_io (dev, c,0x10 ,0x46 ); dev->id[c][target_id].dirct =0x00 ; -outb (0x00 , dev->ioport[c] +0x12 ); -outb (0x00 , dev->ioport[c] +0x13 ); -outb (0x00 , dev->ioport[c] +0x14 ); -outb (0x08 , dev->ioport[c] +0x18 ); +atp_writeb_io (dev, c,0x12 ,0x00 ); +atp_writeb_io (dev, c,0x13 ,0x00 ); +atp_writeb_io (dev, c,0x14 ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); } dev->in_int[c] =0 ;
@@ -590,9 +629,9 @@ static int atp870u_queuecommand_lck(struct scsi_cmnd *req_p, } dev->quereq[c][dev->quend[c]] = req_p;#ifdef ED_DBGP -printk ("dev->ioport[c] = %x inb(dev->ioport[c] + 0x1c) = %x dev->in_int[%d] = %d dev->in_snd[%d] = %d\n" ,dev->ioport[c],inb (dev->ioport[c] +0x1c ),c,dev->in_int[c],c,dev->in_snd[c]); +printk ("dev->ioport[c] = %x atp_readb_io(dev, c, 0x1c) = %x dev->in_int[%d] = %d dev->in_snd[%d] = %d\n" ,dev->ioport[c],atp_readb_io (dev, c,0x1c ),c,dev->in_int[c],c,dev->in_snd[c]);#endif -if ((inb (dev->ioport[c] +0x1c ) ==0 ) && (dev->in_int[c] ==0 ) && (dev->in_snd[c] ==0 )) { +if ((atp_readb_io (dev, c,0x1c ) ==0 ) && (dev->in_int[c] ==0 ) && (dev->in_snd[c] ==0 )) {#ifdef ED_DBGP printk ("Call sent_s870(atp870u_queuecommand)\n" );#endif
@@ -666,7 +705,7 @@ static void send_s870(struct atp_unit *dev,unsigned char c) dev->id[c][scmd_id (workreq)].curr_req = workreq; dev->last_cmd[c] =scmd_id (workreq); } -if ((inb (dev->ioport[c] +0x1f ) &0xb0 ) !=0 ||inb (dev->ioport[c] +0x1c ) !=0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0xb0 ) !=0 ||atp_readb_io (dev, c,0x1c ) !=0 ) {#ifdef ED_DBGP printk ("Abort to Send\n" );#endif
@@ -685,8 +724,8 @@ static void send_s870(struct atp_unit *dev,unsigned char c) l =scsi_bufflen (workreq);if (dev->dev_id ==ATP885_DEVID ) { - j =inb (dev->baseport +0x29 ) &0xfe ; -outb (j, dev->baseport +0x29 ); + j =atp_readb_base (dev,0x29 ) &0xfe ; +atp_writeb_base (dev,0x29 , j); dev->r1f[c][scmd_id (workreq)] =0 ; }
@@ -709,9 +748,9 @@ static void send_s870(struct atp_unit *dev,unsigned char c)if ((w & dev->wide_id[c]) !=0 ) { j |=0x01 ; } -outb (j, dev->ioport[c] +0x1b ); -while ((inb (dev->ioport[c] +0x1b ) &0x01 ) != j) { -outb (j,dev->ioport[c] +0x1b ); +atp_writeb_io (dev, c,0x1b , j); +while ((atp_readb_io (dev, c,0x1b ) &0x01 ) != j) { +atp_writeb_pci (dev, c,0x1b , j);#ifdef ED_DBGP printk ("send_s870 while loop 1\n" );#endif
@@ -720,21 +759,19 @@ static void send_s870(struct atp_unit *dev,unsigned char c)* Write the command */ -outb (workreq->cmd_len, dev->ioport[c] +0x00 ); -outb (0x2c , dev->ioport[c] +0x01 ); -if (dev->dev_id ==ATP885_DEVID ) { -outb (0x7f , dev->ioport[c] +0x02 ); - }else { -outb (0xcf , dev->ioport[c] +0x02 ); - } -for (i =0 ; i < workreq->cmd_len; i++) { -outb (workreq->cmnd[i], dev->ioport[c] +0x03 + i); - } -outb (workreq->device->lun, dev->ioport[c] +0x0f ); +atp_writeb_io (dev, c,0x00 , workreq->cmd_len); +atp_writeb_io (dev, c,0x01 ,0x2c ); +if (dev->dev_id ==ATP885_DEVID ) +atp_writeb_io (dev, c,0x02 ,0x7f ); +else +atp_writeb_io (dev, c,0x02 ,0xcf ); +for (i =0 ; i < workreq->cmd_len; i++) +atp_writeb_io (dev, c,0x03 + i, workreq->cmnd[i]); +atp_writeb_io (dev, c,0x0f , workreq->device->lun);/* * Write the target */ -outb (dev->id[c][target_id].devsp, dev->ioport[c] +0x11 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][target_id].devsp);#ifdef ED_DBGP printk ("dev->id[%d][%d].devsp = %2x\n" ,c,target_id,dev->id[c][target_id].devsp);#endif
@@ -743,9 +780,9 @@ static void send_s870(struct atp_unit *dev,unsigned char c)/* * Write transfer size */ -outb ((unsigned char ) (((unsigned char *) (&l))[2 ]), dev->ioport[c] +0x12 ); -outb ((unsigned char ) (((unsigned char *) (&l))[1 ]), dev->ioport[c] +0x13 ); -outb ((unsigned char ) (((unsigned char *) (&l))[0 ]), dev->ioport[c] +0x14 ); +atp_writeb_io (dev, c,0x12 , ((unsigned char *) (&l))[2 ]); +atp_writeb_io (dev, c,0x13 , ((unsigned char *) (&l))[1 ]); +atp_writeb_io (dev, c,0x14 , ((unsigned char *) (&l))[0 ]); j = target_id; dev->id[c][j].last_len = l; dev->id[c][j].tran_len =0 ;
@@ -761,23 +798,21 @@ static void send_s870(struct atp_unit *dev,unsigned char c)/* * Check transfer direction */ -if (workreq->sc_data_direction ==DMA_TO_DEVICE ) { -outb ((unsigned char ) (j |0x20 ), dev->ioport[c] +0x15 ); - }else { -outb (j, dev->ioport[c] +0x15 ); - } -outb ((unsigned char ) (inb (dev->ioport[c] +0x16 ) |0x80 ), dev->ioport[c] +0x16 ); -outb (0x80 , dev->ioport[c] +0x16 ); +if (workreq->sc_data_direction ==DMA_TO_DEVICE ) +atp_writeb_io (dev, c,0x15 , j |0x20 ); +else +atp_writeb_io (dev, c,0x15 , j); +atp_writeb_io (dev, c,0x16 ,atp_readb_io (dev, c,0x16 ) |0x80 ); +atp_writeb_io (dev, c,0x16 ,0x80 ); dev->id[c][target_id].dirct =0 ;if (l ==0 ) { -if (inb (dev->ioport[c] +0x1c ) ==0 ) { +if (atp_readb_io (dev, c,0x1c ) ==0 ) {#ifdef ED_DBGP printk ("change SCSI_CMD_REG 0x08\n" );#endif -outb (0x08 , dev->ioport[c] +0x18 ); - }else { +atp_writeb_io (dev, c,0x18 ,0x08 ); + }else dev->last_cmd[c] |=0x40 ; - } dev->in_snd[c] =0 ;return ; }
@@ -821,36 +856,34 @@ static void send_s870(struct atp_unit *dev,unsigned char c)printk ("send_s870: prdaddr_2 0x%8x target_id %d\n" , dev->id[c][target_id].prdaddr,target_id);#endif dev->id[c][target_id].prdaddr = dev->id[c][target_id].prd_bus; -outl (dev->id[c][target_id].prdaddr, dev->pciport[c] +4 ); -outb (0x06 , dev->pciport[c] +2 ); -outb (0x00 , dev->pciport[c] +2 ); +atp_writel_pci (dev, c,4 , dev->id[c][target_id].prdaddr); +atp_writeb_pci (dev, c,2 ,0x06 ); +atp_writeb_pci (dev, c,2 ,0x00 );if (dev->dev_id ==ATP885_DEVID ) { - j =inb (dev->pciport[c] +1 ) &0xf3 ; + j =atp_readb_pci (dev, c,1 ) &0xf3 ;if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) { j |=0x0c ; } -outb (j, dev->pciport[c] +1 ); +atp_writeb_pci (dev, c,1 , j); }else if ((dev->dev_id ==ATP880_DEVID1 ) || (dev->dev_id ==ATP880_DEVID2 )) { -if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) { -outb ((unsigned char ) ((inb (dev->ioport[c] -0x05 ) &0x3f ) |0xc0 ), dev->ioport[c] -0x05 ); - }else { -outb ((unsigned char ) (inb (dev->ioport[c] -0x05 ) &0x3f ), dev->ioport[c] -0x05 ); - } +if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) +atp_writeb_base (dev,0x3b , (atp_readb_base (dev,0x3b ) &0x3f ) |0xc0 ); +else +atp_writeb_base (dev,0x3b ,atp_readb_base (dev,0x3b ) &0x3f ); }else { -if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) { -outb ((inb (dev->ioport[c] +0x3a ) &0xf3 ) |0x08 , dev->ioport[c] +0x3a ); - }else { -outb (inb (dev->ioport[c] +0x3a ) &0xf3 , dev->ioport[c] +0x3a ); - } +if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) +atp_writeb_io (dev, c,0x3a , (atp_readb_io (dev, c,0x3a ) &0xf3 ) |0x08 ); +else +atp_writeb_io (dev, c,0x3a ,atp_readb_io (dev, c,0x3a ) &0xf3 ); }if (workreq->sc_data_direction ==DMA_TO_DEVICE ) { dev->id[c][target_id].dirct =0x20 ; -if (inb (dev->ioport[c] +0x1c ) ==0 ) { -outb (0x08 , dev->ioport[c] +0x18 ); -outb (0x01 , dev->pciport[c]); +if (atp_readb_io (dev, c,0x1c ) ==0 ) { +atp_writeb_io (dev, c,0x18 ,0x08 ); +atp_writeb_pci (dev, c,0 ,0x01 );#ifdef ED_DBGP printk ("start DMA(to target)\n" );#endif
@@ -860,9 +893,9 @@ static void send_s870(struct atp_unit *dev,unsigned char c) dev->in_snd[c] =0 ;return ; } -if (inb (dev->ioport[c] +0x1c ) ==0 ) { -outb (0x08 , dev->ioport[c] +0x18 ); -outb (0x09 , dev->pciport[c]); +if (atp_readb_io (dev, c,0x1c ) ==0 ) { +atp_writeb_io (dev, c,0x18 ,0x08 ); +atp_writeb_pci (dev, c,0 ,0x09 );#ifdef ED_DBGP printk ("start DMA(to host)\n" );#endif
@@ -879,28 +912,28 @@ static unsigned char fun_scam(struct atp_unit *dev, unsigned short int *val)unsigned short int i, k;unsigned char j; -outw (*val, dev->ioport[0 ] +0x1c ); +atp_writew_io (dev,0 ,0x1c , *val);for (i =0 ; i <10 ; i++) {/* stable >= bus settle delay(400 ns) */ - k =inw (dev->ioport[0 ] +0x1c ); + k =atp_readw_io (dev,0 ,0x1c ); j = (unsigned char ) (k >>8 );if ((k &0x8000 ) !=0 )/* DB7 all release? */ i =0 ; } *val |=0x4000 ;/* assert DB6 */ -outw (*val, dev->ioport[0 ] +0x1c ); +atp_writew_io (dev,0 ,0x1c , *val); *val &=0xdfff ;/* assert DB5 */ -outw (*val, dev->ioport[0 ] +0x1c ); +atp_writew_io (dev,0 ,0x1c , *val);for (i =0 ; i <10 ; i++) {/* stable >= bus settle delay(400 ns) */ -if ((inw (dev->ioport[0 ] +0x1c ) &0x2000 ) !=0 )/* DB5 all release? */ +if ((atp_readw_io (dev,0 ,0x1c ) &0x2000 ) !=0 )/* DB5 all release? */ i =0 ; } *val |=0x8000 ;/* no DB4-0, assert DB7 */ *val &=0xe0ff ; -outw (*val, dev->ioport[0 ] +0x1c ); +atp_writew_io (dev,0 ,0x1c , *val); *val &=0xbfff ;/* release DB6 */ -outw (*val, dev->ioport[0 ] +0x1c ); +atp_writew_io (dev,0 ,0x1c , *val);for (i =0 ; i <10 ; i++) {/* stable >= bus settle delay(400 ns) */ -if ((inw (dev->ioport[0 ] +0x1c ) &0x4000 ) !=0 )/* DB6 all release? */ +if ((atp_readw_io (dev,0 ,0x1c ) &0x4000 ) !=0 )/* DB6 all release? */ i =0 ; }
@@ -926,9 +959,9 @@ static void tscam(struct Scsi_Host *host)} */ -outb (0x08 , dev->ioport[0 ] +1 ); -outb (0x7f , dev->ioport[0 ] +2 ); -outb (0x20 , dev->ioport[0 ] +0x11 ); +atp_writeb_io (dev,0 ,1 ,0x08 ); +atp_writeb_io (dev,0 ,2 ,0x7f ); +atp_writeb_io (dev,0 ,0x11 ,0x20 );if ((dev->scam_on &0x40 ) ==0 ) {return ;
@@ -941,13 +974,13 @@ static void tscam(struct Scsi_Host *host) j =8 ; } assignid_map = m; -outb (0x02 , dev->ioport[0 ] +0x02 );/* 2*2=4ms,3EH 2/32*3E=3.9ms */ -outb (0 , dev->ioport[0 ] +0x03 ); -outb (0 , dev->ioport[0 ] +0x04 ); -outb (0 , dev->ioport[0 ] +0x05 ); -outb (0 , dev->ioport[0 ] +0x06 ); -outb (0 , dev->ioport[0 ] +0x07 ); -outb (0 , dev->ioport[0 ] +0x08 ); +atp_writeb_io (dev,0 ,0x02 ,0x02 );/* 2*2=4ms,3EH 2/32*3E=3.9ms */ +atp_writeb_io (dev,0 ,0x03 ,0 ); +atp_writeb_io (dev,0 ,0x04 ,0 ); +atp_writeb_io (dev,0 ,0x05 ,0 ); +atp_writeb_io (dev,0 ,0x06 ,0 ); +atp_writeb_io (dev,0 ,0x07 ,0 ); +atp_writeb_io (dev,0 ,0x08 ,0 );for (i =0 ; i < j; i++) { m =1 ;
@@ -955,70 +988,69 @@ static void tscam(struct Scsi_Host *host)if ((m & assignid_map) !=0 ) {continue ; } -outb (0 , dev->ioport[0 ] +0x0f ); -outb (0 , dev->ioport[0 ] +0x12 ); -outb (0 , dev->ioport[0 ] +0x13 ); -outb (0 , dev->ioport[0 ] +0x14 ); +atp_writeb_io (dev,0 ,0x0f ,0 ); +atp_writeb_io (dev,0 ,0x12 ,0 ); +atp_writeb_io (dev,0 ,0x13 ,0 ); +atp_writeb_io (dev,0 ,0x14 ,0 );if (i >7 ) { k = (i &0x07 ) |0x40 ; }else { k = i; } -outb (k, dev->ioport[0 ] +0x15 ); -if (dev->chip_ver ==4 ) { -outb (0x01 , dev->ioport[0 ] +0x1b ); - }else { -outb (0x00 , dev->ioport[0 ] +0x1b ); - } +atp_writeb_io (dev,0 ,0x15 , k); +if (dev->chip_ver ==4 ) +atp_writeb_io (dev,0 ,0x1b ,0x01 ); +else +atp_writeb_io (dev,0 ,0x1b ,0x00 );do { -outb (0x09 , dev->ioport[0 ] +0x18 ); +atp_writeb_io (dev,0 ,0x18 ,0x09 ); -while ((inb (dev->ioport[0 ] +0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - k =inb (dev->ioport[0 ] +0x17 ); + k =atp_readb_io (dev,0 ,0x17 );if ((k ==0x85 ) || (k ==0x42 ))break ;if (k !=0x16 ) -outb (0x41 , dev->ioport[0 ] +0x10 ); +atp_writeb_io (dev,0 ,0x10 ,0x41 ); }while (k !=0x16 );if ((k ==0x85 ) || (k ==0x42 ))continue ; assignid_map |= m; } -outb (0x7f , dev->ioport[0 ] +0x02 ); -outb (0x02 , dev->ioport[0 ] +0x1b ); +atp_writeb_io (dev,0 ,0x02 ,0x7f ); +atp_writeb_io (dev,0 ,0x1b ,0x02 );outb (0 ,0x80 ); val =0x0080 ;/* bsy */ -outw (val, dev->ioport[0 ] +0x1c ); +atp_writew_io (dev,0 ,0x1c , val); val |=0x0040 ;/* sel */ -outw (val, dev->ioport[0 ] +0x1c ); +atp_writew_io (dev,0 ,0x1c , val); val |=0x0004 ;/* msg */ -outw (val, dev->ioport[0 ] +0x1c ); +atp_writew_io (dev,0 ,0x1c , val);inb (0x80 );/* 2 deskew delay(45ns*2=90ns) */ val &=0x007f ;/* no bsy */ -outw (val, dev->ioport[0 ] +0x1c ); +atp_writew_io (dev,0 ,0x1c , val);mdelay (128 ); val &=0x00fb ;/* after 1ms no msg */ -outw (val, dev->ioport[0 ] +0x1c ); -while ((inb (dev->ioport[0 ] +0x1c ) &0x04 ) !=0 ) +atp_writew_io (dev,0 ,0x1c , val); +while ((atp_readb_io (dev,0 ,0x1c ) &0x04 ) !=0 ) ;outb (1 ,0x80 );udelay (100 );for (n =0 ; n <0x30000 ; n++) -if ((inb (dev->ioport[0 ] +0x1c ) &0x80 ) !=0 )/* bsy ? */ +if ((atp_readb_io (dev,0 ,0x1c ) &0x80 ) !=0 )/* bsy ? */ break ;if (n <0x30000 )for (n =0 ; n <0x30000 ; n++) -if ((inb (dev->ioport[0 ] +0x1c ) &0x81 ) ==0x0081 ) { +if ((atp_readb_io (dev,0 ,0x1c ) &0x81 ) ==0x0081 ) {inb (0x80 ); val |=0x8003 ;/* io,cd,db7 */ -outw (val, dev->ioport[0 ] +0x1c ); +atp_writew_io (dev,0 ,0x1c , val);inb (0x80 ); val &=0x00bf ;/* no sel */ -outw (val, dev->ioport[0 ] +0x1c ); +atp_writew_io (dev,0 ,0x1c , val);outb (2 ,0x80 );break ; }
@@ -1033,14 +1065,14 @@ static void tscam(struct Scsi_Host *host)*/ mdelay (2 );udelay (48 ); -if ((inb (dev->ioport[0 ] +0x1c ) &0x80 ) ==0x00 ) {/* bsy ? */ -outw (0 , dev->ioport[0 ] +0x1c ); -outb (0 , dev->ioport[0 ] +0x1b ); -outb (0 , dev->ioport[0 ] +0x15 ); -outb (0x09 , dev->ioport[0 ] +0x18 ); -while ((inb (dev->ioport[0 ] +0x1f ) &0x80 ) ==0 ) +if ((atp_readb_io (dev,0 ,0x1c ) &0x80 ) ==0x00 ) {/* bsy ? */ +atp_writew_io (dev,0 ,0x1c ,0 ); +atp_writeb_io (dev,0 ,0x1b ,0 ); +atp_writeb_io (dev,0 ,0x15 ,0 ); +atp_writeb_io (dev,0 ,0x18 ,0x09 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 )cpu_relax (); -inb (dev->ioport[0 ] +0x17 ); +atp_readb_io (dev,0 ,0x17 );return ; } val &=0x00ff ;/* synchronization */
@@ -1055,7 +1087,7 @@ static void tscam(struct Scsi_Host *host) j =0 ;while (1 ) { -if ((inw (dev->ioport[0 ] +0x1c ) &0x2000 ) ==0 ) +if ((atp_readw_io (dev,0 ,0x1c ) &0x2000 ) ==0 )continue ;outb (5 ,0x80 ); val &=0x00ff ;/* get ID_STRING */
@@ -2232,6 +2264,7 @@ static int atp870u_probe(struct pci_dev *pdev, const struct pci_device_id *ent) } base_io =pci_resource_start (pdev,0 ); base_io &=0xfffffff8 ; + atpdev->baseport = base_io;if ((ent->device ==ATP880_DEVID1 )||(ent->device ==ATP880_DEVID2 )) { atpdev->chip_ver = pdev->revision;
@@ -2356,7 +2389,6 @@ flash_ok_880: atpdev->pdev = pdev; atpdev->dev_id = ent->device; - atpdev->baseport = base_io; atpdev->ioport[0 ] = base_io +0x80 ; atpdev->ioport[1 ] = base_io +0xc0 ; atpdev->pciport[0 ] = base_io +0x40 ;
@@ -2651,12 +2683,12 @@ static int atp870u_abort(struct scsi_cmnd * SCpnt)printk ("working=%x last_cmd=%x " , dev->working[c], dev->last_cmd[c]);printk (" quhdu=%x quendu=%x " , dev->quhd[c], dev->quend[c]);for (j =0 ; j <0x18 ; j++) { -printk (" r%2x=%2x" , j,inb (dev->ioport[c] + j)); +printk (" r%2x=%2x" , j,atp_readb_io (dev, c, j)); } -printk (" r1c=%2x" ,inb (dev->ioport[c] +0x1c )); -printk (" r1f=%2x in_snd=%2x " ,inb (dev->ioport[c] +0x1f ), dev->in_snd[c]); -printk (" d00=%2x" ,inb (dev->pciport[c])); -printk (" d02=%2x" ,inb (dev->pciport[c] +0x02 )); +printk (" r1c=%2x" ,atp_readb_io (dev, c,0x1c )); +printk (" r1f=%2x in_snd=%2x " ,atp_readb_io (dev, c,0x1f ), dev->in_snd[c]); +printk (" d00=%2x" ,atp_readb_pci (dev, c,0x00 )); +printk (" d02=%2x" ,atp_readb_pci (dev, c,0x02 ));for (j=0 ;j<16 ;j++) {if (dev->id[c][j].curr_req !=NULL ) { workrequ = dev->id[c][j].curr_req;
Signature · 1 line
Ondrej Zary
PATCH 19/34 atp870u: Convert is870() to use wrappers
In reply to Ondrej Zary--- drivers/scsi/atp870u.c | 276 ++++++++++++++++++++++++------------------------ 1 file changed, 138 insertions(+), 138 deletions(-)
drivers/scsi/atp870u.c +138 -138
@@ -1162,7 +1162,7 @@ static void tscam(struct Scsi_Host *host) } } -static void is870 (struct atp_unit *dev,unsigned int wkport) +static void is870 (struct atp_unit *dev) {unsigned char i, j, k, rmb, n;unsigned short int m;
@@ -1174,7 +1174,7 @@ static void is870(struct atp_unit *dev, unsigned int wkport)static unsigned char synw[6 ] = {0x80 ,1 ,3 ,1 ,0x0c ,0x07 };static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 }; -outb ((unsigned char ) (inb (wkport +0x3a ) |0x10 ), wkport +0x3a ); +atp_writeb_io (dev,0 ,0x3a ,atp_readb_io (dev,0 ,0x3a ) |0x10 );for (i =0 ; i <16 ; i++) {if ((dev->chip_ver !=4 ) && (i >7 )) {
@@ -1190,104 +1190,104 @@ static void is870(struct atp_unit *dev, unsigned int wkport)continue ; }if (dev->chip_ver ==4 ) { -outb (0x01 , wkport +0x1b ); +atp_writeb_io (dev,0 ,0x1b ,0x01 ); }else { -outb (0x00 , wkport +0x1b ); - } -outb (0x08 , wkport +1 ); -outb (0x7f , wkport +2 ); -outb (satn[0 ], wkport +3 ); -outb (satn[1 ], wkport +4 ); -outb (satn[2 ], wkport +5 ); -outb (satn[3 ], wkport +6 ); -outb (satn[4 ], wkport +7 ); -outb (satn[5 ], wkport +8 ); -outb (0 , wkport +0x0f ); -outb (dev->id[0 ][i].devsp, wkport +0x11 ); -outb (0 , wkport +0x12 ); -outb (satn[6 ], wkport +0x13 ); -outb (satn[7 ], wkport +0x14 ); +atp_writeb_io (dev,0 ,0x1b ,0x00 ); + } +atp_writeb_io (dev,0 ,1 ,0x08 ); +atp_writeb_io (dev,0 ,2 ,0x7f ); +atp_writeb_io (dev,0 ,3 , satn[0 ]); +atp_writeb_io (dev,0 ,4 , satn[1 ]); +atp_writeb_io (dev,0 ,5 , satn[2 ]); +atp_writeb_io (dev,0 ,6 , satn[3 ]); +atp_writeb_io (dev,0 ,7 , satn[4 ]); +atp_writeb_io (dev,0 ,8 , satn[5 ]); +atp_writeb_io (dev,0 ,0x0f ,0 ); +atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); +atp_writeb_io (dev,0 ,0x12 ,0 ); +atp_writeb_io (dev,0 ,0x13 , satn[6 ]); +atp_writeb_io (dev,0 ,0x14 , satn[7 ]); j = i;if ((j &0x08 ) !=0 ) { j = (j &0x07 ) |0x40 ; } -outb (j, wkport +0x15 ); -outb (satn[8 ], wkport +0x18 ); +atp_writeb_io (dev,0 ,0x15 , j); +atp_writeb_io (dev,0 ,0x18 , satn[8 ]); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (inb (wkport +0x17 ) !=0x11 &&inb (wkport +0x17 ) !=0x8e ) +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ; -while (inb (wkport +0x17 ) !=0x8e ) +while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); dev->active_id[0 ] |= m; -outb (0x30 , wkport +0x10 ); -outb (0x00 , wkport +0x04 ); +atp_writeb_io (dev,0 ,0x10 ,0x30 ); +atp_writeb_io (dev,0 ,0x04 ,0x00 ); phase_cmd: -outb (0x08 , wkport +0x18 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev,0 ,0x18 ,0x08 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x17 ); + j =atp_readb_io (dev,0 ,0x17 );if (j !=0x16 ) { -outb (0x41 , wkport +0x10 ); +atp_writeb_io (dev,0 ,0x10 ,0x41 ); goto phase_cmd; } sel_ok: -outb (inqd[0 ], wkport +3 ); -outb (inqd[1 ], wkport +4 ); -outb (inqd[2 ], wkport +5 ); -outb (inqd[3 ], wkport +6 ); -outb (inqd[4 ], wkport +7 ); -outb (inqd[5 ], wkport +8 ); -outb (0 , wkport +0x0f ); -outb (dev->id[0 ][i].devsp, wkport +0x11 ); -outb (0 , wkport +0x12 ); -outb (inqd[6 ], wkport +0x13 ); -outb (inqd[7 ], wkport +0x14 ); -outb (inqd[8 ], wkport +0x18 ); +atp_writeb_io (dev,0 ,3 , inqd[0 ]); +atp_writeb_io (dev,0 ,4 , inqd[1 ]); +atp_writeb_io (dev,0 ,5 , inqd[2 ]); +atp_writeb_io (dev,0 ,6 , inqd[3 ]); +atp_writeb_io (dev,0 ,7 , inqd[4 ]); +atp_writeb_io (dev,0 ,8 , inqd[5 ]); +atp_writeb_io (dev,0 ,0x0f ,0 ); +atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); +atp_writeb_io (dev,0 ,0x12 ,0 ); +atp_writeb_io (dev,0 ,0x13 , inqd[6 ]); +atp_writeb_io (dev,0 ,0x14 , inqd[7 ]); +atp_writeb_io (dev,0 ,0x18 , inqd[8 ]); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (inb (wkport +0x17 ) !=0x11 &&inb (wkport +0x17 ) !=0x8e ) +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ; -while (inb (wkport +0x17 ) !=0x8e ) +while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax ();if (dev->chip_ver ==4 ) -outb (0x00 , wkport +0x1b ); +atp_writeb_io (dev,0 ,0x1b ,0x00 ); -outb (0x08 , wkport +0x18 ); +atp_writeb_io (dev,0 ,0x18 ,0x08 ); j =0 ; rd_inq_data: - k =inb (wkport +0x1f ); + k =atp_readb_io (dev,0 ,0x1f );if ((k &0x01 ) !=0 ) { - mbuf[j++] =inb (wkport +0x19 ); + mbuf[j++] =atp_readb_io (dev,0 ,0x19 ); goto rd_inq_data; }if ((k &0x80 ) ==0 ) { goto rd_inq_data; } - j =inb (wkport +0x17 ); + j =atp_readb_io (dev,0 ,0x17 );if (j ==0x16 ) { goto inq_ok; } -outb (0x46 , wkport +0x10 ); -outb (0 , wkport +0x12 ); -outb (0 , wkport +0x13 ); -outb (0 , wkport +0x14 ); -outb (0x08 , wkport +0x18 ); +atp_writeb_io (dev,0 ,0x10 ,0x46 ); +atp_writeb_io (dev,0 ,0x12 ,0 ); +atp_writeb_io (dev,0 ,0x13 ,0 ); +atp_writeb_io (dev,0 ,0x14 ,0 ); +atp_writeb_io (dev,0 ,0x18 ,0x08 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (inb (wkport +0x17 ) !=0x16 ) { +if (atp_readb_io (dev,0 ,0x17 ) !=0x16 ) { goto sel_ok; } inq_ok:
@@ -1305,43 +1305,43 @@ inq_ok:if ((dev->global_map[0 ] &0x20 ) ==0 ) { goto not_wide; } -outb (0x01 , wkport +0x1b ); -outb (satn[0 ], wkport +3 ); -outb (satn[1 ], wkport +4 ); -outb (satn[2 ], wkport +5 ); -outb (satn[3 ], wkport +6 ); -outb (satn[4 ], wkport +7 ); -outb (satn[5 ], wkport +8 ); -outb (0 , wkport +0x0f ); -outb (dev->id[0 ][i].devsp, wkport +0x11 ); -outb (0 , wkport +0x12 ); -outb (satn[6 ], wkport +0x13 ); -outb (satn[7 ], wkport +0x14 ); -outb (satn[8 ], wkport +0x18 ); +atp_writeb_io (dev,0 ,0x1b ,0x01 ); +atp_writeb_io (dev,0 ,3 , satn[0 ]); +atp_writeb_io (dev,0 ,4 , satn[1 ]); +atp_writeb_io (dev,0 ,5 , satn[2 ]); +atp_writeb_io (dev,0 ,6 , satn[3 ]); +atp_writeb_io (dev,0 ,7 , satn[4 ]); +atp_writeb_io (dev,0 ,8 , satn[5 ]); +atp_writeb_io (dev,0 ,0x0f ,0 ); +atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); +atp_writeb_io (dev,0 ,0x12 ,0 ); +atp_writeb_io (dev,0 ,0x13 , satn[6 ]); +atp_writeb_io (dev,0 ,0x14 , satn[7 ]); +atp_writeb_io (dev,0 ,0x18 , satn[8 ]); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (inb (wkport +0x17 ) !=0x11 &&inb (wkport +0x17 ) !=0x8e ) +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ; -while (inb (wkport +0x17 ) !=0x8e ) +while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); try_wide: j =0 ; -outb (0x05 , wkport +0x14 ); -outb (0x20 , wkport +0x18 ); +atp_writeb_io (dev,0 ,0x14 ,0x05 ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x1f ) &0x01 ) !=0 ) -outb (wide[j++], wkport +0x19 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev,0 ,0x19 , wide[j++]); } -while ((inb (wkport +0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x17 ) &0x0f ; + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1353,12 +1353,12 @@ try_wide: }continue ; widep_out: -outb (0x20 , wkport +0x18 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x1f ) &0x01 ) !=0 ) -outb (0 , wkport +0x19 ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev,0 ,0x19 ,0 ); } - j =inb (wkport +0x17 ) &0x0f ; + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1370,19 +1370,19 @@ widep_out: }continue ; widep_in: -outb (0xff , wkport +0x14 ); -outb (0x20 , wkport +0x18 ); +atp_writeb_io (dev,0 ,0x14 ,0xff ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); k =0 ; widep_in1: - j =inb (wkport +0x1f ); + j =atp_readb_io (dev,0 ,0x1f );if ((j &0x01 ) !=0 ) { - mbuf[k++] =inb (wkport +0x19 ); + mbuf[k++] =atp_readb_io (dev,0 ,0x19 ); goto widep_in1; }if ((j &0x80 ) ==0x00 ) { goto widep_in1; } - j =inb (wkport +0x17 ) &0x0f ; + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1394,14 +1394,14 @@ widep_in1: }continue ; widep_cmd: -outb (0x30 , wkport +0x10 ); -outb (0x00 , wkport +0x14 ); -outb (0x08 , wkport +0x18 ); - -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev,0 ,0x10 ,0x30 ); +atp_writeb_io (dev,0 ,0x14 ,0x00 ); +atp_writeb_io (dev,0 ,0x18 ,0x08 ); + +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x17 ); + j =atp_readb_io (dev,0 ,0x17 );if (j !=0x16 ) {if (j ==0x4e ) { goto widep_out;
@@ -1433,52 +1433,52 @@ set_sync:if ((m & dev->wide_id[0 ]) !=0 ) { j |=0x01 ; } -outb (j, wkport +0x1b ); -outb (satn[0 ], wkport +3 ); -outb (satn[1 ], wkport +4 ); -outb (satn[2 ], wkport +5 ); -outb (satn[3 ], wkport +6 ); -outb (satn[4 ], wkport +7 ); -outb (satn[5 ], wkport +8 ); -outb (0 , wkport +0x0f ); -outb (dev->id[0 ][i].devsp, wkport +0x11 ); -outb (0 , wkport +0x12 ); -outb (satn[6 ], wkport +0x13 ); -outb (satn[7 ], wkport +0x14 ); -outb (satn[8 ], wkport +0x18 ); +atp_writeb_io (dev,0 ,0x1b , j); +atp_writeb_io (dev,0 ,3 , satn[0 ]); +atp_writeb_io (dev,0 ,4 , satn[1 ]); +atp_writeb_io (dev,0 ,5 , satn[2 ]); +atp_writeb_io (dev,0 ,6 , satn[3 ]); +atp_writeb_io (dev,0 ,7 , satn[4 ]); +atp_writeb_io (dev,0 ,8 , satn[5 ]); +atp_writeb_io (dev,0 ,0x0f ,0 ); +atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); +atp_writeb_io (dev,0 ,0x12 ,0 ); +atp_writeb_io (dev,0 ,0x13 , satn[6 ]); +atp_writeb_io (dev,0 ,0x14 , satn[7 ]); +atp_writeb_io (dev,0 ,0x18 , satn[8 ]); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (inb (wkport +0x17 ) !=0x11 &&inb (wkport +0x17 ) !=0x8e ) +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ; -while (inb (wkport +0x17 ) !=0x8e ) +while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); try_sync: j =0 ; -outb (0x06 , wkport +0x14 ); -outb (0x20 , wkport +0x18 ); +atp_writeb_io (dev,0 ,0x14 ,0x06 ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x1f ) &0x01 ) !=0 ) { +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) {if ((m & dev->wide_id[0 ]) !=0 ) { -outb (synw[j++], wkport +0x19 ); +atp_writeb_io (dev,0 ,0x19 , synw[j++]); }else {if ((m & dev->ultra_map[0 ]) !=0 ) { -outb (synu[j++], wkport +0x19 ); +atp_writeb_io (dev,0 ,0x19 , synu[j++]); }else { -outb (synn[j++], wkport +0x19 ); +atp_writeb_io (dev,0 ,0x19 , synn[j++]); } } } } -while ((inb (wkport +0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x17 ) &0x0f ; + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto phase_ins; }
@@ -1490,12 +1490,12 @@ try_sync: }continue ; phase_outs: -outb (0x20 , wkport +0x18 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) { -if ((inb (wkport +0x1f ) &0x01 ) !=0x00 ) -outb (0x00 , wkport +0x19 ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) { +if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0x00 ) +atp_writeb_io (dev,0 ,0x19 ,0x00 ); } - j =inb (wkport +0x17 ); + j =atp_readb_io (dev,0 ,0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -1511,23 +1511,23 @@ phase_outs: }continue ; phase_ins: -outb (0xff , wkport +0x14 ); -outb (0x20 , wkport +0x18 ); +atp_writeb_io (dev,0 ,0x14 ,0xff ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); k =0 ; phase_ins1: - j =inb (wkport +0x1f ); + j =atp_readb_io (dev,0 ,0x1f );if ((j &0x01 ) !=0x00 ) { - mbuf[k++] =inb (wkport +0x19 ); + mbuf[k++] =atp_readb_io (dev,0 ,0x19 ); goto phase_ins1; }if ((j &0x80 ) ==0x00 ) { goto phase_ins1; } -while ((inb (wkport +0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x17 ); + j =atp_readb_io (dev,0 ,0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -1543,15 +1543,15 @@ phase_ins1: }continue ; phase_cmds: -outb (0x30 , wkport +0x10 ); +atp_writeb_io (dev,0 ,0x10 ,0x30 ); tar_dcons: -outb (0x00 , wkport +0x14 ); -outb (0x08 , wkport +0x18 ); +atp_writeb_io (dev,0 ,0x14 ,0x00 ); +atp_writeb_io (dev,0 ,0x18 ,0x08 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x17 ); + j =atp_readb_io (dev,0 ,0x17 );if (j !=0x16 ) {continue ; }
@@ -1591,7 +1591,7 @@ tar_dcons: set_syn_ok: dev->id[0 ][i].devsp = (dev->id[0 ][i].devsp &0x0f ) | j; } -outb ((unsigned char ) (inb (wkport +0x3a ) &0xef ), wkport +0x3a ); +atp_writeb_io (dev,0 ,0x3a ,atp_readb_io (dev,0 ,0x3a ) &0xef ); }static void is880 (struct atp_unit *dev,unsigned int wkport)
@@ -2605,7 +2605,7 @@ flash_ok_885:outb (0x20 , base_io +0x11 );tscam (shpnt); -is870 (p, base_io); +is870 (p);outb ((inb (base_io +0x3a ) &0xef ), base_io +0x3a );outb ((inb (base_io +0x3b ) |0x20 ), base_io +0x3b );if (atpdev->chip_ver ==4 )
Signature · 1 line
Ondrej Zary
PATCH 20/34 atp870u: Convert is880() to use wrappers
In reply to Ondrej ZarySubtract 0x40 to use _io access wrappers.
Now it's obvious that is870() and is880() are very similar.
--- drivers/scsi/atp870u.c | 352 ++++++++++++++++++++++++------------------------ 1 file changed, 176 insertions(+), 176 deletions(-)
drivers/scsi/atp870u.c +176 -176
@@ -1594,7 +1594,7 @@ set_syn_ok:atp_writeb_io (dev,0 ,0x3a ,atp_readb_io (dev,0 ,0x3a ) &0xef ); } -static void is880 (struct atp_unit *dev,unsigned int wkport) +static void is880 (struct atp_unit *dev) {unsigned char i, j, k, rmb, n, lvdmode;unsigned short int m;
@@ -1608,7 +1608,7 @@ static void is880(struct atp_unit *dev, unsigned int wkport)static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 };static unsigned char u3[9 ] = {0x80 ,1 ,6 ,4 ,0x09 ,00 ,0x0e ,0x01 ,0x02 }; - lvdmode =inb (wkport +0x3f ) &0x40 ; + lvdmode =atp_readb_base (dev,0x3f ) &0x40 ;for (i =0 ; i <16 ; i++) { m =1 ;
@@ -1620,100 +1620,100 @@ static void is880(struct atp_unit *dev, unsigned int wkport)printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[0 ]);continue ; } -outb (0x01 , wkport +0x5b ); -outb (0x08 , wkport +0x41 ); -outb (0x7f , wkport +0x42 ); -outb (satn[0 ], wkport +0x43 ); -outb (satn[1 ], wkport +0x44 ); -outb (satn[2 ], wkport +0x45 ); -outb (satn[3 ], wkport +0x46 ); -outb (satn[4 ], wkport +0x47 ); -outb (satn[5 ], wkport +0x48 ); -outb (0 , wkport +0x4f ); -outb (dev->id[0 ][i].devsp, wkport +0x51 ); -outb (0 , wkport +0x52 ); -outb (satn[6 ], wkport +0x53 ); -outb (satn[7 ], wkport +0x54 ); +atp_writeb_io (dev,0 ,0x1b ,0x01 ); +atp_writeb_io (dev,0 ,1 ,0x08 ); +atp_writeb_io (dev,0 ,2 ,0x7f ); +atp_writeb_io (dev,0 ,3 , satn[0 ]); +atp_writeb_io (dev,0 ,4 , satn[1 ]); +atp_writeb_io (dev,0 ,5 , satn[2 ]); +atp_writeb_io (dev,0 ,6 , satn[3 ]); +atp_writeb_io (dev,0 ,7 , satn[4 ]); +atp_writeb_io (dev,0 ,8 , satn[5 ]); +atp_writeb_io (dev,0 ,0x0f ,0 ); +atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); +atp_writeb_io (dev,0 ,0x12 ,0 ); +atp_writeb_io (dev,0 ,0x13 , satn[6 ]); +atp_writeb_io (dev,0 ,0x14 , satn[7 ]); j = i;if ((j &0x08 ) !=0 ) { j = (j &0x07 ) |0x40 ; } -outb (j, wkport +0x55 ); -outb (satn[8 ], wkport +0x58 ); +atp_writeb_io (dev,0 ,0x15 , j); +atp_writeb_io (dev,0 ,0x18 , satn[8 ]); -while ((inb (wkport +0x5f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (inb (wkport +0x57 ) !=0x11 &&inb (wkport +0x57 ) !=0x8e ) +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ; -while (inb (wkport +0x57 ) !=0x8e ) +while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); dev->active_id[0 ] |= m; -outb (0x30 , wkport +0x50 ); -outb (0x00 , wkport +0x54 ); +atp_writeb_io (dev,0 ,0x10 ,0x30 ); +atp_writeb_io (dev,0 ,0x14 ,0x00 ); phase_cmd: -outb (0x08 , wkport +0x58 ); +atp_writeb_io (dev,0 ,0x18 ,0x08 ); -while ((inb (wkport +0x5f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x57 ); + j =atp_readb_io (dev,0 ,0x17 );if (j !=0x16 ) { -outb (0x41 , wkport +0x50 ); +atp_writeb_io (dev,0 ,0x10 ,0x41 ); goto phase_cmd; } sel_ok: -outb (inqd[0 ], wkport +0x43 ); -outb (inqd[1 ], wkport +0x44 ); -outb (inqd[2 ], wkport +0x45 ); -outb (inqd[3 ], wkport +0x46 ); -outb (inqd[4 ], wkport +0x47 ); -outb (inqd[5 ], wkport +0x48 ); -outb (0 , wkport +0x4f ); -outb (dev->id[0 ][i].devsp, wkport +0x51 ); -outb (0 , wkport +0x52 ); -outb (inqd[6 ], wkport +0x53 ); -outb (inqd[7 ], wkport +0x54 ); -outb (inqd[8 ], wkport +0x58 ); +atp_writeb_io (dev,0 ,3 , inqd[0 ]); +atp_writeb_io (dev,0 ,4 , inqd[1 ]); +atp_writeb_io (dev,0 ,5 , inqd[2 ]); +atp_writeb_io (dev,0 ,6 , inqd[3 ]); +atp_writeb_io (dev,0 ,7 , inqd[4 ]); +atp_writeb_io (dev,0 ,8 , inqd[5 ]); +atp_writeb_io (dev,0 ,0x0f ,0 ); +atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); +atp_writeb_io (dev,0 ,0x12 ,0 ); +atp_writeb_io (dev,0 ,0x13 , inqd[6 ]); +atp_writeb_io (dev,0 ,0x14 , inqd[7 ]); +atp_writeb_io (dev,0 ,0x18 , inqd[8 ]); -while ((inb (wkport +0x5f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (inb (wkport +0x57 ) !=0x11 &&inb (wkport +0x57 ) !=0x8e ) +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ; -while (inb (wkport +0x57 ) !=0x8e ) +while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); -outb (0x00 , wkport +0x5b ); -outb (0x08 , wkport +0x58 ); +atp_writeb_io (dev,0 ,0x1b ,0x00 ); +atp_writeb_io (dev,0 ,0x18 ,0x08 ); j =0 ; rd_inq_data: - k =inb (wkport +0x5f ); + k =atp_readb_io (dev,0 ,0x1f );if ((k &0x01 ) !=0 ) { - mbuf[j++] =inb (wkport +0x59 ); + mbuf[j++] =atp_readb_io (dev,0 ,0x19 ); goto rd_inq_data; }if ((k &0x80 ) ==0 ) { goto rd_inq_data; } - j =inb (wkport +0x57 ); + j =atp_readb_io (dev,0 ,0x17 );if (j ==0x16 ) { goto inq_ok; } -outb (0x46 , wkport +0x50 ); -outb (0 , wkport +0x52 ); -outb (0 , wkport +0x53 ); -outb (0 , wkport +0x54 ); -outb (0x08 , wkport +0x58 ); -while ((inb (wkport +0x5f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev,0 ,0x10 ,0x46 ); +atp_writeb_io (dev,0 ,0x12 ,0 ); +atp_writeb_io (dev,0 ,0x13 ,0 ); +atp_writeb_io (dev,0 ,0x14 ,0 ); +atp_writeb_io (dev,0 ,0x18 ,0x08 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (inb (wkport +0x57 ) !=0x16 ) +if (atp_readb_io (dev,0 ,0x17 ) !=0x16 ) goto sel_ok; inq_ok:
@@ -1736,43 +1736,43 @@ inq_ok: goto chg_wide; } -outb (0x01 , wkport +0x5b ); -outb (satn[0 ], wkport +0x43 ); -outb (satn[1 ], wkport +0x44 ); -outb (satn[2 ], wkport +0x45 ); -outb (satn[3 ], wkport +0x46 ); -outb (satn[4 ], wkport +0x47 ); -outb (satn[5 ], wkport +0x48 ); -outb (0 , wkport +0x4f ); -outb (dev->id[0 ][i].devsp, wkport +0x51 ); -outb (0 , wkport +0x52 ); -outb (satn[6 ], wkport +0x53 ); -outb (satn[7 ], wkport +0x54 ); -outb (satn[8 ], wkport +0x58 ); - -while ((inb (wkport +0x5f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev,0 ,0x1b ,0x01 ); +atp_writeb_io (dev,0 ,3 , satn[0 ]); +atp_writeb_io (dev,0 ,4 , satn[1 ]); +atp_writeb_io (dev,0 ,5 , satn[2 ]); +atp_writeb_io (dev,0 ,6 , satn[3 ]); +atp_writeb_io (dev,0 ,7 , satn[4 ]); +atp_writeb_io (dev,0 ,8 , satn[5 ]); +atp_writeb_io (dev,0 ,0x0f ,0 ); +atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); +atp_writeb_io (dev,0 ,0x12 ,0 ); +atp_writeb_io (dev,0 ,0x13 , satn[6 ]); +atp_writeb_io (dev,0 ,0x14 , satn[7 ]); +atp_writeb_io (dev,0 ,0x18 , satn[8 ]); + +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (inb (wkport +0x57 ) !=0x11 &&inb (wkport +0x57 ) !=0x8e ) +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ; -while (inb (wkport +0x57 ) !=0x8e ) +while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); try_u3: j =0 ; -outb (0x09 , wkport +0x54 ); -outb (0x20 , wkport +0x58 ); +atp_writeb_io (dev,0 ,0x14 ,0x09 ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); -while ((inb (wkport +0x5f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x5f ) &0x01 ) !=0 ) -outb (u3[j++], wkport +0x59 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev,0 ,0x19 , u3[j++]); } -while ((inb (wkport +0x57 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x57 ) &0x0f ; + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -1784,12 +1784,12 @@ try_u3: }continue ; u3p_out: -outb (0x20 , wkport +0x58 ); -while ((inb (wkport +0x5f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x5f ) &0x01 ) !=0 ) -outb (0 , wkport +0x59 ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev,0 ,0x19 ,0 ); } - j =inb (wkport +0x57 ) &0x0f ; + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -1801,19 +1801,19 @@ u3p_out: }continue ; u3p_in: -outb (0x09 , wkport +0x54 ); -outb (0x20 , wkport +0x58 ); +atp_writeb_io (dev,0 ,0x14 ,0x09 ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); k =0 ; u3p_in1: - j =inb (wkport +0x5f ); + j =atp_readb_io (dev,0 ,0x1f );if ((j &0x01 ) !=0 ) { - mbuf[k++] =inb (wkport +0x59 ); + mbuf[k++] =atp_readb_io (dev,0 ,0x19 ); goto u3p_in1; }if ((j &0x80 ) ==0x00 ) { goto u3p_in1; } - j =inb (wkport +0x57 ) &0x0f ; + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -1825,14 +1825,14 @@ u3p_in1: }continue ; u3p_cmd: -outb (0x30 , wkport +0x50 ); -outb (0x00 , wkport +0x54 ); -outb (0x08 , wkport +0x58 ); +atp_writeb_io (dev,0 ,0x10 ,0x30 ); +atp_writeb_io (dev,0 ,0x14 ,0x00 ); +atp_writeb_io (dev,0 ,0x18 ,0x08 ); -while ((inb (wkport +0x5f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x57 ); + j =atp_readb_io (dev,0 ,0x17 );if (j !=0x16 ) {if (j ==0x4e ) { goto u3p_out;
@@ -1856,42 +1856,42 @@ u3p_cmd:continue ; } chg_wide: -outb (0x01 , wkport +0x5b ); -outb (satn[0 ], wkport +0x43 ); -outb (satn[1 ], wkport +0x44 ); -outb (satn[2 ], wkport +0x45 ); -outb (satn[3 ], wkport +0x46 ); -outb (satn[4 ], wkport +0x47 ); -outb (satn[5 ], wkport +0x48 ); -outb (0 , wkport +0x4f ); -outb (dev->id[0 ][i].devsp, wkport +0x51 ); -outb (0 , wkport +0x52 ); -outb (satn[6 ], wkport +0x53 ); -outb (satn[7 ], wkport +0x54 ); -outb (satn[8 ], wkport +0x58 ); - -while ((inb (wkport +0x5f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev,0 ,0x1b ,0x01 ); +atp_writeb_io (dev,0 ,3 , satn[0 ]); +atp_writeb_io (dev,0 ,4 , satn[1 ]); +atp_writeb_io (dev,0 ,5 , satn[2 ]); +atp_writeb_io (dev,0 ,6 , satn[3 ]); +atp_writeb_io (dev,0 ,7 , satn[4 ]); +atp_writeb_io (dev,0 ,8 , satn[5 ]); +atp_writeb_io (dev,0 ,0x0f ,0 ); +atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); +atp_writeb_io (dev,0 ,0x12 ,0 ); +atp_writeb_io (dev,0 ,0x13 , satn[6 ]); +atp_writeb_io (dev,0 ,0x14 , satn[7 ]); +atp_writeb_io (dev,0 ,0x18 , satn[8 ]); + +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (inb (wkport +0x57 ) !=0x11 &&inb (wkport +0x57 ) !=0x8e ) +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ; -while (inb (wkport +0x57 ) !=0x8e ) +while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); try_wide: j =0 ; -outb (0x05 , wkport +0x54 ); -outb (0x20 , wkport +0x58 ); +atp_writeb_io (dev,0 ,0x14 ,0x05 ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); -while ((inb (wkport +0x5f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x5f ) &0x01 ) !=0 ) -outb (wide[j++], wkport +0x59 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev,0 ,0x19 , wide[j++]); } -while ((inb (wkport +0x57 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x57 ) &0x0f ; + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1903,12 +1903,12 @@ try_wide: }continue ; widep_out: -outb (0x20 , wkport +0x58 ); -while ((inb (wkport +0x5f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x5f ) &0x01 ) !=0 ) -outb (0 , wkport +0x59 ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev,0 ,0x19 ,0 ); } - j =inb (wkport +0x57 ) &0x0f ; + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1920,19 +1920,19 @@ widep_out: }continue ; widep_in: -outb (0xff , wkport +0x54 ); -outb (0x20 , wkport +0x58 ); +atp_writeb_io (dev,0 ,0x14 ,0xff ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); k =0 ; widep_in1: - j =inb (wkport +0x5f ); + j =atp_readb_io (dev,0 ,0x1f );if ((j &0x01 ) !=0 ) { - mbuf[k++] =inb (wkport +0x59 ); + mbuf[k++] =atp_readb_io (dev,0 ,0x19 ); goto widep_in1; }if ((j &0x80 ) ==0x00 ) { goto widep_in1; } - j =inb (wkport +0x57 ) &0x0f ; + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1944,14 +1944,14 @@ widep_in1: }continue ; widep_cmd: -outb (0x30 , wkport +0x50 ); -outb (0x00 , wkport +0x54 ); -outb (0x08 , wkport +0x58 ); +atp_writeb_io (dev,0 ,0x10 ,0x30 ); +atp_writeb_io (dev,0 ,0x14 ,0x00 ); +atp_writeb_io (dev,0 ,0x18 ,0x08 ); -while ((inb (wkport +0x5f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x57 ); + j =atp_readb_io (dev,0 ,0x17 );if (j !=0x16 ) {if (j ==0x4e ) { goto widep_out;
@@ -1996,56 +1996,56 @@ set_sync:if ((m & dev->wide_id[0 ]) !=0 ) { j |=0x01 ; } -outb (j, wkport +0x5b ); -outb (satn[0 ], wkport +0x43 ); -outb (satn[1 ], wkport +0x44 ); -outb (satn[2 ], wkport +0x45 ); -outb (satn[3 ], wkport +0x46 ); -outb (satn[4 ], wkport +0x47 ); -outb (satn[5 ], wkport +0x48 ); -outb (0 , wkport +0x4f ); -outb (dev->id[0 ][i].devsp, wkport +0x51 ); -outb (0 , wkport +0x52 ); -outb (satn[6 ], wkport +0x53 ); -outb (satn[7 ], wkport +0x54 ); -outb (satn[8 ], wkport +0x58 ); - -while ((inb (wkport +0x5f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev,0 ,0x1b , j); +atp_writeb_io (dev,0 ,3 , satn[0 ]); +atp_writeb_io (dev,0 ,4 , satn[1 ]); +atp_writeb_io (dev,0 ,5 , satn[2 ]); +atp_writeb_io (dev,0 ,6 , satn[3 ]); +atp_writeb_io (dev,0 ,7 , satn[4 ]); +atp_writeb_io (dev,0 ,8 , satn[5 ]); +atp_writeb_io (dev,0 ,0x0f ,0 ); +atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); +atp_writeb_io (dev,0 ,0x12 ,0 ); +atp_writeb_io (dev,0 ,0x13 , satn[6 ]); +atp_writeb_io (dev,0 ,0x14 , satn[7 ]); +atp_writeb_io (dev,0 ,0x18 , satn[8 ]); + +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if ((inb (wkport +0x57 ) !=0x11 ) && (inb (wkport +0x57 ) !=0x8e )) { +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e ) {continue ; } -while (inb (wkport +0x57 ) !=0x8e ) +while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); try_sync: j =0 ; -outb (0x06 , wkport +0x54 ); -outb (0x20 , wkport +0x58 ); +atp_writeb_io (dev,0 ,0x14 ,0x06 ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); -while ((inb (wkport +0x5f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x5f ) &0x01 ) !=0 ) { +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) {if ((m & dev->wide_id[0 ]) !=0 ) {if ((m & dev->ultra_map[0 ]) !=0 ) { -outb (synuw[j++], wkport +0x59 ); +atp_writeb_io (dev,0 ,0x19 , synuw[j++]); }else { -outb (synw[j++], wkport +0x59 ); +atp_writeb_io (dev,0 ,0x19 , synw[j++]); } }else {if ((m & dev->ultra_map[0 ]) !=0 ) { -outb (synu[j++], wkport +0x59 ); +atp_writeb_io (dev,0 ,0x19 , synu[j++]); }else { -outb (synn[j++], wkport +0x59 ); +atp_writeb_io (dev,0 ,0x19 , synn[j++]); } } } } -while ((inb (wkport +0x57 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x57 ) &0x0f ; + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto phase_ins; }
@@ -2057,12 +2057,12 @@ try_sync: }continue ; phase_outs: -outb (0x20 , wkport +0x58 ); -while ((inb (wkport +0x5f ) &0x80 ) ==0x00 ) { -if ((inb (wkport +0x5f ) &0x01 ) !=0x00 ) -outb (0x00 , wkport +0x59 ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) { +if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0x00 ) +atp_writeb_io (dev,0 ,0x19 ,0x00 ); } - j =inb (wkport +0x57 ); + j =atp_readb_io (dev,0 ,0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -2078,23 +2078,23 @@ phase_outs: }continue ; phase_ins: -outb (0x06 , wkport +0x54 ); -outb (0x20 , wkport +0x58 ); +atp_writeb_io (dev,0 ,0x14 ,0x06 ); +atp_writeb_io (dev,0 ,0x18 ,0x20 ); k =0 ; phase_ins1: - j =inb (wkport +0x5f ); + j =atp_readb_io (dev,0 ,0x1f );if ((j &0x01 ) !=0x00 ) { - mbuf[k++] =inb (wkport +0x59 ); + mbuf[k++] =atp_readb_io (dev,0 ,0x19 ); goto phase_ins1; }if ((j &0x80 ) ==0x00 ) { goto phase_ins1; } -while ((inb (wkport +0x57 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x57 ); + j =atp_readb_io (dev,0 ,0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -2110,15 +2110,15 @@ phase_ins1: }continue ; phase_cmds: -outb (0x30 , wkport +0x50 ); +atp_writeb_io (dev,0 ,0x10 ,0x30 ); tar_dcons: -outb (0x00 , wkport +0x54 ); -outb (0x08 , wkport +0x58 ); +atp_writeb_io (dev,0 ,0x14 ,0x00 ); +atp_writeb_io (dev,0 ,0x18 ,0x08 ); -while ((inb (wkport +0x5f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x57 ); + j =atp_readb_io (dev,0 ,0x17 );if (j !=0x16 ) {continue ; }
@@ -2375,7 +2375,7 @@ flash_ok_880:outb (0x20 , base_io +0x51 );tscam (shpnt); -is880 (p, base_io); +is880 (p);outb (0xb0 , base_io +0x38 ); shpnt->max_id =16 ; shpnt->this_id = host_id;
Signature · 1 line
Ondrej Zary
PATCH 21/34 atp870u: Convert is885() to use wrappers
In reply to Ondrej Zary--- drivers/scsi/atp870u.c | 358 ++++++++++++++++++++++++------------------------ 1 file changed, 179 insertions(+), 179 deletions(-)
drivers/scsi/atp870u.c +179 -179
@@ -41,7 +41,7 @@static struct scsi_host_template atp870u_template;static void send_s870 (struct atp_unit *dev,unsigned char c); -static void is885 (struct atp_unit *dev,unsigned int wkport,unsigned char c); +static void is885 (struct atp_unit *dev,unsigned char c);static void tscam_885 (void );static inline void atp_writeb_base (struct atp_unit *atp,u8 reg,u8 val)
@@ -2521,9 +2521,9 @@ flash_ok_885:tscam_885 ();printk (KERN_INFO " Scanning Channel A SCSI Device ...\n" ); -is885 (p, base_io +0x80 ,0 ); +is885 (p,0 );printk (KERN_INFO " Scanning Channel B SCSI Device ...\n" ); -is885 (p, base_io +0xc0 ,1 ); +is885 (p,1 ); k =inb (base_io +0x28 ) &0xcf ; k |=0xc0 ;
@@ -2826,7 +2826,7 @@ static void tscam_885(void) -static void is885 (struct atp_unit *dev,unsigned int wkport,unsigned char c) +static void is885 (struct atp_unit *dev,unsigned char c) {unsigned char i, j, k, rmb, n, lvdmode;unsigned short int m;
@@ -2840,7 +2840,7 @@ static void is885(struct atp_unit *dev, unsigned int wkport,unsigned char c)static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 };static unsigned char u3[9 ] = {0x80 ,1 ,6 ,4 ,0x09 ,00 ,0x0e ,0x01 ,0x02 }; - lvdmode=inb (wkport +0x1b ) >>7 ; + lvdmode=atp_readb_io (dev, c,0x1b ) >>7 ;for (i =0 ; i <16 ; i++) { m =1 ;
@@ -2852,93 +2852,93 @@ static void is885(struct atp_unit *dev, unsigned int wkport,unsigned char c)printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[c]);continue ; } -outb (0x01 , wkport +0x1b ); -outb (0x08 , wkport +0x01 ); -outb (0x7f , wkport +0x02 ); -outb (satn[0 ], wkport +0x03 ); -outb (satn[1 ], wkport +0x04 ); -outb (satn[2 ], wkport +0x05 ); -outb (satn[3 ], wkport +0x06 ); -outb (satn[4 ], wkport +0x07 ); -outb (satn[5 ], wkport +0x08 ); -outb (0 , wkport +0x0f ); -outb (dev->id[c][i].devsp, wkport +0x11 ); +atp_writeb_io (dev, c,0x1b ,0x01 ); +atp_writeb_io (dev, c,1 ,0x08 ); +atp_writeb_io (dev, c,2 ,0x7f ); +atp_writeb_io (dev, c,3 , satn[0 ]); +atp_writeb_io (dev, c,4 , satn[1 ]); +atp_writeb_io (dev, c,5 , satn[2 ]); +atp_writeb_io (dev, c,6 , satn[3 ]); +atp_writeb_io (dev, c,7 , satn[4 ]); +atp_writeb_io (dev, c,8 , satn[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); -outb (0 , wkport +0x12 ); -outb (satn[6 ], wkport +0x13 ); -outb (satn[7 ], wkport +0x14 ); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , satn[6 ]); +atp_writeb_io (dev, c,0x14 , satn[7 ]); j = i;if ((j &0x08 ) !=0 ) { j = (j &0x07 ) |0x40 ; } -outb (j, wkport +0x15 ); -outb (satn[8 ], wkport +0x18 ); +atp_writeb_io (dev, c,0x15 , j); +atp_writeb_io (dev, c,0x18 , satn[8 ]); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if ((inb (wkport +0x17 ) !=0x11 ) && (inb (wkport +0x17 ) !=0x8e )) { +if ((atp_readb_io (dev, c,0x17 ) !=0x11 ) && (atp_readb_io (dev, c,0x17 ) !=0x8e )) {continue ; } -while (inb (wkport +0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); dev->active_id[c] |= m; -outb (0x30 , wkport +0x10 ); -outb (0x00 , wkport +0x14 ); +atp_writeb_io (dev, c,0x10 ,0x30 ); +atp_writeb_io (dev, c,0x14 ,0x00 ); phase_cmd: -outb (0x08 , wkport +0x18 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev, c,0x18 ,0x08 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) { -outb (0x41 , wkport +0x10 ); +atp_writeb_io (dev, c,0x10 ,0x41 ); goto phase_cmd; } sel_ok: -outb (inqd[0 ], wkport +0x03 ); -outb (inqd[1 ], wkport +0x04 ); -outb (inqd[2 ], wkport +0x05 ); -outb (inqd[3 ], wkport +0x06 ); -outb (inqd[4 ], wkport +0x07 ); -outb (inqd[5 ], wkport +0x08 ); -outb (0 , wkport +0x0f ); -outb (dev->id[c][i].devsp, wkport +0x11 ); -outb (0 , wkport +0x12 ); -outb (inqd[6 ], wkport +0x13 ); -outb (inqd[7 ], wkport +0x14 ); -outb (inqd[8 ], wkport +0x18 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev, c,3 , inqd[0 ]); +atp_writeb_io (dev, c,4 , inqd[1 ]); +atp_writeb_io (dev, c,5 , inqd[2 ]); +atp_writeb_io (dev, c,6 , inqd[3 ]); +atp_writeb_io (dev, c,7 , inqd[4 ]); +atp_writeb_io (dev, c,8 , inqd[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , inqd[6 ]); +atp_writeb_io (dev, c,0x14 , inqd[7 ]); +atp_writeb_io (dev, c,0x18 , inqd[8 ]); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if ((inb (wkport +0x17 ) !=0x11 ) && (inb (wkport +0x17 ) !=0x8e )) { +if ((atp_readb_io (dev, c,0x17 ) !=0x11 ) && (atp_readb_io (dev, c,0x17 ) !=0x8e )) {continue ; } -while (inb (wkport +0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); -outb (0x00 , wkport +0x1b ); -outb (0x08 , wkport +0x18 ); +atp_writeb_io (dev, c,0x1b ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); j =0 ; rd_inq_data: - k =inb (wkport +0x1f ); + k =atp_readb_io (dev, c,0x1f );if ((k &0x01 ) !=0 ) { - mbuf[j++] =inb (wkport +0x19 ); + mbuf[j++] =atp_readb_io (dev, c,0x19 ); goto rd_inq_data; }if ((k &0x80 ) ==0 ) { goto rd_inq_data; } - j =inb (wkport +0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j ==0x16 ) { goto inq_ok; } -outb (0x46 , wkport +0x10 ); -outb (0 , wkport +0x12 ); -outb (0 , wkport +0x13 ); -outb (0 , wkport +0x14 ); -outb (0x08 , wkport +0x18 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev, c,0x10 ,0x46 ); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 ,0 ); +atp_writeb_io (dev, c,0x14 ,0 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (inb (wkport +0x17 ) !=0x16 ) { +if (atp_readb_io (dev, c,0x17 ) !=0x16 ) { goto sel_ok; } inq_ok:
@@ -2960,40 +2960,40 @@ inq_ok: goto chg_wide; } -outb (0x01 , wkport +0x1b ); -outb (satn[0 ], wkport +0x03 ); -outb (satn[1 ], wkport +0x04 ); -outb (satn[2 ], wkport +0x05 ); -outb (satn[3 ], wkport +0x06 ); -outb (satn[4 ], wkport +0x07 ); -outb (satn[5 ], wkport +0x08 ); -outb (0 , wkport +0x0f ); -outb (dev->id[c][i].devsp, wkport +0x11 ); -outb (0 , wkport +0x12 ); -outb (satn[6 ], wkport +0x13 ); -outb (satn[7 ], wkport +0x14 ); -outb (satn[8 ], wkport +0x18 ); - -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev, c,0x1b ,0x01 ); +atp_writeb_io (dev, c,3 , satn[0 ]); +atp_writeb_io (dev, c,4 , satn[1 ]); +atp_writeb_io (dev, c,5 , satn[2 ]); +atp_writeb_io (dev, c,6 , satn[3 ]); +atp_writeb_io (dev, c,7 , satn[4 ]); +atp_writeb_io (dev, c,8 , satn[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , satn[6 ]); +atp_writeb_io (dev, c,0x14 , satn[7 ]); +atp_writeb_io (dev, c,0x18 , satn[8 ]); + +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if ((inb (wkport +0x17 ) !=0x11 ) && (inb (wkport +0x17 ) !=0x8e )) { +if ((atp_readb_io (dev, c,0x17 ) !=0x11 ) && (atp_readb_io (dev, c,0x17 ) !=0x8e )) {continue ; } -while (inb (wkport +0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); try_u3: j =0 ; -outb (0x09 , wkport +0x14 ); -outb (0x20 , wkport +0x18 ); +atp_writeb_io (dev, c,0x14 ,0x09 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x1f ) &0x01 ) !=0 ) -outb (u3[j++], wkport +0x19 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev, c,0x19 , u3[j++]);cpu_relax (); } -while ((inb (wkport +0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -3005,13 +3005,13 @@ try_u3: }continue ; u3p_out: -outb (0x20 , wkport +0x18 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x1f ) &0x01 ) !=0 ) -outb (0 , wkport +0x19 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev, c,0x19 ,0 );cpu_relax (); } - j =inb (wkport +0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -3023,19 +3023,19 @@ u3p_out: }continue ; u3p_in: -outb (0x09 , wkport +0x14 ); -outb (0x20 , wkport +0x18 ); +atp_writeb_io (dev, c,0x14 ,0x09 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); k =0 ; u3p_in1: - j =inb (wkport +0x1f ); + j =atp_readb_io (dev, c,0x1f );if ((j &0x01 ) !=0 ) { - mbuf[k++] =inb (wkport +0x19 ); + mbuf[k++] =atp_readb_io (dev, c,0x19 ); goto u3p_in1; }if ((j &0x80 ) ==0x00 ) { goto u3p_in1; } - j =inb (wkport +0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -3047,11 +3047,11 @@ u3p_in1: }continue ; u3p_cmd: -outb (0x30 , wkport +0x10 ); -outb (0x00 , wkport +0x14 ); -outb (0x08 , wkport +0x18 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ); - j =inb (wkport +0x17 ); +atp_writeb_io (dev, c,0x10 ,0x30 ); +atp_writeb_io (dev, c,0x14 ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) {if (j ==0x4e ) { goto u3p_out;
@@ -3078,40 +3078,40 @@ u3p_cmd:continue ; } chg_wide: -outb (0x01 , wkport +0x1b ); -outb (satn[0 ], wkport +0x03 ); -outb (satn[1 ], wkport +0x04 ); -outb (satn[2 ], wkport +0x05 ); -outb (satn[3 ], wkport +0x06 ); -outb (satn[4 ], wkport +0x07 ); -outb (satn[5 ], wkport +0x08 ); -outb (0 , wkport +0x0f ); -outb (dev->id[c][i].devsp, wkport +0x11 ); -outb (0 , wkport +0x12 ); -outb (satn[6 ], wkport +0x13 ); -outb (satn[7 ], wkport +0x14 ); -outb (satn[8 ], wkport +0x18 ); - -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev, c,0x1b ,0x01 ); +atp_writeb_io (dev, c,3 , satn[0 ]); +atp_writeb_io (dev, c,4 , satn[1 ]); +atp_writeb_io (dev, c,5 , satn[2 ]); +atp_writeb_io (dev, c,6 , satn[3 ]); +atp_writeb_io (dev, c,7 , satn[4 ]); +atp_writeb_io (dev, c,8 , satn[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , satn[6 ]); +atp_writeb_io (dev, c,0x14 , satn[7 ]); +atp_writeb_io (dev, c,0x18 , satn[8 ]); + +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if ((inb (wkport +0x17 ) !=0x11 ) && (inb (wkport +0x17 ) !=0x8e )) { +if ((atp_readb_io (dev, c,0x17 ) !=0x11 ) && (atp_readb_io (dev, c,0x17 ) !=0x8e )) {continue ; } -while (inb (wkport +0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); try_wide: j =0 ; -outb (0x05 , wkport +0x14 ); -outb (0x20 , wkport +0x18 ); +atp_writeb_io (dev, c,0x14 ,0x05 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x1f ) &0x01 ) !=0 ) -outb (wide[j++], wkport +0x19 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev, c,0x19 , wide[j++]);cpu_relax (); } -while ((inb (wkport +0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -3123,13 +3123,13 @@ try_wide: }continue ; widep_out: -outb (0x20 , wkport +0x18 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x1f ) &0x01 ) !=0 ) -outb (0 , wkport +0x19 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev, c,0x19 ,0 );cpu_relax (); } - j =inb (wkport +0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -3141,19 +3141,19 @@ widep_out: }continue ; widep_in: -outb (0xff , wkport +0x14 ); -outb (0x20 , wkport +0x18 ); +atp_writeb_io (dev, c,0x14 ,0xff ); +atp_writeb_io (dev, c,0x18 ,0x20 ); k =0 ; widep_in1: - j =inb (wkport +0x1f ); + j =atp_readb_io (dev, c,0x1f );if ((j &0x01 ) !=0 ) { - mbuf[k++] =inb (wkport +0x19 ); + mbuf[k++] =atp_readb_io (dev, c,0x19 ); goto widep_in1; }if ((j &0x80 ) ==0x00 ) { goto widep_in1; } - j =inb (wkport +0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -3165,12 +3165,12 @@ widep_in1: }continue ; widep_cmd: -outb (0x30 , wkport +0x10 ); -outb (0x00 , wkport +0x14 ); -outb (0x08 , wkport +0x18 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev, c,0x10 ,0x30 ); +atp_writeb_io (dev, c,0x14 ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) {if (j ==0x4e ) { goto widep_out;
@@ -3216,52 +3216,52 @@ set_sync:if ((m & dev->wide_id[c]) !=0 ) { j |=0x01 ; } -outb (j, wkport +0x1b ); -outb (satn[0 ], wkport +0x03 ); -outb (satn[1 ], wkport +0x04 ); -outb (satn[2 ], wkport +0x05 ); -outb (satn[3 ], wkport +0x06 ); -outb (satn[4 ], wkport +0x07 ); -outb (satn[5 ], wkport +0x08 ); -outb (0 , wkport +0x0f ); -outb (dev->id[c][i].devsp, wkport +0x11 ); -outb (0 , wkport +0x12 ); -outb (satn[6 ], wkport +0x13 ); -outb (satn[7 ], wkport +0x14 ); -outb (satn[8 ], wkport +0x18 ); - -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev, c,0x1b , j); +atp_writeb_io (dev, c,3 , satn[0 ]); +atp_writeb_io (dev, c,4 , satn[1 ]); +atp_writeb_io (dev, c,5 , satn[2 ]); +atp_writeb_io (dev, c,6 , satn[3 ]); +atp_writeb_io (dev, c,7 , satn[4 ]); +atp_writeb_io (dev, c,8 , satn[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , satn[6 ]); +atp_writeb_io (dev, c,0x14 , satn[7 ]); +atp_writeb_io (dev, c,0x18 , satn[8 ]); + +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if ((inb (wkport +0x17 ) !=0x11 ) && (inb (wkport +0x17 ) !=0x8e )) { +if ((atp_readb_io (dev, c,0x17 ) !=0x11 ) && (atp_readb_io (dev, c,0x17 ) !=0x8e )) {continue ; } -while (inb (wkport +0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); try_sync: j =0 ; -outb (0x06 , wkport +0x14 ); -outb (0x20 , wkport +0x18 ); +atp_writeb_io (dev, c,0x14 ,0x06 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0 ) { -if ((inb (wkport +0x1f ) &0x01 ) !=0 ) { +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) {if ((m & dev->wide_id[c]) !=0 ) {if ((m & dev->ultra_map[c]) !=0 ) { -outb (synuw[j++], wkport +0x19 ); +atp_writeb_io (dev, c,0x19 , synuw[j++]); }else { -outb (synw[j++], wkport +0x19 ); +atp_writeb_io (dev, c,0x19 , synw[j++]); } }else {if ((m & dev->ultra_map[c]) !=0 ) { -outb (synu[j++], wkport +0x19 ); +atp_writeb_io (dev, c,0x19 , synu[j++]); }else { -outb (synn[j++], wkport +0x19 ); +atp_writeb_io (dev, c,0x19 , synn[j++]); } } } } -while ((inb (wkport +0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto phase_ins; }
@@ -3273,13 +3273,13 @@ try_sync: }continue ; phase_outs: -outb (0x20 , wkport +0x18 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) { -if ((inb (wkport +0x1f ) &0x01 ) !=0x00 ) -outb (0x00 , wkport +0x19 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0x00 ) +atp_writeb_io (dev, c,0x19 ,0x00 );cpu_relax (); } - j =inb (wkport +0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -3295,20 +3295,20 @@ phase_outs: }continue ; phase_ins: -outb (0x06 , wkport +0x14 ); -outb (0x20 , wkport +0x18 ); +atp_writeb_io (dev, c,0x14 ,0x06 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); k =0 ; phase_ins1: - j =inb (wkport +0x1f ); + j =atp_readb_io (dev, c,0x1f );if ((j &0x01 ) !=0x00 ) { - mbuf[k++] =inb (wkport +0x19 ); + mbuf[k++] =atp_readb_io (dev, c,0x19 ); goto phase_ins1; }if ((j &0x80 ) ==0x00 ) { goto phase_ins1; } -while ((inb (wkport +0x17 ) &0x80 ) ==0x00 ); - j =inb (wkport +0x17 ); +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 ); + j =atp_readb_io (dev, c,0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -3324,13 +3324,13 @@ phase_ins1: }continue ; phase_cmds: -outb (0x30 , wkport +0x10 ); +atp_writeb_io (dev, c,0x10 ,0x30 ); tar_dcons: -outb (0x00 , wkport +0x14 ); -outb (0x08 , wkport +0x18 ); -while ((inb (wkport +0x1f ) &0x80 ) ==0x00 ) +atp_writeb_io (dev, c,0x14 ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =inb (wkport +0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) {continue ; }
@@ -3377,7 +3377,7 @@ tar_dcons:printk ("dev->id[%2d][%2d].devsp = %2x\n" ,c,i,dev->id[c][i].devsp);#endif } -outb (0x80 , wkport +0x16 ); +atp_writeb_io (dev, c,0x16 ,0x80 ); }module_init (atp870u_init);
Signature · 1 line
Ondrej Zary
PATCH 22/34 atp870u: Unify code format in is870(), is880() and is885()
In reply to Ondrej ZaryUnify code formatting in is870(), is880() and is885() functions to simplify comparing them.
--- drivers/scsi/atp870u.c | 170 ++++++++++++++++++++++++++++-------------------- 1 file changed, 101 insertions(+), 69 deletions(-)
drivers/scsi/atp870u.c +101 -69
@@ -1173,7 +1173,7 @@ static void is870(struct atp_unit *dev)static unsigned char synu[6 ] = {0x80 ,1 ,3 ,1 ,0x0c ,0x0e };static unsigned char synw[6 ] = {0x80 ,1 ,3 ,1 ,0x0c ,0x07 };static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 }; - +atp_writeb_io (dev,0 ,0x3a ,atp_readb_io (dev,0 ,0x3a ) |0x10 );for (i =0 ; i <16 ; i++) {
@@ -1230,8 +1230,10 @@ static void is870(struct atp_unit *dev) phase_cmd:atp_writeb_io (dev,0 ,0x18 ,0x08 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); + j =atp_readb_io (dev,0 ,0x17 );if (j !=0x16 ) {atp_writeb_io (dev,0 ,0x10 ,0x41 );
@@ -1253,13 +1255,13 @@ sel_ok:while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ;while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); - +if (dev->chip_ver ==4 )atp_writeb_io (dev,0 ,0x1b ,0x00 );
@@ -1286,10 +1288,10 @@ rd_inq_data:while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - -if (atp_readb_io (dev,0 ,0x17 ) !=0x16 ) { + +if (atp_readb_io (dev,0 ,0x17 ) !=0x16 ) goto sel_ok; - } + inq_ok: mbuf[36 ] =0 ;printk (KERN_INFO " ID: %2d %s\n" , i, &mbuf[8 ]);
@@ -1321,13 +1323,13 @@ inq_ok:while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ;while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); - + try_wide: j =0 ;atp_writeb_io (dev,0 ,0x14 ,0x05 );
@@ -1337,10 +1339,10 @@ try_wide:if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 )atp_writeb_io (dev,0 ,0x19 , wide[j++]); } - +while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in;
@@ -1449,13 +1451,13 @@ set_sync:while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ;while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); - + try_sync: j =0 ;atp_writeb_io (dev,0 ,0x14 ,0x06 );
@@ -1474,10 +1476,10 @@ try_sync: } } } - +while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto phase_ins;
@@ -1526,7 +1528,7 @@ phase_ins1:while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - + j =atp_readb_io (dev,0 ,0x17 );if (j ==0x85 ) { goto tar_dcons;
@@ -1547,10 +1549,10 @@ phase_cmds: tar_dcons:atp_writeb_io (dev,0 ,0x14 ,0x00 );atp_writeb_io (dev,0 ,0x18 ,0x08 ); - +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - + j =atp_readb_io (dev,0 ,0x17 );if (j !=0x16 ) {continue ;
@@ -1649,7 +1651,7 @@ static void is880(struct atp_unit *dev)while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); - + dev->active_id[0 ] |= m;atp_writeb_io (dev,0 ,0x10 ,0x30 );
@@ -1657,7 +1659,7 @@ static void is880(struct atp_unit *dev) phase_cmd:atp_writeb_io (dev,0 ,0x18 ,0x08 ); - +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax ();
@@ -1679,16 +1681,16 @@ sel_ok:atp_writeb_io (dev,0 ,0x13 , inqd[6 ]);atp_writeb_io (dev,0 ,0x14 , inqd[7 ]);atp_writeb_io (dev,0 ,0x18 , inqd[8 ]); - +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ;while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); - +atp_writeb_io (dev,0 ,0x1b ,0x00 );atp_writeb_io (dev,0 ,0x18 ,0x08 ); j =0 ;
@@ -1710,9 +1712,10 @@ rd_inq_data:atp_writeb_io (dev,0 ,0x13 ,0 );atp_writeb_io (dev,0 ,0x14 ,0 );atp_writeb_io (dev,0 ,0x18 ,0x08 ); +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - +if (atp_readb_io (dev,0 ,0x17 ) !=0x16 ) goto sel_ok;
@@ -1771,7 +1774,7 @@ try_u3:while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in;
@@ -1828,10 +1831,10 @@ u3p_cmd:atp_writeb_io (dev,0 ,0x10 ,0x30 );atp_writeb_io (dev,0 ,0x14 ,0x00 );atp_writeb_io (dev,0 ,0x18 ,0x08 ); - +while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - + j =atp_readb_io (dev,0 ,0x17 );if (j !=0x16 ) {if (j ==0x4e ) {
@@ -1872,13 +1875,13 @@ chg_wide:while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ;while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax (); - + try_wide: j =0 ;atp_writeb_io (dev,0 ,0x14 ,0x05 );
@@ -1888,9 +1891,10 @@ try_wide:if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 )atp_writeb_io (dev,0 ,0x19 , wide[j++]); } +while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - + j =atp_readb_io (dev,0 ,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in;
@@ -2013,9 +2017,9 @@ set_sync:while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e ) { +if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e )continue ; - } +while (atp_readb_io (dev,0 ,0x17 ) !=0x8e )cpu_relax ();
@@ -2831,16 +2835,16 @@ static void is885(struct atp_unit *dev, unsigned char c)unsigned char i, j, k, rmb, n, lvdmode;unsigned short int m;static unsigned char mbuf[512 ]; -static unsigned char satn[9 ] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,6 ,6 }; -static unsigned char inqd[9 ] = {0x12 ,0 ,0 ,0 ,0x24 ,0 ,0 ,0x24 ,6 }; -static unsigned char synn[6 ] = {0x80 ,1 ,3 ,1 ,0x19 ,0x0e }; -unsigned char synu[6 ] = {0x80 ,1 ,3 ,1 ,0x0a ,0x0e }; -static unsigned char synw[6 ] = {0x80 ,1 ,3 ,1 ,0x19 ,0x0e }; -unsigned char synuw[6 ] = {0x80 ,1 ,3 ,1 ,0x0a ,0x0e }; -static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 }; -static unsigned char u3[9 ] = {0x80 ,1 ,6 ,4 ,0x09 ,00 ,0x0e ,0x01 ,0x02 }; +static unsigned char satn[9 ] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,6 ,6 }; +static unsigned char inqd[9 ] = {0x12 ,0 ,0 ,0 ,0x24 ,0 ,0 ,0x24 ,6 }; +static unsigned char synn[6 ] = {0x80 ,1 ,3 ,1 ,0x19 ,0x0e }; +unsigned char synu[6 ] = {0x80 ,1 ,3 ,1 ,0x0a ,0x0e }; +static unsigned char synw[6 ] = {0x80 ,1 ,3 ,1 ,0x19 ,0x0e }; +unsigned char synuw[6 ] = {0x80 ,1 ,3 ,1 ,0x0a ,0x0e }; +static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 }; +static unsigned char u3[9 ] = {0x80 ,1 ,6 ,4 ,0x09 ,00 ,0x0e ,0x01 ,0x02 }; - lvdmode=atp_readb_io (dev, c,0x1b ) >>7 ; + lvdmode =atp_readb_io (dev, c,0x1b ) >>7 ;for (i =0 ; i <16 ; i++) { m =1 ;
@@ -2863,7 +2867,6 @@ static void is885(struct atp_unit *dev, unsigned char c)atp_writeb_io (dev, c,8 , satn[5 ]);atp_writeb_io (dev, c,0x0f ,0 );atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); -atp_writeb_io (dev, c,0x12 ,0 );atp_writeb_io (dev, c,0x13 , satn[6 ]);atp_writeb_io (dev, c,0x14 , satn[7 ]);
@@ -2876,11 +2879,13 @@ static void is885(struct atp_unit *dev, unsigned char c)while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if ((atp_readb_io (dev, c,0x17 ) !=0x11 ) && (atp_readb_io (dev, c,0x17 ) !=0x8e )) { + +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; - } +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); + dev->active_id[c] |= m;atp_writeb_io (dev, c,0x10 ,0x30 );
@@ -2888,8 +2893,10 @@ static void is885(struct atp_unit *dev, unsigned char c) phase_cmd:atp_writeb_io (dev, c,0x18 ,0x08 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) {atp_writeb_io (dev, c,0x10 ,0x41 );
@@ -2908,13 +2915,16 @@ sel_ok:atp_writeb_io (dev, c,0x13 , inqd[6 ]);atp_writeb_io (dev, c,0x14 , inqd[7 ]);atp_writeb_io (dev, c,0x18 , inqd[8 ]); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if ((atp_readb_io (dev, c,0x17 ) !=0x11 ) && (atp_readb_io (dev, c,0x17 ) !=0x8e )) { + +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; - } +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); +atp_writeb_io (dev, c,0x1b ,0x00 );atp_writeb_io (dev, c,0x18 ,0x08 ); j =0 ;
@@ -2936,14 +2946,16 @@ rd_inq_data:atp_writeb_io (dev, c,0x13 ,0 );atp_writeb_io (dev, c,0x14 ,0 );atp_writeb_io (dev, c,0x18 ,0x08 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev, c,0x17 ) !=0x16 ) { + +if (atp_readb_io (dev, c,0x17 ) !=0x16 ) goto sel_ok; - } + inq_ok: mbuf[36 ] =0 ; -printk (KERN_INFO " ID: %2d %s\n" , i, &mbuf[8 ]); +printk (KERN_INFO " ID: %2d %s\n" , i, &mbuf[8 ]); dev->id[c][i].devtype = mbuf[0 ]; rmb = mbuf[1 ]; n = mbuf[7 ];
@@ -2954,10 +2966,11 @@ inq_ok: goto not_wide; }if (lvdmode ==0 ) { - goto chg_wide; + goto chg_wide; } -if (dev->sp[c][i] !=0x04 ) {// force u2 - goto chg_wide; +if (dev->sp[c][i] !=0x04 )// force u2 + { + goto chg_wide; }atp_writeb_io (dev, c,0x1b ,0x01 );
@@ -2976,11 +2989,13 @@ inq_ok:while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if ((atp_readb_io (dev, c,0x17 ) !=0x11 ) && (atp_readb_io (dev, c,0x17 ) !=0x8e )) { + +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; - } +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); + try_u3: j =0 ;atp_writeb_io (dev, c,0x14 ,0x09 );
@@ -2991,8 +3006,10 @@ try_u3:atp_writeb_io (dev, c,0x19 , u3[j++]);cpu_relax (); } +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in;
@@ -3050,7 +3067,9 @@ u3p_cmd:atp_writeb_io (dev, c,0x10 ,0x30 );atp_writeb_io (dev, c,0x14 ,0x00 );atp_writeb_io (dev, c,0x18 ,0x08 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) {if (j ==0x4e ) {
@@ -3094,11 +3113,13 @@ chg_wide:while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if ((atp_readb_io (dev, c,0x17 ) !=0x11 ) && (atp_readb_io (dev, c,0x17 ) !=0x8e )) { + +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; - } +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); + try_wide: j =0 ;atp_writeb_io (dev, c,0x14 ,0x05 );
@@ -3109,8 +3130,10 @@ try_wide:atp_writeb_io (dev, c,0x19 , wide[j++]);cpu_relax (); } +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in;
@@ -3168,8 +3191,10 @@ widep_cmd:atp_writeb_io (dev, c,0x10 ,0x30 );atp_writeb_io (dev, c,0x14 ,0x00 );atp_writeb_io (dev, c,0x18 ,0x08 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) {if (j ==0x4e ) {
@@ -3193,24 +3218,23 @@ widep_cmd: m = m << i; dev->wide_id[c] |= m; not_wide: -if ((dev->id[c][i].devtype ==0x00 ) || (dev->id[c][i].devtype ==0x07 ) || - ((dev->id[c][i].devtype ==0x05 ) && ((n &0x10 ) !=0 ))) { +if ((dev->id[c][i].devtype ==0x00 ) || (dev->id[c][i].devtype ==0x07 ) || ((dev->id[c][i].devtype ==0x05 ) && ((n &0x10 ) !=0 ))) { m =1 ; m = m << i;if ((dev->async[c] & m) !=0 ) { - goto set_sync; + goto set_sync; } }continue ; set_sync:if (dev->sp[c][i] ==0x02 ) { - synu[4 ]=0x0c ; - synuw[4 ]=0x0c ; + synu[4 ] =0x0c ; + synuw[4 ] =0x0c ; }else { -if (dev->sp[c][i] >=0x03 ) { - synu[4 ]=0x0a ; - synuw[4 ]=0x0a ; - } +if (dev->sp[c][i] >=0x03 ) { + synu[4 ] =0x0a ; + synuw[4 ] =0x0a ; + } } j =0 ;if ((m & dev->wide_id[c]) !=0 ) {
@@ -3232,11 +3256,13 @@ set_sync:while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if ((atp_readb_io (dev, c,0x17 ) !=0x11 ) && (atp_readb_io (dev, c,0x17 ) !=0x8e )) { + +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; - } +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); + try_sync: j =0 ;atp_writeb_io (dev, c,0x14 ,0x06 );
@@ -3259,8 +3285,10 @@ try_sync: } } } +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto phase_ins;
@@ -3307,7 +3335,9 @@ phase_ins1:if ((j &0x80 ) ==0x00 ) { goto phase_ins1; } +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 ); + j =atp_readb_io (dev, c,0x17 );if (j ==0x85 ) { goto tar_dcons;
@@ -3328,8 +3358,10 @@ phase_cmds: tar_dcons:atp_writeb_io (dev, c,0x14 ,0x00 );atp_writeb_io (dev, c,0x18 ,0x08 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) {continue ;
@@ -3350,7 +3382,7 @@ tar_dcons: mbuf[4 ] =0x0e ; } dev->id[c][i].devsp = mbuf[4 ]; -if (mbuf[3 ] <0x0c ){ +if (mbuf[3 ] <0x0c ) { j =0xb0 ; goto set_syn_ok; }
@@ -3371,9 +3403,9 @@ tar_dcons: goto set_syn_ok; } j =0x60 ; - set_syn_ok: +set_syn_ok: dev->id[c][i].devsp = (dev->id[c][i].devsp &0x0f ) | j; -#ifdef ED_DBGP +#ifdef ED_DBGP printk ("dev->id[%2d][%2d].devsp = %2x\n" ,c,i,dev->id[c][i].devsp);#endif }
Signature · 1 line
Ondrej Zary
PATCH 23/34 atp870u: Add channel parameter to is870() and is880()
In reply to Ondrej ZaryAdd channel parameter to is870() and is880() functions to simplify comparing them with is885().
--- drivers/scsi/atp870u.c | 684 ++++++++++++++++++++++++------------------------ 1 file changed, 342 insertions(+), 342 deletions(-)
drivers/scsi/atp870u.c +342 -342
@@ -1162,7 +1162,7 @@ static void tscam(struct Scsi_Host *host) } } -static void is870 (struct atp_unit *dev) +static void is870 (struct atp_unit *dev,unsigned char c) {unsigned char i, j, k, rmb, n;unsigned short int m;
@@ -1174,7 +1174,7 @@ static void is870(struct atp_unit *dev)static unsigned char synw[6 ] = {0x80 ,1 ,3 ,1 ,0x0c ,0x07 };static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 }; -atp_writeb_io (dev,0 ,0x3a ,atp_readb_io (dev,0 ,0x3a ) |0x10 ); +atp_writeb_io (dev, c,0x3a ,atp_readb_io (dev, c,0x3a ) |0x10 );for (i =0 ; i <16 ; i++) {if ((dev->chip_ver !=4 ) && (i >7 )) {
@@ -1182,120 +1182,120 @@ static void is870(struct atp_unit *dev) } m =1 ; m = m << i; -if ((m & dev->active_id[0 ]) !=0 ) { +if ((m & dev->active_id[c]) !=0 ) {continue ; } -if (i == dev->host_id[0 ]) { -printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[0 ]); +if (i == dev->host_id[c]) { +printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[c]);continue ; }if (dev->chip_ver ==4 ) { -atp_writeb_io (dev,0 ,0x1b ,0x01 ); +atp_writeb_io (dev, c,0x1b ,0x01 ); }else { -atp_writeb_io (dev,0 ,0x1b ,0x00 ); +atp_writeb_io (dev, c,0x1b ,0x00 ); } -atp_writeb_io (dev,0 ,1 ,0x08 ); -atp_writeb_io (dev,0 ,2 ,0x7f ); -atp_writeb_io (dev,0 ,3 , satn[0 ]); -atp_writeb_io (dev,0 ,4 , satn[1 ]); -atp_writeb_io (dev,0 ,5 , satn[2 ]); -atp_writeb_io (dev,0 ,6 , satn[3 ]); -atp_writeb_io (dev,0 ,7 , satn[4 ]); -atp_writeb_io (dev,0 ,8 , satn[5 ]); -atp_writeb_io (dev,0 ,0x0f ,0 ); -atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); -atp_writeb_io (dev,0 ,0x12 ,0 ); -atp_writeb_io (dev,0 ,0x13 , satn[6 ]); -atp_writeb_io (dev,0 ,0x14 , satn[7 ]); +atp_writeb_io (dev, c,1 ,0x08 ); +atp_writeb_io (dev, c,2 ,0x7f ); +atp_writeb_io (dev, c,3 , satn[0 ]); +atp_writeb_io (dev, c,4 , satn[1 ]); +atp_writeb_io (dev, c,5 , satn[2 ]); +atp_writeb_io (dev, c,6 , satn[3 ]); +atp_writeb_io (dev, c,7 , satn[4 ]); +atp_writeb_io (dev, c,8 , satn[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , satn[6 ]); +atp_writeb_io (dev, c,0x14 , satn[7 ]); j = i;if ((j &0x08 ) !=0 ) { j = (j &0x07 ) |0x40 ; } -atp_writeb_io (dev,0 ,0x15 , j); -atp_writeb_io (dev,0 ,0x18 , satn[8 ]); +atp_writeb_io (dev, c,0x15 , j); +atp_writeb_io (dev, c,0x18 , satn[8 ]); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; -while (atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); - dev->active_id[0 ] |= m; + dev->active_id[c] |= m; -atp_writeb_io (dev,0 ,0x10 ,0x30 ); -atp_writeb_io (dev,0 ,0x04 ,0x00 ); +atp_writeb_io (dev, c,0x10 ,0x30 ); +atp_writeb_io (dev, c,0x04 ,0x00 ); phase_cmd: -atp_writeb_io (dev,0 ,0x18 ,0x08 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) { -atp_writeb_io (dev,0 ,0x10 ,0x41 ); +atp_writeb_io (dev, c,0x10 ,0x41 ); goto phase_cmd; } sel_ok: -atp_writeb_io (dev,0 ,3 , inqd[0 ]); -atp_writeb_io (dev,0 ,4 , inqd[1 ]); -atp_writeb_io (dev,0 ,5 , inqd[2 ]); -atp_writeb_io (dev,0 ,6 , inqd[3 ]); -atp_writeb_io (dev,0 ,7 , inqd[4 ]); -atp_writeb_io (dev,0 ,8 , inqd[5 ]); -atp_writeb_io (dev,0 ,0x0f ,0 ); -atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); -atp_writeb_io (dev,0 ,0x12 ,0 ); -atp_writeb_io (dev,0 ,0x13 , inqd[6 ]); -atp_writeb_io (dev,0 ,0x14 , inqd[7 ]); -atp_writeb_io (dev,0 ,0x18 , inqd[8 ]); +atp_writeb_io (dev, c,3 , inqd[0 ]); +atp_writeb_io (dev, c,4 , inqd[1 ]); +atp_writeb_io (dev, c,5 , inqd[2 ]); +atp_writeb_io (dev, c,6 , inqd[3 ]); +atp_writeb_io (dev, c,7 , inqd[4 ]); +atp_writeb_io (dev, c,8 , inqd[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , inqd[6 ]); +atp_writeb_io (dev, c,0x14 , inqd[7 ]); +atp_writeb_io (dev, c,0x18 , inqd[8 ]); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; -while (atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax ();if (dev->chip_ver ==4 ) -atp_writeb_io (dev,0 ,0x1b ,0x00 ); +atp_writeb_io (dev, c,0x1b ,0x00 ); -atp_writeb_io (dev,0 ,0x18 ,0x08 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); j =0 ; rd_inq_data: - k =atp_readb_io (dev,0 ,0x1f ); + k =atp_readb_io (dev, c,0x1f );if ((k &0x01 ) !=0 ) { - mbuf[j++] =atp_readb_io (dev,0 ,0x19 ); + mbuf[j++] =atp_readb_io (dev, c,0x19 ); goto rd_inq_data; }if ((k &0x80 ) ==0 ) { goto rd_inq_data; } - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j ==0x16 ) { goto inq_ok; } -atp_writeb_io (dev,0 ,0x10 ,0x46 ); -atp_writeb_io (dev,0 ,0x12 ,0 ); -atp_writeb_io (dev,0 ,0x13 ,0 ); -atp_writeb_io (dev,0 ,0x14 ,0 ); -atp_writeb_io (dev,0 ,0x18 ,0x08 ); +atp_writeb_io (dev, c,0x10 ,0x46 ); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 ,0 ); +atp_writeb_io (dev, c,0x14 ,0 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev,0 ,0x17 ) !=0x16 ) +if (atp_readb_io (dev, c,0x17 ) !=0x16 ) goto sel_ok; inq_ok: mbuf[36 ] =0 ;printk (KERN_INFO " ID: %2d %s\n" , i, &mbuf[8 ]); - dev->id[0 ][i].devtype = mbuf[0 ]; + dev->id[c][i].devtype = mbuf[0 ]; rmb = mbuf[1 ]; n = mbuf[7 ];if (dev->chip_ver !=4 ) {
@@ -1304,46 +1304,46 @@ inq_ok:if ((mbuf[7 ] &0x60 ) ==0 ) { goto not_wide; } -if ((dev->global_map[0 ] &0x20 ) ==0 ) { +if ((dev->global_map[c] &0x20 ) ==0 ) { goto not_wide; } -atp_writeb_io (dev,0 ,0x1b ,0x01 ); -atp_writeb_io (dev,0 ,3 , satn[0 ]); -atp_writeb_io (dev,0 ,4 , satn[1 ]); -atp_writeb_io (dev,0 ,5 , satn[2 ]); -atp_writeb_io (dev,0 ,6 , satn[3 ]); -atp_writeb_io (dev,0 ,7 , satn[4 ]); -atp_writeb_io (dev,0 ,8 , satn[5 ]); -atp_writeb_io (dev,0 ,0x0f ,0 ); -atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); -atp_writeb_io (dev,0 ,0x12 ,0 ); -atp_writeb_io (dev,0 ,0x13 , satn[6 ]); -atp_writeb_io (dev,0 ,0x14 , satn[7 ]); -atp_writeb_io (dev,0 ,0x18 , satn[8 ]); +atp_writeb_io (dev, c,0x1b ,0x01 ); +atp_writeb_io (dev, c,3 , satn[0 ]); +atp_writeb_io (dev, c,4 , satn[1 ]); +atp_writeb_io (dev, c,5 , satn[2 ]); +atp_writeb_io (dev, c,6 , satn[3 ]); +atp_writeb_io (dev, c,7 , satn[4 ]); +atp_writeb_io (dev, c,8 , satn[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , satn[6 ]); +atp_writeb_io (dev, c,0x14 , satn[7 ]); +atp_writeb_io (dev, c,0x18 , satn[8 ]); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; -while (atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); try_wide: j =0 ; -atp_writeb_io (dev,0 ,0x14 ,0x05 ); -atp_writeb_io (dev,0 ,0x18 ,0x20 ); +atp_writeb_io (dev, c,0x14 ,0x05 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) -atp_writeb_io (dev,0 ,0x19 , wide[j++]); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev, c,0x19 , wide[j++]); } -while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1355,12 +1355,12 @@ try_wide: }continue ; widep_out: -atp_writeb_io (dev,0 ,0x18 ,0x20 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) -atp_writeb_io (dev,0 ,0x19 ,0 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev, c,0x19 ,0 ); } - j =atp_readb_io (dev,0 ,0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1372,19 +1372,19 @@ widep_out: }continue ; widep_in: -atp_writeb_io (dev,0 ,0x14 ,0xff ); -atp_writeb_io (dev,0 ,0x18 ,0x20 ); +atp_writeb_io (dev, c,0x14 ,0xff ); +atp_writeb_io (dev, c,0x18 ,0x20 ); k =0 ; widep_in1: - j =atp_readb_io (dev,0 ,0x1f ); + j =atp_readb_io (dev, c,0x1f );if ((j &0x01 ) !=0 ) { - mbuf[k++] =atp_readb_io (dev,0 ,0x19 ); + mbuf[k++] =atp_readb_io (dev, c,0x19 ); goto widep_in1; }if ((j &0x80 ) ==0x00 ) { goto widep_in1; } - j =atp_readb_io (dev,0 ,0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1396,14 +1396,14 @@ widep_in1: }continue ; widep_cmd: -atp_writeb_io (dev,0 ,0x10 ,0x30 ); -atp_writeb_io (dev,0 ,0x14 ,0x00 ); -atp_writeb_io (dev,0 ,0x18 ,0x08 ); +atp_writeb_io (dev, c,0x10 ,0x30 ); +atp_writeb_io (dev, c,0x14 ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) {if (j ==0x4e ) { goto widep_out;
@@ -1424,63 +1424,63 @@ widep_cmd: } m =1 ; m = m << i; - dev->wide_id[0 ] |= m; + dev->wide_id[c] |= m; not_wide: -if ((dev->id[0 ][i].devtype ==0x00 ) || (dev->id[0 ][i].devtype ==0x07 ) || ((dev->id[0 ][i].devtype ==0x05 ) && ((n &0x10 ) !=0 ))) { +if ((dev->id[c][i].devtype ==0x00 ) || (dev->id[c][i].devtype ==0x07 ) || ((dev->id[c][i].devtype ==0x05 ) && ((n &0x10 ) !=0 ))) { goto set_sync; }continue ; set_sync: j =0 ; -if ((m & dev->wide_id[0 ]) !=0 ) { +if ((m & dev->wide_id[c]) !=0 ) { j |=0x01 ; } -atp_writeb_io (dev,0 ,0x1b , j); -atp_writeb_io (dev,0 ,3 , satn[0 ]); -atp_writeb_io (dev,0 ,4 , satn[1 ]); -atp_writeb_io (dev,0 ,5 , satn[2 ]); -atp_writeb_io (dev,0 ,6 , satn[3 ]); -atp_writeb_io (dev,0 ,7 , satn[4 ]); -atp_writeb_io (dev,0 ,8 , satn[5 ]); -atp_writeb_io (dev,0 ,0x0f ,0 ); -atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); -atp_writeb_io (dev,0 ,0x12 ,0 ); -atp_writeb_io (dev,0 ,0x13 , satn[6 ]); -atp_writeb_io (dev,0 ,0x14 , satn[7 ]); -atp_writeb_io (dev,0 ,0x18 , satn[8 ]); +atp_writeb_io (dev, c,0x1b , j); +atp_writeb_io (dev, c,3 , satn[0 ]); +atp_writeb_io (dev, c,4 , satn[1 ]); +atp_writeb_io (dev, c,5 , satn[2 ]); +atp_writeb_io (dev, c,6 , satn[3 ]); +atp_writeb_io (dev, c,7 , satn[4 ]); +atp_writeb_io (dev, c,8 , satn[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , satn[6 ]); +atp_writeb_io (dev, c,0x14 , satn[7 ]); +atp_writeb_io (dev, c,0x18 , satn[8 ]); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; -while (atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); try_sync: j =0 ; -atp_writeb_io (dev,0 ,0x14 ,0x06 ); -atp_writeb_io (dev,0 ,0x18 ,0x20 ); +atp_writeb_io (dev, c,0x14 ,0x06 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) { -if ((m & dev->wide_id[0 ]) !=0 ) { -atp_writeb_io (dev,0 ,0x19 , synw[j++]); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) { +if ((m & dev->wide_id[c]) !=0 ) { +atp_writeb_io (dev, c,0x19 , synw[j++]); }else { -if ((m & dev->ultra_map[0 ]) !=0 ) { -atp_writeb_io (dev,0 ,0x19 , synu[j++]); +if ((m & dev->ultra_map[c]) !=0 ) { +atp_writeb_io (dev, c,0x19 , synu[j++]); }else { -atp_writeb_io (dev,0 ,0x19 , synn[j++]); +atp_writeb_io (dev, c,0x19 , synn[j++]); } } } } -while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto phase_ins; }
@@ -1492,12 +1492,12 @@ try_sync: }continue ; phase_outs: -atp_writeb_io (dev,0 ,0x18 ,0x20 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) { -if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0x00 ) -atp_writeb_io (dev,0 ,0x19 ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0x00 ) +atp_writeb_io (dev, c,0x19 ,0x00 ); } - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -1513,23 +1513,23 @@ phase_outs: }continue ; phase_ins: -atp_writeb_io (dev,0 ,0x14 ,0xff ); -atp_writeb_io (dev,0 ,0x18 ,0x20 ); +atp_writeb_io (dev, c,0x14 ,0xff ); +atp_writeb_io (dev, c,0x18 ,0x20 ); k =0 ; phase_ins1: - j =atp_readb_io (dev,0 ,0x1f ); + j =atp_readb_io (dev, c,0x1f );if ((j &0x01 ) !=0x00 ) { - mbuf[k++] =atp_readb_io (dev,0 ,0x19 ); + mbuf[k++] =atp_readb_io (dev, c,0x19 ); goto phase_ins1; }if ((j &0x80 ) ==0x00 ) { goto phase_ins1; } -while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -1545,15 +1545,15 @@ phase_ins1: }continue ; phase_cmds: -atp_writeb_io (dev,0 ,0x10 ,0x30 ); +atp_writeb_io (dev, c,0x10 ,0x30 ); tar_dcons: -atp_writeb_io (dev,0 ,0x14 ,0x00 ); -atp_writeb_io (dev,0 ,0x18 ,0x08 ); +atp_writeb_io (dev, c,0x14 ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) {continue ; }
@@ -1572,7 +1572,7 @@ tar_dcons:if (mbuf[4 ] >0x0c ) { mbuf[4 ] =0x0c ; } - dev->id[0 ][i].devsp = mbuf[4 ]; + dev->id[c][i].devsp = mbuf[4 ];if ((mbuf[3 ] <0x0d ) && (rmb ==0 )) { j =0xa0 ; goto set_syn_ok;
@@ -1591,12 +1591,12 @@ tar_dcons: } j =0x60 ; set_syn_ok: - dev->id[0 ][i].devsp = (dev->id[0 ][i].devsp &0x0f ) | j; + dev->id[c][i].devsp = (dev->id[c][i].devsp &0x0f ) | j; } -atp_writeb_io (dev,0 ,0x3a ,atp_readb_io (dev,0 ,0x3a ) &0xef ); +atp_writeb_io (dev, c,0x3a ,atp_readb_io (dev, c,0x3a ) &0xef ); } -static void is880 (struct atp_unit *dev) +static void is880 (struct atp_unit *dev,unsigned char c) {unsigned char i, j, k, rmb, n, lvdmode;unsigned short int m;
@@ -1615,167 +1615,167 @@ static void is880(struct atp_unit *dev)for (i =0 ; i <16 ; i++) { m =1 ; m = m << i; -if ((m & dev->active_id[0 ]) !=0 ) { +if ((m & dev->active_id[c]) !=0 ) {continue ; } -if (i == dev->host_id[0 ]) { -printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[0 ]); +if (i == dev->host_id[c]) { +printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[c]);continue ; } -atp_writeb_io (dev,0 ,0x1b ,0x01 ); -atp_writeb_io (dev,0 ,1 ,0x08 ); -atp_writeb_io (dev,0 ,2 ,0x7f ); -atp_writeb_io (dev,0 ,3 , satn[0 ]); -atp_writeb_io (dev,0 ,4 , satn[1 ]); -atp_writeb_io (dev,0 ,5 , satn[2 ]); -atp_writeb_io (dev,0 ,6 , satn[3 ]); -atp_writeb_io (dev,0 ,7 , satn[4 ]); -atp_writeb_io (dev,0 ,8 , satn[5 ]); -atp_writeb_io (dev,0 ,0x0f ,0 ); -atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); -atp_writeb_io (dev,0 ,0x12 ,0 ); -atp_writeb_io (dev,0 ,0x13 , satn[6 ]); -atp_writeb_io (dev,0 ,0x14 , satn[7 ]); +atp_writeb_io (dev, c,0x1b ,0x01 ); +atp_writeb_io (dev, c,1 ,0x08 ); +atp_writeb_io (dev, c,2 ,0x7f ); +atp_writeb_io (dev, c,3 , satn[0 ]); +atp_writeb_io (dev, c,4 , satn[1 ]); +atp_writeb_io (dev, c,5 , satn[2 ]); +atp_writeb_io (dev, c,6 , satn[3 ]); +atp_writeb_io (dev, c,7 , satn[4 ]); +atp_writeb_io (dev, c,8 , satn[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , satn[6 ]); +atp_writeb_io (dev, c,0x14 , satn[7 ]); j = i;if ((j &0x08 ) !=0 ) { j = (j &0x07 ) |0x40 ; } -atp_writeb_io (dev,0 ,0x15 , j); -atp_writeb_io (dev,0 ,0x18 , satn[8 ]); +atp_writeb_io (dev, c,0x15 , j); +atp_writeb_io (dev, c,0x18 , satn[8 ]); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; -while (atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); - dev->active_id[0 ] |= m; + dev->active_id[c] |= m; -atp_writeb_io (dev,0 ,0x10 ,0x30 ); -atp_writeb_io (dev,0 ,0x14 ,0x00 ); +atp_writeb_io (dev, c,0x10 ,0x30 ); +atp_writeb_io (dev, c,0x14 ,0x00 ); phase_cmd: -atp_writeb_io (dev,0 ,0x18 ,0x08 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) { -atp_writeb_io (dev,0 ,0x10 ,0x41 ); +atp_writeb_io (dev, c,0x10 ,0x41 ); goto phase_cmd; } sel_ok: -atp_writeb_io (dev,0 ,3 , inqd[0 ]); -atp_writeb_io (dev,0 ,4 , inqd[1 ]); -atp_writeb_io (dev,0 ,5 , inqd[2 ]); -atp_writeb_io (dev,0 ,6 , inqd[3 ]); -atp_writeb_io (dev,0 ,7 , inqd[4 ]); -atp_writeb_io (dev,0 ,8 , inqd[5 ]); -atp_writeb_io (dev,0 ,0x0f ,0 ); -atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); -atp_writeb_io (dev,0 ,0x12 ,0 ); -atp_writeb_io (dev,0 ,0x13 , inqd[6 ]); -atp_writeb_io (dev,0 ,0x14 , inqd[7 ]); -atp_writeb_io (dev,0 ,0x18 , inqd[8 ]); +atp_writeb_io (dev, c,3 , inqd[0 ]); +atp_writeb_io (dev, c,4 , inqd[1 ]); +atp_writeb_io (dev, c,5 , inqd[2 ]); +atp_writeb_io (dev, c,6 , inqd[3 ]); +atp_writeb_io (dev, c,7 , inqd[4 ]); +atp_writeb_io (dev, c,8 , inqd[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , inqd[6 ]); +atp_writeb_io (dev, c,0x14 , inqd[7 ]); +atp_writeb_io (dev, c,0x18 , inqd[8 ]); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; -while (atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); -atp_writeb_io (dev,0 ,0x1b ,0x00 ); -atp_writeb_io (dev,0 ,0x18 ,0x08 ); +atp_writeb_io (dev, c,0x1b ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); j =0 ; rd_inq_data: - k =atp_readb_io (dev,0 ,0x1f ); + k =atp_readb_io (dev, c,0x1f );if ((k &0x01 ) !=0 ) { - mbuf[j++] =atp_readb_io (dev,0 ,0x19 ); + mbuf[j++] =atp_readb_io (dev, c,0x19 ); goto rd_inq_data; }if ((k &0x80 ) ==0 ) { goto rd_inq_data; } - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j ==0x16 ) { goto inq_ok; } -atp_writeb_io (dev,0 ,0x10 ,0x46 ); -atp_writeb_io (dev,0 ,0x12 ,0 ); -atp_writeb_io (dev,0 ,0x13 ,0 ); -atp_writeb_io (dev,0 ,0x14 ,0 ); -atp_writeb_io (dev,0 ,0x18 ,0x08 ); +atp_writeb_io (dev, c,0x10 ,0x46 ); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 ,0 ); +atp_writeb_io (dev, c,0x14 ,0 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev,0 ,0x17 ) !=0x16 ) +if (atp_readb_io (dev, c,0x17 ) !=0x16 ) goto sel_ok; inq_ok: mbuf[36 ] =0 ;printk (KERN_INFO " ID: %2d %s\n" , i, &mbuf[8 ]); - dev->id[0 ][i].devtype = mbuf[0 ]; + dev->id[c][i].devtype = mbuf[0 ]; rmb = mbuf[1 ]; n = mbuf[7 ];if ((mbuf[7 ] &0x60 ) ==0 ) { goto not_wide; } -if ((i <8 ) && ((dev->global_map[0 ] &0x20 ) ==0 )) { +if ((i <8 ) && ((dev->global_map[c] &0x20 ) ==0 )) { goto not_wide; }if (lvdmode ==0 ) { goto chg_wide; } -if (dev->sp[0 ][i] !=0x04 )// force u2 +if (dev->sp[c][i] !=0x04 )// force u2 { goto chg_wide; } -atp_writeb_io (dev,0 ,0x1b ,0x01 ); -atp_writeb_io (dev,0 ,3 , satn[0 ]); -atp_writeb_io (dev,0 ,4 , satn[1 ]); -atp_writeb_io (dev,0 ,5 , satn[2 ]); -atp_writeb_io (dev,0 ,6 , satn[3 ]); -atp_writeb_io (dev,0 ,7 , satn[4 ]); -atp_writeb_io (dev,0 ,8 , satn[5 ]); -atp_writeb_io (dev,0 ,0x0f ,0 ); -atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); -atp_writeb_io (dev,0 ,0x12 ,0 ); -atp_writeb_io (dev,0 ,0x13 , satn[6 ]); -atp_writeb_io (dev,0 ,0x14 , satn[7 ]); -atp_writeb_io (dev,0 ,0x18 , satn[8 ]); +atp_writeb_io (dev, c,0x1b ,0x01 ); +atp_writeb_io (dev, c,3 , satn[0 ]); +atp_writeb_io (dev, c,4 , satn[1 ]); +atp_writeb_io (dev, c,5 , satn[2 ]); +atp_writeb_io (dev, c,6 , satn[3 ]); +atp_writeb_io (dev, c,7 , satn[4 ]); +atp_writeb_io (dev, c,8 , satn[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , satn[6 ]); +atp_writeb_io (dev, c,0x14 , satn[7 ]); +atp_writeb_io (dev, c,0x18 , satn[8 ]); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; -while (atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); try_u3: j =0 ; -atp_writeb_io (dev,0 ,0x14 ,0x09 ); -atp_writeb_io (dev,0 ,0x18 ,0x20 ); +atp_writeb_io (dev, c,0x14 ,0x09 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) -atp_writeb_io (dev,0 ,0x19 , u3[j++]); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev, c,0x19 , u3[j++]); } -while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -1787,12 +1787,12 @@ try_u3: }continue ; u3p_out: -atp_writeb_io (dev,0 ,0x18 ,0x20 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) -atp_writeb_io (dev,0 ,0x19 ,0 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev, c,0x19 ,0 ); } - j =atp_readb_io (dev,0 ,0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -1804,19 +1804,19 @@ u3p_out: }continue ; u3p_in: -atp_writeb_io (dev,0 ,0x14 ,0x09 ); -atp_writeb_io (dev,0 ,0x18 ,0x20 ); +atp_writeb_io (dev, c,0x14 ,0x09 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); k =0 ; u3p_in1: - j =atp_readb_io (dev,0 ,0x1f ); + j =atp_readb_io (dev, c,0x1f );if ((j &0x01 ) !=0 ) { - mbuf[k++] =atp_readb_io (dev,0 ,0x19 ); + mbuf[k++] =atp_readb_io (dev, c,0x19 ); goto u3p_in1; }if ((j &0x80 ) ==0x00 ) { goto u3p_in1; } - j =atp_readb_io (dev,0 ,0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto u3p_in; }
@@ -1828,14 +1828,14 @@ u3p_in1: }continue ; u3p_cmd: -atp_writeb_io (dev,0 ,0x10 ,0x30 ); -atp_writeb_io (dev,0 ,0x14 ,0x00 ); -atp_writeb_io (dev,0 ,0x18 ,0x08 ); +atp_writeb_io (dev, c,0x10 ,0x30 ); +atp_writeb_io (dev, c,0x14 ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) {if (j ==0x4e ) { goto u3p_out;
@@ -1854,48 +1854,48 @@ u3p_cmd:if (mbuf[3 ] ==0x09 ) { m =1 ; m = m << i; - dev->wide_id[0 ] |= m; - dev->id[0 ][i].devsp =0xce ; + dev->wide_id[c] |= m; + dev->id[c][i].devsp =0xce ;continue ; } chg_wide: -atp_writeb_io (dev,0 ,0x1b ,0x01 ); -atp_writeb_io (dev,0 ,3 , satn[0 ]); -atp_writeb_io (dev,0 ,4 , satn[1 ]); -atp_writeb_io (dev,0 ,5 , satn[2 ]); -atp_writeb_io (dev,0 ,6 , satn[3 ]); -atp_writeb_io (dev,0 ,7 , satn[4 ]); -atp_writeb_io (dev,0 ,8 , satn[5 ]); -atp_writeb_io (dev,0 ,0x0f ,0 ); -atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); -atp_writeb_io (dev,0 ,0x12 ,0 ); -atp_writeb_io (dev,0 ,0x13 , satn[6 ]); -atp_writeb_io (dev,0 ,0x14 , satn[7 ]); -atp_writeb_io (dev,0 ,0x18 , satn[8 ]); +atp_writeb_io (dev, c,0x1b ,0x01 ); +atp_writeb_io (dev, c,3 , satn[0 ]); +atp_writeb_io (dev, c,4 , satn[1 ]); +atp_writeb_io (dev, c,5 , satn[2 ]); +atp_writeb_io (dev, c,6 , satn[3 ]); +atp_writeb_io (dev, c,7 , satn[4 ]); +atp_writeb_io (dev, c,8 , satn[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , satn[6 ]); +atp_writeb_io (dev, c,0x14 , satn[7 ]); +atp_writeb_io (dev, c,0x18 , satn[8 ]); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; -while (atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); try_wide: j =0 ; -atp_writeb_io (dev,0 ,0x14 ,0x05 ); -atp_writeb_io (dev,0 ,0x18 ,0x20 ); +atp_writeb_io (dev, c,0x14 ,0x05 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) -atp_writeb_io (dev,0 ,0x19 , wide[j++]); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev, c,0x19 , wide[j++]); } -while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1907,12 +1907,12 @@ try_wide: }continue ; widep_out: -atp_writeb_io (dev,0 ,0x18 ,0x20 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) -atp_writeb_io (dev,0 ,0x19 ,0 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) +atp_writeb_io (dev, c,0x19 ,0 ); } - j =atp_readb_io (dev,0 ,0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1924,19 +1924,19 @@ widep_out: }continue ; widep_in: -atp_writeb_io (dev,0 ,0x14 ,0xff ); -atp_writeb_io (dev,0 ,0x18 ,0x20 ); +atp_writeb_io (dev, c,0x14 ,0xff ); +atp_writeb_io (dev, c,0x18 ,0x20 ); k =0 ; widep_in1: - j =atp_readb_io (dev,0 ,0x1f ); + j =atp_readb_io (dev, c,0x1f );if ((j &0x01 ) !=0 ) { - mbuf[k++] =atp_readb_io (dev,0 ,0x19 ); + mbuf[k++] =atp_readb_io (dev, c,0x19 ); goto widep_in1; }if ((j &0x80 ) ==0x00 ) { goto widep_in1; } - j =atp_readb_io (dev,0 ,0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto widep_in; }
@@ -1948,14 +1948,14 @@ widep_in1: }continue ; widep_cmd: -atp_writeb_io (dev,0 ,0x10 ,0x30 ); -atp_writeb_io (dev,0 ,0x14 ,0x00 ); -atp_writeb_io (dev,0 ,0x18 ,0x08 ); +atp_writeb_io (dev, c,0x10 ,0x30 ); +atp_writeb_io (dev, c,0x14 ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) {if (j ==0x4e ) { goto widep_out;
@@ -1976,80 +1976,80 @@ widep_cmd: } m =1 ; m = m << i; - dev->wide_id[0 ] |= m; + dev->wide_id[c] |= m; not_wide: -if ((dev->id[0 ][i].devtype ==0x00 ) || (dev->id[0 ][i].devtype ==0x07 ) || ((dev->id[0 ][i].devtype ==0x05 ) && ((n &0x10 ) !=0 ))) { +if ((dev->id[c][i].devtype ==0x00 ) || (dev->id[c][i].devtype ==0x07 ) || ((dev->id[c][i].devtype ==0x05 ) && ((n &0x10 ) !=0 ))) { m =1 ; m = m << i; -if ((dev->async[0 ] & m) !=0 ) { +if ((dev->async[c] & m) !=0 ) { goto set_sync; } }continue ; set_sync: -if (dev->sp[0 ][i] ==0x02 ) { +if (dev->sp[c][i] ==0x02 ) { synu[4 ] =0x0c ; synuw[4 ] =0x0c ; }else { -if (dev->sp[0 ][i] >=0x03 ) { +if (dev->sp[c][i] >=0x03 ) { synu[4 ] =0x0a ; synuw[4 ] =0x0a ; } } j =0 ; -if ((m & dev->wide_id[0 ]) !=0 ) { +if ((m & dev->wide_id[c]) !=0 ) { j |=0x01 ; } -atp_writeb_io (dev,0 ,0x1b , j); -atp_writeb_io (dev,0 ,3 , satn[0 ]); -atp_writeb_io (dev,0 ,4 , satn[1 ]); -atp_writeb_io (dev,0 ,5 , satn[2 ]); -atp_writeb_io (dev,0 ,6 , satn[3 ]); -atp_writeb_io (dev,0 ,7 , satn[4 ]); -atp_writeb_io (dev,0 ,8 , satn[5 ]); -atp_writeb_io (dev,0 ,0x0f ,0 ); -atp_writeb_io (dev,0 ,0x11 , dev->id[0 ][i].devsp); -atp_writeb_io (dev,0 ,0x12 ,0 ); -atp_writeb_io (dev,0 ,0x13 , satn[6 ]); -atp_writeb_io (dev,0 ,0x14 , satn[7 ]); -atp_writeb_io (dev,0 ,0x18 , satn[8 ]); +atp_writeb_io (dev, c,0x1b , j); +atp_writeb_io (dev, c,3 , satn[0 ]); +atp_writeb_io (dev, c,4 , satn[1 ]); +atp_writeb_io (dev, c,5 , satn[2 ]); +atp_writeb_io (dev, c,6 , satn[3 ]); +atp_writeb_io (dev, c,7 , satn[4 ]); +atp_writeb_io (dev, c,8 , satn[5 ]); +atp_writeb_io (dev, c,0x0f ,0 ); +atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); +atp_writeb_io (dev, c,0x12 ,0 ); +atp_writeb_io (dev, c,0x13 , satn[6 ]); +atp_writeb_io (dev, c,0x14 , satn[7 ]); +atp_writeb_io (dev, c,0x18 , satn[8 ]); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); -if (atp_readb_io (dev,0 ,0x17 ) !=0x11 &&atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e )continue ; -while (atp_readb_io (dev,0 ,0x17 ) !=0x8e ) +while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); try_sync: j =0 ; -atp_writeb_io (dev,0 ,0x14 ,0x06 ); -atp_writeb_io (dev,0 ,0x18 ,0x20 ); - -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0 ) { -if ((m & dev->wide_id[0 ]) !=0 ) { -if ((m & dev->ultra_map[0 ]) !=0 ) { -atp_writeb_io (dev,0 ,0x19 , synuw[j++]); +atp_writeb_io (dev, c,0x14 ,0x06 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); + +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) { +if ((m & dev->wide_id[c]) !=0 ) { +if ((m & dev->ultra_map[c]) !=0 ) { +atp_writeb_io (dev, c,0x19 , synuw[j++]); }else { -atp_writeb_io (dev,0 ,0x19 , synw[j++]); +atp_writeb_io (dev, c,0x19 , synw[j++]); } }else { -if ((m & dev->ultra_map[0 ]) !=0 ) { -atp_writeb_io (dev,0 ,0x19 , synu[j++]); +if ((m & dev->ultra_map[c]) !=0 ) { +atp_writeb_io (dev, c,0x19 , synu[j++]); }else { -atp_writeb_io (dev,0 ,0x19 , synn[j++]); +atp_writeb_io (dev, c,0x19 , synn[j++]); } } } } -while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ) &0x0f ; + j =atp_readb_io (dev, c,0x17 ) &0x0f ;if (j ==0x0f ) { goto phase_ins; }
@@ -2061,12 +2061,12 @@ try_sync: }continue ; phase_outs: -atp_writeb_io (dev,0 ,0x18 ,0x20 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) { -if ((atp_readb_io (dev,0 ,0x1f ) &0x01 ) !=0x00 ) -atp_writeb_io (dev,0 ,0x19 ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) { +if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0x00 ) +atp_writeb_io (dev, c,0x19 ,0x00 ); } - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -2082,23 +2082,23 @@ phase_outs: }continue ; phase_ins: -atp_writeb_io (dev,0 ,0x14 ,0x06 ); -atp_writeb_io (dev,0 ,0x18 ,0x20 ); +atp_writeb_io (dev, c,0x14 ,0x06 ); +atp_writeb_io (dev, c,0x18 ,0x20 ); k =0 ; phase_ins1: - j =atp_readb_io (dev,0 ,0x1f ); + j =atp_readb_io (dev, c,0x1f );if ((j &0x01 ) !=0x00 ) { - mbuf[k++] =atp_readb_io (dev,0 ,0x19 ); + mbuf[k++] =atp_readb_io (dev, c,0x19 ); goto phase_ins1; }if ((j &0x80 ) ==0x00 ) { goto phase_ins1; } -while ((atp_readb_io (dev,0 ,0x17 ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j ==0x85 ) { goto tar_dcons; }
@@ -2114,15 +2114,15 @@ phase_ins1: }continue ; phase_cmds: -atp_writeb_io (dev,0 ,0x10 ,0x30 ); +atp_writeb_io (dev, c,0x10 ,0x30 ); tar_dcons: -atp_writeb_io (dev,0 ,0x14 ,0x00 ); -atp_writeb_io (dev,0 ,0x18 ,0x08 ); +atp_writeb_io (dev, c,0x14 ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); -while ((atp_readb_io (dev,0 ,0x1f ) &0x80 ) ==0x00 ) +while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 )cpu_relax (); - j =atp_readb_io (dev,0 ,0x17 ); + j =atp_readb_io (dev, c,0x17 );if (j !=0x16 ) {continue ; }
@@ -2141,7 +2141,7 @@ tar_dcons:if (mbuf[4 ] >0x0e ) { mbuf[4 ] =0x0e ; } - dev->id[0 ][i].devsp = mbuf[4 ]; + dev->id[c][i].devsp = mbuf[4 ];if (mbuf[3 ] <0x0c ) { j =0xb0 ; goto set_syn_ok;
@@ -2164,7 +2164,7 @@ tar_dcons: } j =0x60 ; set_syn_ok: - dev->id[0 ][i].devsp = (dev->id[0 ][i].devsp &0x0f ) | j; + dev->id[c][i].devsp = (dev->id[c][i].devsp &0x0f ) | j; } }
@@ -2379,7 +2379,7 @@ flash_ok_880:outb (0x20 , base_io +0x51 );tscam (shpnt); -is880 (p); +is880 (p,0 );outb (0xb0 , base_io +0x38 ); shpnt->max_id =16 ; shpnt->this_id = host_id;
@@ -2609,7 +2609,7 @@ flash_ok_885:outb (0x20 , base_io +0x11 );tscam (shpnt); -is870 (p); +is870 (p,0 );outb ((inb (base_io +0x3a ) &0xef ), base_io +0x3a );outb ((inb (base_io +0x3b ) |0x20 ), base_io +0x3b );if (atpdev->chip_ver ==4 )
Signature · 1 line
Ondrej Zary
PATCH 24/34 atp870u: Move chip-specific lines out of is880() and is885()
In reply to Ondrej ZaryMove few chip-specifis lines out of is880() and is885() so they become almost identical.
--- drivers/scsi/atp870u.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-)
drivers/scsi/atp870u.c +10 -14
@@ -41,7 +41,7 @@static struct scsi_host_template atp870u_template;static void send_s870 (struct atp_unit *dev,unsigned char c); -static void is885 (struct atp_unit *dev,unsigned char c); +static void is885 (struct atp_unit *dev,unsigned char c,unsigned char lvdmode);static void tscam_885 (void );static inline void atp_writeb_base (struct atp_unit *atp,u8 reg,u8 val)
@@ -1596,9 +1596,9 @@ set_syn_ok:atp_writeb_io (dev, c,0x3a ,atp_readb_io (dev, c,0x3a ) &0xef ); } -static void is880 (struct atp_unit *dev,unsigned char c) +static void is880 (struct atp_unit *dev,unsigned char c,unsigned char lvdmode) { -unsigned char i, j, k, rmb, n, lvdmode; +unsigned char i, j, k, rmb, n;unsigned short int m;static unsigned char mbuf[512 ];static unsigned char satn[9 ] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,6 ,6 };
@@ -1610,8 +1610,6 @@ static void is880(struct atp_unit *dev, unsigned char c)static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 };static unsigned char u3[9 ] = {0x80 ,1 ,6 ,4 ,0x09 ,00 ,0x0e ,0x01 ,0x02 }; - lvdmode =atp_readb_base (dev,0x3f ) &0x40 ; -for (i =0 ; i <16 ; i++) { m =1 ; m = m << i;
@@ -2379,7 +2377,7 @@ flash_ok_880:outb (0x20 , base_io +0x51 );tscam (shpnt); -is880 (p,0 ); +is880 (p,0 ,atp_readb_base (p,0x3f ) &0x40 );outb (0xb0 , base_io +0x38 ); shpnt->max_id =16 ; shpnt->this_id = host_id;
@@ -2525,10 +2523,11 @@ flash_ok_885:tscam_885 ();printk (KERN_INFO " Scanning Channel A SCSI Device ...\n" ); -is885 (p,0 ); +is885 (p,0 ,atp_readb_io (p,0 ,0x1b ) >>7 ); +atp_writeb_io (p,0 ,0x16 ,0x80 );printk (KERN_INFO " Scanning Channel B SCSI Device ...\n" ); -is885 (p,1 ); - +is885 (p,1 ,atp_readb_io (p,1 ,0x1b ) >>7 ); +atp_writeb_io (p,1 ,0x16 ,0x80 ); k =inb (base_io +0x28 ) &0xcf ; k |=0xc0 ;outb (k, base_io +0x28 );
@@ -2830,9 +2829,9 @@ static void tscam_885(void) -static void is885 (struct atp_unit *dev,unsigned char c) +static void is885 (struct atp_unit *dev,unsigned char c,unsigned char lvdmode) { -unsigned char i, j, k, rmb, n, lvdmode; +unsigned char i, j, k, rmb, n;unsigned short int m;static unsigned char mbuf[512 ];static unsigned char satn[9 ] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,6 ,6 };
@@ -2844,8 +2843,6 @@ static void is885(struct atp_unit *dev, unsigned char c)static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 };static unsigned char u3[9 ] = {0x80 ,1 ,6 ,4 ,0x09 ,00 ,0x0e ,0x01 ,0x02 }; - lvdmode =atp_readb_io (dev, c,0x1b ) >>7 ; -for (i =0 ; i <16 ; i++) { m =1 ; m = m << i;
@@ -3409,7 +3406,6 @@ set_syn_ok:printk ("dev->id[%2d][%2d].devsp = %2x\n" ,c,i,dev->id[c][i].devsp);#endif } -atp_writeb_io (dev, c,0x16 ,0x80 ); }module_init (atp870u_init);
Signature · 1 line
Ondrej Zary
PATCH 25/34 atp870u: Remove is880()
In reply to Ondrej ZaryNow that is880() and is885() are almost identical (except for some cpu_relax() calls and debug printks), remove is880() and use is885() instead.
--- drivers/scsi/atp870u.c | 572 +----------------------------------------------- 1 file changed, 1 insertion(+), 571 deletions(-)
drivers/scsi/atp870u.c +1 -571
@@ -1596,576 +1596,6 @@ set_syn_ok:atp_writeb_io (dev, c,0x3a ,atp_readb_io (dev, c,0x3a ) &0xef ); } -static void is880 (struct atp_unit *dev,unsigned char c,unsigned char lvdmode) -{ -unsigned char i, j, k, rmb, n; -unsigned short int m; -static unsigned char mbuf[512 ]; -static unsigned char satn[9 ] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,6 ,6 }; -static unsigned char inqd[9 ] = {0x12 ,0 ,0 ,0 ,0x24 ,0 ,0 ,0x24 ,6 }; -static unsigned char synn[6 ] = {0x80 ,1 ,3 ,1 ,0x19 ,0x0e }; -unsigned char synu[6 ] = {0x80 ,1 ,3 ,1 ,0x0a ,0x0e }; -static unsigned char synw[6 ] = {0x80 ,1 ,3 ,1 ,0x19 ,0x0e }; -unsigned char synuw[6 ] = {0x80 ,1 ,3 ,1 ,0x0a ,0x0e }; -static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 }; -static unsigned char u3[9 ] = {0x80 ,1 ,6 ,4 ,0x09 ,00 ,0x0e ,0x01 ,0x02 }; - -for (i =0 ; i <16 ; i++) { - m =1 ; - m = m << i; -if ((m & dev->active_id[c]) !=0 ) { -continue ; - } -if (i == dev->host_id[c]) { -printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[c]); -continue ; - } -atp_writeb_io (dev, c,0x1b ,0x01 ); -atp_writeb_io (dev, c,1 ,0x08 ); -atp_writeb_io (dev, c,2 ,0x7f ); -atp_writeb_io (dev, c,3 , satn[0 ]); -atp_writeb_io (dev, c,4 , satn[1 ]); -atp_writeb_io (dev, c,5 , satn[2 ]); -atp_writeb_io (dev, c,6 , satn[3 ]); -atp_writeb_io (dev, c,7 , satn[4 ]); -atp_writeb_io (dev, c,8 , satn[5 ]); -atp_writeb_io (dev, c,0x0f ,0 ); -atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); -atp_writeb_io (dev, c,0x12 ,0 ); -atp_writeb_io (dev, c,0x13 , satn[6 ]); -atp_writeb_io (dev, c,0x14 , satn[7 ]); - j = i; -if ((j &0x08 ) !=0 ) { - j = (j &0x07 ) |0x40 ; - } -atp_writeb_io (dev, c,0x15 , j); -atp_writeb_io (dev, c,0x18 , satn[8 ]); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - -if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e ) -continue ; - -while (atp_readb_io (dev, c,0x17 ) !=0x8e ) -cpu_relax (); - - dev->active_id[c] |= m; - -atp_writeb_io (dev, c,0x10 ,0x30 ); -atp_writeb_io (dev, c,0x14 ,0x00 ); - -phase_cmd: -atp_writeb_io (dev, c,0x18 ,0x08 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ); -if (j !=0x16 ) { -atp_writeb_io (dev, c,0x10 ,0x41 ); - goto phase_cmd; - } -sel_ok: -atp_writeb_io (dev, c,3 , inqd[0 ]); -atp_writeb_io (dev, c,4 , inqd[1 ]); -atp_writeb_io (dev, c,5 , inqd[2 ]); -atp_writeb_io (dev, c,6 , inqd[3 ]); -atp_writeb_io (dev, c,7 , inqd[4 ]); -atp_writeb_io (dev, c,8 , inqd[5 ]); -atp_writeb_io (dev, c,0x0f ,0 ); -atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); -atp_writeb_io (dev, c,0x12 ,0 ); -atp_writeb_io (dev, c,0x13 , inqd[6 ]); -atp_writeb_io (dev, c,0x14 , inqd[7 ]); -atp_writeb_io (dev, c,0x18 , inqd[8 ]); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - -if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e ) -continue ; - -while (atp_readb_io (dev, c,0x17 ) !=0x8e ) -cpu_relax (); - -atp_writeb_io (dev, c,0x1b ,0x00 ); -atp_writeb_io (dev, c,0x18 ,0x08 ); - j =0 ; -rd_inq_data: - k =atp_readb_io (dev, c,0x1f ); -if ((k &0x01 ) !=0 ) { - mbuf[j++] =atp_readb_io (dev, c,0x19 ); - goto rd_inq_data; - } -if ((k &0x80 ) ==0 ) { - goto rd_inq_data; - } - j =atp_readb_io (dev, c,0x17 ); -if (j ==0x16 ) { - goto inq_ok; - } -atp_writeb_io (dev, c,0x10 ,0x46 ); -atp_writeb_io (dev, c,0x12 ,0 ); -atp_writeb_io (dev, c,0x13 ,0 ); -atp_writeb_io (dev, c,0x14 ,0 ); -atp_writeb_io (dev, c,0x18 ,0x08 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - -if (atp_readb_io (dev, c,0x17 ) !=0x16 ) - goto sel_ok; - -inq_ok: - mbuf[36 ] =0 ; -printk (KERN_INFO " ID: %2d %s\n" , i, &mbuf[8 ]); - dev->id[c][i].devtype = mbuf[0 ]; - rmb = mbuf[1 ]; - n = mbuf[7 ]; -if ((mbuf[7 ] &0x60 ) ==0 ) { - goto not_wide; - } -if ((i <8 ) && ((dev->global_map[c] &0x20 ) ==0 )) { - goto not_wide; - } -if (lvdmode ==0 ) { - goto chg_wide; - } -if (dev->sp[c][i] !=0x04 )// force u2 - { - goto chg_wide; - } - -atp_writeb_io (dev, c,0x1b ,0x01 ); -atp_writeb_io (dev, c,3 , satn[0 ]); -atp_writeb_io (dev, c,4 , satn[1 ]); -atp_writeb_io (dev, c,5 , satn[2 ]); -atp_writeb_io (dev, c,6 , satn[3 ]); -atp_writeb_io (dev, c,7 , satn[4 ]); -atp_writeb_io (dev, c,8 , satn[5 ]); -atp_writeb_io (dev, c,0x0f ,0 ); -atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); -atp_writeb_io (dev, c,0x12 ,0 ); -atp_writeb_io (dev, c,0x13 , satn[6 ]); -atp_writeb_io (dev, c,0x14 , satn[7 ]); -atp_writeb_io (dev, c,0x18 , satn[8 ]); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - -if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e ) -continue ; - -while (atp_readb_io (dev, c,0x17 ) !=0x8e ) -cpu_relax (); - -try_u3: - j =0 ; -atp_writeb_io (dev, c,0x14 ,0x09 ); -atp_writeb_io (dev, c,0x18 ,0x20 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) -atp_writeb_io (dev, c,0x19 , u3[j++]); - } - -while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ) &0x0f ; -if (j ==0x0f ) { - goto u3p_in; - } -if (j ==0x0a ) { - goto u3p_cmd; - } -if (j ==0x0e ) { - goto try_u3; - } -continue ; -u3p_out: -atp_writeb_io (dev, c,0x18 ,0x20 ); -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) -atp_writeb_io (dev, c,0x19 ,0 ); - } - j =atp_readb_io (dev, c,0x17 ) &0x0f ; -if (j ==0x0f ) { - goto u3p_in; - } -if (j ==0x0a ) { - goto u3p_cmd; - } -if (j ==0x0e ) { - goto u3p_out; - } -continue ; -u3p_in: -atp_writeb_io (dev, c,0x14 ,0x09 ); -atp_writeb_io (dev, c,0x18 ,0x20 ); - k =0 ; -u3p_in1: - j =atp_readb_io (dev, c,0x1f ); -if ((j &0x01 ) !=0 ) { - mbuf[k++] =atp_readb_io (dev, c,0x19 ); - goto u3p_in1; - } -if ((j &0x80 ) ==0x00 ) { - goto u3p_in1; - } - j =atp_readb_io (dev, c,0x17 ) &0x0f ; -if (j ==0x0f ) { - goto u3p_in; - } -if (j ==0x0a ) { - goto u3p_cmd; - } -if (j ==0x0e ) { - goto u3p_out; - } -continue ; -u3p_cmd: -atp_writeb_io (dev, c,0x10 ,0x30 ); -atp_writeb_io (dev, c,0x14 ,0x00 ); -atp_writeb_io (dev, c,0x18 ,0x08 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ); -if (j !=0x16 ) { -if (j ==0x4e ) { - goto u3p_out; - } -continue ; - } -if (mbuf[0 ] !=0x01 ) { - goto chg_wide; - } -if (mbuf[1 ] !=0x06 ) { - goto chg_wide; - } -if (mbuf[2 ] !=0x04 ) { - goto chg_wide; - } -if (mbuf[3 ] ==0x09 ) { - m =1 ; - m = m << i; - dev->wide_id[c] |= m; - dev->id[c][i].devsp =0xce ; -continue ; - } -chg_wide: -atp_writeb_io (dev, c,0x1b ,0x01 ); -atp_writeb_io (dev, c,3 , satn[0 ]); -atp_writeb_io (dev, c,4 , satn[1 ]); -atp_writeb_io (dev, c,5 , satn[2 ]); -atp_writeb_io (dev, c,6 , satn[3 ]); -atp_writeb_io (dev, c,7 , satn[4 ]); -atp_writeb_io (dev, c,8 , satn[5 ]); -atp_writeb_io (dev, c,0x0f ,0 ); -atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); -atp_writeb_io (dev, c,0x12 ,0 ); -atp_writeb_io (dev, c,0x13 , satn[6 ]); -atp_writeb_io (dev, c,0x14 , satn[7 ]); -atp_writeb_io (dev, c,0x18 , satn[8 ]); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - -if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e ) -continue ; - -while (atp_readb_io (dev, c,0x17 ) !=0x8e ) -cpu_relax (); - -try_wide: - j =0 ; -atp_writeb_io (dev, c,0x14 ,0x05 ); -atp_writeb_io (dev, c,0x18 ,0x20 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) -atp_writeb_io (dev, c,0x19 , wide[j++]); - } - -while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ) &0x0f ; -if (j ==0x0f ) { - goto widep_in; - } -if (j ==0x0a ) { - goto widep_cmd; - } -if (j ==0x0e ) { - goto try_wide; - } -continue ; -widep_out: -atp_writeb_io (dev, c,0x18 ,0x20 ); -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) -atp_writeb_io (dev, c,0x19 ,0 ); - } - j =atp_readb_io (dev, c,0x17 ) &0x0f ; -if (j ==0x0f ) { - goto widep_in; - } -if (j ==0x0a ) { - goto widep_cmd; - } -if (j ==0x0e ) { - goto widep_out; - } -continue ; -widep_in: -atp_writeb_io (dev, c,0x14 ,0xff ); -atp_writeb_io (dev, c,0x18 ,0x20 ); - k =0 ; -widep_in1: - j =atp_readb_io (dev, c,0x1f ); -if ((j &0x01 ) !=0 ) { - mbuf[k++] =atp_readb_io (dev, c,0x19 ); - goto widep_in1; - } -if ((j &0x80 ) ==0x00 ) { - goto widep_in1; - } - j =atp_readb_io (dev, c,0x17 ) &0x0f ; -if (j ==0x0f ) { - goto widep_in; - } -if (j ==0x0a ) { - goto widep_cmd; - } -if (j ==0x0e ) { - goto widep_out; - } -continue ; -widep_cmd: -atp_writeb_io (dev, c,0x10 ,0x30 ); -atp_writeb_io (dev, c,0x14 ,0x00 ); -atp_writeb_io (dev, c,0x18 ,0x08 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ); -if (j !=0x16 ) { -if (j ==0x4e ) { - goto widep_out; - } -continue ; - } -if (mbuf[0 ] !=0x01 ) { - goto not_wide; - } -if (mbuf[1 ] !=0x02 ) { - goto not_wide; - } -if (mbuf[2 ] !=0x03 ) { - goto not_wide; - } -if (mbuf[3 ] !=0x01 ) { - goto not_wide; - } - m =1 ; - m = m << i; - dev->wide_id[c] |= m; -not_wide: -if ((dev->id[c][i].devtype ==0x00 ) || (dev->id[c][i].devtype ==0x07 ) || ((dev->id[c][i].devtype ==0x05 ) && ((n &0x10 ) !=0 ))) { - m =1 ; - m = m << i; -if ((dev->async[c] & m) !=0 ) { - goto set_sync; - } - } -continue ; -set_sync: -if (dev->sp[c][i] ==0x02 ) { - synu[4 ] =0x0c ; - synuw[4 ] =0x0c ; - }else { -if (dev->sp[c][i] >=0x03 ) { - synu[4 ] =0x0a ; - synuw[4 ] =0x0a ; - } - } - j =0 ; -if ((m & dev->wide_id[c]) !=0 ) { - j |=0x01 ; - } -atp_writeb_io (dev, c,0x1b , j); -atp_writeb_io (dev, c,3 , satn[0 ]); -atp_writeb_io (dev, c,4 , satn[1 ]); -atp_writeb_io (dev, c,5 , satn[2 ]); -atp_writeb_io (dev, c,6 , satn[3 ]); -atp_writeb_io (dev, c,7 , satn[4 ]); -atp_writeb_io (dev, c,8 , satn[5 ]); -atp_writeb_io (dev, c,0x0f ,0 ); -atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); -atp_writeb_io (dev, c,0x12 ,0 ); -atp_writeb_io (dev, c,0x13 , satn[6 ]); -atp_writeb_io (dev, c,0x14 , satn[7 ]); -atp_writeb_io (dev, c,0x18 , satn[8 ]); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - -if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e ) -continue ; - -while (atp_readb_io (dev, c,0x17 ) !=0x8e ) -cpu_relax (); - -try_sync: - j =0 ; -atp_writeb_io (dev, c,0x14 ,0x06 ); -atp_writeb_io (dev, c,0x18 ,0x20 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) { -if ((m & dev->wide_id[c]) !=0 ) { -if ((m & dev->ultra_map[c]) !=0 ) { -atp_writeb_io (dev, c,0x19 , synuw[j++]); - }else { -atp_writeb_io (dev, c,0x19 , synw[j++]); - } - }else { -if ((m & dev->ultra_map[c]) !=0 ) { -atp_writeb_io (dev, c,0x19 , synu[j++]); - }else { -atp_writeb_io (dev, c,0x19 , synn[j++]); - } - } - } - } - -while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ) &0x0f ; -if (j ==0x0f ) { - goto phase_ins; - } -if (j ==0x0a ) { - goto phase_cmds; - } -if (j ==0x0e ) { - goto try_sync; - } -continue ; -phase_outs: -atp_writeb_io (dev, c,0x18 ,0x20 ); -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) { -if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0x00 ) -atp_writeb_io (dev, c,0x19 ,0x00 ); - } - j =atp_readb_io (dev, c,0x17 ); -if (j ==0x85 ) { - goto tar_dcons; - } - j &=0x0f ; -if (j ==0x0f ) { - goto phase_ins; - } -if (j ==0x0a ) { - goto phase_cmds; - } -if (j ==0x0e ) { - goto phase_outs; - } -continue ; -phase_ins: -atp_writeb_io (dev, c,0x14 ,0x06 ); -atp_writeb_io (dev, c,0x18 ,0x20 ); - k =0 ; -phase_ins1: - j =atp_readb_io (dev, c,0x1f ); -if ((j &0x01 ) !=0x00 ) { - mbuf[k++] =atp_readb_io (dev, c,0x19 ); - goto phase_ins1; - } -if ((j &0x80 ) ==0x00 ) { - goto phase_ins1; - } - -while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ); -if (j ==0x85 ) { - goto tar_dcons; - } - j &=0x0f ; -if (j ==0x0f ) { - goto phase_ins; - } -if (j ==0x0a ) { - goto phase_cmds; - } -if (j ==0x0e ) { - goto phase_outs; - } -continue ; -phase_cmds: -atp_writeb_io (dev, c,0x10 ,0x30 ); -tar_dcons: -atp_writeb_io (dev, c,0x14 ,0x00 ); -atp_writeb_io (dev, c,0x18 ,0x08 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ); -if (j !=0x16 ) { -continue ; - } -if (mbuf[0 ] !=0x01 ) { -continue ; - } -if (mbuf[1 ] !=0x03 ) { -continue ; - } -if (mbuf[4 ] ==0x00 ) { -continue ; - } -if (mbuf[3 ] >0x64 ) { -continue ; - } -if (mbuf[4 ] >0x0e ) { - mbuf[4 ] =0x0e ; - } - dev->id[c][i].devsp = mbuf[4 ]; -if (mbuf[3 ] <0x0c ) { - j =0xb0 ; - goto set_syn_ok; - } -if ((mbuf[3 ] <0x0d ) && (rmb ==0 )) { - j =0xa0 ; - goto set_syn_ok; - } -if (mbuf[3 ] <0x1a ) { - j =0x20 ; - goto set_syn_ok; - } -if (mbuf[3 ] <0x33 ) { - j =0x40 ; - goto set_syn_ok; - } -if (mbuf[3 ] <0x4c ) { - j =0x50 ; - goto set_syn_ok; - } - j =0x60 ; -set_syn_ok: - dev->id[c][i].devsp = (dev->id[c][i].devsp &0x0f ) | j; - } -} -static void atp870u_free_tables (struct Scsi_Host *host) {struct atp_unit *atp_dev = (struct atp_unit *)&host->hostdata;
@@ -2377,7 +1807,7 @@ flash_ok_880:outb (0x20 , base_io +0x51 );tscam (shpnt); -is880 (p,0 ,atp_readb_base (p,0x3f ) &0x40 ); +is885 (p,0 ,atp_readb_base (p,0x3f ) &0x40 );outb (0xb0 , base_io +0x38 ); shpnt->max_id =16 ; shpnt->this_id = host_id;
Signature · 1 line
Ondrej Zary
PATCH 26/34 atp870u: Add wide_chip parameter to is870() and is885()
In reply to Ondrej ZaryDon't check chip_ver in is870() but add wide_chip parameter for that. Then add the non-wide support to is885().
--- drivers/scsi/atp870u.c | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-)
drivers/scsi/atp870u.c +25 -21
@@ -41,7 +41,7 @@static struct scsi_host_template atp870u_template;static void send_s870 (struct atp_unit *dev,unsigned char c); -static void is885 (struct atp_unit *dev,unsigned char c,unsigned char lvdmode); +static void is885 (struct atp_unit *dev,unsigned char c,bool wide_chip,unsigned char lvdmode);static void tscam_885 (void );static inline void atp_writeb_base (struct atp_unit *atp,u8 reg,u8 val)
@@ -1162,7 +1162,7 @@ static void tscam(struct Scsi_Host *host) } } -static void is870 (struct atp_unit *dev,unsigned char c) +static void is870 (struct atp_unit *dev,unsigned char c,bool wide_chip) {unsigned char i, j, k, rmb, n;unsigned short int m;
@@ -1177,9 +1177,8 @@ static void is870(struct atp_unit *dev, unsigned char c)atp_writeb_io (dev, c,0x3a ,atp_readb_io (dev, c,0x3a ) |0x10 );for (i =0 ; i <16 ; i++) { -if ((dev->chip_ver !=4 ) && (i >7 )) { +if (!wide_chip && (i >7 ))break ; - } m =1 ; m = m << i;if ((m & dev->active_id[c]) !=0 ) {
@@ -1189,11 +1188,7 @@ static void is870(struct atp_unit *dev, unsigned char c)printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[c]);continue ; } -if (dev->chip_ver ==4 ) { -atp_writeb_io (dev, c,0x1b ,0x01 ); - }else { -atp_writeb_io (dev, c,0x1b ,0x00 ); - } +atp_writeb_io (dev, c,0x1b , wide_chip ?0x01 :0x00 );atp_writeb_io (dev, c,1 ,0x08 );atp_writeb_io (dev, c,2 ,0x7f );atp_writeb_io (dev, c,3 , satn[0 ]);
@@ -1262,7 +1257,7 @@ sel_ok:while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); -if (dev->chip_ver ==4 ) +if (wide_chip)atp_writeb_io (dev, c,0x1b ,0x00 );atp_writeb_io (dev, c,0x18 ,0x08 );
@@ -1298,9 +1293,8 @@ inq_ok: dev->id[c][i].devtype = mbuf[0 ]; rmb = mbuf[1 ]; n = mbuf[7 ]; -if (dev->chip_ver !=4 ) { +if (!wide_chip) goto not_wide; - }if ((mbuf[7 ] &0x60 ) ==0 ) { goto not_wide; }
@@ -1807,7 +1801,7 @@ flash_ok_880:outb (0x20 , base_io +0x51 );tscam (shpnt); -is885 (p,0 ,atp_readb_base (p,0x3f ) &0x40 ); +is885 (p,0 , true,atp_readb_base (p,0x3f ) &0x40 );outb (0xb0 , base_io +0x38 ); shpnt->max_id =16 ; shpnt->this_id = host_id;
@@ -1953,10 +1947,10 @@ flash_ok_885:tscam_885 ();printk (KERN_INFO " Scanning Channel A SCSI Device ...\n" ); -is885 (p,0 ,atp_readb_io (p,0 ,0x1b ) >>7 ); +is885 (p,0 , true,atp_readb_io (p,0 ,0x1b ) >>7 );atp_writeb_io (p,0 ,0x16 ,0x80 );printk (KERN_INFO " Scanning Channel B SCSI Device ...\n" ); -is885 (p,1 ,atp_readb_io (p,1 ,0x1b ) >>7 ); +is885 (p,1 , true,atp_readb_io (p,1 ,0x1b ) >>7 );atp_writeb_io (p,1 ,0x16 ,0x80 ); k =inb (base_io +0x28 ) &0xcf ; k |=0xc0 ;
@@ -2038,7 +2032,7 @@ flash_ok_885:outb (0x20 , base_io +0x11 );tscam (shpnt); -is870 (p,0 ); +is870 (p,0 , p->chip_ver ==4 );outb ((inb (base_io +0x3a ) &0xef ), base_io +0x3a );outb ((inb (base_io +0x3b ) |0x20 ), base_io +0x3b );if (atpdev->chip_ver ==4 )
@@ -2259,7 +2253,7 @@ static void tscam_885(void) -static void is885 (struct atp_unit *dev,unsigned char c,unsigned char lvdmode) +static void is885 (struct atp_unit *dev,unsigned char c,bool wide_chip,unsigned char lvdmode) {unsigned char i, j, k, rmb, n;unsigned short int m;
@@ -2274,6 +2268,8 @@ static void is885(struct atp_unit *dev, unsigned char c, unsigned char lvdmode)static unsigned char u3[9 ] = {0x80 ,1 ,6 ,4 ,0x09 ,00 ,0x0e ,0x01 ,0x02 };for (i =0 ; i <16 ; i++) { +if (!wide_chip && (i >7 )) +break ; m =1 ; m = m << i;if ((m & dev->active_id[c]) !=0 ) {
@@ -2283,7 +2279,7 @@ static void is885(struct atp_unit *dev, unsigned char c, unsigned char lvdmode)printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[c]);continue ; } -atp_writeb_io (dev, c,0x1b ,0x01 ); +atp_writeb_io (dev, c,0x1b , wide_chip ?0x01 :0x00 );atp_writeb_io (dev, c,1 ,0x08 );atp_writeb_io (dev, c,2 ,0x7f );atp_writeb_io (dev, c,3 , satn[0 ]);
@@ -2352,7 +2348,9 @@ sel_ok:while (atp_readb_io (dev, c,0x17 ) !=0x8e )cpu_relax (); -atp_writeb_io (dev, c,0x1b ,0x00 ); +if (wide_chip) +atp_writeb_io (dev, c,0x1b ,0x00 ); +atp_writeb_io (dev, c,0x18 ,0x08 ); j =0 ; rd_inq_data:
@@ -2386,11 +2384,17 @@ inq_ok: dev->id[c][i].devtype = mbuf[0 ]; rmb = mbuf[1 ]; n = mbuf[7 ]; +if (!wide_chip) + goto not_wide;if ((mbuf[7 ] &0x60 ) ==0 ) { goto not_wide; } -if ((i <8 ) && ((dev->global_map[c] &0x20 ) ==0 )) { - goto not_wide; +if (dev->dev_id ==ATP885_DEVID || dev->dev_id ==ATP880_DEVID1 || dev->dev_id ==ATP880_DEVID2 ) { +if ((i <8 ) && ((dev->global_map[c] &0x20 ) ==0 )) + goto not_wide; + }else {/* result of is870() merge - is this a bug? */ +if ((dev->global_map[c] &0x20 ) ==0 ) + goto not_wide; }if (lvdmode ==0 ) { goto chg_wide;
Signature · 1 line
Ondrej Zary
PATCH 27/34 atp870u: Add remaining 870 support to is885()
In reply to Ondrej ZaryAdd remaining 870 support to is885():
- different synw, no synuw
- synu[4] = 0x0c
- atp_writeb_io(dev, c, 0x04, 0x00); instead of atp_writeb_io(dev, c, 0x14, 0x00); (isn't that a bug?)
- atp_writeb_io(dev, c, 0x14, 0xff); instead of atp_writeb_io(dev, c, 0x14, 0x06);
- different mbuf[3] and mbuf[4] checks
--- drivers/scsi/atp870u.c | 45 +++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-)
drivers/scsi/atp870u.c +31 -14
@@ -2263,6 +2263,7 @@ static void is885(struct atp_unit *dev, unsigned char c, bool wide_chip, unsignestatic unsigned char synn[6 ] = {0x80 ,1 ,3 ,1 ,0x19 ,0x0e };unsigned char synu[6 ] = {0x80 ,1 ,3 ,1 ,0x0a ,0x0e };static unsigned char synw[6 ] = {0x80 ,1 ,3 ,1 ,0x19 ,0x0e }; +static unsigned char synw_870[6 ] = {0x80 ,1 ,3 ,1 ,0x0c ,0x07 };unsigned char synuw[6 ] = {0x80 ,1 ,3 ,1 ,0x0a ,0x0e };static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 };static unsigned char u3[9 ] = {0x80 ,1 ,6 ,4 ,0x09 ,00 ,0x0e ,0x01 ,0x02 };
@@ -2312,7 +2313,10 @@ static void is885(struct atp_unit *dev, unsigned char c, bool wide_chip, unsigne dev->active_id[c] |= m;atp_writeb_io (dev, c,0x10 ,0x30 ); -atp_writeb_io (dev, c,0x14 ,0x00 ); +if (dev->dev_id ==ATP885_DEVID || dev->dev_id ==ATP880_DEVID1 || dev->dev_id ==ATP880_DEVID2 ) +atp_writeb_io (dev, c,0x14 ,0x00 ); +else /* result of is870() merge - is this a bug? */ +atp_writeb_io (dev, c,0x04 ,0x00 ); phase_cmd:atp_writeb_io (dev, c,0x18 ,0x08 );
@@ -2658,7 +2662,7 @@ not_wide: }continue ; set_sync: -if (dev->sp[c][i] ==0x02 ) { +if ((dev->dev_id !=ATP885_DEVID && dev->dev_id !=ATP880_DEVID1 && dev->dev_id !=ATP880_DEVID2 ) || (dev->sp[c][i] ==0x02 )) { synu[4 ] =0x0c ; synuw[4 ] =0x0c ; }else {
@@ -2702,11 +2706,14 @@ try_sync:while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) {if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) {if ((m & dev->wide_id[c]) !=0 ) { -if ((m & dev->ultra_map[c]) !=0 ) { -atp_writeb_io (dev, c,0x19 , synuw[j++]); - }else { -atp_writeb_io (dev, c,0x19 , synw[j++]); - } +if (dev->dev_id ==ATP885_DEVID || dev->dev_id ==ATP880_DEVID1 || dev->dev_id ==ATP880_DEVID2 ) { +if ((m & dev->ultra_map[c]) !=0 ) { +atp_writeb_io (dev, c,0x19 , synuw[j++]); + }else { +atp_writeb_io (dev, c,0x19 , synw[j++]); + } + }else +atp_writeb_io (dev, c,0x19 , synw_870[j++]); }else {if ((m & dev->ultra_map[c]) !=0 ) {atp_writeb_io (dev, c,0x19 , synu[j++]);
@@ -2754,7 +2761,10 @@ phase_outs: }continue ; phase_ins: -atp_writeb_io (dev, c,0x14 ,0x06 ); +if (dev->dev_id ==ATP885_DEVID || dev->dev_id ==ATP880_DEVID1 || dev->dev_id ==ATP880_DEVID2 ) +atp_writeb_io (dev, c,0x14 ,0x06 ); +else +atp_writeb_io (dev, c,0x14 ,0xff );atp_writeb_io (dev, c,0x18 ,0x20 ); k =0 ; phase_ins1:
@@ -2809,14 +2819,21 @@ tar_dcons:if (mbuf[3 ] >0x64 ) {continue ; } -if (mbuf[4 ] >0x0e ) { - mbuf[4 ] =0x0e ; +if (dev->dev_id ==ATP885_DEVID || dev->dev_id ==ATP880_DEVID1 || dev->dev_id ==ATP880_DEVID2 ) { +if (mbuf[4 ] >0x0e ) { + mbuf[4 ] =0x0e ; + } + }else { +if (mbuf[4 ] >0x0c ) { + mbuf[4 ] =0x0c ; + } } dev->id[c][i].devsp = mbuf[4 ]; -if (mbuf[3 ] <0x0c ) { - j =0xb0 ; - goto set_syn_ok; - } +if (dev->dev_id ==ATP885_DEVID || dev->dev_id ==ATP880_DEVID1 || dev->dev_id ==ATP880_DEVID2 ) +if (mbuf[3 ] <0x0c ) { + j =0xb0 ; + goto set_syn_ok; + }if ((mbuf[3 ] <0x0d ) && (rmb ==0 )) { j =0xa0 ; goto set_syn_ok;
Signature · 1 line
Ondrej Zary
PATCH 28/34 atp870u: Move 870-specific code out of is870()
In reply to Ondrej ZaryMove few remaining 870-specific code lines out of is870()
--- drivers/scsi/atp870u.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
drivers/scsi/atp870u.c +2 -3
@@ -1174,8 +1174,6 @@ static void is870(struct atp_unit *dev, unsigned char c, bool wide_chip)static unsigned char synw[6 ] = {0x80 ,1 ,3 ,1 ,0x0c ,0x07 };static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 }; -atp_writeb_io (dev, c,0x3a ,atp_readb_io (dev, c,0x3a ) |0x10 ); -for (i =0 ; i <16 ; i++) {if (!wide_chip && (i >7 ))break ;
@@ -1587,7 +1585,6 @@ tar_dcons: set_syn_ok: dev->id[c][i].devsp = (dev->id[c][i].devsp &0x0f ) | j; } -atp_writeb_io (dev, c,0x3a ,atp_readb_io (dev, c,0x3a ) &0xef ); }static void atp870u_free_tables (struct Scsi_Host *host)
@@ -2032,7 +2029,9 @@ flash_ok_885:outb (0x20 , base_io +0x11 );tscam (shpnt); +atp_writeb_io (p,0 ,0x3a ,atp_readb_io (p,0 ,0x3a ) |0x10 );is870 (p,0 , p->chip_ver ==4 ); +atp_writeb_io (p,0 ,0x3a ,atp_readb_io (p,0 ,0x3a ) &0xef );outb ((inb (base_io +0x3a ) &0xef ), base_io +0x3a );outb ((inb (base_io +0x3b ) |0x20 ), base_io +0x3b );if (atpdev->chip_ver ==4 )
Signature · 1 line
Ondrej Zary
PATCH 29/34 atp870u: Remove is870()
In reply to Ondrej ZaryNow that is885() supports everything from is870() and the rest of the code is almost identical, remove is870() and use is885() instead.
--- drivers/scsi/atp870u.c | 427 +----------------------------------------------- 1 file changed, 1 insertion(+), 426 deletions(-)
drivers/scsi/atp870u.c +1 -426
@@ -1162,431 +1162,6 @@ static void tscam(struct Scsi_Host *host) } } -static void is870 (struct atp_unit *dev,unsigned char c,bool wide_chip) -{ -unsigned char i, j, k, rmb, n; -unsigned short int m; -static unsigned char mbuf[512 ]; -static unsigned char satn[9 ] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,6 ,6 }; -static unsigned char inqd[9 ] = {0x12 ,0 ,0 ,0 ,0x24 ,0 ,0 ,0x24 ,6 }; -static unsigned char synn[6 ] = {0x80 ,1 ,3 ,1 ,0x19 ,0x0e }; -static unsigned char synu[6 ] = {0x80 ,1 ,3 ,1 ,0x0c ,0x0e }; -static unsigned char synw[6 ] = {0x80 ,1 ,3 ,1 ,0x0c ,0x07 }; -static unsigned char wide[6 ] = {0x80 ,1 ,2 ,3 ,1 ,0 }; - -for (i =0 ; i <16 ; i++) { -if (!wide_chip && (i >7 )) -break ; - m =1 ; - m = m << i; -if ((m & dev->active_id[c]) !=0 ) { -continue ; - } -if (i == dev->host_id[c]) { -printk (KERN_INFO " ID: %2d Host Adapter\n" , dev->host_id[c]); -continue ; - } -atp_writeb_io (dev, c,0x1b , wide_chip ?0x01 :0x00 ); -atp_writeb_io (dev, c,1 ,0x08 ); -atp_writeb_io (dev, c,2 ,0x7f ); -atp_writeb_io (dev, c,3 , satn[0 ]); -atp_writeb_io (dev, c,4 , satn[1 ]); -atp_writeb_io (dev, c,5 , satn[2 ]); -atp_writeb_io (dev, c,6 , satn[3 ]); -atp_writeb_io (dev, c,7 , satn[4 ]); -atp_writeb_io (dev, c,8 , satn[5 ]); -atp_writeb_io (dev, c,0x0f ,0 ); -atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); -atp_writeb_io (dev, c,0x12 ,0 ); -atp_writeb_io (dev, c,0x13 , satn[6 ]); -atp_writeb_io (dev, c,0x14 , satn[7 ]); - j = i; -if ((j &0x08 ) !=0 ) { - j = (j &0x07 ) |0x40 ; - } -atp_writeb_io (dev, c,0x15 , j); -atp_writeb_io (dev, c,0x18 , satn[8 ]); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - -if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e ) -continue ; - -while (atp_readb_io (dev, c,0x17 ) !=0x8e ) -cpu_relax (); - - dev->active_id[c] |= m; - -atp_writeb_io (dev, c,0x10 ,0x30 ); -atp_writeb_io (dev, c,0x04 ,0x00 ); - -phase_cmd: -atp_writeb_io (dev, c,0x18 ,0x08 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ); -if (j !=0x16 ) { -atp_writeb_io (dev, c,0x10 ,0x41 ); - goto phase_cmd; - } -sel_ok: -atp_writeb_io (dev, c,3 , inqd[0 ]); -atp_writeb_io (dev, c,4 , inqd[1 ]); -atp_writeb_io (dev, c,5 , inqd[2 ]); -atp_writeb_io (dev, c,6 , inqd[3 ]); -atp_writeb_io (dev, c,7 , inqd[4 ]); -atp_writeb_io (dev, c,8 , inqd[5 ]); -atp_writeb_io (dev, c,0x0f ,0 ); -atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); -atp_writeb_io (dev, c,0x12 ,0 ); -atp_writeb_io (dev, c,0x13 , inqd[6 ]); -atp_writeb_io (dev, c,0x14 , inqd[7 ]); -atp_writeb_io (dev, c,0x18 , inqd[8 ]); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - -if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e ) -continue ; - -while (atp_readb_io (dev, c,0x17 ) !=0x8e ) -cpu_relax (); - -if (wide_chip) -atp_writeb_io (dev, c,0x1b ,0x00 ); - -atp_writeb_io (dev, c,0x18 ,0x08 ); - j =0 ; -rd_inq_data: - k =atp_readb_io (dev, c,0x1f ); -if ((k &0x01 ) !=0 ) { - mbuf[j++] =atp_readb_io (dev, c,0x19 ); - goto rd_inq_data; - } -if ((k &0x80 ) ==0 ) { - goto rd_inq_data; - } - j =atp_readb_io (dev, c,0x17 ); -if (j ==0x16 ) { - goto inq_ok; - } -atp_writeb_io (dev, c,0x10 ,0x46 ); -atp_writeb_io (dev, c,0x12 ,0 ); -atp_writeb_io (dev, c,0x13 ,0 ); -atp_writeb_io (dev, c,0x14 ,0 ); -atp_writeb_io (dev, c,0x18 ,0x08 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - -if (atp_readb_io (dev, c,0x17 ) !=0x16 ) - goto sel_ok; - -inq_ok: - mbuf[36 ] =0 ; -printk (KERN_INFO " ID: %2d %s\n" , i, &mbuf[8 ]); - dev->id[c][i].devtype = mbuf[0 ]; - rmb = mbuf[1 ]; - n = mbuf[7 ]; -if (!wide_chip) - goto not_wide; -if ((mbuf[7 ] &0x60 ) ==0 ) { - goto not_wide; - } -if ((dev->global_map[c] &0x20 ) ==0 ) { - goto not_wide; - } -atp_writeb_io (dev, c,0x1b ,0x01 ); -atp_writeb_io (dev, c,3 , satn[0 ]); -atp_writeb_io (dev, c,4 , satn[1 ]); -atp_writeb_io (dev, c,5 , satn[2 ]); -atp_writeb_io (dev, c,6 , satn[3 ]); -atp_writeb_io (dev, c,7 , satn[4 ]); -atp_writeb_io (dev, c,8 , satn[5 ]); -atp_writeb_io (dev, c,0x0f ,0 ); -atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); -atp_writeb_io (dev, c,0x12 ,0 ); -atp_writeb_io (dev, c,0x13 , satn[6 ]); -atp_writeb_io (dev, c,0x14 , satn[7 ]); -atp_writeb_io (dev, c,0x18 , satn[8 ]); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - -if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e ) -continue ; - -while (atp_readb_io (dev, c,0x17 ) !=0x8e ) -cpu_relax (); - -try_wide: - j =0 ; -atp_writeb_io (dev, c,0x14 ,0x05 ); -atp_writeb_io (dev, c,0x18 ,0x20 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) -atp_writeb_io (dev, c,0x19 , wide[j++]); - } - -while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ) &0x0f ; -if (j ==0x0f ) { - goto widep_in; - } -if (j ==0x0a ) { - goto widep_cmd; - } -if (j ==0x0e ) { - goto try_wide; - } -continue ; -widep_out: -atp_writeb_io (dev, c,0x18 ,0x20 ); -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) -atp_writeb_io (dev, c,0x19 ,0 ); - } - j =atp_readb_io (dev, c,0x17 ) &0x0f ; -if (j ==0x0f ) { - goto widep_in; - } -if (j ==0x0a ) { - goto widep_cmd; - } -if (j ==0x0e ) { - goto widep_out; - } -continue ; -widep_in: -atp_writeb_io (dev, c,0x14 ,0xff ); -atp_writeb_io (dev, c,0x18 ,0x20 ); - k =0 ; -widep_in1: - j =atp_readb_io (dev, c,0x1f ); -if ((j &0x01 ) !=0 ) { - mbuf[k++] =atp_readb_io (dev, c,0x19 ); - goto widep_in1; - } -if ((j &0x80 ) ==0x00 ) { - goto widep_in1; - } - j =atp_readb_io (dev, c,0x17 ) &0x0f ; -if (j ==0x0f ) { - goto widep_in; - } -if (j ==0x0a ) { - goto widep_cmd; - } -if (j ==0x0e ) { - goto widep_out; - } -continue ; -widep_cmd: -atp_writeb_io (dev, c,0x10 ,0x30 ); -atp_writeb_io (dev, c,0x14 ,0x00 ); -atp_writeb_io (dev, c,0x18 ,0x08 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ); -if (j !=0x16 ) { -if (j ==0x4e ) { - goto widep_out; - } -continue ; - } -if (mbuf[0 ] !=0x01 ) { - goto not_wide; - } -if (mbuf[1 ] !=0x02 ) { - goto not_wide; - } -if (mbuf[2 ] !=0x03 ) { - goto not_wide; - } -if (mbuf[3 ] !=0x01 ) { - goto not_wide; - } - m =1 ; - m = m << i; - dev->wide_id[c] |= m; -not_wide: -if ((dev->id[c][i].devtype ==0x00 ) || (dev->id[c][i].devtype ==0x07 ) || ((dev->id[c][i].devtype ==0x05 ) && ((n &0x10 ) !=0 ))) { - goto set_sync; - } -continue ; -set_sync: - j =0 ; -if ((m & dev->wide_id[c]) !=0 ) { - j |=0x01 ; - } -atp_writeb_io (dev, c,0x1b , j); -atp_writeb_io (dev, c,3 , satn[0 ]); -atp_writeb_io (dev, c,4 , satn[1 ]); -atp_writeb_io (dev, c,5 , satn[2 ]); -atp_writeb_io (dev, c,6 , satn[3 ]); -atp_writeb_io (dev, c,7 , satn[4 ]); -atp_writeb_io (dev, c,8 , satn[5 ]); -atp_writeb_io (dev, c,0x0f ,0 ); -atp_writeb_io (dev, c,0x11 , dev->id[c][i].devsp); -atp_writeb_io (dev, c,0x12 ,0 ); -atp_writeb_io (dev, c,0x13 , satn[6 ]); -atp_writeb_io (dev, c,0x14 , satn[7 ]); -atp_writeb_io (dev, c,0x18 , satn[8 ]); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - -if (atp_readb_io (dev, c,0x17 ) !=0x11 &&atp_readb_io (dev, c,0x17 ) !=0x8e ) -continue ; - -while (atp_readb_io (dev, c,0x17 ) !=0x8e ) -cpu_relax (); - -try_sync: - j =0 ; -atp_writeb_io (dev, c,0x14 ,0x06 ); -atp_writeb_io (dev, c,0x18 ,0x20 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0 ) { -if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0 ) { -if ((m & dev->wide_id[c]) !=0 ) { -atp_writeb_io (dev, c,0x19 , synw[j++]); - }else { -if ((m & dev->ultra_map[c]) !=0 ) { -atp_writeb_io (dev, c,0x19 , synu[j++]); - }else { -atp_writeb_io (dev, c,0x19 , synn[j++]); - } - } - } - } - -while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ) &0x0f ; -if (j ==0x0f ) { - goto phase_ins; - } -if (j ==0x0a ) { - goto phase_cmds; - } -if (j ==0x0e ) { - goto try_sync; - } -continue ; -phase_outs: -atp_writeb_io (dev, c,0x18 ,0x20 ); -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) { -if ((atp_readb_io (dev, c,0x1f ) &0x01 ) !=0x00 ) -atp_writeb_io (dev, c,0x19 ,0x00 ); - } - j =atp_readb_io (dev, c,0x17 ); -if (j ==0x85 ) { - goto tar_dcons; - } - j &=0x0f ; -if (j ==0x0f ) { - goto phase_ins; - } -if (j ==0x0a ) { - goto phase_cmds; - } -if (j ==0x0e ) { - goto phase_outs; - } -continue ; -phase_ins: -atp_writeb_io (dev, c,0x14 ,0xff ); -atp_writeb_io (dev, c,0x18 ,0x20 ); - k =0 ; -phase_ins1: - j =atp_readb_io (dev, c,0x1f ); -if ((j &0x01 ) !=0x00 ) { - mbuf[k++] =atp_readb_io (dev, c,0x19 ); - goto phase_ins1; - } -if ((j &0x80 ) ==0x00 ) { - goto phase_ins1; - } - -while ((atp_readb_io (dev, c,0x17 ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ); -if (j ==0x85 ) { - goto tar_dcons; - } - j &=0x0f ; -if (j ==0x0f ) { - goto phase_ins; - } -if (j ==0x0a ) { - goto phase_cmds; - } -if (j ==0x0e ) { - goto phase_outs; - } -continue ; -phase_cmds: -atp_writeb_io (dev, c,0x10 ,0x30 ); -tar_dcons: -atp_writeb_io (dev, c,0x14 ,0x00 ); -atp_writeb_io (dev, c,0x18 ,0x08 ); - -while ((atp_readb_io (dev, c,0x1f ) &0x80 ) ==0x00 ) -cpu_relax (); - - j =atp_readb_io (dev, c,0x17 ); -if (j !=0x16 ) { -continue ; - } -if (mbuf[0 ] !=0x01 ) { -continue ; - } -if (mbuf[1 ] !=0x03 ) { -continue ; - } -if (mbuf[4 ] ==0x00 ) { -continue ; - } -if (mbuf[3 ] >0x64 ) { -continue ; - } -if (mbuf[4 ] >0x0c ) { - mbuf[4 ] =0x0c ; - } - dev->id[c][i].devsp = mbuf[4 ]; -if ((mbuf[3 ] <0x0d ) && (rmb ==0 )) { - j =0xa0 ; - goto set_syn_ok; - } -if (mbuf[3 ] <0x1a ) { - j =0x20 ; - goto set_syn_ok; - } -if (mbuf[3 ] <0x33 ) { - j =0x40 ; - goto set_syn_ok; - } -if (mbuf[3 ] <0x4c ) { - j =0x50 ; - goto set_syn_ok; - } - j =0x60 ; -set_syn_ok: - dev->id[c][i].devsp = (dev->id[c][i].devsp &0x0f ) | j; - } -} -static void atp870u_free_tables (struct Scsi_Host *host) {struct atp_unit *atp_dev = (struct atp_unit *)&host->hostdata;
@@ -2030,7 +1605,7 @@ flash_ok_885:tscam (shpnt);atp_writeb_io (p,0 ,0x3a ,atp_readb_io (p,0 ,0x3a ) |0x10 ); -is870 (p,0 , p->chip_ver ==4 ); +is885 (p,0 , p->chip_ver ==4 ,0 );atp_writeb_io (p,0 ,0x3a ,atp_readb_io (p,0 ,0x3a ) &0xef );outb ((inb (base_io +0x3a ) &0xef ), base_io +0x3a );outb ((inb (base_io +0x3b ) |0x20 ), base_io +0x3b );
Signature · 1 line
Ondrej Zary
PATCH 30/34 atp870u: Rename is885() to atp_is()
In reply to Ondrej ZaryNow that all the is* functions except is885() are gone, rename is885() to atp_is() to avoid confusion. Don't know what "is" means, though...
--- drivers/scsi/atp870u.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
drivers/scsi/atp870u.c +6 -6
@@ -41,7 +41,7 @@static struct scsi_host_template atp870u_template;static void send_s870 (struct atp_unit *dev,unsigned char c); -static void is885 (struct atp_unit *dev,unsigned char c,bool wide_chip,unsigned char lvdmode); +static void atp_is (struct atp_unit *dev,unsigned char c,bool wide_chip,unsigned char lvdmode);static void tscam_885 (void );static inline void atp_writeb_base (struct atp_unit *atp,u8 reg,u8 val)
@@ -1373,7 +1373,7 @@ flash_ok_880:outb (0x20 , base_io +0x51 );tscam (shpnt); -is885 (p,0 , true,atp_readb_base (p,0x3f ) &0x40 ); +atp_is (p,0 , true,atp_readb_base (p,0x3f ) &0x40 );outb (0xb0 , base_io +0x38 ); shpnt->max_id =16 ; shpnt->this_id = host_id;
@@ -1519,10 +1519,10 @@ flash_ok_885:tscam_885 ();printk (KERN_INFO " Scanning Channel A SCSI Device ...\n" ); -is885 (p,0 , true,atp_readb_io (p,0 ,0x1b ) >>7 ); +atp_is (p,0 , true,atp_readb_io (p,0 ,0x1b ) >>7 );atp_writeb_io (p,0 ,0x16 ,0x80 );printk (KERN_INFO " Scanning Channel B SCSI Device ...\n" ); -is885 (p,1 , true,atp_readb_io (p,1 ,0x1b ) >>7 ); +atp_is (p,1 , true,atp_readb_io (p,1 ,0x1b ) >>7 );atp_writeb_io (p,1 ,0x16 ,0x80 ); k =inb (base_io +0x28 ) &0xcf ; k |=0xc0 ;
@@ -1605,7 +1605,7 @@ flash_ok_885:tscam (shpnt);atp_writeb_io (p,0 ,0x3a ,atp_readb_io (p,0 ,0x3a ) |0x10 ); -is885 (p,0 , p->chip_ver ==4 ,0 ); +atp_is (p,0 , p->chip_ver ==4 ,0 );atp_writeb_io (p,0 ,0x3a ,atp_readb_io (p,0 ,0x3a ) &0xef );outb ((inb (base_io +0x3a ) &0xef ), base_io +0x3a );outb ((inb (base_io +0x3b ) |0x20 ), base_io +0x3b );
@@ -1827,7 +1827,7 @@ static void tscam_885(void) -static void is885 (struct atp_unit *dev,unsigned char c,bool wide_chip,unsigned char lvdmode) +static void atp_is (struct atp_unit *dev,unsigned char c,bool wide_chip,unsigned char lvdmode) {unsigned char i, j, k, rmb, n;unsigned short int m;
Signature · 1 line
Ondrej Zary
PATCH 31/34 atp870u: Convert remaining in[bwl] and out[bwl] to wrappers
In reply to Ondrej Zary--- drivers/scsi/atp870u.c | 222 +++++++++++++++++++++++++----------------------- 1 file changed, 118 insertions(+), 104 deletions(-)
drivers/scsi/atp870u.c +118 -104
@@ -49,6 +49,11 @@ static inline void atp_writeb_base(struct atp_unit *atp, u8 reg, u8 val)outb (val, atp->baseport + reg); } +static inline void atp_writew_base (struct atp_unit *atp,u8 reg,u16 val) +{ +outw (val, atp->baseport + reg); +} +static inline void atp_writeb_io (struct atp_unit *atp,u8 channel,u8 reg,u8 val) {outb (val, atp->ioport[channel] + reg);
@@ -74,6 +79,16 @@ static inline u8 atp_readb_base(struct atp_unit *atp, u8 reg)return inb (atp->baseport + reg); } +static inline u16 atp_readw_base (struct atp_unit *atp,u8 reg) +{ +return inw (atp->baseport + reg); +} + +static inline u32 atp_readl_base (struct atp_unit *atp,u8 reg) +{ +return inl (atp->baseport + reg); +} +static inline u8 atp_readb_io (struct atp_unit *atp,u8 channel,u8 reg) {return inb (atp->ioport[channel] + reg);
@@ -1268,19 +1283,20 @@ static int atp870u_probe(struct pci_dev *pdev, const struct pci_device_id *ent) atpdev->chip_ver = pdev->revision;pci_write_config_byte (pdev,PCI_LATENCY_TIMER ,0x80 );//JCC082803 - host_id =inb (base_io +0x39 ); + atpdev->ioport[0 ] = base_io +0x40 ; + atpdev->pciport[0 ] = base_io +0x28 ; + + host_id =atp_readb_base (atpdev,0x39 ); host_id >>=0x04 ;printk (KERN_INFO " ACARD AEC-67160 PCI Ultra3 LVD Host Adapter: %d" " IO:%x, IRQ:%d.\n" , count, base_io, pdev->irq); - atpdev->ioport[0 ] = base_io +0x40 ; - atpdev->pciport[0 ] = base_io +0x28 ; atpdev->dev_id = ent->device; atpdev->host_id[0 ] = host_id; - atpdev->scam_on =inb (base_io +0x22 ); - atpdev->global_map[0 ] =inb (base_io +0x35 ); - atpdev->ultra_map[0 ] =inw (base_io +0x3c ); + atpdev->scam_on =atp_readb_base (atpdev,0x22 ); + atpdev->global_map[0 ] =atp_readb_base (atpdev,0x35 ); + atpdev->ultra_map[0 ] =atp_readw_base (atpdev,0x3c ); n =0x3f09 ; next_fblk_880:
@@ -1288,37 +1304,37 @@ next_fblk_880: goto flash_ok_880; m =0 ; -outw (n, base_io +0x34 ); +atp_writew_base (atpdev,0x34 , n); n +=0x0002 ; -if (inb (base_io +0x30 ) ==0xff ) +if (atp_readb_base (atpdev,0x30 ) ==0xff ) goto flash_ok_880; - atpdev->sp[0 ][m++] =inb (base_io +0x30 ); - atpdev->sp[0 ][m++] =inb (base_io +0x31 ); - atpdev->sp[0 ][m++] =inb (base_io +0x32 ); - atpdev->sp[0 ][m++] =inb (base_io +0x33 ); -outw (n, base_io +0x34 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x30 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x31 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x32 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x33 ); +atp_writew_base (atpdev,0x34 , n); n +=0x0002 ; - atpdev->sp[0 ][m++] =inb (base_io +0x30 ); - atpdev->sp[0 ][m++] =inb (base_io +0x31 ); - atpdev->sp[0 ][m++] =inb (base_io +0x32 ); - atpdev->sp[0 ][m++] =inb (base_io +0x33 ); -outw (n, base_io +0x34 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x30 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x31 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x32 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x33 ); +atp_writew_base (atpdev,0x34 , n); n +=0x0002 ; - atpdev->sp[0 ][m++] =inb (base_io +0x30 ); - atpdev->sp[0 ][m++] =inb (base_io +0x31 ); - atpdev->sp[0 ][m++] =inb (base_io +0x32 ); - atpdev->sp[0 ][m++] =inb (base_io +0x33 ); -outw (n, base_io +0x34 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x30 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x31 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x32 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x33 ); +atp_writew_base (atpdev,0x34 , n); n +=0x0002 ; - atpdev->sp[0 ][m++] =inb (base_io +0x30 ); - atpdev->sp[0 ][m++] =inb (base_io +0x31 ); - atpdev->sp[0 ][m++] =inb (base_io +0x32 ); - atpdev->sp[0 ][m++] =inb (base_io +0x33 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x30 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x31 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x32 ); + atpdev->sp[0 ][m++] =atp_readb_base (atpdev,0x33 ); n +=0x0018 ; goto next_fblk_880; flash_ok_880: -outw (0 , base_io +0x34 ); +atp_writew_base (atpdev,0x34 ,0 ); atpdev->ultra_map[0 ] =0 ; atpdev->async[0 ] =0 ;for (k =0 ; k <16 ; k++) {
@@ -1332,7 +1348,7 @@ flash_ok_880: } } atpdev->async[0 ] = ~(atpdev->async[0 ]); -outb (atpdev->global_map[0 ], base_io +0x35 ); +atp_writeb_base (atpdev,0x35 , atpdev->global_map[0 ]); shpnt =scsi_host_alloc (&atp870u_template,sizeof (struct atp_unit ));if (!shpnt)
@@ -1355,26 +1371,26 @@ flash_ok_880: }spin_lock_irqsave (shpnt->host_lock, flags); - k =inb (base_io +0x38 ) &0x80 ; -outb (k, base_io +0x38 ); -outb (0x20 , base_io +0x3b ); + k =atp_readb_base (p,0x38 ) &0x80 ; +atp_writeb_base (p,0x38 , k); +atp_writeb_base (p,0x3b ,0x20 );mdelay (32 ); -outb (0 , base_io +0x3b ); +atp_writeb_base (p,0x3b ,0 );mdelay (32 ); -inb (base_io +0x5b ); -inb (base_io +0x57 ); -outb ((host_id |0x08 ), base_io +0x40 ); -outb (0 , base_io +0x58 ); -while ((inb (base_io +0x5f ) &0x80 ) ==0 ) +atp_readb_io (p,0 ,0x1b ); +atp_readb_io (p,0 ,0x17 ); +atp_writeb_io (p,0 ,0 , host_id |0x08 ); +atp_writeb_io (p,0 ,0x18 ,0 ); +while ((atp_readb_io (p,0 ,0x1f ) &0x80 ) ==0 )mdelay (1 ); -inb (base_io +0x57 ); -outb (8 , base_io +0x41 ); -outb (0x7f , base_io +0x42 ); -outb (0x20 , base_io +0x51 ); +atp_readb_io (p,0 ,0x17 ); +atp_writeb_io (p,0 ,1 ,8 ); +atp_writeb_io (p,0 ,2 ,0x7f ); +atp_writeb_io (p,0 ,0x11 ,0x20 );tscam (shpnt);atp_is (p,0 , true,atp_readb_base (p,0x3f ) &0x40 ); -outb (0xb0 , base_io +0x38 ); +atp_writeb_base (p,0x38 ,0xb0 ); shpnt->max_id =16 ; shpnt->this_id = host_id; shpnt->unique_id = base_io;
@@ -1415,27 +1431,27 @@ flash_ok_880:spin_lock_irqsave (shpnt->host_lock, flags); - c=inb (base_io +0x29 ); -outb ((c |0x04 ),base_io +0x29 ); + c =atp_readb_base (p,0x29 ); +atp_writeb_base (p,0x29 , c |0x04 ); n=0x1f80 ; next_fblk_885:if (n >=0x2000 ) { goto flash_ok_885; } -outw (n,base_io +0x3c ); -if (inl (base_io +0x38 ) ==0xffffffff ) { +atp_writew_base (p,0x3c , n); +if (atp_readl_base (p,0x38 ) ==0xffffffff ) { goto flash_ok_885; }for (m=0 ; m <2 ; m++) { p->global_map[m]=0 ;for (k=0 ; k <4 ; k++) { -outw (n++,base_io +0x3c ); - ((unsigned long *)&setupdata[m][0 ])[k]=inl (base_io +0x38 ); +atp_writew_base (p,0x3c , n++); + ((unsigned long *)&setupdata[m][0 ])[k] =atp_readl_base (p,0x38 ); }for (k=0 ; k <4 ; k++) { -outw (n++,base_io +0x3c ); - ((unsigned long *)&p->sp[m][0 ])[k]=inl (base_io +0x38 ); +atp_writew_base (p,0x3c , n++); + ((unsigned long *)&p->sp[m][0 ])[k] =atp_readl_base (p,0x38 ); } n +=8 ; }
@@ -1444,8 +1460,8 @@ flash_ok_885:#ifdef ED_DBGP printk ("Flash Read OK\n" );#endif - c=inb (base_io +0x29 ); -outb ((c &0xfb ),base_io +0x29 ); + c =atp_readb_base (p,0x29 ); +atp_writeb_base (p,0x29 , c &0xfb );for (c=0 ;c <2 ;c++) { p->ultra_map[c]=0 ; p->async[c] =0 ;
@@ -1474,48 +1490,48 @@ flash_ok_885: } } - k =inb (base_io +0x28 ) &0x8f ; + k =atp_readb_base (p,0x28 ) &0x8f ; k |=0x10 ; -outb (k, base_io +0x28 ); -outb (0x80 , base_io +0x41 ); -outb (0x80 , base_io +0x51 ); +atp_writeb_base (p,0x28 , k); +atp_writeb_pci (p,0 ,1 ,0x80 ); +atp_writeb_pci (p,1 ,1 ,0x80 );mdelay (100 ); -outb (0 , base_io +0x41 ); -outb (0 , base_io +0x51 ); +atp_writeb_pci (p,0 ,1 ,0 ); +atp_writeb_pci (p,1 ,1 ,0 );mdelay (1000 ); -inb (base_io +0x9b ); -inb (base_io +0x97 ); -inb (base_io +0xdb ); -inb (base_io +0xd7 ); +atp_readb_io (p,0 ,0x1b ); +atp_readb_io (p,0 ,0x17 ); +atp_readb_io (p,1 ,0x1b ); +atp_readb_io (p,1 ,0x17 ); k=p->host_id[0 ];if (k >7 ) k = (k &0x07 ) |0x40 ; k |=0x08 ; -outb (k, base_io +0x80 ); -outb (0 , base_io +0x98 ); +atp_writeb_io (p,0 ,0 , k); +atp_writeb_io (p,0 ,0x18 ,0 ); -while ((inb (base_io +0x9f ) &0x80 ) ==0 ) +while ((atp_readb_io (p,0 ,0x1f ) &0x80 ) ==0 )cpu_relax (); -inb (base_io +0x97 ); -outb (8 , base_io +0x81 ); -outb (0x7f , base_io +0x82 ); -outb (0x20 , base_io +0x91 ); +atp_readb_io (p,0 ,0x17 ); +atp_writeb_io (p,0 ,1 ,8 ); +atp_writeb_io (p,0 ,2 ,0x7f ); +atp_writeb_io (p,0 ,0x11 ,0x20 ); k=p->host_id[1 ];if (k >7 ) k = (k &0x07 ) |0x40 ; k |=0x08 ; -outb (k, base_io +0xc0 ); -outb (0 , base_io +0xd8 ); +atp_writeb_io (p,1 ,0 , k); +atp_writeb_io (p,1 ,0x18 ,0 ); -while ((inb (base_io +0xdf ) &0x80 ) ==0 ) +while ((atp_readb_io (p,1 ,0x1f ) &0x80 ) ==0 )cpu_relax (); -inb (base_io +0xd7 ); -outb (8 , base_io +0xc1 ); -outb (0x7f , base_io +0xc2 ); -outb (0x20 , base_io +0xd1 ); +atp_readb_io (p,1 ,0x17 ); +atp_writeb_io (p,1 ,1 ,8 ); +atp_writeb_io (p,1 ,2 ,0x7f ); +atp_writeb_io (p,1 ,0x11 ,0x20 );tscam_885 ();printk (KERN_INFO " Scanning Channel A SCSI Device ...\n" );
@@ -1524,13 +1540,13 @@ flash_ok_885:printk (KERN_INFO " Scanning Channel B SCSI Device ...\n" );atp_is (p,1 , true,atp_readb_io (p,1 ,0x1b ) >>7 );atp_writeb_io (p,1 ,0x16 ,0x80 ); - k =inb (base_io +0x28 ) &0xcf ; + k =atp_readb_base (p,0x28 ) &0xcf ; k |=0xc0 ; -outb (k, base_io +0x28 ); - k =inb (base_io +0x1f ) |0x80 ; -outb (k, base_io +0x1f ); - k =inb (base_io +0x29 ) |0x01 ; -outb (k, base_io +0x29 ); +atp_writeb_base (p,0x28 , k); + k =atp_readb_base (p,0x1f ) |0x80 ; +atp_writeb_base (p,0x1f , k); + k =atp_readb_base (p,0x29 ) |0x01 ; +atp_writeb_base (p,0x29 , k);#ifdef ED_DBGP //printk("atp885: atp_host[0] 0x%p\n", atp_host[0]); #endif
@@ -1554,9 +1570,9 @@ flash_ok_885: atpdev->dev_id = ent->device; host_id &=0x07 ; atpdev->host_id[0 ] = host_id; - atpdev->scam_on =inb (base_io +0x22 ); - atpdev->global_map[0 ] =inb (base_io +0x2d ); - atpdev->ultra_map[0 ] =inw (base_io +0x2e ); + atpdev->scam_on =atp_readb_pci (atpdev,0 ,2 ); + atpdev->global_map[0 ] =atp_readb_base (atpdev,0x2d ); + atpdev->ultra_map[0 ] =atp_readw_base (atpdev,0x2e );if (atpdev->ultra_map[0 ] ==0 ) { atpdev->scam_on =0x00 ;
@@ -1583,32 +1599,30 @@ flash_ok_885: }spin_lock_irqsave (shpnt->host_lock, flags); -if (atpdev->chip_ver >0x07 ) {/* check if atp876 chip then enable terminator */ -outb (0x00 , base_io +0x3e ); - } +if (atpdev->chip_ver >0x07 )/* check if atp876 chip then enable terminator */ +atp_writeb_base (p,0x3e ,0x00 ); - k = (inb (base_io +0x3a ) &0xf3 ) |0x10 ; -outb (k, base_io +0x3a ); -outb ((k &0xdf ), base_io +0x3a ); + k = (atp_readb_base (p,0x3a ) &0xf3 ) |0x10 ; +atp_writeb_base (p,0x3a , k); +atp_writeb_base (p,0x3a , k &0xdf );mdelay (32 ); -outb (k, base_io +0x3a ); +atp_writeb_base (p,0x3a , k);mdelay (32 ); -outb ((host_id |0x08 ), base_io +0 ); -outb (0 , base_io +0x18 ); -while ((inb (base_io +0x1f ) &0x80 ) ==0 ) +atp_writeb_io (p,0 ,0 , host_id |0x08 ); +atp_writeb_io (p,0 ,0x18 ,0 ); +while ((atp_readb_io (p,0 ,0x1f ) &0x80 ) ==0 )mdelay (1 ); -inb (base_io +0x17 ); -outb (8 , base_io +1 ); -outb (0x7f , base_io +2 ); -outb (0x20 , base_io +0x11 ); +atp_readb_io (p,0 ,0x17 ); +atp_writeb_io (p,0 ,1 ,8 ); +atp_writeb_io (p,0 ,2 ,0x7f ); +atp_writeb_io (p,0 ,0x11 ,0x20 );tscam (shpnt); -atp_writeb_io (p,0 ,0x3a ,atp_readb_io (p,0 ,0x3a ) |0x10 ); +atp_writeb_base (p,0x3a ,atp_readb_base (p,0x3a ) |0x10 );atp_is (p,0 , p->chip_ver ==4 ,0 ); -atp_writeb_io (p,0 ,0x3a ,atp_readb_io (p,0 ,0x3a ) &0xef ); -outb ((inb (base_io +0x3a ) &0xef ), base_io +0x3a ); -outb ((inb (base_io +0x3b ) |0x20 ), base_io +0x3b ); +atp_writeb_base (p,0x3a ,atp_readb_base (p,0x3a ) &0xef ); +atp_writeb_base (p,0x3b ,atp_readb_base (p,0x3b ) |0x20 );if (atpdev->chip_ver ==4 ) shpnt->max_id =16 ;else
Signature · 1 line
Ondrej Zary
PATCH 32/34 atp870u: Replace port 0x80 delay by udelay
In reply to Ondrej Zarytscam() is using port 0x80 access for delays but that's x86-only. Use udelay(2) instead.
--- drivers/scsi/atp870u.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
drivers/scsi/atp870u.c +9 -9
@@ -1036,7 +1036,7 @@ static void tscam(struct Scsi_Host *host)atp_writeb_io (dev,0 ,0x02 ,0x7f );atp_writeb_io (dev,0 ,0x1b ,0x02 ); -outb (0 ,0x80 ); +udelay (2 ); val =0x0080 ;/* bsy */ atp_writew_io (dev,0 ,0x1c , val);
@@ -1044,7 +1044,7 @@ static void tscam(struct Scsi_Host *host)atp_writew_io (dev,0 ,0x1c , val); val |=0x0004 ;/* msg */ atp_writew_io (dev,0 ,0x1c , val); -inb (0x80 );/* 2 deskew delay(45ns*2=90ns) */ +udelay (2 );/* 2 deskew delay(45ns*2=90ns) */ val &=0x007f ;/* no bsy */ atp_writew_io (dev,0 ,0x1c , val);mdelay (128 );
@@ -1052,7 +1052,7 @@ static void tscam(struct Scsi_Host *host)atp_writew_io (dev,0 ,0x1c , val);while ((atp_readb_io (dev,0 ,0x1c ) &0x04 ) !=0 ) ; -outb (1 ,0x80 ); +udelay (2 );udelay (100 );for (n =0 ; n <0x30000 ; n++)if ((atp_readb_io (dev,0 ,0x1c ) &0x80 ) !=0 )/* bsy ? */
@@ -1060,13 +1060,13 @@ static void tscam(struct Scsi_Host *host)if (n <0x30000 )for (n =0 ; n <0x30000 ; n++)if ((atp_readb_io (dev,0 ,0x1c ) &0x81 ) ==0x0081 ) { -inb (0x80 ); +udelay (2 ); val |=0x8003 ;/* io,cd,db7 */ atp_writew_io (dev,0 ,0x1c , val); -inb (0x80 ); +udelay (2 ); val &=0x00bf ;/* no sel */ atp_writew_io (dev,0 ,0x1c , val); -outb (2 ,0x80 ); +udelay (2 );break ; }while (1 ) {
@@ -1093,18 +1093,18 @@ static void tscam(struct Scsi_Host *host) val &=0x00ff ;/* synchronization */ val |=0x3f00 ;fun_scam (dev, &val); -outb (3 ,0x80 ); +udelay (2 ); val &=0x00ff ;/* isolation */ val |=0x2000 ;fun_scam (dev, &val); -outb (4 ,0x80 ); +udelay (2 ); i =8 ; j =0 ;while (1 ) {if ((atp_readw_io (dev,0 ,0x1c ) &0x2000 ) ==0 )continue ; -outb (5 ,0x80 ); +udelay (2 ); val &=0x00ff ;/* get ID_STRING */ val |=0x2000 ; k =fun_scam (dev, &val);
Signature · 1 line
Ondrej Zary
PATCH 33/34 atp870u: Fix incorrect writeb_io access to register 0x3a
In reply to Ondrej ZaryThe ioport region is 0x20 bytes long so accessing 0x3a register using writeb_io is incorrect. Use writeb_base instead.
There's no change in behavior as 870 chips have ioport = baseport.
--- drivers/scsi/atp870u.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/scsi/atp870u.c +4 -4
@@ -364,9 +364,9 @@ static irqreturn_t atp870u_intr_handle(int irq, void *dev_id)atp_writeb_base (dev,0x3b ,atp_readb_base (dev,0x3b ) &0x3f ); }else {if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) -atp_writeb_io (dev, c,0x3a , (atp_readb_io (dev, c,0x3a ) &0xf3 ) |0x08 ); +atp_writeb_base (dev,0x3a , (atp_readb_base (dev,0x3a ) &0xf3 ) |0x08 );else -atp_writeb_io (dev, c,0x3a ,atp_readb_io (dev, c,0x3a ) &0xf3 ); +atp_writeb_base (dev,0x3a ,atp_readb_base (dev,0x3a ) &0xf3 ); } j =0 ; id =1 ;
@@ -889,9 +889,9 @@ static void send_s870(struct atp_unit *dev,unsigned char c)atp_writeb_base (dev,0x3b ,atp_readb_base (dev,0x3b ) &0x3f ); }else {if ((workreq->cmnd[0 ] ==0x08 ) || (workreq->cmnd[0 ] ==0x28 ) || (workreq->cmnd[0 ] ==0x0a ) || (workreq->cmnd[0 ] ==0x2a )) -atp_writeb_io (dev, c,0x3a , (atp_readb_io (dev, c,0x3a ) &0xf3 ) |0x08 ); +atp_writeb_base (dev,0x3a , (atp_readb_base (dev,0x3a ) &0xf3 ) |0x08 );else -atp_writeb_io (dev, c,0x3a ,atp_readb_io (dev, c,0x3a ) &0xf3 ); +atp_writeb_base (dev,0x3a ,atp_readb_base (dev,0x3a ) &0xf3 ); }if (workreq->sc_data_direction ==DMA_TO_DEVICE ) {
Signature · 1 line
Ondrej Zary
PATCH 34/34 atp870u: Introduce atp_set_host_id
In reply to Ondrej ZaryThe code for setting host adapter ID is the same for all chips. Move it to a common function.
--- drivers/scsi/atp870u.c | 57 +++++++++++++++--------------------------------- 1 file changed, 18 insertions(+), 39 deletions(-)
drivers/scsi/atp870u.c +18 -39
@@ -1229,6 +1229,18 @@ static int atp870u_init_tables(struct Scsi_Host *host)return 0 ; } +static void atp_set_host_id (struct atp_unit *atp,u8 c,u8 host_id) +{ +atp_writeb_io (atp, c,0 , host_id |0x08 ); +atp_writeb_io (atp, c,0x18 ,0 ); +while ((atp_readb_io (atp, c,0x1f ) &0x80 ) ==0 ) +mdelay (1 ); +atp_readb_io (atp, c,0x17 ); +atp_writeb_io (atp, c,1 ,8 ); +atp_writeb_io (atp, c,2 ,0x7f ); +atp_writeb_io (atp, c,0x11 ,0x20 ); +} +/* return non-zero on detection */ static int atp870u_probe (struct pci_dev *pdev,const struct pci_device_id *ent) {
@@ -1379,14 +1391,8 @@ flash_ok_880:mdelay (32 );atp_readb_io (p,0 ,0x1b );atp_readb_io (p,0 ,0x17 ); -atp_writeb_io (p,0 ,0 , host_id |0x08 ); -atp_writeb_io (p,0 ,0x18 ,0 ); -while ((atp_readb_io (p,0 ,0x1f ) &0x80 ) ==0 ) -mdelay (1 ); -atp_readb_io (p,0 ,0x17 ); -atp_writeb_io (p,0 ,1 ,8 ); -atp_writeb_io (p,0 ,2 ,0x7f ); -atp_writeb_io (p,0 ,0x11 ,0x20 ); + +atp_set_host_id (p,0 , host_id);tscam (shpnt);atp_is (p,0 , true,atp_readb_base (p,0x3f ) &0x40 );
@@ -1503,35 +1509,16 @@ flash_ok_885:atp_readb_io (p,0 ,0x17 );atp_readb_io (p,1 ,0x1b );atp_readb_io (p,1 ,0x17 ); + k=p->host_id[0 ];if (k >7 ) k = (k &0x07 ) |0x40 ; - k |=0x08 ; -atp_writeb_io (p,0 ,0 , k); -atp_writeb_io (p,0 ,0x18 ,0 ); - -while ((atp_readb_io (p,0 ,0x1f ) &0x80 ) ==0 ) -cpu_relax (); - -atp_readb_io (p,0 ,0x17 ); -atp_writeb_io (p,0 ,1 ,8 ); -atp_writeb_io (p,0 ,2 ,0x7f ); -atp_writeb_io (p,0 ,0x11 ,0x20 ); +atp_set_host_id (p,0 , k); k=p->host_id[1 ];if (k >7 ) k = (k &0x07 ) |0x40 ; - k |=0x08 ; -atp_writeb_io (p,1 ,0 , k); -atp_writeb_io (p,1 ,0x18 ,0 ); - -while ((atp_readb_io (p,1 ,0x1f ) &0x80 ) ==0 ) -cpu_relax (); - -atp_readb_io (p,1 ,0x17 ); -atp_writeb_io (p,1 ,1 ,8 ); -atp_writeb_io (p,1 ,2 ,0x7f ); -atp_writeb_io (p,1 ,0x11 ,0x20 ); +atp_set_host_id (p,1 , k);tscam_885 ();printk (KERN_INFO " Scanning Channel A SCSI Device ...\n" );
@@ -1608,15 +1595,7 @@ flash_ok_885:mdelay (32 );atp_writeb_base (p,0x3a , k);mdelay (32 ); -atp_writeb_io (p,0 ,0 , host_id |0x08 ); -atp_writeb_io (p,0 ,0x18 ,0 ); -while ((atp_readb_io (p,0 ,0x1f ) &0x80 ) ==0 ) -mdelay (1 ); - -atp_readb_io (p,0 ,0x17 ); -atp_writeb_io (p,0 ,1 ,8 ); -atp_writeb_io (p,0 ,2 ,0x7f ); -atp_writeb_io (p,0 ,0x11 ,0x20 ); +atp_set_host_id (p,0 , host_id);tscam (shpnt);atp_writeb_base (p,0x3a ,atp_readb_base (p,0x3a ) |0x10 );
Signature · 1 line
Ondrej Zary
These look good to me. I'm not sure I'm going to claim a full review of these as my eyes already bleed from looking over it, but given that the driver looks sorta orphaned I hope an ACK is enough to get it merged: