diff options
author | Charles Keepax <ckeepax@opensource.cirrus.com> | 2025-09-03 10:45:46 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2025-09-04 13:00:38 +0100 |
commit | a69b4ba19a07896e7e4246446bad002f5fc0dae1 (patch) | |
tree | 336bf2b84cd5588f46998a5528d1a2c413c5aeb3 /rust/helpers/platform.c | |
parent | 149dda5f42a8fa6dacf2cff1d16952de28622d30 (diff) |
ASoC: cs42l43: Disable IRQs in system suspend
Currently the MFD driver disables all the IRQs upon entering system
suspend, however there are some issues with this approach. As this
device uses runtime force suspend.
The regmap IRQ handler can run, claim a PM runtime reference and get
scheduled, the MFD can then force suspend. When the IRQ thread gets
rescheduled it will try to access volatile registers on the
suspended device. Furthermore, this race also applies to work queue
items scheduled by the IRQ handlers.
As the MFD code doesn't know about the individual work queue items, the
end drivers must mask their own IRQs and sync in any work queues as part
of entering system suspend. Update the code here to do so.
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Message-ID: <20250903094549.271068-4-ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'rust/helpers/platform.c')
0 files changed, 0 insertions, 0 deletions