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: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com> Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Родитель
7b51a82121
Коммит
466affa067
|
@ -147,11 +147,14 @@ 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,
|
||||
id ? "wlf,ldo2ena" : "wlf,ldo1ena",
|
||||
GPIOD_OUT_LOW |
|
||||
GPIOD_FLAGS_BIT_NONEXCLUSIVE);
|
||||
/*
|
||||
* 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);
|
||||
if (IS_ERR(gpiod))
|
||||
return PTR_ERR(gpiod);
|
||||
config.ena_gpiod = gpiod;
|
||||
|
@ -184,6 +187,7 @@ static int wm8994_ldo_probe(struct platform_device *pdev)
|
|||
return 0;
|
||||
|
||||
err:
|
||||
gpiod_put(gpiod);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче