mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-17 03:27:03 +07:00
drm: rcar-du: Reject modes that fail CRTC timing requirements
The hardware requires the HDSR and VDSR registers to be set to 1 or higher. This translates to a minimum combined horizontal sync and back porch of 20 pixels and a minimum vertical back porch of 3 lines. Reject modes that fail those requirements. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
This commit is contained in:
parent
63a298f22a
commit
256856efb8
@ -735,10 +735,22 @@ enum drm_mode_status rcar_du_crtc_mode_valid(struct drm_crtc *crtc,
|
||||
struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
|
||||
struct rcar_du_device *rcdu = rcrtc->group->dev;
|
||||
bool interlaced = mode->flags & DRM_MODE_FLAG_INTERLACE;
|
||||
unsigned int vbp;
|
||||
|
||||
if (interlaced && !rcar_du_has(rcdu, RCAR_DU_FEATURE_INTERLACED))
|
||||
return MODE_NO_INTERLACE;
|
||||
|
||||
/*
|
||||
* The hardware requires a minimum combined horizontal sync and back
|
||||
* porch of 20 pixels and a minimum vertical back porch of 3 lines.
|
||||
*/
|
||||
if (mode->htotal - mode->hsync_start < 20)
|
||||
return MODE_HBLANK_NARROW;
|
||||
|
||||
vbp = (mode->vtotal - mode->vsync_end) / (interlaced ? 2 : 1);
|
||||
if (vbp < 3)
|
||||
return MODE_VBLANK_NARROW;
|
||||
|
||||
return MODE_OK;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user