Unverified Commit d62a8ed7 authored by Maxime Ripard's avatar Maxime Ripard
Browse files

drm/vc4: Simplify a bit the global atomic_check



When we can't allocate a new channel, we can simply return instead of
having to handle both cases, and that simplifies a bit the code.

Reviewed-by: default avatarThomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20201204151138.1739736-4-maxime@cerno.tech
parent 27125e86
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -794,6 +794,7 @@ static int vc4_pv_muxing_atomic_check(struct drm_device *dev,
			to_vc4_crtc_state(new_crtc_state);
		struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
		unsigned int matching_channels;
		unsigned int channel;

		/* Nothing to do here, let's skip it */
		if (old_crtc_state->enable == new_crtc_state->enable)
@@ -834,14 +835,12 @@ static int vc4_pv_muxing_atomic_check(struct drm_device *dev,
		 * but it works so far.
		 */
		matching_channels = hvs_new_state->unassigned_channels & vc4_crtc->data->hvs_available_channels;
		if (matching_channels) {
			unsigned int channel = ffs(matching_channels) - 1;
		if (!matching_channels)
			return -EINVAL;

		channel = ffs(matching_channels) - 1;
		new_vc4_crtc_state->assigned_channel = channel;
		hvs_new_state->unassigned_channels &= ~BIT(channel);
		} else {
			return -EINVAL;
		}
	}

	return 0;