sh: RTS7751R2D board updates.
authorPaul Mundt <lethal@linux-sh.org>
Wed, 27 Sep 2006 05:02:09 +0000 (14:02 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Wed, 27 Sep 2006 05:02:09 +0000 (14:02 +0900)
More of the same, trivial cleanups, and moving options to their
own board-specific Kconfig.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/Kconfig
arch/sh/boards/renesas/hs7751rvoip/Makefile
arch/sh/boards/renesas/hs7751rvoip/led.c [deleted file]
arch/sh/boards/renesas/rts7751r2d/Kconfig [new file with mode: 0644]
arch/sh/boards/renesas/rts7751r2d/io.c
arch/sh/boards/renesas/rts7751r2d/led.c
arch/sh/boards/renesas/rts7751r2d/mach.c

index cbf0d527e991e302353060ffb131ea7e76f8ed66..a66b9c44075f3df6979043a583c344472ad7a33a 100644 (file)
@@ -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)"
index bede2d54fd6c2dbf4136fb7fbdf17461d7f3a960..e626377c55eecc1e591fda6b2ee25523f3ac4139 100644 (file)
@@ -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 (file)
index b6608ff..0000000
+++ /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 (file)
index 0000000..7780d1f
--- /dev/null
@@ -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
+
index 123abbbc91e0c0b4dcec41827ed9a7c92814508f..9e7fa726a86d74e4f292192718abacc90ab3949b 100644 (file)
 
 #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)
 
 #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)
index cf35f90dfe0314a355a3d2af000e4571c8777c9b..e14a13d12d4ad228351b90ee957304275e30bda7 100644 (file)
@@ -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;
-}
index 5ed9e97ea19775c16afc15d591f2832778859815..175a93d726e83a0878929855a7adfddd03ec4ae0 100644 (file)
@@ -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,