[U-Boot] [PATCH] RFC: tegra: Avoid using I2C prior to relocation

Simon Glass sjg at chromium.org
Wed Aug 7 07:52:25 CEST 2013


Tegra recently moved to the new I2C framework, which sets up I2C prior to
relocation, and prior to calling i2c_init_board(). This causes a crash on
Tegra boards.

note:

There are many ways to fix this. I believe this is one. It disables i2c_init()
until relocation is complete. I have been unable to test it so far due to
problems getting my Seaboard to work. I will try another Tegra board, but
send this for comment in the meantime.

Signed-off-by: Simon Glass <sjg at chromium.org>
---
 drivers/i2c/tegra_i2c.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/i2c/tegra_i2c.c b/drivers/i2c/tegra_i2c.c
index 9ac3969..9847cf1 100644
--- a/drivers/i2c/tegra_i2c.c
+++ b/drivers/i2c/tegra_i2c.c
@@ -453,6 +453,10 @@ void i2c_init_board(void)
 
 static void tegra_i2c_init(struct i2c_adapter *adap, int speed, int slaveaddr)
 {
+	/* No i2c support prior to relocation */
+	if (!(gd->flags & GD_FLG_RELOC))
+		return;
+
 	/* This will override the speed selected in the fdt for that port */
 	debug("i2c_init(speed=%u, slaveaddr=0x%x)\n", speed, slaveaddr);
 	i2c_set_bus_speed(speed);
-- 
1.8.3



More information about the U-Boot mailing list