From ea08eeccae9297f7aabd2ef7f0c2517ac4549acc Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Tue, 20 Feb 2024 01:18:26 +0000 Subject: [PATCH] write in 30M --- kernel/drivers/devfreq/rockchip_dmc.c | 21 ++++++++++++++++++++- 1 files changed, 20 insertions(+), 1 deletions(-) diff --git a/kernel/drivers/devfreq/rockchip_dmc.c b/kernel/drivers/devfreq/rockchip_dmc.c index 01edb77..e3d39bd 100644 --- a/kernel/drivers/devfreq/rockchip_dmc.c +++ b/kernel/drivers/devfreq/rockchip_dmc.c @@ -7,7 +7,6 @@ */ #include <dt-bindings/clock/rockchip-ddr.h> -#include <dt-bindings/soc/rockchip-system-status.h> #include <drm/drm_modeset_lock.h> #include <linux/arm-smccc.h> #include <linux/clk.h> @@ -141,6 +140,7 @@ unsigned long hdmirx_rate; unsigned long idle_rate; unsigned long suspend_rate; + unsigned long deep_suspend_rate; unsigned long reboot_rate; unsigned long boost_rate; unsigned long fixed_rate; @@ -1996,6 +1996,12 @@ if (of_property_read_u32(pdev->dev.of_node, "wait-mode", &ddr_psci_param->wait_mode)) ddr_psci_param->wait_mode = 0; + res = sip_smc_dram(SHARE_PAGE_TYPE_DDR, 0, ROCKCHIP_SIP_CONFIG_DRAM_GET_STALL_TIME); + if (res.a0) + dev_err(dmcfreq->dev, "Current ATF unsupported get_stall_time\n"); + else + dmcfreq->info.stall_time_ns = (unsigned int)res.a1; + dmcfreq->set_auto_self_refresh = rockchip_ddr_set_auto_self_refresh; return 0; @@ -2248,6 +2254,9 @@ case SYS_STATUS_SUSPEND: dmcfreq->suspend_rate = freq * 1000; break; + case SYS_STATUS_DEEP_SUSPEND: + dmcfreq->deep_suspend_rate = freq * 1000; + break; case SYS_STATUS_VIDEO_1080P: dmcfreq->video_1080p_rate = freq * 1000; break; @@ -2389,6 +2398,11 @@ case SYS_STATUS_SUSPEND: dmcfreq->suspend_rate = rockchip_freq_level_2_rate(dmcfreq, level); dev_info(dmcfreq->dev, "suspend_rate = %ld\n", dmcfreq->suspend_rate); + break; + case SYS_STATUS_DEEP_SUSPEND: + dmcfreq->deep_suspend_rate = rockchip_freq_level_2_rate(dmcfreq, level); + dev_info(dmcfreq->dev, "deep_suspend_rate = %ld\n", + dmcfreq->deep_suspend_rate); break; case SYS_STATUS_VIDEO_1080P: dmcfreq->video_1080p_rate = rockchip_freq_level_2_rate(dmcfreq, level); @@ -3052,6 +3066,10 @@ if (rockchip_get_rl_map_talbe(np, "vop-pn-msch-readlatency", &dmcfreq->info.vop_pn_rl_tbl)) dev_err(dev, "failed to get vop pn to msch rl\n"); + if (dmcfreq->video_4k_rate) + dmcfreq->info.vop_4k_rate = dmcfreq->video_4k_rate; + else if (dmcfreq->video_4k_10b_rate) + dmcfreq->info.vop_4k_rate = dmcfreq->video_4k_10b_rate; of_property_read_u32(np, "touchboost_duration", (u32 *)&dmcfreq->touchboostpulse_duration_val); @@ -3087,6 +3105,7 @@ devm_devfreq_register_opp_notifier(dev, devfreq); devfreq->last_status.current_frequency = opp_rate; + devfreq->suspend_freq = dmcfreq->deep_suspend_rate; reset_last_status(devfreq); -- Gitblit v1.6.2