regulator: max77620: fix setting active discharge
Damon Duan [Thu, 19 Nov 2015 03:36:40 +0000 (11:36 +0800)]
MAX77620 has different settings to enable active
discharge:
-for Step-Down, need set nADE bit to 0
-for LDO, need set ADE bit to 1

Bug 1698711

Change-Id: I498b153ac11c32ef046e63b9bde5c286e17b3e2e
Signed-off-by: Damon Duan <danield@nvidia.com>
Reviewed-on: http://git-master/r/834996
Reviewed-by: Kerwin Wan <kerwinw@nvidia.com>
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Hayden Du <haydend@nvidia.com>

drivers/regulator/max77620-regulator.c
include/linux/mfd/max77620.h

index 59f1417..9a659cb 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Maxim MAX77620 Regulator driver
  *
- * Copyright (C) 2014 NVIDIA CORPORATION. All rights reserved.
+ * Copyright (C) 2014-2015 NVIDIA CORPORATION. All rights reserved.
  *
  * Author: Mallikarjun Kasoju <mkasoju@nvidia.com>
  *        Laxman Dewangan <ldewangan@nvidia.com>
@@ -641,13 +641,14 @@ static int max77620_regulator_preinit(struct max77620_regulator *reg, int id)
 
        if (ridata->constraints.enable_active_discharge ||
                ridata->constraints.disable_active_discharge) {
-               val = 0;
                if (rinfo->type == MAX77620_REGULATOR_TYPE_SD) {
                        mask = MAX77620_SD_CFG1_ADE_MASK;
+                       val = MAX77620_SD_CFG1_ADE_DISABLE;
                        if (ridata->constraints.enable_active_discharge)
                                val = MAX77620_SD_CFG1_ADE_ENABLE;
                } else {
                        mask = MAX77620_LDO_CFG2_ADE_MASK;
+                       val = MAX77620_LDO_CFG2_ADE_DISABLE;
                        if (ridata->constraints.enable_active_discharge)
                                val = MAX77620_LDO_CFG2_ADE_ENABLE;
                }
index c4c55f6..284fbcd 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Maxim MAX77620
  *
- * Copyright (C) 2014 NVIDIA CORPORATION. All rights reserved.
+ * Copyright (C) 2014-2015 NVIDIA CORPORATION. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
 #define MAX77620_SD_POWER_MODE_MASK    0x30
 #define MAX77620_SD_POWER_MODE_SHIFT   4
 #define MAX77620_SD_CFG1_ADE_MASK      BIT(3)
-#define MAX77620_SD_CFG1_ADE_DISABLE   0
-#define MAX77620_SD_CFG1_ADE_ENABLE    BIT(3)
+#define MAX77620_SD_CFG1_ADE_DISABLE   BIT(3)
+#define MAX77620_SD_CFG1_ADE_ENABLE    0
 #define MAX77620_SD_FPWM_MASK          0x04
 #define MAX77620_SD_FPWM_SHIFT         2
 #define MAX77620_SD_FSRADE_MASK                0x01