sh: Consolidated SH7751/SH7780 PCI support.

This cleans up quite a lot of the PCI mess that we
currently have, and attempts to consolidate the
duplication in the SH7780 and SH7751 PCI controllers.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
diff --git a/arch/sh/boards/landisk/Makefile b/arch/sh/boards/landisk/Makefile
index 60e75c6..89e4beb 100644
--- a/arch/sh/boards/landisk/Makefile
+++ b/arch/sh/boards/landisk/Makefile
@@ -3,5 +3,3 @@
 #
 
 obj-y	 := setup.o io.o irq.o rtc.o landisk_pwb.o
-
-obj-$(CONFIG_PCI) += pci.o
diff --git a/arch/sh/boards/landisk/io.c b/arch/sh/boards/landisk/io.c
index aa6b145..92498b4 100644
--- a/arch/sh/boards/landisk/io.c
+++ b/arch/sh/boards/landisk/io.c
@@ -14,39 +14,16 @@
  * modifed by kogiidena
  * 2005.03.03
  */
-
 #include <linux/kernel.h>
 #include <linux/types.h>
+#include <linux/pci.h>
 #include <asm/landisk/iodata_landisk.h>
 #include <asm/addrspace.h>
 #include <asm/io.h>
 
-#include <linux/module.h>
-#include <linux/pci.h>
-#include "../../drivers/pci/pci-sh7751.h"
-
 extern void *area5_io_base;	/* Area 5 I/O Base address */
 extern void *area6_io_base;	/* Area 6 I/O Base address */
 
-/*
- * The 7751R LANDISK uses the built-in PCI controller (PCIC)
- * of the 7751R processor, and has a SuperIO accessible via the PCI.
- * The board also includes a PCMCIA controller on its memory bus,
- * like the other Solution Engine boards.
- */
-
-#define PCIIOBR		(volatile long *)PCI_REG(SH7751_PCIIOBR)
-#define PCIMBR          (volatile long *)PCI_REG(SH7751_PCIMBR)
-#define PCI_IO_AREA	SH7751_PCI_IO_BASE
-#define PCI_MEM_AREA	SH7751_PCI_CONFIG_BASE
-
-#define PCI_IOMAP(adr)	(PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
-
-static inline void delay(void)
-{
-	ctrl_inw(0xa0000000);
-}
-
 static inline unsigned long port2adr(unsigned int port)
 {
 	if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6)
@@ -67,17 +44,6 @@
 	return port;
 }
 
-/* In case someone configures the kernel w/o PCI support: in that */
-/* scenario, don't ever bother to check for PCI-window addresses */
-
-/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */
-#if defined(CONFIG_PCI)
-#define CHECK_SH7751_PCIIO(port) \
-  ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE)))
-#else
-#define CHECK_SH_7751_PCIIO(port) (0)
-#endif
-
 /*
  * General outline: remap really low stuff [eventually] to SuperIO,
  * stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO)
@@ -89,8 +55,8 @@
 {
 	if (PXSEG(port))
 		return ctrl_inb(port);
-	else if (CHECK_SH7751_PCIIO(port))
-		return ctrl_inb(PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port))
+		return ctrl_inb(pci_ioaddr(port));
 
 	return ctrl_inw(port2adr(port)) & 0xff;
 }
@@ -101,12 +67,12 @@
 
 	if (PXSEG(port))
 		v = ctrl_inb(port);
-	else if (CHECK_SH7751_PCIIO(port))
-		v = ctrl_inb(PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port))
+		v = ctrl_inb(pci_ioaddr(port));
 	else
 		v = ctrl_inw(port2adr(port)) & 0xff;
 
-	delay();
+	ctrl_delay();
 
 	return v;
 }
@@ -115,8 +81,8 @@
 {
 	if (PXSEG(port))
 		return ctrl_inw(port);
-	else if (CHECK_SH7751_PCIIO(port))
-		return ctrl_inw(PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port))
+		return ctrl_inw(pci_ioaddr(port));
 	else
 		maybebadio(port);
 
@@ -127,8 +93,8 @@
 {
 	if (PXSEG(port))
 		return ctrl_inl(port);
-	else if (CHECK_SH7751_PCIIO(port))
-		return ctrl_inl(PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port))
+		return ctrl_inl(pci_ioaddr(port));
 	else
 		maybebadio(port);
 
@@ -139,8 +105,8 @@
 {
 	if (PXSEG(port))
 		ctrl_outb(value, port);
-	else if (CHECK_SH7751_PCIIO(port))
-		ctrl_outb(value, PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port))
+		ctrl_outb(value, pci_ioaddr(port));
 	else
 		ctrl_outw(value, port2adr(port));
 }
@@ -149,19 +115,19 @@
 {
 	if (PXSEG(port))
 		ctrl_outb(value, port);
-	else if (CHECK_SH7751_PCIIO(port))
-		ctrl_outb(value, PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port))
+		ctrl_outb(value, pci_ioaddr(port));
 	else
 		ctrl_outw(value, port2adr(port));
-	delay();
+	ctrl_delay();
 }
 
 void landisk_outw(u16 value, unsigned long port)
 {
 	if (PXSEG(port))
 		ctrl_outw(value, port);
-	else if (CHECK_SH7751_PCIIO(port))
-		ctrl_outw(value, PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port))
+		ctrl_outw(value, pci_ioaddr(port));
 	else
 		maybebadio(port);
 }
@@ -170,8 +136,8 @@
 {
 	if (PXSEG(port))
 		ctrl_outl(value, port);
-	else if (CHECK_SH7751_PCIIO(port))
-		ctrl_outl(value, PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port))
+		ctrl_outl(value, pci_ioaddr(port));
 	else
 		maybebadio(port);
 }
@@ -184,8 +150,8 @@
         if (PXSEG(port)) {
                 while (count--)
                         *buf++ = *(volatile u8 *)port;
-	} else if (CHECK_SH7751_PCIIO(port)) {
-                volatile u8 *bp = (volatile u8 *)PCI_IOMAP(port);
+	} else if (is_pci_ioaddr(port)) {
+                volatile u8 *bp = (volatile u8 *)pci_ioaddr(port);
 
                 while (count--)
                         *buf++ = *bp;
@@ -203,8 +169,8 @@
 
 	if (PXSEG(port))
 		p = (volatile u16 *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-		p = (volatile u16 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+		p = (volatile u16 *)pci_ioaddr(port);
 	else
 		p = (volatile u16 *)port2adr(port);
 	while (count--)
@@ -215,8 +181,8 @@
 {
         u32 *buf = dst;
 
-	if (CHECK_SH7751_PCIIO(port)) {
-                volatile u32 *p = (volatile u32 *)PCI_IOMAP(port);
+	if (is_pci_ioaddr(port)) {
+                volatile u32 *p = (volatile u32 *)pci_ioaddr(port);
 
                 while (count--)
                         *buf++ = *p;
@@ -232,8 +198,8 @@
 	if (PXSEG(port))
                 while (count--)
                         ctrl_outb(*buf++, port);
-	else if (CHECK_SH7751_PCIIO(port)) {
-                volatile u8 *bp = (volatile u8 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port)) {
+                volatile u8 *bp = (volatile u8 *)pci_ioaddr(port);
 
                 while (count--)
                         *bp = *buf++;
@@ -251,8 +217,8 @@
 
 	if (PXSEG(port))
                 p = (volatile u16 *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-                p = (volatile u16 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+                p = (volatile u16 *)pci_ioaddr(port);
 	else
                 p = (volatile u16 *)port2adr(port);
 
@@ -264,8 +230,8 @@
 {
         const u32 *buf = src;
 
-	if (CHECK_SH7751_PCIIO(port)) {
-                volatile u32 *p = (volatile u32 *)PCI_IOMAP(port);
+	if (is_pci_ioaddr(port)) {
+                volatile u32 *p = (volatile u32 *)pci_ioaddr(port);
 
                 while (count--)
                         *p = *buf++;
@@ -277,8 +243,8 @@
 {
         if (PXSEG(port))
                 return (void __iomem *)port;
-        else if (CHECK_SH7751_PCIIO(port))
-                return (void __iomem *)PCI_IOMAP(port);
+        else if (is_pci_ioaddr(port))
+                return (void __iomem *)pci_ioaddr(port);
 
         return (void __iomem *)port2adr(port);
 }
diff --git a/arch/sh/boards/mpc1211/setup.c b/arch/sh/boards/mpc1211/setup.c
index 2bfb221..a8c5180 100644
--- a/arch/sh/boards/mpc1211/setup.c
+++ b/arch/sh/boards/mpc1211/setup.c
@@ -255,23 +255,12 @@
 	}
 }
 
-/*
-  Initialize the board
-*/
-
-
-static void delay (void)
-{
-	volatile unsigned short tmp;
-	tmp = *(volatile unsigned short *) 0xa0000000;
-}
-
-static void delay1000 (void)
+static void delay1000(void)
 {
 	int i;
 
 	for (i=0; i<1000; i++)
-		delay ();
+		ctrl_delay();
 }
 
 static int put_smb_blk(unsigned char *p, int address, int command, int no)
