Re: [PATCH 13/23] drm: omapdrm: crtc: update plane fifos on lcd config change

From: Laurent Pinchart
Date: Mon Mar 28 2016 - 15:18:22 EST


Hi Sebastian,

Thank you for the patch.

On Tuesday 08 Mar 2016 17:39:45 Sebastian Reichel wrote:
> Due to a hardware bug, FIFOs thresholds must be
> configured very carefully for manually updated
> displays.

Could you please provide more information about the bug and how the code
handles it ?

> Signed-off-by: Sebastian Reichel <sre@xxxxxxxxxx>
> ---
> drivers/gpu/drm/omapdrm/omap_crtc.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c
> b/drivers/gpu/drm/omapdrm/omap_crtc.c index 8967013c1fb5..094e89a2fa94
> 100644
> --- a/drivers/gpu/drm/omapdrm/omap_crtc.c
> +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
> @@ -253,6 +253,10 @@ static void omap_crtc_dss_set_lcd_config(struct
> omap_overlay_manager *mgr, omap_crtc->manually_updated =
> dss_lcd_mgr_config_get_stallmode(config);
>
> dispc_mgr_set_lcd_config(omap_crtc->channel, config);
> +
> + drm_for_each_plane(plane, dev) {
> + omap_plane_update_fifo(plane);
> + }

This seems fishy :-/ To start with you shouldn't touch planes that don't
belong to this CRTC. Then, updating the FIFO thresholds here in addition to
omap_plane_atomic_update() makes me wonder if both are needed, and if so, why.

> }
>
> static int omap_crtc_dss_register_framedone(

--
Regards,

Laurent Pinchart