Commit 7f62cb88 authored by Naresh Solanki's avatar Naresh Solanki Committed by Mark Brown

regulator: max597x: Align for simple_mfd_i2c driver

Use regmap provided by simple_mfd_i2c driver and remove unused variable.
Identify device variant by checking compatible property in DT.
Signed-off-by: default avatarNaresh Solanki <Naresh.Solanki@9elements.com>
Link: https://lore.kernel.org/r/20230216075302.68935-1-Naresh.Solanki@9elements.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 9d1c7319
...@@ -425,41 +425,59 @@ static int max597x_setup_irq(struct device *dev, ...@@ -425,41 +425,59 @@ static int max597x_setup_irq(struct device *dev,
static int max597x_regulator_probe(struct platform_device *pdev) static int max597x_regulator_probe(struct platform_device *pdev)
{ {
struct max597x_data *max597x;
struct regmap *regmap = dev_get_regmap(pdev->dev.parent, NULL);
struct max597x_data *max597x = dev_get_drvdata(pdev->dev.parent);
struct max597x_regulator *data; struct max597x_regulator *data;
struct i2c_client *i2c = to_i2c_client(pdev->dev.parent);
struct regulator_config config = { }; struct regulator_config config = { };
struct regulator_dev *rdev; struct regulator_dev *rdev;
struct regulator_dev *rdevs[MAX5970_NUM_SWITCHES]; struct regulator_dev *rdevs[MAX5970_NUM_SWITCHES];
int num_switches = max597x->num_switches; int num_switches;
int ret, i; int ret, i;
if (!regmap)
return -EPROBE_DEFER;
max597x = devm_kzalloc(&i2c->dev, sizeof(struct max597x_data), GFP_KERNEL);
if (!max597x)
return -ENOMEM;
i2c_set_clientdata(i2c, max597x);
if (of_device_is_compatible(i2c->dev.of_node, "maxim,max5978"))
max597x->num_switches = MAX597x_TYPE_MAX5978;
else if (of_device_is_compatible(i2c->dev.of_node, "maxim,max5970"))
max597x->num_switches = MAX597x_TYPE_MAX5970;
else
return -ENODEV;
i2c_set_clientdata(i2c, max597x);
num_switches = max597x->num_switches;
for (i = 0; i < num_switches; i++) { for (i = 0; i < num_switches; i++) {
data = data =
devm_kzalloc(max597x->dev, sizeof(struct max597x_regulator), devm_kzalloc(&i2c->dev, sizeof(struct max597x_regulator),
GFP_KERNEL); GFP_KERNEL);
if (!data) if (!data)
return -ENOMEM; return -ENOMEM;
data->num_switches = num_switches; data->num_switches = num_switches;
data->regmap = max597x->regmap; data->regmap = regmap;
ret = max597x_adc_range(data->regmap, i, &max597x->irng[i], &max597x->mon_rng[i]); ret = max597x_adc_range(regmap, i, &max597x->irng[i], &max597x->mon_rng[i]);
if (ret < 0) if (ret < 0)
return ret; return ret;
data->irng = max597x->irng[i]; data->irng = max597x->irng[i];
data->mon_rng = max597x->mon_rng[i]; data->mon_rng = max597x->mon_rng[i];
config.dev = max597x->dev; config.dev = &i2c->dev;
config.driver_data = (void *)data; config.driver_data = (void *)data;
config.regmap = data->regmap; config.regmap = data->regmap;
rdev = devm_regulator_register(max597x->dev, rdev = devm_regulator_register(&i2c->dev,
&regulators[i], &config); &regulators[i], &config);
if (IS_ERR(rdev)) { if (IS_ERR(rdev)) {
dev_err(max597x->dev, "failed to register regulator %s\n", dev_err(&i2c->dev, "failed to register regulator %s\n",
regulators[i].name); regulators[i].name);
return PTR_ERR(rdev); return PTR_ERR(rdev);
} }
...@@ -467,12 +485,12 @@ static int max597x_regulator_probe(struct platform_device *pdev) ...@@ -467,12 +485,12 @@ static int max597x_regulator_probe(struct platform_device *pdev)
max597x->shunt_micro_ohms[i] = data->shunt_micro_ohms; max597x->shunt_micro_ohms[i] = data->shunt_micro_ohms;
} }
if (max597x->irq) { if (i2c->irq) {
ret = ret =
max597x_setup_irq(max597x->dev, max597x->irq, rdevs, num_switches, max597x_setup_irq(&i2c->dev, i2c->irq, rdevs, num_switches,
data); data);
if (ret) { if (ret) {
dev_err(max597x->dev, "IRQ setup failed"); dev_err(&i2c->dev, "IRQ setup failed");
return ret; return ret;
} }
} }
......
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