Message ID | 20190605141253.24165-2-narmstrong@baylibre.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/meson: fix primary plane disabling | expand |
Neil Armstrong <narmstrong@baylibre.com> writes: > The primary plane disable logic is flawed, when the primary plane is > disabled, it is re-enabled in the vsync irq when another plane is updated. > > Handle the plane disabling correctly by handling the primary plane > enable flag in the primary plane update & disable callbacks. > > Fixes: 490f50c109d1 ("drm/meson: Add G12A support for OSD1 Plane") > Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Reviewed-by: Kevin Hilman <khilman@baylibre.com>
On 06/06/2019 19:25, Kevin Hilman wrote: > Neil Armstrong <narmstrong@baylibre.com> writes: > >> The primary plane disable logic is flawed, when the primary plane is >> disabled, it is re-enabled in the vsync irq when another plane is updated. >> >> Handle the plane disabling correctly by handling the primary plane >> enable flag in the primary plane update & disable callbacks. >> >> Fixes: 490f50c109d1 ("drm/meson: Add G12A support for OSD1 Plane") >> Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> > > Reviewed-by: Kevin Hilman <khilman@baylibre.com> > Applying to drm-misc-fixes Thanks, Neil
diff --git a/drivers/gpu/drm/meson/meson_crtc.c b/drivers/gpu/drm/meson/meson_crtc.c index 685715144156..50a9a96720b9 100644 --- a/drivers/gpu/drm/meson/meson_crtc.c +++ b/drivers/gpu/drm/meson/meson_crtc.c @@ -107,8 +107,6 @@ static void meson_g12a_crtc_atomic_enable(struct drm_crtc *crtc, priv->io_base + _REG(VPP_OUT_H_V_SIZE)); drm_crtc_vblank_on(crtc); - - priv->viu.osd1_enabled = true; } static void meson_crtc_atomic_enable(struct drm_crtc *crtc, @@ -137,8 +135,6 @@ static void meson_crtc_atomic_enable(struct drm_crtc *crtc, priv->io_base + _REG(VPP_MISC)); drm_crtc_vblank_on(crtc); - - priv->viu.osd1_enabled = true; } static void meson_g12a_crtc_atomic_disable(struct drm_crtc *crtc, diff --git a/drivers/gpu/drm/meson/meson_plane.c b/drivers/gpu/drm/meson/meson_plane.c index 22490047932e..b788280895c6 100644 --- a/drivers/gpu/drm/meson/meson_plane.c +++ b/drivers/gpu/drm/meson/meson_plane.c @@ -305,6 +305,8 @@ static void meson_plane_atomic_update(struct drm_plane *plane, meson_plane->enabled = true; } + priv->viu.osd1_enabled = true; + spin_unlock_irqrestore(&priv->drm->event_lock, flags); } @@ -323,7 +325,7 @@ static void meson_plane_atomic_disable(struct drm_plane *plane, priv->io_base + _REG(VPP_MISC)); meson_plane->enabled = false; - + priv->viu.osd1_enabled = false; } static const struct drm_plane_helper_funcs meson_plane_helper_funcs = {
The primary plane disable logic is flawed, when the primary plane is disabled, it is re-enabled in the vsync irq when another plane is updated. Handle the plane disabling correctly by handling the primary plane enable flag in the primary plane update & disable callbacks. Fixes: 490f50c109d1 ("drm/meson: Add G12A support for OSD1 Plane") Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- drivers/gpu/drm/meson/meson_crtc.c | 4 ---- drivers/gpu/drm/meson/meson_plane.c | 4 +++- 2 files changed, 3 insertions(+), 5 deletions(-)