Unverified Commit 466affa0 authored by Charles Keepax's avatar Charles Keepax Committed by Mark Brown
Browse files

regulator: wm8994: Don't use devres for enable GPIOs



The regulator core takes over managing the lifetime of the enable GPIO
once the regulator is registered. As such we shouldn't register the
enable GPIO using devm, or it will be freed twice.

Reported-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Tested-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 7b51a821
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -147,8 +147,11 @@ static int wm8994_ldo_probe(struct platform_device *pdev)
	config.regmap = wm8994->regmap;
	config.init_data = &ldo->init_data;

	/* Look up LDO enable GPIO from the parent device node */
	gpiod = devm_gpiod_get_optional(pdev->dev.parent,
	/*
	 * Look up LDO enable GPIO from the parent device node, we don't
	 * use devm because the regulator core will free the GPIO
	 */
	gpiod = gpiod_get_optional(pdev->dev.parent,
				   id ? "wlf,ldo2ena" : "wlf,ldo1ena",
				   GPIOD_OUT_LOW |
				   GPIOD_FLAGS_BIT_NONEXCLUSIVE);
@@ -184,6 +187,7 @@ static int wm8994_ldo_probe(struct platform_device *pdev)
	return 0;

err:
	gpiod_put(gpiod);
	return ret;
}