[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