mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 20:24:12 +08:00
regulator: s2mps11: use scoped memory allocation to simplify probe
Allocate the memory with scoped/cleanup.h to reduce error handling (less error paths) and make the code a bit simpler. Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Link: https://patch.msgid.link/20240822161231.106744-1-krzysztof.kozlowski@linaro.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
5a38089fe4
commit
b8195520e8
@ -4,6 +4,7 @@
|
||||
// http://www.samsung.com
|
||||
|
||||
#include <linux/bug.h>
|
||||
#include <linux/cleanup.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/gpio/consumer.h>
|
||||
#include <linux/slab.h>
|
||||
@ -1120,7 +1121,6 @@ static const struct regulator_desc s2mpu02_regulators[] = {
|
||||
static int s2mps11_pmic_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct sec_pmic_dev *iodev = dev_get_drvdata(pdev->dev.parent);
|
||||
struct of_regulator_match *rdata = NULL;
|
||||
struct regulator_config config = { };
|
||||
struct s2mps11_info *s2mps11;
|
||||
unsigned int rdev_num = 0;
|
||||
@ -1170,7 +1170,8 @@ static int s2mps11_pmic_probe(struct platform_device *pdev)
|
||||
if (!s2mps11->ext_control_gpiod)
|
||||
return -ENOMEM;
|
||||
|
||||
rdata = kcalloc(rdev_num, sizeof(*rdata), GFP_KERNEL);
|
||||
struct of_regulator_match *rdata __free(kfree) =
|
||||
kcalloc(rdev_num, sizeof(*rdata), GFP_KERNEL);
|
||||
if (!rdata)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -1179,7 +1180,7 @@ static int s2mps11_pmic_probe(struct platform_device *pdev)
|
||||
|
||||
ret = s2mps11_pmic_dt_parse(pdev, rdata, s2mps11, rdev_num);
|
||||
if (ret)
|
||||
goto out;
|
||||
return ret;
|
||||
|
||||
platform_set_drvdata(pdev, s2mps11);
|
||||
|
||||
@ -1201,10 +1202,9 @@ static int s2mps11_pmic_probe(struct platform_device *pdev)
|
||||
regulator = devm_regulator_register(&pdev->dev,
|
||||
®ulators[i], &config);
|
||||
if (IS_ERR(regulator)) {
|
||||
ret = PTR_ERR(regulator);
|
||||
dev_err(&pdev->dev, "regulator init failed for %d\n",
|
||||
i);
|
||||
goto out;
|
||||
return PTR_ERR(regulator);
|
||||
}
|
||||
|
||||
if (config.ena_gpiod) {
|
||||
@ -1214,15 +1214,12 @@ static int s2mps11_pmic_probe(struct platform_device *pdev)
|
||||
dev_err(&pdev->dev,
|
||||
"failed to enable GPIO control over %s: %d\n",
|
||||
regulator->desc->name, ret);
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
kfree(rdata);
|
||||
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct platform_device_id s2mps11_pmic_id[] = {
|
||||
|
Loading…
Reference in New Issue
Block a user