All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/7] powerpc/i2c: introduce CONFIG_I2C_TWR for setting tWR value
@ 2011-05-26 23:25 York Sun
  2011-05-26 23:25 ` [U-Boot] [PATCH 2/7] powerpc/mpc8xxx: adjust DDR burst length and chop accroding to sdram width York Sun
                   ` (7 more replies)
  0 siblings, 8 replies; 19+ messages in thread
From: York Sun @ 2011-05-26 23:25 UTC (permalink / raw)
  To: u-boot

From: york <yorksun@freescale.com>

EEPROM requires tWR for write cycle time. Since there is no other way to
poll if the internal programming ends, wait for 5ms which is the max timing
for AT24C01/02/04/08/16 by default. It can be overridden by defining
CONFIG_I2C_TWR in configuration file if the slowest device has different write
cycle time.

Signed-off-by: York Sun <yorksun@freescale.com>
---
 README                |    7 +++++++
 drivers/i2c/fsl_i2c.c |    9 +++++++++
 2 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/README b/README
index 8bb9c8d..83a316c 100644
--- a/README
+++ b/README
@@ -1717,6 +1717,13 @@ The following options need to be configured:
 		devices can use either method, but some require one or
 		the other.
 
+		CONFIG_I2C_TWR
+
+		defining this will override the default write cycle time
+		5ms which is the default for AT24C01/02/4/08/16. If the
+		slowest I2C device has different write cycle time, this
+		option should be defined. The unit is microsecond.
+
 - SPI Support:	CONFIG_SPI
 
 		Enables SPI driver (so far only tested with
diff --git a/drivers/i2c/fsl_i2c.c b/drivers/i2c/fsl_i2c.c
index cb13dee..d192b2a 100644
--- a/drivers/i2c/fsl_i2c.c
+++ b/drivers/i2c/fsl_i2c.c
@@ -42,6 +42,14 @@
 #define CONFIG_I2C_TIMEOUT	10000
 #endif
 
+/*
+ * tWR is the write cycle time for EEPROM device
+ * in microseconds
+ */
+#ifndef CONFIG_I2C_TWR
+#define CONFIG_I2C_TWR 5000
+#endif
+
 #define I2C_READ_BIT  1
 #define I2C_WRITE_BIT 0
 
@@ -416,6 +424,7 @@ i2c_write(u8 dev, uint addr, int alen, u8 *data, int length)
 	if (i2c_wait4bus()) /* Wait until STOP */
 		debug("i2c_write: wait4bus timed out\n");
 
+	udelay(CONFIG_I2C_TWR);
 	if (i == length)
 	    return 0;
 
-- 
1.7.0.4

^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2011-06-03 13:11 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-05-26 23:25 [U-Boot] [PATCH 1/7] powerpc/i2c: introduce CONFIG_I2C_TWR for setting tWR value York Sun
2011-05-26 23:25 ` [U-Boot] [PATCH 2/7] powerpc/mpc8xxx: adjust DDR burst length and chop accroding to sdram width York Sun
2011-06-03  7:42   ` Kumar Gala
2011-05-26 23:25 ` [U-Boot] [PATCH 3/7] powerpc/mpc8xxx: Enable calculation for fixed DDR chips York Sun
2011-06-03  7:42   ` Kumar Gala
2011-06-03  7:48     ` Kumar Gala
2011-05-26 23:25 ` [U-Boot] [PATCH 4/7] powerpc/mpc8xxx: check SPD length before using part number York Sun
2011-06-03  7:42   ` Kumar Gala
2011-05-26 23:25 ` [U-Boot] [PATCH 5/7] powerpc/mpc8xxx: Add 16-bit support for DDR3 York Sun
2011-06-03  7:42   ` Kumar Gala
2011-05-26 23:25 ` [U-Boot] [PATCH 6/7] powerpc/mpc8xxx: Adding fallback to raw timing on supported boards York Sun
2011-06-03  7:46   ` Kumar Gala
2011-06-03  8:10     ` York Sun
2011-06-03 13:11       ` Kumar Gala
2011-05-26 23:25 ` [U-Boot] [PATCH 7/7] powerpc/mpc8xxx: change raw timing function call parameters York Sun
2011-05-27  0:20 ` [U-Boot] [u-boot-release] [PATCH 1/7] powerpc/i2c: introduce CONFIG_I2C_TWR for setting tWR value Tabi Timur-B04825
2011-05-27  0:25   ` York Sun
2011-05-27  6:04 ` [U-Boot] " Heiko Schocher
2011-05-27  6:25   ` York Sun

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.