diff --git a/arch/sh/boards/renesas/hs7751rvoip/io.c b/arch/sh/boards/renesas/hs7751rvoip/io.c
index ecdce7e..8c26550 100644
--- a/arch/sh/boards/renesas/hs7751rvoip/io.c
+++ b/arch/sh/boards/renesas/hs7751rvoip/io.c
@@ -13,14 +13,11 @@
 
 #include <linux/kernel.h>
 #include <linux/types.h>
+#include <linux/module.h>
 #include <asm/io.h>
 #include <asm/hs7751rvoip/hs7751rvoip.h>
 #include <asm/addrspace.h>
 
-#include <linux/module.h>
-#include <linux/pci.h>
-#include "../../../drivers/pci/pci-sh7751.h"
-
 extern void *area6_io8_base;	/* Area 6 8bit I/O Base address */
 extern void *area5_io16_base;	/* Area 5 16bit I/O Base address */
 
@@ -31,27 +28,17 @@
  * like the other Solution Engine boards.
  */
 
-#define PCIIOBR		(volatile long *)PCI_REG(SH7751_PCIIOBR)
-#define PCIMBR          (volatile long *)PCI_REG(SH7751_PCIMBR)
-#define PCI_IO_AREA	SH7751_PCI_IO_BASE
-#define PCI_MEM_AREA	SH7751_PCI_CONFIG_BASE
-#define PCI_IOMAP(adr)	(PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
-
 #define CODEC_IO_BASE	0x1000
 #define CODEC_IOMAP(a)	((unsigned long)area6_io8_base + ((a) - CODEC_IO_BASE))
 
-static inline void delay(void)
-{
-	ctrl_inw(0xa0000000);
-}
-
 static inline unsigned long port2adr(unsigned int port)
 {
 	if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6)
 		if (port == 0x3f6)
 			return ((unsigned long)area5_io16_base + 0x0c);
 		else
-			return ((unsigned long)area5_io16_base + 0x800 + ((port-0x1f0) << 1));
+			return ((unsigned long)area5_io16_base + 0x800 +
+				((port-0x1f0) << 1));
 	else
 		maybebadio((unsigned long)port);
 	return port;
@@ -70,25 +57,10 @@
 }
 
 #if defined(CONFIG_HS7751RVOIP_CODEC)
-static inline int
-codec_port(unsigned long port)
-{
-	if (CODEC_IO_BASE <= port && port < (CODEC_IO_BASE+0x20))
-		return 1;
-	else
-		return 0;
-}
-#endif
-
-/* In case someone configures the kernel w/o PCI support: in that */
-/* scenario, don't ever bother to check for PCI-window addresses */
-
-/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */
-#if defined(CONFIG_PCI)
-#define CHECK_SH7751_PCIIO(port) \
-  ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE)))
+#define codec_port(port)	\
+	((CODEC_IO_BASE <= (port)) && ((port) < (CODEC_IO_BASE + 0x20)))
 #else
-#define CHECK_SH7751_PCIIO(port) (0)
+#define codec_port(port)	(0)
 #endif
 
 /*
@@ -102,12 +74,10 @@
 {
 	if (PXSEG(port))
 		return ctrl_inb(port);
-#if defined(CONFIG_HS7751RVOIP_CODEC)
 	else if (codec_port(port))
 		return ctrl_inb(CODEC_IOMAP(port));
-#endif
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		return ctrl_inb(PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		return ctrl_inb(pci_ioaddr(port));
 	else
 		return ctrl_inw(port2adr(port)) & 0xff;
 }
@@ -118,15 +88,13 @@
 
         if (PXSEG(port))
 		v = ctrl_inb(port);
-#if defined(CONFIG_HS7751RVOIP_CODEC)
 	else if (codec_port(port))
 		v = ctrl_inb(CODEC_IOMAP(port));
-#endif
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		v = ctrl_inb(PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		v = ctrl_inb(pci_ioaddr(port));
 	else
 		v = ctrl_inw(port2adr(port)) & 0xff;
-	delay();
+	ctrl_delay();
 	return v;
 }
 
@@ -134,8 +102,8 @@
 {
         if (PXSEG(port))
 		return ctrl_inw(port);
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		return ctrl_inw(PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		return ctrl_inw(pci_ioaddr(port));
 	else
 		maybebadio(port);
 	return 0;
@@ -145,8 +113,8 @@
 {
         if (PXSEG(port))
 		return ctrl_inl(port);
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		return ctrl_inl(PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		return ctrl_inl(pci_ioaddr(port));
 	else
 		maybebadio(port);
 	return 0;
@@ -157,12 +125,10 @@
 
         if (PXSEG(port))
 		ctrl_outb(value, port);
-#if defined(CONFIG_HS7751RVOIP_CODEC)
 	else if (codec_port(port))
 		ctrl_outb(value, CODEC_IOMAP(port));
-#endif
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		ctrl_outb(value, PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		ctrl_outb(value, pci_ioaddr(port));
 	else
 		ctrl_outb(value, port2adr(port));
 }
@@ -171,24 +137,22 @@
 {
         if (PXSEG(port))
 		ctrl_outb(value, port);
-#if defined(CONFIG_HS7751RVOIP_CODEC)
 	else if (codec_port(port))
 		ctrl_outb(value, CODEC_IOMAP(port));
-#endif
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		ctrl_outb(value, PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		ctrl_outb(value, pci_ioaddr(port));
 	else
 		ctrl_outw(value, port2adr(port));
 
-	delay();
+	ctrl_delay();
 }
 
 void hs7751rvoip_outw(unsigned short value, unsigned long port)
 {
         if (PXSEG(port))
 		ctrl_outw(value, port);
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		ctrl_outw(value, PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		ctrl_outw(value, pci_ioaddr(port));
 	else
 		maybebadio(port);
 }
@@ -197,8 +161,8 @@
 {
         if (PXSEG(port))
 		ctrl_outl(value, port);
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		ctrl_outl(value, PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		ctrl_outl(value, pci_ioaddr(port));
 	else
 		maybebadio(port);
 }
@@ -210,13 +174,11 @@
 	if (PXSEG(port))
 		while (count--)
 			*buf++ = ctrl_inb(port);
-#if defined(CONFIG_HS7751RVOIP_CODEC)
 	else if (codec_port(port))
 		while (count--)
 			*buf++ = ctrl_inb(CODEC_IOMAP(port));
-#endif
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
-		volatile u8 *bp = (volatile u8 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port)) {
+		volatile u8 *bp = (volatile u8 *)pci_ioaddr(port);
 
 		while (count--)
 			*buf++ = *bp;
@@ -235,8 +197,8 @@
 
 	if (PXSEG(port))
 		p = (volatile u16 *)port;
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		p = (volatile u16 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		p = (volatile u16 *)pci_ioaddr(port);
 	else
 		p = (volatile u16 *)port2adr(port);
 	while (count--)
@@ -246,8 +208,8 @@
 void hs7751rvoip_insl(unsigned long port, void *addr, unsigned long count)
 {
 
-	if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
-		volatile u32 *p = (volatile u32 *)PCI_IOMAP(port);
+	if (is_pci_ioaddr(port) || shifted_port(port)) {
+		volatile u32 *p = (volatile u32 *)pci_ioaddr(port);
 		u32 *buf = addr;
 
 		while (count--)
@@ -263,13 +225,11 @@
 	if (PXSEG(port))
 		while (count--)
 			ctrl_outb(*buf++, port);
-#if defined(CONFIG_HS7751RVOIP_CODEC)
 	else if (codec_port(port))
 		while (count--)
 			ctrl_outb(*buf++, CODEC_IOMAP(port));
-#endif
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
-		volatile u8 *bp = (volatile u8 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port)) {
+		volatile u8 *bp = (volatile u8 *)pci_ioaddr(port);
 
 		while (count--)
 			*bp = *buf++;
@@ -288,8 +248,8 @@
 
 	if (PXSEG(port))
 		p = (volatile u16 *)port;
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		p = (volatile u16 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		p = (volatile u16 *)pci_ioaddr(port);
 	else
 		p = (volatile u16 *)port2adr(port);
 
@@ -301,8 +261,8 @@
 {
 	const u32 *buf = addr;
 
-	if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
-		volatile u32 *p = (volatile u32 *)PCI_IOMAP(port);
+	if (is_pci_ioaddr(port) || shifted_port(port)) {
+		volatile u32 *p = (volatile u32 *)pci_ioaddr(port);
 
 		while (count--)
 			*p = *buf++;
@@ -316,8 +276,8 @@
                 return (void __iomem *)port;
 	else if (unlikely(codec_port(port) && (size == 1)))
 		return (void __iomem *)CODEC_IOMAP(port);
-        else if (CHECK_SH7751_PCIIO(port))
-                return (void __iomem *)PCI_IOMAP(port);
+        else if (is_pci_ioaddr(port))
+                return (void __iomem *)pci_ioaddr(port);
 
         return (void __iomem *)port2adr(port);
 }
diff --git a/arch/sh/boards/renesas/r7780rp/io.c b/arch/sh/boards/renesas/r7780rp/io.c
index f73ca3f..db92d6e 100644
--- a/arch/sh/boards/renesas/r7780rp/io.c
+++ b/arch/sh/boards/renesas/r7780rp/io.c
@@ -1,6 +1,4 @@
 /*
- * linux/arch/sh/kernel/io_r7780rp.c
- *
  * Copyright (C) 2001  Ian da Silva, Jeremy Siegel
  * Based largely on io_se.c.
  *
@@ -10,37 +8,13 @@
  * placeholder code from io_r7780rp.c left in with the
  * expectation of later SuperIO and PCMCIA access.
  */
