summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>2026-03-05 22:45:44 +0100
committerSebastian Reichel <sebastian.reichel@collabora.com>2026-03-11 06:58:00 +0100
commitf23afa01040a41882a048e4957a7acac1426da6f (patch)
tree88a9b96b4cd778680d9a27c5c3fee0324c452596
parent1e668baadefb16e81269dbfebf3ffc2672e3a3bb (diff)
power: supply: mt6370: Simplify with devm_alloc_ordered_workqueue()
Simplify the driver probe function by using devm_alloc_ordered_workqueue() which handles the cleanup already. Change is not equivalent in the workqueue itself: use non-legacy API which does not set (__WQ_LEGACY | WQ_MEM_RECLAIM). The workqueue is used to update power supply data (power_supply_changed()) status, thus there is no point to run it for memory reclaim. Note that dev_name() is not directly used in second argument to prevent possible unlikely parsing any "%" character in device name as format. Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://patch.msgid.link/20260305-workqueue-devm-v2-5-66a38741c652@oss.qualcomm.com Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
-rw-r--r--drivers/power/supply/mt6370-charger.c13
1 files changed, 1 insertions, 12 deletions
diff --git a/drivers/power/supply/mt6370-charger.c b/drivers/power/supply/mt6370-charger.c
index e6db961d5818..916556baa854 100644
--- a/drivers/power/supply/mt6370-charger.c
+++ b/drivers/power/supply/mt6370-charger.c
@@ -761,13 +761,6 @@ static int mt6370_chg_init_psy(struct mt6370_priv *priv)
return PTR_ERR_OR_ZERO(priv->psy);
}
-static void mt6370_chg_destroy_wq(void *data)
-{
- struct workqueue_struct *wq = data;
-
- destroy_workqueue(wq);
-}
-
static irqreturn_t mt6370_attach_i_handler(int irq, void *data)
{
struct mt6370_priv *priv = data;
@@ -893,14 +886,10 @@ static int mt6370_chg_probe(struct platform_device *pdev)
priv->attach = MT6370_ATTACH_STAT_DETACH;
- priv->wq = create_singlethread_workqueue(dev_name(priv->dev));
+ priv->wq = devm_alloc_ordered_workqueue(dev, "%s", 0, dev_name(priv->dev));
if (!priv->wq)
return -ENOMEM;
- ret = devm_add_action_or_reset(dev, mt6370_chg_destroy_wq, priv->wq);
- if (ret)
- return ret;
-
ret = devm_work_autocancel(dev, &priv->bc12_work, mt6370_chg_bc12_work_func);
if (ret)
return dev_err_probe(dev, ret, "Failed to init bc12 work\n");