regulator: bd71815: Get rid of struct bd71815_pmic
The content of bd71815_regulators is never changed, no need to duplicate it, thus remove descs[BD71815_REGULATOR_CNT]. The *regmap, *dev and *rdev[BD71815_REGULATOR_CNT] are not really needed. The *gps is unused. Thus the struct bd71815_pmic can be removed. Signed-off-by: Axel Lin <axel.lin@ingics.com> Reviewed-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com> Link: https://lore.kernel.org/r/20210607143002.1600017-1-axel.lin@ingics.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
ba6622c433
commit
0ea461b4f2
@ -28,14 +28,6 @@ struct bd71815_regulator {
|
|||||||
const struct rohm_dvs_config *dvs;
|
const struct rohm_dvs_config *dvs;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct bd71815_pmic {
|
|
||||||
struct bd71815_regulator descs[BD71815_REGULATOR_CNT];
|
|
||||||
struct regmap *regmap;
|
|
||||||
struct device *dev;
|
|
||||||
struct gpio_descs *gps;
|
|
||||||
struct regulator_dev *rdev[BD71815_REGULATOR_CNT];
|
|
||||||
};
|
|
||||||
|
|
||||||
static const int bd7181x_wled_currents[] = {
|
static const int bd7181x_wled_currents[] = {
|
||||||
10, 20, 30, 50, 70, 100, 200, 300, 500, 700, 1000, 2000, 3000, 4000,
|
10, 20, 30, 50, 70, 100, 200, 300, 500, 700, 1000, 2000, 3000, 4000,
|
||||||
5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000,
|
5000, 6000, 7000, 8000, 9000, 10000, 11000, 12000, 13000, 14000, 15000,
|
||||||
@ -302,14 +294,13 @@ static int bd7181x_led_set_current_limit(struct regulator_dev *rdev,
|
|||||||
|
|
||||||
static int bd7181x_buck12_get_voltage_sel(struct regulator_dev *rdev)
|
static int bd7181x_buck12_get_voltage_sel(struct regulator_dev *rdev)
|
||||||
{
|
{
|
||||||
struct bd71815_pmic *pmic = rdev_get_drvdata(rdev);
|
|
||||||
int rid = rdev_get_id(rdev);
|
int rid = rdev_get_id(rdev);
|
||||||
int ret, regh, regl, val;
|
int ret, regh, regl, val;
|
||||||
|
|
||||||
regh = BD71815_REG_BUCK1_VOLT_H + rid * 0x2;
|
regh = BD71815_REG_BUCK1_VOLT_H + rid * 0x2;
|
||||||
regl = BD71815_REG_BUCK1_VOLT_L + rid * 0x2;
|
regl = BD71815_REG_BUCK1_VOLT_L + rid * 0x2;
|
||||||
|
|
||||||
ret = regmap_read(pmic->regmap, regh, &val);
|
ret = regmap_read(rdev->regmap, regh, &val);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -321,7 +312,7 @@ static int bd7181x_buck12_get_voltage_sel(struct regulator_dev *rdev)
|
|||||||
* by BD71815_BUCK_DVSSEL bit
|
* by BD71815_BUCK_DVSSEL bit
|
||||||
*/
|
*/
|
||||||
if ((!(val & BD71815_BUCK_STBY_DVS)) && (!(val & BD71815_BUCK_DVSSEL)))
|
if ((!(val & BD71815_BUCK_STBY_DVS)) && (!(val & BD71815_BUCK_DVSSEL)))
|
||||||
ret = regmap_read(pmic->regmap, regl, &val);
|
ret = regmap_read(rdev->regmap, regl, &val);
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
@ -335,14 +326,13 @@ static int bd7181x_buck12_get_voltage_sel(struct regulator_dev *rdev)
|
|||||||
static int bd7181x_buck12_set_voltage_sel(struct regulator_dev *rdev,
|
static int bd7181x_buck12_set_voltage_sel(struct regulator_dev *rdev,
|
||||||
unsigned int sel)
|
unsigned int sel)
|
||||||
{
|
{
|
||||||
struct bd71815_pmic *pmic = rdev_get_drvdata(rdev);
|
|
||||||
int rid = rdev_get_id(rdev);
|
int rid = rdev_get_id(rdev);
|
||||||
int ret, val, reg, regh, regl;
|
int ret, val, reg, regh, regl;
|
||||||
|
|
||||||
regh = BD71815_REG_BUCK1_VOLT_H + rid*0x2;
|
regh = BD71815_REG_BUCK1_VOLT_H + rid*0x2;
|
||||||
regl = BD71815_REG_BUCK1_VOLT_L + rid*0x2;
|
regl = BD71815_REG_BUCK1_VOLT_L + rid*0x2;
|
||||||
|
|
||||||
ret = regmap_read(pmic->regmap, regh, &val);
|
ret = regmap_read(rdev->regmap, regh, &val);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -352,7 +342,7 @@ static int bd7181x_buck12_set_voltage_sel(struct regulator_dev *rdev,
|
|||||||
* voltages at runtime is not supported by this driver.
|
* voltages at runtime is not supported by this driver.
|
||||||
*/
|
*/
|
||||||
if (((val & BD71815_BUCK_STBY_DVS))) {
|
if (((val & BD71815_BUCK_STBY_DVS))) {
|
||||||
return regmap_update_bits(pmic->regmap, regh, BD71815_VOLT_MASK,
|
return regmap_update_bits(rdev->regmap, regh, BD71815_VOLT_MASK,
|
||||||
sel);
|
sel);
|
||||||
}
|
}
|
||||||
/* Update new voltage to the register which is not selected now */
|
/* Update new voltage to the register which is not selected now */
|
||||||
@ -361,12 +351,13 @@ static int bd7181x_buck12_set_voltage_sel(struct regulator_dev *rdev,
|
|||||||
else
|
else
|
||||||
reg = regh;
|
reg = regh;
|
||||||
|
|
||||||
ret = regmap_update_bits(pmic->regmap, reg, BD71815_VOLT_MASK, sel);
|
ret = regmap_update_bits(rdev->regmap, reg, BD71815_VOLT_MASK, sel);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
/* Select the other DVS register to be used */
|
/* Select the other DVS register to be used */
|
||||||
return regmap_update_bits(pmic->regmap, regh, BD71815_BUCK_DVSSEL, ~val);
|
return regmap_update_bits(rdev->regmap, regh, BD71815_BUCK_DVSSEL,
|
||||||
|
~val);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct regulator_ops bd7181x_ldo_regulator_ops = {
|
static const struct regulator_ops bd7181x_ldo_regulator_ops = {
|
||||||
@ -524,7 +515,7 @@ static const struct regulator_ops bd7181x_led_regulator_ops = {
|
|||||||
.dvs = (_dvs), \
|
.dvs = (_dvs), \
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct bd71815_regulator bd71815_regulators[] = {
|
static const struct bd71815_regulator bd71815_regulators[] = {
|
||||||
BD71815_BUCK12_REG(buck1, BD71815_BUCK1, BD71815_REG_BUCK1_VOLT_H,
|
BD71815_BUCK12_REG(buck1, BD71815_BUCK1, BD71815_REG_BUCK1_VOLT_H,
|
||||||
BD71815_REG_BUCK1_MODE, 800000, 2000000, 25000,
|
BD71815_REG_BUCK1_MODE, 800000, 2000000, 25000,
|
||||||
&buck1_dvs),
|
&buck1_dvs),
|
||||||
@ -570,24 +561,16 @@ static struct bd71815_regulator bd71815_regulators[] = {
|
|||||||
|
|
||||||
static int bd7181x_probe(struct platform_device *pdev)
|
static int bd7181x_probe(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct bd71815_pmic *pmic;
|
|
||||||
struct regulator_config config = {};
|
struct regulator_config config = {};
|
||||||
int i, ret;
|
int i, ret;
|
||||||
struct gpio_desc *ldo4_en;
|
struct gpio_desc *ldo4_en;
|
||||||
|
struct regmap *regmap;
|
||||||
|
|
||||||
pmic = devm_kzalloc(&pdev->dev, sizeof(*pmic), GFP_KERNEL);
|
regmap = dev_get_regmap(pdev->dev.parent, NULL);
|
||||||
if (!pmic)
|
if (!regmap) {
|
||||||
return -ENOMEM;
|
dev_err(&pdev->dev, "No parent regmap\n");
|
||||||
|
|
||||||
memcpy(pmic->descs, bd71815_regulators, sizeof(pmic->descs));
|
|
||||||
|
|
||||||
pmic->dev = &pdev->dev;
|
|
||||||
pmic->regmap = dev_get_regmap(pdev->dev.parent, NULL);
|
|
||||||
if (!pmic->regmap) {
|
|
||||||
dev_err(pmic->dev, "No parent regmap\n");
|
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
platform_set_drvdata(pdev, pmic);
|
|
||||||
ldo4_en = devm_gpiod_get_from_of_node(&pdev->dev,
|
ldo4_en = devm_gpiod_get_from_of_node(&pdev->dev,
|
||||||
pdev->dev.parent->of_node,
|
pdev->dev.parent->of_node,
|
||||||
"rohm,vsel-gpios", 0,
|
"rohm,vsel-gpios", 0,
|
||||||
@ -601,23 +584,23 @@ static int bd7181x_probe(struct platform_device *pdev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Disable to go to ship-mode */
|
/* Disable to go to ship-mode */
|
||||||
ret = regmap_update_bits(pmic->regmap, BD71815_REG_PWRCTRL,
|
ret = regmap_update_bits(regmap, BD71815_REG_PWRCTRL, RESTARTEN, 0);
|
||||||
RESTARTEN, 0);
|
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
config.dev = pdev->dev.parent;
|
config.dev = pdev->dev.parent;
|
||||||
config.regmap = pmic->regmap;
|
config.regmap = regmap;
|
||||||
|
|
||||||
for (i = 0; i < BD71815_REGULATOR_CNT; i++) {
|
for (i = 0; i < BD71815_REGULATOR_CNT; i++) {
|
||||||
struct regulator_desc *desc;
|
const struct regulator_desc *desc;
|
||||||
struct regulator_dev *rdev;
|
struct regulator_dev *rdev;
|
||||||
|
|
||||||
desc = &pmic->descs[i].desc;
|
desc = &bd71815_regulators[i].desc;
|
||||||
|
|
||||||
if (i == BD71815_LDO4)
|
if (i == BD71815_LDO4)
|
||||||
config.ena_gpiod = ldo4_en;
|
config.ena_gpiod = ldo4_en;
|
||||||
|
else
|
||||||
config.driver_data = pmic;
|
config.ena_gpiod = NULL;
|
||||||
|
|
||||||
rdev = devm_regulator_register(&pdev->dev, desc, &config);
|
rdev = devm_regulator_register(&pdev->dev, desc, &config);
|
||||||
if (IS_ERR(rdev)) {
|
if (IS_ERR(rdev)) {
|
||||||
@ -626,8 +609,6 @@ static int bd7181x_probe(struct platform_device *pdev)
|
|||||||
desc->name);
|
desc->name);
|
||||||
return PTR_ERR(rdev);
|
return PTR_ERR(rdev);
|
||||||
}
|
}
|
||||||
config.ena_gpiod = NULL;
|
|
||||||
pmic->rdev[i] = rdev;
|
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user