Commit f34a2692 authored by Axel Lin's avatar Axel Lin Committed by Mark Brown

regulator: anatop: Remove unneeded fields from struct anatop_regulator

These fields are only used in anatop_regulator_probe() so use local
variables instead. The *initdata is not used so can be removed.
The *anatop is renamed to *regmap for better readability.
Use u32 instead of int for the variables used as third argument of
of_property_read_u32().
Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 6e1f22ee
...@@ -23,18 +23,10 @@ ...@@ -23,18 +23,10 @@
#define LDO_FET_FULL_ON 0x1f #define LDO_FET_FULL_ON 0x1f
struct anatop_regulator { struct anatop_regulator {
u32 control_reg;
struct regmap *anatop;
int vol_bit_shift;
int vol_bit_width;
u32 delay_reg; u32 delay_reg;
int delay_bit_shift; int delay_bit_shift;
int delay_bit_width; int delay_bit_width;
int min_bit_val;
int min_voltage;
int max_voltage;
struct regulator_desc rdesc; struct regulator_desc rdesc;
struct regulator_init_data *initdata;
bool bypass; bool bypass;
int sel; int sel;
}; };
...@@ -55,7 +47,7 @@ static int anatop_regmap_set_voltage_time_sel(struct regulator_dev *reg, ...@@ -55,7 +47,7 @@ static int anatop_regmap_set_voltage_time_sel(struct regulator_dev *reg,
* to calculate how many steps LDO need to * to calculate how many steps LDO need to
* ramp up, and how much delay needed. (us) * ramp up, and how much delay needed. (us)
*/ */
regmap_read(anatop_reg->anatop, anatop_reg->delay_reg, &val); regmap_read(reg->regmap, anatop_reg->delay_reg, &val);
val = (val >> anatop_reg->delay_bit_shift) & val = (val >> anatop_reg->delay_bit_shift) &
((1 << anatop_reg->delay_bit_width) - 1); ((1 << anatop_reg->delay_bit_width) - 1);
ret = (new_sel - old_sel) * (LDO_RAMP_UP_UNIT_IN_CYCLES << ret = (new_sel - old_sel) * (LDO_RAMP_UP_UNIT_IN_CYCLES <<
...@@ -170,6 +162,13 @@ static int anatop_regulator_probe(struct platform_device *pdev) ...@@ -170,6 +162,13 @@ static int anatop_regulator_probe(struct platform_device *pdev)
struct anatop_regulator *sreg; struct anatop_regulator *sreg;
struct regulator_init_data *initdata; struct regulator_init_data *initdata;
struct regulator_config config = { }; struct regulator_config config = { };
struct regmap *regmap;
u32 control_reg;
u32 vol_bit_shift;
u32 vol_bit_width;
u32 min_bit_val;
u32 min_voltage;
u32 max_voltage;
int ret = 0; int ret = 0;
u32 val; u32 val;
...@@ -192,48 +191,41 @@ static int anatop_regulator_probe(struct platform_device *pdev) ...@@ -192,48 +191,41 @@ static int anatop_regulator_probe(struct platform_device *pdev)
return -ENOMEM; return -ENOMEM;
initdata->supply_regulator = "vin"; initdata->supply_regulator = "vin";
sreg->initdata = initdata;
anatop_np = of_get_parent(np); anatop_np = of_get_parent(np);
if (!anatop_np) if (!anatop_np)
return -ENODEV; return -ENODEV;
sreg->anatop = syscon_node_to_regmap(anatop_np); regmap = syscon_node_to_regmap(anatop_np);
of_node_put(anatop_np); of_node_put(anatop_np);
if (IS_ERR(sreg->anatop)) if (IS_ERR(regmap))
return PTR_ERR(sreg->anatop); return PTR_ERR(regmap);
ret = of_property_read_u32(np, "anatop-reg-offset", ret = of_property_read_u32(np, "anatop-reg-offset", &control_reg);
&sreg->control_reg);
if (ret) { if (ret) {
dev_err(dev, "no anatop-reg-offset property set\n"); dev_err(dev, "no anatop-reg-offset property set\n");
return ret; return ret;
} }
ret = of_property_read_u32(np, "anatop-vol-bit-width", ret = of_property_read_u32(np, "anatop-vol-bit-width", &vol_bit_width);
&sreg->vol_bit_width);
if (ret) { if (ret) {
dev_err(dev, "no anatop-vol-bit-width property set\n"); dev_err(dev, "no anatop-vol-bit-width property set\n");
return ret; return ret;
} }
ret = of_property_read_u32(np, "anatop-vol-bit-shift", ret = of_property_read_u32(np, "anatop-vol-bit-shift", &vol_bit_shift);
&sreg->vol_bit_shift);
if (ret) { if (ret) {
dev_err(dev, "no anatop-vol-bit-shift property set\n"); dev_err(dev, "no anatop-vol-bit-shift property set\n");
return ret; return ret;
} }
ret = of_property_read_u32(np, "anatop-min-bit-val", ret = of_property_read_u32(np, "anatop-min-bit-val", &min_bit_val);
&sreg->min_bit_val);
if (ret) { if (ret) {
dev_err(dev, "no anatop-min-bit-val property set\n"); dev_err(dev, "no anatop-min-bit-val property set\n");
return ret; return ret;
} }
ret = of_property_read_u32(np, "anatop-min-voltage", ret = of_property_read_u32(np, "anatop-min-voltage", &min_voltage);
&sreg->min_voltage);
if (ret) { if (ret) {
dev_err(dev, "no anatop-min-voltage property set\n"); dev_err(dev, "no anatop-min-voltage property set\n");
return ret; return ret;
} }
ret = of_property_read_u32(np, "anatop-max-voltage", ret = of_property_read_u32(np, "anatop-max-voltage", &max_voltage);
&sreg->max_voltage);
if (ret) { if (ret) {
dev_err(dev, "no anatop-max-voltage property set\n"); dev_err(dev, "no anatop-max-voltage property set\n");
return ret; return ret;
...@@ -247,24 +239,23 @@ static int anatop_regulator_probe(struct platform_device *pdev) ...@@ -247,24 +239,23 @@ static int anatop_regulator_probe(struct platform_device *pdev)
of_property_read_u32(np, "anatop-delay-bit-shift", of_property_read_u32(np, "anatop-delay-bit-shift",
&sreg->delay_bit_shift); &sreg->delay_bit_shift);
rdesc->n_voltages = (sreg->max_voltage - sreg->min_voltage) / 25000 + 1 rdesc->n_voltages = (max_voltage - min_voltage) / 25000 + 1
+ sreg->min_bit_val; + min_bit_val;
rdesc->min_uV = sreg->min_voltage; rdesc->min_uV = min_voltage;
rdesc->uV_step = 25000; rdesc->uV_step = 25000;
rdesc->linear_min_sel = sreg->min_bit_val; rdesc->linear_min_sel = min_bit_val;
rdesc->vsel_reg = sreg->control_reg; rdesc->vsel_reg = control_reg;
rdesc->vsel_mask = ((1 << sreg->vol_bit_width) - 1) << rdesc->vsel_mask = ((1 << vol_bit_width) - 1) << vol_bit_shift;
sreg->vol_bit_shift;
rdesc->min_dropout_uV = 125000; rdesc->min_dropout_uV = 125000;
config.dev = &pdev->dev; config.dev = &pdev->dev;
config.init_data = initdata; config.init_data = initdata;
config.driver_data = sreg; config.driver_data = sreg;
config.of_node = pdev->dev.of_node; config.of_node = pdev->dev.of_node;
config.regmap = sreg->anatop; config.regmap = regmap;
/* Only core regulators have the ramp up delay configuration. */ /* Only core regulators have the ramp up delay configuration. */
if (sreg->control_reg && sreg->delay_bit_width) { if (control_reg && sreg->delay_bit_width) {
rdesc->ops = &anatop_core_rops; rdesc->ops = &anatop_core_rops;
ret = regmap_read(config.regmap, rdesc->vsel_reg, &val); ret = regmap_read(config.regmap, rdesc->vsel_reg, &val);
...@@ -273,7 +264,7 @@ static int anatop_regulator_probe(struct platform_device *pdev) ...@@ -273,7 +264,7 @@ static int anatop_regulator_probe(struct platform_device *pdev)
return ret; return ret;
} }
sreg->sel = (val & rdesc->vsel_mask) >> sreg->vol_bit_shift; sreg->sel = (val & rdesc->vsel_mask) >> vol_bit_shift;
if (sreg->sel == LDO_FET_FULL_ON) { if (sreg->sel == LDO_FET_FULL_ON) {
sreg->sel = 0; sreg->sel = 0;
sreg->bypass = true; sreg->bypass = true;
...@@ -306,7 +297,7 @@ static int anatop_regulator_probe(struct platform_device *pdev) ...@@ -306,7 +297,7 @@ static int anatop_regulator_probe(struct platform_device *pdev)
anatop_rops.disable = regulator_disable_regmap; anatop_rops.disable = regulator_disable_regmap;
anatop_rops.is_enabled = regulator_is_enabled_regmap; anatop_rops.is_enabled = regulator_is_enabled_regmap;
rdesc->enable_reg = sreg->control_reg; rdesc->enable_reg = control_reg;
rdesc->enable_mask = BIT(enable_bit); rdesc->enable_mask = BIT(enable_bit);
} }
} }
......
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