From 7f64e7c02cad5e0a82c835cd125478109e5fb4e9 Mon Sep 17 00:00:00 2001 From: XiaoDong Huang Date: Wed, 10 Aug 2022 15:15:42 +0800 Subject: [PATCH] soc: rockchip: pm_config: support sleep-io-ret-config Signed-off-by: XiaoDong Huang Change-Id: I5a26367fe2396832f7655331e292b53ebcf9a15d --- drivers/soc/rockchip/rockchip_pm_config.c | 12 ++++++++++++ include/linux/rockchip/rockchip_sip.h | 1 + 2 files changed, 13 insertions(+) diff --git a/drivers/soc/rockchip/rockchip_pm_config.c b/drivers/soc/rockchip/rockchip_pm_config.c index f8ed42460bb8..2ed57709de24 100644 --- a/drivers/soc/rockchip/rockchip_pm_config.c +++ b/drivers/soc/rockchip/rockchip_pm_config.c @@ -165,12 +165,14 @@ static int pm_config_probe(struct platform_device *pdev) int gpio_temp[10]; u32 sleep_debug_en = 0; u32 apios_suspend = 0; + u32 io_ret_config = 0; #if defined(CONFIG_NO_GKI) u32 virtual_poweroff_en = 0; #endif enum of_gpio_flags flags; int i = 0; int length; + int ret; match_id = of_match_node(pm_match_table, pdev->dev.of_node); if (!match_id) @@ -237,6 +239,16 @@ static int pm_config_probe(struct platform_device *pdev) apios_suspend, 0); + if (!of_property_read_u32_array(node, + "rockchip,sleep-io-ret-config", + &io_ret_config, 1)) { + ret = sip_smc_set_suspend_mode(SUSPEND_IO_RET_CONFIG, io_ret_config, 0); + if (ret) + dev_warn(&pdev->dev, + "sleep-io-ret-config failed (%d), check parameters or update trust\n", + ret); + } + #if defined(CONFIG_NO_GKI) if (!of_property_read_u32_array(node, "rockchip,virtual-poweroff", diff --git a/include/linux/rockchip/rockchip_sip.h b/include/linux/rockchip/rockchip_sip.h index 7e2e5943a1a3..65ca8e0ec2cf 100644 --- a/include/linux/rockchip/rockchip_sip.h +++ b/include/linux/rockchip/rockchip_sip.h @@ -105,6 +105,7 @@ #define VIRTUAL_POWEROFF 0x07 #define SUSPEND_WFI_TIME_MS 0x08 #define LINUX_PM_STATE 0x09 +#define SUSPEND_IO_RET_CONFIG 0x0a /* SIP_REMOTECTL_CFG call types */ #define REMOTECTL_SET_IRQ 0xf0