-
+#include <linux/pci.h>
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <asm/r7780rp/r7780rp.h>
 #include <asm/addrspace.h>
 #include <asm/io.h>
 
-#include <linux/module.h>
-#include <linux/pci.h>
-#include "../../../drivers/pci/pci-sh7780.h"
-
-/*
- * The 7780 R7780RP-1 uses the built-in PCI controller (PCIC)
- * of the 7780 processor, and has a SuperIO accessible via the PCI.
- * The board also includes a PCMCIA controller on its memory bus,
- * like the other Solution Engine boards.
- */
-
-#define	SH7780_PCIIOBR_MASK	0xFFFC0000	/* IO Space Mask */
-#define PCIIOBR		(volatile long *)PCI_REG(SH7780_PCIIOBR)
-#define PCIMBR          (volatile long *)PCI_REG(SH7780_PCIMBR)
-#define PCI_IO_AREA	SH7780_PCI_IO_BASE
-#define PCI_MEM_AREA	SH7780_PCI_CONFIG_BASE
-
-#define PCI_IOMAP(adr)	(PCI_IO_AREA + (adr & ~SH7780_PCIIOBR_MASK))
-
-static inline void delay(void)
-{
-	ctrl_inw(0xa0000000);
-}
-
 static inline unsigned long port2adr(unsigned int port)
 {
 	if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6)
@@ -78,17 +52,6 @@
 		return 1;
 }
 
-/* In case someone configures the kernel w/o PCI support: in that */
-/* scenario, don't ever bother to check for PCI-window addresses */
-
-/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */
-#if defined(CONFIG_PCI)
-#define CHECK_SH7780_PCIIO(port) \
-  ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7780_PCI_IO_SIZE)))
-#else
-#define CHECK_SH7780_PCIIO(port) (0)
-#endif
-
 #if defined(CONFIG_NE2000) || defined(CONFIG_NE2000_MODULE)
 #define CHECK_AX88796L_PORT(port) \
   ((port >= AX88796L_IO_BASE) && (port < (AX88796L_IO_BASE+0x20)))
@@ -109,8 +72,8 @@
 		return ctrl_inw(port88796l(port, 0)) & 0xff;
 	else if (PXSEG(port))
 		return ctrl_inb(port);
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port))
-		return ctrl_inb(PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		return ctrl_inb(pci_ioaddr(port));
 
 	return ctrl_inw(port2adr(port)) & 0xff;
 }
@@ -123,12 +86,12 @@
 		v = ctrl_inw(port88796l(port, 0)) & 0xff;
 	else if (PXSEG(port))
 		v = ctrl_inb(port);
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port))
-		v = ctrl_inb(PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		v = ctrl_inb(pci_ioaddr(port));
 	else
 		v = ctrl_inw(port2adr(port)) & 0xff;
 
-	delay();
+	ctrl_delay();
 
 	return v;
 }
@@ -139,8 +102,8 @@
 		maybebadio(port);
 	else if (PXSEG(port))
 		return ctrl_inw(port);
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port))
-		return ctrl_inw(PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		return ctrl_inw(pci_ioaddr(port));
 	else
 		maybebadio(port);
 
@@ -153,8 +116,8 @@
 		maybebadio(port);
 	else if (PXSEG(port))
 		return ctrl_inl(port);
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port))
-		return ctrl_inl(PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		return ctrl_inl(pci_ioaddr(port));
 	else
 		maybebadio(port);
 
@@ -167,8 +130,8 @@
 		ctrl_outw(value, port88796l(port, 0));
 	else if (PXSEG(port))
 		ctrl_outb(value, port);
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port))
-		ctrl_outb(value, PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		ctrl_outb(value, pci_ioaddr(port));
 	else
 		ctrl_outw(value, port2adr(port));
 }
@@ -179,12 +142,12 @@
 		ctrl_outw(value, port88796l(port, 0));
 	else if (PXSEG(port))
 		ctrl_outb(value, port);
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port))
-		ctrl_outb(value, PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		ctrl_outb(value, pci_ioaddr(port));
 	else
 		ctrl_outw(value, port2adr(port));
 
-	delay();
+	ctrl_delay();
 }
 
 void r7780rp_outw(u16 value, unsigned long port)
@@ -193,8 +156,8 @@
 		maybebadio(port);
 	else if (PXSEG(port))
 		ctrl_outw(value, port);
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port))
-		ctrl_outw(value, PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		ctrl_outw(value, pci_ioaddr(port));
 	else
 		maybebadio(port);
 }
