dm: treewide: Rename 'platdata' variables to just 'plat'
[platform/kernel/u-boot.git] / drivers / power / regulator / s2mps11_regulator.c
index 3af20e6..1c6d835 100644 (file)
@@ -1,8 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  *  Copyright (C) 2018 Samsung Electronics
  *  Jaehoon Chung <jh80.chung@samsung.com>
- *
- * SPDX-License-Identifier:    GPL-2.0
  */
 
 #include <common.h>
 #include <errno.h>
 #include <dm.h>
 #include <i2c.h>
+#include <linux/delay.h>
 #include <power/pmic.h>
 #include <power/regulator.h>
 #include <power/s2mps11.h>
 
-DECLARE_GLOBAL_DATA_PTR;
-
 #define MODE(_id, _val, _name) { \
        .id = _id, \
        .register_value = _val, \
@@ -307,9 +305,9 @@ static int buck_set_mode(struct udevice *dev, int mode)
 
 static int s2mps11_buck_probe(struct udevice *dev)
 {
-       struct dm_regulator_uclass_platdata *uc_pdata;
+       struct dm_regulator_uclass_plat *uc_pdata;
 
-       uc_pdata = dev_get_uclass_platdata(dev);
+       uc_pdata = dev_get_uclass_plat(dev);
 
        uc_pdata->type = REGULATOR_TYPE_BUCK;
        uc_pdata->mode = s2mps11_buck_modes;
@@ -349,6 +347,8 @@ static int s2mps11_ldo_hex2volt(int ldo, int hex)
        case 11:
        case 22:
        case 23:
+       case 27:
+       case 35:
                uV = hex * S2MPS11_LDO_STEP + S2MPS11_LDO_UV_MIN;
                break;
        default:
@@ -369,6 +369,8 @@ static int s2mps11_ldo_volt2hex(int ldo, int uV)
        case 11:
        case 22:
        case 23:
+       case 27:
+       case 35:
                hex = (uV - S2MPS11_LDO_UV_MIN) / S2MPS11_LDO_STEP;
                break;
        default:
@@ -550,7 +552,16 @@ static int ldo_get_enable(struct udevice *dev)
 
 static int ldo_set_enable(struct udevice *dev, bool enable)
 {
-       return s2mps11_ldo_enable(dev, PMIC_OP_SET, &enable);
+       int ret;
+
+       ret = s2mps11_ldo_enable(dev, PMIC_OP_SET, &enable);
+       if (ret)
+               return ret;
+
+       /* Wait the "enable delay" for voltage to start to rise */
+       udelay(15);
+
+       return 0;
 }
 
 static int ldo_get_mode(struct udevice *dev)
@@ -570,9 +581,9 @@ static int ldo_set_mode(struct udevice *dev, int mode)
 
 static int s2mps11_ldo_probe(struct udevice *dev)
 {
-       struct dm_regulator_uclass_platdata *uc_pdata;
+       struct dm_regulator_uclass_plat *uc_pdata;
 
-       uc_pdata = dev_get_uclass_platdata(dev);
+       uc_pdata = dev_get_uclass_plat(dev);
        uc_pdata->type = REGULATOR_TYPE_LDO;
        uc_pdata->mode = s2mps11_ldo_modes;
        uc_pdata->mode_count = ARRAY_SIZE(s2mps11_ldo_modes);