Skip to contentSkip to conversation

ls1021aqds: set the default I2C channel before DDR init

PATCH New Alison Wang 2 participants 2 messages Nov 6, 2014 – Dec 11, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ls1021aqds: set the default I2C channel before DDR init

From: Chenhui Zhao <[email protected]>

When resuming from deep sleep, the I2C channel may not be in the default channel. So, switch to the default channel before accessing DDR SPD.

---
 board/freescale/ls1021aqds/ls1021aqds.c | 32 +++++++++++++++++++-------------
 1 file changed, 19 insertions(+), 13 deletions(-)
board/freescale/ls1021aqds/ls1021aqds.c +19 -13
index 485f412..7edc828 100644
@@ -137,8 +137,27 @@ unsigned long get_board_ddr_clk(void)
 	return 66666666;
 }
 
+int select_i2c_ch_pca9547(u8 ch)
+{
+	int ret;
+
+	ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
+	if (ret) {
+		puts("PCA: failed to select proper channel\n");
+		return ret;
+	}
+
+	return 0;
+}
+
 int dram_init(void)
 {
+	/*
+	 * When resuming from deep sleep, the I2C channel may not be
+	 * in the default channel. So, switch to the default channel
+	 * before accessing DDR SPD.
+	 */
+	select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
 	gd->ram_size = initdram(0);
 
 	return 0;
@@ -157,19 +176,6 @@ int board_mmc_init(bd_t *bis)
 }
 #endif
 
-int select_i2c_ch_pca9547(u8 ch)
-{
-	int ret;
-
-	ret = i2c_write(I2C_MUX_PCA_ADDR_PRI, 0, 1, &ch, 1);
-	if (ret) {
-		puts("PCA: failed to select proper channel\n");
-		return ret;
-	}
-
-	return 0;
-}
-
 int board_early_init_f(void)
 {
 	struct ccsr_scfg *scfg = (struct ccsr_scfg *)CONFIG_SYS_FSL_SCFG_ADDR;
Signature · 1 line
2.1.0.27.g96db324
#1 lore raw

PATCH 1/1 ls1021aqds: set the default I2C channel before DDR init

Quoted 8 lines · Alison Wang

From: Chenhui Zhao <[email protected]>

When resuming from deep sleep, the I2C channel may not be in the default channel. So, switch to the default channel before accessing DDR SPD.

---

Applied to u-boot-fsl-qoriq master, awaiting upstream.

York