From 9ab9fd2458bdfd85ef6d098b7a83443accbc7bf6 Mon Sep 17 00:00:00 2001 From: Algea Cao Date: Wed, 31 Mar 2021 09:33:31 +0800 Subject: [PATCH] drm/rockchp: drv: Add comparison to mode clock For resolution floating refresh rate such as 59.94 Hz, the only difference between the resolution and its corresponding integer refresh rate resolution is the clock. Signed-off-by: Algea Cao Change-Id: I149471f58c9eb65f972139b23a45339ea8807e54 --- drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index 611231eff992..39981d148d95 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -71,6 +71,7 @@ struct rockchip_drm_mode_set { struct drm_connector *connector; struct drm_crtc *crtc; struct drm_display_mode *mode; + int clock; int hdisplay; int vdisplay; int vrefresh; @@ -461,6 +462,9 @@ of_parse_display_resource(struct drm_device *drm_dev, struct device_node *route) if (!set) return NULL; + if (!of_property_read_u32(route, "video,clock", &val)) + set->clock = val; + if (!of_property_read_u32(route, "video,hdisplay", &val)) set->hdisplay = val; @@ -680,7 +684,8 @@ static int setup_initial_state(struct drm_device *drm_dev, } list_for_each_entry(mode, &connector->modes, head) { - if (mode->hdisplay == set->hdisplay && + if (mode->clock == set->clock && + mode->hdisplay == set->hdisplay && mode->vdisplay == set->vdisplay && mode->crtc_hsync_end == set->crtc_hsync_end && mode->crtc_vsync_end == set->crtc_vsync_end &&