Patchwork [U-Boot] cm-t35: fix Ethernet reset timing

login
register
mail settings
Submitter Igor Grinberg
Date April 3, 2012, 6:12 a.m.
Message ID <1333433578-3083-1-git-send-email-grinberg@compulab.co.il>
Download mbox | patch
Permalink /patch/150326/
State Accepted
Commit 07277e740ba9422f603bbcd97d5a9ab5731fe06d
Delegated to: Tom Rini
Headers show

Comments

Igor Grinberg - April 3, 2012, 6:12 a.m.
The reset_net_chip() function has wrong timings for the reset pulse.

This appeared to work until:
0607e2b (ARMV7: OMAP: Write more than 1 byte at a time in i2c_write)

Fix the Ethernet support by introducing right timings.

Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
---
 board/cm_t35/cm_t35.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)
Tom Rini - April 3, 2012, 4:20 p.m.
On Tue, Apr 03, 2012 at 09:12:58AM +0300, Igor Grinberg wrote:

> The reset_net_chip() function has wrong timings for the reset pulse.
> 
> This appeared to work until:
> 0607e2b (ARMV7: OMAP: Write more than 1 byte at a time in i2c_write)
> 
> Fix the Ethernet support by introducing right timings.
> 
> Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>

Queued up for u-boot-ti/master (which I intend to PR Friday).

Patch

diff --git a/board/cm_t35/cm_t35.c b/board/cm_t35/cm_t35.c
index bc991c4..ee7d5a0 100644
--- a/board/cm_t35/cm_t35.c
+++ b/board/cm_t35/cm_t35.c
@@ -362,16 +362,17 @@  static void reset_net_chip(void)
 {
 	/* Set GPIO1 of TPS65930 as output */
 	twl4030_i2c_write_u8(TWL4030_CHIP_GPIO, 0x02,
-			     TWL4030_BASEADD_GPIO+0x03);
+				TWL4030_BASEADD_GPIO + 0x03);
 	/* Send a pulse on the GPIO pin */
 	twl4030_i2c_write_u8(TWL4030_CHIP_GPIO, 0x02,
-			     TWL4030_BASEADD_GPIO+0x0C);
+				TWL4030_BASEADD_GPIO + 0x0C);
 	udelay(1);
 	twl4030_i2c_write_u8(TWL4030_CHIP_GPIO, 0x02,
-			     TWL4030_BASEADD_GPIO+0x09);
-	udelay(1);
+				TWL4030_BASEADD_GPIO + 0x09);
+	mdelay(40);
 	twl4030_i2c_write_u8(TWL4030_CHIP_GPIO, 0x02,
-			     TWL4030_BASEADD_GPIO+0x0C);
+				TWL4030_BASEADD_GPIO + 0x0C);
+	mdelay(1);
 }
 #else
 static inline void reset_net_chip(void) {}