All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/2] Powerpc/i2c: Use the same initialize codes
@ 2011-10-27  1:29 Chang-Ming.Huang at freescale.com
  2011-10-27  1:29 ` [U-Boot] [PATCH 2/2] Powerpc/i2c: Force i2c to become bus master out of reset Chang-Ming.Huang at freescale.com
  2011-11-04  5:26 ` [U-Boot] [PATCH 1/2] Powerpc/i2c: Use the same initialize codes Heiko Schocher
  0 siblings, 2 replies; 15+ messages in thread
From: Chang-Ming.Huang at freescale.com @ 2011-10-27  1:29 UTC (permalink / raw)
  To: u-boot

From: Jerry Huang <Chang-Ming.Huang@freescale.com>

Make the I2C2 and I2C1 use the same initialize codes.

Signed-off-by: Jerry Huang <Chang-Ming.Huang@freescale.com>
---
 drivers/i2c/fsl_i2c.c |   47 +++++++++++++++++++++++++----------------------
 1 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/drivers/i2c/fsl_i2c.c b/drivers/i2c/fsl_i2c.c
index cb13dee..258be0a 100644
--- a/drivers/i2c/fsl_i2c.c
+++ b/drivers/i2c/fsl_i2c.c
@@ -214,11 +214,20 @@ static unsigned int set_i2c_bus_speed(const struct fsl_i2c *dev,
 	return speed;
 }
 
+unsigned int get_i2c_clock(int bus)
+{
+	if (bus)
+		return gd->i2c2_clk;	/* I2C2 clock */
+	else
+		return gd->i2c1_clk;	/* I2C1 clock */
+}
+
 void
 i2c_init(int speed, int slaveadd)
 {
 	struct fsl_i2c *dev;
 	unsigned int temp;
+	int bus_num, i;
 
 #ifdef CONFIG_SYS_I2C_INIT_BOARD
 	/* Call board specific i2c bus reset routine before accessing the
@@ -227,29 +236,23 @@ i2c_init(int speed, int slaveadd)
 	*/
 	i2c_init_board();
 #endif
-	dev = (struct fsl_i2c *) (CONFIG_SYS_IMMR + CONFIG_SYS_I2C_OFFSET);
-
-	writeb(0, &dev->cr);			/* stop I2C controller */
-	udelay(5);				/* let it shutdown in peace */
-	temp = set_i2c_bus_speed(dev, gd->i2c1_clk, speed);
-	if (gd->flags & GD_FLG_RELOC)
-		i2c_bus_speed[0] = temp;
-	writeb(slaveadd << 1, &dev->adr);	/* write slave address */
-	writeb(0x0, &dev->sr);			/* clear status register */
-	writeb(I2C_CR_MEN, &dev->cr);		/* start I2C controller */
-
-#ifdef	CONFIG_SYS_I2C2_OFFSET
-	dev = (struct fsl_i2c *) (CONFIG_SYS_IMMR + CONFIG_SYS_I2C2_OFFSET);
-
-	writeb(0, &dev->cr);			/* stop I2C controller */
-	udelay(5);				/* let it shutdown in peace */
-	temp = set_i2c_bus_speed(dev, gd->i2c2_clk, speed);
-	if (gd->flags & GD_FLG_RELOC)
-		i2c_bus_speed[1] = temp;
-	writeb(slaveadd << 1, &dev->adr);	/* write slave address */
-	writeb(0x0, &dev->sr);			/* clear status register */
-	writeb(I2C_CR_MEN, &dev->cr);		/* start I2C controller */
+#ifdef CONFIG_SYS_I2C2_OFFSET
+	bus_num = 2;
+#else
+	bus_num = 1;
 #endif
+	for (i = 0; i < bus_num; i++) {
+		dev = i2c_dev[i];
+
+		writeb(0, &dev->cr);		/* stop I2C controller */
+		udelay(5);			/* let it shutdown in peace */
+		temp = set_i2c_bus_speed(dev, get_i2c_clock(i), speed);
+		if (gd->flags & GD_FLG_RELOC)
+			i2c_bus_speed[i] = temp;
+		writeb(slaveadd << 1, &dev->adr);/* write slave address */
+		writeb(0x0, &dev->sr);		/* clear status register */
+		writeb(I2C_CR_MEN, &dev->cr);	/* start I2C controller */
+	}
 
 #ifdef CONFIG_SYS_I2C_BOARD_LATE_INIT
 	/* Call board specific i2c bus reset routine AFTER the bus has been
-- 
1.7.4.1

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

end of thread, other threads:[~2011-11-04  5:26 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-27  1:29 [U-Boot] [PATCH 1/2] Powerpc/i2c: Use the same initialize codes Chang-Ming.Huang at freescale.com
2011-10-27  1:29 ` [U-Boot] [PATCH 2/2] Powerpc/i2c: Force i2c to become bus master out of reset Chang-Ming.Huang at freescale.com
2011-10-27  6:36   ` Heiko Schocher
2011-10-27  7:25   ` Joakim Tjernlund
2011-10-27  7:40     ` Huang Changming-R66093
2011-10-27  7:51       ` Huang Changming-R66093
2011-10-27  8:10         ` Joakim Tjernlund
2011-10-27  9:10           ` Huang Changming-R66093
2011-10-27  9:26           ` Huang Changming-R66093
2011-10-27 10:21             ` Joakim Tjernlund
2011-10-28  5:21               ` Huang Changming-R66093
2011-10-28  6:34                 ` Heiko Schocher
2011-10-28  7:56                   ` Huang Changming-R66093
2011-10-27  8:04       ` Joakim Tjernlund
2011-11-04  5:26 ` [U-Boot] [PATCH 1/2] Powerpc/i2c: Use the same initialize codes Heiko Schocher

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.