Unverified Commit 61eb1b24 authored by Axel Lin's avatar Axel Lin Committed by Mark Brown
Browse files

regulator: hi655x: Fix pass wrong pointer to config.driver_data



Current code sets config.driver_data to a zero initialized regulator
which is obviously wrong. Fix it.

Fixes: 4618119b ("regulator: hi655x: enable regulator for hi655x PMIC")
Signed-off-by: default avatarAxel Lin <axel.lin@ingics.com>
Link: https://lore.kernel.org/r/20210620132715.60215-1-axel.lin@ingics.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent cb2381cb
Loading
Loading
Loading
Loading
+5 −11
Original line number Diff line number Diff line
@@ -72,7 +72,7 @@ enum hi655x_regulator_id {
static int hi655x_is_enabled(struct regulator_dev *rdev)
{
	unsigned int value = 0;
	struct hi655x_regulator *regulator = rdev_get_drvdata(rdev);
	const struct hi655x_regulator *regulator = rdev_get_drvdata(rdev);

	regmap_read(rdev->regmap, regulator->status_reg, &value);
	return (value & rdev->desc->enable_mask);
@@ -80,7 +80,7 @@ static int hi655x_is_enabled(struct regulator_dev *rdev)

static int hi655x_disable(struct regulator_dev *rdev)
{
	struct hi655x_regulator *regulator = rdev_get_drvdata(rdev);
	const struct hi655x_regulator *regulator = rdev_get_drvdata(rdev);

	return regmap_write(rdev->regmap, regulator->disable_reg,
			    rdev->desc->enable_mask);
@@ -169,7 +169,6 @@ static const struct hi655x_regulator regulators[] = {
static int hi655x_regulator_probe(struct platform_device *pdev)
{
	unsigned int i;
	struct hi655x_regulator *regulator;
	struct hi655x_pmic *pmic;
	struct regulator_config config = { };
	struct regulator_dev *rdev;
@@ -180,22 +179,17 @@ static int hi655x_regulator_probe(struct platform_device *pdev)
		return -ENODEV;
	}

	regulator = devm_kzalloc(&pdev->dev, sizeof(*regulator), GFP_KERNEL);
	if (!regulator)
		return -ENOMEM;

	platform_set_drvdata(pdev, regulator);

	config.dev = pdev->dev.parent;
	config.regmap = pmic->regmap;
	config.driver_data = regulator;
	for (i = 0; i < ARRAY_SIZE(regulators); i++) {
		config.driver_data = (void *) &regulators[i];

		rdev = devm_regulator_register(&pdev->dev,
					       &regulators[i].rdesc,
					       &config);
		if (IS_ERR(rdev)) {
			dev_err(&pdev->dev, "failed to register regulator %s\n",
				regulator->rdesc.name);
				regulators[i].rdesc.name);
			return PTR_ERR(rdev);
		}
	}