@@ -205,8 +168,8 @@
 		maybebadio(port);
 	else if (PXSEG(port))
 		ctrl_outl(value, port);
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port))
-		ctrl_outl(value, PCI_IOMAP(port));
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		ctrl_outl(value, pci_ioaddr(port));
 	else
 		maybebadio(port);
 }
@@ -223,8 +186,8 @@
 	} else if (PXSEG(port)) {
 		while (count--)
 			*buf++ = *(volatile u8 *)port;
-	} else if (CHECK_SH7780_PCIIO(port) || shifted_port(port)) {
-		volatile u8 *bp = (volatile u8 *)PCI_IOMAP(port);
+	} else if (is_pci_ioaddr(port) || shifted_port(port)) {
+		volatile u8 *bp = (volatile u8 *)pci_ioaddr(port);
 
 		while (count--)
 			*buf++ = *bp;
@@ -244,8 +207,8 @@
 		p = (volatile u16 *)port88796l(port, 1);
 	else if (PXSEG(port))
 		p = (volatile u16 *)port;
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port))
-		p = (volatile u16 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		p = (volatile u16 *)pci_ioaddr(port);
 	else
 		p = (volatile u16 *)port2adr(port);
 
@@ -259,8 +222,8 @@
 
 	if (CHECK_AX88796L_PORT(port))
 		maybebadio(port);
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port)) {
-		volatile u32 *p = (volatile u32 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port)) {
+		volatile u32 *p = (volatile u32 *)pci_ioaddr(port);
 
 		while (count--)
 			*buf++ = *p;
@@ -280,8 +243,8 @@
 	} else if (PXSEG(port))
 		while (count--)
 			ctrl_outb(*buf++, port);
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port)) {
-		volatile u8 *bp = (volatile u8 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port)) {
+		volatile u8 *bp = (volatile u8 *)pci_ioaddr(port);
 
 		while (count--)
 			*bp = *buf++;
@@ -301,8 +264,8 @@
 		p = (volatile u16 *)port88796l(port, 1);
 	else if (PXSEG(port))
 		p = (volatile u16 *)port;
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port))
-		p = (volatile u16 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		p = (volatile u16 *)pci_ioaddr(port);
 	else
 		p = (volatile u16 *)port2adr(port);
 
@@ -316,8 +279,8 @@
 
 	if (CHECK_AX88796L_PORT(port))
 		maybebadio(port);
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port)) {
-		volatile u32 *p = (volatile u32 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port)) {
+		volatile u32 *p = (volatile u32 *)pci_ioaddr(port);
 
 		while (count--)
 			*p = *buf++;
@@ -331,8 +294,8 @@
 		return (void __iomem *)port88796l(port, size > 1);
 	else if (PXSEG(port))
 		return (void __iomem *)port;
-	else if (CHECK_SH7780_PCIIO(port) || shifted_port(port))
-		return (void __iomem *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		return (void __iomem *)pci_ioaddr(port);
 
 	return (void __iomem *)port2adr(port);
 }
diff --git a/arch/sh/boards/renesas/rts7751r2d/io.c b/arch/sh/boards/renesas/rts7751r2d/io.c
index 8dc2a2e..135aa0b 100644
--- a/arch/sh/boards/renesas/rts7751r2d/io.c
+++ b/arch/sh/boards/renesas/rts7751r2d/io.c
@@ -1,6 +1,4 @@
 /*
- * linux/arch/sh/kernel/io_rts7751r2d.c
- *
  * Copyright (C) 2001  Ian da Silva, Jeremy Siegel
  * Based largely on io_se.c.
  *
@@ -10,11 +8,9 @@
  * placeholder code from io_rts7751r2d.c left in with the
  * expectation of later SuperIO and PCMCIA access.
  */
-
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/pci.h>
-#include "../../../drivers/pci/pci-sh7751.h"
 #include <asm/rts7751r2d/rts7751r2d.h>
 #include <asm/io.h>
 #include <asm/addrspace.h>
@@ -26,18 +22,6 @@
  * like the other Solution Engine boards.
  */
 
-#define PCIIOBR		(volatile long *)PCI_REG(SH7751_PCIIOBR)
-#define PCIMBR          (volatile long *)PCI_REG(SH7751_PCIMBR)
-#define PCI_IO_AREA	SH7751_PCI_IO_BASE
-#define PCI_MEM_AREA	SH7751_PCI_CONFIG_BASE
-
-#define PCI_IOMAP(adr)	(PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
-
-static inline void delay(void)
-{
-	ctrl_inw(0xa0000000);
-}
-
 static inline unsigned long port2adr(unsigned int port)
 {
 	if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6)
@@ -75,17 +59,6 @@
 		return 1;
 }
 
-/* In case someone configures the kernel w/o PCI support: in that */
-/* scenario, don't ever bother to check for PCI-window addresses */
-
-/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */
-#if defined(CONFIG_PCI)
-#define CHECK_SH7751_PCIIO(port) \
-  ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE)))
-#else
-#define CHECK_SH7751_PCIIO(port) (0)
-#endif
-
 #if defined(CONFIG_NE2000) || defined(CONFIG_NE2000_MODULE)
 #define CHECK_AX88796L_PORT(port) \
   ((port >= AX88796L_IO_BASE) && (port < (AX88796L_IO_BASE+0x20)))
@@ -106,8 +79,8 @@
 		return (*(volatile unsigned short *)port88796l(port, 0)) & 0xff;
 	else if (PXSEG(port))
 		return *(volatile unsigned char *)port;
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		return *(volatile unsigned char *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		return *(volatile unsigned char *)pci_ioaddr(port);
 	else
 		return (*(volatile unsigned short *)port2adr(port) & 0xff);
 }
@@ -120,11 +93,12 @@
 		v = (*(volatile unsigned short *)port88796l(port, 0)) & 0xff;
         else if (PXSEG(port))
 		v = *(volatile unsigned char *)port;
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		v = *(volatile unsigned char *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		v = *(volatile unsigned char *)pci_ioaddr(port);
 	else
 		v = (*(volatile unsigned short *)port2adr(port) & 0xff);
-	delay();
+
+	ctrl_delay();
 
 	return v;
 }
@@ -135,8 +109,8 @@
 		maybebadio(port);
         else if (PXSEG(port))
 		return *(volatile unsigned short *)port;
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		return *(volatile unsigned short *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		return *(volatile unsigned short *)pci_ioaddr(port);
 	else
 		maybebadio(port);
 
@@ -149,8 +123,8 @@
 		maybebadio(port);
         else if (PXSEG(port))
 		return *(volatile unsigned long *)port;
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		return *(volatile unsigned long *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		return *(volatile unsigned long *)pci_ioaddr(port);
 	else
 		maybebadio(port);
 
@@ -163,8 +137,8 @@
 		*((volatile unsigned short *)port88796l(port, 0)) = value;
         else if (PXSEG(port))
 		*(volatile unsigned char *)port = value;
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		*(volatile unsigned char *)PCI_IOMAP(port) = value;
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		*(volatile unsigned char *)pci_ioaddr(port) = value;
 	else
 		*(volatile unsigned short *)port2adr(port) = value;
 }
@@ -175,11 +149,12 @@
 		*((volatile unsigned short *)port88796l(port, 0)) = value;
         else if (PXSEG(port))
 		*(volatile unsigned char *)port = value;
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		*(volatile unsigned char *)PCI_IOMAP(port) = value;
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		*(volatile unsigned char *)pci_ioaddr(port) = value;
 	else
 		*(volatile unsigned short *)port2adr(port) = value;
-	delay();
+
+	ctrl_delay();
 }
 
 void rts7751r2d_outw(unsigned short value, unsigned long port)
