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