From: shengyang.chen Date: Wed, 20 Jul 2022 01:54:46 +0000 (+0800) Subject: riscv:linux:drm: X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b7eb929c1bd20c76b1cf72b4d3a40cc1a863b127;p=platform%2Fkernel%2Flinux-starfive.git riscv:linux:drm: fix mipi shifted display problem remove useless process in vs_dc_hw.c Signed-off-by:shengyang.chen --- diff --git a/drivers/gpu/drm/verisilicon/vs_dc.c b/drivers/gpu/drm/verisilicon/vs_dc.c index 8f22692..b2adc56 100755 --- a/drivers/gpu/drm/verisilicon/vs_dc.c +++ b/drivers/gpu/drm/verisilicon/vs_dc.c @@ -996,8 +996,15 @@ static void vs_dc_enable(struct device *dev, struct drm_crtc *crtc) display.v_active = mode->vdisplay; display.v_total = mode->vtotal; - display.v_sync_start = mode->vsync_start; - display.v_sync_end = mode->vsync_end; + + if (crtc_state->encoder_type == DRM_MODE_ENCODER_DSI){ + display.v_sync_start = mode->vsync_start + 1; + display.v_sync_end = mode->vsync_end - 1; + }else{ + display.v_sync_start = mode->vsync_start; + display.v_sync_end = mode->vsync_end; + } + if (mode->flags & DRM_MODE_FLAG_PVSYNC) display.v_sync_polarity = true; else diff --git a/drivers/gpu/drm/verisilicon/vs_dc_hw.c b/drivers/gpu/drm/verisilicon/vs_dc_hw.c index 0b47e8a..fa91bc5 100755 --- a/drivers/gpu/drm/verisilicon/vs_dc_hw.c +++ b/drivers/gpu/drm/verisilicon/vs_dc_hw.c @@ -1891,26 +1891,6 @@ static void setup_display(struct dc_hw *hw, struct dc_hw_display *display) else dc_set_clear(hw, DC_DISPLAY_PANEL_START, 0, BIT(1) | BIT(2)); -#ifdef CONFIG_STARFIVE_DSI - dc_write(hw, DC_DISPLAY_H + offset, hw->display[id].h_active | - (hw->display[id].h_total << 16)); - - dc_write(hw, DC_DISPLAY_H_SYNC + offset, - hw->display[id].h_sync_start | - (hw->display[id].h_sync_end << 15) | - BIT(31) | - BIT(30)); - - dc_write(hw, DC_DISPLAY_V + offset, hw->display[id].v_active | - (hw->display[id].v_total << 16)); - - dc_write(hw, DC_DISPLAY_V_SYNC + offset, - hw->display[id].v_sync_start | - (hw->display[id].v_sync_end << 15) | - (hw->display[id].v_sync_polarity ? 0 : BIT(31)) | - BIT(30)); - -#else dc_write(hw, DC_DISPLAY_H + offset, hw->display[id].h_active | (hw->display[id].h_total << 16)); dc_write(hw, DC_DISPLAY_H_SYNC + offset, @@ -1925,7 +1905,6 @@ static void setup_display(struct dc_hw *hw, struct dc_hw_display *display) (hw->display[id].v_sync_end << 15) | (hw->display[id].v_sync_polarity ? 0 : BIT(31)) | BIT(30)); -#endif if (hw->info->pipe_sync) { switch (display->sync_mode) {