Skip to contentSkip to conversation

ot1200: setup i2c bus in board_early_init_f(..)

PATCH New Christian Gmeiner 2 participants 4 messages Jun 3, 2015 – Jun 8, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 ot1200: setup i2c bus in board_early_init_f(..)

Make it possible to use the i2c bus in SPL.

---
 board/bachmann/ot1200/ot1200.c | 40 ++++++++++++++++++++++------------------
 1 file changed, 22 insertions(+), 18 deletions(-)
board/bachmann/ot1200/ot1200.c +22 -18
index e434ed9..a33d496 100644
@@ -120,6 +120,27 @@ static void setup_iomux_features(void)
 		ARRAY_SIZE(feature_pads));
 }
 
+#define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
+
+/* I2C3 - IO expander  */
+static struct i2c_pads_info i2c_pad_info2 = {
+	.scl = {
+		.i2c_mode = MX6_PAD_EIM_D17__I2C3_SCL | PC,
+		.gpio_mode = MX6_PAD_EIM_D17__GPIO3_IO17 | PC,
+		.gp = IMX_GPIO_NR(3, 17)
+	},
+	.sda = {
+		.i2c_mode = MX6_PAD_EIM_D18__I2C3_SDA | PC,
+		.gpio_mode = MX6_PAD_EIM_D18__GPIO3_IO18 | PC,
+		.gp = IMX_GPIO_NR(3, 18)
+	}
+};
+
+static void setup_iomux_i2c(void)
+{
+	setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
+}
+
 static void ccgr_init(void)
 {
 	struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
@@ -151,6 +172,7 @@ int board_early_init_f(void)
 
 	setup_iomux_uart();
 	setup_iomux_spi();
+	setup_iomux_i2c();
 	setup_iomux_features();
 
 	return 0;
@@ -236,22 +258,6 @@ int board_mmc_init(bd_t *bis)
 	return 0;
 }
 
-#define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
-
-/* I2C3 - IO expander  */
-static struct i2c_pads_info i2c_pad_info2 = {
-	.scl = {
-		.i2c_mode = MX6_PAD_EIM_D17__I2C3_SCL | PC,
-		.gpio_mode = MX6_PAD_EIM_D17__GPIO3_IO17 | PC,
-		.gp = IMX_GPIO_NR(3, 17)
-	},
-	.sda = {
-		.i2c_mode = MX6_PAD_EIM_D18__I2C3_SDA | PC,
-		.gpio_mode = MX6_PAD_EIM_D18__GPIO3_IO18 | PC,
-		.gp = IMX_GPIO_NR(3, 18)
-	}
-};
-
 static iomux_v3_cfg_t const pwm_pad[] = {
 	MX6_PAD_SD1_CMD__PWM4_OUT | MUX_PAD_CTRL(OUTPUT_40OHM),
 };
@@ -315,8 +321,6 @@ int board_init(void)
 
 	backlight_lcd_off();
 
-	setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
-
 	leds_on();
 
 #ifdef CONFIG_CMD_SATA
Signature · 1 line
2.1.0
#1 lore raw

PATCH 2/2 ot1200: setup i2c bus 1 in setup_iomux_i2c()

On this bus there is a EEPROM containing EDID and ddr3 calibration information.

---
 board/bachmann/ot1200/ot1200.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
board/bachmann/ot1200/ot1200.c +15 -0
index a33d496..2237b7a 100644
@@ -122,6 +122,20 @@ static void setup_iomux_features(void)
 
 #define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
 
