]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
regulator: rk808: Add rk808_reg_ops_ranges for LDO3
authorWadim Egorov <w.egorov@phytec.de>
Tue, 26 Apr 2016 14:54:04 +0000 (16:54 +0200)
committerMark Brown <broonie@kernel.org>
Wed, 27 Apr 2016 16:03:34 +0000 (17:03 +0100)
LDO_REG3 descriptor is using linear_ranges.
Add and use proper ops for LDO_REG3.

Signed-off-by: Wadim Egorov <w.egorov@phytec.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/regulator/rk808-regulator.c

index 67f72feed8158a1fb2db2de62672e6bfa374e2a7..6601ab5fcc2d7e8d94ac9ae64a2274177a87e058 100644 (file)
@@ -238,6 +238,21 @@ static int rk808_set_suspend_voltage(struct regulator_dev *rdev, int uv)
                                  sel);
 }
 
+static int rk808_set_suspend_voltage_range(struct regulator_dev *rdev, int uv)
+{
+       unsigned int reg;
+       int sel = regulator_map_voltage_linear_range(rdev, uv, uv);
+
+       if (sel < 0)
+               return -EINVAL;
+
+       reg = rdev->desc->vsel_reg + RK808_SLP_REG_OFFSET;
+
+       return regmap_update_bits(rdev->regmap, reg,
+                                 rdev->desc->vsel_mask,
+                                 sel);
+}
+
 static int rk808_set_suspend_enable(struct regulator_dev *rdev)
 {
        unsigned int reg;
@@ -288,6 +303,19 @@ static struct regulator_ops rk808_reg_ops = {
        .set_suspend_disable    = rk808_set_suspend_disable,
 };
 
+static struct regulator_ops rk808_reg_ops_ranges = {
+       .list_voltage           = regulator_list_voltage_linear_range,
+       .map_voltage            = regulator_map_voltage_linear_range,
+       .get_voltage_sel        = regulator_get_voltage_sel_regmap,
+       .set_voltage_sel        = regulator_set_voltage_sel_regmap,
+       .enable                 = regulator_enable_regmap,
+       .disable                = regulator_disable_regmap,
+       .is_enabled             = regulator_is_enabled_regmap,
+       .set_suspend_voltage    = rk808_set_suspend_voltage_range,
+       .set_suspend_enable     = rk808_set_suspend_enable,
+       .set_suspend_disable    = rk808_set_suspend_disable,
+};
+
 static struct regulator_ops rk808_switch_ops = {
        .enable                 = regulator_enable_regmap,
        .disable                = regulator_disable_regmap,
@@ -383,7 +411,7 @@ static const struct regulator_desc rk808_reg[] = {
                .name = "LDO_REG3",
                .supply_name = "vcc7",
                .id = RK808_ID_LDO3,
-               .ops = &rk808_reg_ops,
+               .ops = &rk808_reg_ops_ranges,
                .type = REGULATOR_VOLTAGE,
                .n_voltages = 16,
                .linear_ranges = rk808_ldo3_voltage_ranges,