@@ -188,8 +163,8 @@
 		maybebadio(port);
         else if (PXSEG(port))
 		*(volatile unsigned short *)port = value;
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		*(volatile unsigned short *)PCI_IOMAP(port) = value;
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		*(volatile unsigned short *)pci_ioaddr(port) = value;
 	else
 		maybebadio(port);
 }
@@ -200,8 +175,8 @@
 		maybebadio(port);
         else if (PXSEG(port))
 		*(volatile unsigned long *)port = value;
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		*(volatile unsigned long *)PCI_IOMAP(port) = value;
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		*(volatile unsigned long *)pci_ioaddr(port) = value;
 	else
 		maybebadio(port);
 }
@@ -219,8 +194,8 @@
 	} else if (PXSEG(port))
 		while (count--)
 			ctrl_outb(ctrl_inb(port), a++);
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
-		bp = (__u8 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port)) {
+		bp = (__u8 *)pci_ioaddr(port);
 		while (count--)
 			ctrl_outb(*bp, a++);
 	} else {
@@ -239,8 +214,8 @@
 		p = (volatile unsigned short *)port88796l(port, 1);
 	else if (PXSEG(port))
 		p = (volatile unsigned short *)port;
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		p = (volatile unsigned short *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		p = (volatile unsigned short *)pci_ioaddr(port);
 	else
 		p = (volatile unsigned short *)port2adr(port);
 	while (count--)
@@ -251,11 +226,11 @@
 {
 	if (CHECK_AX88796L_PORT(port))
 		maybebadio(port);
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
+	else if (is_pci_ioaddr(port) || shifted_port(port)) {
 		unsigned long a = (unsigned long)addr;
 
 		while (count--) {
-			ctrl_outl(ctrl_inl(PCI_IOMAP(port)), a);
+			ctrl_outl(ctrl_inl(pci_ioaddr(port)), a);
 			a += 4;
 		}
 	} else
@@ -275,8 +250,8 @@
 	} else if (PXSEG(port))
 		while (count--)
 			ctrl_outb(a++, port);
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
-		bp = (__u8 *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port)) {
+		bp = (__u8 *)pci_ioaddr(port);
 		while (count--)
 			*bp = ctrl_inb(a++);
 	} else {
@@ -295,8 +270,8 @@
 		p = (volatile unsigned short *)port88796l(port, 1);
 	else if (PXSEG(port))
 		p = (volatile unsigned short *)port;
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
-		p = (volatile unsigned short *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port) || shifted_port(port))
+		p = (volatile unsigned short *)pci_ioaddr(port);
 	else
 		p = (volatile unsigned short *)port2adr(port);
 
@@ -310,11 +285,11 @@
 {
 	if (CHECK_AX88796L_PORT(port))
 		maybebadio(port);
-	else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
+	else if (is_pci_ioaddr(port) || shifted_port(port)) {
 		unsigned long a = (unsigned long)addr;
 
 		while (count--) {
-			ctrl_outl(ctrl_inl(a), PCI_IOMAP(port));
+			ctrl_outl(ctrl_inl(a), pci_ioaddr(port));
 			a += 4;
 		}
 	} else
diff --git a/arch/sh/boards/renesas/systemh/io.c b/arch/sh/boards/renesas/systemh/io.c
index 0befd4f..cde6e5d 100644
--- a/arch/sh/boards/renesas/systemh/io.c
+++ b/arch/sh/boards/renesas/systemh/io.c
@@ -5,36 +5,16 @@
  * Based largely on io_se.c.
  *
  * I/O routine for Hitachi 7751 Systemh.
- *
  */
-
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/pci.h>
 #include <asm/systemh7751.h>
 #include <asm/addrspace.h>
 #include <asm/io.h>
-#include "../../../drivers/pci/pci-sh7751.h"
 
-/*
- * The 7751 SystemH Engine uses the built-in PCI controller (PCIC)
- * of the 7751 processor, and has a SuperIO accessible on its memory
- * bus.
- */
-
-#define PCIIOBR		(volatile long *)PCI_REG(SH7751_PCIIOBR)
-#define PCIMBR          (volatile long *)PCI_REG(SH7751_PCIMBR)
-#define PCI_IO_AREA	SH7751_PCI_IO_BASE
-#define PCI_MEM_AREA	SH7751_PCI_CONFIG_BASE
-
-#define PCI_IOMAP(adr)	(PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
 #define ETHER_IOMAP(adr) (0xB3000000 + (adr)) /*map to 16bits access area
                                                 of smc lan chip*/
-static inline void delay(void)
-{
-	ctrl_inw(0xa0000000);
-}
-
 static inline volatile __u16 *
 port2adr(unsigned int port)
 {
@@ -44,17 +24,6 @@
 	return (volatile __u16*)port;
 }
 
-/* In case someone configures the kernel w/o PCI support: in that */
-/* scenario, don't ever bother to check for PCI-window addresses */
-
-/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */
-#if defined(CONFIG_PCI)
-#define CHECK_SH7751_PCIIO(port) \
-  ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE)))
-#else
-#define CHECK_SH7751_PCIIO(port) (0)
-#endif
-
 /*
  * General outline: remap really low stuff [eventually] to SuperIO,
  * stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO)
@@ -66,8 +35,8 @@
 {
 	if (PXSEG(port))
 		return *(volatile unsigned char *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-		return *(volatile unsigned char *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+		return *(volatile unsigned char *)pci_ioaddr(port);
 	else if (port <= 0x3F1)
 		return *(volatile unsigned char *)ETHER_IOMAP(port);
 	else
@@ -80,13 +49,13 @@
 
         if (PXSEG(port))
                 v = *(volatile unsigned char *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-                v = *(volatile unsigned char *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+                v = *(volatile unsigned char *)pci_ioaddr(port);
 	else if (port <= 0x3F1)
 		v = *(volatile unsigned char *)ETHER_IOMAP(port);
 	else
 		v = (*port2adr(port))&0xff;
-	delay();
+	ctrl_delay();
 	return v;
 }
 
@@ -94,8 +63,8 @@
 {
         if (PXSEG(port))
                 return *(volatile unsigned short *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-                return *(volatile unsigned short *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+                return *(volatile unsigned short *)pci_ioaddr(port);
 	else if (port >= 0x2000)
 		return *port2adr(port);
 	else if (port <= 0x3F1)
@@ -109,8 +78,8 @@
 {
         if (PXSEG(port))
                 return *(volatile unsigned long *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-                return *(volatile unsigned int *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+                return *(volatile unsigned int *)pci_ioaddr(port);
 	else if (port >= 0x2000)
 		return *port2adr(port);
 	else if (port <= 0x3F1)
@@ -125,8 +94,8 @@
 
         if (PXSEG(port))
                 *(volatile unsigned char *)port = value;
-	else if (CHECK_SH7751_PCIIO(port))
-        	*((unsigned char*)PCI_IOMAP(port)) = value;
+	else if (is_pci_ioaddr(port))
+		*((unsigned char*)pci_ioaddr(port)) = value;
 	else if (port <= 0x3F1)
 		*(volatile unsigned char *)ETHER_IOMAP(port) = value;
 	else
@@ -137,21 +106,21 @@
 {
         if (PXSEG(port))
                 *(volatile unsigned char *)port = value;
-	else if (CHECK_SH7751_PCIIO(port))
-        	*((unsigned char*)PCI_IOMAP(port)) = value;
+	else if (is_pci_ioaddr(port))
+		*((unsigned char*)pci_ioaddr(port)) = value;
 	else if (port <= 0x3F1)
 		*(volatile unsigned char *)ETHER_IOMAP(port) = value;
 	else
 		*(port2adr(port)) = value;
-	delay();
+	ctrl_delay();
 }
 
 void sh7751systemh_outw(unsigned short value, unsigned long port)
 {
         if (PXSEG(port))
                 *(volatile unsigned short *)port = value;
-	else if (CHECK_SH7751_PCIIO(port))
-        	*((unsigned short *)PCI_IOMAP(port)) = value;
+	else if (is_pci_ioaddr(port))
+		*((unsigned short *)pci_ioaddr(port)) = value;
 	else if (port >= 0x2000)
 		*port2adr(port) = value;
 	else if (port <= 0x3F1)
@@ -164,8 +133,8 @@
 {
         if (PXSEG(port))
                 *(volatile unsigned long *)port = value;
-	else if (CHECK_SH7751_PCIIO(port))
-        	*((unsigned long*)PCI_IOMAP(port)) = value;
+	else if (is_pci_ioaddr(port))
+		*((unsigned long*)pci_ioaddr(port)) = value;
 	else
 		maybebadio(port);
 }
diff --git a/arch/sh/boards/se/770x/io.c b/arch/sh/boards/se/770x/io.c
index 5102201..9941949 100644
--- a/arch/sh/boards/se/770x/io.c
+++ b/arch/sh/boards/se/770x/io.c
@@ -1,4 +1,4 @@
-/* $Id: io.c,v 1.6 2006/01/04 17:53:54 lethal Exp $
+/* $Id: io.c,v 1.7 2006/02/05 21:55:29 lethal Exp $
  *
  * linux/arch/sh/kernel/io_se.c
  *
@@ -20,11 +20,6 @@
 int sh_pcic_io_type;
 int sh_pcic_io_dummy;
 
-static inline void delay(void)
-{
-	ctrl_inw(0xa0000000);
-}
-
 /* MS7750 requires special versions of in*, out* routines, since
    PC-like io ports are located at upper half byte of 16-bit word which
    can be accessed only with 16-bit wide.  */
