SCSI: atp870u: Clean up delays
PATCH 1/2 SCSI: atp870u: Clean up delays
Replace udelay(0x800) with mdelay(2). udelay() is inaccurate for such large arguments and this may result in a build-time assertion failure; in particular it fails to build on ARM. The conversion is not quite accurate, but neither is the current delay. (It was originally implemented by calling inb(0x80) in a loop, which is even less so.)
Replace inb(0x80) with udelay(1). Use of port 0x80 is x86-specific and can even hang some newer x86 systems.
Remove the commented-out initial delay in tscam(), which has been disabled throughout the 2.6.x series.
Signed-off-by Ben Hutchings <[email protected]>
--- drivers/scsi/atp870u.c | 15 ++++----------- 1 files changed, 4 insertions(+), 11 deletions(-)
drivers/scsi/atp870u.c +4 -11
@@ -1047,13 +1047,6 @@ static void tscam(struct Scsi_Host *host) 0x38, 0x31, 0x32, 0x2b, 0x34, 0x2d, 0x2e, 0x27 }; -/* I can't believe we need this before we've even done anything. Remove it -* and see if anyone bitches. -for (i = 0; i < 0x10; i++) { -udelay(0xffff); -} -*/ - tmport = dev->ioport[0 ] +1 ;outb (0x08 , tmport++);outb (0x7f , tmport);
@@ -1138,7 +1131,7 @@ wait_rdyok:outw (val, tmport); val |=0x0004 ;/* msg */ outw (val, tmport); -inb (0x80 );/* 2 deskew delay(45ns*2=90ns) */ +udelay (1 );/* 2 deskew delay(45ns*2=90ns) */ val &=0x007f ;/* no bsy */ outw (val, tmport);mdelay (128 );
@@ -1164,15 +1157,15 @@ wait_io: } goto TCM_SYNC; wait_io1: -inb (0x80 ); +udelay (1 ); val |=0x8003 ;/* io,cd,db7 */ outw (val, tmport); -inb (0x80 ); +udelay (1 ); val &=0x00bf ;/* no sel */ outw (val, tmport);outb (2 ,0x80 ); TCM_SYNC: -udelay (0x800 ); +mdelay (2 );if ((inb (tmport) &0x80 ) ==0x00 ) {/* bsy ? */ outw (0 , tmport--);outb (0 , tmport);
Signature · 1 line
1.7.1
PATCH 2/2 SCSI: atp870u: Remove debug writes to port 0x80
Use of port 0x80 is x86-specific and can even hang some newer x86 systems.
Signed-off-by Ben Hutchings <[email protected]>
--- drivers/scsi/atp870u.c | 7 ------- 1 files changed, 0 insertions(+), 7 deletions(-)
drivers/scsi/atp870u.c +0 -7
@@ -1122,8 +1122,6 @@ wait_rdyok: tmport = dev->ioport[0 ] +0x1b ;outb (0x02 , tmport); -outb (0 ,0x80 ); - val =0x0080 ;/* bsy */ tmport = dev->ioport[0 ] +0x1c ;outw (val, tmport);
@@ -1141,7 +1139,6 @@ wait_nomsg:if ((inb (tmport) &0x04 ) !=0 ) { goto wait_nomsg; } -outb (1 ,0x80 );udelay (100 );for (n =0 ; n <0x30000 ; n++) {if ((inb (tmport) &0x80 ) !=0 ) {/* bsy ? */
@@ -1163,7 +1160,6 @@ wait_io1:udelay (1 ); val &=0x00bf ;/* no sel */ outw (val, tmport); -outb (2 ,0x80 ); TCM_SYNC:mdelay (2 );if ((inb (tmport) &0x80 ) ==0x00 ) {/* bsy ? */
@@ -1183,18 +1179,15 @@ TCM_SYNC: val &=0x00ff ;/* synchronization */ val |=0x3f00 ;fun_scam (dev, &val); -outb (3 ,0x80 ); val &=0x00ff ;/* isolation */ val |=0x2000 ;fun_scam (dev, &val); -outb (4 ,0x80 ); i =8 ; j =0 ; TCM_ID:if ((inw (tmport) &0x2000 ) ==0 ) { goto TCM_ID; } -outb (5 ,0x80 ); val &=0x00ff ;/* get ID_STRING */ val |=0x2000 ; k =fun_scam (dev, &val);
Signature · 1 line
1.7.1