diff --git a/drivers/soc/rockchip/rockchip_system_monitor.c b/drivers/soc/rockchip/rockchip_system_monitor.c index 4f3f46364355..e5350b3dd60e 100644 --- a/drivers/soc/rockchip/rockchip_system_monitor.c +++ b/drivers/soc/rockchip/rockchip_system_monitor.c @@ -297,6 +297,7 @@ static void rockchip_update_video_info(void) { struct video_info *video_info; unsigned int max_res = 0, max_stream_bitrate = 0, res = 0; + unsigned int max_video_framerate = 0; mutex_lock(&video_info_mutex); if (list_empty(&video_info_list)) { @@ -311,6 +312,8 @@ static void rockchip_update_video_info(void) max_res = res; if (video_info->streamBitrate > max_stream_bitrate) max_stream_bitrate = video_info->streamBitrate; + if (video_info->videoFramerate > max_video_framerate) + max_video_framerate = video_info->videoFramerate; } mutex_unlock(&video_info_mutex); @@ -319,8 +322,9 @@ static void rockchip_update_video_info(void) } else { if (max_stream_bitrate == 10) rockchip_set_system_status(SYS_STATUS_VIDEO_4K_10B); - else - rockchip_set_system_status(SYS_STATUS_VIDEO_4K); + if (max_video_framerate == 60) + rockchip_set_system_status(SYS_STATUS_VIDEO_4K_60P); + rockchip_set_system_status(SYS_STATUS_VIDEO_4K); } } diff --git a/include/dt-bindings/soc/rockchip-system-status.h b/include/dt-bindings/soc/rockchip-system-status.h index b6689e969672..fefd62642e42 100644 --- a/include/dt-bindings/soc/rockchip-system-status.h +++ b/include/dt-bindings/soc/rockchip-system-status.h @@ -36,10 +36,12 @@ #define SYS_STATUS_LOW_POWER (1 << 17) #define SYS_STATUS_HDMIRX (1 << 18) #define SYS_STATUS_VIDEO_SVEP (1 << 19) +#define SYS_STATUS_VIDEO_4K_60P (1 << 20) #define SYS_STATUS_VIDEO (SYS_STATUS_VIDEO_4K | \ SYS_STATUS_VIDEO_1080P | \ - SYS_STATUS_VIDEO_4K_10B) + SYS_STATUS_VIDEO_4K_10B | \ + SYS_STATUS_VIDEO_4K_60P) #define SYS_STATUS_DUALVIEW (SYS_STATUS_LCDC0 | SYS_STATUS_LCDC1) #define DMC_FREQ_LEVEL_LOW (0x1 << 0)