@@ -72,7 +67,7 @@
 		v = (*port2adr(port) >> 8); 
 	else
 		v = (*port2adr(port))&0xff; 
-	delay();
+	ctrl_delay();
 	return v;
 }
 
@@ -110,7 +105,7 @@
 		*(port2adr(port)) = value << 8;
 	else
 		*(port2adr(port)) = value;
-	delay();
+	ctrl_delay();
 }
 
 void se_outw(unsigned short value, unsigned long port)
diff --git a/arch/sh/boards/se/7751/io.c b/arch/sh/boards/se/7751/io.c
index 0e8a3ba..e8d846c 100644
--- a/arch/sh/boards/se/7751/io.c
+++ b/arch/sh/boards/se/7751/io.c
@@ -1,6 +1,4 @@
 /*
- * linux/arch/sh/kernel/io_7751se.c
- *
  * Copyright (C) 2001  Ian da Silva, Jeremy Siegel
  * Based largely on io_se.c.
  *
@@ -10,55 +8,14 @@
  * placeholder code from io_se.c left in with the
  * expectation of later SuperIO and PCMCIA access.
  */
-
 #include <linux/kernel.h>
 #include <linux/types.h>
+#include <linux/pci.h>
 #include <asm/io.h>
 #include <asm/se7751.h>
 #include <asm/addrspace.h>
 
-#include <linux/pci.h>
-#include "../../../drivers/pci/pci-sh7751.h"
-
-#if 0
-/******************************************************************
- * Variables from io_se.c, related to PCMCIA (not PCI); we're not
- * compiling them in, and have removed references from functions
- * which follow.  [Many checked for IO ports in the range bounded
- * by sh_pcic_io_start/stop, and used sh_pcic_io_wbase as offset.
- * As start/stop are uninitialized, only port 0x0 would match?]
- * When used, remember to adjust names to avoid clash with io_se?
- *****************************************************************/
-/* SH pcmcia io window base, start and end.  */
-int sh_pcic_io_wbase = 0xb8400000;
-int sh_pcic_io_start;
-int sh_pcic_io_stop;
-int sh_pcic_io_type;
-int sh_pcic_io_dummy;
-/*************************************************************/
-#endif
-
-/*
- * The 7751 Solution Engine uses the built-in PCI controller (PCIC)
- * of the 7751 processor, and has a SuperIO accessible via the PCI.
- * The board also includes a PCMCIA controller on its memory bus,
- * like the other Solution Engine boards.
- */ 
-
-#define PCIIOBR		(volatile long *)PCI_REG(SH7751_PCIIOBR)
-#define PCIMBR          (volatile long *)PCI_REG(SH7751_PCIMBR)
-#define PCI_IO_AREA	SH7751_PCI_IO_BASE
-#define PCI_MEM_AREA	SH7751_PCI_CONFIG_BASE
-
-#define PCI_IOMAP(adr)	(PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
-
-static inline void delay(void)
-{
-	ctrl_inw(0xa0000000);
-}
-
-static inline volatile __u16 *
-port2adr(unsigned int port)
+static inline volatile u16 *port2adr(unsigned int port)
 {
 	if (port >= 0x2000)
 		return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000));
@@ -66,32 +23,6 @@
 	return (volatile __u16*)port;
 }
 
