From 95099d4622f8cb224d94e314c7a8e0df60b13f87 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 09 Dec 2023 08:38:01 +0000
Subject: [PATCH] enable docker ppp
---
kernel/drivers/soc/rockchip/rockchip_pm_config.c | 40 +++++++++++++++++++++++++++++++++++++++-
1 files changed, 39 insertions(+), 1 deletions(-)
diff --git a/kernel/drivers/soc/rockchip/rockchip_pm_config.c b/kernel/drivers/soc/rockchip/rockchip_pm_config.c
index 659bab2..639a004 100644
--- a/kernel/drivers/soc/rockchip/rockchip_pm_config.c
+++ b/kernel/drivers/soc/rockchip/rockchip_pm_config.c
@@ -34,6 +34,7 @@
RK_PM_STATE_MAX
};
+#ifndef MODULE
static const char * const pm_state_str[RK_PM_STATE_MAX] = {
[RK_PM_MEM] = "mem",
[RK_PM_MEM_LITE] = "mem-lite",
@@ -44,6 +45,7 @@
struct regulator_dev *on_reg_list[MAX_ON_OFF_REG_NUM];
struct regulator_dev *off_reg_list[MAX_ON_OFF_REG_NUM];
} on_off_regs_list[RK_PM_STATE_MAX];
+#endif
static struct rk_sleep_config {
u32 mode_config;
@@ -59,18 +61,22 @@
{ .compatible = "rockchip,pm-rk3328",},
{ .compatible = "rockchip,pm-rk3368",},
{ .compatible = "rockchip,pm-rk3399",},
+ { .compatible = "rockchip,pm-rk3528",},
+ { .compatible = "rockchip,pm-rk3562",},
{ .compatible = "rockchip,pm-rk3568",},
+ { .compatible = "rockchip,pm-rk3588",},
{ .compatible = "rockchip,pm-rv1126",},
{ },
};
+#ifndef MODULE
static void rockchip_pm_virt_pwroff_prepare(void)
{
int error;
regulator_suspend_prepare(PM_SUSPEND_MEM);
- error = disable_nonboot_cpus();
+ error = suspend_disable_secondary_cpus();
if (error) {
pr_err("Disable nonboot cpus failed!\n");
return;
@@ -158,6 +164,7 @@
return 0;
}
+#endif
static int pm_config_probe(struct platform_device *pdev)
{
@@ -168,10 +175,15 @@
int gpio_temp[10];
u32 sleep_debug_en = 0;
u32 apios_suspend = 0;
+ u32 io_ret_config = 0;
+ u32 sleep_pin_config[2] = {0};
+#ifndef MODULE
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)
@@ -239,6 +251,27 @@
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 (!of_property_read_u32_array(node,
+ "rockchip,sleep-pin-config",
+ sleep_pin_config, 2)) {
+ ret = sip_smc_set_suspend_mode(SLEEP_PIN_CONFIG, sleep_pin_config[0], sleep_pin_config[1]);
+ if (ret)
+ dev_warn(&pdev->dev,
+ "sleep-pin-config failed (%d), check parameters or update trust\n",
+ ret);
+ }
+
+#ifndef MODULE
+ if (!of_property_read_u32_array(node,
"rockchip,virtual-poweroff",
&virtual_poweroff_en, 1) &&
virtual_poweroff_en)
@@ -248,10 +281,12 @@
parse_sleep_config(node, i);
parse_on_off_regulator(node, i);
}
+#endif
return 0;
}
+#ifndef MODULE
static int pm_config_prepare(struct device *dev)
{
int i;
@@ -299,13 +334,16 @@
static const struct dev_pm_ops rockchip_pm_ops = {
.prepare = pm_config_prepare,
};
+#endif
static struct platform_driver pm_driver = {
.probe = pm_config_probe,
.driver = {
.name = "rockchip-pm",
.of_match_table = pm_match_table,
+#ifndef MODULE
.pm = &rockchip_pm_ops,
+#endif
},
};
--
Gitblit v1.6.2