From d5272ec9bdbc4d552bafb3dff669a1b2cea66762 Mon Sep 17 00:00:00 2001 From: Sandy Huang Date: Tue, 14 Jul 2020 17:59:10 +0800 Subject: [PATCH] drm/rockchip: use DRM_BUS_FLAG_PIXDATA_NEGEDGE to identify dclk polarity Change-Id: Ie5c708d0d52e8909d5dc9257e0b6b76d3d960d82 Signed-off-by: Sandy Huang --- drivers/gpu/drm/rockchip/analogix_dp-rockchip.c | 1 + drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 1 + drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 5 ++++- drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 3 ++- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 6 +----- drivers/gpu/drm/rockchip/rockchip_lvds.c | 1 + drivers/gpu/drm/rockchip/rockchip_rgb.c | 1 + 7 files changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c index fa629b1d61fe..f5124821ce79 100644 --- a/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c +++ b/drivers/gpu/drm/rockchip/analogix_dp-rockchip.c @@ -270,6 +270,7 @@ rockchip_dp_drm_encoder_atomic_check(struct drm_encoder *encoder, s->bus_format = di->bus_formats[0]; else s->bus_format = MEDIA_BUS_FMT_RGB888_1X24; + s->bus_flags = di->bus_flags; s->tv_state = &conn_state->tv; s->eotf = TRADITIONAL_GAMMA_SDR; s->color_space = V4L2_COLORSPACE_DEFAULT; diff --git a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c index 2bf60556ef39..24d4c11ff792 100644 --- a/drivers/gpu/drm/rockchip/dw-mipi-dsi.c +++ b/drivers/gpu/drm/rockchip/dw-mipi-dsi.c @@ -1352,6 +1352,7 @@ dw_mipi_dsi_encoder_atomic_check(struct drm_encoder *encoder, s->bus_format = MEDIA_BUS_FMT_RGB888_1X24; s->output_type = DRM_MODE_CONNECTOR_DSI; + s->bus_flags = info->bus_flags; s->tv_state = &conn_state->tv; s->eotf = TRADITIONAL_GAMMA_SDR; s->color_space = V4L2_COLORSPACE_DEFAULT; diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c index cd0c5e16418a..5fe1d3897717 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c @@ -614,7 +614,10 @@ static int setup_initial_state(struct drm_device *drm_dev, mode->crtc_hsync_end == set->crtc_hsync_end && mode->crtc_vsync_end == set->crtc_vsync_end && drm_mode_vrefresh(mode) == set->vrefresh && - mode->flags == set->flags && + /* we just need to focus on DRM_MODE_FLAG_ALL flag, so here + * we compare mode->flags with set->flags & DRM_MODE_FLAG_ALL. + */ + mode->flags == (set->flags & DRM_MODE_FLAG_ALL) && mode->picture_aspect_ratio == set->picture_aspect_ratio) { found = 1; match = 1; diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h index dc1426d280da..37abb5cad46a 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h @@ -118,7 +118,8 @@ struct rockchip_crtc_state { int output_mode; int output_bpc; int output_flags; - int bus_format; + u32 bus_format; + u32 bus_flags; int yuv_overlay; int post_r2y_en; int post_y2r_en; diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index 5f54a0171eb1..ab88d1bc84aa 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -2909,7 +2909,7 @@ static void vop_crtc_atomic_enable(struct drm_crtc *crtc, if (vop->mcu_timing.mcu_pix_total) vop_mcu_mode(crtc); - dclk_inv = (adjusted_mode->flags & DRM_MODE_FLAG_PPIXDATA) ? 0 : 1; + dclk_inv = (s->bus_flags & DRM_BUS_FLAG_PIXDATA_NEGEDGE) ? 1 : 0; VOP_CTRL_SET(vop, dclk_pol, dclk_inv); val = (adjusted_mode->flags & DRM_MODE_FLAG_NHSYNC) ? @@ -4015,13 +4015,9 @@ static int vop_plane_init(struct vop *vop, struct vop_win *win, unsigned long possible_crtcs) { struct rockchip_drm_private *private = vop->drm_dev->dev_private; - struct drm_plane *share = NULL; uint64_t feature = 0; int ret; - if (win->parent) - share = &win->parent->base; - ret = drm_universal_plane_init(vop->drm_dev, &win->base, possible_crtcs, &vop_plane_funcs, win->data_formats, win->nformats, NULL, win->type, NULL); if (ret) { diff --git a/drivers/gpu/drm/rockchip/rockchip_lvds.c b/drivers/gpu/drm/rockchip/rockchip_lvds.c index 7db98d5f1ec2..e63f2c6ded47 100644 --- a/drivers/gpu/drm/rockchip/rockchip_lvds.c +++ b/drivers/gpu/drm/rockchip/rockchip_lvds.c @@ -190,6 +190,7 @@ rockchip_lvds_encoder_atomic_check(struct drm_encoder *encoder, s->output_mode = ROCKCHIP_OUT_MODE_AAAA; s->output_type = DRM_MODE_CONNECTOR_LVDS; + s->bus_flags = info->bus_flags; s->tv_state = &conn_state->tv; s->eotf = TRADITIONAL_GAMMA_SDR; s->color_space = V4L2_COLORSPACE_DEFAULT; diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.c b/drivers/gpu/drm/rockchip/rockchip_rgb.c index 4a63c1cfff83..b11f3fe06606 100644 --- a/drivers/gpu/drm/rockchip/rockchip_rgb.c +++ b/drivers/gpu/drm/rockchip/rockchip_rgb.c @@ -206,6 +206,7 @@ rockchip_rgb_encoder_atomic_check(struct drm_encoder *encoder, } s->output_type = DRM_MODE_CONNECTOR_DPI; + s->bus_flags = info->bus_flags; s->tv_state = &conn_state->tv; s->eotf = TRADITIONAL_GAMMA_SDR; s->color_space = V4L2_COLORSPACE_DEFAULT;