-#if 0
-/* The 7751 Solution Engine seems to have everything hooked */
-/* up pretty normally (nothing on high-bytes only...) so this */
-/* shouldn't be needed */
-static inline int
-shifted_port(unsigned long port)
-{
-	/* For IDE registers, value is not shifted */
-	if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6)
-		return 0;
-	else
-		return 1;
-}
-#endif
-
-/* In case someone configures the kernel w/o PCI support: in that */
-/* scenario, don't ever bother to check for PCI-window addresses */
-
-/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */
-#if defined(CONFIG_PCI)
-#define CHECK_SH7751_PCIIO(port) \
-  ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE)))
-#else
-#define CHECK_SH7751_PCIIO(port) (0)
-#endif
-
 /*
  * General outline: remap really low stuff [eventually] to SuperIO,
  * stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO)
@@ -103,10 +34,10 @@
 {
 	if (PXSEG(port))
 		return *(volatile unsigned char *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-		return *(volatile unsigned char *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+		return *(volatile unsigned char *)pci_ioaddr(port);
 	else
-		return (*port2adr(port))&0xff; 
+		return (*port2adr(port)) & 0xff;
 }
 
 unsigned char sh7751se_inb_p(unsigned long port)
@@ -115,11 +46,11 @@
 
         if (PXSEG(port))
                 v = *(volatile unsigned char *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-                v = *(volatile unsigned char *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+                v = *(volatile unsigned char *)pci_ioaddr(port);
 	else
-		v = (*port2adr(port))&0xff; 
-	delay();
+		v = (*port2adr(port)) & 0xff;
+	ctrl_delay();
 	return v;
 }
 
@@ -127,8 +58,8 @@
 {
         if (PXSEG(port))
                 return *(volatile unsigned short *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-                return *(volatile unsigned short *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+                return *(volatile unsigned short *)pci_ioaddr(port);
 	else if (port >= 0x2000)
 		return *port2adr(port);
 	else
@@ -140,8 +71,8 @@
 {
         if (PXSEG(port))
                 return *(volatile unsigned long *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-                return *(volatile unsigned int *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+                return *(volatile unsigned int *)pci_ioaddr(port);
 	else if (port >= 0x2000)
 		return *port2adr(port);
 	else
@@ -154,8 +85,8 @@
 
         if (PXSEG(port))
                 *(volatile unsigned char *)port = value;
-	else if (CHECK_SH7751_PCIIO(port))
-        	*((unsigned char*)PCI_IOMAP(port)) = value;
+	else if (is_pci_ioaddr(port))
+		*((unsigned char*)pci_ioaddr(port)) = value;
 	else
 		*(port2adr(port)) = value;
 }
@@ -164,19 +95,19 @@
 {
         if (PXSEG(port))
                 *(volatile unsigned char *)port = value;
-	else if (CHECK_SH7751_PCIIO(port))
-        	*((unsigned char*)PCI_IOMAP(port)) = value;
+	else if (is_pci_ioaddr(port))
+		*((unsigned char*)pci_ioaddr(port)) = value;
 	else
 		*(port2adr(port)) = value;
-	delay();
+	ctrl_delay();
 }
 
 void sh7751se_outw(unsigned short value, unsigned long port)
 {
         if (PXSEG(port))
                 *(volatile unsigned short *)port = value;
-	else if (CHECK_SH7751_PCIIO(port))
-        	*((unsigned short *)PCI_IOMAP(port)) = value;
+	else if (is_pci_ioaddr(port))
+		*((unsigned short *)pci_ioaddr(port)) = value;
 	else if (port >= 0x2000)
 		*port2adr(port) = value;
 	else
@@ -187,8 +118,8 @@
 {
         if (PXSEG(port))
                 *(volatile unsigned long *)port = value;
-	else if (CHECK_SH7751_PCIIO(port))
-        	*((unsigned long*)PCI_IOMAP(port)) = value;
+	else if (is_pci_ioaddr(port))
+		*((unsigned long*)pci_ioaddr(port)) = value;
 	else
 		maybebadio(port);
 }
@@ -202,35 +133,3 @@
 {
 	maybebadio(port);
 }
-
-/* Map ISA bus address to the real address. Only for PCMCIA.  */
-
-/* ISA page descriptor.  */
-static __u32 sh_isa_memmap[256];
-
-#if 0
-static int
-sh_isa_mmap(__u32 start, __u32 length, __u32 offset)
-{
-	int idx;
-
-	if (start >= 0x100000 || (start & 0xfff) || (length != 0x1000))
-		return -1;
-
-	idx = start >> 12;
-	sh_isa_memmap[idx] = 0xb8000000 + (offset &~ 0xfff);
-	printk("sh_isa_mmap: start %x len %x offset %x (idx %x paddr %x)\n",
-	       start, length, offset, idx, sh_isa_memmap[idx]);
-	return 0;
-}
-#endif
-
-unsigned long
-sh7751se_isa_port2addr(unsigned long offset)
-{
-	int idx;
-
-	idx = (offset >> 12) & 0xff;
-	offset &= 0xfff;
-	return sh_isa_memmap[idx] + offset;
-}
diff --git a/arch/sh/boards/sh03/setup.c b/arch/sh/boards/sh03/setup.c
index dab742a..7d31d6a 100644
--- a/arch/sh/boards/sh03/setup.c
+++ b/arch/sh/boards/sh03/setup.c
@@ -12,11 +12,10 @@
 #include <asm/sh03/io.h>
 #include <asm/sh03/sh03.h>
 #include <asm/addrspace.h>
-#include "../../drivers/pci/pci-sh7751.h"
 
 const char *get_system_type(void)
 {
-	return "Interface CTP/PCI-SH03)";
+	return "Interface (CTP/PCI-SH03)";
 }
 
 static void init_sh03_IRQ(void)
@@ -39,7 +38,7 @@
 	if (((port >= 0x1f0) && (port <= 0x1f7)) || (port == 0x3f6))
 		return (void __iomem *)((unsigned long)cf_io_base + port);
 
-        return (void __iomem *)(port + SH7751_PCI_IO_BASE);
+        return (void __iomem *)(port + PCI_IO_BASE);
 }
 
 struct sh_machine_vector mv_sh03 __initmv = {
@@ -51,7 +50,6 @@
 	.mv_heartbeat		= heartbeat_sh03,
 #endif
 };
-
 ALIAS_MV(sh03)
 
 /* arch/sh/boards/sh03/rtc.c */
diff --git a/arch/sh/boards/snapgear/io.c b/arch/sh/boards/snapgear/io.c
index 9f700b8..0f48242 100644
--- a/arch/sh/boards/snapgear/io.c
+++ b/arch/sh/boards/snapgear/io.c
@@ -1,6 +1,4 @@
-/* 
- * linux/arch/sh/kernel/io_7751se.c
- *
+/*
  * Copyright (C) 2002  David McCullough <davidm@snapgear.com>
  * Copyright (C) 2001  Ian da Silva, Jeremy Siegel
  * Based largely on io_se.c.
@@ -11,54 +9,22 @@
  * placeholder code from io_se.c left in with the
  * expectation of later SuperIO and PCMCIA access.
  */
-
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/pci.h>
 #include <asm/io.h>
 #include <asm/addrspace.h>
 
-#include <asm/pci.h>
-#include "../../drivers/pci/pci-sh7751.h"
-
 #ifdef CONFIG_SH_SECUREEDGE5410
 unsigned short secureedge5410_ioport;
 #endif
 
-/*
- * The SnapGear uses the built-in PCI controller (PCIC)
- * of the 7751 processor
- */
-
-#define PCIIOBR		(volatile long *)PCI_REG(SH7751_PCIIOBR)
-#define PCIMBR          (volatile long *)PCI_REG(SH7751_PCIMBR)
-#define PCI_IO_AREA	SH7751_PCI_IO_BASE
-#define PCI_MEM_AREA	SH7751_PCI_CONFIG_BASE
-
-#define PCI_IOMAP(adr)	(PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
-
-static inline void delay(void)
-{
-	ctrl_inw(0xa0000000);
-}
-
 static inline volatile __u16 *port2adr(unsigned int port)
 {
 	maybebadio((unsigned long)port);
 	return (volatile __u16*)port;
 }
 
-/* In case someone configures the kernel w/o PCI support: in that */
-/* scenario, don't ever bother to check for PCI-window addresses */
-
-/* NOTE: WINDOW CHECK MAY BE A BIT OFF, HIGH PCIBIOS_MIN_IO WRAPS? */
-#if defined(CONFIG_PCI)
-#define CHECK_SH7751_PCIIO(port) \
-  ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE)))
-#else
-#define CHECK_SH7751_PCIIO(port) (0)
-#endif
-
 /*
  * General outline: remap really low stuff [eventually] to SuperIO,
  * stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO)
@@ -66,39 +32,36 @@
  * should be way beyond the window, and is used  w/o translation for
  * compatibility.
  */
