Commit 5e84c269 authored by Daniel Vetter's avatar Daniel Vetter
Browse files

drm/atomic-helper: Massage swap_state signature somewhat



- dev is redundant, we have state->atomic
- add stall parameter, which must be set when swapping needs to stall
  for preceeding commits to stop looking at ->state pointers. Currently
  all drivers need this to be, just prep work for a glorious future.

v2: Rebased on top of

commit e7cf0963
Author: Gerd Hoffmann <kraxel@redhat.com>
Date:   Tue May 31 08:50:47 2016 +0200

    virtio-gpu: add atomic_commit function

Cc: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/1465509992-19284-1-git-send-email-daniel.vetter@ffwll.ch
Link: http://patchwork.freedesktop.org/patch/msgid/1465388359-8070-2-git-send-email-daniel.vetter@ffwll.ch
parent f706974a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -519,7 +519,7 @@ static int atmel_hlcdc_dc_atomic_commit(struct drm_device *dev,
	}

	/* Swap the state, this is the point of no return. */
	drm_atomic_helper_swap_state(dev, state);
	drm_atomic_helper_swap_state(state, true);

	if (async)
		queue_work(dc->wq, &commit->work);
+4 −4
Original line number Diff line number Diff line
@@ -1167,7 +1167,7 @@ int drm_atomic_helper_commit(struct drm_device *dev,
	 * the software side now.
	 */

	drm_atomic_helper_swap_state(dev, state);
	drm_atomic_helper_swap_state(state, true);

	/*
	 * Everything below can be run asynchronously without the need to grab
@@ -1538,8 +1538,8 @@ EXPORT_SYMBOL(drm_atomic_helper_cleanup_planes);

/**
 * drm_atomic_helper_swap_state - store atomic state into current sw state
 * @dev: DRM device
 * @state: atomic state
 * @stall: stall for proceeding commits
 *
 * This function stores the atomic state into the current state pointers in all
 * driver objects. It should be called after all failing steps have been done
@@ -1561,8 +1561,8 @@ EXPORT_SYMBOL(drm_atomic_helper_cleanup_planes);
 * 5. Call drm_atomic_helper_cleanup_planes() with @state, which since step 3
 * contains the old state. Also do any other cleanup required with that state.
 */
void drm_atomic_helper_swap_state(struct drm_device *dev,
				  struct drm_atomic_state *state)
void drm_atomic_helper_swap_state(struct drm_atomic_state *state,
				  bool stall)
{
	int i;
	struct drm_connector *connector;
+1 −1
Original line number Diff line number Diff line
@@ -299,7 +299,7 @@ int exynos_atomic_commit(struct drm_device *dev, struct drm_atomic_state *state,
	priv->pending |= commit->crtcs;
	spin_unlock(&priv->lock);

	drm_atomic_helper_swap_state(dev, state);
	drm_atomic_helper_swap_state(state, true);

	if (nonblock)
		schedule_work(&commit->work);
+1 −1
Original line number Diff line number Diff line
@@ -13726,7 +13726,7 @@ static int intel_atomic_commit(struct drm_device *dev,
		return ret;
	}

	drm_atomic_helper_swap_state(dev, state);
	drm_atomic_helper_swap_state(state, true);
	dev_priv->wm.distrust_bios_wm = false;
	dev_priv->wm.skl_results = intel_state->wm_results;
	intel_shared_dpll_commit(state);
+1 −1
Original line number Diff line number Diff line
@@ -91,7 +91,7 @@ static int mtk_atomic_commit(struct drm_device *drm,
	mutex_lock(&private->commit.lock);
	flush_work(&private->commit.work);

	drm_atomic_helper_swap_state(drm, state);
	drm_atomic_helper_swap_state(state, true);

	if (async)
		mtk_atomic_schedule(private, state);
Loading