diff --git a/drivers/video/drm/rockchip_bridge.c b/drivers/video/drm/rockchip_bridge.c index 61870b5efb..eb89cf29d5 100644 --- a/drivers/video/drm/rockchip_bridge.c +++ b/drivers/video/drm/rockchip_bridge.c @@ -40,3 +40,13 @@ void rockchip_bridge_disable(struct rockchip_bridge *bridge) if (bridge->funcs && bridge->funcs->disable) bridge->funcs->disable(bridge); } + +void rockchip_bridge_mode_set(struct rockchip_bridge *bridge, + const struct drm_display_mode *mode) +{ + if (!bridge || !mode) + return; + + if (bridge->funcs && bridge->funcs->mode_set) + bridge->funcs->mode_set(bridge, mode); +} diff --git a/drivers/video/drm/rockchip_bridge.h b/drivers/video/drm/rockchip_bridge.h index 687b9f277b..b00dfa10e6 100644 --- a/drivers/video/drm/rockchip_bridge.h +++ b/drivers/video/drm/rockchip_bridge.h @@ -13,12 +13,15 @@ struct display_state; struct rockchip_bridge; +struct drm_display_mode; struct rockchip_bridge_funcs { void (*enable)(struct rockchip_bridge *bridge); void (*disable)(struct rockchip_bridge *bridge); void (*pre_enable)(struct rockchip_bridge *bridge); void (*post_disable)(struct rockchip_bridge *bridge); + void (*mode_set)(struct rockchip_bridge *bridge, + const struct drm_display_mode *mode); }; struct rockchip_bridge { @@ -32,5 +35,7 @@ void rockchip_bridge_enable(struct rockchip_bridge *bridge); void rockchip_bridge_disable(struct rockchip_bridge *bridge); void rockchip_bridge_pre_enable(struct rockchip_bridge *bridge); void rockchip_bridge_post_disable(struct rockchip_bridge *bridge); +void rockchip_bridge_mode_set(struct rockchip_bridge *bridge, + const struct drm_display_mode *mode); #endif diff --git a/drivers/video/drm/rockchip_display.c b/drivers/video/drm/rockchip_display.c index 596dfad7a1..139a33801a 100644 --- a/drivers/video/drm/rockchip_display.c +++ b/drivers/video/drm/rockchip_display.c @@ -666,6 +666,9 @@ static int display_init(struct display_state *state) drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V); + if (conn_state->bridge) + rockchip_bridge_mode_set(conn_state->bridge, &conn_state->mode); + if (crtc_funcs->init) { ret = crtc_funcs->init(state); if (ret)