[PATCH 1/3] drm/omap: work-around for omap3 display enable

Aaro Koskinen aaro.koskinen at iki.fi
Wed Jun 14 20:07:00 UTC 2017


Hi,

On Tue, Jun 13, 2017 at 12:02:08PM +0300, Tomi Valkeinen wrote:
> Seems that on omap3 enabling a crtc without any planes causes a sync
> lost flood. This only happens on the first enable, and after that it
> works. This looks like an HW issue.
> 
> It's unclear why this is happening or how to fix it, but as a quick
> work-around, this patch enables i734 errata work-around for omap2 and
> omap3 too. The errata work-around enables and disables the LCD output
> with a plane once when waking up the DSS IP, and it seems to resolve the
> omap3 problem too. It is unclear if omap2 has the same issue, but it
> probably has and the WA should have no side effects so it should be safe
> to enable on omap2 too.
> 
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ti.com>

Tested-by: Aaro Koskinen <aaro.koskinen at iki.fi>

This fixes the LCD errors I'm seeing on N900 with v4.11, and I get a working
display.

A.

> ---
>  drivers/gpu/drm/omapdrm/dss/dispc.c | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c
> index 5ac0145fbae6..75e89707a70a 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dispc.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
> @@ -4004,6 +4004,11 @@ static const struct dispc_features omap24xx_dispc_feats = {
>  	.no_framedone_tv	=	true,
>  	.set_max_preload	=	false,
>  	.last_pixel_inc_missing	=	true,
> +	/*
> +	 * HACK: see comment in omap34xx_rev1_0_dispc_feats. OMAP2 probably
> +	 * has the same issue.
> +	 */
> +	.has_gamma_i734_bug	=	true,
>  };
>  
>  static const struct dispc_features omap34xx_rev1_0_dispc_feats = {
> @@ -4025,6 +4030,13 @@ static const struct dispc_features omap34xx_rev1_0_dispc_feats = {
>  	.no_framedone_tv	=	true,
>  	.set_max_preload	=	false,
>  	.last_pixel_inc_missing	=	true,
> +	/*
> +	 * HACK: OMAP3 doesn't have i734, but enabling the lcd output without
> +	 * planes causes synclost flood. This only happens on initial enable,
> +	 * not after that.
> +	 * Piggyback on i734 flag until we understand this better.
> +	 */
> +	.has_gamma_i734_bug	=	true,
>  };
>  
>  static const struct dispc_features omap34xx_rev3_0_dispc_feats = {
> @@ -4046,6 +4058,8 @@ static const struct dispc_features omap34xx_rev3_0_dispc_feats = {
>  	.no_framedone_tv	=	true,
>  	.set_max_preload	=	false,
>  	.last_pixel_inc_missing	=	true,
> +	/* HACK: see comment in omap34xx_rev1_0_dispc_feats */
> +	.has_gamma_i734_bug	=	true,
>  };
>  
>  static const struct dispc_features omap44xx_dispc_feats = {
> -- 
> 2.7.4
> 


More information about the dri-devel mailing list