linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] SCSI: atp870u: Clean up delays
@ 2010-05-16  2:34 Ben Hutchings
  2010-05-16  2:34 ` [PATCH 2/2] SCSI: atp870u: Remove debug writes to port 0x80 Ben Hutchings
  0 siblings, 1 reply; 2+ messages in thread
From: Ben Hutchings @ 2010-05-16  2:34 UTC (permalink / raw)
  To: James Bottomley; +Cc: linux-scsi

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 <ben@decadent.org.uk>
---
 drivers/scsi/atp870u.c |   15 ++++-----------
 1 files changed, 4 insertions(+), 11 deletions(-)

diff --git a/drivers/scsi/atp870u.c b/drivers/scsi/atp870u.c
index ab5bdda..80f41ef 100644
--- a/drivers/scsi/atp870u.c
+++ b/drivers/scsi/atp870u.c
@@ -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);
-- 
1.7.1




^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-05-16  2:35 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-16  2:34 [PATCH 1/2] SCSI: atp870u: Clean up delays Ben Hutchings
2010-05-16  2:34 ` [PATCH 2/2] SCSI: atp870u: Remove debug writes to port 0x80 Ben Hutchings

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).