dm: power: max77686: Correct BUCK register access
authorSimon Glass <sjg@chromium.org>
Fri, 3 Jul 2015 00:16:04 +0000 (18:16 -0600)
committerSimon Glass <sjg@chromium.org>
Thu, 6 Aug 2015 03:06:12 +0000 (21:06 -0600)
Some regulators use the wrong voltage register and thus it is not possible
to control them. Fix this.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Przemyslaw Marczak <p.marczak@samsung.com>
drivers/power/regulator/max77686.c

index 37ebe94521c99691a563044eb15b27fbb303aaea..21173fc3ee3eca4a1e5579a7aa8bb8de96b7cb28 100644 (file)
@@ -61,10 +61,14 @@ static struct dm_regulator_mode max77686_buck_mode_onoff[] = {
        MODE(OPMODE_ON, MAX77686_BUCK_MODE_ON, "ON"),
 };
 
-static const char max77686_buck_addr[] = {
+static const char max77686_buck_ctrl[] = {
        0xff, 0x10, 0x12, 0x1c, 0x26, 0x30, 0x32, 0x34, 0x36, 0x38
 };
 
+static const char max77686_buck_out[] = {
+       0xff, 0x11, 0x14, 0x1e, 0x28, 0x31, 0x33, 0x35, 0x37, 0x39
+};
+
 static int max77686_buck_volt2hex(int buck, int uV)
 {
        unsigned int hex = 0;
@@ -368,7 +372,7 @@ static int max77686_buck_val(struct udevice *dev, int op, int *uV)
                *uV = 0;
 
        /* &buck_out = ctrl + 1 */
-       adr = max77686_buck_addr[buck] + 1;
+       adr = max77686_buck_out[buck];
 
        /* mask */
        switch (buck) {
@@ -549,7 +553,7 @@ static int max77686_buck_mode(struct udevice *dev, int op, int *opmode)
                return -EINVAL;
        }
 
-       adr = max77686_buck_addr[buck];
+       adr = max77686_buck_ctrl[buck];
 
        /* mask */
        switch (buck) {