diff options
Diffstat (limited to 'arch/arm/mach-s3c2410/mach-bast.c')
-rw-r--r-- | arch/arm/mach-s3c2410/mach-bast.c | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c index 206778ebfce7..e9182242da95 100644 --- a/arch/arm/mach-s3c2410/mach-bast.c +++ b/arch/arm/mach-s3c2410/mach-bast.c | |||
@@ -25,10 +25,12 @@ | |||
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-2006 BJD Changed to platform device for SuperIO 16550s | 31 | * 17-Jul-2005 BJD Changed to platform device for SuperIO 16550s |
32 | * 25-Jul-2005 BJD Removed ASIX static mappings | ||
33 | * 27-Jul-2005 BJD Ensure maximum frequency of i2c bus | ||
32 | */ | 34 | */ |
33 | 35 | ||
34 | #include <linux/kernel.h> | 36 | #include <linux/kernel.h> |
@@ -59,6 +61,7 @@ | |||
59 | #include <asm/arch/regs-mem.h> | 61 | #include <asm/arch/regs-mem.h> |
60 | #include <asm/arch/regs-lcd.h> | 62 | #include <asm/arch/regs-lcd.h> |
61 | #include <asm/arch/nand.h> | 63 | #include <asm/arch/nand.h> |
64 | #include <asm/arch/iic.h> | ||
62 | 65 | ||
63 | #include <linux/mtd/mtd.h> | 66 | #include <linux/mtd/mtd.h> |
64 | #include <linux/mtd/nand.h> | 67 | #include <linux/mtd/nand.h> |
@@ -116,7 +119,6 @@ static struct map_desc bast_iodesc[] __initdata = { | |||
116 | /* slow, byte */ | 119 | /* slow, byte */ |
117 | { VA_C2(BAST_VA_ISAIO), PA_CS2(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, | 120 | { VA_C2(BAST_VA_ISAIO), PA_CS2(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, |
118 | { VA_C2(BAST_VA_ISAMEM), PA_CS2(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, | 121 | { VA_C2(BAST_VA_ISAMEM), PA_CS2(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, |
119 | { VA_C2(BAST_VA_ASIXNET), PA_CS3(BAST_PA_ASIXNET), SZ_1M, MT_DEVICE }, | ||
120 | { VA_C2(BAST_VA_SUPERIO), PA_CS2(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, | 122 | { VA_C2(BAST_VA_SUPERIO), PA_CS2(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, |
121 | { VA_C2(BAST_VA_IDEPRI), PA_CS3(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, | 123 | { VA_C2(BAST_VA_IDEPRI), PA_CS3(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, |
122 | { VA_C2(BAST_VA_IDESEC), PA_CS3(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, | 124 | { VA_C2(BAST_VA_IDESEC), PA_CS3(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, |
@@ -126,7 +128,6 @@ static struct map_desc bast_iodesc[] __initdata = { | |||
126 | /* slow, word */ | 128 | /* slow, word */ |
127 | { VA_C3(BAST_VA_ISAIO), PA_CS3(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, | 129 | { VA_C3(BAST_VA_ISAIO), PA_CS3(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, |
128 | { VA_C3(BAST_VA_ISAMEM), PA_CS3(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, | 130 | { VA_C3(BAST_VA_ISAMEM), PA_CS3(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, |
129 | { VA_C3(BAST_VA_ASIXNET), PA_CS3(BAST_PA_ASIXNET), SZ_1M, MT_DEVICE }, | ||
130 | { VA_C3(BAST_VA_SUPERIO), PA_CS3(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, | 131 | { VA_C3(BAST_VA_SUPERIO), PA_CS3(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, |
131 | { VA_C3(BAST_VA_IDEPRI), PA_CS3(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, | 132 | { VA_C3(BAST_VA_IDEPRI), PA_CS3(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, |
132 | { VA_C3(BAST_VA_IDESEC), PA_CS3(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, | 133 | { VA_C3(BAST_VA_IDESEC), PA_CS3(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, |
@@ -136,7 +137,6 @@ static struct map_desc bast_iodesc[] __initdata = { | |||
136 | /* fast, byte */ | 137 | /* fast, byte */ |
137 | { VA_C4(BAST_VA_ISAIO), PA_CS4(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, | 138 | { VA_C4(BAST_VA_ISAIO), PA_CS4(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, |
138 | { VA_C4(BAST_VA_ISAMEM), PA_CS4(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, | 139 | { VA_C4(BAST_VA_ISAMEM), PA_CS4(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, |
139 | { VA_C4(BAST_VA_ASIXNET), PA_CS5(BAST_PA_ASIXNET), SZ_1M, MT_DEVICE }, | ||
140 | { VA_C4(BAST_VA_SUPERIO), PA_CS4(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, | 140 | { VA_C4(BAST_VA_SUPERIO), PA_CS4(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, |
141 | { VA_C4(BAST_VA_IDEPRI), PA_CS5(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, | 141 | { VA_C4(BAST_VA_IDEPRI), PA_CS5(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, |
142 | { VA_C4(BAST_VA_IDESEC), PA_CS5(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, | 142 | { VA_C4(BAST_VA_IDESEC), PA_CS5(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, |
@@ -146,7 +146,6 @@ static struct map_desc bast_iodesc[] __initdata = { | |||
146 | /* fast, word */ | 146 | /* fast, word */ |
147 | { VA_C5(BAST_VA_ISAIO), PA_CS5(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, | 147 | { VA_C5(BAST_VA_ISAIO), PA_CS5(BAST_PA_ISAIO), SZ_16M, MT_DEVICE }, |
148 | { VA_C5(BAST_VA_ISAMEM), PA_CS5(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, | 148 | { VA_C5(BAST_VA_ISAMEM), PA_CS5(BAST_PA_ISAMEM), SZ_16M, MT_DEVICE }, |
149 | { VA_C5(BAST_VA_ASIXNET), PA_CS5(BAST_PA_ASIXNET), SZ_1M, MT_DEVICE }, | ||
150 | { VA_C5(BAST_VA_SUPERIO), PA_CS5(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, | 149 | { VA_C5(BAST_VA_SUPERIO), PA_CS5(BAST_PA_SUPERIO), SZ_1M, MT_DEVICE }, |
151 | { VA_C5(BAST_VA_IDEPRI), PA_CS5(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, | 150 | { VA_C5(BAST_VA_IDEPRI), PA_CS5(BAST_PA_IDEPRI), SZ_1M, MT_DEVICE }, |
152 | { VA_C5(BAST_VA_IDESEC), PA_CS5(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, | 151 | { VA_C5(BAST_VA_IDESEC), PA_CS5(BAST_PA_IDESEC), SZ_1M, MT_DEVICE }, |
@@ -307,7 +306,7 @@ static void bast_nand_select(struct s3c2410_nand_set *set, int slot) | |||
307 | } | 306 | } |
308 | 307 | ||
309 | static struct s3c2410_platform_nand bast_nand_info = { | 308 | static struct s3c2410_platform_nand bast_nand_info = { |
310 | .tacls = 80, | 309 | .tacls = 40, |
311 | .twrph0 = 80, | 310 | .twrph0 = 80, |
312 | .twrph1 = 80, | 311 | .twrph1 = 80, |
313 | .nr_sets = ARRAY_SIZE(bast_nand_sets), | 312 | .nr_sets = ARRAY_SIZE(bast_nand_sets), |
@@ -388,6 +387,17 @@ static struct platform_device bast_sio = { | |||
388 | }, | 387 | }, |
389 | }; | 388 | }; |
390 | 389 | ||
390 | /* we have devices on the bus which cannot work much over the | ||
391 | * standard 100KHz i2c bus frequency | ||
392 | */ | ||
393 | |||
394 | static struct s3c2410_platform_i2c bast_i2c_info = { | ||
395 | .flags = 0, | ||
396 | .slave_addr = 0x10, | ||
397 | .bus_freq = 100*1000, | ||
398 | .max_freq = 130*1000, | ||
399 | }; | ||
400 | |||
391 | /* Standard BAST devices */ | 401 | /* Standard BAST devices */ |
392 | 402 | ||
393 | static struct platform_device *bast_devices[] __initdata = { | 403 | static struct platform_device *bast_devices[] __initdata = { |
@@ -434,6 +444,7 @@ void __init bast_map_io(void) | |||
434 | s3c24xx_uclk.parent = &s3c24xx_clkout1; | 444 | s3c24xx_uclk.parent = &s3c24xx_clkout1; |
435 | 445 | ||
436 | s3c_device_nand.dev.platform_data = &bast_nand_info; | 446 | s3c_device_nand.dev.platform_data = &bast_nand_info; |
447 | s3c_device_i2c.dev.platform_data = &bast_i2c_info; | ||
437 | 448 | ||
438 | s3c24xx_init_io(bast_iodesc, ARRAY_SIZE(bast_iodesc)); | 449 | s3c24xx_init_io(bast_iodesc, ARRAY_SIZE(bast_iodesc)); |
439 | s3c24xx_init_clocks(0); | 450 | s3c24xx_init_clocks(0); |