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

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.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 9d1c7319
Loading
Loading
Loading
Loading
+32 −14
Original line number Diff line number Diff line
@@ -425,41 +425,59 @@ static int max597x_setup_irq(struct device *dev,

static int max597x_regulator_probe(struct platform_device *pdev)
{


	struct max597x_data *max597x = dev_get_drvdata(pdev->dev.parent);
	struct max597x_data *max597x;
	struct regmap *regmap = dev_get_regmap(pdev->dev.parent, NULL);
	struct max597x_regulator *data;

	struct i2c_client *i2c = to_i2c_client(pdev->dev.parent);
	struct regulator_config config = { };
	struct regulator_dev *rdev;
	struct regulator_dev *rdevs[MAX5970_NUM_SWITCHES];
	int num_switches = max597x->num_switches;
	int num_switches;
	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++) {
		data =
		    devm_kzalloc(max597x->dev, sizeof(struct max597x_regulator),
		    devm_kzalloc(&i2c->dev, sizeof(struct max597x_regulator),
				 GFP_KERNEL);
		if (!data)
			return -ENOMEM;

		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)
			return ret;

		data->irng = max597x->irng[i];
		data->mon_rng = max597x->mon_rng[i];

		config.dev = max597x->dev;
		config.dev = &i2c->dev;
		config.driver_data = (void *)data;
		config.regmap = data->regmap;
		rdev = devm_regulator_register(max597x->dev,
		rdev = devm_regulator_register(&i2c->dev,
					       &regulators[i], &config);
		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);
			return PTR_ERR(rdev);
		}
@@ -467,12 +485,12 @@ static int max597x_regulator_probe(struct platform_device *pdev)
		max597x->shunt_micro_ohms[i] = data->shunt_micro_ohms;
	}

	if (max597x->irq) {
	if (i2c->irq) {
		ret =
		    max597x_setup_irq(max597x->dev, max597x->irq, rdevs, num_switches,
		    max597x_setup_irq(&i2c->dev, i2c->irq, rdevs, num_switches,
				      data);
		if (ret) {
			dev_err(max597x->dev, "IRQ setup failed");
			dev_err(&i2c->dev, "IRQ setup failed");
			return ret;
		}
	}