diff options
Diffstat (limited to 'arch/arm/mach-s3c2410/mach-bast.c')
-rw-r--r-- | arch/arm/mach-s3c2410/mach-bast.c | 48 |
1 files changed, 41 insertions, 7 deletions
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c index ccb6bcefa46c..1e7f343822d0 100644 --- a/arch/arm/mach-s3c2410/mach-bast.c +++ b/arch/arm/mach-s3c2410/mach-bast.c | |||
@@ -25,9 +25,11 @@ | |||
25 | * 14-Jan-2005 BJD Add support for muitlple NAND devices | 25 | * 14-Jan-2005 BJD Add support for muitlple NAND devices |
26 | * 03-Mar-2005 BJD Ensured that bast-cpld.h is included | 26 | * 03-Mar-2005 BJD Ensured that bast-cpld.h is included |
27 | * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA | 27 | * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA |
28 | * 14-Mar-2006 BJD Updated for __iomem changes | 28 | * 14-Mar-2005 BJD Updated for __iomem changes |
29 | * 22-Jun-2006 BJD Added DM9000 platform information | 29 | * 22-Jun-2005 BJD Added DM9000 platform information |
30 | * 28-Jun-2006 BJD Moved pm functionality out to common code | 30 | * 28-Jun-2005 BJD Moved pm functionality out to common code |
31 | * 17-Jul-2005 BJD Changed to platform device for SuperIO 16550s | ||
32 | * 25-Jul-2005 BJD Removed ASIX static mappings | ||
31 | */ | 33 | */ |
32 | 34 | ||
33 | #include <linux/kernel.h> | 35 | #include <linux/kernel.h> |
@@ -64,6 +66,8 @@ | |||
64 | #include <linux/mtd/nand_ecc.h> | 66 | #include <linux/mtd/nand_ecc.h> |
65 | #include <linux/mtd/partitions.h> | 67 | #include <linux/mtd/partitions.h> |
66 | 68 | ||
69 | #include <linux/serial_8250.h> | ||
70 | |||
67 | #include "clock.h" | 71 | #include "clock.h" |
68 | #include "devs.h" | 72 | #include "devs.h" |
69 | #include "cpu.h" | 73 | #include "cpu.h" |
@@ -113,7 +117,6 @@ static struct map_desc bast_iodesc[] __initdata = { | |||
113 | /* slow, byte */ | 117 | /* slow, byte */ |
114 | { VA_C2(BAST_VA_ISAIO), PA_CS2(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, | 118 | { VA_C2(BAST_VA_ISAIO), PA_CS2(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, |
115 | { VA_C2(BAST_VA_ISAMEM), PA_CS2(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, | 119 | { VA_C2(BAST_VA_ISAMEM), PA_CS2(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, |
116 | { VA_C2(BAST_VA_ASIXNET), PA_CS3(BAST_PA_ASIXNET), SZ_1M, MT_DEVICE }, | ||
117 | { VA_C2(BAST_VA_SUPERIO), PA_CS2(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, | 120 | { VA_C2(BAST_VA_SUPERIO), PA_CS2(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, |
118 | { VA_C2(BAST_VA_IDEPRI), PA_CS3(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, | 121 | { VA_C2(BAST_VA_IDEPRI), PA_CS3(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, |
119 | { VA_C2(BAST_VA_IDESEC), PA_CS3(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, | 122 | { VA_C2(BAST_VA_IDESEC), PA_CS3(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, |
@@ -123,7 +126,6 @@ static struct map_desc bast_iodesc[] __initdata = { | |||
123 | /* slow, word */ | 126 | /* slow, word */ |
124 | { VA_C3(BAST_VA_ISAIO), PA_CS3(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, | 127 | { VA_C3(BAST_VA_ISAIO), PA_CS3(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, |
125 | { VA_C3(BAST_VA_ISAMEM), PA_CS3(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, | 128 | { VA_C3(BAST_VA_ISAMEM), PA_CS3(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, |
126 | { VA_C3(BAST_VA_ASIXNET), PA_CS3(BAST_PA_ASIXNET), SZ_1M, MT_DEVICE }, | ||
127 | { VA_C3(BAST_VA_SUPERIO), PA_CS3(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, | 129 | { VA_C3(BAST_VA_SUPERIO), PA_CS3(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, |
128 | { VA_C3(BAST_VA_IDEPRI), PA_CS3(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, | 130 | { VA_C3(BAST_VA_IDEPRI), PA_CS3(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, |
129 | { VA_C3(BAST_VA_IDESEC), PA_CS3(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, | 131 | { VA_C3(BAST_VA_IDESEC), PA_CS3(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, |
@@ -133,7 +135,6 @@ static struct map_desc bast_iodesc[] __initdata = { | |||
133 | /* fast, byte */ | 135 | /* fast, byte */ |
134 | { VA_C4(BAST_VA_ISAIO), PA_CS4(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, | 136 | { VA_C4(BAST_VA_ISAIO), PA_CS4(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, |
135 | { VA_C4(BAST_VA_ISAMEM), PA_CS4(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, | 137 | { VA_C4(BAST_VA_ISAMEM), PA_CS4(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, |
136 | { VA_C4(BAST_VA_ASIXNET), PA_CS5(BAST_PA_ASIXNET), SZ_1M, MT_DEVICE }, | ||
137 | { VA_C4(BAST_VA_SUPERIO), PA_CS4(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, | 138 | { VA_C4(BAST_VA_SUPERIO), PA_CS4(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, |
138 | { VA_C4(BAST_VA_IDEPRI), PA_CS5(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, | 139 | { VA_C4(BAST_VA_IDEPRI), PA_CS5(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, |
139 | { VA_C4(BAST_VA_IDESEC), PA_CS5(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, | 140 | { VA_C4(BAST_VA_IDESEC), PA_CS5(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, |
@@ -143,7 +144,6 @@ static struct map_desc bast_iodesc[] __initdata = { | |||
143 | /* fast, word */ | 144 | /* fast, word */ |
144 | { VA_C5(BAST_VA_ISAIO), PA_CS5(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, | 145 | { VA_C5(BAST_VA_ISAIO), PA_CS5(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, |
145 | { VA_C5(BAST_VA_ISAMEM), PA_CS5(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, | 146 | { VA_C5(BAST_VA_ISAMEM), PA_CS5(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, |
146 | { VA_C5(BAST_VA_ASIXNET), PA_CS5(BAST_PA_ASIXNET), SZ_1M, MT_DEVICE }, | ||
147 | { VA_C5(BAST_VA_SUPERIO), PA_CS5(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, | 147 | { VA_C5(BAST_VA_SUPERIO), PA_CS5(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, |
148 | { VA_C5(BAST_VA_IDEPRI), PA_CS5(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, | 148 | { VA_C5(BAST_VA_IDEPRI), PA_CS5(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, |
149 | { VA_C5(BAST_VA_IDESEC), PA_CS5(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, | 149 | { VA_C5(BAST_VA_IDESEC), PA_CS5(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, |
@@ -351,6 +351,39 @@ static struct platform_device bast_device_dm9k = { | |||
351 | } | 351 | } |
352 | }; | 352 | }; |
353 | 353 | ||
354 | /* serial devices */ | ||
355 | |||
356 | #define SERIAL_BASE (S3C2410_CS2 + BAST_PA_SUPERIO) | ||
357 | #define SERIAL_FLAGS (UPF_BOOT_AUTOCONF | UPF_IOREMAP | UPF_SHARE_IRQ) | ||
358 | #define SERIAL_CLK (1843200) | ||
359 | |||
360 | static struct plat_serial8250_port bast_sio_data[] = { | ||
361 | [0] = { | ||
362 | .mapbase = SERIAL_BASE + 0x2f8, | ||
363 | .irq = IRQ_PCSERIAL1, | ||
364 | .flags = SERIAL_FLAGS, | ||
365 | .iotype = UPIO_MEM, | ||
366 | .regshift = 0, | ||
367 | .uartclk = SERIAL_CLK, | ||
368 | }, | ||
369 | [1] = { | ||
370 | .mapbase = SERIAL_BASE + 0x3f8, | ||
371 | .irq = IRQ_PCSERIAL2, | ||
372 | .flags = SERIAL_FLAGS, | ||
373 | .iotype = UPIO_MEM, | ||
374 | .regshift = 0, | ||
375 | .uartclk = SERIAL_CLK, | ||
376 | }, | ||
377 | { } | ||
378 | }; | ||
379 | |||
380 | static struct platform_device bast_sio = { | ||
381 | .name = "serial8250", | ||
382 | .id = 0, | ||
383 | .dev = { | ||
384 | .platform_data = &bast_sio_data, | ||
385 | }, | ||
386 | }; | ||
354 | 387 | ||
355 | /* Standard BAST devices */ | 388 | /* Standard BAST devices */ |
356 | 389 | ||
@@ -364,6 +397,7 @@ static struct platform_device *bast_devices[] __initdata = { | |||
364 | &s3c_device_nand, | 397 | &s3c_device_nand, |
365 | &bast_device_nor, | 398 | &bast_device_nor, |
366 | &bast_device_dm9k, | 399 | &bast_device_dm9k, |
400 | &bast_sio, | ||
367 | }; | 401 | }; |
368 | 402 | ||
369 | static struct clk *bast_clocks[] = { | 403 | static struct clk *bast_clocks[] = { |