ls1021aqds: set the default I2C channel before DDR init
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.
Signed-off-by Chenhui Zhao <[email protected]>
--- board/freescale/ls1021aqds/ls1021aqds.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-)
board/freescale/ls1021aqds/ls1021aqds.c +19 -13
@@ -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
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.
Signed-off-by Chenhui Zhao <[email protected]>---
Applied to u-boot-fsl-qoriq master, awaiting upstream.
York