OSDN Git Service

regulator: lp87565: Add 4-phase lp87561 regulator support
authorKeerthy <j-keerthy@ti.com>
Wed, 12 Jun 2019 14:46:20 +0000 (20:16 +0530)
committerLee Jones <lee.jones@linaro.org>
Mon, 17 Jun 2019 07:00:24 +0000 (08:00 +0100)
The LP8756x family has a single output 4-phase regulator
configuration. Add support for the same. The control
lies in the master buck which is buck0 for 4-phase
configuration. Enable/disable/voltage set happen via
buck0 registers.

Data Sheet: https://www.ti.com/lit/ds/symlink/lp87561-q1.pdf

Signed-off-by: Keerthy <j-keerthy@ti.com>
Acked-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/regulator/lp87565-regulator.c

index 81eb4b8..af00d1f 100644 (file)
@@ -153,6 +153,12 @@ static const struct lp87565_regulator regulators[] = {
                          LP87565_REG_BUCK2_CTRL_1,
                          LP87565_BUCK_CTRL_1_EN, 3230,
                          buck0_1_2_3_ranges, LP87565_REG_BUCK2_CTRL_2),
+       LP87565_REGULATOR("BUCK3210", LP87565_BUCK_3210, "buck3210",
+                         lp87565_buck_ops, 256, LP87565_REG_BUCK0_VOUT,
+                         LP87565_BUCK_VSET, LP87565_REG_BUCK0_CTRL_1,
+                         LP87565_BUCK_CTRL_1_EN |
+                         LP87565_BUCK_CTRL_1_FPWM_MP_0_2, 3230,
+                         buck0_1_2_3_ranges, LP87565_REG_BUCK0_CTRL_2),
 };
 
 static int lp87565_regulator_probe(struct platform_device *pdev)
@@ -169,9 +175,18 @@ static int lp87565_regulator_probe(struct platform_device *pdev)
        config.driver_data = lp87565;
        config.regmap = lp87565->regmap;
 
-       if (lp87565->dev_type == LP87565_DEVICE_TYPE_LP87565_Q1) {
+       switch (lp87565->dev_type) {
+       case LP87565_DEVICE_TYPE_LP87565_Q1:
                min_idx = LP87565_BUCK_10;
                max_idx = LP87565_BUCK_23;
+               break;
+       case LP87565_DEVICE_TYPE_LP87561_Q1:
+               min_idx = LP87565_BUCK_3210;
+               max_idx = LP87565_BUCK_3210;
+       default:
+               dev_err(lp87565->dev, "Invalid lp config %d\n",
+                       lp87565->dev_type);
+               return -EINVAL;
        }
 
        for (i = min_idx; i <= max_idx; i++) {