diff options
Diffstat (limited to 'arch/arm/mach-s3c2410/mach-vr1000.c')
-rw-r--r-- | arch/arm/mach-s3c2410/mach-vr1000.c | 72 |
1 files changed, 23 insertions, 49 deletions
diff --git a/arch/arm/mach-s3c2410/mach-vr1000.c b/arch/arm/mach-s3c2410/mach-vr1000.c index 4c4b5c4207c4..9a0965ac5e11 100644 --- a/arch/arm/mach-s3c2410/mach-vr1000.c +++ b/arch/arm/mach-s3c2410/mach-vr1000.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* linux/arch/arm/mach-s3c2410/mach-vr1000.c | 1 | /* linux/arch/arm/mach-s3c2410/mach-vr1000.c |
2 | * | 2 | * |
3 | * Copyright (c) 2003-2005 Simtec Electronics | 3 | * Copyright (c) 2003-2005,2008 Simtec Electronics |
4 | * Ben Dooks <ben@simtec.co.uk> | 4 | * Ben Dooks <ben@simtec.co.uk> |
5 | * | 5 | * |
6 | * Machine support for Thorcom VR1000 board. Designed for Thorcom by | 6 | * Machine support for Thorcom VR1000 board. Designed for Thorcom by |
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/timer.h> | 19 | #include <linux/timer.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/dm9000.h> | 21 | #include <linux/dm9000.h> |
22 | #include <linux/i2c.h> | ||
22 | 23 | ||
23 | #include <linux/serial.h> | 24 | #include <linux/serial.h> |
24 | #include <linux/tty.h> | 25 | #include <linux/tty.h> |
@@ -46,7 +47,9 @@ | |||
46 | #include <asm/plat-s3c24xx/clock.h> | 47 | #include <asm/plat-s3c24xx/clock.h> |
47 | #include <asm/plat-s3c24xx/devs.h> | 48 | #include <asm/plat-s3c24xx/devs.h> |
48 | #include <asm/plat-s3c24xx/cpu.h> | 49 | #include <asm/plat-s3c24xx/cpu.h> |
50 | |||
49 | #include "usb-simtec.h" | 51 | #include "usb-simtec.h" |
52 | #include "nor-simtec.h" | ||
50 | 53 | ||
51 | /* macros for virtual address mods for the io space entries */ | 54 | /* macros for virtual address mods for the io space entries */ |
52 | #define VA_C5(item) ((unsigned long)(item) + BAST_VAM_CS5) | 55 | #define VA_C5(item) ((unsigned long)(item) + BAST_VAM_CS5) |
@@ -97,34 +100,6 @@ static struct map_desc vr1000_iodesc[] __initdata = { | |||
97 | .length = SZ_1M, | 100 | .length = SZ_1M, |
98 | .type = MT_DEVICE, | 101 | .type = MT_DEVICE, |
99 | }, | 102 | }, |
100 | |||
101 | /* peripheral space... one for each of fast/slow/byte/16bit */ | ||
102 | /* note, ide is only decoded in word space, even though some registers | ||
103 | * are only 8bit */ | ||
104 | |||
105 | /* slow, byte */ | ||
106 | { VA_C2(VR1000_VA_IDEPRI), PA_CS3(VR1000_PA_IDEPRI), SZ_1M, MT_DEVICE }, | ||
107 | { VA_C2(VR1000_VA_IDESEC), PA_CS3(VR1000_PA_IDESEC), SZ_1M, MT_DEVICE }, | ||
108 | { VA_C2(VR1000_VA_IDEPRIAUX), PA_CS3(VR1000_PA_IDEPRIAUX), SZ_1M, MT_DEVICE }, | ||
109 | { VA_C2(VR1000_VA_IDESECAUX), PA_CS3(VR1000_PA_IDESECAUX), SZ_1M, MT_DEVICE }, | ||
110 | |||
111 | /* slow, word */ | ||
112 | { VA_C3(VR1000_VA_IDEPRI), PA_CS3(VR1000_PA_IDEPRI), SZ_1M, MT_DEVICE }, | ||
113 | { VA_C3(VR1000_VA_IDESEC), PA_CS3(VR1000_PA_IDESEC), SZ_1M, MT_DEVICE }, | ||
114 | { VA_C3(VR1000_VA_IDEPRIAUX), PA_CS3(VR1000_PA_IDEPRIAUX), SZ_1M, MT_DEVICE }, | ||
115 | { VA_C3(VR1000_VA_IDESECAUX), PA_CS3(VR1000_PA_IDESECAUX), SZ_1M, MT_DEVICE }, | ||
116 | |||
117 | /* fast, byte */ | ||
118 | { VA_C4(VR1000_VA_IDEPRI), PA_CS5(VR1000_PA_IDEPRI), SZ_1M, MT_DEVICE }, | ||
119 | { VA_C4(VR1000_VA_IDESEC), PA_CS5(VR1000_PA_IDESEC), SZ_1M, MT_DEVICE }, | ||
120 | { VA_C4(VR1000_VA_IDEPRIAUX), PA_CS5(VR1000_PA_IDEPRIAUX), SZ_1M, MT_DEVICE }, | ||
121 | { VA_C4(VR1000_VA_IDESECAUX), PA_CS5(VR1000_PA_IDESECAUX), SZ_1M, MT_DEVICE }, | ||
122 | |||
123 | /* fast, word */ | ||
124 | { VA_C5(VR1000_VA_IDEPRI), PA_CS5(VR1000_PA_IDEPRI), SZ_1M, MT_DEVICE }, | ||
125 | { VA_C5(VR1000_VA_IDESEC), PA_CS5(VR1000_PA_IDESEC), SZ_1M, MT_DEVICE }, | ||
126 | { VA_C5(VR1000_VA_IDEPRIAUX), PA_CS5(VR1000_PA_IDEPRIAUX), SZ_1M, MT_DEVICE }, | ||
127 | { VA_C5(VR1000_VA_IDESECAUX), PA_CS5(VR1000_PA_IDESECAUX), SZ_1M, MT_DEVICE }, | ||
128 | }; | 103 | }; |
129 | 104 | ||
130 | #define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK | 105 | #define UCON S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK |
@@ -230,23 +205,6 @@ static struct platform_device serial_device = { | |||
230 | }, | 205 | }, |
231 | }; | 206 | }; |
232 | 207 | ||
233 | /* MTD NOR Flash */ | ||
234 | |||
235 | static struct resource vr1000_nor_resource[] = { | ||
236 | [0] = { | ||
237 | .start = S3C2410_CS1 + 0x4000000, | ||
238 | .end = S3C2410_CS1 + 0x4000000 + SZ_16M - 1, | ||
239 | .flags = IORESOURCE_MEM, | ||
240 | } | ||
241 | }; | ||
242 | |||
243 | static struct platform_device vr1000_nor = { | ||
244 | .name = "bast-nor", | ||
245 | .id = -1, | ||
246 | .num_resources = ARRAY_SIZE(vr1000_nor_resource), | ||
247 | .resource = vr1000_nor_resource, | ||
248 | }; | ||
249 | |||
250 | /* DM9000 ethernet devices */ | 208 | /* DM9000 ethernet devices */ |
251 | 209 | ||
252 | static struct resource vr1000_dm9k0_resource[] = { | 210 | static struct resource vr1000_dm9k0_resource[] = { |
@@ -263,7 +221,7 @@ static struct resource vr1000_dm9k0_resource[] = { | |||
263 | [2] = { | 221 | [2] = { |
264 | .start = IRQ_VR1000_DM9000A, | 222 | .start = IRQ_VR1000_DM9000A, |
265 | .end = IRQ_VR1000_DM9000A, | 223 | .end = IRQ_VR1000_DM9000A, |
266 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH, | 224 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, |
267 | } | 225 | } |
268 | 226 | ||
269 | }; | 227 | }; |
@@ -282,7 +240,7 @@ static struct resource vr1000_dm9k1_resource[] = { | |||
282 | [2] = { | 240 | [2] = { |
283 | .start = IRQ_VR1000_DM9000N, | 241 | .start = IRQ_VR1000_DM9000N, |
284 | .end = IRQ_VR1000_DM9000N, | 242 | .end = IRQ_VR1000_DM9000N, |
285 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH, | 243 | .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, |
286 | } | 244 | } |
287 | }; | 245 | }; |
288 | 246 | ||
@@ -358,6 +316,18 @@ static struct platform_device vr1000_led3 = { | |||
358 | }, | 316 | }, |
359 | }; | 317 | }; |
360 | 318 | ||
319 | /* I2C devices. */ | ||
320 | |||
321 | static struct i2c_board_info vr1000_i2c_devs[] __initdata = { | ||
322 | { | ||
323 | I2C_BOARD_INFO("tlv320aic23", 0x1a), | ||
324 | }, { | ||
325 | I2C_BOARD_INFO("tmp101", 0x48), | ||
326 | }, { | ||
327 | I2C_BOARD_INFO("m41st87", 0x68), | ||
328 | }, | ||
329 | }; | ||
330 | |||
361 | /* devices for this board */ | 331 | /* devices for this board */ |
362 | 332 | ||
363 | static struct platform_device *vr1000_devices[] __initdata = { | 333 | static struct platform_device *vr1000_devices[] __initdata = { |
@@ -367,7 +337,6 @@ static struct platform_device *vr1000_devices[] __initdata = { | |||
367 | &s3c_device_i2c, | 337 | &s3c_device_i2c, |
368 | &s3c_device_adc, | 338 | &s3c_device_adc, |
369 | &serial_device, | 339 | &serial_device, |
370 | &vr1000_nor, | ||
371 | &vr1000_dm9k0, | 340 | &vr1000_dm9k0, |
372 | &vr1000_dm9k1, | 341 | &vr1000_dm9k1, |
373 | &vr1000_led1, | 342 | &vr1000_led1, |
@@ -416,6 +385,11 @@ static void __init vr1000_map_io(void) | |||
416 | static void __init vr1000_init(void) | 385 | static void __init vr1000_init(void) |
417 | { | 386 | { |
418 | platform_add_devices(vr1000_devices, ARRAY_SIZE(vr1000_devices)); | 387 | platform_add_devices(vr1000_devices, ARRAY_SIZE(vr1000_devices)); |
388 | |||
389 | i2c_register_board_info(0, vr1000_i2c_devs, | ||
390 | ARRAY_SIZE(vr1000_i2c_devs)); | ||
391 | |||
392 | nor_simtec_init(); | ||
419 | } | 393 | } |
420 | 394 | ||
421 | MACHINE_START(VR1000, "Thorcom-VR1000") | 395 | MACHINE_START(VR1000, "Thorcom-VR1000") |