summaryrefslogtreecommitdiff
path: root/drivers/soc
diff options
context:
space:
mode:
authorSven Peter <sven@kernel.org>2026-01-17 18:59:10 +0100
committerSven Peter <sven@kernel.org>2026-01-18 20:32:57 +0100
commitba99035bf16ef0d4a7f6acd56fc9292c0bd0d42e (patch)
treef1e45b9a5a7da2f9d18ef42b459123420d9d0faf /drivers/soc
parent8f0b4cce4481fb22653697cced8d0d04027cb1e8 (diff)
downloadlwn-ba99035bf16ef0d4a7f6acd56fc9292c0bd0d42e.tar.gz
lwn-ba99035bf16ef0d4a7f6acd56fc9292c0bd0d42e.zip
soc: apple: rtkit: Add function to poweroff
Add a function to put a co-processor into the lowest possible power state from which recovery usually isn't possible without a full SoC reset. This is required for the USB4/Thunderbolt co-processors which can be restarted since the entire USB4 root complex can be completely reset independently of the rest of the SoC. Reviewed-by: Janne Grunau <j@jannau.net> Link: https://patch.msgid.link/20260117-apple-rtkit-poweroff-v2-1-b882a180e44d@kernel.org Signed-off-by: Sven Peter <sven@kernel.org>
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/apple/rtkit.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/soc/apple/rtkit.c b/drivers/soc/apple/rtkit.c
index b8d4da147d23..4ad4f964fde7 100644
--- a/drivers/soc/apple/rtkit.c
+++ b/drivers/soc/apple/rtkit.c
@@ -851,6 +851,22 @@ int apple_rtkit_shutdown(struct apple_rtkit *rtk)
}
EXPORT_SYMBOL_GPL(apple_rtkit_shutdown);
+int apple_rtkit_poweroff(struct apple_rtkit *rtk)
+{
+ int ret;
+
+ ret = apple_rtkit_set_ap_power_state(rtk, APPLE_RTKIT_PWR_STATE_OFF);
+ if (ret)
+ return ret;
+
+ ret = apple_rtkit_set_iop_power_state(rtk, APPLE_RTKIT_PWR_STATE_OFF);
+ if (ret)
+ return ret;
+
+ return apple_rtkit_reinit(rtk);
+}
+EXPORT_SYMBOL_GPL(apple_rtkit_poweroff);
+
int apple_rtkit_idle(struct apple_rtkit *rtk)
{
int ret;