board/freescale/vid: Add correction for ltc3882 read error.
authorPriyanka Jain <priyanka.jain@nxp.com>
Thu, 11 Oct 2018 05:11:23 +0000 (05:11 +0000)
committerYork Sun <york.sun@nxp.com>
Thu, 6 Dec 2018 22:37:19 +0000 (14:37 -0800)
Voltage regulator LTC3882 device has 0.5% voltage read error.
So for NXP SoC devices this generally equates to 2mV

Update set_voltage_to_LTC for below:
1.Add coorection of upto 2mV in voltage comparison
  to take care of voltage read error of voltage regulator
2.Add loop max count kept as 100 to avoid infinte loop.

Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com>
Reviewed-by: York Sun <york.sun@nxp.com>
board/freescale/common/vid.c

index eb5cf88dd2a582b5316b282ad5ce18e9b366f13f..db158cb2c2e6b1e63637b37db202aecbcc2f5933 100644 (file)
@@ -318,6 +318,7 @@ static int set_voltage_to_IR(int i2caddress, int vdd)
 static int set_voltage_to_LTC(int i2caddress, int vdd)
 {
        int ret, vdd_last, vdd_target = vdd;
+       int count = 100, temp = 0;
 
        /* Scale up to the LTC resolution is 1/4096V */
        vdd = (vdd * 4096) / 1000;
@@ -343,7 +344,9 @@ static int set_voltage_to_LTC(int i2caddress, int vdd)
                        printf("VID: Couldn't read sensor abort VID adjust\n");
                        return -1;
                }
-       } while (vdd_last != vdd_target);
+               count--;
+               temp = vdd_last - vdd_target;
+       } while ((abs(temp) > 2)  && (count > 0));
 
        return vdd_last;
 }