From: Wenbin Song <wenbin.song@nxp.com>
Date: Wed, 9 Mar 2016 05:38:23 +0000 (+0800)
Subject: freescale: vid: Return i2c mux to default channel
X-Git-Tag: v2025.01-rc5-pxa1908~9867^2~3
X-Git-Url: http://git.dujemihanovic.xyz/repo?a=commitdiff_plain;h=1be8d10be42441d720076c23a2eb66a1323dbbc4;p=u-boot.git

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>
---

diff --git a/board/freescale/common/vid.c b/board/freescale/common/vid.c
index 1bd65a8e55..a6a132ab19 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,