From a6098a99a796abb86818739cb65ae44a451e4085 Mon Sep 17 00:00:00 2001 From: Finley Xiao Date: Mon, 4 Jul 2022 10:16:57 +0800 Subject: [PATCH] PM / devfreq: rockchip_dmc: Add SYS_STATUS_HDMIRX Signed-off-by: Finley Xiao Change-Id: I133589dd2a1f8b88f08a20e7caaf10a3e84c04e3 --- drivers/devfreq/rockchip_dmc.c | 13 +++++++++++++ include/dt-bindings/soc/rockchip-system-status.h | 1 + 2 files changed, 14 insertions(+) diff --git a/drivers/devfreq/rockchip_dmc.c b/drivers/devfreq/rockchip_dmc.c index 84ab49f76521..ca345abc793a 100644 --- a/drivers/devfreq/rockchip_dmc.c +++ b/drivers/devfreq/rockchip_dmc.c @@ -137,6 +137,7 @@ struct rockchip_dmcfreq { unsigned long video_4k_10b_rate; unsigned long performance_rate; unsigned long hdmi_rate; + unsigned long hdmirx_rate; unsigned long idle_rate; unsigned long suspend_rate; unsigned long reboot_rate; @@ -2285,6 +2286,9 @@ static int rockchip_get_system_status_rate(struct device_node *np, case SYS_STATUS_HDMI: dmcfreq->hdmi_rate = freq * 1000; break; + case SYS_STATUS_HDMIRX: + dmcfreq->hdmirx_rate = freq * 1000; + break; case SYS_STATUS_IDLE: dmcfreq->idle_rate = freq * 1000; break; @@ -2429,6 +2433,10 @@ static int rockchip_get_system_status_level(struct device_node *np, dmcfreq->hdmi_rate = rockchip_freq_level_2_rate(dmcfreq, level); dev_info(dmcfreq->dev, "hdmi_rate = %ld\n", dmcfreq->hdmi_rate); break; + case SYS_STATUS_HDMIRX: + dmcfreq->hdmirx_rate = rockchip_freq_level_2_rate(dmcfreq, level); + dev_info(dmcfreq->dev, "hdmirx_rate = %ld\n", dmcfreq->hdmirx_rate); + break; case SYS_STATUS_IDLE: dmcfreq->idle_rate = rockchip_freq_level_2_rate(dmcfreq, level); dev_info(dmcfreq->dev, "idle_rate = %ld\n", dmcfreq->idle_rate); @@ -2519,6 +2527,11 @@ static int rockchip_dmcfreq_system_status_notifier(struct notifier_block *nb, target_rate = dmcfreq->hdmi_rate; } + if (dmcfreq->hdmirx_rate && (status & SYS_STATUS_HDMIRX)) { + if (dmcfreq->hdmirx_rate > target_rate) + target_rate = dmcfreq->hdmirx_rate; + } + if (dmcfreq->video_4k_rate && (status & SYS_STATUS_VIDEO_4K)) { if (dmcfreq->video_4k_rate > target_rate) target_rate = dmcfreq->video_4k_rate; diff --git a/include/dt-bindings/soc/rockchip-system-status.h b/include/dt-bindings/soc/rockchip-system-status.h index 837a1a969c78..30f81fffe113 100644 --- a/include/dt-bindings/soc/rockchip-system-status.h +++ b/include/dt-bindings/soc/rockchip-system-status.h @@ -34,6 +34,7 @@ #define SYS_STATUS_HDMI (1 << 15) #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 (SYS_STATUS_VIDEO_4K | \ SYS_STATUS_VIDEO_1080P | \