diff options
author | Paul Mundt <lethal@linux-sh.org> | 2008-12-16 23:57:15 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2008-12-22 04:44:45 -0500 |
commit | 866ef8f48f2272ce8d84156c91964d730666ab33 (patch) | |
tree | 683761501449f87a85a9df966818a0824fe781a0 /arch/sh | |
parent | 0ef0e6ca426d28561b752e5f576932659295b928 (diff) |
sh: mach-edosk7705: Fix up edosk7705 so it all builds again.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/boards/mach-edosk7705/Makefile | 1 | ||||
-rw-r--r-- | arch/sh/boards/mach-edosk7705/io.c | 61 | ||||
-rw-r--r-- | arch/sh/boards/mach-edosk7705/setup.c | 9 | ||||
-rw-r--r-- | arch/sh/include/asm/machvec.h | 2 | ||||
-rw-r--r-- | arch/sh/include/mach-common/mach/edosk7705.h | 31 |
5 files changed, 24 insertions, 80 deletions
diff --git a/arch/sh/boards/mach-edosk7705/Makefile b/arch/sh/boards/mach-edosk7705/Makefile index 14bdd531f116..cd54acb51499 100644 --- a/arch/sh/boards/mach-edosk7705/Makefile +++ b/arch/sh/boards/mach-edosk7705/Makefile | |||
@@ -3,4 +3,3 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | obj-y := setup.o io.o | 5 | obj-y := setup.o io.o |
6 | |||
diff --git a/arch/sh/boards/mach-edosk7705/io.c b/arch/sh/boards/mach-edosk7705/io.c index 7d153e50a01b..5b9c57c43241 100644 --- a/arch/sh/boards/mach-edosk7705/io.c +++ b/arch/sh/boards/mach-edosk7705/io.c | |||
@@ -10,28 +10,24 @@ | |||
10 | 10 | ||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/types.h> | 12 | #include <linux/types.h> |
13 | #include <asm/io.h> | 13 | #include <linux/io.h> |
14 | #include <mach/edosk7705.h> | 14 | #include <mach/edosk7705.h> |
15 | #include <asm/addrspace.h> | 15 | #include <asm/addrspace.h> |
16 | 16 | ||
17 | #define SMC_IOADDR 0xA2000000 | 17 | #define SMC_IOADDR 0xA2000000 |
18 | 18 | ||
19 | #define maybebadio(name,port) \ | ||
20 | printk("bad PC-like io %s for port 0x%lx at 0x%08x\n", \ | ||
21 | #name, (port), (__u32) __builtin_return_address(0)) | ||
22 | |||
23 | /* Map the Ethernet addresses as if it is at 0x300 - 0x320 */ | 19 | /* Map the Ethernet addresses as if it is at 0x300 - 0x320 */ |
24 | unsigned long sh_edosk7705_isa_port2addr(unsigned long port) | 20 | static unsigned long sh_edosk7705_isa_port2addr(unsigned long port) |
25 | { | 21 | { |
26 | if (port >= 0x300 && port < 0x320) { | 22 | /* |
27 | /* SMC91C96 registers are 4 byte aligned rather than the | 23 | * SMC91C96 registers are 4 byte aligned rather than the |
28 | * usual 2 byte! | 24 | * usual 2 byte! |
29 | */ | 25 | */ |
30 | return SMC_IOADDR + ( (port - 0x300) * 2); | 26 | if (port >= 0x300 && port < 0x320) |
31 | } | 27 | return SMC_IOADDR + ((port - 0x300) * 2); |
32 | 28 | ||
33 | maybebadio(sh_edosk7705_isa_port2addr, port); | 29 | maybebadio(port); |
34 | return port; | 30 | return port; |
35 | } | 31 | } |
36 | 32 | ||
37 | /* Trying to read / write bytes on odd-byte boundaries to the Ethernet | 33 | /* Trying to read / write bytes on odd-byte boundaries to the Ethernet |
@@ -42,53 +38,34 @@ unsigned long sh_edosk7705_isa_port2addr(unsigned long port) | |||
42 | */ | 38 | */ |
43 | unsigned char sh_edosk7705_inb(unsigned long port) | 39 | unsigned char sh_edosk7705_inb(unsigned long port) |
44 | { | 40 | { |
45 | if (port >= 0x300 && port < 0x320 && port & 0x01) { | 41 | if (port >= 0x300 && port < 0x320 && port & 0x01) |
46 | return (volatile unsigned char)(generic_inw(port -1) >> 8); | 42 | return __raw_readw(port - 1) >> 8; |
47 | } | ||
48 | return *(volatile unsigned char *)sh_edosk7705_isa_port2addr(port); | ||
49 | } | ||
50 | 43 | ||
51 | unsigned int sh_edosk7705_inl(unsigned long port) | 44 | return __raw_readb(sh_edosk7705_isa_port2addr(port)); |
52 | { | ||
53 | return *(volatile unsigned long *)port; | ||
54 | } | 45 | } |
55 | 46 | ||
56 | void sh_edosk7705_outb(unsigned char value, unsigned long port) | 47 | void sh_edosk7705_outb(unsigned char value, unsigned long port) |
57 | { | 48 | { |
58 | if (port >= 0x300 && port < 0x320 && port & 0x01) { | 49 | if (port >= 0x300 && port < 0x320 && port & 0x01) { |
59 | generic_outw(((unsigned short)value << 8), port -1); | 50 | __raw_writew(((unsigned short)value << 8), port - 1); |
60 | return; | 51 | return; |
61 | } | 52 | } |
62 | *(volatile unsigned char *)sh_edosk7705_isa_port2addr(port) = value; | ||
63 | } | ||
64 | 53 | ||
65 | void sh_edosk7705_outl(unsigned int value, unsigned long port) | 54 | __raw_writeb(value, sh_edosk7705_isa_port2addr(port)); |
66 | { | ||
67 | *(volatile unsigned long *)port = value; | ||
68 | } | 55 | } |
69 | 56 | ||
70 | void sh_edosk7705_insb(unsigned long port, void *addr, unsigned long count) | 57 | void sh_edosk7705_insb(unsigned long port, void *addr, unsigned long count) |
71 | { | 58 | { |
72 | unsigned char *p = addr; | 59 | unsigned char *p = addr; |
73 | while (count--) *p++ = sh_edosk7705_inb(port); | ||
74 | } | ||
75 | 60 | ||
76 | void sh_edosk7705_insl(unsigned long port, void *addr, unsigned long count) | ||
77 | { | ||
78 | unsigned long *p = (unsigned long*)addr; | ||
79 | while (count--) | 61 | while (count--) |
80 | *p++ = *(volatile unsigned long *)port; | 62 | *p++ = sh_edosk7705_inb(port); |
81 | } | 63 | } |
82 | 64 | ||
83 | void sh_edosk7705_outsb(unsigned long port, const void *addr, unsigned long count) | 65 | void sh_edosk7705_outsb(unsigned long port, const void *addr, unsigned long count) |
84 | { | 66 | { |
85 | unsigned char *p = (unsigned char*)addr; | 67 | unsigned char *p = (unsigned char *)addr; |
86 | while (count--) sh_edosk7705_outb(*p++, port); | ||
87 | } | ||
88 | 68 | ||
89 | void sh_edosk7705_outsl(unsigned long port, const void *addr, unsigned long count) | 69 | while (count--) |
90 | { | 70 | sh_edosk7705_outb(*p++, port); |
91 | unsigned long *p = (unsigned long*)addr; | ||
92 | while (count--) sh_edosk7705_outl(*p++, port); | ||
93 | } | 71 | } |
94 | |||
diff --git a/arch/sh/boards/mach-edosk7705/setup.c b/arch/sh/boards/mach-edosk7705/setup.c index ab3f47bffdf3..d59225e26fb9 100644 --- a/arch/sh/boards/mach-edosk7705/setup.c +++ b/arch/sh/boards/mach-edosk7705/setup.c | |||
@@ -9,6 +9,7 @@ | |||
9 | * board by S. Dunn, 2003. | 9 | * board by S. Dunn, 2003. |
10 | */ | 10 | */ |
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/irq.h> | ||
12 | #include <asm/machvec.h> | 13 | #include <asm/machvec.h> |
13 | #include <mach/edosk7705.h> | 14 | #include <mach/edosk7705.h> |
14 | 15 | ||
@@ -26,18 +27,10 @@ static struct sh_machine_vector mv_edosk7705 __initmv = { | |||
26 | .mv_nr_irqs = 80, | 27 | .mv_nr_irqs = 80, |
27 | 28 | ||
28 | .mv_inb = sh_edosk7705_inb, | 29 | .mv_inb = sh_edosk7705_inb, |
29 | .mv_inl = sh_edosk7705_inl, | ||
30 | .mv_outb = sh_edosk7705_outb, | 30 | .mv_outb = sh_edosk7705_outb, |
31 | .mv_outl = sh_edosk7705_outl, | ||
32 | |||
33 | .mv_inl_p = sh_edosk7705_inl, | ||
34 | .mv_outl_p = sh_edosk7705_outl, | ||
35 | 31 | ||
36 | .mv_insb = sh_edosk7705_insb, | 32 | .mv_insb = sh_edosk7705_insb, |
37 | .mv_insl = sh_edosk7705_insl, | ||
38 | .mv_outsb = sh_edosk7705_outsb, | 33 | .mv_outsb = sh_edosk7705_outsb, |
39 | .mv_outsl = sh_edosk7705_outsl, | ||
40 | 34 | ||
41 | .mv_isa_port2addr = sh_edosk7705_isa_port2addr, | ||
42 | .mv_init_irq = sh_edosk7705_init_irq, | 35 | .mv_init_irq = sh_edosk7705_init_irq, |
43 | }; | 36 | }; |
diff --git a/arch/sh/include/asm/machvec.h b/arch/sh/include/asm/machvec.h index eec0d22750ba..64b1c16a0f03 100644 --- a/arch/sh/include/asm/machvec.h +++ b/arch/sh/include/asm/machvec.h | |||
@@ -14,8 +14,6 @@ | |||
14 | #include <linux/time.h> | 14 | #include <linux/time.h> |
15 | #include <asm/machtypes.h> | 15 | #include <asm/machtypes.h> |
16 | 16 | ||
17 | struct device; | ||
18 | |||
19 | struct sh_machine_vector { | 17 | struct sh_machine_vector { |
20 | void (*mv_setup)(char **cmdline_p); | 18 | void (*mv_setup)(char **cmdline_p); |
21 | const char *mv_name; | 19 | const char *mv_name; |
diff --git a/arch/sh/include/mach-common/mach/edosk7705.h b/arch/sh/include/mach-common/mach/edosk7705.h index 5bdc9d9be3de..efc43b323466 100644 --- a/arch/sh/include/mach-common/mach/edosk7705.h +++ b/arch/sh/include/mach-common/mach/edosk7705.h | |||
@@ -1,30 +1,7 @@ | |||
1 | /* | 1 | #ifndef __ASM_SH_EDOSK7705_H |
2 | * include/asm-sh/edosk7705.h | 2 | #define __ASM_SH_EDOSK7705_H |
3 | * | ||
4 | * Modified version of io_se.h for the EDOSK7705 specific functions. | ||
5 | * | ||
6 | * May be copied or modified under the terms of the GNU General Public | ||
7 | * License. See linux/COPYING for more information. | ||
8 | * | ||
9 | * IO functions for an Hitachi EDOSK7705 development board | ||
10 | */ | ||
11 | |||
12 | #ifndef __ASM_SH_EDOSK7705_IO_H | ||
13 | #define __ASM_SH_EDOSK7705_IO_H | ||
14 | 3 | ||
4 | #define __IO_PREFIX sh_edosk7705 | ||
15 | #include <asm/io_generic.h> | 5 | #include <asm/io_generic.h> |
16 | 6 | ||
17 | extern unsigned char sh_edosk7705_inb(unsigned long port); | 7 | #endif /* __ASM_SH_EDOSK7705_H */ |
18 | extern unsigned int sh_edosk7705_inl(unsigned long port); | ||
19 | |||
20 | extern void sh_edosk7705_outb(unsigned char value, unsigned long port); | ||
21 | extern void sh_edosk7705_outl(unsigned int value, unsigned long port); | ||
22 | |||
23 | extern void sh_edosk7705_insb(unsigned long port, void *addr, unsigned long count); | ||
24 | extern void sh_edosk7705_insl(unsigned long port, void *addr, unsigned long count); | ||
25 | extern void sh_edosk7705_outsb(unsigned long port, const void *addr, unsigned long count); | ||
26 | extern void sh_edosk7705_outsl(unsigned long port, const void *addr, unsigned long count); | ||
27 | |||
28 | extern unsigned long sh_edosk7705_isa_port2addr(unsigned long offset); | ||
29 | |||
30 | #endif /* __ASM_SH_EDOSK7705_IO_H */ | ||