[Letux-kernel] regression: drm/omapdrm: Move commit_modeset_enables() before commit_planes()
Peter Ujfalusi
peter.ujfalusi at ti.com
Thu Apr 20 10:53:09 CEST 2017
Tomi,
On 2017-04-20 09:27, Tomi Valkeinen wrote:
> On 19/04/17 18:49, Jyri Sarha wrote:
>> On 04/19/17 16:35, Tomi Valkeinen wrote:
>>> I was able to reproduce on my very old omap3 beagleboard. Looks very
>>> much like a omap3 DSS HW bug to me. The unfortunate thing is that even
>>> reverting the patch won't remove the issue, if the userspace happens to
>>> configure things in certain order.
>>>
>>> It looks to me that if the DSS output is enabled without an overlay (the
>>> primary plane, normally), DSS gets stuck into a bad state, and only
>>> reboot helps (because we can't reset, there's no omap hwmod reset
>>> framework).
>>>
>>> But there should be nothing wrong with that setup, and if there's first
>>> been a successful display enable, then later we can enable the DSS
>>> without any planes.
>>
>> If that is the case, then maybe we could just enable errata i734 (the
>> gamma bug) work a round for omap3 too. The work a round makes an
>> artificial minimal display setup with GFX plane for one frame, with
>> outputs masked, so it could be exactly what we need.
>
> Yep, that did come to my mind and I tested it yesterday. However, I
> failed to realize there's the WA init part, and I only made sure the
> dispc_errata_i734_wa() is called.
>
> Now that I set the bit in the dispc features, it indeed seems to fix the
> issue.
>
> Below is a hack patch for people to try out. It's based on today's
> linux-next, but should apply to more or less any semi-recent kernel. If
> it works for others, I'll create a proper patch, which drops the
> has_gamma_i734_bug flag and always does the WA.
This certainly fixes the screen issue on n900 when booting with omapdrm.
Tested-by: Peter Ujfalusi <peter.ujfalusi at ti.com>
>
> Tomi
>
> From 657694ed06ab57b61a5523954d15147e73a1e226 Mon Sep 17 00:00:00 2001
> From: Tomi Valkeinen <tomi.valkeinen at ti.com>
> Date: Thu, 20 Apr 2017 09:25:04 +0300
> Subject: [PATCH] dispc hackfix
>
>
> diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c
> b/drivers/gpu/drm/omapdrm/dss/dispc.c
> index 5ac0145fbae6..6daf23f1ce3d 100644
> --- a/drivers/gpu/drm/omapdrm/dss/dispc.c
> +++ b/drivers/gpu/drm/omapdrm/dss/dispc.c
> @@ -4004,6 +4004,7 @@ static const struct dispc_features
> omap24xx_dispc_feats = {
> .no_framedone_tv = true,
> .set_max_preload = false,
> .last_pixel_inc_missing = true,
> + .has_gamma_i734_bug = true,
> };
>
> static const struct dispc_features omap34xx_rev1_0_dispc_feats = {
> @@ -4025,6 +4026,7 @@ static const struct dispc_features
> omap34xx_rev1_0_dispc_feats = {
> .no_framedone_tv = true,
> .set_max_preload = false,
> .last_pixel_inc_missing = true,
> + .has_gamma_i734_bug = true,
> };
>
> static const struct dispc_features omap34xx_rev3_0_dispc_feats = {
> @@ -4046,6 +4048,7 @@ static const struct dispc_features
> omap34xx_rev3_0_dispc_feats = {
> .no_framedone_tv = true,
> .set_max_preload = false,
> .last_pixel_inc_missing = true,
> + .has_gamma_i734_bug = true,
> };
>
> static const struct dispc_features omap44xx_dispc_feats = {
>
- Péter
More information about the Letux-kernel
mailing list