From fd5a3be7ea73deaeaedc4e1cce890cef287003b6 Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Sat, 27 Aug 2022 09:52:24 +0800 Subject: [PATCH] PM / devfreq: rockchip_dmc: Add SYS_STATUS_VIDEO_SVEP Signed-off-by: Finley Xiao Change-Id: Ic6f3b7b2b87df8ac727748a7ca24cd511c3570f4 --- drivers/devfreq/rockchip_dmc.c | 14 ++++++++++++++ include/dt-bindings/soc/rockchip-system-status.h | 1 + 2 files changed, 15 insertions(+) diff --git a/drivers/devfreq/rockchip_dmc.c b/drivers/devfreq/rockchip_dmc.c index ca345abc793a..1cdb66af9084 100644 --- a/drivers/devfreq/rockchip_dmc.c +++ b/drivers/devfreq/rockchip_dmc.c @@ -135,6 +135,7 @@ struct rockchip_dmcfreq { unsigned long video_1080p_rate; unsigned long video_4k_rate; unsigned long video_4k_10b_rate; + unsigned long video_svep_rate; unsigned long performance_rate; unsigned long hdmi_rate; unsigned long hdmirx_rate; @@ -2280,6 +2281,9 @@ static int rockchip_get_system_status_rate(struct device_node *np, case SYS_STATUS_VIDEO_4K_10B: dmcfreq->video_4k_10b_rate = freq * 1000; break; + case SYS_STATUS_VIDEO_SVEP: + dmcfreq->video_svep_rate = freq * 1000; + break; case SYS_STATUS_PERFORMANCE: dmcfreq->performance_rate = freq * 1000; break; @@ -2424,6 +2428,11 @@ static int rockchip_get_system_status_level(struct device_node *np, dev_info(dmcfreq->dev, "video_4k_10b_rate = %ld\n", dmcfreq->video_4k_10b_rate); break; + case SYS_STATUS_VIDEO_SVEP: + dmcfreq->video_svep_rate = rockchip_freq_level_2_rate(dmcfreq, level); + dev_info(dmcfreq->dev, "video_svep_rate = %ld\n", + dmcfreq->video_svep_rate); + break; case SYS_STATUS_PERFORMANCE: dmcfreq->performance_rate = rockchip_freq_level_2_rate(dmcfreq, level); dev_info(dmcfreq->dev, "performance_rate = %ld\n", @@ -2547,6 +2556,11 @@ static int rockchip_dmcfreq_system_status_notifier(struct notifier_block *nb, target_rate = dmcfreq->video_1080p_rate; } + if (dmcfreq->video_svep_rate && (status & SYS_STATUS_VIDEO_SVEP)) { + if (dmcfreq->video_svep_rate > target_rate) + target_rate = dmcfreq->video_svep_rate; + } + next: dev_dbg(dmcfreq->dev, "status=0x%x\n", (unsigned int)status); diff --git a/include/dt-bindings/soc/rockchip-system-status.h b/include/dt-bindings/soc/rockchip-system-status.h index 30f81fffe113..b6689e969672 100644 --- a/include/dt-bindings/soc/rockchip-system-status.h +++ b/include/dt-bindings/soc/rockchip-system-status.h @@ -35,6 +35,7 @@ #define SYS_STATUS_VIDEO_4K_10B (1 << 16) #define SYS_STATUS_LOW_POWER (1 << 17) #define SYS_STATUS_HDMIRX (1 << 18) +#define SYS_STATUS_VIDEO_SVEP (1 << 19) #define SYS_STATUS_VIDEO (SYS_STATUS_VIDEO_4K | \ SYS_STATUS_VIDEO_1080P | \