+/* I2C2 - EEPROM */
+static struct i2c_pads_info i2c_pad_info1 = {
+	.scl = {
+		.i2c_mode = MX6_PAD_EIM_EB2__I2C2_SCL | PC,
+		.gpio_mode = MX6_PAD_EIM_EB2__GPIO2_IO30 | PC,
+		.gp = IMX_GPIO_NR(2, 30)
+	},
+	.sda = {
+		.i2c_mode = MX6_PAD_EIM_D16__I2C2_SDA | PC,
+		.gpio_mode = MX6_PAD_EIM_D16__GPIO3_IO16 | PC,
+		.gp = IMX_GPIO_NR(3, 16)
+	}
+};
+
 /* I2C3 - IO expander  */
 static struct i2c_pads_info i2c_pad_info2 = {
 	.scl = {
@@ -138,6 +152,7 @@ static struct i2c_pads_info i2c_pad_info2 = {
 
 static void setup_iomux_i2c(void)
 {
+	setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
 	setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
 }
 
Signature · 1 line
2.1.0
#2 lore raw

PATCH 2/2 ot1200: setup i2c bus 1 in setup_iomux_i2c()

Quoted 35 lines · Christian Gmeiner

On this bus there is a EEPROM containing EDID and ddr3 calibration information.

---
 board/bachmann/ot1200/ot1200.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
board/bachmann/ot1200/ot1200.c +14 -0
index a33d496..2237b7a 100644
@@ -122,6 +122,20 @@ static void setup_iomux_features(void)
 
 #define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
 
+/* I2C2 - EEPROM */
+static struct i2c_pads_info i2c_pad_info1 = {
+	.scl = {
+		.i2c_mode = MX6_PAD_EIM_EB2__I2C2_SCL | PC,
+		.gpio_mode = MX6_PAD_EIM_EB2__GPIO2_IO30 | PC,
+		.gp = IMX_GPIO_NR(2, 30)
+	},
+	.sda = {
+		.i2c_mode = MX6_PAD_EIM_D16__I2C2_SDA | PC,
+		.gpio_mode = MX6_PAD_EIM_D16__GPIO3_IO16 | PC,
+		.gp = IMX_GPIO_NR(3, 16)
+	}
+};
+
 /* I2C3 - IO expander  */
 static struct i2c_pads_info i2c_pad_info2 = {
 	.scl = {

board/bachmann/ot1200/ot1200.c static struct i2c_pads_info i2c_pad_info2 = { · line 158

Quoted 7 lines
board/bachmann/ot1200/ot1200.c +1 -0
@@ -138,6 +152,7 @@ static struct i2c_pads_info i2c_pad_info2 = {
 
 static void setup_iomux_i2c(void)
 {
+	setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
 	setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
 }
 

Applied to u-boot-imx, thanks !

Best regards,
Stefano Babic

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
#3 lore raw

PATCH 1/2 ot1200: setup i2c bus in board_early_init_f(..)

In reply to Christian Gmeiner
Quoted 72 lines · Christian Gmeiner

Make it possible to use the i2c bus in SPL.

---
 board/bachmann/ot1200/ot1200.c | 40 ++++++++++++++++++++++------------------
 1 file changed, 22 insertions(+), 18 deletions(-)
board/bachmann/ot1200/ot1200.c +22 -16
index e434ed9..a33d496 100644
@@ -120,6 +120,27 @@ static void setup_iomux_features(void)
 		ARRAY_SIZE(feature_pads));
 }
 
+#define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
+
+/* I2C3 - IO expander  */
+static struct i2c_pads_info i2c_pad_info2 = {
+	.scl = {
+		.i2c_mode = MX6_PAD_EIM_D17__I2C3_SCL | PC,
+		.gpio_mode = MX6_PAD_EIM_D17__GPIO3_IO17 | PC,
+		.gp = IMX_GPIO_NR(3, 17)
+	},
+	.sda = {
+		.i2c_mode = MX6_PAD_EIM_D18__I2C3_SDA | PC,
+		.gpio_mode = MX6_PAD_EIM_D18__GPIO3_IO18 | PC,
+		.gp = IMX_GPIO_NR(3, 18)
+	}
+};
+
+static void setup_iomux_i2c(void)
+{
+	setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
+}
+
 static void ccgr_init(void)
 {
 	struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
@@ -151,6 +172,7 @@ int board_early_init_f(void)
 
 	setup_iomux_uart();
 	setup_iomux_spi();
+	setup_iomux_i2c();
 	setup_iomux_features();
 
 	return 0;
@@ -236,22 +258,6 @@ int board_mmc_init(bd_t *bis)
 	return 0;
 }
 
-#define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
-
-/* I2C3 - IO expander  */
-static struct i2c_pads_info i2c_pad_info2 = {
-	.scl = {
-		.i2c_mode = MX6_PAD_EIM_D17__I2C3_SCL | PC,
-		.gpio_mode = MX6_PAD_EIM_D17__GPIO3_IO17 | PC,
-		.gp = IMX_GPIO_NR(3, 17)
-	},
-	.sda = {
-		.i2c_mode = MX6_PAD_EIM_D18__I2C3_SDA | PC,
-		.gpio_mode = MX6_PAD_EIM_D18__GPIO3_IO18 | PC,
-		.gp = IMX_GPIO_NR(3, 18)
-	}
-};
-
 static iomux_v3_cfg_t const pwm_pad[] = {
 	MX6_PAD_SD1_CMD__PWM4_OUT | MUX_PAD_CTRL(OUTPUT_40OHM),
 };

board/bachmann/ot1200/ot1200.c int board_init(void) · line 326

Quoted 8 lines
board/bachmann/ot1200/ot1200.c +0 -2
@@ -315,8 +321,6 @@ int board_init(void)
 
 	backlight_lcd_off();
 
-	setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
-
 	leds_on();
 
 #ifdef CONFIG_CMD_SATA

Applied to u-boot-imx, thanks !

Best regards,
Stefano Babic

Signature · 5 lines
=====================================================================
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================