[PATCH 1/2] mfd: si476x: queue polling work on freezable workqueue

From: Jiale Yao

Date: Fri Oct 16 2026 - 06:08:06 EST


SI476x devices without an interrupt continuously poll their status over
I2C. The polling callback runs on the non-freezable system workqueue and
can issue a transfer after the adapter has been suspended.

Queue status polling on system_freezable_wq so it stops before device
suspend and continues after resume.

Signed-off-by: Jiale Yao <yaojiale02@xxxxxxx>
---
drivers/mfd/si476x-i2c.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/mfd/si476x-i2c.c b/drivers/mfd/si476x-i2c.c
index 9bce720a0a08..8d952113f8a6 100644
--- a/drivers/mfd/si476x-i2c.c
+++ b/drivers/mfd/si476x-i2c.c
@@ -17,6 +17,7 @@
#include <linux/regulator/consumer.h>
#include <linux/i2c.h>
#include <linux/err.h>
+#include <linux/workqueue.h>

#include <linux/mfd/si476x-core.h>

@@ -97,8 +98,8 @@ static int si476x_core_config_pinmux(struct si476x_core *core)

static inline void si476x_core_schedule_polling_work(struct si476x_core *core)
{
- schedule_delayed_work(&core->status_monitor,
- usecs_to_jiffies(SI476X_STATUS_POLL_US));
+ queue_delayed_work(system_freezable_wq, &core->status_monitor,
+ usecs_to_jiffies(SI476X_STATUS_POLL_US));
}

/**
--
2.34.1