diff options
author | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 14:02:09 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 14:02:09 +0900 |
commit | 36efc35447154317f9ffc5163a1793b5f7ff3de1 (patch) | |
tree | e90017bb7caffa93994c05897e4cb1bbcc278de1 /arch | |
parent | e8fb67f8e05bb1f4c07c3585967cfc6d44822ab0 (diff) | |
download | op-kernel-dev-36efc35447154317f9ffc5163a1793b5f7ff3de1.zip op-kernel-dev-36efc35447154317f9ffc5163a1793b5f7ff3de1.tar.gz |
sh: RTS7751R2D board updates.
More of the same, trivial cleanups, and moving options to their
own board-specific Kconfig.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/sh/Kconfig | 2 | ||||
-rw-r--r-- | arch/sh/boards/renesas/hs7751rvoip/Makefile | 2 | ||||
-rw-r--r-- | arch/sh/boards/renesas/hs7751rvoip/led.c | 26 | ||||
-rw-r--r-- | arch/sh/boards/renesas/rts7751r2d/Kconfig | 12 | ||||
-rw-r--r-- | arch/sh/boards/renesas/rts7751r2d/io.c | 95 | ||||
-rw-r--r-- | arch/sh/boards/renesas/rts7751r2d/led.c | 9 | ||||
-rw-r--r-- | arch/sh/boards/renesas/rts7751r2d/mach.c | 3 |
7 files changed, 68 insertions, 81 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index cbf0d52..a66b9c4 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig @@ -402,7 +402,7 @@ endmenu source "arch/sh/boards/renesas/hs7751rvoip/Kconfig" -#source "arch/sh/boards/renesas/rts7751r2d/Kconfig" +source "arch/sh/boards/renesas/rts7751r2d/Kconfig" config SH_PCLK_FREQ int "Peripheral clock frequency (in Hz)" diff --git a/arch/sh/boards/renesas/hs7751rvoip/Makefile b/arch/sh/boards/renesas/hs7751rvoip/Makefile index bede2d54..e626377 100644 --- a/arch/sh/boards/renesas/hs7751rvoip/Makefile +++ b/arch/sh/boards/renesas/hs7751rvoip/Makefile @@ -2,7 +2,7 @@ # Makefile for the HS7751RVoIP specific parts of the kernel # -obj-y := setup.o io.o irq.o led.o +obj-y := setup.o io.o irq.o obj-$(CONFIG_PCI) += pci.o diff --git a/arch/sh/boards/renesas/hs7751rvoip/led.c b/arch/sh/boards/renesas/hs7751rvoip/led.c deleted file mode 100644 index b6608ff..0000000 --- a/arch/sh/boards/renesas/hs7751rvoip/led.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - * linux/arch/sh/kernel/setup_hs7751rvoip.c - * - * Copyright (C) 2000 Kazumoto Kojima - * - * Renesas Technology Sales HS7751RVoIP Support. - * - * Modified for HS7751RVoIP by - * Atom Create Engineering Co., Ltd. 2002. - * Lineo uSolutions, Inc. 2003. - */ - -#include <asm/io.h> -#include <asm/hs7751rvoip/hs7751rvoip.h> - -extern unsigned int debug_counter; - -void debug_led_disp(void) -{ - unsigned short value; - - value = (unsigned char)debug_counter++; - ctrl_outb((0xf0|value), PA_OUTPORTR); - if (value == 0x0f) - debug_counter = 0; -} diff --git a/arch/sh/boards/renesas/rts7751r2d/Kconfig b/arch/sh/boards/renesas/rts7751r2d/Kconfig new file mode 100644 index 0000000..7780d1fb --- /dev/null +++ b/arch/sh/boards/renesas/rts7751r2d/Kconfig @@ -0,0 +1,12 @@ +if SH_RTS7751R2D + +menu "RTS7751R2D options" + +config RTS7751R2D_REV11 + bool "RTS7751R2D Rev. 1.1 board support" + help + Selecting this option will support version rev. 1.1. +endmenu + +endif + diff --git a/arch/sh/boards/renesas/rts7751r2d/io.c b/arch/sh/boards/renesas/rts7751r2d/io.c index 123abbb..9e7fa72 100644 --- a/arch/sh/boards/renesas/rts7751r2d/io.c +++ b/arch/sh/boards/renesas/rts7751r2d/io.c @@ -13,13 +13,11 @@ #include <linux/kernel.h> #include <linux/types.h> -#include <asm/io.h> -#include <asm/rts7751r2d/rts7751r2d.h> -#include <asm/addrspace.h> - -#include <linux/module.h> #include <linux/pci.h> #include "../../../drivers/pci/pci-sh7751.h" +#include <asm/rts7751r2d/rts7751r2d.h> +#include <asm/io.h> +#include <asm/addrspace.h> /* * The 7751R RTS7751R2D uses the built-in PCI controller (PCIC) @@ -35,10 +33,6 @@ #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) { ctrl_inw(0xa0000000); @@ -52,7 +46,7 @@ static inline unsigned long port2adr(unsigned int port) else return (PA_AREA5_IO + 0x1000 + ((port-0x1f0) << 1)); else - maybebadio(port2adr, (unsigned long)port); + maybebadio((unsigned long)port); return port; } @@ -138,13 +132,13 @@ unsigned char rts7751r2d_inb_p(unsigned long port) unsigned short rts7751r2d_inw(unsigned long port) { if (CHECK_AX88796L_PORT(port)) - maybebadio(inw, port); + 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 - maybebadio(inw, port); + maybebadio(port); return 0; } @@ -152,13 +146,13 @@ unsigned short rts7751r2d_inw(unsigned long port) unsigned int rts7751r2d_inl(unsigned long port) { if (CHECK_AX88796L_PORT(port)) - maybebadio(inl, port); + 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 - maybebadio(inl, port); + maybebadio(port); return 0; } @@ -191,51 +185,55 @@ void rts7751r2d_outb_p(unsigned char value, unsigned long port) void rts7751r2d_outw(unsigned short value, unsigned long port) { if (CHECK_AX88796L_PORT(port)) - maybebadio(outw, port); + 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 - maybebadio(outw, port); + maybebadio(port); } void rts7751r2d_outl(unsigned int value, unsigned long port) { if (CHECK_AX88796L_PORT(port)) - maybebadio(outl, port); + 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 - maybebadio(outl, port); + maybebadio(port); } void rts7751r2d_insb(unsigned long port, void *addr, unsigned long count) { + unsigned long a = (unsigned long)addr; volatile __u8 *bp; volatile __u16 *p; - unsigned char *s = addr; if (CHECK_AX88796L_PORT(port)) { p = (volatile unsigned short *)port88796l(port, 0); - while (count--) *s++ = *p & 0xff; + while (count--) + ctrl_outb(*p & 0xff, a++); } else if (PXSEG(port)) - while (count--) *s++ = *(volatile unsigned char *)port; + while (count--) + ctrl_outb(ctrl_inb(port), a++); else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { bp = (__u8 *)PCI_IOMAP(port); - while (count--) *s++ = *bp; + while (count--) + ctrl_outb(*bp, a++); } else { p = (volatile unsigned short *)port2adr(port); - while (count--) *s++ = *p & 0xff; + while (count--) + ctrl_outb(*p & 0xff, a++); } } void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count) { + unsigned long a = (unsigned long)addr; volatile __u16 *p; - __u16 *s = addr; if (CHECK_AX88796L_PORT(port)) p = (volatile unsigned short *)port88796l(port, 1); @@ -245,46 +243,53 @@ void rts7751r2d_insw(unsigned long port, void *addr, unsigned long count) p = (volatile unsigned short *)PCI_IOMAP(port); else p = (volatile unsigned short *)port2adr(port); - while (count--) *s++ = *p; + while (count--) + ctrl_outw(*p, a++); } void rts7751r2d_insl(unsigned long port, void *addr, unsigned long count) { if (CHECK_AX88796L_PORT(port)) - maybebadio(insl, port); + maybebadio(port); else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { - volatile __u32 *p = (__u32 *)PCI_IOMAP(port); - __u32 *s = addr; + unsigned long a = (unsigned long)addr; - while (count--) *s++ = *p; + while (count--) { + ctrl_outl(ctrl_inl(PCI_IOMAP(port)), a); + a += 4; + } } else - maybebadio(insl, port); + maybebadio(port); } void rts7751r2d_outsb(unsigned long port, const void *addr, unsigned long count) { + unsigned long a = (unsigned long)addr; volatile __u8 *bp; volatile __u16 *p; - const __u8 *s = addr; if (CHECK_AX88796L_PORT(port)) { p = (volatile unsigned short *)port88796l(port, 0); - while (count--) *p = *s++; + while (count--) + *p = ctrl_inb(a++); } else if (PXSEG(port)) - while (count--) *(volatile unsigned char *)port = *s++; + while (count--) + ctrl_outb(a++, port); else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { bp = (__u8 *)PCI_IOMAP(port); - while (count--) *bp = *s++; + while (count--) + *bp = ctrl_inb(a++); } else { p = (volatile unsigned short *)port2adr(port); - while (count--) *p = *s++; + while (count--) + *p = ctrl_inb(a++); } } void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count) { + unsigned long a = (unsigned long)addr; volatile __u16 *p; - const __u16 *s = addr; if (CHECK_AX88796L_PORT(port)) p = (volatile unsigned short *)port88796l(port, 1); @@ -294,20 +299,26 @@ void rts7751r2d_outsw(unsigned long port, const void *addr, unsigned long count) p = (volatile unsigned short *)PCI_IOMAP(port); else p = (volatile unsigned short *)port2adr(port); - while (count--) *p = *s++; + + while (count--) { + ctrl_outw(*p, a); + a += 2; + } } void rts7751r2d_outsl(unsigned long port, const void *addr, unsigned long count) { if (CHECK_AX88796L_PORT(port)) - maybebadio(outsl, port); + maybebadio(port); else if (CHECK_SH7751_PCIIO(port) || shifted_port(port)) { - volatile __u32 *p = (__u32 *)PCI_IOMAP(port); - const __u32 *s = addr; + unsigned long a = (unsigned long)addr; - while (count--) *p = *s++; + while (count--) { + ctrl_outl(ctrl_inl(a), PCI_IOMAP(port)); + a += 4; + } } else - maybebadio(outsl, port); + maybebadio(port); } void *rts7751r2d_ioremap(unsigned long offset, unsigned long size) diff --git a/arch/sh/boards/renesas/rts7751r2d/led.c b/arch/sh/boards/renesas/rts7751r2d/led.c index cf35f90..e14a13d 100644 --- a/arch/sh/boards/renesas/rts7751r2d/led.c +++ b/arch/sh/boards/renesas/rts7751r2d/led.c @@ -53,12 +53,3 @@ void rts7751r2d_led(unsigned short value) ctrl_outw(value, PA_OUTPORT); } -void debug_led_disp(void) -{ - unsigned short value; - - value = (unsigned short)debug_counter++; - rts7751r2d_led(value); - if (value == 0xff) - debug_counter = 0; -} diff --git a/arch/sh/boards/renesas/rts7751r2d/mach.c b/arch/sh/boards/renesas/rts7751r2d/mach.c index 5ed9e97..175a93d 100644 --- a/arch/sh/boards/renesas/rts7751r2d/mach.c +++ b/arch/sh/boards/renesas/rts7751r2d/mach.c @@ -15,7 +15,7 @@ #include <asm/machvec.h> #include <asm/rtc.h> #include <asm/irq.h> -#include <asm/rts7751r2d/io.h> +#include <asm/mach/rts7751r2d.h> extern void heartbeat_rts7751r2d(void); extern void init_rts7751r2d_IRQ(void); @@ -54,7 +54,6 @@ struct sh_machine_vector mv_rts7751r2d __initmv = { .mv_outsl = rts7751r2d_outsl, .mv_ioremap = rts7751r2d_ioremap, - .mv_isa_port2addr = rts7751r2d_isa_port2addr, .mv_init_irq = init_rts7751r2d_IRQ, #ifdef CONFIG_HEARTBEAT .mv_heartbeat = heartbeat_rts7751r2d, |