Commit ba0086f8 authored by Charles Keepax's avatar Charles Keepax Committed by Matt Davis
Browse files

FROMGIT: 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.

(cherry picked from commit 6e104169d2371f31b26ba991f5d183fe8f203995 https://github.com/CirrusLogic/linux-drivers

 v6.12-cs42l43-cs35l56)
Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Message-ID: <20250903094549.271068-4-ckeepax@opensource.cirrus.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>

Change-Id: Ibf22862880abf8032d31187535c32217d77efe38
Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: default avatarTongtong Pan <pantongtong@huaqin.corp-partner.google.com>
parent 49fe4f83
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment