Commit dc2cdd17 authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

drm/simple-kms: Use drm_atomic_helper_check_crtc_state()



Simple-KMS helpers guarantee that the CRTC and plane enable
flags are synchronized. Implement this with atomic helpers
drm_atomic_helper_check_crtc_state() on the CRTC side, and
drm_atomic_helper_check_plane_state() on the plane side.

Signed-off-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Acked-by: default avatarJocelyn Falempe <jfalempe@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220617103226.25617-3-tzimmermann@suse.de
parent d6b9af10
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -100,14 +100,12 @@ drm_simple_kms_crtc_mode_valid(struct drm_crtc *crtc,
static int drm_simple_kms_crtc_check(struct drm_crtc *crtc,
				     struct drm_atomic_state *state)
{
	struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state,
									  crtc);
	bool has_primary = crtc_state->plane_mask &
			   drm_plane_mask(crtc->primary);
	struct drm_crtc_state *crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
	int ret;

	/* We always want to have an active plane with an active CRTC */
	if (has_primary != crtc_state->enable)
		return -EINVAL;
	ret = drm_atomic_helper_check_crtc_state(crtc_state, false);
	if (ret)
		return ret;

	return drm_atomic_add_affected_planes(state, crtc);
}
@@ -227,7 +225,7 @@ static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane,
	ret = drm_atomic_helper_check_plane_state(plane_state, crtc_state,
						  DRM_PLANE_HELPER_NO_SCALING,
						  DRM_PLANE_HELPER_NO_SCALING,
						  false, true);
						  false, false);
	if (ret)
		return ret;