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 31/34] atp870u: Convert remaining in[bwl] and out[bwl] to wrappers
Date: Sun,  3 May 2015 19:31:47 +0200	[thread overview]
Message-ID: <1430674310-11576-32-git-send-email-linux@rainbow-software.org> (raw)
In-Reply-To: <1430674310-11576-1-git-send-email-linux@rainbow-software.org>

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

diff --git a/drivers/scsi/atp870u.c b/drivers/scsi/atp870u.c
index b5baf41..6ff8910 100644
--- a/drivers/scsi/atp870u.c
+++ b/drivers/scsi/atp870u.c
@@ -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		
-- 
Ondrej Zary


  parent reply	other threads:[~2015-05-03 17:53 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 ` [PATCH 05/34] atp870u: Untangle tmport #3 Ondrej Zary
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 ` Ondrej Zary [this message]
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-32-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).