Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c03ea50e authored by Neil Armstrong's avatar Neil Armstrong
Browse files

drm/meson: fix primary plane disabling



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: 490f50c1 ("drm/meson: Add G12A support for OSD1 Plane")
Signed-off-by: default avatarNeil Armstrong <narmstrong@baylibre.com>
Reviewed-by: default avatarKevin Hilman <khilman@baylibre.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190605141253.24165-2-narmstrong@baylibre.com
parent e98c7952
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -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,
+3 −1
Original line number Diff line number Diff line
@@ -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 = {