From fd72b2f4af8b11d8957f1ea4ef149523bd6b3c74 Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Mon, 7 Apr 2025 17:44:44 +0800 Subject: [PATCH] drm/rockchip: vop2: init vp->output_if for logo state vp->output_if will be used at vop2_crtc_atomic_disable(), so we need init it at vop2_crtc_loader_protect() for logo display. Signed-off-by: Sandy Huang Change-Id: I259a858255abe701f8b8037ac09e84a46f8db489 --- drivers/gpu/drm/rockchip/rockchip_drm_vop2.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c index c31f8db9f8b2..d5899db079c3 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop2.c @@ -7765,7 +7765,7 @@ static int vop2_crtc_get_inital_acm_info(struct drm_crtc *crtc) static int vop2_crtc_loader_protect(struct drm_crtc *crtc, bool on, void *data) { struct vop2_video_port *vp = to_vop2_video_port(crtc); - struct rockchip_crtc_state *vcstate = to_rockchip_crtc_state(crtc->state); + struct rockchip_crtc_state *vcstate; struct vop2 *vop2 = vp->vop2; struct rockchip_drm_private *private = crtc->dev->dev_private; const struct vop2_video_port_data *vp_data = &vop2->data->vp[vp->id]; @@ -7796,6 +7796,8 @@ static int vop2_crtc_loader_protect(struct drm_crtc *crtc, bool on, void *data) vp->enabled_win_mask |= BIT(win->phys_id); crtc_state = drm_atomic_get_crtc_state(crtc->state->state, crtc); + vcstate = to_rockchip_crtc_state(crtc_state); + vp->output_if = vcstate->output_if; mode = &crtc_state->adjusted_mode; if (mode->hdisplay > VOP2_MAX_VP_OUTPUT_WIDTH) { vcstate->splice_mode = true;