-
 unsigned char snapgear_inb(unsigned long port)
 {
 	if (PXSEG(port))
 		return *(volatile unsigned char *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-		return *(volatile unsigned char *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+		return *(volatile unsigned char *)pci_ioaddr(port);
 	else
-		return (*port2adr(port))&0xff; 
+		return (*port2adr(port)) & 0xff;
 }
 
-
 unsigned char snapgear_inb_p(unsigned long port)
 {
 	unsigned char v;
 
 	if (PXSEG(port))
 		v = *(volatile unsigned char *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-		v = *(volatile unsigned char *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+		v = *(volatile unsigned char *)pci_ioaddr(port);
 	else
-		v = (*port2adr(port))&0xff; 
-	delay();
+		v = (*port2adr(port))&0xff;
+	ctrl_delay();
 	return v;
 }
 
-
 unsigned short snapgear_inw(unsigned long port)
 {
 	if (PXSEG(port))
 		return *(volatile unsigned short *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-		return *(volatile unsigned short *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+		return *(volatile unsigned short *)pci_ioaddr(port);
 	else if (port >= 0x2000)
 		return *port2adr(port);
 	else
@@ -106,13 +69,12 @@
 	return 0;
 }
 
-
 unsigned int snapgear_inl(unsigned long port)
 {
 	if (PXSEG(port))
 		return *(volatile unsigned long *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-		return *(volatile unsigned int *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+		return *(volatile unsigned int *)pci_ioaddr(port);
 	else if (port >= 0x2000)
 		return *port2adr(port);
 	else
@@ -120,50 +82,46 @@
 	return 0;
 }
 
-
 void snapgear_outb(unsigned char value, unsigned long port)
 {
 
 	if (PXSEG(port))
 		*(volatile unsigned char *)port = value;
-	else if (CHECK_SH7751_PCIIO(port))
-		*((unsigned char*)PCI_IOMAP(port)) = value;
+	else if (is_pci_ioaddr(port))
+		*((unsigned char*)pci_ioaddr(port)) = value;
 	else
 		*(port2adr(port)) = value;
 }
 
-
 void snapgear_outb_p(unsigned char value, unsigned long port)
 {
 	if (PXSEG(port))
 		*(volatile unsigned char *)port = value;
-	else if (CHECK_SH7751_PCIIO(port))
-		*((unsigned char*)PCI_IOMAP(port)) = value;
+	else if (is_pci_ioaddr(port))
+		*((unsigned char*)pci_ioaddr(port)) = value;
 	else
 		*(port2adr(port)) = value;
-	delay();
+	ctrl_delay();
 }
 
-
 void snapgear_outw(unsigned short value, unsigned long port)
 {
 	if (PXSEG(port))
 		*(volatile unsigned short *)port = value;
-	else if (CHECK_SH7751_PCIIO(port))
-		*((unsigned short *)PCI_IOMAP(port)) = value;
+	else if (is_pci_ioaddr(port))
+		*((unsigned short *)pci_ioaddr(port)) = value;
 	else if (port >= 0x2000)
 		*port2adr(port) = value;
 	else
 		maybebadio(port);
 }
 
-
 void snapgear_outl(unsigned int value, unsigned long port)
 {
 	if (PXSEG(port))
 		*(volatile unsigned long *)port = value;
-	else if (CHECK_SH7751_PCIIO(port))
-		*((unsigned long*)PCI_IOMAP(port)) = value;
+	else if (is_pci_ioaddr(port))
+		*((unsigned long*)pci_ioaddr(port)) = value;
 	else
 		maybebadio(port);
 }
diff --git a/arch/sh/boards/titan/io.c b/arch/sh/boards/titan/io.c
index 48f3494..4730c1d 100644
--- a/arch/sh/boards/titan/io.c
+++ b/arch/sh/boards/titan/io.c
@@ -1,34 +1,11 @@
 /*
  *	I/O routines for Titan
  */
-
 #include <linux/pci.h>
 #include <asm/machvec.h>
 #include <asm/addrspace.h>
 #include <asm/titan.h>
 #include <asm/io.h>
-#include "../../drivers/pci/pci-sh7751.h"
-
-#define PCIIOBR         (volatile long *)PCI_REG(SH7751_PCIIOBR)
-#define PCIMBR          (volatile long *)PCI_REG(SH7751_PCIMBR)
-#define PCI_IO_AREA     SH7751_PCI_IO_BASE
-#define PCI_MEM_AREA    SH7751_PCI_CONFIG_BASE
-
-#define PCI_IOMAP(adr)  (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
-
-#if defined(CONFIG_PCI)
-#define CHECK_SH7751_PCIIO(port) \
-  ((port >= PCIBIOS_MIN_IO) && (port < (PCIBIOS_MIN_IO + SH7751_PCI_IO_SIZE)))
-#define CHECK_SH7751_PCIMEMIO(port) \
-  ((port >= PCIBIOS_MIN_MEM) && (port < (PCIBIOS_MIN_MEM + SH7751_PCI_MEM_SIZE)))
-#else
-#define CHECK_SH7751_PCIIO(port) (0)
-#endif
-
-static inline void delay(void)
-{
-        ctrl_inw(0xa0000000);
-}
 
 static inline unsigned int port2adr(unsigned int port)
 {
@@ -40,8 +17,8 @@
 {
         if (PXSEG(port))
                 return ctrl_inb(port);
-        else if (CHECK_SH7751_PCIIO(port))
-                return ctrl_inb(PCI_IOMAP(port));
+        else if (is_pci_ioaddr(port))
+                return ctrl_inb(pci_ioaddr(port));
         return ctrl_inw(port2adr(port)) & 0xff;
 }
 
@@ -51,11 +28,11 @@
 
         if (PXSEG(port))
                 v = ctrl_inb(port);
-        else if (CHECK_SH7751_PCIIO(port))
-                v = ctrl_inb(PCI_IOMAP(port));
+        else if (is_pci_ioaddr(port))
+                v = ctrl_inb(pci_ioaddr(port));
         else
                 v = ctrl_inw(port2adr(port)) & 0xff;
-        delay();
+        ctrl_delay();
         return v;
 }
 
@@ -63,8 +40,8 @@
 {
         if (PXSEG(port))
                 return ctrl_inw(port);
-        else if (CHECK_SH7751_PCIIO(port))
-                return ctrl_inw(PCI_IOMAP(port));
+        else if (is_pci_ioaddr(port))
+                return ctrl_inw(pci_ioaddr(port));
         else if (port >= 0x2000)
                 return ctrl_inw(port2adr(port));
         else
@@ -76,8 +53,8 @@
 {
         if (PXSEG(port))
                 return ctrl_inl(port);
-        else if (CHECK_SH7751_PCIIO(port))
-                return ctrl_inl(PCI_IOMAP(port));
+        else if (is_pci_ioaddr(port))
+                return ctrl_inl(pci_ioaddr(port));
         else if (port >= 0x2000)
                 return ctrl_inw(port2adr(port));
         else
@@ -89,8 +66,8 @@
 {
         if (PXSEG(port))
                 ctrl_outb(value, port);
-        else if (CHECK_SH7751_PCIIO(port))
-                ctrl_outb(value, PCI_IOMAP(port));
+        else if (is_pci_ioaddr(port))
+                ctrl_outb(value, pci_ioaddr(port));
         else
                 ctrl_outw(value, port2adr(port));
 }
@@ -99,19 +76,19 @@
 {
         if (PXSEG(port))
                 ctrl_outb(value, port);
-        else if (CHECK_SH7751_PCIIO(port))
-                ctrl_outb(value, PCI_IOMAP(port));
+        else if (is_pci_ioaddr(port))
+                ctrl_outb(value, pci_ioaddr(port));
         else
                 ctrl_outw(value, port2adr(port));
-        delay();
+        ctrl_delay();
 }
 
 void titan_outw(u16 value, unsigned long port)
 {
         if (PXSEG(port))
                 ctrl_outw(value, port);
-        else if (CHECK_SH7751_PCIIO(port))
-                ctrl_outw(value, PCI_IOMAP(port));
+        else if (is_pci_ioaddr(port))
+                ctrl_outw(value, pci_ioaddr(port));
         else if (port >= 0x2000)
                 ctrl_outw(value, port2adr(port));
         else
@@ -122,8 +99,8 @@
 {
         if (PXSEG(port))
                 ctrl_outl(value, port);
-        else if (CHECK_SH7751_PCIIO(port))
-                ctrl_outl(value, PCI_IOMAP(port));
+        else if (is_pci_ioaddr(port))
+                ctrl_outl(value, pci_ioaddr(port));
         else
                 maybebadio(port);
 }
@@ -140,10 +117,10 @@
 
 void __iomem *titan_ioport_map(unsigned long port, unsigned int size)
 {
-	if (PXSEG(port) || CHECK_SH7751_PCIMEMIO(port))
+	if (PXSEG(port) || is_pci_memaddr(port))
 		return (void __iomem *)port;
-	else if (CHECK_SH7751_PCIIO(port))
-		return (void __iomem *)PCI_IOMAP(port);
+	else if (is_pci_ioaddr(port))
+		return (void __iomem *)pci_ioaddr(port);
 
 	return (void __iomem *)port2adr(port);
 }