diff options
author | Ben Dooks <ben-linux@fluff.org> | 2005-08-03 14:49:16 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-08-03 14:49:16 -0400 |
commit | 1fcf844861eb08ee05e05dba13b5436f2f2e29ed (patch) | |
tree | 980c21c85eff8550c3fbada9e6f922dcf90f7f37 | |
parent | 5cb4cc0d8211c490537c8568001958fc76741312 (diff) |
[PATCH] ARM: 2832/1: BAST - limit clock-rate for IIC bus
Patch from Ben Dooks
The default clock rate does not specify a maximum, so the
default of 400KHz is used. This rate is too fast for the PMU
on the EB2410ITX, so we now specify platform data with a rate
of around 100KHz.
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/mach-s3c2410/mach-bast.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c index 1e7f343822d0..e9182242da95 100644 --- a/arch/arm/mach-s3c2410/mach-bast.c +++ b/arch/arm/mach-s3c2410/mach-bast.c | |||
@@ -30,6 +30,7 @@ | |||
30 | * 28-Jun-2005 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 | 31 | * 17-Jul-2005 BJD Changed to platform device for SuperIO 16550s |
32 | * 25-Jul-2005 BJD Removed ASIX static mappings | 32 | * 25-Jul-2005 BJD Removed ASIX static mappings |
33 | * 27-Jul-2005 BJD Ensure maximum frequency of i2c bus | ||
33 | */ | 34 | */ |
34 | 35 | ||
35 | #include <linux/kernel.h> | 36 | #include <linux/kernel.h> |
@@ -60,6 +61,7 @@ | |||
60 | #include <asm/arch/regs-mem.h> | 61 | #include <asm/arch/regs-mem.h> |
61 | #include <asm/arch/regs-lcd.h> | 62 | #include <asm/arch/regs-lcd.h> |
62 | #include <asm/arch/nand.h> | 63 | #include <asm/arch/nand.h> |
64 | #include <asm/arch/iic.h> | ||
63 | 65 | ||
64 | #include <linux/mtd/mtd.h> | 66 | #include <linux/mtd/mtd.h> |
65 | #include <linux/mtd/nand.h> | 67 | #include <linux/mtd/nand.h> |
@@ -304,7 +306,7 @@ static void bast_nand_select(struct s3c2410_nand_set *set, int slot) | |||
304 | } | 306 | } |
305 | 307 | ||
306 | static struct s3c2410_platform_nand bast_nand_info = { | 308 | static struct s3c2410_platform_nand bast_nand_info = { |
307 | .tacls = 80, | 309 | .tacls = 40, |
308 | .twrph0 = 80, | 310 | .twrph0 = 80, |
309 | .twrph1 = 80, | 311 | .twrph1 = 80, |
310 | .nr_sets = ARRAY_SIZE(bast_nand_sets), | 312 | .nr_sets = ARRAY_SIZE(bast_nand_sets), |
@@ -385,6 +387,17 @@ static struct platform_device bast_sio = { | |||
385 | }, | 387 | }, |
386 | }; | 388 | }; |
387 | 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 | |||
388 | /* Standard BAST devices */ | 401 | /* Standard BAST devices */ |
389 | 402 | ||
390 | static struct platform_device *bast_devices[] __initdata = { | 403 | static struct platform_device *bast_devices[] __initdata = { |
@@ -431,6 +444,7 @@ void __init bast_map_io(void) | |||
431 | s3c24xx_uclk.parent = &s3c24xx_clkout1; | 444 | s3c24xx_uclk.parent = &s3c24xx_clkout1; |
432 | 445 | ||
433 | 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; | ||
434 | 448 | ||
435 | s3c24xx_init_io(bast_iodesc, ARRAY_SIZE(bast_iodesc)); | 449 | s3c24xx_init_io(bast_iodesc, ARRAY_SIZE(bast_iodesc)); |
436 | s3c24xx_init_clocks(0); | 450 | s3c24xx_init_clocks(0); |