diff options
author | Paul Mundt <lethal@linux-sh.org> | 2008-01-19 02:06:01 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2008-01-27 23:19:03 -0500 |
commit | a5350a9686efa65cbd2ad4677bcb9372c7ad05c7 (patch) | |
tree | 43a8cda02dcc5cd4ca6786374635566bf0e421ba /arch/sh/boards | |
parent | 427c727fd0637555a4bb6828c07bf36b9506ddde (diff) |
sh: Kill off dead HS771RVoIP board support.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/boards')
-rw-r--r-- | arch/sh/boards/renesas/hs7751rvoip/Kconfig | 12 | ||||
-rw-r--r-- | arch/sh/boards/renesas/hs7751rvoip/Makefile | 8 | ||||
-rw-r--r-- | arch/sh/boards/renesas/hs7751rvoip/io.c | 283 | ||||
-rw-r--r-- | arch/sh/boards/renesas/hs7751rvoip/irq.c | 116 | ||||
-rw-r--r-- | arch/sh/boards/renesas/hs7751rvoip/pci.c | 149 | ||||
-rw-r--r-- | arch/sh/boards/renesas/hs7751rvoip/setup.c | 105 |
6 files changed, 0 insertions, 673 deletions
diff --git a/arch/sh/boards/renesas/hs7751rvoip/Kconfig b/arch/sh/boards/renesas/hs7751rvoip/Kconfig deleted file mode 100644 index 1743be477be5..000000000000 --- a/arch/sh/boards/renesas/hs7751rvoip/Kconfig +++ /dev/null | |||
@@ -1,12 +0,0 @@ | |||
1 | if SH_HS7751RVOIP | ||
2 | |||
3 | menu "HS7751RVoIP options" | ||
4 | |||
5 | config HS7751RVOIP_CODEC | ||
6 | bool "Support VoIP Codec section" | ||
7 | help | ||
8 | Selecting this option will support CODEC section. | ||
9 | |||
10 | endmenu | ||
11 | |||
12 | endif | ||
diff --git a/arch/sh/boards/renesas/hs7751rvoip/Makefile b/arch/sh/boards/renesas/hs7751rvoip/Makefile deleted file mode 100644 index e626377c55ee..000000000000 --- a/arch/sh/boards/renesas/hs7751rvoip/Makefile +++ /dev/null | |||
@@ -1,8 +0,0 @@ | |||
1 | # | ||
2 | # Makefile for the HS7751RVoIP specific parts of the kernel | ||
3 | # | ||
4 | |||
5 | obj-y := setup.o io.o irq.o | ||
6 | |||
7 | obj-$(CONFIG_PCI) += pci.o | ||
8 | |||
diff --git a/arch/sh/boards/renesas/hs7751rvoip/io.c b/arch/sh/boards/renesas/hs7751rvoip/io.c deleted file mode 100644 index bb9aa0d62852..000000000000 --- a/arch/sh/boards/renesas/hs7751rvoip/io.c +++ /dev/null | |||
@@ -1,283 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/sh/boards/renesas/hs7751rvoip/io.c | ||
3 | * | ||
4 | * Copyright (C) 2001 Ian da Silva, Jeremy Siegel | ||
5 | * Based largely on io_se.c. | ||
6 | * | ||
7 | * I/O routine for Renesas Technology sales HS7751RVoIP | ||
8 | * | ||
9 | * Initial version only to support LAN access; some | ||
10 | * placeholder code from io_hs7751rvoip.c left in with the | ||
11 | * expectation of later SuperIO and PCMCIA access. | ||
12 | */ | ||
13 | #include <linux/kernel.h> | ||
14 | #include <linux/types.h> | ||
15 | #include <linux/module.h> | ||
16 | #include <linux/pci.h> | ||
17 | #include <asm/io.h> | ||
18 | #include <asm/hs7751rvoip.h> | ||
19 | #include <asm/addrspace.h> | ||
20 | |||
21 | extern void *area6_io8_base; /* Area 6 8bit I/O Base address */ | ||
22 | extern void *area5_io16_base; /* Area 5 16bit I/O Base address */ | ||
23 | |||
24 | /* | ||
25 | * The 7751R HS7751RVoIP uses the built-in PCI controller (PCIC) | ||
26 | * of the 7751R processor, and has a SuperIO accessible via the PCI. | ||
27 | * The board also includes a PCMCIA controller on its memory bus, | ||
28 | * like the other Solution Engine boards. | ||
29 | */ | ||
30 | |||
31 | #define CODEC_IO_BASE 0x1000 | ||
32 | #define CODEC_IOMAP(a) ((unsigned long)area6_io8_base + ((a) - CODEC_IO_BASE)) | ||
33 | |||
34 | static inline unsigned long port2adr(unsigned int port) | ||
35 | { | ||
36 | if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6) | ||
37 | if (port == 0x3f6) | ||
38 | return ((unsigned long)area5_io16_base + 0x0c); | ||
39 | else | ||
40 | return ((unsigned long)area5_io16_base + 0x800 + | ||
41 | ((port-0x1f0) << 1)); | ||
42 | else | ||
43 | maybebadio((unsigned long)port); | ||
44 | return port; | ||
45 | } | ||
46 | |||
47 | /* The 7751R HS7751RVoIP seems to have everything hooked */ | ||
48 | /* up pretty normally (nothing on high-bytes only...) so this */ | ||
49 | /* shouldn't be needed */ | ||
50 | static inline int shifted_port(unsigned long port) | ||
51 | { | ||
52 | /* For IDE registers, value is not shifted */ | ||
53 | if ((0x1f0 <= port && port < 0x1f8) || port == 0x3f6) | ||
54 | return 0; | ||
55 | else | ||
56 | return 1; | ||
57 | } | ||
58 | |||
59 | #if defined(CONFIG_HS7751RVOIP_CODEC) | ||
60 | #define codec_port(port) \ | ||
61 | ((CODEC_IO_BASE <= (port)) && ((port) < (CODEC_IO_BASE + 0x20))) | ||
62 | #else | ||
63 | #define codec_port(port) (0) | ||
64 | #endif | ||
65 | |||
66 | /* | ||
67 | * General outline: remap really low stuff [eventually] to SuperIO, | ||
68 | * stuff in PCI IO space (at or above window at pci.h:PCIBIOS_MIN_IO) | ||
69 | * is mapped through the PCI IO window. Stuff with high bits (PXSEG) | ||
70 | * should be way beyond the window, and is used w/o translation for | ||
71 | * compatibility. | ||
72 | */ | ||
73 | unsigned char hs7751rvoip_inb(unsigned long port) | ||
74 | { | ||
75 | if (PXSEG(port)) | ||
76 | return ctrl_inb(port); | ||
77 | else if (codec_port(port)) | ||
78 | return ctrl_inb(CODEC_IOMAP(port)); | ||
79 | else if (is_pci_ioaddr(port) || shifted_port(port)) | ||
80 | return ctrl_inb(pci_ioaddr(port)); | ||
81 | else | ||
82 | return ctrl_inw(port2adr(port)) & 0xff; | ||
83 | } | ||
84 | |||
85 | unsigned char hs7751rvoip_inb_p(unsigned long port) | ||
86 | { | ||
87 | unsigned char v; | ||
88 | |||
89 | if (PXSEG(port)) | ||
90 | v = ctrl_inb(port); | ||
91 | else if (codec_port(port)) | ||
92 | v = ctrl_inb(CODEC_IOMAP(port)); | ||
93 | else if (is_pci_ioaddr(port) || shifted_port(port)) | ||
94 | v = ctrl_inb(pci_ioaddr(port)); | ||
95 | else | ||
96 | v = ctrl_inw(port2adr(port)) & 0xff; | ||
97 | ctrl_delay(); | ||
98 | return v; | ||
99 | } | ||
100 | |||
101 | unsigned short hs7751rvoip_inw(unsigned long port) | ||
102 | { | ||
103 | if (PXSEG(port)) | ||
104 | return ctrl_inw(port); | ||
105 | else if (is_pci_ioaddr(port) || shifted_port(port)) | ||
106 | return ctrl_inw(pci_ioaddr(port)); | ||
107 | else | ||
108 | maybebadio(port); | ||
109 | return 0; | ||
110 | } | ||
111 | |||
112 | unsigned int hs7751rvoip_inl(unsigned long port) | ||
113 | { | ||
114 | if (PXSEG(port)) | ||
115 | return ctrl_inl(port); | ||
116 | else if (is_pci_ioaddr(port) || shifted_port(port)) | ||
117 | return ctrl_inl(pci_ioaddr(port)); | ||
118 | else | ||
119 | maybebadio(port); | ||
120 | return 0; | ||
121 | } | ||
122 | |||
123 | void hs7751rvoip_outb(unsigned char value, unsigned long port) | ||
124 | { | ||
125 | |||
126 | if (PXSEG(port)) | ||
127 | ctrl_outb(value, port); | ||
128 | else if (codec_port(port)) | ||
129 | ctrl_outb(value, CODEC_IOMAP(port)); | ||
130 | else if (is_pci_ioaddr(port) || shifted_port(port)) | ||
131 | ctrl_outb(value, pci_ioaddr(port)); | ||
132 | else | ||
133 | ctrl_outb(value, port2adr(port)); | ||
134 | } | ||
135 | |||
136 | void hs7751rvoip_outb_p(unsigned char value, unsigned long port) | ||
137 | { | ||
138 | if (PXSEG(port)) | ||
139 | ctrl_outb(value, port); | ||
140 | else if (codec_port(port)) | ||
141 | ctrl_outb(value, CODEC_IOMAP(port)); | ||
142 | else if (is_pci_ioaddr(port) || shifted_port(port)) | ||
143 | ctrl_outb(value, pci_ioaddr(port)); | ||
144 | else | ||
145 | ctrl_outw(value, port2adr(port)); | ||
146 | |||
147 | ctrl_delay(); | ||
148 | } | ||
149 | |||
150 | void hs7751rvoip_outw(unsigned short value, unsigned long port) | ||
151 | { | ||
152 | if (PXSEG(port)) | ||
153 | ctrl_outw(value, port); | ||
154 | else if (is_pci_ioaddr(port) || shifted_port(port)) | ||
155 | ctrl_outw(value, pci_ioaddr(port)); | ||
156 | else | ||
157 | maybebadio(port); | ||
158 | } | ||
159 | |||
160 | void hs7751rvoip_outl(unsigned int value, unsigned long port) | ||
161 | { | ||
162 | if (PXSEG(port)) | ||
163 | ctrl_outl(value, port); | ||
164 | else if (is_pci_ioaddr(port) || shifted_port(port)) | ||
165 | ctrl_outl(value, pci_ioaddr(port)); | ||
166 | else | ||
167 | maybebadio(port); | ||
168 | } | ||
169 | |||
170 | void hs7751rvoip_insb(unsigned long port, void *addr, unsigned long count) | ||
171 | { | ||
172 | u8 *buf = addr; | ||
173 | |||
174 | if (PXSEG(port)) | ||
175 | while (count--) | ||
176 | *buf++ = ctrl_inb(port); | ||
177 | else if (codec_port(port)) | ||
178 | while (count--) | ||
179 | *buf++ = ctrl_inb(CODEC_IOMAP(port)); | ||
180 | else if (is_pci_ioaddr(port) || shifted_port(port)) { | ||
181 | volatile u8 *bp = (volatile u8 *)pci_ioaddr(port); | ||
182 | |||
183 | while (count--) | ||
184 | *buf++ = *bp; | ||
185 | } else { | ||
186 | volatile u16 *p = (volatile u16 *)port2adr(port); | ||
187 | |||
188 | while (count--) | ||
189 | *buf++ = *p & 0xff; | ||
190 | } | ||
191 | } | ||
192 | |||
193 | void hs7751rvoip_insw(unsigned long port, void *addr, unsigned long count) | ||
194 | { | ||
195 | volatile u16 *p; | ||
196 | u16 *buf = addr; | ||
197 | |||
198 | if (PXSEG(port)) | ||
199 | p = (volatile u16 *)port; | ||
200 | else if (is_pci_ioaddr(port) || shifted_port(port)) | ||
201 | p = (volatile u16 *)pci_ioaddr(port); | ||
202 | else | ||
203 | p = (volatile u16 *)port2adr(port); | ||
204 | while (count--) | ||
205 | *buf++ = *p; | ||
206 | } | ||
207 | |||
208 | void hs7751rvoip_insl(unsigned long port, void *addr, unsigned long count) | ||
209 | { | ||
210 | |||
211 | if (is_pci_ioaddr(port) || shifted_port(port)) { | ||
212 | volatile u32 *p = (volatile u32 *)pci_ioaddr(port); | ||
213 | u32 *buf = addr; | ||
214 | |||
215 | while (count--) | ||
216 | *buf++ = *p; | ||
217 | } else | ||
218 | maybebadio(port); | ||
219 | } | ||
220 | |||
221 | void hs7751rvoip_outsb(unsigned long port, const void *addr, unsigned long count) | ||
222 | { | ||
223 | const u8 *buf = addr; | ||
224 | |||
225 | if (PXSEG(port)) | ||
226 | while (count--) | ||
227 | ctrl_outb(*buf++, port); | ||
228 | else if (codec_port(port)) | ||
229 | while (count--) | ||
230 | ctrl_outb(*buf++, CODEC_IOMAP(port)); | ||
231 | else if (is_pci_ioaddr(port) || shifted_port(port)) { | ||
232 | volatile u8 *bp = (volatile u8 *)pci_ioaddr(port); | ||
233 | |||
234 | while (count--) | ||
235 | *bp = *buf++; | ||
236 | } else { | ||
237 | volatile u16 *p = (volatile u16 *)port2adr(port); | ||
238 | |||
239 | while (count--) | ||
240 | *p = *buf++; | ||
241 | } | ||
242 | } | ||
243 | |||
244 | void hs7751rvoip_outsw(unsigned long port, const void *addr, unsigned long count) | ||
245 | { | ||
246 | volatile u16 *p; | ||
247 | const u16 *buf = addr; | ||
248 | |||
249 | if (PXSEG(port)) | ||
250 | p = (volatile u16 *)port; | ||
251 | else if (is_pci_ioaddr(port) || shifted_port(port)) | ||
252 | p = (volatile u16 *)pci_ioaddr(port); | ||
253 | else | ||
254 | p = (volatile u16 *)port2adr(port); | ||
255 | |||
256 | while (count--) | ||
257 | *p = *buf++; | ||
258 | } | ||
259 | |||
260 | void hs7751rvoip_outsl(unsigned long port, const void *addr, unsigned long count) | ||
261 | { | ||
262 | const u32 *buf = addr; | ||
263 | |||
264 | if (is_pci_ioaddr(port) || shifted_port(port)) { | ||
265 | volatile u32 *p = (volatile u32 *)pci_ioaddr(port); | ||
266 | |||
267 | while (count--) | ||
268 | *p = *buf++; | ||
269 | } else | ||
270 | maybebadio(port); | ||
271 | } | ||
272 | |||
273 | void __iomem *hs7751rvoip_ioport_map(unsigned long port, unsigned int size) | ||
274 | { | ||
275 | if (PXSEG(port)) | ||
276 | return (void __iomem *)port; | ||
277 | else if (unlikely(codec_port(port) && (size == 1))) | ||
278 | return (void __iomem *)CODEC_IOMAP(port); | ||
279 | else if (is_pci_ioaddr(port)) | ||
280 | return (void __iomem *)pci_ioaddr(port); | ||
281 | |||
282 | return (void __iomem *)port2adr(port); | ||
283 | } | ||
diff --git a/arch/sh/boards/renesas/hs7751rvoip/irq.c b/arch/sh/boards/renesas/hs7751rvoip/irq.c deleted file mode 100644 index e55c6686b21f..000000000000 --- a/arch/sh/boards/renesas/hs7751rvoip/irq.c +++ /dev/null | |||
@@ -1,116 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/sh/boards/renesas/hs7751rvoip/irq.c | ||
3 | * | ||
4 | * Copyright (C) 2000 Kazumoto Kojima | ||
5 | * | ||
6 | * Renesas Technology Sales HS7751RVoIP Support. | ||
7 | * | ||
8 | * Modified for HS7751RVoIP by | ||
9 | * Atom Create Engineering Co., Ltd. 2002. | ||
10 | * Lineo uSolutions, Inc. 2003. | ||
11 | */ | ||
12 | |||
13 | #include <linux/init.h> | ||
14 | #include <linux/irq.h> | ||
15 | #include <linux/interrupt.h> | ||
16 | #include <asm/io.h> | ||
17 | #include <asm/irq.h> | ||
18 | #include <asm/hs7751rvoip.h> | ||
19 | |||
20 | static int mask_pos[] = {8, 9, 10, 11, 12, 13, 0, 1, 2, 3, 4, 5, 6, 7}; | ||
21 | |||
22 | static void enable_hs7751rvoip_irq(unsigned int irq); | ||
23 | static void disable_hs7751rvoip_irq(unsigned int irq); | ||
24 | |||
25 | /* shutdown is same as "disable" */ | ||
26 | #define shutdown_hs7751rvoip_irq disable_hs7751rvoip_irq | ||
27 | |||
28 | static void ack_hs7751rvoip_irq(unsigned int irq); | ||
29 | static void end_hs7751rvoip_irq(unsigned int irq); | ||
30 | |||
31 | static unsigned int startup_hs7751rvoip_irq(unsigned int irq) | ||
32 | { | ||
33 | enable_hs7751rvoip_irq(irq); | ||
34 | return 0; /* never anything pending */ | ||
35 | } | ||
36 | |||
37 | static void disable_hs7751rvoip_irq(unsigned int irq) | ||
38 | { | ||
39 | unsigned short val; | ||
40 | unsigned short mask = 0xffff ^ (0x0001 << mask_pos[irq]); | ||
41 | |||
42 | /* Set the priority in IPR to 0 */ | ||
43 | val = ctrl_inw(IRLCNTR3); | ||
44 | val &= mask; | ||
45 | ctrl_outw(val, IRLCNTR3); | ||
46 | } | ||
47 | |||
48 | static void enable_hs7751rvoip_irq(unsigned int irq) | ||
49 | { | ||
50 | unsigned short val; | ||
51 | unsigned short value = (0x0001 << mask_pos[irq]); | ||
52 | |||
53 | /* Set priority in IPR back to original value */ | ||
54 | val = ctrl_inw(IRLCNTR3); | ||
55 | val |= value; | ||
56 | ctrl_outw(val, IRLCNTR3); | ||
57 | } | ||
58 | |||
59 | static void ack_hs7751rvoip_irq(unsigned int irq) | ||
60 | { | ||
61 | disable_hs7751rvoip_irq(irq); | ||
62 | } | ||
63 | |||
64 | static void end_hs7751rvoip_irq(unsigned int irq) | ||
65 | { | ||
66 | if (!(irq_desc[irq].status & (IRQ_DISABLED|IRQ_INPROGRESS))) | ||
67 | enable_hs7751rvoip_irq(irq); | ||
68 | } | ||
69 | |||
70 | static struct hw_interrupt_type hs7751rvoip_irq_type = { | ||
71 | .typename = "HS7751RVoIP IRQ", | ||
72 | .startup = startup_hs7751rvoip_irq, | ||
73 | .shutdown = shutdown_hs7751rvoip_irq, | ||
74 | .enable = enable_hs7751rvoip_irq, | ||
75 | .disable = disable_hs7751rvoip_irq, | ||
76 | .ack = ack_hs7751rvoip_irq, | ||
77 | .end = end_hs7751rvoip_irq, | ||
78 | }; | ||
79 | |||
80 | static void make_hs7751rvoip_irq(unsigned int irq) | ||
81 | { | ||
82 | disable_irq_nosync(irq); | ||
83 | irq_desc[irq].chip = &hs7751rvoip_irq_type; | ||
84 | disable_hs7751rvoip_irq(irq); | ||
85 | } | ||
86 | |||
87 | /* | ||
88 | * Initialize IRQ setting | ||
89 | */ | ||
90 | void __init init_hs7751rvoip_IRQ(void) | ||
91 | { | ||
92 | int i; | ||
93 | |||
94 | /* IRL0=ON HOOK1 | ||
95 | * IRL1=OFF HOOK1 | ||
96 | * IRL2=ON HOOK2 | ||
97 | * IRL3=OFF HOOK2 | ||
98 | * IRL4=Ringing Detection | ||
99 | * IRL5=CODEC | ||
100 | * IRL6=Ethernet | ||
101 | * IRL7=Ethernet Hub | ||
102 | * IRL8=USB Communication | ||
103 | * IRL9=USB Connection | ||
104 | * IRL10=USB DMA | ||
105 | * IRL11=CF Card | ||
106 | * IRL12=PCMCIA | ||
107 | * IRL13=PCI Slot | ||
108 | */ | ||
109 | ctrl_outw(0x9876, IRLCNTR1); | ||
110 | ctrl_outw(0xdcba, IRLCNTR2); | ||
111 | ctrl_outw(0x0050, IRLCNTR4); | ||
112 | ctrl_outw(0x4321, IRLCNTR5); | ||
113 | |||
114 | for (i=0; i<14; i++) | ||
115 | make_hs7751rvoip_irq(i); | ||
116 | } | ||
diff --git a/arch/sh/boards/renesas/hs7751rvoip/pci.c b/arch/sh/boards/renesas/hs7751rvoip/pci.c deleted file mode 100644 index 1c0ddee30d21..000000000000 --- a/arch/sh/boards/renesas/hs7751rvoip/pci.c +++ /dev/null | |||
@@ -1,149 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/sh/boards/renesas/hs7751rvoip/pci.c | ||
3 | * | ||
4 | * Author: Ian DaSilva (idasilva@mvista.com) | ||
5 | * | ||
6 | * Highly leveraged from pci-bigsur.c, written by Dustin McIntire. | ||
7 | * | ||
8 | * May be copied or modified under the terms of the GNU General Public | ||
9 | * License. See linux/COPYING for more information. | ||
10 | * | ||
11 | * PCI initialization for the Renesas SH7751R HS7751RVoIP board | ||
12 | */ | ||
13 | |||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/types.h> | ||
16 | #include <linux/init.h> | ||
17 | #include <linux/delay.h> | ||
18 | #include <linux/pci.h> | ||
19 | #include <linux/module.h> | ||
20 | |||
21 | #include <asm/io.h> | ||
22 | #include "../../../drivers/pci/pci-sh7751.h" | ||
23 | #include <asm/hs7751rvoip/hs7751rvoip.h> | ||
24 | |||
25 | #define PCIMCR_MRSET_OFF 0xBFFFFFFF | ||
26 | #define PCIMCR_RFSH_OFF 0xFFFFFFFB | ||
27 | |||
28 | /* | ||
29 | * Only long word accesses of the PCIC's internal local registers and the | ||
30 | * configuration registers from the CPU is supported. | ||
31 | */ | ||
32 | #define PCIC_WRITE(x,v) writel((v), PCI_REG(x)) | ||
33 | #define PCIC_READ(x) readl(PCI_REG(x)) | ||
34 | |||
35 | /* | ||
36 | * Description: This function sets up and initializes the pcic, sets | ||
37 | * up the BARS, maps the DRAM into the address space etc, etc. | ||
38 | */ | ||
39 | int __init pcibios_init_platform(void) | ||
40 | { | ||
41 | unsigned long bcr1, wcr1, wcr2, wcr3, mcr; | ||
42 | unsigned short bcr2, bcr3; | ||
43 | |||
44 | /* | ||
45 | * Initialize the slave bus controller on the pcic. The values used | ||
46 | * here should not be hardcoded, but they should be taken from the bsc | ||
47 | * on the processor, to make this function as generic as possible. | ||
48 | * (i.e. Another sbc may usr different SDRAM timing settings -- in order | ||
49 | * for the pcic to work, its settings need to be exactly the same.) | ||
50 | */ | ||
51 | bcr1 = (*(volatile unsigned long *)(SH7751_BCR1)); | ||
52 | bcr2 = (*(volatile unsigned short *)(SH7751_BCR2)); | ||
53 | bcr3 = (*(volatile unsigned short *)(SH7751_BCR3)); | ||
54 | wcr1 = (*(volatile unsigned long *)(SH7751_WCR1)); | ||
55 | wcr2 = (*(volatile unsigned long *)(SH7751_WCR2)); | ||
56 | wcr3 = (*(volatile unsigned long *)(SH7751_WCR3)); | ||
57 | mcr = (*(volatile unsigned long *)(SH7751_MCR)); | ||
58 | |||
59 | bcr1 = bcr1 | 0x00080000; /* Enable Bit 19, BREQEN */ | ||
60 | (*(volatile unsigned long *)(SH7751_BCR1)) = bcr1; | ||
61 | |||
62 | bcr1 = bcr1 | 0x40080000; /* Enable Bit 19 BREQEN, set PCIC to slave */ | ||
63 | PCIC_WRITE(SH7751_PCIBCR1, bcr1); /* PCIC BCR1 */ | ||
64 | PCIC_WRITE(SH7751_PCIBCR2, bcr2); /* PCIC BCR2 */ | ||
65 | PCIC_WRITE(SH7751_PCIBCR3, bcr3); /* PCIC BCR3 */ | ||
66 | PCIC_WRITE(SH7751_PCIWCR1, wcr1); /* PCIC WCR1 */ | ||
67 | PCIC_WRITE(SH7751_PCIWCR2, wcr2); /* PCIC WCR2 */ | ||
68 | PCIC_WRITE(SH7751_PCIWCR3, wcr3); /* PCIC WCR3 */ | ||
69 | mcr = (mcr & PCIMCR_MRSET_OFF) & PCIMCR_RFSH_OFF; | ||
70 | PCIC_WRITE(SH7751_PCIMCR, mcr); /* PCIC MCR */ | ||
71 | |||
72 | /* Enable all interrupts, so we know what to fix */ | ||
73 | PCIC_WRITE(SH7751_PCIINTM, 0x0000c3ff); | ||
74 | PCIC_WRITE(SH7751_PCIAINTM, 0x0000380f); | ||
75 | |||
76 | /* Set up standard PCI config registers */ | ||
77 | PCIC_WRITE(SH7751_PCICONF1, 0xFB900047); /* Bus Master, Mem & I/O access */ | ||
78 | PCIC_WRITE(SH7751_PCICONF2, 0x00000000); /* PCI Class code & Revision ID */ | ||
79 | PCIC_WRITE(SH7751_PCICONF4, 0xab000001); /* PCI I/O address (local regs) */ | ||
80 | PCIC_WRITE(SH7751_PCICONF5, 0x0c000000); /* PCI MEM address (local RAM) */ | ||
81 | PCIC_WRITE(SH7751_PCICONF6, 0xd0000000); /* PCI MEM address (unused) */ | ||
82 | PCIC_WRITE(SH7751_PCICONF11, 0x35051054); /* PCI Subsystem ID & Vendor ID */ | ||
83 | PCIC_WRITE(SH7751_PCILSR0, 0x03f00000); /* MEM (full 64M exposed) */ | ||
84 | PCIC_WRITE(SH7751_PCILSR1, 0x00000000); /* MEM (unused) */ | ||
85 | PCIC_WRITE(SH7751_PCILAR0, 0x0c000000); /* MEM (direct map from PCI) */ | ||
86 | PCIC_WRITE(SH7751_PCILAR1, 0x00000000); /* MEM (unused) */ | ||
87 | |||
88 | /* Now turn it on... */ | ||
89 | PCIC_WRITE(SH7751_PCICR, 0xa5000001); | ||
90 | |||
91 | /* | ||
92 | * Set PCIMBR and PCIIOBR here, assuming a single window | ||
93 | * (16M MEM, 256K IO) is enough. If a larger space is | ||
94 | * needed, the readx/writex and inx/outx functions will | ||
95 | * have to do more (e.g. setting registers for each call). | ||
96 | */ | ||
97 | |||
98 | /* | ||
99 | * Set the MBR so PCI address is one-to-one with window, | ||
100 | * meaning all calls go straight through... use ifdef to | ||
101 | * catch erroneous assumption. | ||
102 | */ | ||
103 | BUG_ON(PCIBIOS_MIN_MEM != SH7751_PCI_MEMORY_BASE); | ||
104 | |||
105 | PCIC_WRITE(SH7751_PCIMBR, PCIBIOS_MIN_MEM); | ||
106 | |||
107 | /* Set IOBR for window containing area specified in pci.h */ | ||
108 | PCIC_WRITE(SH7751_PCIIOBR, (PCIBIOS_MIN_IO & SH7751_PCIIOBR_MASK)); | ||
109 | |||
110 | /* All done, may as well say so... */ | ||
111 | printk("SH7751R PCI: Finished initialization of the PCI controller\n"); | ||
112 | |||
113 | return 1; | ||
114 | } | ||
115 | |||
116 | int __init pcibios_map_platform_irq(u8 slot, u8 pin) | ||
117 | { | ||
118 | switch (slot) { | ||
119 | case 0: return IRQ_PCISLOT; /* PCI Extend slot */ | ||
120 | case 1: return IRQ_PCMCIA; /* PCI Cardbus Bridge */ | ||
121 | case 2: return IRQ_PCIETH; /* Realtek Ethernet controller */ | ||
122 | case 3: return IRQ_PCIHUB; /* Realtek Ethernet Hub controller */ | ||
123 | default: | ||
124 | printk("PCI: Bad IRQ mapping request for slot %d\n", slot); | ||
125 | return -1; | ||
126 | } | ||
127 | } | ||
128 | |||
129 | static struct resource sh7751_io_resource = { | ||
130 | .name = "SH7751_IO", | ||
131 | .start = 0x4000, | ||
132 | .end = 0x4000 + SH7751_PCI_IO_SIZE - 1, | ||
133 | .flags = IORESOURCE_IO | ||
134 | }; | ||
135 | |||
136 | static struct resource sh7751_mem_resource = { | ||
137 | .name = "SH7751_mem", | ||
138 | .start = SH7751_PCI_MEMORY_BASE, | ||
139 | .end = SH7751_PCI_MEMORY_BASE + SH7751_PCI_MEM_SIZE - 1, | ||
140 | .flags = IORESOURCE_MEM | ||
141 | }; | ||
142 | |||
143 | extern struct pci_ops sh7751_pci_ops; | ||
144 | |||
145 | struct pci_channel board_pci_channels[] = { | ||
146 | { &sh7751_pci_ops, &sh7751_io_resource, &sh7751_mem_resource, 0, 0xff }, | ||
147 | { NULL, NULL, NULL, 0, 0 }, | ||
148 | }; | ||
149 | EXPORT_SYMBOL(board_pci_channels); | ||
diff --git a/arch/sh/boards/renesas/hs7751rvoip/setup.c b/arch/sh/boards/renesas/hs7751rvoip/setup.c deleted file mode 100644 index c05625975f2c..000000000000 --- a/arch/sh/boards/renesas/hs7751rvoip/setup.c +++ /dev/null | |||
@@ -1,105 +0,0 @@ | |||
1 | /* | ||
2 | * Renesas Technology Sales HS7751RVoIP Support. | ||
3 | * | ||
4 | * Copyright (C) 2000 Kazumoto Kojima | ||
5 | * | ||
6 | * Modified for HS7751RVoIP by | ||
7 | * Atom Create Engineering Co., Ltd. 2002. | ||
8 | * Lineo uSolutions, Inc. 2003. | ||
9 | */ | ||
10 | #include <linux/init.h> | ||
11 | #include <linux/irq.h> | ||
12 | #include <linux/mm.h> | ||
13 | #include <linux/pm.h> | ||
14 | #include <asm/hs7751rvoip.h> | ||
15 | #include <asm/io.h> | ||
16 | #include <asm/machvec.h> | ||
17 | |||
18 | static void hs7751rvoip_power_off(void) | ||
19 | { | ||
20 | ctrl_outw(ctrl_inw(PA_OUTPORTR) & 0xffdf, PA_OUTPORTR); | ||
21 | } | ||
22 | |||
23 | void *area5_io8_base; | ||
24 | void *area6_io8_base; | ||
25 | void *area5_io16_base; | ||
26 | void *area6_io16_base; | ||
27 | |||
28 | static int __init hs7751rvoip_cf_init(void) | ||
29 | { | ||
30 | pgprot_t prot; | ||
31 | unsigned long paddrbase; | ||
32 | |||
33 | /* open I/O area window */ | ||
34 | paddrbase = virt_to_phys((void *)(PA_AREA5_IO+0x00000800)); | ||
35 | prot = PAGE_KERNEL_PCC(1, _PAGE_PCC_COM16); | ||
36 | area5_io16_base = p3_ioremap(paddrbase, PAGE_SIZE, prot.pgprot); | ||
37 | if (!area5_io16_base) { | ||
38 | printk("allocate_cf_area : can't open CF I/O window!\n"); | ||
39 | return -ENOMEM; | ||
40 | } | ||
41 | |||
42 | /* XXX : do we need attribute and common-memory area also? */ | ||
43 | |||
44 | paddrbase = virt_to_phys((void *)PA_AREA6_IO); | ||
45 | #if defined(CONFIG_HS7751RVOIP_CODEC) | ||
46 | prot = PAGE_KERNEL_PCC(0, _PAGE_PCC_COM8); | ||
47 | #else | ||
48 | prot = PAGE_KERNEL_PCC(0, _PAGE_PCC_IO8); | ||
49 | #endif | ||
50 | area6_io8_base = p3_ioremap(paddrbase, PAGE_SIZE, prot.pgprot); | ||
51 | if (!area6_io8_base) { | ||
52 | printk("allocate_cf_area : can't open CODEC I/O 8bit window!\n"); | ||
53 | return -ENOMEM; | ||
54 | } | ||
55 | prot = PAGE_KERNEL_PCC(0, _PAGE_PCC_IO16); | ||
56 | area6_io16_base = p3_ioremap(paddrbase, PAGE_SIZE, prot.pgprot); | ||
57 | if (!area6_io16_base) { | ||
58 | printk("allocate_cf_area : can't open CODEC I/O 16bit window!\n"); | ||
59 | return -ENOMEM; | ||
60 | } | ||
61 | |||
62 | return 0; | ||
63 | } | ||
64 | device_initcall(hs7751rvoip_cf_init); | ||
65 | |||
66 | /* | ||
67 | * Initialize the board | ||
68 | */ | ||
69 | static void __init hs7751rvoip_setup(char **cmdline_p) | ||
70 | { | ||
71 | ctrl_outb(0xf0, PA_OUTPORTR); | ||
72 | pm_power_off = hs7751rvoip_power_off; | ||
73 | |||
74 | printk(KERN_INFO "Renesas Technology Sales HS7751RVoIP-2 support.\n"); | ||
75 | } | ||
76 | |||
77 | static struct sh_machine_vector mv_hs7751rvoip __initmv = { | ||
78 | .mv_name = "HS7751RVoIP", | ||
79 | .mv_setup = hs7751rvoip_setup, | ||
80 | .mv_nr_irqs = 72, | ||
81 | |||
82 | .mv_inb = hs7751rvoip_inb, | ||
83 | .mv_inw = hs7751rvoip_inw, | ||
84 | .mv_inl = hs7751rvoip_inl, | ||
85 | .mv_outb = hs7751rvoip_outb, | ||
86 | .mv_outw = hs7751rvoip_outw, | ||
87 | .mv_outl = hs7751rvoip_outl, | ||
88 | |||
89 | .mv_inb_p = hs7751rvoip_inb_p, | ||
90 | .mv_inw_p = hs7751rvoip_inw, | ||
91 | .mv_inl_p = hs7751rvoip_inl, | ||
92 | .mv_outb_p = hs7751rvoip_outb_p, | ||
93 | .mv_outw_p = hs7751rvoip_outw, | ||
94 | .mv_outl_p = hs7751rvoip_outl, | ||
95 | |||
96 | .mv_insb = hs7751rvoip_insb, | ||
97 | .mv_insw = hs7751rvoip_insw, | ||
98 | .mv_insl = hs7751rvoip_insl, | ||
99 | .mv_outsb = hs7751rvoip_outsb, | ||
100 | .mv_outsw = hs7751rvoip_outsw, | ||
101 | .mv_outsl = hs7751rvoip_outsl, | ||
102 | |||
103 | .mv_init_irq = init_hs7751rvoip_IRQ, | ||
104 | .mv_ioport_map = hs7751rvoip_ioport_map, | ||
105 | }; | ||