diff options
author | Wenbin Song <wenbin.song@nxp.com> | 2016-03-09 13:38:23 +0800 |
---|---|---|
committer | York Sun <york.sun@nxp.com> | 2016-03-21 12:42:15 -0700 |
commit | 1be8d10be42441d720076c23a2eb66a1323dbbc4 (patch) | |
tree | 1a95f59bb806ac5dbe60c7742841bf148f981d56 /board/freescale | |
parent | f8008f144b01b6b2f64ccac00dc3f1131687c74e (diff) | |
download | u-boot-imx-1be8d10be42441d720076c23a2eb66a1323dbbc4.zip u-boot-imx-1be8d10be42441d720076c23a2eb66a1323dbbc4.tar.gz u-boot-imx-1be8d10be42441d720076c23a2eb66a1323dbbc4.tar.bz2 |
freescale: vid: Return i2c mux to default channel
IR chip is on one of the channels on multiplexed I2C-bus.
Reset to default channel after accessing.
Signed-off-by: Wenbin Song <wenbin.song@nxp.com>
Reviewed-by: York Sun <york.sun@nxp.com>
Diffstat (limited to 'board/freescale')
-rw-r--r-- | board/freescale/common/vid.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/board/freescale/common/vid.c b/board/freescale/common/vid.c index 1bd65a8..a6a132a 100644 --- a/board/freescale/common/vid.c +++ b/board/freescale/common/vid.c @@ -454,6 +454,9 @@ int adjust_vdd(ulong vdd_override) exit: if (re_enable) enable_interrupts(); + + i2c_multiplexer_select_vid_channel(I2C_MUX_CH_DEFAULT); + return ret; } @@ -469,7 +472,7 @@ static int print_vdd(void) ret = find_ir_chip_on_i2c(); if (ret < 0) { printf("VID: Could not find voltage regulator on I2C.\n"); - return -1; + goto exit; } else { i2caddress = ret; debug("VID: IR Chip found on I2C address 0x%02x\n", i2caddress); @@ -481,11 +484,14 @@ static int print_vdd(void) vdd_last = read_voltage(i2caddress); if (vdd_last < 0) { printf("VID: Couldn't read sensor abort VID adjustment\n"); - return -1; + goto exit; } printf("VID: Core voltage is at %d mV\n", vdd_last); +exit: + i2c_multiplexer_select_vid_channel(I2C_MUX_CH_DEFAULT); + + return ret < 0 ? -1 : 0; - return 0; } static int do_vdd_override(cmd_tbl_t *cmdtp, |