mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-26 07:20:54 +07:00
max8903_charger: Convert to using managed resources
Use managed resource functions devm_request_threaded_irq and devm_power_supply_register to simplify error handling. To be compatible with the change, various gotos are replaced with direct returns and unneeded labels are dropped. Also, remove max8903_remove as it is now redundant. Signed-off-by: Vaishali Thakkar <vthakkar1994@gmail.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
This commit is contained in:
parent
50bddb99c1
commit
0df2deeab4
@ -201,8 +201,7 @@ static int max8903_probe(struct platform_device *pdev)
|
||||
|
||||
if (pdata->dc_valid == false && pdata->usb_valid == false) {
|
||||
dev_err(dev, "No valid power sources.\n");
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (pdata->dc_valid) {
|
||||
@ -216,8 +215,7 @@ static int max8903_probe(struct platform_device *pdev)
|
||||
} else {
|
||||
dev_err(dev, "When DC is wired, DOK and DCM should"
|
||||
" be wired as well.\n");
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
return -EINVAL;
|
||||
}
|
||||
} else {
|
||||
if (pdata->dcm) {
|
||||
@ -225,8 +223,7 @@ static int max8903_probe(struct platform_device *pdev)
|
||||
gpio_set_value(pdata->dcm, 0);
|
||||
else {
|
||||
dev_err(dev, "Invalid pin: dcm.\n");
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -238,8 +235,7 @@ static int max8903_probe(struct platform_device *pdev)
|
||||
} else {
|
||||
dev_err(dev, "When USB is wired, UOK should be wired."
|
||||
"as well.\n");
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
@ -248,32 +244,28 @@ static int max8903_probe(struct platform_device *pdev)
|
||||
gpio_set_value(pdata->cen, (ta_in || usb_in) ? 0 : 1);
|
||||
} else {
|
||||
dev_err(dev, "Invalid pin: cen.\n");
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (pdata->chg) {
|
||||
if (!gpio_is_valid(pdata->chg)) {
|
||||
dev_err(dev, "Invalid pin: chg.\n");
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (pdata->flt) {
|
||||
if (!gpio_is_valid(pdata->flt)) {
|
||||
dev_err(dev, "Invalid pin: flt.\n");
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
if (pdata->usus) {
|
||||
if (!gpio_is_valid(pdata->usus)) {
|
||||
dev_err(dev, "Invalid pin: usus.\n");
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
@ -291,85 +283,56 @@ static int max8903_probe(struct platform_device *pdev)
|
||||
|
||||
psy_cfg.drv_data = data;
|
||||
|
||||
data->psy = power_supply_register(dev, &data->psy_desc, &psy_cfg);
|
||||
data->psy = devm_power_supply_register(dev, &data->psy_desc, &psy_cfg);
|
||||
if (IS_ERR(data->psy)) {
|
||||
dev_err(dev, "failed: power supply register.\n");
|
||||
ret = PTR_ERR(data->psy);
|
||||
goto err;
|
||||
return PTR_ERR(data->psy);
|
||||
}
|
||||
|
||||
if (pdata->dc_valid) {
|
||||
ret = request_threaded_irq(gpio_to_irq(pdata->dok),
|
||||
NULL, max8903_dcin,
|
||||
IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
|
||||
"MAX8903 DC IN", data);
|
||||
ret = devm_request_threaded_irq(dev, gpio_to_irq(pdata->dok),
|
||||
NULL, max8903_dcin,
|
||||
IRQF_TRIGGER_FALLING |
|
||||
IRQF_TRIGGER_RISING,
|
||||
"MAX8903 DC IN", data);
|
||||
if (ret) {
|
||||
dev_err(dev, "Cannot request irq %d for DC (%d)\n",
|
||||
gpio_to_irq(pdata->dok), ret);
|
||||
goto err_psy;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
if (pdata->usb_valid) {
|
||||
ret = request_threaded_irq(gpio_to_irq(pdata->uok),
|
||||
NULL, max8903_usbin,
|
||||
IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
|
||||
"MAX8903 USB IN", data);
|
||||
ret = devm_request_threaded_irq(dev, gpio_to_irq(pdata->uok),
|
||||
NULL, max8903_usbin,
|
||||
IRQF_TRIGGER_FALLING |
|
||||
IRQF_TRIGGER_RISING,
|
||||
"MAX8903 USB IN", data);
|
||||
if (ret) {
|
||||
dev_err(dev, "Cannot request irq %d for USB (%d)\n",
|
||||
gpio_to_irq(pdata->uok), ret);
|
||||
goto err_dc_irq;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
if (pdata->flt) {
|
||||
ret = request_threaded_irq(gpio_to_irq(pdata->flt),
|
||||
NULL, max8903_fault,
|
||||
IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
|
||||
"MAX8903 Fault", data);
|
||||
ret = devm_request_threaded_irq(dev, gpio_to_irq(pdata->flt),
|
||||
NULL, max8903_fault,
|
||||
IRQF_TRIGGER_FALLING |
|
||||
IRQF_TRIGGER_RISING,
|
||||
"MAX8903 Fault", data);
|
||||
if (ret) {
|
||||
dev_err(dev, "Cannot request irq %d for Fault (%d)\n",
|
||||
gpio_to_irq(pdata->flt), ret);
|
||||
goto err_usb_irq;
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_usb_irq:
|
||||
if (pdata->usb_valid)
|
||||
free_irq(gpio_to_irq(pdata->uok), data);
|
||||
err_dc_irq:
|
||||
if (pdata->dc_valid)
|
||||
free_irq(gpio_to_irq(pdata->dok), data);
|
||||
err_psy:
|
||||
power_supply_unregister(data->psy);
|
||||
err:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int max8903_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct max8903_data *data = platform_get_drvdata(pdev);
|
||||
|
||||
if (data) {
|
||||
struct max8903_pdata *pdata = &data->pdata;
|
||||
|
||||
if (pdata->flt)
|
||||
free_irq(gpio_to_irq(pdata->flt), data);
|
||||
if (pdata->usb_valid)
|
||||
free_irq(gpio_to_irq(pdata->uok), data);
|
||||
if (pdata->dc_valid)
|
||||
free_irq(gpio_to_irq(pdata->dok), data);
|
||||
power_supply_unregister(data->psy);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver max8903_driver = {
|
||||
.probe = max8903_probe,
|
||||
.remove = max8903_remove,
|
||||
.driver = {
|
||||
.name = "max8903-charger",
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user