diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index 882ec39ccbd1..f79ceb000f9f 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -222,6 +222,16 @@ int rockchip_drm_get_sub_dev_type(void) } EXPORT_SYMBOL(rockchip_drm_get_sub_dev_type); +void rockchip_drm_te_handle(struct drm_crtc *crtc) +{ + struct rockchip_drm_private *priv = crtc->dev->dev_private; + int pipe = drm_crtc_index(crtc); + + if (priv->crtc_funcs[pipe] && priv->crtc_funcs[pipe]->te_handler) + priv->crtc_funcs[pipe]->te_handler(crtc); +} +EXPORT_SYMBOL(rockchip_drm_te_handle); + static const struct drm_display_mode rockchip_drm_default_modes[] = { /* 4 - 1280x720@60Hz 16:9 */ { DRM_MODE("1280x720", DRM_MODE_TYPE_DRIVER, 74250, 1280, 1390, diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h index 41c84025ac6a..c7f49a6789fc 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h @@ -322,6 +322,7 @@ struct rockchip_crtc_funcs { int output_type); void (*crtc_close)(struct drm_crtc *crtc); void (*crtc_send_mcu_cmd)(struct drm_crtc *crtc, u32 type, u32 value); + void (*te_handler)(struct drm_crtc *crtc); }; struct rockchip_dclk_pll { @@ -400,6 +401,7 @@ void rockchip_drm_register_sub_dev(struct rockchip_drm_sub_dev *sub_dev); void rockchip_drm_unregister_sub_dev(struct rockchip_drm_sub_dev *sub_dev); struct rockchip_drm_sub_dev *rockchip_drm_get_sub_dev(struct device_node *node); int rockchip_drm_add_modes_noedid(struct drm_connector *connector); +void rockchip_drm_te_handle(struct drm_crtc *crtc); void drm_mode_convert_to_split_mode(struct drm_display_mode *mode); void drm_mode_convert_to_origin_mode(struct drm_display_mode *mode); #if IS_ENABLED(CONFIG_DRM_ROCKCHIP)