Commit 18f3c625 authored by Matti Vaittinen's avatar Matti Vaittinen Committed by Lee Jones

regulator: bd718x7, bd71828: Use ramp-delay helper

Use generic regamp ramp-delay helper function instead of implementing own.
Signed-off-by: default avatarMatti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Acked-by: default avatarMark Brown <broonie@kernel.org>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent 80a71170
...@@ -90,38 +90,7 @@ static const struct linear_range bd71828_ldo_volts[] = { ...@@ -90,38 +90,7 @@ static const struct linear_range bd71828_ldo_volts[] = {
REGULATOR_LINEAR_RANGE(3300000, 0x32, 0x3f, 0), REGULATOR_LINEAR_RANGE(3300000, 0x32, 0x3f, 0),
}; };
static int bd71828_set_ramp_delay(struct regulator_dev *rdev, int ramp_delay) static const unsigned int bd71828_ramp_delay[] = { 2500, 5000, 10000, 20000 };
{
unsigned int val;
switch (ramp_delay) {
case 1 ... 2500:
val = 0;
break;
case 2501 ... 5000:
val = 1;
break;
case 5001 ... 10000:
val = 2;
break;
case 10001 ... 20000:
val = 3;
break;
default:
val = 3;
dev_err(&rdev->dev,
"ramp_delay: %d not supported, setting 20mV/uS",
ramp_delay);
}
/*
* On BD71828 the ramp delay level control reg is at offset +2 to
* enable reg
*/
return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg + 2,
BD71828_MASK_RAMP_DELAY,
val << (ffs(BD71828_MASK_RAMP_DELAY) - 1));
}
static int buck_set_hw_dvs_levels(struct device_node *np, static int buck_set_hw_dvs_levels(struct device_node *np,
const struct regulator_desc *desc, const struct regulator_desc *desc,
...@@ -185,7 +154,7 @@ static const struct regulator_ops bd71828_dvs_buck_ops = { ...@@ -185,7 +154,7 @@ static const struct regulator_ops bd71828_dvs_buck_ops = {
.set_voltage_sel = regulator_set_voltage_sel_regmap, .set_voltage_sel = regulator_set_voltage_sel_regmap,
.get_voltage_sel = regulator_get_voltage_sel_regmap, .get_voltage_sel = regulator_get_voltage_sel_regmap,
.set_voltage_time_sel = regulator_set_voltage_time_sel, .set_voltage_time_sel = regulator_set_voltage_time_sel,
.set_ramp_delay = bd71828_set_ramp_delay, .set_ramp_delay = regulator_set_ramp_delay_regmap,
}; };
static const struct regulator_ops bd71828_ldo_ops = { static const struct regulator_ops bd71828_ldo_ops = {
...@@ -219,6 +188,10 @@ static const struct bd71828_regulator_data bd71828_rdata[] = { ...@@ -219,6 +188,10 @@ static const struct bd71828_regulator_data bd71828_rdata[] = {
.enable_mask = BD71828_MASK_RUN_EN, .enable_mask = BD71828_MASK_RUN_EN,
.vsel_reg = BD71828_REG_BUCK1_VOLT, .vsel_reg = BD71828_REG_BUCK1_VOLT,
.vsel_mask = BD71828_MASK_BUCK1267_VOLT, .vsel_mask = BD71828_MASK_BUCK1267_VOLT,
.ramp_delay_table = bd71828_ramp_delay,
.n_ramp_values = ARRAY_SIZE(bd71828_ramp_delay),
.ramp_reg = BD71828_REG_BUCK1_MODE,
.ramp_mask = BD71828_MASK_RAMP_DELAY,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_parse_cb = buck_set_hw_dvs_levels, .of_parse_cb = buck_set_hw_dvs_levels,
}, },
...@@ -261,6 +234,10 @@ static const struct bd71828_regulator_data bd71828_rdata[] = { ...@@ -261,6 +234,10 @@ static const struct bd71828_regulator_data bd71828_rdata[] = {
.enable_mask = BD71828_MASK_RUN_EN, .enable_mask = BD71828_MASK_RUN_EN,
.vsel_reg = BD71828_REG_BUCK2_VOLT, .vsel_reg = BD71828_REG_BUCK2_VOLT,
.vsel_mask = BD71828_MASK_BUCK1267_VOLT, .vsel_mask = BD71828_MASK_BUCK1267_VOLT,
.ramp_delay_table = bd71828_ramp_delay,
.n_ramp_values = ARRAY_SIZE(bd71828_ramp_delay),
.ramp_reg = BD71828_REG_BUCK2_MODE,
.ramp_mask = BD71828_MASK_RAMP_DELAY,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_parse_cb = buck_set_hw_dvs_levels, .of_parse_cb = buck_set_hw_dvs_levels,
}, },
...@@ -421,6 +398,10 @@ static const struct bd71828_regulator_data bd71828_rdata[] = { ...@@ -421,6 +398,10 @@ static const struct bd71828_regulator_data bd71828_rdata[] = {
.enable_mask = BD71828_MASK_RUN_EN, .enable_mask = BD71828_MASK_RUN_EN,
.vsel_reg = BD71828_REG_BUCK6_VOLT, .vsel_reg = BD71828_REG_BUCK6_VOLT,
.vsel_mask = BD71828_MASK_BUCK1267_VOLT, .vsel_mask = BD71828_MASK_BUCK1267_VOLT,
.ramp_delay_table = bd71828_ramp_delay,
.n_ramp_values = ARRAY_SIZE(bd71828_ramp_delay),
.ramp_reg = BD71828_REG_BUCK6_MODE,
.ramp_mask = BD71828_MASK_RAMP_DELAY,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_parse_cb = buck_set_hw_dvs_levels, .of_parse_cb = buck_set_hw_dvs_levels,
}, },
...@@ -458,6 +439,10 @@ static const struct bd71828_regulator_data bd71828_rdata[] = { ...@@ -458,6 +439,10 @@ static const struct bd71828_regulator_data bd71828_rdata[] = {
.enable_mask = BD71828_MASK_RUN_EN, .enable_mask = BD71828_MASK_RUN_EN,
.vsel_reg = BD71828_REG_BUCK7_VOLT, .vsel_reg = BD71828_REG_BUCK7_VOLT,
.vsel_mask = BD71828_MASK_BUCK1267_VOLT, .vsel_mask = BD71828_MASK_BUCK1267_VOLT,
.ramp_delay_table = bd71828_ramp_delay,
.n_ramp_values = ARRAY_SIZE(bd71828_ramp_delay),
.ramp_reg = BD71828_REG_BUCK7_MODE,
.ramp_mask = BD71828_MASK_RAMP_DELAY,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_parse_cb = buck_set_hw_dvs_levels, .of_parse_cb = buck_set_hw_dvs_levels,
}, },
......
...@@ -86,37 +86,7 @@ static const struct regulator_ops BD718XX_HWOPNAME(name) = { \ ...@@ -86,37 +86,7 @@ static const struct regulator_ops BD718XX_HWOPNAME(name) = { \
* 10: 2.50mV/usec 10mV 4uS * 10: 2.50mV/usec 10mV 4uS
* 11: 1.25mV/usec 10mV 8uS * 11: 1.25mV/usec 10mV 8uS
*/ */
static int bd718xx_buck1234_set_ramp_delay(struct regulator_dev *rdev, static const unsigned int bd718xx_ramp_delay[] = { 10000, 5000, 2500, 1250 };
int ramp_delay)
{
int id = rdev_get_id(rdev);
unsigned int ramp_value;
dev_dbg(&rdev->dev, "Buck[%d] Set Ramp = %d\n", id + 1,
ramp_delay);
switch (ramp_delay) {
case 1 ... 1250:
ramp_value = BUCK_RAMPRATE_1P25MV;
break;
case 1251 ... 2500:
ramp_value = BUCK_RAMPRATE_2P50MV;
break;
case 2501 ... 5000:
ramp_value = BUCK_RAMPRATE_5P00MV;
break;
case 5001 ... 10000:
ramp_value = BUCK_RAMPRATE_10P00MV;
break;
default:
ramp_value = BUCK_RAMPRATE_10P00MV;
dev_err(&rdev->dev,
"%s: ramp_delay: %d not supported, setting 10000mV//us\n",
rdev->desc->name, ramp_delay);
}
return regmap_update_bits(rdev->regmap, BD718XX_REG_BUCK1_CTRL + id,
BUCK_RAMPRATE_MASK, ramp_value << 6);
}
/* These functions are used when regulators are under HW state machine control. /* These functions are used when regulators are under HW state machine control.
* We assume PMIC is in RUN state because SW running and able to query the * We assume PMIC is in RUN state because SW running and able to query the
...@@ -378,7 +348,7 @@ static const struct regulator_ops bd71837_buck34_ops_hwctrl = { ...@@ -378,7 +348,7 @@ static const struct regulator_ops bd71837_buck34_ops_hwctrl = {
.set_voltage_sel = regulator_set_voltage_sel_regmap, .set_voltage_sel = regulator_set_voltage_sel_regmap,
.get_voltage_sel = regulator_get_voltage_sel_regmap, .get_voltage_sel = regulator_get_voltage_sel_regmap,
.set_voltage_time_sel = regulator_set_voltage_time_sel, .set_voltage_time_sel = regulator_set_voltage_time_sel,
.set_ramp_delay = bd718xx_buck1234_set_ramp_delay, .set_ramp_delay = regulator_set_ramp_delay_regmap,
}; };
/* /*
...@@ -387,7 +357,7 @@ static const struct regulator_ops bd71837_buck34_ops_hwctrl = { ...@@ -387,7 +357,7 @@ static const struct regulator_ops bd71837_buck34_ops_hwctrl = {
BD718XX_OPS(bd718xx_dvs_buck_regulator_ops, regulator_list_voltage_linear_range, BD718XX_OPS(bd718xx_dvs_buck_regulator_ops, regulator_list_voltage_linear_range,
NULL, regulator_set_voltage_sel_regmap, NULL, regulator_set_voltage_sel_regmap,
regulator_get_voltage_sel_regmap, regulator_set_voltage_time_sel, regulator_get_voltage_sel_regmap, regulator_set_voltage_time_sel,
bd718xx_buck1234_set_ramp_delay); /* bd718xx_buck1234_set_ramp_delay */ regulator_set_ramp_delay_regmap);
/* /*
* BD71837 BUCK1/2/3/4 * BD71837 BUCK1/2/3/4
...@@ -645,6 +615,10 @@ static struct bd718xx_regulator_data bd71847_regulators[] = { ...@@ -645,6 +615,10 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
.enable_mask = BD718XX_BUCK_EN, .enable_mask = BD718XX_BUCK_EN,
.enable_time = BD71847_BUCK1_STARTUP_TIME, .enable_time = BD71847_BUCK1_STARTUP_TIME,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.ramp_delay_table = bd718xx_ramp_delay,
.n_ramp_values = ARRAY_SIZE(bd718xx_ramp_delay),
.ramp_reg = BD718XX_REG_BUCK1_CTRL,
.ramp_mask = BUCK_RAMPRATE_MASK,
.of_parse_cb = buck_set_hw_dvs_levels, .of_parse_cb = buck_set_hw_dvs_levels,
}, },
.dvs = { .dvs = {
...@@ -678,6 +652,10 @@ static struct bd718xx_regulator_data bd71847_regulators[] = { ...@@ -678,6 +652,10 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
.enable_reg = BD718XX_REG_BUCK2_CTRL, .enable_reg = BD718XX_REG_BUCK2_CTRL,
.enable_mask = BD718XX_BUCK_EN, .enable_mask = BD718XX_BUCK_EN,
.enable_time = BD71847_BUCK2_STARTUP_TIME, .enable_time = BD71847_BUCK2_STARTUP_TIME,
.ramp_delay_table = bd718xx_ramp_delay,
.n_ramp_values = ARRAY_SIZE(bd718xx_ramp_delay),
.ramp_reg = BD718XX_REG_BUCK2_CTRL,
.ramp_mask = BUCK_RAMPRATE_MASK,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_parse_cb = buck_set_hw_dvs_levels, .of_parse_cb = buck_set_hw_dvs_levels,
}, },
...@@ -985,6 +963,10 @@ static struct bd718xx_regulator_data bd71837_regulators[] = { ...@@ -985,6 +963,10 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
.enable_reg = BD718XX_REG_BUCK1_CTRL, .enable_reg = BD718XX_REG_BUCK1_CTRL,
.enable_mask = BD718XX_BUCK_EN, .enable_mask = BD718XX_BUCK_EN,
.enable_time = BD71837_BUCK1_STARTUP_TIME, .enable_time = BD71837_BUCK1_STARTUP_TIME,
.ramp_delay_table = bd718xx_ramp_delay,
.n_ramp_values = ARRAY_SIZE(bd718xx_ramp_delay),
.ramp_reg = BD718XX_REG_BUCK1_CTRL,
.ramp_mask = BUCK_RAMPRATE_MASK,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_parse_cb = buck_set_hw_dvs_levels, .of_parse_cb = buck_set_hw_dvs_levels,
}, },
...@@ -1019,6 +1001,10 @@ static struct bd718xx_regulator_data bd71837_regulators[] = { ...@@ -1019,6 +1001,10 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
.enable_reg = BD718XX_REG_BUCK2_CTRL, .enable_reg = BD718XX_REG_BUCK2_CTRL,
.enable_mask = BD718XX_BUCK_EN, .enable_mask = BD718XX_BUCK_EN,
.enable_time = BD71837_BUCK2_STARTUP_TIME, .enable_time = BD71837_BUCK2_STARTUP_TIME,
.ramp_delay_table = bd718xx_ramp_delay,
.n_ramp_values = ARRAY_SIZE(bd718xx_ramp_delay),
.ramp_reg = BD718XX_REG_BUCK2_CTRL,
.ramp_mask = BUCK_RAMPRATE_MASK,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_parse_cb = buck_set_hw_dvs_levels, .of_parse_cb = buck_set_hw_dvs_levels,
}, },
...@@ -1050,6 +1036,10 @@ static struct bd718xx_regulator_data bd71837_regulators[] = { ...@@ -1050,6 +1036,10 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
.enable_reg = BD71837_REG_BUCK3_CTRL, .enable_reg = BD71837_REG_BUCK3_CTRL,
.enable_mask = BD718XX_BUCK_EN, .enable_mask = BD718XX_BUCK_EN,
.enable_time = BD71837_BUCK3_STARTUP_TIME, .enable_time = BD71837_BUCK3_STARTUP_TIME,
.ramp_delay_table = bd718xx_ramp_delay,
.n_ramp_values = ARRAY_SIZE(bd718xx_ramp_delay),
.ramp_reg = BD71837_REG_BUCK3_CTRL,
.ramp_mask = BUCK_RAMPRATE_MASK,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_parse_cb = buck_set_hw_dvs_levels, .of_parse_cb = buck_set_hw_dvs_levels,
}, },
...@@ -1079,6 +1069,10 @@ static struct bd718xx_regulator_data bd71837_regulators[] = { ...@@ -1079,6 +1069,10 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
.enable_reg = BD71837_REG_BUCK4_CTRL, .enable_reg = BD71837_REG_BUCK4_CTRL,
.enable_mask = BD718XX_BUCK_EN, .enable_mask = BD718XX_BUCK_EN,
.enable_time = BD71837_BUCK4_STARTUP_TIME, .enable_time = BD71837_BUCK4_STARTUP_TIME,
.ramp_delay_table = bd718xx_ramp_delay,
.n_ramp_values = ARRAY_SIZE(bd718xx_ramp_delay),
.ramp_reg = BD71837_REG_BUCK4_CTRL,
.ramp_mask = BUCK_RAMPRATE_MASK,
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_parse_cb = buck_set_hw_dvs_levels, .of_parse_cb = buck_set_hw_dvs_levels,
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment