diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2009-02-12 10:00:21 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-02-19 06:30:27 -0500 |
commit | 7db21712aeb7c9693f7bc554923b35c35303a067 (patch) | |
tree | 410b1fd2e840e46760129b09a2dce3668b572168 /arch/arm/mach-realview | |
parent | 6be62ba215059258b68072d4553f765f9b34f3d1 (diff) |
[ARM] 5397/1: RealView: Add support for the ISP1761 USB chip
This patch adds the platform_device and resource structures for the USB
ISP1761 chip, usable with the in-kernel isp1760 driver.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mach-realview')
-rw-r--r-- | arch/arm/mach-realview/core.c | 11 | ||||
-rw-r--r-- | arch/arm/mach-realview/core.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-realview/realview_eb.c | 16 | ||||
-rw-r--r-- | arch/arm/mach-realview/realview_pb1176.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-realview/realview_pb11mp.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-realview/realview_pba8.c | 14 |
6 files changed, 70 insertions, 0 deletions
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c index 51972ecfc506..d6766685cfc7 100644 --- a/arch/arm/mach-realview/core.c +++ b/arch/arm/mach-realview/core.c | |||
@@ -151,6 +151,17 @@ int realview_eth_register(const char *name, struct resource *res) | |||
151 | return platform_device_register(&realview_eth_device); | 151 | return platform_device_register(&realview_eth_device); |
152 | } | 152 | } |
153 | 153 | ||
154 | struct platform_device realview_usb_device = { | ||
155 | .name = "isp1760", | ||
156 | .num_resources = 2, | ||
157 | }; | ||
158 | |||
159 | int realview_usb_register(struct resource *res) | ||
160 | { | ||
161 | realview_usb_device.resource = res; | ||
162 | return platform_device_register(&realview_usb_device); | ||
163 | } | ||
164 | |||
154 | static struct pata_platform_info pata_platform_data = { | 165 | static struct pata_platform_info pata_platform_data = { |
155 | .ioport_shift = 1, | 166 | .ioport_shift = 1, |
156 | }; | 167 | }; |
diff --git a/arch/arm/mach-realview/core.h b/arch/arm/mach-realview/core.h index 0ba1bfb1fe6b..21c08637683b 100644 --- a/arch/arm/mach-realview/core.h +++ b/arch/arm/mach-realview/core.h | |||
@@ -63,5 +63,6 @@ extern void realview_leds_event(led_event_t ledevt); | |||
63 | extern void realview_timer_init(unsigned int timer_irq); | 63 | extern void realview_timer_init(unsigned int timer_irq); |
64 | extern int realview_flash_register(struct resource *res, u32 num); | 64 | extern int realview_flash_register(struct resource *res, u32 num); |
65 | extern int realview_eth_register(const char *name, struct resource *res); | 65 | extern int realview_eth_register(const char *name, struct resource *res); |
66 | extern int realview_usb_register(struct resource *res); | ||
66 | 67 | ||
67 | #endif | 68 | #endif |
diff --git a/arch/arm/mach-realview/realview_eb.c b/arch/arm/mach-realview/realview_eb.c index bed39ed97613..c20fbef122b3 100644 --- a/arch/arm/mach-realview/realview_eb.c +++ b/arch/arm/mach-realview/realview_eb.c | |||
@@ -264,6 +264,19 @@ static int eth_device_register(void) | |||
264 | return realview_eth_register(name, realview_eb_eth_resources); | 264 | return realview_eth_register(name, realview_eb_eth_resources); |
265 | } | 265 | } |
266 | 266 | ||
267 | static struct resource realview_eb_isp1761_resources[] = { | ||
268 | [0] = { | ||
269 | .start = REALVIEW_EB_USB_BASE, | ||
270 | .end = REALVIEW_EB_USB_BASE + SZ_128K - 1, | ||
271 | .flags = IORESOURCE_MEM, | ||
272 | }, | ||
273 | [1] = { | ||
274 | .start = IRQ_EB_USB, | ||
275 | .end = IRQ_EB_USB, | ||
276 | .flags = IORESOURCE_IRQ, | ||
277 | }, | ||
278 | }; | ||
279 | |||
267 | static void __init gic_init_irq(void) | 280 | static void __init gic_init_irq(void) |
268 | { | 281 | { |
269 | if (core_tile_eb11mp() || core_tile_a9mp()) { | 282 | if (core_tile_eb11mp() || core_tile_a9mp()) { |
@@ -323,6 +336,8 @@ static void realview_eb11mp_fixup(void) | |||
323 | /* platform devices */ | 336 | /* platform devices */ |
324 | realview_eb_eth_resources[1].start = IRQ_EB11MP_ETH; | 337 | realview_eb_eth_resources[1].start = IRQ_EB11MP_ETH; |
325 | realview_eb_eth_resources[1].end = IRQ_EB11MP_ETH; | 338 | realview_eb_eth_resources[1].end = IRQ_EB11MP_ETH; |
339 | realview_eb_isp1761_resources[1].start = IRQ_EB11MP_USB; | ||
340 | realview_eb_isp1761_resources[1].end = IRQ_EB11MP_USB; | ||
326 | } | 341 | } |
327 | 342 | ||
328 | static void __init realview_eb_timer_init(void) | 343 | static void __init realview_eb_timer_init(void) |
@@ -366,6 +381,7 @@ static void __init realview_eb_init(void) | |||
366 | realview_flash_register(&realview_eb_flash_resource, 1); | 381 | realview_flash_register(&realview_eb_flash_resource, 1); |
367 | platform_device_register(&realview_i2c_device); | 382 | platform_device_register(&realview_i2c_device); |
368 | eth_device_register(); | 383 | eth_device_register(); |
384 | realview_usb_register(realview_eb_isp1761_resources); | ||
369 | 385 | ||
370 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { | 386 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { |
371 | struct amba_device *d = amba_devs[i]; | 387 | struct amba_device *d = amba_devs[i]; |
diff --git a/arch/arm/mach-realview/realview_pb1176.c b/arch/arm/mach-realview/realview_pb1176.c index d9d684d29e92..a64b84a7a3df 100644 --- a/arch/arm/mach-realview/realview_pb1176.c +++ b/arch/arm/mach-realview/realview_pb1176.c | |||
@@ -222,6 +222,19 @@ static struct resource realview_pb1176_smsc911x_resources[] = { | |||
222 | }, | 222 | }, |
223 | }; | 223 | }; |
224 | 224 | ||
225 | static struct resource realview_pb1176_isp1761_resources[] = { | ||
226 | [0] = { | ||
227 | .start = REALVIEW_PB1176_USB_BASE, | ||
228 | .end = REALVIEW_PB1176_USB_BASE + SZ_128K - 1, | ||
229 | .flags = IORESOURCE_MEM, | ||
230 | }, | ||
231 | [1] = { | ||
232 | .start = IRQ_PB1176_USB, | ||
233 | .end = IRQ_PB1176_USB, | ||
234 | .flags = IORESOURCE_IRQ, | ||
235 | }, | ||
236 | }; | ||
237 | |||
225 | static void __init gic_init_irq(void) | 238 | static void __init gic_init_irq(void) |
226 | { | 239 | { |
227 | /* ARM1176 DevChip GIC, primary */ | 240 | /* ARM1176 DevChip GIC, primary */ |
@@ -261,6 +274,7 @@ static void __init realview_pb1176_init(void) | |||
261 | realview_flash_register(&realview_pb1176_flash_resource, 1); | 274 | realview_flash_register(&realview_pb1176_flash_resource, 1); |
262 | realview_eth_register(NULL, realview_pb1176_smsc911x_resources); | 275 | realview_eth_register(NULL, realview_pb1176_smsc911x_resources); |
263 | platform_device_register(&realview_i2c_device); | 276 | platform_device_register(&realview_i2c_device); |
277 | realview_usb_register(realview_pb1176_isp1761_resources); | ||
264 | 278 | ||
265 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { | 279 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { |
266 | struct amba_device *d = amba_devs[i]; | 280 | struct amba_device *d = amba_devs[i]; |
diff --git a/arch/arm/mach-realview/realview_pb11mp.c b/arch/arm/mach-realview/realview_pb11mp.c index ff50ec2e4320..ea1e60eca359 100644 --- a/arch/arm/mach-realview/realview_pb11mp.c +++ b/arch/arm/mach-realview/realview_pb11mp.c | |||
@@ -230,6 +230,19 @@ static struct resource realview_pb11mp_smsc911x_resources[] = { | |||
230 | }, | 230 | }, |
231 | }; | 231 | }; |
232 | 232 | ||
233 | static struct resource realview_pb11mp_isp1761_resources[] = { | ||
234 | [0] = { | ||
235 | .start = REALVIEW_PB11MP_USB_BASE, | ||
236 | .end = REALVIEW_PB11MP_USB_BASE + SZ_128K - 1, | ||
237 | .flags = IORESOURCE_MEM, | ||
238 | }, | ||
239 | [1] = { | ||
240 | .start = IRQ_TC11MP_USB, | ||
241 | .end = IRQ_TC11MP_USB, | ||
242 | .flags = IORESOURCE_IRQ, | ||
243 | }, | ||
244 | }; | ||
245 | |||
233 | static void __init gic_init_irq(void) | 246 | static void __init gic_init_irq(void) |
234 | { | 247 | { |
235 | unsigned int pldctrl; | 248 | unsigned int pldctrl; |
@@ -284,6 +297,7 @@ static void __init realview_pb11mp_init(void) | |||
284 | realview_eth_register(NULL, realview_pb11mp_smsc911x_resources); | 297 | realview_eth_register(NULL, realview_pb11mp_smsc911x_resources); |
285 | platform_device_register(&realview_i2c_device); | 298 | platform_device_register(&realview_i2c_device); |
286 | platform_device_register(&realview_cf_device); | 299 | platform_device_register(&realview_cf_device); |
300 | realview_usb_register(realview_pb11mp_isp1761_resources); | ||
287 | 301 | ||
288 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { | 302 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { |
289 | struct amba_device *d = amba_devs[i]; | 303 | struct amba_device *d = amba_devs[i]; |
diff --git a/arch/arm/mach-realview/realview_pba8.c b/arch/arm/mach-realview/realview_pba8.c index c6147cba2578..d6ac1eb86576 100644 --- a/arch/arm/mach-realview/realview_pba8.c +++ b/arch/arm/mach-realview/realview_pba8.c | |||
@@ -221,6 +221,19 @@ static struct resource realview_pba8_smsc911x_resources[] = { | |||
221 | }, | 221 | }, |
222 | }; | 222 | }; |
223 | 223 | ||
224 | static struct resource realview_pba8_isp1761_resources[] = { | ||
225 | [0] = { | ||
226 | .start = REALVIEW_PBA8_USB_BASE, | ||
227 | .end = REALVIEW_PBA8_USB_BASE + SZ_128K - 1, | ||
228 | .flags = IORESOURCE_MEM, | ||
229 | }, | ||
230 | [1] = { | ||
231 | .start = IRQ_PBA8_USB, | ||
232 | .end = IRQ_PBA8_USB, | ||
233 | .flags = IORESOURCE_IRQ, | ||
234 | }, | ||
235 | }; | ||
236 | |||
224 | static void __init gic_init_irq(void) | 237 | static void __init gic_init_irq(void) |
225 | { | 238 | { |
226 | /* ARM PB-A8 on-board GIC */ | 239 | /* ARM PB-A8 on-board GIC */ |
@@ -252,6 +265,7 @@ static void __init realview_pba8_init(void) | |||
252 | realview_eth_register(NULL, realview_pba8_smsc911x_resources); | 265 | realview_eth_register(NULL, realview_pba8_smsc911x_resources); |
253 | platform_device_register(&realview_i2c_device); | 266 | platform_device_register(&realview_i2c_device); |
254 | platform_device_register(&realview_cf_device); | 267 | platform_device_register(&realview_cf_device); |
268 | realview_usb_register(realview_pba8_isp1761_resources); | ||
255 | 269 | ||
256 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { | 270 | for (i = 0; i < ARRAY_SIZE(amba_devs); i++) { |
257 | struct amba_device *d = amba_devs[i]; | 271 | struct amba_device *d = amba_devs[i]; |