Message ID | 1497344530-19940-2-git-send-email-tomi.valkeinen@ti.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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@ti.com> Tested-by: Aaro Koskinen <aaro.koskinen@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 >
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 = {
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@ti.com> --- drivers/gpu/drm/omapdrm/dss/dispc.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)