* [PATCH 00/21] Power supply register with devm
@ 2024-01-23 16:36 Andrew Davis
2024-01-23 16:36 ` [PATCH 01/21] power: supply: da9030: Use devm_power_supply_register() helper Andrew Davis
` (21 more replies)
0 siblings, 22 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Hello all,
This is a semi-automated series converting several drivers
under power/supply over to using devm_power_supply_register().
The more trivial cases are first, the last 3 drivers needed
a little pre-work to convert their IIO uses over to devm before
power_supply_register() could be switched.
Thanks,
Andrew
Andrew Davis (21):
power: supply: da9030: Use devm_power_supply_register() helper
power: supply: da9052: Use devm_power_supply_register() helper
power: supply: ds2760: Use devm_power_supply_register() helper
power: supply: goldfish: Use devm_power_supply_register() helper
power: supply: lp8727: Use devm_power_supply_register() helper
power: supply: lp8788: Use devm_power_supply_register() helper
power: supply: max14577: Use devm_power_supply_register() helper
power: supply: max77693: Use devm_power_supply_register() helper
power: supply: max8925: Use devm_power_supply_register() helper
power: supply: pcf50633: Use devm_power_supply_register() helper
power: supply: rt5033: Use devm_power_supply_register() helper
power: supply: tps65090: Use devm_power_supply_register() helper
power: supply: wm831x: Use devm_power_supply_register() helper
power: supply: wm831x: Use devm_power_supply_register() helper
power: supply: wm8350: Use devm_power_supply_register() helper
power: supply: da9150: Use devm_iio_channel_get() helper
power: supply: da9150: Use devm_power_supply_register() helper
power: supply: rx51: Use devm_iio_channel_get() helper
power: supply: rx51: Use devm_power_supply_register() helper
power: supply: twl4030_madc: Use devm_iio_channel_get() helper
power: supply: twl4030_madc: Use devm_power_supply_register() helper
drivers/power/supply/da9030_battery.c | 6 +-
drivers/power/supply/da9052-battery.c | 4 +-
drivers/power/supply/da9150-charger.c | 72 ++++++---------------
drivers/power/supply/ds2760_battery.c | 4 +-
drivers/power/supply/goldfish_battery.c | 24 ++-----
drivers/power/supply/lp8727_charger.c | 35 ++--------
drivers/power/supply/lp8788-charger.c | 21 ++----
drivers/power/supply/max14577_charger.c | 6 +-
drivers/power/supply/max77693_charger.c | 8 +--
drivers/power/supply/max8925_power.c | 36 +++--------
drivers/power/supply/pcf50633-charger.c | 23 +++----
drivers/power/supply/rt5033_battery.c | 14 +---
drivers/power/supply/rx51_battery.c | 57 ++++------------
drivers/power/supply/tps65090-charger.c | 18 ++----
drivers/power/supply/twl4030_madc_battery.c | 59 ++++-------------
drivers/power/supply/wm831x_backup.c | 13 +---
drivers/power/supply/wm831x_power.c | 24 +++----
drivers/power/supply/wm8350_power.c | 29 ++-------
18 files changed, 121 insertions(+), 332 deletions(-)
--
2.39.2
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH 01/21] power: supply: da9030: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 02/21] power: supply: da9052: " Andrew Davis
` (20 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/da9030_battery.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/power/supply/da9030_battery.c b/drivers/power/supply/da9030_battery.c
index 581cf956d2d25..04e0f4162d42b 100644
--- a/drivers/power/supply/da9030_battery.c
+++ b/drivers/power/supply/da9030_battery.c
@@ -530,8 +530,9 @@ static int da9030_battery_probe(struct platform_device *pdev)
da9030_battery_setup_psy(charger);
psy_cfg.drv_data = charger;
- charger->psy = power_supply_register(&pdev->dev, &charger->psy_desc,
- &psy_cfg);
+ charger->psy = devm_power_supply_register(&pdev->dev,
+ &charger->psy_desc,
+ &psy_cfg);
if (IS_ERR(charger->psy)) {
ret = PTR_ERR(charger->psy);
goto err_ps_register;
@@ -563,7 +564,6 @@ static void da9030_battery_remove(struct platform_device *dev)
DA9030_EVENT_CHIOVER | DA9030_EVENT_TBAT);
cancel_delayed_work_sync(&charger->work);
da9030_set_charge(charger, 0);
- power_supply_unregister(charger->psy);
}
static struct platform_driver da903x_battery_driver = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 02/21] power: supply: da9052: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
2024-01-23 16:36 ` [PATCH 01/21] power: supply: da9030: Use devm_power_supply_register() helper Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 03/21] power: supply: ds2760: " Andrew Davis
` (19 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/da9052-battery.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/power/supply/da9052-battery.c b/drivers/power/supply/da9052-battery.c
index 6f7c58a41e918..0d84c42c624e0 100644
--- a/drivers/power/supply/da9052-battery.c
+++ b/drivers/power/supply/da9052-battery.c
@@ -622,7 +622,7 @@ static s32 da9052_bat_probe(struct platform_device *pdev)
}
}
- bat->psy = power_supply_register(&pdev->dev, &psy_desc, &psy_cfg);
+ bat->psy = devm_power_supply_register(&pdev->dev, &psy_desc, &psy_cfg);
if (IS_ERR(bat->psy)) {
ret = PTR_ERR(bat->psy);
goto err;
@@ -644,8 +644,6 @@ static void da9052_bat_remove(struct platform_device *pdev)
for (i = 0; i < ARRAY_SIZE(da9052_bat_irqs); i++)
da9052_free_irq(bat->da9052, da9052_bat_irq_bits[i], bat);
-
- power_supply_unregister(bat->psy);
}
static struct platform_driver da9052_bat_driver = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 03/21] power: supply: ds2760: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
2024-01-23 16:36 ` [PATCH 01/21] power: supply: da9030: Use devm_power_supply_register() helper Andrew Davis
2024-01-23 16:36 ` [PATCH 02/21] power: supply: da9052: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 04/21] power: supply: goldfish: " Andrew Davis
` (18 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/ds2760_battery.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/power/supply/ds2760_battery.c b/drivers/power/supply/ds2760_battery.c
index 40fba31be1744..7cf4ea06b5003 100644
--- a/drivers/power/supply/ds2760_battery.c
+++ b/drivers/power/supply/ds2760_battery.c
@@ -739,7 +739,7 @@ static int w1_ds2760_add_slave(struct w1_slave *sl)
if (current_accum)
ds2760_battery_set_current_accum(di, current_accum);
- di->bat = power_supply_register(dev, &di->bat_desc, &psy_cfg);
+ di->bat = devm_power_supply_register(dev, &di->bat_desc, &psy_cfg);
if (IS_ERR(di->bat)) {
dev_err(di->dev, "failed to register battery\n");
retval = PTR_ERR(di->bat);
@@ -762,7 +762,6 @@ static int w1_ds2760_add_slave(struct w1_slave *sl)
goto success;
workqueue_failed:
- power_supply_unregister(di->bat);
batt_failed:
di_alloc_failed:
success:
@@ -777,7 +776,6 @@ static void w1_ds2760_remove_slave(struct w1_slave *sl)
cancel_delayed_work_sync(&di->monitor_work);
cancel_delayed_work_sync(&di->set_charged_work);
destroy_workqueue(di->monitor_wqueue);
- power_supply_unregister(di->bat);
}
#ifdef CONFIG_OF
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 04/21] power: supply: goldfish: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (2 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 03/21] power: supply: ds2760: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 05/21] power: supply: lp8727: " Andrew Davis
` (17 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/goldfish_battery.c | 24 +++++++-----------------
1 file changed, 7 insertions(+), 17 deletions(-)
diff --git a/drivers/power/supply/goldfish_battery.c b/drivers/power/supply/goldfish_battery.c
index 8bb645ad1e5d5..479195e35d734 100644
--- a/drivers/power/supply/goldfish_battery.c
+++ b/drivers/power/supply/goldfish_battery.c
@@ -232,31 +232,22 @@ static int goldfish_battery_probe(struct platform_device *pdev)
psy_cfg.drv_data = data;
- data->ac = power_supply_register(&pdev->dev, &ac_desc, &psy_cfg);
+ data->ac = devm_power_supply_register(&pdev->dev,
+ &ac_desc,
+ &psy_cfg);
if (IS_ERR(data->ac))
return PTR_ERR(data->ac);
- data->battery = power_supply_register(&pdev->dev, &battery_desc,
- &psy_cfg);
- if (IS_ERR(data->battery)) {
- power_supply_unregister(data->ac);
+ data->battery = devm_power_supply_register(&pdev->dev,
+ &battery_desc,
+ &psy_cfg);
+ if (IS_ERR(data->battery))
return PTR_ERR(data->battery);
- }
-
- platform_set_drvdata(pdev, data);
GOLDFISH_BATTERY_WRITE(data, BATTERY_INT_ENABLE, BATTERY_INT_MASK);
return 0;
}
-static void goldfish_battery_remove(struct platform_device *pdev)
-{
- struct goldfish_battery_data *data = platform_get_drvdata(pdev);
-
- power_supply_unregister(data->battery);
- power_supply_unregister(data->ac);
-}
-
static const struct of_device_id goldfish_battery_of_match[] = {
{ .compatible = "google,goldfish-battery", },
{},
@@ -273,7 +264,6 @@ MODULE_DEVICE_TABLE(acpi, goldfish_battery_acpi_match);
static struct platform_driver goldfish_battery_device = {
.probe = goldfish_battery_probe,
- .remove_new = goldfish_battery_remove,
.driver = {
.name = "goldfish-battery",
.of_match_table = goldfish_battery_of_match,
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 05/21] power: supply: lp8727: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (3 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 04/21] power: supply: goldfish: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 06/21] power: supply: lp8788: " Andrew Davis
` (16 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/lp8727_charger.c | 35 ++++++---------------------
1 file changed, 7 insertions(+), 28 deletions(-)
diff --git a/drivers/power/supply/lp8727_charger.c b/drivers/power/supply/lp8727_charger.c
index 0875391f7ac6b..34548a4da90b2 100644
--- a/drivers/power/supply/lp8727_charger.c
+++ b/drivers/power/supply/lp8727_charger.c
@@ -453,39 +453,20 @@ static int lp8727_register_psy(struct lp8727_chg *pchg)
psy_cfg.supplied_to = battery_supplied_to;
psy_cfg.num_supplicants = ARRAY_SIZE(battery_supplied_to);
- psy->ac = power_supply_register(pchg->dev, &lp8727_ac_desc, &psy_cfg);
+ psy->ac = devm_power_supply_register(pchg->dev, &lp8727_ac_desc, &psy_cfg);
if (IS_ERR(psy->ac))
- goto err_psy_ac;
+ return -EPERM;
- psy->usb = power_supply_register(pchg->dev, &lp8727_usb_desc,
- &psy_cfg);
+ psy->usb = devm_power_supply_register(pchg->dev, &lp8727_usb_desc,
+ &psy_cfg);
if (IS_ERR(psy->usb))
- goto err_psy_usb;
+ return -EPERM;
- psy->batt = power_supply_register(pchg->dev, &lp8727_batt_desc, NULL);
+ psy->batt = devm_power_supply_register(pchg->dev, &lp8727_batt_desc, NULL);
if (IS_ERR(psy->batt))
- goto err_psy_batt;
+ return -EPERM;
return 0;
-
-err_psy_batt:
- power_supply_unregister(psy->usb);
-err_psy_usb:
- power_supply_unregister(psy->ac);
-err_psy_ac:
- return -EPERM;
-}
-
-static void lp8727_unregister_psy(struct lp8727_chg *pchg)
-{
- struct lp8727_psy *psy = pchg->psy;
-
- if (!psy)
- return;
-
- power_supply_unregister(psy->ac);
- power_supply_unregister(psy->usb);
- power_supply_unregister(psy->batt);
}
#ifdef CONFIG_OF
@@ -583,7 +564,6 @@ static int lp8727_probe(struct i2c_client *cl)
ret = lp8727_setup_irq(pchg);
if (ret) {
dev_err(pchg->dev, "irq handler err: %d", ret);
- lp8727_unregister_psy(pchg);
return ret;
}
@@ -595,7 +575,6 @@ static void lp8727_remove(struct i2c_client *cl)
struct lp8727_chg *pchg = i2c_get_clientdata(cl);
lp8727_release_irq(pchg);
- lp8727_unregister_psy(pchg);
}
static const struct of_device_id lp8727_dt_ids[] __maybe_unused = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 06/21] power: supply: lp8788: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (4 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 05/21] power: supply: lp8727: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 07/21] power: supply: max14577: " Andrew Davis
` (15 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/lp8788-charger.c | 21 ++++++---------------
1 file changed, 6 insertions(+), 15 deletions(-)
diff --git a/drivers/power/supply/lp8788-charger.c b/drivers/power/supply/lp8788-charger.c
index 2c81be82a41a4..72b170b4ac46a 100644
--- a/drivers/power/supply/lp8788-charger.c
+++ b/drivers/power/supply/lp8788-charger.c
@@ -406,12 +406,6 @@ static const struct power_supply_desc lp8788_psy_battery_desc = {
.get_property = lp8788_battery_get_property,
};
-static void lp8788_psy_unregister(struct lp8788_charger *pchg)
-{
- power_supply_unregister(pchg->battery);
- power_supply_unregister(pchg->charger);
-}
-
static void lp8788_charger_event(struct work_struct *work)
{
struct lp8788_charger *pchg =
@@ -666,18 +660,16 @@ static int lp8788_psy_register(struct platform_device *pdev,
charger_cfg.supplied_to = battery_supplied_to;
charger_cfg.num_supplicants = ARRAY_SIZE(battery_supplied_to);
- pchg->charger = power_supply_register(&pdev->dev,
- &lp8788_psy_charger_desc,
- &charger_cfg);
+ pchg->charger = devm_power_supply_register(&pdev->dev,
+ &lp8788_psy_charger_desc,
+ &charger_cfg);
if (IS_ERR(pchg->charger))
return -EPERM;
- pchg->battery = power_supply_register(&pdev->dev,
- &lp8788_psy_battery_desc, NULL);
- if (IS_ERR(pchg->battery)) {
- power_supply_unregister(pchg->charger);
+ pchg->battery = devm_power_supply_register(&pdev->dev,
+ &lp8788_psy_battery_desc, NULL);
+ if (IS_ERR(pchg->battery))
return -EPERM;
- }
return 0;
}
@@ -720,7 +712,6 @@ static void lp8788_charger_remove(struct platform_device *pdev)
flush_work(&pchg->charger_work);
lp8788_irq_unregister(pdev, pchg);
- lp8788_psy_unregister(pchg);
}
static struct platform_driver lp8788_charger_driver = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 07/21] power: supply: max14577: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (5 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 06/21] power: supply: lp8788: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 08/21] power: supply: max77693: " Andrew Davis
` (14 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/max14577_charger.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/power/supply/max14577_charger.c b/drivers/power/supply/max14577_charger.c
index 7c23fa89ea199..1fff82b037097 100644
--- a/drivers/power/supply/max14577_charger.c
+++ b/drivers/power/supply/max14577_charger.c
@@ -586,8 +586,9 @@ static int max14577_charger_probe(struct platform_device *pdev)
}
psy_cfg.drv_data = chg;
- chg->charger = power_supply_register(&pdev->dev, &max14577_charger_desc,
- &psy_cfg);
+ chg->charger = devm_power_supply_register(&pdev->dev,
+ &max14577_charger_desc,
+ &psy_cfg);
if (IS_ERR(chg->charger)) {
dev_err(&pdev->dev, "failed: power supply register\n");
ret = PTR_ERR(chg->charger);
@@ -611,7 +612,6 @@ static void max14577_charger_remove(struct platform_device *pdev)
struct max14577_charger *chg = platform_get_drvdata(pdev);
device_remove_file(&pdev->dev, &dev_attr_fast_charge_timer);
- power_supply_unregister(chg->charger);
}
static const struct platform_device_id max14577_charger_id[] = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 08/21] power: supply: max77693: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (6 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 07/21] power: supply: max14577: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-26 11:56 ` kernel test robot
2024-01-23 16:36 ` [PATCH 09/21] power: supply: max8925: " Andrew Davis
` (13 subsequent siblings)
21 siblings, 1 reply; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/max77693_charger.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/power/supply/max77693_charger.c b/drivers/power/supply/max77693_charger.c
index d0157e63b8b50..9ad6cc6500fcc 100644
--- a/drivers/power/supply/max77693_charger.c
+++ b/drivers/power/supply/max77693_charger.c
@@ -709,9 +709,9 @@ static int max77693_charger_probe(struct platform_device *pdev)
goto err;
}
- chg->charger = power_supply_register(&pdev->dev,
- &max77693_charger_desc,
- &psy_cfg);
+ chg->charger = devm_power_supply_register(&pdev->dev,
+ &max77693_charger_desc,
+ &psy_cfg);
if (IS_ERR(chg->charger)) {
dev_err(&pdev->dev, "failed: power supply register\n");
ret = PTR_ERR(chg->charger);
@@ -735,8 +735,6 @@ static void max77693_charger_remove(struct platform_device *pdev)
device_remove_file(&pdev->dev, &dev_attr_top_off_timer);
device_remove_file(&pdev->dev, &dev_attr_top_off_threshold_current);
device_remove_file(&pdev->dev, &dev_attr_fast_charge_timer);
-
- power_supply_unregister(chg->charger);
}
static const struct platform_device_id max77693_charger_id[] = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 09/21] power: supply: max8925: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (7 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 08/21] power: supply: max77693: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-26 12:28 ` kernel test robot
2024-01-23 16:36 ` [PATCH 10/21] power: supply: pcf50633: " Andrew Davis
` (12 subsequent siblings)
21 siblings, 1 reply; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/max8925_power.c | 36 ++++++++--------------------
1 file changed, 10 insertions(+), 26 deletions(-)
diff --git a/drivers/power/supply/max8925_power.c b/drivers/power/supply/max8925_power.c
index 4a2d6894f94ee..29ce6c5bfe0e6 100644
--- a/drivers/power/supply/max8925_power.c
+++ b/drivers/power/supply/max8925_power.c
@@ -528,25 +528,19 @@ static int max8925_power_probe(struct platform_device *pdev)
psy_cfg.supplied_to = pdata->supplied_to;
psy_cfg.num_supplicants = pdata->num_supplicants;
- info->ac = power_supply_register(&pdev->dev, &ac_desc, &psy_cfg);
- if (IS_ERR(info->ac)) {
- ret = PTR_ERR(info->ac);
- goto out;
- }
+ info->ac = devm_power_supply_register(&pdev->dev, &ac_desc, &psy_cfg);
+ if (IS_ERR(info->ac))
+ return PTR_ERR(info->ac);
info->ac->dev.parent = &pdev->dev;
- info->usb = power_supply_register(&pdev->dev, &usb_desc, &psy_cfg);
- if (IS_ERR(info->usb)) {
- ret = PTR_ERR(info->usb);
- goto out_unregister_ac;
- }
+ info->usb = devm_power_supply_register(&pdev->dev, &usb_desc, &psy_cfg);
+ if (IS_ERR(info->usb))
+ return PTR_ERR(info->usb);
info->usb->dev.parent = &pdev->dev;
- info->battery = power_supply_register(&pdev->dev, &battery_desc, NULL);
- if (IS_ERR(info->battery)) {
- ret = PTR_ERR(info->battery);
- goto out_unregister_usb;
- }
+ info->battery = devm_power_supply_register(&pdev->dev, &battery_desc, NULL);
+ if (IS_ERR(info->battery))
+ return PTR_ERR(info->battery);
info->battery->dev.parent = &pdev->dev;
info->batt_detect = pdata->batt_detect;
@@ -558,24 +552,14 @@ static int max8925_power_probe(struct platform_device *pdev)
max8925_init_charger(chip, info);
return 0;
-out_unregister_usb:
- power_supply_unregister(info->usb);
-out_unregister_ac:
- power_supply_unregister(info->ac);
-out:
- return ret;
}
static void max8925_power_remove(struct platform_device *pdev)
{
struct max8925_power_info *info = platform_get_drvdata(pdev);
- if (info) {
- power_supply_unregister(info->ac);
- power_supply_unregister(info->usb);
- power_supply_unregister(info->battery);
+ if (info)
max8925_deinit_charger(info);
- }
}
static struct platform_driver max8925_power_driver = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 10/21] power: supply: pcf50633: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (8 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 09/21] power: supply: max8925: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 11/21] power: supply: rt5033: " Andrew Davis
` (11 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/pcf50633-charger.c | 23 +++++++++--------------
1 file changed, 9 insertions(+), 14 deletions(-)
diff --git a/drivers/power/supply/pcf50633-charger.c b/drivers/power/supply/pcf50633-charger.c
index 950e30917c638..0e980522fee51 100644
--- a/drivers/power/supply/pcf50633-charger.c
+++ b/drivers/power/supply/pcf50633-charger.c
@@ -404,9 +404,9 @@ static int pcf50633_mbc_probe(struct platform_device *pdev)
psy_cfg.drv_data = mbc;
/* Create power supplies */
- mbc->adapter = power_supply_register(&pdev->dev,
- &pcf50633_mbc_adapter_desc,
- &psy_cfg);
+ mbc->adapter = devm_power_supply_register(&pdev->dev,
+ &pcf50633_mbc_adapter_desc,
+ &psy_cfg);
if (IS_ERR(mbc->adapter)) {
dev_err(mbc->pcf->dev, "failed to register adapter\n");
return PTR_ERR(mbc->adapter);
@@ -415,20 +415,19 @@ static int pcf50633_mbc_probe(struct platform_device *pdev)
usb_psy_cfg = psy_cfg;
usb_psy_cfg.attr_grp = pcf50633_mbc_sysfs_groups;
- mbc->usb = power_supply_register(&pdev->dev, &pcf50633_mbc_usb_desc,
- &usb_psy_cfg);
+ mbc->usb = devm_power_supply_register(&pdev->dev,
+ &pcf50633_mbc_usb_desc,
+ &usb_psy_cfg);
if (IS_ERR(mbc->usb)) {
dev_err(mbc->pcf->dev, "failed to register usb\n");
- power_supply_unregister(mbc->adapter);
return PTR_ERR(mbc->usb);
}
- mbc->ac = power_supply_register(&pdev->dev, &pcf50633_mbc_ac_desc,
- &psy_cfg);
+ mbc->ac = devm_power_supply_register(&pdev->dev,
+ &pcf50633_mbc_ac_desc,
+ &psy_cfg);
if (IS_ERR(mbc->ac)) {
dev_err(mbc->pcf->dev, "failed to register ac\n");
- power_supply_unregister(mbc->adapter);
- power_supply_unregister(mbc->usb);
return PTR_ERR(mbc->ac);
}
@@ -449,10 +448,6 @@ static void pcf50633_mbc_remove(struct platform_device *pdev)
/* Remove IRQ handlers */
for (i = 0; i < ARRAY_SIZE(mbc_irq_handlers); i++)
pcf50633_free_irq(mbc->pcf, mbc_irq_handlers[i]);
-
- power_supply_unregister(mbc->usb);
- power_supply_unregister(mbc->adapter);
- power_supply_unregister(mbc->ac);
}
static struct platform_driver pcf50633_mbc_driver = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 11/21] power: supply: rt5033: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (9 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 10/21] power: supply: pcf50633: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 12/21] power: supply: tps65090: " Andrew Davis
` (10 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/rt5033_battery.c | 14 +++-----------
1 file changed, 3 insertions(+), 11 deletions(-)
diff --git a/drivers/power/supply/rt5033_battery.c b/drivers/power/supply/rt5033_battery.c
index d90b96df8e73d..32eafe2c00af5 100644
--- a/drivers/power/supply/rt5033_battery.c
+++ b/drivers/power/supply/rt5033_battery.c
@@ -159,12 +159,12 @@ static int rt5033_battery_probe(struct i2c_client *client)
return -EINVAL;
}
- i2c_set_clientdata(client, battery);
psy_cfg.of_node = client->dev.of_node;
psy_cfg.drv_data = battery;
- battery->psy = power_supply_register(&client->dev,
- &rt5033_battery_desc, &psy_cfg);
+ battery->psy = devm_power_supply_register(&client->dev,
+ &rt5033_battery_desc,
+ &psy_cfg);
if (IS_ERR(battery->psy))
return dev_err_probe(&client->dev, PTR_ERR(battery->psy),
"Failed to register power supply\n");
@@ -172,13 +172,6 @@ static int rt5033_battery_probe(struct i2c_client *client)
return 0;
}
-static void rt5033_battery_remove(struct i2c_client *client)
-{
- struct rt5033_battery *battery = i2c_get_clientdata(client);
-
- power_supply_unregister(battery->psy);
-}
-
static const struct i2c_device_id rt5033_battery_id[] = {
{ "rt5033-battery", },
{ }
@@ -197,7 +190,6 @@ static struct i2c_driver rt5033_battery_driver = {
.of_match_table = rt5033_battery_of_match,
},
.probe = rt5033_battery_probe,
- .remove = rt5033_battery_remove,
.id_table = rt5033_battery_id,
};
module_i2c_driver(rt5033_battery_driver);
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 12/21] power: supply: tps65090: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (10 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 11/21] power: supply: rt5033: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 13/21] power: supply: wm831x: " Andrew Davis
` (9 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/tps65090-charger.c | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)
diff --git a/drivers/power/supply/tps65090-charger.c b/drivers/power/supply/tps65090-charger.c
index c59197d2aa87d..d41595764caa5 100644
--- a/drivers/power/supply/tps65090-charger.c
+++ b/drivers/power/supply/tps65090-charger.c
@@ -262,7 +262,7 @@ static int tps65090_charger_probe(struct platform_device *pdev)
psy_cfg.of_node = pdev->dev.of_node;
psy_cfg.drv_data = cdata;
- cdata->ac = power_supply_register(&pdev->dev, &tps65090_charger_desc,
+ cdata->ac = devm_power_supply_register(&pdev->dev, &tps65090_charger_desc,
&psy_cfg);
if (IS_ERR(cdata->ac)) {
dev_err(&pdev->dev, "failed: power supply register\n");
@@ -277,7 +277,7 @@ static int tps65090_charger_probe(struct platform_device *pdev)
ret = tps65090_config_charger(cdata);
if (ret < 0) {
dev_err(&pdev->dev, "charger config failed, err %d\n", ret);
- goto fail_unregister_supply;
+ return ret;
}
/* Check for charger presence */
@@ -286,14 +286,14 @@ static int tps65090_charger_probe(struct platform_device *pdev)
if (ret < 0) {
dev_err(cdata->dev, "%s(): Error in reading reg 0x%x", __func__,
TPS65090_REG_CG_STATUS1);
- goto fail_unregister_supply;
+ return ret;
}
if (status1 != 0) {
ret = tps65090_enable_charging(cdata);
if (ret < 0) {
dev_err(cdata->dev, "error enabling charger\n");
- goto fail_unregister_supply;
+ return ret;
}
cdata->ac_online = 1;
power_supply_changed(cdata->ac);
@@ -306,7 +306,7 @@ static int tps65090_charger_probe(struct platform_device *pdev)
dev_err(cdata->dev,
"Unable to register irq %d err %d\n", irq,
ret);
- goto fail_unregister_supply;
+ return ret;
}
} else {
cdata->poll_task = kthread_run(tps65090_charger_poll_task,
@@ -316,16 +316,11 @@ static int tps65090_charger_probe(struct platform_device *pdev)
ret = PTR_ERR(cdata->poll_task);
dev_err(cdata->dev,
"Unable to run kthread err %d\n", ret);
- goto fail_unregister_supply;
+ return ret;
}
}
return 0;
-
-fail_unregister_supply:
- power_supply_unregister(cdata->ac);
-
- return ret;
}
static void tps65090_charger_remove(struct platform_device *pdev)
@@ -334,7 +329,6 @@ static void tps65090_charger_remove(struct platform_device *pdev)
if (cdata->irq == -ENXIO)
kthread_stop(cdata->poll_task);
- power_supply_unregister(cdata->ac);
}
static const struct of_device_id of_tps65090_charger_match[] = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 13/21] power: supply: wm831x: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (11 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 12/21] power: supply: tps65090: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 14/21] " Andrew Davis
` (8 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/wm831x_backup.c | 13 ++-----------
1 file changed, 2 insertions(+), 11 deletions(-)
diff --git a/drivers/power/supply/wm831x_backup.c b/drivers/power/supply/wm831x_backup.c
index 1a7265660adeb..9673fcf7f3afb 100644
--- a/drivers/power/supply/wm831x_backup.c
+++ b/drivers/power/supply/wm831x_backup.c
@@ -171,7 +171,6 @@ static int wm831x_backup_probe(struct platform_device *pdev)
return -ENOMEM;
devdata->wm831x = wm831x;
- platform_set_drvdata(pdev, devdata);
/* We ignore configuration failures since we can still read
* back the status without enabling the charger (which may
@@ -191,22 +190,14 @@ static int wm831x_backup_probe(struct platform_device *pdev)
devdata->backup_desc.properties = wm831x_backup_props;
devdata->backup_desc.num_properties = ARRAY_SIZE(wm831x_backup_props);
devdata->backup_desc.get_property = wm831x_backup_get_prop;
- devdata->backup = power_supply_register(&pdev->dev,
- &devdata->backup_desc, NULL);
+ devdata->backup = devm_power_supply_register(&pdev->dev,
+ &devdata->backup_desc, NULL);
return PTR_ERR_OR_ZERO(devdata->backup);
}
-static void wm831x_backup_remove(struct platform_device *pdev)
-{
- struct wm831x_backup *devdata = platform_get_drvdata(pdev);
-
- power_supply_unregister(devdata->backup);
-}
-
static struct platform_driver wm831x_backup_driver = {
.probe = wm831x_backup_probe,
- .remove_new = wm831x_backup_remove,
.driver = {
.name = "wm831x-backup",
},
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 14/21] power: supply: wm831x: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (12 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 13/21] power: supply: wm831x: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 15/21] power: supply: wm8350: " Andrew Davis
` (7 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/wm831x_power.c | 24 +++++++++---------------
1 file changed, 9 insertions(+), 15 deletions(-)
diff --git a/drivers/power/supply/wm831x_power.c b/drivers/power/supply/wm831x_power.c
index e49b01ee5f3ef..d56e499ac59fb 100644
--- a/drivers/power/supply/wm831x_power.c
+++ b/drivers/power/supply/wm831x_power.c
@@ -570,8 +570,9 @@ static int wm831x_power_probe(struct platform_device *pdev)
power->wall_desc.properties = wm831x_wall_props;
power->wall_desc.num_properties = ARRAY_SIZE(wm831x_wall_props);
power->wall_desc.get_property = wm831x_wall_get_prop;
- power->wall = power_supply_register(&pdev->dev, &power->wall_desc,
- NULL);
+ power->wall = devm_power_supply_register(&pdev->dev,
+ &power->wall_desc,
+ NULL);
if (IS_ERR(power->wall)) {
ret = PTR_ERR(power->wall);
goto err;
@@ -582,7 +583,9 @@ static int wm831x_power_probe(struct platform_device *pdev)
power->usb_desc.properties = wm831x_usb_props;
power->usb_desc.num_properties = ARRAY_SIZE(wm831x_usb_props);
power->usb_desc.get_property = wm831x_usb_get_prop;
- power->usb = power_supply_register(&pdev->dev, &power->usb_desc, NULL);
+ power->usb = devm_power_supply_register(&pdev->dev,
+ &power->usb_desc,
+ NULL);
if (IS_ERR(power->usb)) {
ret = PTR_ERR(power->usb);
goto err_wall;
@@ -599,9 +602,9 @@ static int wm831x_power_probe(struct platform_device *pdev)
power->battery_desc.num_properties = ARRAY_SIZE(wm831x_bat_props);
power->battery_desc.get_property = wm831x_bat_get_prop;
power->battery_desc.use_for_apm = 1;
- power->battery = power_supply_register(&pdev->dev,
- &power->battery_desc,
- NULL);
+ power->battery = devm_power_supply_register(&pdev->dev,
+ &power->battery_desc,
+ NULL);
if (IS_ERR(power->battery)) {
ret = PTR_ERR(power->battery);
goto err_usb;
@@ -684,12 +687,8 @@ static int wm831x_power_probe(struct platform_device *pdev)
irq = wm831x_irq(wm831x, platform_get_irq_byname(pdev, "SYSLO"));
free_irq(irq, power);
err_battery:
- if (power->have_battery)
- power_supply_unregister(power->battery);
err_usb:
- power_supply_unregister(power->usb);
err_wall:
- power_supply_unregister(power->wall);
err:
return ret;
}
@@ -717,11 +716,6 @@ static void wm831x_power_remove(struct platform_device *pdev)
irq = wm831x_irq(wm831x, platform_get_irq_byname(pdev, "SYSLO"));
free_irq(irq, wm831x_power);
-
- if (wm831x_power->have_battery)
- power_supply_unregister(wm831x_power->battery);
- power_supply_unregister(wm831x_power->wall);
- power_supply_unregister(wm831x_power->usb);
}
static struct platform_driver wm831x_power_driver = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 15/21] power: supply: wm8350: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (13 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 14/21] " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-26 13:00 ` kernel test robot
2024-01-23 16:36 ` [PATCH 16/21] power: supply: da9150: Use devm_iio_channel_get() helper Andrew Davis
` (6 subsequent siblings)
21 siblings, 1 reply; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/wm8350_power.c | 29 +++++++----------------------
1 file changed, 7 insertions(+), 22 deletions(-)
diff --git a/drivers/power/supply/wm8350_power.c b/drivers/power/supply/wm8350_power.c
index f23b4f5343bc1..9b0010b28cafc 100644
--- a/drivers/power/supply/wm8350_power.c
+++ b/drivers/power/supply/wm8350_power.c
@@ -540,22 +540,17 @@ static int wm8350_power_probe(struct platform_device *pdev)
struct wm8350_charger_policy *policy = power->policy;
int ret;
- power->ac = power_supply_register(&pdev->dev, &wm8350_ac_desc, NULL);
+ power->ac = devm_power_supply_register(&pdev->dev, &wm8350_ac_desc, NULL);
if (IS_ERR(power->ac))
return PTR_ERR(power->ac);
- power->battery = power_supply_register(&pdev->dev, &wm8350_battery_desc,
- NULL);
- if (IS_ERR(power->battery)) {
- ret = PTR_ERR(power->battery);
- goto battery_failed;
- }
+ power->battery = devm_power_supply_register(&pdev->dev, &wm8350_battery_desc, NULL);
+ if (IS_ERR(power->battery))
+ return PTR_ERR(power->battery);
- power->usb = power_supply_register(&pdev->dev, &wm8350_usb_desc, NULL);
- if (IS_ERR(power->usb)) {
- ret = PTR_ERR(power->usb);
- goto usb_failed;
- }
+ power->usb = devm_power_supply_register(&pdev->dev, &wm8350_usb_desc, NULL);
+ if (IS_ERR(power->usb))
+ return PTR_ERR(power->usb);
ret = device_create_file(&pdev->dev, &dev_attr_charger_state);
if (ret < 0)
@@ -569,13 +564,6 @@ static int wm8350_power_probe(struct platform_device *pdev)
wm8350_reg_lock(wm8350);
}
- return ret;
-
-usb_failed:
- power_supply_unregister(power->battery);
-battery_failed:
- power_supply_unregister(power->ac);
-
return ret;
}
@@ -586,9 +574,6 @@ static void wm8350_power_remove(struct platform_device *pdev)
free_charger_irq(wm8350);
device_remove_file(&pdev->dev, &dev_attr_charger_state);
- power_supply_unregister(power->battery);
- power_supply_unregister(power->ac);
- power_supply_unregister(power->usb);
}
static struct platform_driver wm8350_power_driver = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 16/21] power: supply: da9150: Use devm_iio_channel_get() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (14 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 15/21] power: supply: wm8350: " Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 17/21] power: supply: da9150: Use devm_power_supply_register() helper Andrew Davis
` (5 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed get function. This helps prevent
mistakes like releasing out of order in cleanup functions and
forgetting to release on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/da9150-charger.c | 57 +++++++--------------------
1 file changed, 14 insertions(+), 43 deletions(-)
diff --git a/drivers/power/supply/da9150-charger.c b/drivers/power/supply/da9150-charger.c
index 37db9e4ed7f30..77e2d42382e45 100644
--- a/drivers/power/supply/da9150-charger.c
+++ b/drivers/power/supply/da9150-charger.c
@@ -521,36 +521,26 @@ static int da9150_charger_probe(struct platform_device *pdev)
charger->dev = dev;
/* Acquire ADC channels */
- charger->ibus_chan = iio_channel_get(dev, "CHAN_IBUS");
- if (IS_ERR(charger->ibus_chan)) {
- ret = PTR_ERR(charger->ibus_chan);
- goto ibus_chan_fail;
- }
+ charger->ibus_chan = devm_iio_channel_get(dev, "CHAN_IBUS");
+ if (IS_ERR(charger->ibus_chan))
+ return PTR_ERR(charger->ibus_chan);
- charger->vbus_chan = iio_channel_get(dev, "CHAN_VBUS");
- if (IS_ERR(charger->vbus_chan)) {
- ret = PTR_ERR(charger->vbus_chan);
- goto vbus_chan_fail;
- }
+ charger->vbus_chan = devm_iio_channel_get(dev, "CHAN_VBUS");
+ if (IS_ERR(charger->vbus_chan))
+ return PTR_ERR(charger->vbus_chan);
- charger->tjunc_chan = iio_channel_get(dev, "CHAN_TJUNC");
- if (IS_ERR(charger->tjunc_chan)) {
- ret = PTR_ERR(charger->tjunc_chan);
- goto tjunc_chan_fail;
- }
+ charger->tjunc_chan = devm_iio_channel_get(dev, "CHAN_TJUNC");
+ if (IS_ERR(charger->tjunc_chan))
+ return PTR_ERR(charger->tjunc_chan);
- charger->vbat_chan = iio_channel_get(dev, "CHAN_VBAT");
- if (IS_ERR(charger->vbat_chan)) {
- ret = PTR_ERR(charger->vbat_chan);
- goto vbat_chan_fail;
- }
+ charger->vbat_chan = devm_iio_channel_get(dev, "CHAN_VBAT");
+ if (IS_ERR(charger->vbat_chan))
+ return PTR_ERR(charger->vbat_chan);
/* Register power supplies */
charger->usb = power_supply_register(dev, &usb_desc, NULL);
- if (IS_ERR(charger->usb)) {
- ret = PTR_ERR(charger->usb);
- goto usb_fail;
- }
+ if (IS_ERR(charger->usb))
+ return PTR_ERR(charger->usb);
charger->battery = power_supply_register(dev, &battery_desc, NULL);
if (IS_ERR(charger->battery)) {
@@ -619,19 +609,6 @@ static int da9150_charger_probe(struct platform_device *pdev)
battery_fail:
power_supply_unregister(charger->usb);
-usb_fail:
- iio_channel_release(charger->vbat_chan);
-
-vbat_chan_fail:
- iio_channel_release(charger->tjunc_chan);
-
-tjunc_chan_fail:
- iio_channel_release(charger->vbus_chan);
-
-vbus_chan_fail:
- iio_channel_release(charger->ibus_chan);
-
-ibus_chan_fail:
return ret;
}
@@ -659,12 +636,6 @@ static void da9150_charger_remove(struct platform_device *pdev)
power_supply_unregister(charger->battery);
power_supply_unregister(charger->usb);
-
- /* Release ADC channels */
- iio_channel_release(charger->ibus_chan);
- iio_channel_release(charger->vbus_chan);
- iio_channel_release(charger->tjunc_chan);
- iio_channel_release(charger->vbat_chan);
}
static struct platform_driver da9150_charger_driver = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 17/21] power: supply: da9150: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (15 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 16/21] power: supply: da9150: Use devm_iio_channel_get() helper Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 18/21] power: supply: rx51: Use devm_iio_channel_get() helper Andrew Davis
` (4 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/da9150-charger.c | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/drivers/power/supply/da9150-charger.c b/drivers/power/supply/da9150-charger.c
index 77e2d42382e45..b13cecd84f589 100644
--- a/drivers/power/supply/da9150-charger.c
+++ b/drivers/power/supply/da9150-charger.c
@@ -538,15 +538,13 @@ static int da9150_charger_probe(struct platform_device *pdev)
return PTR_ERR(charger->vbat_chan);
/* Register power supplies */
- charger->usb = power_supply_register(dev, &usb_desc, NULL);
+ charger->usb = devm_power_supply_register(dev, &usb_desc, NULL);
if (IS_ERR(charger->usb))
return PTR_ERR(charger->usb);
- charger->battery = power_supply_register(dev, &battery_desc, NULL);
- if (IS_ERR(charger->battery)) {
- ret = PTR_ERR(charger->battery);
- goto battery_fail;
- }
+ charger->battery = devm_power_supply_register(dev, &battery_desc, NULL);
+ if (IS_ERR(charger->battery))
+ return PTR_ERR(charger->battery);
/* Get initial online supply */
reg = da9150_reg_read(da9150, DA9150_STATUS_H);
@@ -606,8 +604,6 @@ static int da9150_charger_probe(struct platform_device *pdev)
chg_irq_fail:
if (!IS_ERR_OR_NULL(charger->usb_phy))
usb_unregister_notifier(charger->usb_phy, &charger->otg_nb);
-battery_fail:
- power_supply_unregister(charger->usb);
return ret;
}
@@ -633,9 +629,6 @@ static void da9150_charger_remove(struct platform_device *pdev)
if (!IS_ERR_OR_NULL(charger->usb_phy))
usb_unregister_notifier(charger->usb_phy, &charger->otg_nb);
cancel_work_sync(&charger->otg_work);
-
- power_supply_unregister(charger->battery);
- power_supply_unregister(charger->usb);
}
static struct platform_driver da9150_charger_driver = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 18/21] power: supply: rx51: Use devm_iio_channel_get() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (16 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 17/21] power: supply: da9150: Use devm_power_supply_register() helper Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 19/21] power: supply: rx51: Use devm_power_supply_register() helper Andrew Davis
` (3 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed get function. This helps prevent
mistakes like releasing out of order in cleanup functions and
forgetting to release on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/rx51_battery.c | 45 +++++++----------------------
1 file changed, 11 insertions(+), 34 deletions(-)
diff --git a/drivers/power/supply/rx51_battery.c b/drivers/power/supply/rx51_battery.c
index e2bfc81f0fd97..d532c670661b6 100644
--- a/drivers/power/supply/rx51_battery.c
+++ b/drivers/power/supply/rx51_battery.c
@@ -192,7 +192,6 @@ static int rx51_battery_probe(struct platform_device *pdev)
{
struct power_supply_config psy_cfg = {};
struct rx51_device_info *di;
- int ret;
di = devm_kzalloc(&pdev->dev, sizeof(*di), GFP_KERNEL);
if (!di)
@@ -209,41 +208,23 @@ static int rx51_battery_probe(struct platform_device *pdev)
psy_cfg.drv_data = di;
- di->channel_temp = iio_channel_get(di->dev, "temp");
- if (IS_ERR(di->channel_temp)) {
- ret = PTR_ERR(di->channel_temp);
- goto error;
- }
+ di->channel_temp = devm_iio_channel_get(di->dev, "temp");
+ if (IS_ERR(di->channel_temp))
+ return PTR_ERR(di->channel_temp);
- di->channel_bsi = iio_channel_get(di->dev, "bsi");
- if (IS_ERR(di->channel_bsi)) {
- ret = PTR_ERR(di->channel_bsi);
- goto error_channel_temp;
- }
+ di->channel_bsi = devm_iio_channel_get(di->dev, "bsi");
+ if (IS_ERR(di->channel_bsi))
+ return PTR_ERR(di->channel_bsi);
- di->channel_vbat = iio_channel_get(di->dev, "vbat");
- if (IS_ERR(di->channel_vbat)) {
- ret = PTR_ERR(di->channel_vbat);
- goto error_channel_bsi;
- }
+ di->channel_vbat = devm_iio_channel_get(di->dev, "vbat");
+ if (IS_ERR(di->channel_vbat))
+ return PTR_ERR(di->channel_vbat);
di->bat = power_supply_register(di->dev, &di->bat_desc, &psy_cfg);
- if (IS_ERR(di->bat)) {
- ret = PTR_ERR(di->bat);
- goto error_channel_vbat;
- }
+ if (IS_ERR(di->bat))
+ return PTR_ERR(di->bat);
return 0;
-
-error_channel_vbat:
- iio_channel_release(di->channel_vbat);
-error_channel_bsi:
- iio_channel_release(di->channel_bsi);
-error_channel_temp:
- iio_channel_release(di->channel_temp);
-error:
-
- return ret;
}
static void rx51_battery_remove(struct platform_device *pdev)
@@ -251,10 +232,6 @@ static void rx51_battery_remove(struct platform_device *pdev)
struct rx51_device_info *di = platform_get_drvdata(pdev);
power_supply_unregister(di->bat);
-
- iio_channel_release(di->channel_vbat);
- iio_channel_release(di->channel_bsi);
- iio_channel_release(di->channel_temp);
}
#ifdef CONFIG_OF
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 19/21] power: supply: rx51: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (17 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 18/21] power: supply: rx51: Use devm_iio_channel_get() helper Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 20/21] power: supply: twl4030_madc: Use devm_iio_channel_get() helper Andrew Davis
` (2 subsequent siblings)
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/rx51_battery.c | 12 +-----------
1 file changed, 1 insertion(+), 11 deletions(-)
diff --git a/drivers/power/supply/rx51_battery.c b/drivers/power/supply/rx51_battery.c
index d532c670661b6..7cdcd415e8684 100644
--- a/drivers/power/supply/rx51_battery.c
+++ b/drivers/power/supply/rx51_battery.c
@@ -197,8 +197,6 @@ static int rx51_battery_probe(struct platform_device *pdev)
if (!di)
return -ENOMEM;
- platform_set_drvdata(pdev, di);
-
di->dev = &pdev->dev;
di->bat_desc.name = "rx51-battery";
di->bat_desc.type = POWER_SUPPLY_TYPE_BATTERY;
@@ -220,20 +218,13 @@ static int rx51_battery_probe(struct platform_device *pdev)
if (IS_ERR(di->channel_vbat))
return PTR_ERR(di->channel_vbat);
- di->bat = power_supply_register(di->dev, &di->bat_desc, &psy_cfg);
+ di->bat = devm_power_supply_register(di->dev, &di->bat_desc, &psy_cfg);
if (IS_ERR(di->bat))
return PTR_ERR(di->bat);
return 0;
}
-static void rx51_battery_remove(struct platform_device *pdev)
-{
- struct rx51_device_info *di = platform_get_drvdata(pdev);
-
- power_supply_unregister(di->bat);
-}
-
#ifdef CONFIG_OF
static const struct of_device_id n900_battery_of_match[] = {
{.compatible = "nokia,n900-battery", },
@@ -244,7 +235,6 @@ MODULE_DEVICE_TABLE(of, n900_battery_of_match);
static struct platform_driver rx51_battery_driver = {
.probe = rx51_battery_probe,
- .remove_new = rx51_battery_remove,
.driver = {
.name = "rx51-battery",
.of_match_table = of_match_ptr(n900_battery_of_match),
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 20/21] power: supply: twl4030_madc: Use devm_iio_channel_get() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (18 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 19/21] power: supply: rx51: Use devm_power_supply_register() helper Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-23 16:36 ` [PATCH 21/21] power: supply: twl4030_madc: Use devm_power_supply_register() helper Andrew Davis
2024-01-27 0:48 ` (subset) [PATCH 00/21] Power supply register with devm Sebastian Reichel
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed get function. This helps prevent
mistakes like releasing out of order in cleanup functions and
forgetting to release on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/twl4030_madc_battery.c | 44 ++++++---------------
1 file changed, 11 insertions(+), 33 deletions(-)
diff --git a/drivers/power/supply/twl4030_madc_battery.c b/drivers/power/supply/twl4030_madc_battery.c
index 33106476bea2c..cd9e94134ab21 100644
--- a/drivers/power/supply/twl4030_madc_battery.c
+++ b/drivers/power/supply/twl4030_madc_battery.c
@@ -188,30 +188,23 @@ static int twl4030_madc_battery_probe(struct platform_device *pdev)
struct twl4030_madc_battery *twl4030_madc_bat;
struct twl4030_madc_bat_platform_data *pdata = pdev->dev.platform_data;
struct power_supply_config psy_cfg = {};
- int ret = 0;
twl4030_madc_bat = devm_kzalloc(&pdev->dev, sizeof(*twl4030_madc_bat),
GFP_KERNEL);
if (!twl4030_madc_bat)
return -ENOMEM;
- twl4030_madc_bat->channel_temp = iio_channel_get(&pdev->dev, "temp");
- if (IS_ERR(twl4030_madc_bat->channel_temp)) {
- ret = PTR_ERR(twl4030_madc_bat->channel_temp);
- goto err;
- }
+ twl4030_madc_bat->channel_temp = devm_iio_channel_get(&pdev->dev, "temp");
+ if (IS_ERR(twl4030_madc_bat->channel_temp))
+ return PTR_ERR(twl4030_madc_bat->channel_temp);
- twl4030_madc_bat->channel_ichg = iio_channel_get(&pdev->dev, "ichg");
- if (IS_ERR(twl4030_madc_bat->channel_ichg)) {
- ret = PTR_ERR(twl4030_madc_bat->channel_ichg);
- goto err_temp;
- }
+ twl4030_madc_bat->channel_ichg = devm_iio_channel_get(&pdev->dev, "ichg");
+ if (IS_ERR(twl4030_madc_bat->channel_ichg))
+ return PTR_ERR(twl4030_madc_bat->channel_ichg);
- twl4030_madc_bat->channel_vbat = iio_channel_get(&pdev->dev, "vbat");
- if (IS_ERR(twl4030_madc_bat->channel_vbat)) {
- ret = PTR_ERR(twl4030_madc_bat->channel_vbat);
- goto err_ichg;
- }
+ twl4030_madc_bat->channel_vbat = devm_iio_channel_get(&pdev->dev, "vbat");
+ if (IS_ERR(twl4030_madc_bat->channel_vbat))
+ return PTR_ERR(twl4030_madc_bat->channel_vbat);
/* sort charging and discharging calibration data */
sort(pdata->charging, pdata->charging_size,
@@ -227,21 +220,10 @@ static int twl4030_madc_battery_probe(struct platform_device *pdev)
twl4030_madc_bat->psy = power_supply_register(&pdev->dev,
&twl4030_madc_bat_desc,
&psy_cfg);
- if (IS_ERR(twl4030_madc_bat->psy)) {
- ret = PTR_ERR(twl4030_madc_bat->psy);
- goto err_vbat;
- }
+ if (IS_ERR(twl4030_madc_bat->psy))
+ return PTR_ERR(twl4030_madc_bat->psy);
return 0;
-
-err_vbat:
- iio_channel_release(twl4030_madc_bat->channel_vbat);
-err_ichg:
- iio_channel_release(twl4030_madc_bat->channel_ichg);
-err_temp:
- iio_channel_release(twl4030_madc_bat->channel_temp);
-err:
- return ret;
}
static void twl4030_madc_battery_remove(struct platform_device *pdev)
@@ -249,10 +231,6 @@ static void twl4030_madc_battery_remove(struct platform_device *pdev)
struct twl4030_madc_battery *bat = platform_get_drvdata(pdev);
power_supply_unregister(bat->psy);
-
- iio_channel_release(bat->channel_vbat);
- iio_channel_release(bat->channel_ichg);
- iio_channel_release(bat->channel_temp);
}
static struct platform_driver twl4030_madc_battery_driver = {
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH 21/21] power: supply: twl4030_madc: Use devm_power_supply_register() helper
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (19 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 20/21] power: supply: twl4030_madc: Use devm_iio_channel_get() helper Andrew Davis
@ 2024-01-23 16:36 ` Andrew Davis
2024-01-27 0:48 ` (subset) [PATCH 00/21] Power supply register with devm Sebastian Reichel
21 siblings, 0 replies; 26+ messages in thread
From: Andrew Davis @ 2024-01-23 16:36 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár
Cc: linux-pm, linux-kernel, Andrew Davis
Use the device lifecycle managed register function. This helps prevent
mistakes like unregistering out of order in cleanup functions and
forgetting to unregister on error paths.
Signed-off-by: Andrew Davis <afd@ti.com>
---
drivers/power/supply/twl4030_madc_battery.c | 15 +++------------
1 file changed, 3 insertions(+), 12 deletions(-)
diff --git a/drivers/power/supply/twl4030_madc_battery.c b/drivers/power/supply/twl4030_madc_battery.c
index cd9e94134ab21..3935162e350b5 100644
--- a/drivers/power/supply/twl4030_madc_battery.c
+++ b/drivers/power/supply/twl4030_madc_battery.c
@@ -215,30 +215,21 @@ static int twl4030_madc_battery_probe(struct platform_device *pdev)
twl4030_cmp, NULL);
twl4030_madc_bat->pdata = pdata;
- platform_set_drvdata(pdev, twl4030_madc_bat);
psy_cfg.drv_data = twl4030_madc_bat;
- twl4030_madc_bat->psy = power_supply_register(&pdev->dev,
- &twl4030_madc_bat_desc,
- &psy_cfg);
+ twl4030_madc_bat->psy = devm_power_supply_register(&pdev->dev,
+ &twl4030_madc_bat_desc,
+ &psy_cfg);
if (IS_ERR(twl4030_madc_bat->psy))
return PTR_ERR(twl4030_madc_bat->psy);
return 0;
}
-static void twl4030_madc_battery_remove(struct platform_device *pdev)
-{
- struct twl4030_madc_battery *bat = platform_get_drvdata(pdev);
-
- power_supply_unregister(bat->psy);
-}
-
static struct platform_driver twl4030_madc_battery_driver = {
.driver = {
.name = "twl4030_madc_battery",
},
.probe = twl4030_madc_battery_probe,
- .remove_new = twl4030_madc_battery_remove,
};
module_platform_driver(twl4030_madc_battery_driver);
--
2.39.2
^ permalink raw reply related [flat|nested] 26+ messages in thread
* Re: [PATCH 08/21] power: supply: max77693: Use devm_power_supply_register() helper
2024-01-23 16:36 ` [PATCH 08/21] power: supply: max77693: " Andrew Davis
@ 2024-01-26 11:56 ` kernel test robot
0 siblings, 0 replies; 26+ messages in thread
From: kernel test robot @ 2024-01-26 11:56 UTC (permalink / raw)
To: Andrew Davis, Sebastian Reichel, Support Opensource,
Krzysztof Kozlowski, Pali Rohár
Cc: llvm, oe-kbuild-all, linux-pm, linux-kernel, Andrew Davis
Hi Andrew,
kernel test robot noticed the following build warnings:
[auto build test WARNING on sre-power-supply/for-next]
[also build test WARNING on linus/master v6.8-rc1 next-20240125]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Andrew-Davis/power-supply-da9030-Use-devm_power_supply_register-helper/20240124-004253
base: https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git for-next
patch link: https://lore.kernel.org/r/20240123163653.384385-9-afd%40ti.com
patch subject: [PATCH 08/21] power: supply: max77693: Use devm_power_supply_register() helper
config: i386-buildonly-randconfig-006-20240126 (https://download.01.org/0day-ci/archive/20240126/202401261917.tA05PFDO-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240126/202401261917.tA05PFDO-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401261917.tA05PFDO-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/power/supply/max77693_charger.c:733:27: warning: unused variable 'chg' [-Wunused-variable]
733 | struct max77693_charger *chg = platform_get_drvdata(pdev);
| ^~~
1 warning generated.
vim +/chg +733 drivers/power/supply/max77693_charger.c
87c2d9067893cd drivers/power/max77693_charger.c Krzysztof Kozlowski 2015-01-20 730
1d138270d2963b drivers/power/supply/max77693_charger.c Uwe Kleine-König 2023-09-18 731 static void max77693_charger_remove(struct platform_device *pdev)
87c2d9067893cd drivers/power/max77693_charger.c Krzysztof Kozlowski 2015-01-20 732 {
87c2d9067893cd drivers/power/max77693_charger.c Krzysztof Kozlowski 2015-01-20 @733 struct max77693_charger *chg = platform_get_drvdata(pdev);
87c2d9067893cd drivers/power/max77693_charger.c Krzysztof Kozlowski 2015-01-20 734
87c2d9067893cd drivers/power/max77693_charger.c Krzysztof Kozlowski 2015-01-20 735 device_remove_file(&pdev->dev, &dev_attr_top_off_timer);
87c2d9067893cd drivers/power/max77693_charger.c Krzysztof Kozlowski 2015-01-20 736 device_remove_file(&pdev->dev, &dev_attr_top_off_threshold_current);
87c2d9067893cd drivers/power/max77693_charger.c Krzysztof Kozlowski 2015-01-20 737 device_remove_file(&pdev->dev, &dev_attr_fast_charge_timer);
87c2d9067893cd drivers/power/max77693_charger.c Krzysztof Kozlowski 2015-01-20 738 }
87c2d9067893cd drivers/power/max77693_charger.c Krzysztof Kozlowski 2015-01-20 739
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 09/21] power: supply: max8925: Use devm_power_supply_register() helper
2024-01-23 16:36 ` [PATCH 09/21] power: supply: max8925: " Andrew Davis
@ 2024-01-26 12:28 ` kernel test robot
0 siblings, 0 replies; 26+ messages in thread
From: kernel test robot @ 2024-01-26 12:28 UTC (permalink / raw)
To: Andrew Davis, Sebastian Reichel, Support Opensource,
Krzysztof Kozlowski, Pali Rohár
Cc: llvm, oe-kbuild-all, linux-pm, linux-kernel, Andrew Davis
Hi Andrew,
kernel test robot noticed the following build warnings:
[auto build test WARNING on sre-power-supply/for-next]
[also build test WARNING on linus/master v6.8-rc1 next-20240125]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Andrew-Davis/power-supply-da9030-Use-devm_power_supply_register-helper/20240124-004253
base: https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git for-next
patch link: https://lore.kernel.org/r/20240123163653.384385-10-afd%40ti.com
patch subject: [PATCH 09/21] power: supply: max8925: Use devm_power_supply_register() helper
config: i386-buildonly-randconfig-001-20240126 (https://download.01.org/0day-ci/archive/20240126/202401262006.hqYtlg6E-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240126/202401262006.hqYtlg6E-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401262006.hqYtlg6E-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/power/supply/max8925_power.c:510:6: warning: unused variable 'ret' [-Wunused-variable]
510 | int ret;
| ^~~
1 warning generated.
vim +/ret +510 drivers/power/supply/max8925_power.c
eba3b670a9166a drivers/power/max8925_power.c Qing Xu 2012-11-19 503
c8afa6406e60ae drivers/power/max8925_power.c Bill Pemberton 2012-11-19 504 static int max8925_power_probe(struct platform_device *pdev)
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 505 {
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 506 struct max8925_chip *chip = dev_get_drvdata(pdev->dev.parent);
2dc9215d7c94f7 drivers/power/max8925_power.c Krzysztof Kozlowski 2015-03-12 507 struct power_supply_config psy_cfg = {}; /* Only for ac and usb */
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 508 struct max8925_power_pdata *pdata = NULL;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 509 struct max8925_power_info *info;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 @510 int ret;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 511
eba3b670a9166a drivers/power/max8925_power.c Qing Xu 2012-11-19 512 pdata = max8925_power_dt_init(pdev);
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 513 if (!pdata) {
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 514 dev_err(&pdev->dev, "platform data isn't assigned to "
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 515 "power supply\n");
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 516 return -EINVAL;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 517 }
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 518
feeb3a92b1f4e4 drivers/power/max8925_power.c Jingoo Han 2013-03-11 519 info = devm_kzalloc(&pdev->dev, sizeof(struct max8925_power_info),
feeb3a92b1f4e4 drivers/power/max8925_power.c Jingoo Han 2013-03-11 520 GFP_KERNEL);
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 521 if (!info)
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 522 return -ENOMEM;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 523 info->chip = chip;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 524 info->gpm = chip->i2c;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 525 info->adc = chip->adc;
2402ca5e300db0 drivers/power/max8925_power.c Haojian Zhuang 2011-04-18 526 platform_set_drvdata(pdev, info);
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 527
2dc9215d7c94f7 drivers/power/max8925_power.c Krzysztof Kozlowski 2015-03-12 528 psy_cfg.supplied_to = pdata->supplied_to;
2dc9215d7c94f7 drivers/power/max8925_power.c Krzysztof Kozlowski 2015-03-12 529 psy_cfg.num_supplicants = pdata->num_supplicants;
2dc9215d7c94f7 drivers/power/max8925_power.c Krzysztof Kozlowski 2015-03-12 530
fec07f69a3e201 drivers/power/supply/max8925_power.c Andrew Davis 2024-01-23 531 info->ac = devm_power_supply_register(&pdev->dev, &ac_desc, &psy_cfg);
fec07f69a3e201 drivers/power/supply/max8925_power.c Andrew Davis 2024-01-23 532 if (IS_ERR(info->ac))
fec07f69a3e201 drivers/power/supply/max8925_power.c Andrew Davis 2024-01-23 533 return PTR_ERR(info->ac);
297d716f6260cc drivers/power/max8925_power.c Krzysztof Kozlowski 2015-03-12 534 info->ac->dev.parent = &pdev->dev;
e7a5f6d55991fb drivers/power/max8925_power.c Philip Rakity 2011-08-29 535
fec07f69a3e201 drivers/power/supply/max8925_power.c Andrew Davis 2024-01-23 536 info->usb = devm_power_supply_register(&pdev->dev, &usb_desc, &psy_cfg);
fec07f69a3e201 drivers/power/supply/max8925_power.c Andrew Davis 2024-01-23 537 if (IS_ERR(info->usb))
fec07f69a3e201 drivers/power/supply/max8925_power.c Andrew Davis 2024-01-23 538 return PTR_ERR(info->usb);
297d716f6260cc drivers/power/max8925_power.c Krzysztof Kozlowski 2015-03-12 539 info->usb->dev.parent = &pdev->dev;
297d716f6260cc drivers/power/max8925_power.c Krzysztof Kozlowski 2015-03-12 540
fec07f69a3e201 drivers/power/supply/max8925_power.c Andrew Davis 2024-01-23 541 info->battery = devm_power_supply_register(&pdev->dev, &battery_desc, NULL);
fec07f69a3e201 drivers/power/supply/max8925_power.c Andrew Davis 2024-01-23 542 if (IS_ERR(info->battery))
fec07f69a3e201 drivers/power/supply/max8925_power.c Andrew Davis 2024-01-23 543 return PTR_ERR(info->battery);
297d716f6260cc drivers/power/max8925_power.c Krzysztof Kozlowski 2015-03-12 544 info->battery->dev.parent = &pdev->dev;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 545
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 546 info->batt_detect = pdata->batt_detect;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 547 info->topoff_threshold = pdata->topoff_threshold;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 548 info->fast_charge = pdata->fast_charge;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 549 info->set_charger = pdata->set_charger;
92de378b739115 drivers/power/max8925_power.c Philip Rakity 2011-11-25 550 info->no_temp_support = pdata->no_temp_support;
5ba1fa0ae288e9 drivers/power/max8925_power.c Philip Rakity 2011-11-25 551 info->no_insert_detect = pdata->no_insert_detect;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 552
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 553 max8925_init_charger(chip, info);
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 554 return 0;
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 555 }
28db38888b2a53 drivers/power/max8925_power.c Haojian Zhuang 2010-01-25 556
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH 15/21] power: supply: wm8350: Use devm_power_supply_register() helper
2024-01-23 16:36 ` [PATCH 15/21] power: supply: wm8350: " Andrew Davis
@ 2024-01-26 13:00 ` kernel test robot
0 siblings, 0 replies; 26+ messages in thread
From: kernel test robot @ 2024-01-26 13:00 UTC (permalink / raw)
To: Andrew Davis, Sebastian Reichel, Support Opensource,
Krzysztof Kozlowski, Pali Rohár
Cc: llvm, oe-kbuild-all, linux-pm, linux-kernel, Andrew Davis
Hi Andrew,
kernel test robot noticed the following build warnings:
[auto build test WARNING on sre-power-supply/for-next]
[also build test WARNING on linus/master v6.8-rc1 next-20240125]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Andrew-Davis/power-supply-da9030-Use-devm_power_supply_register-helper/20240124-004253
base: https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git for-next
patch link: https://lore.kernel.org/r/20240123163653.384385-16-afd%40ti.com
patch subject: [PATCH 15/21] power: supply: wm8350: Use devm_power_supply_register() helper
config: i386-buildonly-randconfig-004-20240126 (https://download.01.org/0day-ci/archive/20240126/202401262027.yOqHrHcD-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240126/202401262027.yOqHrHcD-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401262027.yOqHrHcD-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/power/supply/wm8350_power.c:573:23: warning: unused variable 'power' [-Wunused-variable]
573 | struct wm8350_power *power = &wm8350->power;
| ^~~~~
1 warning generated.
vim +/power +573 drivers/power/supply/wm8350_power.c
14431aa0c5a443 drivers/power/wm8350_power.c Mark Brown 2008-11-16 569
42720969f394dc drivers/power/supply/wm8350_power.c Uwe Kleine-König 2023-09-18 570 static void wm8350_power_remove(struct platform_device *pdev)
14431aa0c5a443 drivers/power/wm8350_power.c Mark Brown 2008-11-16 571 {
14431aa0c5a443 drivers/power/wm8350_power.c Mark Brown 2008-11-16 572 struct wm8350 *wm8350 = platform_get_drvdata(pdev);
14431aa0c5a443 drivers/power/wm8350_power.c Mark Brown 2008-11-16 @573 struct wm8350_power *power = &wm8350->power;
14431aa0c5a443 drivers/power/wm8350_power.c Mark Brown 2008-11-16 574
14431aa0c5a443 drivers/power/wm8350_power.c Mark Brown 2008-11-16 575 free_charger_irq(wm8350);
14431aa0c5a443 drivers/power/wm8350_power.c Mark Brown 2008-11-16 576 device_remove_file(&pdev->dev, &dev_attr_charger_state);
14431aa0c5a443 drivers/power/wm8350_power.c Mark Brown 2008-11-16 577 }
14431aa0c5a443 drivers/power/wm8350_power.c Mark Brown 2008-11-16 578
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: (subset) [PATCH 00/21] Power supply register with devm
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
` (20 preceding siblings ...)
2024-01-23 16:36 ` [PATCH 21/21] power: supply: twl4030_madc: Use devm_power_supply_register() helper Andrew Davis
@ 2024-01-27 0:48 ` Sebastian Reichel
21 siblings, 0 replies; 26+ messages in thread
From: Sebastian Reichel @ 2024-01-27 0:48 UTC (permalink / raw)
To: Sebastian Reichel, Support Opensource, Krzysztof Kozlowski,
Pali Rohár, Andrew Davis
Cc: linux-pm, linux-kernel
On Tue, 23 Jan 2024 10:36:32 -0600, Andrew Davis wrote:
> This is a semi-automated series converting several drivers
> under power/supply over to using devm_power_supply_register().
> The more trivial cases are first, the last 3 drivers needed
> a little pre-work to convert their IIO uses over to devm before
> power_supply_register() could be switched.
>
> Thanks,
> Andrew
>
> [...]
Applied, thanks!
[01/21] power: supply: da9030: Use devm_power_supply_register() helper
commit: 98be59bd03aa50d155ba84208cd964017e397fc9
[02/21] power: supply: da9052: Use devm_power_supply_register() helper
commit: 57261cda154b3d0f8671ea222672f75b1e965c15
[03/21] power: supply: ds2760: Use devm_power_supply_register() helper
commit: 88a72257a438375894de446885bb40946e0f979f
[04/21] power: supply: goldfish: Use devm_power_supply_register() helper
commit: ada63f1ec91b77417cf195dadd646eaadb6f121c
[05/21] power: supply: lp8727: Use devm_power_supply_register() helper
commit: 3b4d07fdaf17a8bb79173c2c40876d3221edeea4
[06/21] power: supply: lp8788: Use devm_power_supply_register() helper
commit: 2abb571143c39f581df9951d263948726db42d86
[07/21] power: supply: max14577: Use devm_power_supply_register() helper
(no commit info)
[10/21] power: supply: pcf50633: Use devm_power_supply_register() helper
commit: e90a67f618c4a1128c49b11ddec37d9f1728ff5b
[11/21] power: supply: rt5033: Use devm_power_supply_register() helper
commit: 3a93da231c12bb153224bbbdd3d9a83da9e0ba33
[12/21] power: supply: tps65090: Use devm_power_supply_register() helper
commit: 503920abb586c3e355a19c680089ff5b33d97262
[13/21] power: supply: wm831x: Use devm_power_supply_register() helper
commit: f2a7667c6cc09431575a286ec87e823fddd4dd41
[14/21] power: supply: wm831x: Use devm_power_supply_register() helper
commit: f2a7667c6cc09431575a286ec87e823fddd4dd41
[16/21] power: supply: da9150: Use devm_iio_channel_get() helper
commit: 9115c677071a09cf51cace59c33ed71ec61bdfec
[17/21] power: supply: da9150: Use devm_power_supply_register() helper
commit: 077c1df8456f97d89e4880ba503d8ddf6af5be12
[18/21] power: supply: rx51: Use devm_iio_channel_get() helper
commit: a16dc57e97558dcff7c422b3abec4f9880e8272b
[19/21] power: supply: rx51: Use devm_power_supply_register() helper
commit: 4cb372a0ca220fff4a3878c4d1239af3e057e7cc
[20/21] power: supply: twl4030_madc: Use devm_iio_channel_get() helper
commit: 8ac675344280a406835f03746594345209f2c1ae
[21/21] power: supply: twl4030_madc: Use devm_power_supply_register() helper
commit: 4c5d387d79a65355b73e526cbf5754a9dcd5377b
Best regards,
--
Sebastian Reichel <sebastian.reichel@collabora.com>
^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2024-01-27 0:48 UTC | newest]
Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-23 16:36 [PATCH 00/21] Power supply register with devm Andrew Davis
2024-01-23 16:36 ` [PATCH 01/21] power: supply: da9030: Use devm_power_supply_register() helper Andrew Davis
2024-01-23 16:36 ` [PATCH 02/21] power: supply: da9052: " Andrew Davis
2024-01-23 16:36 ` [PATCH 03/21] power: supply: ds2760: " Andrew Davis
2024-01-23 16:36 ` [PATCH 04/21] power: supply: goldfish: " Andrew Davis
2024-01-23 16:36 ` [PATCH 05/21] power: supply: lp8727: " Andrew Davis
2024-01-23 16:36 ` [PATCH 06/21] power: supply: lp8788: " Andrew Davis
2024-01-23 16:36 ` [PATCH 07/21] power: supply: max14577: " Andrew Davis
2024-01-23 16:36 ` [PATCH 08/21] power: supply: max77693: " Andrew Davis
2024-01-26 11:56 ` kernel test robot
2024-01-23 16:36 ` [PATCH 09/21] power: supply: max8925: " Andrew Davis
2024-01-26 12:28 ` kernel test robot
2024-01-23 16:36 ` [PATCH 10/21] power: supply: pcf50633: " Andrew Davis
2024-01-23 16:36 ` [PATCH 11/21] power: supply: rt5033: " Andrew Davis
2024-01-23 16:36 ` [PATCH 12/21] power: supply: tps65090: " Andrew Davis
2024-01-23 16:36 ` [PATCH 13/21] power: supply: wm831x: " Andrew Davis
2024-01-23 16:36 ` [PATCH 14/21] " Andrew Davis
2024-01-23 16:36 ` [PATCH 15/21] power: supply: wm8350: " Andrew Davis
2024-01-26 13:00 ` kernel test robot
2024-01-23 16:36 ` [PATCH 16/21] power: supply: da9150: Use devm_iio_channel_get() helper Andrew Davis
2024-01-23 16:36 ` [PATCH 17/21] power: supply: da9150: Use devm_power_supply_register() helper Andrew Davis
2024-01-23 16:36 ` [PATCH 18/21] power: supply: rx51: Use devm_iio_channel_get() helper Andrew Davis
2024-01-23 16:36 ` [PATCH 19/21] power: supply: rx51: Use devm_power_supply_register() helper Andrew Davis
2024-01-23 16:36 ` [PATCH 20/21] power: supply: twl4030_madc: Use devm_iio_channel_get() helper Andrew Davis
2024-01-23 16:36 ` [PATCH 21/21] power: supply: twl4030_madc: Use devm_power_supply_register() helper Andrew Davis
2024-01-27 0:48 ` (subset) [PATCH 00/21] Power supply register with devm Sebastian Reichel
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.