[PATCH] regulator: arizona-micsupp: freeze charge-pump state work
From: Jiale Yao
Date: Wed Oct 28 2026 - 00:50:37 EST
The charge-pump state worker accesses the device through regmap and then
updates DAPM state. It is currently queued on system_wq, so it can run
after the backing bus has suspended.
Queue the worker on system_freezable_wq so hardware access is deferred
until devices have resumed.
Fixes: e6ed90581bfa ("regulator: arizona-micsupp: Enable SYSCLK for charge pump")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Jiale Yao <yaojiale02@xxxxxxx>
---
drivers/regulator/arizona-micsupp.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/regulator/arizona-micsupp.c b/drivers/regulator/arizona-micsupp.c
index be7208bc7409..ae99173b8236 100644
--- a/drivers/regulator/arizona-micsupp.c
+++ b/drivers/regulator/arizona-micsupp.c
@@ -78,7 +78,7 @@ static int arizona_micsupp_enable(struct regulator_dev *rdev)
ret = regulator_enable_regmap(rdev);
if (ret == 0)
- schedule_work(&micsupp->check_cp_work);
+ queue_work(system_freezable_wq, &micsupp->check_cp_work);
return ret;
}
@@ -90,7 +90,7 @@ static int arizona_micsupp_disable(struct regulator_dev *rdev)
ret = regulator_disable_regmap(rdev);
if (ret == 0)
- schedule_work(&micsupp->check_cp_work);
+ queue_work(system_freezable_wq, &micsupp->check_cp_work);
return ret;
}
@@ -102,7 +102,7 @@ static int arizona_micsupp_set_bypass(struct regulator_dev *rdev, bool ena)
ret = regulator_set_bypass_regmap(rdev, ena);
if (ret == 0)
- schedule_work(&micsupp->check_cp_work);
+ queue_work(system_freezable_wq, &micsupp->check_cp_work);
return ret;
}
--
2.34.1