sh: Board updates for I/O routine rework.

This updates the various boards for some of the recent I/O routine
updates.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Este commit está contenido en:
Paul Mundt
2006-09-27 15:41:24 +09:00
padre f647d33f87
commit 373e68b547
Se han modificado 43 ficheros con 202 adiciones y 672 borrados

Ver fichero

@@ -10,11 +10,10 @@
#include <linux/kernel.h>
#include <linux/types.h>
#include <asm/systemh/7751systemh.h>
#include <linux/pci.h>
#include <asm/systemh7751.h>
#include <asm/addrspace.h>
#include <asm/io.h>
#include <linux/pci.h>
#include "../../../drivers/pci/pci-sh7751.h"
/*
@@ -31,11 +30,6 @@
#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*/
#define maybebadio(name,port) \
printk("bad PC-like io %s for port 0x%lx at 0x%08x\n", \
#name, (port), (__u32) __builtin_return_address(0))
static inline void delay(void)
{
ctrl_inw(0xa0000000);
@@ -46,11 +40,7 @@ port2adr(unsigned int port)
{
if (port >= 0x2000)
return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000));
#if 0
else
return (volatile __u16 *) (PA_SUPERIO + (port << 1));
#endif
maybebadio(name,(unsigned long)port);
maybebadio((unsigned long)port);
return (volatile __u16*)port;
}
@@ -111,7 +101,7 @@ unsigned short sh7751systemh_inw(unsigned long port)
else if (port <= 0x3F1)
return *(volatile unsigned int *)ETHER_IOMAP(port);
else
maybebadio(inw, port);
maybebadio(port);
return 0;
}
@@ -126,7 +116,7 @@ unsigned int sh7751systemh_inl(unsigned long port)
else if (port <= 0x3F1)
return *(volatile unsigned int *)ETHER_IOMAP(port);
else
maybebadio(inl, port);
maybebadio(port);
return 0;
}
@@ -167,7 +157,7 @@ void sh7751systemh_outw(unsigned short value, unsigned long port)
else if (port <= 0x3F1)
*(volatile unsigned short *)ETHER_IOMAP(port) = value;
else
maybebadio(outw, port);
maybebadio(port);
}
void sh7751systemh_outl(unsigned int value, unsigned long port)
@@ -177,7 +167,7 @@ void sh7751systemh_outl(unsigned int value, unsigned long port)
else if (CHECK_SH7751_PCIIO(port))
*((unsigned long*)PCI_IOMAP(port)) = value;
else
maybebadio(outl, port);
maybebadio(port);
}
void sh7751systemh_insb(unsigned long port, void *addr, unsigned long count)
@@ -194,7 +184,7 @@ void sh7751systemh_insw(unsigned long port, void *addr, unsigned long count)
void sh7751systemh_insl(unsigned long port, void *addr, unsigned long count)
{
maybebadio(insl, port);
maybebadio(port);
}
void sh7751systemh_outsb(unsigned long port, const void *addr, unsigned long count)
@@ -211,73 +201,5 @@ void sh7751systemh_outsw(unsigned long port, const void *addr, unsigned long cou
void sh7751systemh_outsl(unsigned long port, const void *addr, unsigned long count)
{
maybebadio(outsw, port);
}
/* For read/write calls, just copy generic (pass-thru); PCIMBR is */
/* already set up. For a larger memory space, these would need to */
/* reset PCIMBR as needed on a per-call basis... */
unsigned char sh7751systemh_readb(unsigned long addr)
{
return *(volatile unsigned char*)addr;
}
unsigned short sh7751systemh_readw(unsigned long addr)
{
return *(volatile unsigned short*)addr;
}
unsigned int sh7751systemh_readl(unsigned long addr)
{
return *(volatile unsigned long*)addr;
}
void sh7751systemh_writeb(unsigned char b, unsigned long addr)
{
*(volatile unsigned char*)addr = b;
}
void sh7751systemh_writew(unsigned short b, unsigned long addr)
{
*(volatile unsigned short*)addr = b;
}
void sh7751systemh_writel(unsigned int b, unsigned long addr)
{
*(volatile unsigned long*)addr = b;
}
/* 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
sh7751systemh_isa_port2addr(unsigned long offset)
{
int idx;
idx = (offset >> 12) & 0xff;
offset &= 0xfff;
return sh_isa_memmap[idx] + offset;
maybebadio(port);
}

Ver fichero

@@ -15,7 +15,7 @@
#include <linux/hdreg.h>
#include <linux/ide.h>
#include <asm/io.h>
#include <asm/mach/7751systemh.h>
#include <asm/systemh7751.h>
#include <asm/smc37c93x.h>
/* address of external interrupt mask register

Ver fichero

@@ -15,9 +15,8 @@
* for more details.
*/
#include <linux/init.h>
#include <asm/mach/7751systemh.h>
#include <asm/mach/io.h>
#include <asm/machvec.h>
#include <asm/systemh7751.h>
extern void make_systemh_irq(unsigned int irq);
@@ -31,8 +30,6 @@ const char *get_system_type(void)
*/
void __init init_7751systemh_IRQ(void)
{
/* make_ipr_irq(10, BCR_ILCRD, 1, 0x0f-10); LAN */
/* make_ipr_irq(14, BCR_ILCRA, 2, 0x0f-4); */
make_systemh_irq(0xb); /* Ethernet interrupt */
}
@@ -60,15 +57,6 @@ struct sh_machine_vector mv_7751systemh __initmv = {
.mv_outsw = sh7751systemh_outsw,
.mv_outsl = sh7751systemh_outsl,
.mv_readb = sh7751systemh_readb,
.mv_readw = sh7751systemh_readw,
.mv_readl = sh7751systemh_readl,
.mv_writeb = sh7751systemh_writeb,
.mv_writew = sh7751systemh_writew,
.mv_writel = sh7751systemh_writel,
.mv_isa_port2addr = sh7751systemh_isa_port2addr,
.mv_init_irq = init_7751systemh_IRQ,
};
ALIAS_MV(7751systemh)