Hi, On Mon, 2019-02-11 at 15:41 +0100, Maxime Ripard wrote: > The Allwinner BSP makes sure that we don't end up with a null start delay > or with a delay larger than vtotal. > > The former condition is likely to happen now with the reworked start delay, > so make sure we enforce the same boundaries. > > Signed-off-by: Maxime Ripard <maxime.ripard@xxxxxxxxxxx> Reviewed-by: Paul Kocialkowski <paul.kocialkowski@xxxxxxxxxxx> > --- > drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c > index 9471fa695ec7..506f2e8cf454 100644 > --- a/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c > +++ b/drivers/gpu/drm/sun4i/sun6i_mipi_dsi.c > @@ -358,8 +358,12 @@ static u16 sun6i_dsi_get_video_start_delay(struct sun6i_dsi *dsi, > struct drm_display_mode *mode) > { > u16 start = clamp(mode->vtotal - mode->vdisplay - 10, 8, 100); > + u16 delay = mode->vtotal - (mode->vsync_end - mode->vdisplay) + start; > > - return mode->vtotal - (mode->vsync_end - mode->vdisplay) + start; > + if (delay > mode->vtotal) > + delay = delay % mode->vtotal; I wonder whether delay == mode->vtotal would make sense at all. If not, then we can just apply the modulo unconditionally. But in doubt, let's keep things this way. Cheers, Paul > + > + return max_t(u16, delay, 1); > } > > static void sun6i_dsi_setup_burst(struct sun6i_dsi *dsi, -- Paul Kocialkowski, Bootlin Embedded Linux and kernel engineering https://bootlin.com _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel