mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 12:52:30 +00:00
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>
This commit is contained in:
parent
f647d33f87
commit
373e68b547
@ -111,10 +111,7 @@ machdir-$(CONFIG_SH_UNKNOWN) := unknown
|
|||||||
|
|
||||||
incdir-y := $(notdir $(machdir-y))
|
incdir-y := $(notdir $(machdir-y))
|
||||||
|
|
||||||
incdir-$(CONFIG_SH_SOLUTION_ENGINE) := se
|
|
||||||
incdir-$(CONFIG_SH_7751_SOLUTION_ENGINE) := se7751
|
incdir-$(CONFIG_SH_7751_SOLUTION_ENGINE) := se7751
|
||||||
incdir-$(CONFIG_SH_7300_SOLUTION_ENGINE) := se7300
|
|
||||||
incdir-$(CONFIG_SH_73180_SOLUTION_ENGINE) := se73180
|
|
||||||
incdir-$(CONFIG_SH_HP6XX) := hp6xx
|
incdir-$(CONFIG_SH_HP6XX) := hp6xx
|
||||||
|
|
||||||
ifneq ($(machdir-y),)
|
ifneq ($(machdir-y),)
|
||||||
|
@ -21,10 +21,8 @@
|
|||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include "../../../drivers/pci/pci-sh7751.h"
|
#include "../../../drivers/pci/pci-sh7751.h"
|
||||||
|
|
||||||
extern void *area5_io8_base; /* Area 5 8bit I/O Base address */
|
|
||||||
extern void *area6_io8_base; /* Area 6 8bit I/O Base address */
|
extern void *area6_io8_base; /* Area 6 8bit I/O Base address */
|
||||||
extern void *area5_io16_base; /* Area 5 16bit I/O Base address */
|
extern void *area5_io16_base; /* Area 5 16bit I/O Base address */
|
||||||
extern void *area6_io16_base; /* Area 6 16bit I/O Base address */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The 7751R HS7751RVoIP uses the built-in PCI controller (PCIC)
|
* The 7751R HS7751RVoIP uses the built-in PCI controller (PCIC)
|
||||||
@ -37,16 +35,10 @@ extern void *area6_io16_base; /* Area 6 16bit I/O Base address */
|
|||||||
#define PCIMBR (volatile long *)PCI_REG(SH7751_PCIMBR)
|
#define PCIMBR (volatile long *)PCI_REG(SH7751_PCIMBR)
|
||||||
#define PCI_IO_AREA SH7751_PCI_IO_BASE
|
#define PCI_IO_AREA SH7751_PCI_IO_BASE
|
||||||
#define PCI_MEM_AREA SH7751_PCI_CONFIG_BASE
|
#define PCI_MEM_AREA SH7751_PCI_CONFIG_BASE
|
||||||
|
|
||||||
#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
|
#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
|
||||||
|
|
||||||
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
|
||||||
#define CODEC_IO_BASE 0x1000
|
#define CODEC_IO_BASE 0x1000
|
||||||
#endif
|
#define CODEC_IOMAP(a) ((unsigned long)area6_io8_base + ((a) - CODEC_IO_BASE))
|
||||||
|
|
||||||
#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)
|
static inline void delay(void)
|
||||||
{
|
{
|
||||||
@ -61,7 +53,7 @@ static inline unsigned long port2adr(unsigned int port)
|
|||||||
else
|
else
|
||||||
return ((unsigned long)area5_io16_base + 0x800 + ((port-0x1f0) << 1));
|
return ((unsigned long)area5_io16_base + 0x800 + ((port-0x1f0) << 1));
|
||||||
else
|
else
|
||||||
maybebadio(port2adr, (unsigned long)port);
|
maybebadio((unsigned long)port);
|
||||||
return port;
|
return port;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,15 +101,15 @@ codec_port(unsigned long port)
|
|||||||
unsigned char hs7751rvoip_inb(unsigned long port)
|
unsigned char hs7751rvoip_inb(unsigned long port)
|
||||||
{
|
{
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
return *(volatile unsigned char *)port;
|
return ctrl_inb(port);
|
||||||
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
||||||
else if (codec_port(port))
|
else if (codec_port(port))
|
||||||
return *(volatile unsigned char *)((unsigned long)area6_io8_base+(port-CODEC_IO_BASE));
|
return ctrl_inb(CODEC_IOMAP(port));
|
||||||
#endif
|
#endif
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
return *(volatile unsigned char *)PCI_IOMAP(port);
|
return ctrl_inb(PCI_IOMAP(port));
|
||||||
else
|
else
|
||||||
return (*(volatile unsigned short *)port2adr(port) & 0xff);
|
return ctrl_inw(port2adr(port)) & 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char hs7751rvoip_inb_p(unsigned long port)
|
unsigned char hs7751rvoip_inb_p(unsigned long port)
|
||||||
@ -125,15 +117,15 @@ unsigned char hs7751rvoip_inb_p(unsigned long port)
|
|||||||
unsigned char v;
|
unsigned char v;
|
||||||
|
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
v = *(volatile unsigned char *)port;
|
v = ctrl_inb(port);
|
||||||
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
||||||
else if (codec_port(port))
|
else if (codec_port(port))
|
||||||
v = *(volatile unsigned char *)((unsigned long)area6_io8_base+(port-CODEC_IO_BASE));
|
v = ctrl_inb(CODEC_IOMAP(port));
|
||||||
#endif
|
#endif
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
v = *(volatile unsigned char *)PCI_IOMAP(port);
|
v = ctrl_inb(PCI_IOMAP(port));
|
||||||
else
|
else
|
||||||
v = (*(volatile unsigned short *)port2adr(port) & 0xff);
|
v = ctrl_inw(port2adr(port)) & 0xff;
|
||||||
delay();
|
delay();
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
@ -141,22 +133,22 @@ unsigned char hs7751rvoip_inb_p(unsigned long port)
|
|||||||
unsigned short hs7751rvoip_inw(unsigned long port)
|
unsigned short hs7751rvoip_inw(unsigned long port)
|
||||||
{
|
{
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
return *(volatile unsigned short *)port;
|
return ctrl_inw(port);
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
return *(volatile unsigned short *)PCI_IOMAP(port);
|
return ctrl_inw(PCI_IOMAP(port));
|
||||||
else
|
else
|
||||||
maybebadio(inw, port);
|
maybebadio(port);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int hs7751rvoip_inl(unsigned long port)
|
unsigned int hs7751rvoip_inl(unsigned long port)
|
||||||
{
|
{
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
return *(volatile unsigned long *)port;
|
return ctrl_inl(port);
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
return *(volatile unsigned long *)PCI_IOMAP(port);
|
return ctrl_inl(PCI_IOMAP(port));
|
||||||
else
|
else
|
||||||
maybebadio(inl, port);
|
maybebadio(port);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,137 +156,168 @@ void hs7751rvoip_outb(unsigned char value, unsigned long port)
|
|||||||
{
|
{
|
||||||
|
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
*(volatile unsigned char *)port = value;
|
ctrl_outb(value, port);
|
||||||
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
||||||
else if (codec_port(port))
|
else if (codec_port(port))
|
||||||
*(volatile unsigned char *)((unsigned long)area6_io8_base+(port-CODEC_IO_BASE)) = value;
|
ctrl_outb(value, CODEC_IOMAP(port));
|
||||||
#endif
|
#endif
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
*(unsigned char *)PCI_IOMAP(port) = value;
|
ctrl_outb(value, PCI_IOMAP(port));
|
||||||
else
|
else
|
||||||
*(volatile unsigned short *)port2adr(port) = value;
|
ctrl_outb(value, port2adr(port));
|
||||||
}
|
}
|
||||||
|
|
||||||
void hs7751rvoip_outb_p(unsigned char value, unsigned long port)
|
void hs7751rvoip_outb_p(unsigned char value, unsigned long port)
|
||||||
{
|
{
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
*(volatile unsigned char *)port = value;
|
ctrl_outb(value, port);
|
||||||
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
||||||
else if (codec_port(port))
|
else if (codec_port(port))
|
||||||
*(volatile unsigned char *)((unsigned long)area6_io8_base+(port-CODEC_IO_BASE)) = value;
|
ctrl_outb(value, CODEC_IOMAP(port));
|
||||||
#endif
|
#endif
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
*(unsigned char *)PCI_IOMAP(port) = value;
|
ctrl_outb(value, PCI_IOMAP(port));
|
||||||
else
|
else
|
||||||
*(volatile unsigned short *)port2adr(port) = value;
|
ctrl_outw(value, port2adr(port));
|
||||||
|
|
||||||
delay();
|
delay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void hs7751rvoip_outw(unsigned short value, unsigned long port)
|
void hs7751rvoip_outw(unsigned short value, unsigned long port)
|
||||||
{
|
{
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
*(volatile unsigned short *)port = value;
|
ctrl_outw(value, port);
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
*(unsigned short *)PCI_IOMAP(port) = value;
|
ctrl_outw(value, PCI_IOMAP(port));
|
||||||
else
|
else
|
||||||
maybebadio(outw, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hs7751rvoip_outl(unsigned int value, unsigned long port)
|
void hs7751rvoip_outl(unsigned int value, unsigned long port)
|
||||||
{
|
{
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
*(volatile unsigned long *)port = value;
|
ctrl_outl(value, port);
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
*((unsigned long *)PCI_IOMAP(port)) = value;
|
ctrl_outl(value, PCI_IOMAP(port));
|
||||||
else
|
else
|
||||||
maybebadio(outl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hs7751rvoip_insb(unsigned long port, void *addr, unsigned long count)
|
void hs7751rvoip_insb(unsigned long port, void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
|
u8 *buf = addr;
|
||||||
|
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
while (count--) *((unsigned char *) addr)++ = *(volatile unsigned char *)port;
|
while (count--)
|
||||||
|
*buf++ = ctrl_inb(port);
|
||||||
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
||||||
else if (codec_port(port))
|
else if (codec_port(port))
|
||||||
while (count--) *((unsigned char *) addr)++ = *(volatile unsigned char *)((unsigned long)area6_io8_base+(port-CODEC_IO_BASE));
|
while (count--)
|
||||||
|
*buf++ = ctrl_inb(CODEC_IOMAP(port));
|
||||||
#endif
|
#endif
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
||||||
volatile __u8 *bp = (__u8 *)PCI_IOMAP(port);
|
volatile u8 *bp = (volatile u8 *)PCI_IOMAP(port);
|
||||||
|
|
||||||
while (count--) *((volatile unsigned char *) addr)++ = *bp;
|
while (count--)
|
||||||
|
*buf++ = *bp;
|
||||||
} else {
|
} else {
|
||||||
volatile __u16 *p = (volatile unsigned short *)port2adr(port);
|
volatile u16 *p = (volatile u16 *)port2adr(port);
|
||||||
|
|
||||||
while (count--) *((unsigned char *) addr)++ = *p & 0xff;
|
while (count--)
|
||||||
|
*buf++ = *p & 0xff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void hs7751rvoip_insw(unsigned long port, void *addr, unsigned long count)
|
void hs7751rvoip_insw(unsigned long port, void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
volatile __u16 *p;
|
volatile u16 *p;
|
||||||
|
u16 *buf = addr;
|
||||||
|
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
p = (volatile unsigned short *)port;
|
p = (volatile u16 *)port;
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
p = (volatile unsigned short *)PCI_IOMAP(port);
|
p = (volatile u16 *)PCI_IOMAP(port);
|
||||||
else
|
else
|
||||||
p = (volatile unsigned short *)port2adr(port);
|
p = (volatile u16 *)port2adr(port);
|
||||||
while (count--) *((__u16 *) addr)++ = *p;
|
while (count--)
|
||||||
|
*buf++ = *p;
|
||||||
}
|
}
|
||||||
|
|
||||||
void hs7751rvoip_insl(unsigned long port, void *addr, unsigned long count)
|
void hs7751rvoip_insl(unsigned long port, void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
|
||||||
volatile __u32 *p = (__u32 *)PCI_IOMAP(port);
|
|
||||||
|
|
||||||
while (count--) *((__u32 *) addr)++ = *p;
|
if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
||||||
|
volatile u32 *p = (volatile u32 *)PCI_IOMAP(port);
|
||||||
|
u32 *buf = addr;
|
||||||
|
|
||||||
|
while (count--)
|
||||||
|
*buf++ = *p;
|
||||||
} else
|
} else
|
||||||
maybebadio(insl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hs7751rvoip_outsb(unsigned long port, const void *addr, unsigned long count)
|
void hs7751rvoip_outsb(unsigned long port, const void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
|
const u8 *buf = addr;
|
||||||
|
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
while (count--) *(volatile unsigned char *)port = *((unsigned char *) addr)++;
|
while (count--)
|
||||||
|
ctrl_outb(*buf++, port);
|
||||||
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
#if defined(CONFIG_HS7751RVOIP_CODEC)
|
||||||
else if (codec_port(port))
|
else if (codec_port(port))
|
||||||
while (count--) *(volatile unsigned char *)((unsigned long)area6_io8_base+(port-CODEC_IO_BASE)) = *((unsigned char *) addr)++;
|
while (count--)
|
||||||
|
ctrl_outb(*buf++, CODEC_IOMAP(port));
|
||||||
#endif
|
#endif
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
||||||
volatile __u8 *bp = (__u8 *)PCI_IOMAP(port);
|
volatile u8 *bp = (volatile u8 *)PCI_IOMAP(port);
|
||||||
|
|
||||||
while (count--) *bp = *((volatile unsigned char *) addr)++;
|
while (count--)
|
||||||
|
*bp = *buf++;
|
||||||
} else {
|
} else {
|
||||||
volatile __u16 *p = (volatile unsigned short *)port2adr(port);
|
volatile u16 *p = (volatile u16 *)port2adr(port);
|
||||||
|
|
||||||
while (count--) *p = *((unsigned char *) addr)++;
|
while (count--)
|
||||||
|
*p = *buf++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void hs7751rvoip_outsw(unsigned long port, const void *addr, unsigned long count)
|
void hs7751rvoip_outsw(unsigned long port, const void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
volatile __u16 *p;
|
volatile u16 *p;
|
||||||
|
const u16 *buf = addr;
|
||||||
|
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
p = (volatile unsigned short *)port;
|
p = (volatile u16 *)port;
|
||||||
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
else if (CHECK_SH7751_PCIIO(port) || shifted_port(port))
|
||||||
p = (volatile unsigned short *)PCI_IOMAP(port);
|
p = (volatile u16 *)PCI_IOMAP(port);
|
||||||
else
|
else
|
||||||
p = (volatile unsigned short *)port2adr(port);
|
p = (volatile u16 *)port2adr(port);
|
||||||
while (count--) *p = *((__u16 *) addr)++;
|
|
||||||
|
while (count--)
|
||||||
|
*p = *buf++;
|
||||||
}
|
}
|
||||||
|
|
||||||
void hs7751rvoip_outsl(unsigned long port, const void *addr, unsigned long count)
|
void hs7751rvoip_outsl(unsigned long port, const void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
|
const u32 *buf = addr;
|
||||||
|
|
||||||
if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) {
|
||||||
volatile __u32 *p = (__u32 *)PCI_IOMAP(port);
|
volatile u32 *p = (volatile u32 *)PCI_IOMAP(port);
|
||||||
|
|
||||||
while (count--) *p = *((__u32 *) addr)++;
|
while (count--)
|
||||||
|
*p = *buf++;
|
||||||
} else
|
} else
|
||||||
maybebadio(outsl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long hs7751rvoip_isa_port2addr(unsigned long offset)
|
void __iomem *hs7751rvoip_ioport_map(unsigned long port, unsigned int size)
|
||||||
{
|
{
|
||||||
return port2adr(offset);
|
if (PXSEG(port))
|
||||||
|
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);
|
||||||
|
|
||||||
|
return (void __iomem *)port2adr(port);
|
||||||
}
|
}
|
||||||
|
@ -17,9 +17,8 @@
|
|||||||
#include <linux/hdreg.h>
|
#include <linux/hdreg.h>
|
||||||
#include <linux/ide.h>
|
#include <linux/ide.h>
|
||||||
#include <linux/pm.h>
|
#include <linux/pm.h>
|
||||||
#include <asm/hs7751rvoip/hs7751rvoip.h>
|
|
||||||
#include <asm/hs7751rvoip/io.h>
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
#include <asm/hs7751rvoip/hs7751rvoip.h>
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
#include <asm/rtc.h>
|
#include <asm/rtc.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
@ -60,8 +59,8 @@ struct sh_machine_vector mv_hs7751rvoip __initmv = {
|
|||||||
.mv_outsw = hs7751rvoip_outsw,
|
.mv_outsw = hs7751rvoip_outsw,
|
||||||
.mv_outsl = hs7751rvoip_outsl,
|
.mv_outsl = hs7751rvoip_outsl,
|
||||||
|
|
||||||
.mv_isa_port2addr = hs7751rvoip_isa_port2addr,
|
|
||||||
.mv_init_irq = hs7751rvoip_init_irq,
|
.mv_init_irq = hs7751rvoip_init_irq,
|
||||||
|
.mv_ioport_map = hs7751rvoip_ioport_map,
|
||||||
};
|
};
|
||||||
ALIAS_MV(hs7751rvoip)
|
ALIAS_MV(hs7751rvoip)
|
||||||
|
|
||||||
|
@ -10,11 +10,10 @@
|
|||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <asm/systemh/7751systemh.h>
|
#include <linux/pci.h>
|
||||||
|
#include <asm/systemh7751.h>
|
||||||
#include <asm/addrspace.h>
|
#include <asm/addrspace.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
#include <linux/pci.h>
|
|
||||||
#include "../../../drivers/pci/pci-sh7751.h"
|
#include "../../../drivers/pci/pci-sh7751.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -31,11 +30,6 @@
|
|||||||
#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
|
#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
|
||||||
#define ETHER_IOMAP(adr) (0xB3000000 + (adr)) /*map to 16bits access area
|
#define ETHER_IOMAP(adr) (0xB3000000 + (adr)) /*map to 16bits access area
|
||||||
of smc lan chip*/
|
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)
|
static inline void delay(void)
|
||||||
{
|
{
|
||||||
ctrl_inw(0xa0000000);
|
ctrl_inw(0xa0000000);
|
||||||
@ -46,11 +40,7 @@ port2adr(unsigned int port)
|
|||||||
{
|
{
|
||||||
if (port >= 0x2000)
|
if (port >= 0x2000)
|
||||||
return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000));
|
return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000));
|
||||||
#if 0
|
maybebadio((unsigned long)port);
|
||||||
else
|
|
||||||
return (volatile __u16 *) (PA_SUPERIO + (port << 1));
|
|
||||||
#endif
|
|
||||||
maybebadio(name,(unsigned long)port);
|
|
||||||
return (volatile __u16*)port;
|
return (volatile __u16*)port;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,7 +101,7 @@ unsigned short sh7751systemh_inw(unsigned long port)
|
|||||||
else if (port <= 0x3F1)
|
else if (port <= 0x3F1)
|
||||||
return *(volatile unsigned int *)ETHER_IOMAP(port);
|
return *(volatile unsigned int *)ETHER_IOMAP(port);
|
||||||
else
|
else
|
||||||
maybebadio(inw, port);
|
maybebadio(port);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -126,7 +116,7 @@ unsigned int sh7751systemh_inl(unsigned long port)
|
|||||||
else if (port <= 0x3F1)
|
else if (port <= 0x3F1)
|
||||||
return *(volatile unsigned int *)ETHER_IOMAP(port);
|
return *(volatile unsigned int *)ETHER_IOMAP(port);
|
||||||
else
|
else
|
||||||
maybebadio(inl, port);
|
maybebadio(port);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,7 +157,7 @@ void sh7751systemh_outw(unsigned short value, unsigned long port)
|
|||||||
else if (port <= 0x3F1)
|
else if (port <= 0x3F1)
|
||||||
*(volatile unsigned short *)ETHER_IOMAP(port) = value;
|
*(volatile unsigned short *)ETHER_IOMAP(port) = value;
|
||||||
else
|
else
|
||||||
maybebadio(outw, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sh7751systemh_outl(unsigned int value, unsigned long 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))
|
else if (CHECK_SH7751_PCIIO(port))
|
||||||
*((unsigned long*)PCI_IOMAP(port)) = value;
|
*((unsigned long*)PCI_IOMAP(port)) = value;
|
||||||
else
|
else
|
||||||
maybebadio(outl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sh7751systemh_insb(unsigned long port, void *addr, unsigned long count)
|
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)
|
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)
|
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)
|
void sh7751systemh_outsl(unsigned long port, const void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
maybebadio(outsw, port);
|
maybebadio(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;
|
|
||||||
}
|
}
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#include <linux/hdreg.h>
|
#include <linux/hdreg.h>
|
||||||
#include <linux/ide.h>
|
#include <linux/ide.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/mach/7751systemh.h>
|
#include <asm/systemh7751.h>
|
||||||
#include <asm/smc37c93x.h>
|
#include <asm/smc37c93x.h>
|
||||||
|
|
||||||
/* address of external interrupt mask register
|
/* address of external interrupt mask register
|
||||||
|
@ -15,9 +15,8 @@
|
|||||||
* for more details.
|
* for more details.
|
||||||
*/
|
*/
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <asm/mach/7751systemh.h>
|
|
||||||
#include <asm/mach/io.h>
|
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
|
#include <asm/systemh7751.h>
|
||||||
|
|
||||||
extern void make_systemh_irq(unsigned int irq);
|
extern void make_systemh_irq(unsigned int irq);
|
||||||
|
|
||||||
@ -31,8 +30,6 @@ const char *get_system_type(void)
|
|||||||
*/
|
*/
|
||||||
void __init init_7751systemh_IRQ(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 */
|
make_systemh_irq(0xb); /* Ethernet interrupt */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,15 +57,6 @@ struct sh_machine_vector mv_7751systemh __initmv = {
|
|||||||
.mv_outsw = sh7751systemh_outsw,
|
.mv_outsw = sh7751systemh_outsw,
|
||||||
.mv_outsl = sh7751systemh_outsl,
|
.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,
|
.mv_init_irq = init_7751systemh_IRQ,
|
||||||
};
|
};
|
||||||
ALIAS_MV(7751systemh)
|
ALIAS_MV(7751systemh)
|
||||||
|
@ -9,8 +9,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <asm/mach/se7300.h>
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
#include <asm/se7300.h>
|
||||||
|
|
||||||
#define badio(fn, a) panic("bad i/o operation %s for %08lx.", #fn, a)
|
#define badio(fn, a) panic("bad i/o operation %s for %08lx.", #fn, a)
|
||||||
|
|
||||||
@ -99,6 +99,7 @@ bad_outb(struct iop *p, unsigned char value, unsigned long port)
|
|||||||
badio(inw, port);
|
badio(inw, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_SMC91X
|
||||||
/* MSTLANEX01 LAN at 0xb400:0000 */
|
/* MSTLANEX01 LAN at 0xb400:0000 */
|
||||||
static struct iop laniop = {
|
static struct iop laniop = {
|
||||||
.start = 0x300,
|
.start = 0x300,
|
||||||
@ -110,6 +111,7 @@ static struct iop laniop = {
|
|||||||
.outb = simple_outb,
|
.outb = simple_outb,
|
||||||
.outw = simple_outw,
|
.outw = simple_outw,
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/* NE2000 pc card NIC */
|
/* NE2000 pc card NIC */
|
||||||
static struct iop neiop = {
|
static struct iop neiop = {
|
||||||
@ -123,6 +125,7 @@ static struct iop neiop = {
|
|||||||
.outw = simple_outw,
|
.outw = simple_outw,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef CONFIG_IDE
|
||||||
/* CF in CF slot */
|
/* CF in CF slot */
|
||||||
static struct iop cfiop = {
|
static struct iop cfiop = {
|
||||||
.base = 0xb0600000,
|
.base = 0xb0600000,
|
||||||
@ -132,12 +135,13 @@ static struct iop cfiop = {
|
|||||||
.outb = pcc_outb,
|
.outb = pcc_outb,
|
||||||
.outw = simple_outw,
|
.outw = simple_outw,
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
static __inline__ struct iop *
|
static __inline__ struct iop *
|
||||||
port2iop(unsigned long port)
|
port2iop(unsigned long port)
|
||||||
{
|
{
|
||||||
if (0) ;
|
if (0) ;
|
||||||
#if defined(CONFIG_SMC91111)
|
#if defined(CONFIG_SMC91X)
|
||||||
else if (laniop.check(&laniop, port))
|
else if (laniop.check(&laniop, port))
|
||||||
return &laniop;
|
return &laniop;
|
||||||
#endif
|
#endif
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/mach/se7300.h>
|
#include <asm/se7300.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize IRQ setting
|
* Initialize IRQ setting
|
||||||
|
@ -12,24 +12,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <asm/mach/se7300.h>
|
#include <asm/se7300.h>
|
||||||
|
|
||||||
static void
|
|
||||||
mach_led(int position, int value)
|
|
||||||
{
|
|
||||||
volatile unsigned short *p = (volatile unsigned short *) PA_LED;
|
|
||||||
|
|
||||||
if (value) {
|
|
||||||
*p |= (1 << 8);
|
|
||||||
} else {
|
|
||||||
*p &= ~(1 << 8);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Cycle the LED's in the clasic Knightrider/Sun pattern */
|
/* Cycle the LED's in the clasic Knightrider/Sun pattern */
|
||||||
void
|
void heartbeat_7300se(void)
|
||||||
heartbeat_7300se(void)
|
|
||||||
{
|
{
|
||||||
static unsigned int cnt = 0, period = 0;
|
static unsigned int cnt = 0, period = 0;
|
||||||
volatile unsigned short *p = (volatile unsigned short *) PA_LED;
|
volatile unsigned short *p = (volatile unsigned short *) PA_LED;
|
||||||
|
@ -9,8 +9,7 @@
|
|||||||
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
#include <asm/machvec_init.h>
|
#include <asm/se7300.h>
|
||||||
#include <asm/mach/io.h>
|
|
||||||
|
|
||||||
void heartbeat_7300se(void);
|
void heartbeat_7300se(void);
|
||||||
void init_7300se_IRQ(void);
|
void init_7300se_IRQ(void);
|
||||||
|
@ -11,8 +11,7 @@
|
|||||||
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
#include <asm/machvec_init.h>
|
#include <asm/se73180.h>
|
||||||
#include <asm/mach/io.h>
|
|
||||||
|
|
||||||
void heartbeat_73180se(void);
|
void heartbeat_73180se(void);
|
||||||
void init_73180se_IRQ(void);
|
void init_73180se_IRQ(void);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: io.c,v 1.5 2004/02/22 23:08:43 kkojima Exp $
|
/* $Id: io.c,v 1.6 2006/01/04 17:53:54 lethal Exp $
|
||||||
*
|
*
|
||||||
* linux/arch/sh/kernel/io_se.c
|
* linux/arch/sh/kernel/io_se.c
|
||||||
*
|
*
|
||||||
@ -11,7 +11,7 @@
|
|||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/se/se.h>
|
#include <asm/se.h>
|
||||||
|
|
||||||
/* SH pcmcia io window base, start and end. */
|
/* SH pcmcia io window base, start and end. */
|
||||||
int sh_pcic_io_wbase = 0xb8400000;
|
int sh_pcic_io_wbase = 0xb8400000;
|
||||||
@ -52,10 +52,6 @@ shifted_port(unsigned long port)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#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))
|
|
||||||
|
|
||||||
unsigned char se_inb(unsigned long port)
|
unsigned char se_inb(unsigned long port)
|
||||||
{
|
{
|
||||||
if (sh_pcic_io_start <= port && port <= sh_pcic_io_stop)
|
if (sh_pcic_io_start <= port && port <= sh_pcic_io_stop)
|
||||||
@ -86,13 +82,13 @@ unsigned short se_inw(unsigned long port)
|
|||||||
(sh_pcic_io_start <= port && port <= sh_pcic_io_stop))
|
(sh_pcic_io_start <= port && port <= sh_pcic_io_stop))
|
||||||
return *port2adr(port);
|
return *port2adr(port);
|
||||||
else
|
else
|
||||||
maybebadio(inw, port);
|
maybebadio(port);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int se_inl(unsigned long port)
|
unsigned int se_inl(unsigned long port)
|
||||||
{
|
{
|
||||||
maybebadio(inl, port);
|
maybebadio(port);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,12 +119,12 @@ void se_outw(unsigned short value, unsigned long port)
|
|||||||
(sh_pcic_io_start <= port && port <= sh_pcic_io_stop))
|
(sh_pcic_io_start <= port && port <= sh_pcic_io_stop))
|
||||||
*port2adr(port) = value;
|
*port2adr(port) = value;
|
||||||
else
|
else
|
||||||
maybebadio(outw, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void se_outl(unsigned int value, unsigned long port)
|
void se_outl(unsigned int value, unsigned long port)
|
||||||
{
|
{
|
||||||
maybebadio(outl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void se_insb(unsigned long port, void *addr, unsigned long count)
|
void se_insb(unsigned long port, void *addr, unsigned long count)
|
||||||
@ -159,7 +155,7 @@ void se_insw(unsigned long port, void *addr, unsigned long count)
|
|||||||
|
|
||||||
void se_insl(unsigned long port, void *addr, unsigned long count)
|
void se_insl(unsigned long port, void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
maybebadio(insl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void se_outsb(unsigned long port, const void *addr, unsigned long count)
|
void se_outsb(unsigned long port, const void *addr, unsigned long count)
|
||||||
@ -190,37 +186,5 @@ void se_outsw(unsigned long port, const void *addr, unsigned long count)
|
|||||||
|
|
||||||
void se_outsl(unsigned long port, const void *addr, unsigned long count)
|
void se_outsl(unsigned long port, const void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
maybebadio(outsw, port);
|
maybebadio(port);
|
||||||
}
|
|
||||||
|
|
||||||
/* Map ISA bus address to the real address. Only for PCMCIA. */
|
|
||||||
|
|
||||||
/* ISA page descriptor. */
|
|
||||||
static __u32 sh_isa_memmap[256];
|
|
||||||
|
|
||||||
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);
|
|
||||||
#if 0
|
|
||||||
printk("sh_isa_mmap: start %x len %x offset %x (idx %x paddr %x)\n",
|
|
||||||
start, length, offset, idx, sh_isa_memmap[idx]);
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsigned long
|
|
||||||
se_isa_port2addr(unsigned long offset)
|
|
||||||
{
|
|
||||||
int idx;
|
|
||||||
|
|
||||||
idx = (offset >> 12) & 0xff;
|
|
||||||
offset &= 0xfff;
|
|
||||||
return sh_isa_memmap[idx] + offset;
|
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/se/se.h>
|
#include <asm/se.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize IRQ setting
|
* Initialize IRQ setting
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <asm/se/se.h>
|
#include <asm/se.h>
|
||||||
|
|
||||||
/* Cycle the LED's in the clasic Knightrider/Sun pattern */
|
/* Cycle the LED's in the clasic Knightrider/Sun pattern */
|
||||||
void heartbeat_se(void)
|
void heartbeat_se(void)
|
||||||
|
@ -13,12 +13,9 @@
|
|||||||
|
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
#include <asm/rtc.h>
|
#include <asm/rtc.h>
|
||||||
#include <asm/machvec_init.h>
|
#include <asm/se.h>
|
||||||
|
|
||||||
#include <asm/se/io.h>
|
|
||||||
|
|
||||||
void heartbeat_se(void);
|
void heartbeat_se(void);
|
||||||
void setup_se(void);
|
|
||||||
void init_se_IRQ(void);
|
void init_se_IRQ(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -57,8 +54,6 @@ struct sh_machine_vector mv_se __initmv = {
|
|||||||
.mv_outsw = se_outsw,
|
.mv_outsw = se_outsw,
|
||||||
.mv_outsl = se_outsl,
|
.mv_outsl = se_outsl,
|
||||||
|
|
||||||
.mv_isa_port2addr = se_isa_port2addr,
|
|
||||||
|
|
||||||
.mv_init_irq = init_se_IRQ,
|
.mv_init_irq = init_se_IRQ,
|
||||||
#ifdef CONFIG_HEARTBEAT
|
#ifdef CONFIG_HEARTBEAT
|
||||||
.mv_heartbeat = heartbeat_se,
|
.mv_heartbeat = heartbeat_se,
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include <linux/hdreg.h>
|
#include <linux/hdreg.h>
|
||||||
#include <linux/ide.h>
|
#include <linux/ide.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/se/se.h>
|
#include <asm/se.h>
|
||||||
#include <asm/smc37c93x.h>
|
#include <asm/smc37c93x.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
* linux/arch/sh/kernel/io_7751se.c
|
* linux/arch/sh/kernel/io_7751se.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2001 Ian da Silva, Jeremy Siegel
|
* Copyright (C) 2001 Ian da Silva, Jeremy Siegel
|
||||||
@ -14,7 +14,7 @@
|
|||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/se7751/se7751.h>
|
#include <asm/se7751.h>
|
||||||
#include <asm/addrspace.h>
|
#include <asm/addrspace.h>
|
||||||
|
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
@ -52,10 +52,6 @@ int sh_pcic_io_dummy;
|
|||||||
|
|
||||||
#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
|
#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
|
||||||
|
|
||||||
#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)
|
static inline void delay(void)
|
||||||
{
|
{
|
||||||
ctrl_inw(0xa0000000);
|
ctrl_inw(0xa0000000);
|
||||||
@ -66,11 +62,7 @@ port2adr(unsigned int port)
|
|||||||
{
|
{
|
||||||
if (port >= 0x2000)
|
if (port >= 0x2000)
|
||||||
return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000));
|
return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000));
|
||||||
#if 0
|
maybebadio((unsigned long)port);
|
||||||
else
|
|
||||||
return (volatile __u16 *) (PA_SUPERIO + (port << 1));
|
|
||||||
#endif
|
|
||||||
maybebadio(name,(unsigned long)port);
|
|
||||||
return (volatile __u16*)port;
|
return (volatile __u16*)port;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,7 +132,7 @@ unsigned short sh7751se_inw(unsigned long port)
|
|||||||
else if (port >= 0x2000)
|
else if (port >= 0x2000)
|
||||||
return *port2adr(port);
|
return *port2adr(port);
|
||||||
else
|
else
|
||||||
maybebadio(inw, port);
|
maybebadio(port);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,7 +145,7 @@ unsigned int sh7751se_inl(unsigned long port)
|
|||||||
else if (port >= 0x2000)
|
else if (port >= 0x2000)
|
||||||
return *port2adr(port);
|
return *port2adr(port);
|
||||||
else
|
else
|
||||||
maybebadio(inl, port);
|
maybebadio(port);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,7 +180,7 @@ void sh7751se_outw(unsigned short value, unsigned long port)
|
|||||||
else if (port >= 0x2000)
|
else if (port >= 0x2000)
|
||||||
*port2adr(port) = value;
|
*port2adr(port) = value;
|
||||||
else
|
else
|
||||||
maybebadio(outw, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sh7751se_outl(unsigned int value, unsigned long port)
|
void sh7751se_outl(unsigned int value, unsigned long port)
|
||||||
@ -198,17 +190,17 @@ void sh7751se_outl(unsigned int value, unsigned long port)
|
|||||||
else if (CHECK_SH7751_PCIIO(port))
|
else if (CHECK_SH7751_PCIIO(port))
|
||||||
*((unsigned long*)PCI_IOMAP(port)) = value;
|
*((unsigned long*)PCI_IOMAP(port)) = value;
|
||||||
else
|
else
|
||||||
maybebadio(outl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sh7751se_insl(unsigned long port, void *addr, unsigned long count)
|
void sh7751se_insl(unsigned long port, void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
maybebadio(insl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sh7751se_outsl(unsigned long port, const void *addr, unsigned long count)
|
void sh7751se_outsl(unsigned long port, const void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
maybebadio(outsw, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Map ISA bus address to the real address. Only for PCMCIA. */
|
/* Map ISA bus address to the real address. Only for PCMCIA. */
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
#include <asm/se7751/se7751.h>
|
#include <asm/se7751.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initialize IRQ setting
|
* Initialize IRQ setting
|
||||||
|
@ -8,9 +8,8 @@
|
|||||||
*
|
*
|
||||||
* This file contains Solution Engine specific LED code.
|
* This file contains Solution Engine specific LED code.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <asm/se7751/se7751.h>
|
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
#include <asm/se7751.h>
|
||||||
|
|
||||||
/* Cycle the LED's in the clasic Knightrider/Sun pattern */
|
/* Cycle the LED's in the clasic Knightrider/Sun pattern */
|
||||||
void heartbeat_7751se(void)
|
void heartbeat_7751se(void)
|
||||||
|
@ -10,12 +10,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
#include <asm/rtc.h>
|
#include <asm/se7751.h>
|
||||||
#include <asm/machvec_init.h>
|
|
||||||
|
|
||||||
#include <asm/se7751/io.h>
|
|
||||||
|
|
||||||
void heartbeat_7751se(void);
|
void heartbeat_7751se(void);
|
||||||
void init_7751se_IRQ(void);
|
void init_7751se_IRQ(void);
|
||||||
@ -44,8 +40,6 @@ struct sh_machine_vector mv_7751se __initmv = {
|
|||||||
.mv_insl = sh7751se_insl,
|
.mv_insl = sh7751se_insl,
|
||||||
.mv_outsl = sh7751se_outsl,
|
.mv_outsl = sh7751se_outsl,
|
||||||
|
|
||||||
.mv_isa_port2addr = sh7751se_isa_port2addr,
|
|
||||||
|
|
||||||
.mv_init_irq = init_7751se_IRQ,
|
.mv_init_irq = init_7751se_IRQ,
|
||||||
#ifdef CONFIG_HEARTBEAT
|
#ifdef CONFIG_HEARTBEAT
|
||||||
.mv_heartbeat = heartbeat_7751se,
|
.mv_heartbeat = heartbeat_7751se,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
* linux/arch/sh/kernel/setup_7751se.c
|
* linux/arch/sh/kernel/setup_7751se.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2000 Kazumoto Kojima
|
* Copyright (C) 2000 Kazumoto Kojima
|
||||||
@ -11,11 +11,9 @@
|
|||||||
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
|
|
||||||
#include <linux/hdreg.h>
|
|
||||||
#include <linux/ide.h>
|
#include <linux/ide.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/se7751/se7751.h>
|
#include <asm/se7751.h>
|
||||||
|
|
||||||
#ifdef CONFIG_SH_KGDB
|
#ifdef CONFIG_SH_KGDB
|
||||||
#include <asm/kgdb.h>
|
#include <asm/kgdb.h>
|
||||||
|
@ -7,22 +7,19 @@
|
|||||||
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <linux/hdreg.h>
|
|
||||||
#include <linux/ide.h>
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
#include <asm/rtc.h>
|
||||||
#include <asm/sh03/io.h>
|
#include <asm/sh03/io.h>
|
||||||
#include <asm/sh03/sh03.h>
|
#include <asm/sh03/sh03.h>
|
||||||
#include <asm/addrspace.h>
|
#include <asm/addrspace.h>
|
||||||
#include "../../drivers/pci/pci-sh7751.h"
|
#include "../../drivers/pci/pci-sh7751.h"
|
||||||
|
|
||||||
extern void (*board_time_init)(void);
|
|
||||||
|
|
||||||
const char *get_system_type(void)
|
const char *get_system_type(void)
|
||||||
{
|
{
|
||||||
return "Interface CTP/PCI-SH03)";
|
return "Interface CTP/PCI-SH03)";
|
||||||
}
|
}
|
||||||
|
|
||||||
void init_sh03_IRQ(void)
|
static void init_sh03_IRQ(void)
|
||||||
{
|
{
|
||||||
ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR);
|
ctrl_outw(ctrl_inw(INTC_ICR) | INTC_ICR_IRLM, INTC_ICR);
|
||||||
|
|
||||||
@ -34,24 +31,20 @@ void init_sh03_IRQ(void)
|
|||||||
|
|
||||||
extern void *cf_io_base;
|
extern void *cf_io_base;
|
||||||
|
|
||||||
unsigned long sh03_isa_port2addr(unsigned long port)
|
static void __iomem *sh03_ioport_map(unsigned long port, unsigned int size)
|
||||||
{
|
{
|
||||||
if (PXSEG(port))
|
if (PXSEG(port))
|
||||||
return port;
|
return (void __iomem *)port;
|
||||||
/* CompactFlash (IDE) */
|
/* CompactFlash (IDE) */
|
||||||
if (((port >= 0x1f0) && (port <= 0x1f7)) || (port == 0x3f6)) {
|
if (((port >= 0x1f0) && (port <= 0x1f7)) || (port == 0x3f6))
|
||||||
return (unsigned long)cf_io_base + port;
|
return (void __iomem *)((unsigned long)cf_io_base + port);
|
||||||
}
|
|
||||||
return port + SH7751_PCI_IO_BASE;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
return (void __iomem *)(port + SH7751_PCI_IO_BASE);
|
||||||
* The Machine Vector
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
struct sh_machine_vector mv_sh03 __initmv = {
|
struct sh_machine_vector mv_sh03 __initmv = {
|
||||||
.mv_nr_irqs = 48,
|
.mv_nr_irqs = 48,
|
||||||
.mv_isa_port2addr = sh03_isa_port2addr,
|
.mv_ioport_map = sh03_ioport_map,
|
||||||
.mv_init_irq = init_sh03_IRQ,
|
.mv_init_irq = init_sh03_IRQ,
|
||||||
|
|
||||||
#ifdef CONFIG_HEARTBEAT
|
#ifdef CONFIG_HEARTBEAT
|
||||||
|
@ -28,39 +28,26 @@ unsigned short secureedge5410_ioport;
|
|||||||
/*
|
/*
|
||||||
* The SnapGear uses the built-in PCI controller (PCIC)
|
* The SnapGear uses the built-in PCI controller (PCIC)
|
||||||
* of the 7751 processor
|
* of the 7751 processor
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define PCIIOBR (volatile long *)PCI_REG(SH7751_PCIIOBR)
|
#define PCIIOBR (volatile long *)PCI_REG(SH7751_PCIIOBR)
|
||||||
#define PCIMBR (volatile long *)PCI_REG(SH7751_PCIMBR)
|
#define PCIMBR (volatile long *)PCI_REG(SH7751_PCIMBR)
|
||||||
#define PCI_IO_AREA SH7751_PCI_IO_BASE
|
#define PCI_IO_AREA SH7751_PCI_IO_BASE
|
||||||
#define PCI_MEM_AREA SH7751_PCI_CONFIG_BASE
|
#define PCI_MEM_AREA SH7751_PCI_CONFIG_BASE
|
||||||
|
|
||||||
|
|
||||||
#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
|
#define PCI_IOMAP(adr) (PCI_IO_AREA + (adr & ~SH7751_PCIIOBR_MASK))
|
||||||
|
|
||||||
|
|
||||||
#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)
|
static inline void delay(void)
|
||||||
{
|
{
|
||||||
ctrl_inw(0xa0000000);
|
ctrl_inw(0xa0000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static inline volatile __u16 *port2adr(unsigned int port)
|
static inline volatile __u16 *port2adr(unsigned int port)
|
||||||
{
|
{
|
||||||
#if 0
|
maybebadio((unsigned long)port);
|
||||||
if (port >= 0x2000)
|
|
||||||
return (volatile __u16 *) (PA_MRSHPC + (port - 0x2000));
|
|
||||||
#endif
|
|
||||||
maybebadio(name,(unsigned long)port);
|
|
||||||
return (volatile __u16*)port;
|
return (volatile __u16*)port;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* In case someone configures the kernel w/o PCI support: in that */
|
/* In case someone configures the kernel w/o PCI support: in that */
|
||||||
/* scenario, don't ever bother to check for PCI-window addresses */
|
/* scenario, don't ever bother to check for PCI-window addresses */
|
||||||
|
|
||||||
@ -115,7 +102,7 @@ unsigned short snapgear_inw(unsigned long port)
|
|||||||
else if (port >= 0x2000)
|
else if (port >= 0x2000)
|
||||||
return *port2adr(port);
|
return *port2adr(port);
|
||||||
else
|
else
|
||||||
maybebadio(inw, port);
|
maybebadio(port);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,7 +116,7 @@ unsigned int snapgear_inl(unsigned long port)
|
|||||||
else if (port >= 0x2000)
|
else if (port >= 0x2000)
|
||||||
return *port2adr(port);
|
return *port2adr(port);
|
||||||
else
|
else
|
||||||
maybebadio(inl, port);
|
maybebadio(port);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,7 +154,7 @@ void snapgear_outw(unsigned short value, unsigned long port)
|
|||||||
else if (port >= 0x2000)
|
else if (port >= 0x2000)
|
||||||
*port2adr(port) = value;
|
*port2adr(port) = value;
|
||||||
else
|
else
|
||||||
maybebadio(outw, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -178,49 +165,15 @@ void snapgear_outl(unsigned int value, unsigned long port)
|
|||||||
else if (CHECK_SH7751_PCIIO(port))
|
else if (CHECK_SH7751_PCIIO(port))
|
||||||
*((unsigned long*)PCI_IOMAP(port)) = value;
|
*((unsigned long*)PCI_IOMAP(port)) = value;
|
||||||
else
|
else
|
||||||
maybebadio(outl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void snapgear_insl(unsigned long port, void *addr, unsigned long count)
|
void snapgear_insl(unsigned long port, void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
maybebadio(insl, port);
|
maybebadio(port);
|
||||||
}
|
}
|
||||||
|
|
||||||
void snapgear_outsl(unsigned long port, const void *addr, unsigned long count)
|
void snapgear_outsl(unsigned long port, const void *addr, unsigned long count)
|
||||||
{
|
{
|
||||||
maybebadio(outsw, port);
|
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);
|
|
||||||
#if 0
|
|
||||||
printk("sh_isa_mmap: start %x len %x offset %x (idx %x paddr %x)\n",
|
|
||||||
start, length, offset, idx, sh_isa_memmap[idx]);
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
unsigned long snapgear_isa_port2addr(unsigned long offset)
|
|
||||||
{
|
|
||||||
int idx;
|
|
||||||
|
|
||||||
idx = (offset >> 12) & 0xff;
|
|
||||||
offset &= 0xfff;
|
|
||||||
return sh_isa_memmap[idx] + offset;
|
|
||||||
}
|
}
|
||||||
|
@ -17,10 +17,7 @@
|
|||||||
#include <linux/time.h>
|
#include <linux/time.h>
|
||||||
#include <linux/rtc.h>
|
#include <linux/rtc.h>
|
||||||
#include <linux/mc146818rtc.h>
|
#include <linux/mc146818rtc.h>
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/rtc.h>
|
|
||||||
#include <asm/mc146818rtc.h>
|
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
/****************************************************************************/
|
/*
|
||||||
/*
|
|
||||||
* linux/arch/sh/boards/snapgear/setup.c
|
* linux/arch/sh/boards/snapgear/setup.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2002 David McCullough <davidm@snapgear.com>
|
* Copyright (C) 2002 David McCullough <davidm@snapgear.com>
|
||||||
@ -12,8 +11,6 @@
|
|||||||
* Modified for 7751 Solution Engine by
|
* Modified for 7751 Solution Engine by
|
||||||
* Ian da Silva and Jeremy Siegel, 2001.
|
* Ian da Silva and Jeremy Siegel, 2001.
|
||||||
*/
|
*/
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
@ -21,14 +18,13 @@
|
|||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
#include <asm/mach/io.h>
|
#include <asm/snapgear.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
#include <asm/rtc.h>
|
||||||
#include <asm/cpu/timer.h>
|
#include <asm/cpu/timer.h>
|
||||||
|
|
||||||
extern void (*board_time_init)(void);
|
|
||||||
extern void secureedge5410_rtc_init(void);
|
extern void secureedge5410_rtc_init(void);
|
||||||
extern void pcibios_init(void);
|
extern void pcibios_init(void);
|
||||||
|
|
||||||
@ -85,91 +81,6 @@ static void __init init_snapgear_IRQ(void)
|
|||||||
make_ipr_irq(IRL3_IRQ, IRL3_IPR_ADDR, IRL3_IPR_POS, IRL3_PRIORITY);
|
make_ipr_irq(IRL3_IRQ, IRL3_IPR_ADDR, IRL3_IPR_POS, IRL3_PRIORITY);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
/*
|
|
||||||
* Fast poll interrupt simulator.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Leave all of the fast timer/fast poll stuff commented out for now, since
|
|
||||||
* it's not clear whether it actually works or not. Since it wasn't being used
|
|
||||||
* at all in 2.4, we'll assume it's not sane for 2.6 either.. -- PFM
|
|
||||||
*/
|
|
||||||
#if 0
|
|
||||||
#define FAST_POLL 1000
|
|
||||||
//#define FAST_POLL_INTR
|
|
||||||
|
|
||||||
#define FASTTIMER_IRQ 17
|
|
||||||
#define FASTTIMER_IPR_ADDR INTC_IPRA
|
|
||||||
#define FASTTIMER_IPR_POS 2
|
|
||||||
#define FASTTIMER_PRIORITY 3
|
|
||||||
|
|
||||||
#ifdef FAST_POLL_INTR
|
|
||||||
#define TMU1_TCR_INIT 0x0020
|
|
||||||
#else
|
|
||||||
#define TMU1_TCR_INIT 0
|
|
||||||
#endif
|
|
||||||
#define TMU_TSTR_INIT 1
|
|
||||||
#define TMU1_TCR_CALIB 0x0000
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef FAST_POLL_INTR
|
|
||||||
static void fast_timer_irq(int irq, void *dev_instance, struct pt_regs *regs)
|
|
||||||
{
|
|
||||||
unsigned long timer_status;
|
|
||||||
timer_status = ctrl_inw(TMU1_TCR);
|
|
||||||
timer_status &= ~0x100;
|
|
||||||
ctrl_outw(timer_status, TMU1_TCR);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* return the current ticks on the fast timer
|
|
||||||
*/
|
|
||||||
|
|
||||||
unsigned long fast_timer_count(void)
|
|
||||||
{
|
|
||||||
return(ctrl_inl(TMU1_TCNT));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* setup a fast timer for profiling etc etc
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void setup_fast_timer()
|
|
||||||
{
|
|
||||||
unsigned long interval;
|
|
||||||
|
|
||||||
#ifdef FAST_POLL_INTR
|
|
||||||
interval = (current_cpu_data.module_clock/4 + FAST_POLL/2) / FAST_POLL;
|
|
||||||
|
|
||||||
make_ipr_irq(FASTTIMER_IRQ, FASTTIMER_IPR_ADDR, FASTTIMER_IPR_POS,
|
|
||||||
FASTTIMER_PRIORITY);
|
|
||||||
|
|
||||||
printk("SnapGear: %dHz fast timer on IRQ %d\n",FAST_POLL,FASTTIMER_IRQ);
|
|
||||||
|
|
||||||
if (request_irq(FASTTIMER_IRQ, fast_timer_irq, 0, "SnapGear fast timer",
|
|
||||||
NULL) != 0)
|
|
||||||
printk("%s(%d): request_irq() failed?\n", __FILE__, __LINE__);
|
|
||||||
#else
|
|
||||||
printk("SnapGear: fast timer running\n",FAST_POLL,FASTTIMER_IRQ);
|
|
||||||
interval = 0xffffffff;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
ctrl_outb(ctrl_inb(TMU_TSTR) & ~0x2, TMU_TSTR); /* disable timer 1 */
|
|
||||||
ctrl_outw(TMU1_TCR_INIT, TMU1_TCR);
|
|
||||||
ctrl_outl(interval, TMU1_TCOR);
|
|
||||||
ctrl_outl(interval, TMU1_TCNT);
|
|
||||||
ctrl_outb(ctrl_inb(TMU_TSTR) | 0x2, TMU_TSTR); /* enable timer 1 */
|
|
||||||
|
|
||||||
printk("Timer count 1 = 0x%x\n", fast_timer_count());
|
|
||||||
udelay(1000);
|
|
||||||
printk("Timer count 2 = 0x%x\n", fast_timer_count());
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************/
|
|
||||||
|
|
||||||
const char *get_system_type(void)
|
const char *get_system_type(void)
|
||||||
{
|
{
|
||||||
return "SnapGear SecureEdge5410";
|
return "SnapGear SecureEdge5410";
|
||||||
@ -196,8 +107,6 @@ struct sh_machine_vector mv_snapgear __initmv = {
|
|||||||
.mv_outw_p = snapgear_outw,
|
.mv_outw_p = snapgear_outw,
|
||||||
.mv_outl_p = snapgear_outl,
|
.mv_outl_p = snapgear_outl,
|
||||||
|
|
||||||
.mv_isa_port2addr = snapgear_isa_port2addr,
|
|
||||||
|
|
||||||
.mv_init_irq = init_snapgear_IRQ,
|
.mv_init_irq = init_snapgear_IRQ,
|
||||||
};
|
};
|
||||||
ALIAS_MV(snapgear)
|
ALIAS_MV(snapgear)
|
||||||
|
@ -30,10 +30,10 @@ static inline void delay(void)
|
|||||||
ctrl_inw(0xa0000000);
|
ctrl_inw(0xa0000000);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline volatile u16 *port2adr(unsigned int port)
|
static inline unsigned int port2adr(unsigned int port)
|
||||||
{
|
{
|
||||||
maybebadio((unsigned long)port);
|
maybebadio((unsigned long)port);
|
||||||
return (volatile u16*)port;
|
return port;
|
||||||
}
|
}
|
||||||
|
|
||||||
u8 titan_inb(unsigned long port)
|
u8 titan_inb(unsigned long port)
|
||||||
|
@ -65,6 +65,11 @@ config HD64461_IRQ
|
|||||||
|
|
||||||
Do not change this unless you know what you are doing.
|
Do not change this unless you know what you are doing.
|
||||||
|
|
||||||
|
config HD64461_IOBASE
|
||||||
|
hex "HD64461 start address"
|
||||||
|
depends on HD64461
|
||||||
|
default "0xb0000000"
|
||||||
|
|
||||||
config HD64461_ENABLER
|
config HD64461_ENABLER
|
||||||
bool "HD64461 PCMCIA enabler"
|
bool "HD64461 PCMCIA enabler"
|
||||||
depends on HD64461
|
depends on HD64461
|
||||||
@ -73,7 +78,6 @@ config HD64461_ENABLER
|
|||||||
via the HD64461 companion chip.
|
via the HD64461 companion chip.
|
||||||
Otherwise, say N.
|
Otherwise, say N.
|
||||||
|
|
||||||
|
|
||||||
config HD64465_IOBASE
|
config HD64465_IOBASE
|
||||||
hex "HD64465 start address"
|
hex "HD64465 start address"
|
||||||
depends on HD64465
|
depends on HD64465
|
||||||
|
@ -10,7 +10,8 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
#include <linux/mm.h>
|
||||||
|
#include <linux/vmalloc.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
||||||
@ -32,8 +33,6 @@
|
|||||||
/* SH4 can't access PCMCIA interface through P2 area.
|
/* SH4 can't access PCMCIA interface through P2 area.
|
||||||
* we must remap it with appropreate attribute bit of the page set.
|
* we must remap it with appropreate attribute bit of the page set.
|
||||||
* this part is based on Greg Banks' hd64465_ss.c implementation - Masahiro Abe */
|
* this part is based on Greg Banks' hd64465_ss.c implementation - Masahiro Abe */
|
||||||
#include <linux/mm.h>
|
|
||||||
#include <linux/vmalloc.h>
|
|
||||||
|
|
||||||
#if defined(CONFIG_CF_AREA6)
|
#if defined(CONFIG_CF_AREA6)
|
||||||
#define slot_no 0
|
#define slot_no 0
|
||||||
@ -84,7 +83,7 @@ static int __init cf_init_default(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_SH_SOLUTION_ENGINE)
|
#if defined(CONFIG_SH_SOLUTION_ENGINE)
|
||||||
#include <asm/se/se.h>
|
#include <asm/se.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* SolutionEngine
|
* SolutionEngine
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/se/se.h>
|
#include <asm/se.h>
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
#ifdef CONFIG_SH_STANDARD_BIOS
|
#ifdef CONFIG_SH_STANDARD_BIOS
|
||||||
#include <asm/sh_bios.h>
|
#include <asm/sh_bios.h>
|
||||||
|
@ -44,6 +44,9 @@
|
|||||||
#define IRQ_RINGING 4 /* Ringing IRQ */
|
#define IRQ_RINGING 4 /* Ringing IRQ */
|
||||||
#define IRQ_CODEC 5 /* CODEC IRQ */
|
#define IRQ_CODEC 5 /* CODEC IRQ */
|
||||||
|
|
||||||
|
#define __IO_PREFIX hs7751rvoip
|
||||||
|
#include <asm/io_generic.h>
|
||||||
|
|
||||||
/* arch/sh/boards/renesas/hs7751rvoip/irq.c */
|
/* arch/sh/boards/renesas/hs7751rvoip/irq.c */
|
||||||
void init_hs7751rvoip_IRQ(void);
|
void init_hs7751rvoip_IRQ(void);
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#define CMOS_WRITE(val,addr) __CMOS_WRITE(val,addr,b)
|
#define CMOS_WRITE(val,addr) __CMOS_WRITE(val,addr,b)
|
||||||
|
|
||||||
#elif defined(CONFIG_SH_SECUREEDGE5410)
|
#elif defined(CONFIG_SH_SECUREEDGE5410)
|
||||||
#include <asm/snapgear/io.h>
|
#include <asm/snapgear.h>
|
||||||
|
|
||||||
#define RTC_PORT(n) SECUREEDGE_IOPORT_ADDR
|
#define RTC_PORT(n) SECUREEDGE_IOPORT_ADDR
|
||||||
#define CMOS_READ(addr) secureedge5410_cmos_read(addr)
|
#define CMOS_READ(addr) secureedge5410_cmos_read(addr)
|
||||||
|
@ -74,4 +74,7 @@
|
|||||||
#define IRQ_STNIC 10
|
#define IRQ_STNIC 10
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define __IO_PREFIX se
|
||||||
|
#include <asm/io_generic.h>
|
||||||
|
|
||||||
#endif /* __ASM_SH_HITACHI_SE_H */
|
#endif /* __ASM_SH_HITACHI_SE_H */
|
@ -1,35 +0,0 @@
|
|||||||
/*
|
|
||||||
* include/asm-sh/io_se.h
|
|
||||||
*
|
|
||||||
* Copyright 2000 Stuart Menefy (stuart.menefy@st.com)
|
|
||||||
*
|
|
||||||
* May be copied or modified under the terms of the GNU General Public
|
|
||||||
* License. See linux/COPYING for more information.
|
|
||||||
*
|
|
||||||
* IO functions for an Hitachi SolutionEngine
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _ASM_SH_IO_SE_H
|
|
||||||
#define _ASM_SH_IO_SE_H
|
|
||||||
|
|
||||||
extern unsigned char se_inb(unsigned long port);
|
|
||||||
extern unsigned short se_inw(unsigned long port);
|
|
||||||
extern unsigned int se_inl(unsigned long port);
|
|
||||||
|
|
||||||
extern void se_outb(unsigned char value, unsigned long port);
|
|
||||||
extern void se_outw(unsigned short value, unsigned long port);
|
|
||||||
extern void se_outl(unsigned int value, unsigned long port);
|
|
||||||
|
|
||||||
extern unsigned char se_inb_p(unsigned long port);
|
|
||||||
extern void se_outb_p(unsigned char value, unsigned long port);
|
|
||||||
|
|
||||||
extern void se_insb(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void se_insw(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void se_insl(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void se_outsb(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
extern void se_outsw(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
extern void se_outsl(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
|
|
||||||
extern unsigned long se_isa_port2addr(unsigned long offset);
|
|
||||||
|
|
||||||
#endif /* _ASM_SH_IO_SE_H */
|
|
@ -58,4 +58,7 @@
|
|||||||
#define PA_LCD1 0xb8000000
|
#define PA_LCD1 0xb8000000
|
||||||
#define PA_LCD2 0xb8800000
|
#define PA_LCD2 0xb8800000
|
||||||
|
|
||||||
|
#define __IO_PREFIX sh7300se
|
||||||
|
#include <asm/io_generic.h>
|
||||||
|
|
||||||
#endif /* __ASM_SH_HITACHI_SE7300_H */
|
#endif /* __ASM_SH_HITACHI_SE7300_H */
|
@ -1,29 +0,0 @@
|
|||||||
/*
|
|
||||||
* include/asm-sh/se7300/io.h
|
|
||||||
*
|
|
||||||
* Copyright (C) 2003 Takashi Kusuda <kusuda-takashi@hitachi-ul.co.jp>
|
|
||||||
* IO functions for SH-Mobile(SH7300) SolutionEngine
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _ASM_SH_IO_7300SE_H
|
|
||||||
#define _ASM_SH_IO_7300SE_H
|
|
||||||
|
|
||||||
extern unsigned char sh7300se_inb(unsigned long port);
|
|
||||||
extern unsigned short sh7300se_inw(unsigned long port);
|
|
||||||
extern unsigned int sh7300se_inl(unsigned long port);
|
|
||||||
|
|
||||||
extern void sh7300se_outb(unsigned char value, unsigned long port);
|
|
||||||
extern void sh7300se_outw(unsigned short value, unsigned long port);
|
|
||||||
extern void sh7300se_outl(unsigned int value, unsigned long port);
|
|
||||||
|
|
||||||
extern unsigned char sh7300se_inb_p(unsigned long port);
|
|
||||||
extern void sh7300se_outb_p(unsigned char value, unsigned long port);
|
|
||||||
|
|
||||||
extern void sh7300se_insb(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void sh7300se_insw(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void sh7300se_insl(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void sh7300se_outsb(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
extern void sh7300se_outsw(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
extern void sh7300se_outsl(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
|
|
||||||
#endif /* _ASM_SH_IO_7300SE_H */
|
|
@ -59,4 +59,7 @@
|
|||||||
#define PA_LCD1 0xb8000000
|
#define PA_LCD1 0xb8000000
|
||||||
#define PA_LCD2 0xb8800000
|
#define PA_LCD2 0xb8800000
|
||||||
|
|
||||||
|
#define __IO_PREFIX sh73180se
|
||||||
|
#include <asm/io_generic.h>
|
||||||
|
|
||||||
#endif /* __ASM_SH_HITACHI_SE73180_H */
|
#endif /* __ASM_SH_HITACHI_SE73180_H */
|
@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* include/asm-sh/se73180/io.h
|
|
||||||
*
|
|
||||||
* Copyright (C) 2003 Takashi Kusuda <kusuda-takashi@hitachi-ul.co.jp>
|
|
||||||
* Based on include/asm-sh/se7300/io.h
|
|
||||||
*
|
|
||||||
* IO functions for SH-Mobile3(SH73180) SolutionEngine
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _ASM_SH_IO_73180SE_H
|
|
||||||
#define _ASM_SH_IO_73180SE_H
|
|
||||||
|
|
||||||
extern unsigned char sh73180se_inb(unsigned long port);
|
|
||||||
extern unsigned short sh73180se_inw(unsigned long port);
|
|
||||||
extern unsigned int sh73180se_inl(unsigned long port);
|
|
||||||
|
|
||||||
extern void sh73180se_outb(unsigned char value, unsigned long port);
|
|
||||||
extern void sh73180se_outw(unsigned short value, unsigned long port);
|
|
||||||
extern void sh73180se_outl(unsigned int value, unsigned long port);
|
|
||||||
|
|
||||||
extern unsigned char sh73180se_inb_p(unsigned long port);
|
|
||||||
extern void sh73180se_outb_p(unsigned char value, unsigned long port);
|
|
||||||
|
|
||||||
extern void sh73180se_insb(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void sh73180se_insw(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void sh73180se_insl(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void sh73180se_outsb(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
extern void sh73180se_outsw(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
extern void sh73180se_outsl(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
|
|
||||||
#endif /* _ASM_SH_IO_73180SE_H */
|
|
@ -65,4 +65,7 @@
|
|||||||
|
|
||||||
#define IRQ_79C973 13
|
#define IRQ_79C973 13
|
||||||
|
|
||||||
|
#define __IO_PREFIX sh7751se
|
||||||
|
#include <asm/io_generic.h>
|
||||||
|
|
||||||
#endif /* __ASM_SH_HITACHI_7751SE_H */
|
#endif /* __ASM_SH_HITACHI_7751SE_H */
|
@ -1,42 +0,0 @@
|
|||||||
/*
|
|
||||||
* include/asm-sh/io_7751se.h
|
|
||||||
*
|
|
||||||
* Modified version of io_se.h for the 7751se-specific functions.
|
|
||||||
*
|
|
||||||
* May be copied or modified under the terms of the GNU General Public
|
|
||||||
* License. See linux/COPYING for more information.
|
|
||||||
*
|
|
||||||
* IO functions for an Hitachi SolutionEngine
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _ASM_SH_IO_7751SE_H
|
|
||||||
#define _ASM_SH_IO_7751SE_H
|
|
||||||
|
|
||||||
extern unsigned char sh7751se_inb(unsigned long port);
|
|
||||||
extern unsigned short sh7751se_inw(unsigned long port);
|
|
||||||
extern unsigned int sh7751se_inl(unsigned long port);
|
|
||||||
|
|
||||||
extern void sh7751se_outb(unsigned char value, unsigned long port);
|
|
||||||
extern void sh7751se_outw(unsigned short value, unsigned long port);
|
|
||||||
extern void sh7751se_outl(unsigned int value, unsigned long port);
|
|
||||||
|
|
||||||
extern unsigned char sh7751se_inb_p(unsigned long port);
|
|
||||||
extern void sh7751se_outb_p(unsigned char value, unsigned long port);
|
|
||||||
|
|
||||||
extern void sh7751se_insb(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void sh7751se_insw(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void sh7751se_insl(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void sh7751se_outsb(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
extern void sh7751se_outsw(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
extern void sh7751se_outsl(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
|
|
||||||
extern unsigned char sh7751se_readb(unsigned long addr);
|
|
||||||
extern unsigned short sh7751se_readw(unsigned long addr);
|
|
||||||
extern unsigned int sh7751se_readl(unsigned long addr);
|
|
||||||
extern void sh7751se_writeb(unsigned char b, unsigned long addr);
|
|
||||||
extern void sh7751se_writew(unsigned short b, unsigned long addr);
|
|
||||||
extern void sh7751se_writel(unsigned int b, unsigned long addr);
|
|
||||||
|
|
||||||
extern unsigned long sh7751se_isa_port2addr(unsigned long offset);
|
|
||||||
|
|
||||||
#endif /* _ASM_SH_IO_7751SE_H */
|
|
@ -33,14 +33,6 @@
|
|||||||
#define IRL3_IPR_POS 0
|
#define IRL3_IPR_POS 0
|
||||||
#define IRL3_PRIORITY 4
|
#define IRL3_PRIORITY 4
|
||||||
|
|
||||||
|
void heartbeat_sh03(void);
|
||||||
extern unsigned long sh03_isa_port2addr(unsigned long offset);
|
|
||||||
|
|
||||||
extern void setup_sh03(void);
|
|
||||||
extern void init_sh03_IRQ(void);
|
|
||||||
extern void heartbeat_sh03(void);
|
|
||||||
|
|
||||||
extern void sh03_rtc_gettimeofday(struct timeval *tv);
|
|
||||||
extern int sh03_rtc_settimeofday(const struct timeval *tv);
|
|
||||||
|
|
||||||
#endif /* _ASM_SH_IO_SH03_H */
|
#endif /* _ASM_SH_IO_SH03_H */
|
||||||
|
@ -40,21 +40,8 @@
|
|||||||
#define IRL3_PRIORITY 4
|
#define IRL3_PRIORITY 4
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern unsigned char snapgear_inb(unsigned long port);
|
#define __IO_PREFIX snapgear
|
||||||
extern unsigned short snapgear_inw(unsigned long port);
|
#include <asm/io_generic.h>
|
||||||
extern unsigned int snapgear_inl(unsigned long port);
|
|
||||||
|
|
||||||
extern void snapgear_outb(unsigned char value, unsigned long port);
|
|
||||||
extern void snapgear_outw(unsigned short value, unsigned long port);
|
|
||||||
extern void snapgear_outl(unsigned int value, unsigned long port);
|
|
||||||
|
|
||||||
extern unsigned char snapgear_inb_p(unsigned long port);
|
|
||||||
extern void snapgear_outb_p(unsigned char value, unsigned long port);
|
|
||||||
|
|
||||||
extern void snapgear_insl(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void snapgear_outsl(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
|
|
||||||
extern unsigned long snapgear_isa_port2addr(unsigned long offset);
|
|
||||||
|
|
||||||
#ifdef CONFIG_SH_SECUREEDGE5410
|
#ifdef CONFIG_SH_SECUREEDGE5410
|
||||||
/*
|
/*
|
||||||
@ -79,14 +66,14 @@ extern unsigned long snapgear_isa_port2addr(unsigned long offset);
|
|||||||
* D12 - RTS RESET
|
* D12 - RTS RESET
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define SECUREEDGE_IOPORT_ADDR ((volatile short *) 0xb0000000)
|
#define SECUREEDGE_IOPORT_ADDR ((volatile short *) 0xb0000000)
|
||||||
extern unsigned short secureedge5410_ioport;
|
extern unsigned short secureedge5410_ioport;
|
||||||
|
|
||||||
#define SECUREEDGE_WRITE_IOPORT(val, mask) (*SECUREEDGE_IOPORT_ADDR = \
|
#define SECUREEDGE_WRITE_IOPORT(val, mask) (*SECUREEDGE_IOPORT_ADDR = \
|
||||||
(secureedge5410_ioport = \
|
(secureedge5410_ioport = \
|
||||||
((secureedge5410_ioport & ~(mask)) | ((val) & (mask)))))
|
((secureedge5410_ioport & ~(mask)) | ((val) & (mask)))))
|
||||||
#define SECUREEDGE_READ_IOPORT() \
|
#define SECUREEDGE_READ_IOPORT() \
|
||||||
((*SECUREEDGE_IOPORT_ADDR&0x0817) | (secureedge5410_ioport&~0x0817))
|
((*SECUREEDGE_IOPORT_ADDR&0x0817) | (secureedge5410_ioport&~0x0817))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _ASM_SH_IO_SNAPGEAR_H */
|
#endif /* _ASM_SH_IO_SNAPGEAR_H */
|
@ -1,43 +0,0 @@
|
|||||||
/*
|
|
||||||
* include/asm-sh/systemh/io.h
|
|
||||||
*
|
|
||||||
* Stupid I/O definitions for SystemH, cloned from SE7751.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2003 Paul Mundt
|
|
||||||
*
|
|
||||||
* This file is subject to the terms and conditions of the GNU General Public
|
|
||||||
* License. See the file "COPYING" in the main directory of this archive
|
|
||||||
* for more details.
|
|
||||||
*/
|
|
||||||
#ifndef __ASM_SH_SYSTEMH_IO_H
|
|
||||||
#define __ASM_SH_SYSTEMH_IO_H
|
|
||||||
|
|
||||||
extern unsigned char sh7751systemh_inb(unsigned long port);
|
|
||||||
extern unsigned short sh7751systemh_inw(unsigned long port);
|
|
||||||
extern unsigned int sh7751systemh_inl(unsigned long port);
|
|
||||||
|
|
||||||
extern void sh7751systemh_outb(unsigned char value, unsigned long port);
|
|
||||||
extern void sh7751systemh_outw(unsigned short value, unsigned long port);
|
|
||||||
extern void sh7751systemh_outl(unsigned int value, unsigned long port);
|
|
||||||
|
|
||||||
extern unsigned char sh7751systemh_inb_p(unsigned long port);
|
|
||||||
extern void sh7751systemh_outb_p(unsigned char value, unsigned long port);
|
|
||||||
|
|
||||||
extern void sh7751systemh_insb(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void sh7751systemh_insw(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void sh7751systemh_insl(unsigned long port, void *addr, unsigned long count);
|
|
||||||
extern void sh7751systemh_outsb(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
extern void sh7751systemh_outsw(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
extern void sh7751systemh_outsl(unsigned long port, const void *addr, unsigned long count);
|
|
||||||
|
|
||||||
extern unsigned char sh7751systemh_readb(unsigned long addr);
|
|
||||||
extern unsigned short sh7751systemh_readw(unsigned long addr);
|
|
||||||
extern unsigned int sh7751systemh_readl(unsigned long addr);
|
|
||||||
extern void sh7751systemh_writeb(unsigned char b, unsigned long addr);
|
|
||||||
extern void sh7751systemh_writew(unsigned short b, unsigned long addr);
|
|
||||||
extern void sh7751systemh_writel(unsigned int b, unsigned long addr);
|
|
||||||
|
|
||||||
extern unsigned long sh7751systemh_isa_port2addr(unsigned long offset);
|
|
||||||
|
|
||||||
#endif /* __ASM_SH_SYSTEMH_IO_H */
|
|
||||||
|
|
@ -65,4 +65,7 @@
|
|||||||
|
|
||||||
#define IRQ_79C973 13
|
#define IRQ_79C973 13
|
||||||
|
|
||||||
|
#define __IO_PREFIX sh7751systemh
|
||||||
|
#include <asm/io_generic.h>
|
||||||
|
|
||||||
#endif /* __ASM_SH_SYSTEMH_7751SYSTEMH_H */
|
#endif /* __ASM_SH_SYSTEMH_7751SYSTEMH_H */
|
Loading…
Reference in New Issue
Block a user