linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ondrej Zary <linux@rainbow-software.org>
To: linux-scsi@vger.kernel.org
Subject: [PATCH 05/34] atp870u: Untangle tmport #3
Date: Sun,  3 May 2015 19:31:21 +0200	[thread overview]
Message-ID: <1430674310-11576-6-git-send-email-linux@rainbow-software.org> (raw)
In-Reply-To: <1430674310-11576-1-git-send-email-linux@rainbow-software.org>

Untangle the tmport crap so it becomes obvious what ports are accessed.

Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
---
 drivers/scsi/atp870u.c |  118 ++++++++++++++++++++----------------------------
 1 file changed, 49 insertions(+), 69 deletions(-)

diff --git a/drivers/scsi/atp870u.c b/drivers/scsi/atp870u.c
index 0ef1538..65dd004 100644
--- a/drivers/scsi/atp870u.c
+++ b/drivers/scsi/atp870u.c
@@ -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);
-- 
Ondrej Zary


  parent reply	other threads:[~2015-05-03 17:32 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-03 17:31 [RFC PATCH 00/34] atp870u: Remove the first level of crap Ondrej Zary
2015-05-03 17:31 ` [PATCH 01/34] atp870u: Remove workport Ondrej Zary
2015-05-03 17:31 ` [PATCH 02/34] atp870u: Remove tmport1 Ondrej Zary
2015-05-03 17:31 ` [PATCH 03/34] atp870u: Untangle tmport Ondrej Zary
2015-05-03 17:31 ` [PATCH 04/34] atp870u: Untangle tmport #2 Ondrej Zary
2015-05-03 17:31 ` Ondrej Zary [this message]
2015-05-03 17:31 ` [PATCH 06/34] atp870u: Untangle tmport #4 Ondrej Zary
2015-05-03 17:31 ` [PATCH 07/34] atp870u: Untangle tmport #5 Ondrej Zary
2015-05-03 17:31 ` [PATCH 08/34] atp870u: Untangle tmport #6 Ondrej Zary
2015-05-03 17:31 ` [PATCH 09/34] atp870u: Untangle tmport #7 Ondrej Zary
2015-05-03 17:31 ` [PATCH 10/34] atp870u: Untangle tmport #8 Ondrej Zary
2015-05-03 17:31 ` [PATCH 11/34] atp870u: Untangle tmpcip Ondrej Zary
2015-05-03 17:31 ` [PATCH 12/34] atp870u: Untangle tmpcip #2 Ondrej Zary
2015-05-03 17:31 ` [PATCH 13/34] atp870u: Remove ugly gotos Ondrej Zary
2015-05-03 17:31 ` [PATCH 14/34] atp870u: Remove ugly gotos #2 Ondrej Zary
2015-05-03 17:31 ` [PATCH 15/34] atp870u: Remove ugly gotos #3 Ondrej Zary
2015-05-03 17:31 ` [PATCH 16/34] atp870u: Remove ugly gotos #4 Ondrej Zary
2015-05-03 17:31 ` [PATCH 17/34] atp870u: Remove ugly gotos #5 Ondrej Zary
2015-05-03 17:31 ` [PATCH 18/34] atp870u: Introduce HW access wrappers Ondrej Zary
2015-05-03 17:31 ` [PATCH 19/34] atp870u: Convert is870() to use wrappers Ondrej Zary
2015-05-03 17:31 ` [PATCH 20/34] atp870u: Convert is880() " Ondrej Zary
2015-05-03 17:31 ` [PATCH 21/34] atp870u: Convert is885() " Ondrej Zary
2015-05-03 17:31 ` [PATCH 22/34] atp870u: Unify code format in is870(), is880() and is885() Ondrej Zary
2015-05-03 17:31 ` [PATCH 23/34] atp870u: Add channel parameter to is870() and is880() Ondrej Zary
2015-05-03 17:31 ` [PATCH 24/34] atp870u: Move chip-specific lines out of is880() and is885() Ondrej Zary
2015-05-03 17:31 ` [PATCH 25/34] atp870u: Remove is880() Ondrej Zary
2015-05-03 17:31 ` [PATCH 26/34] atp870u: Add wide_chip parameter to is870() and is885() Ondrej Zary
2015-05-03 17:31 ` [PATCH 27/34] atp870u: Add remaining 870 support to is885() Ondrej Zary
2015-05-03 17:31 ` [PATCH 28/34] atp870u: Move 870-specific code out of is870() Ondrej Zary
2015-05-03 17:31 ` [PATCH 29/34] atp870u: Remove is870() Ondrej Zary
2015-05-03 17:31 ` [PATCH 30/34] atp870u: Rename is885() to atp_is() Ondrej Zary
2015-05-03 17:31 ` [PATCH 31/34] atp870u: Convert remaining in[bwl] and out[bwl] to wrappers Ondrej Zary
2015-05-03 17:31 ` [PATCH 32/34] atp870u: Replace port 0x80 delay by udelay Ondrej Zary
2015-05-03 17:31 ` [PATCH 33/34] atp870u: Fix incorrect writeb_io access to register 0x3a Ondrej Zary
2015-05-03 17:31 ` [PATCH 34/34] atp870u: Introduce atp_set_host_id Ondrej Zary
2015-05-11  9:06 ` [RFC PATCH 00/34] atp870u: Remove the first level of crap Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1430674310-11576-6-git-send-email-linux@rainbow-software.org \
    --to=linux@rainbow-software.org \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).