mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 22:21:42 +00:00
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 e7cf0963f8
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: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Daniel 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
This commit is contained in:
parent
f706974a69
commit
5e84c2690b
@ -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. */
|
/* 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)
|
if (async)
|
||||||
queue_work(dc->wq, &commit->work);
|
queue_work(dc->wq, &commit->work);
|
||||||
|
@ -1167,7 +1167,7 @@ int drm_atomic_helper_commit(struct drm_device *dev,
|
|||||||
* the software side now.
|
* 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
|
* 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
|
* drm_atomic_helper_swap_state - store atomic state into current sw state
|
||||||
* @dev: DRM device
|
|
||||||
* @state: atomic state
|
* @state: atomic state
|
||||||
|
* @stall: stall for proceeding commits
|
||||||
*
|
*
|
||||||
* This function stores the atomic state into the current state pointers in all
|
* 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
|
* 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
|
* 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.
|
* contains the old state. Also do any other cleanup required with that state.
|
||||||
*/
|
*/
|
||||||
void drm_atomic_helper_swap_state(struct drm_device *dev,
|
void drm_atomic_helper_swap_state(struct drm_atomic_state *state,
|
||||||
struct drm_atomic_state *state)
|
bool stall)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct drm_connector *connector;
|
struct drm_connector *connector;
|
||||||
|
@ -299,7 +299,7 @@ int exynos_atomic_commit(struct drm_device *dev, struct drm_atomic_state *state,
|
|||||||
priv->pending |= commit->crtcs;
|
priv->pending |= commit->crtcs;
|
||||||
spin_unlock(&priv->lock);
|
spin_unlock(&priv->lock);
|
||||||
|
|
||||||
drm_atomic_helper_swap_state(dev, state);
|
drm_atomic_helper_swap_state(state, true);
|
||||||
|
|
||||||
if (nonblock)
|
if (nonblock)
|
||||||
schedule_work(&commit->work);
|
schedule_work(&commit->work);
|
||||||
|
@ -13726,7 +13726,7 @@ static int intel_atomic_commit(struct drm_device *dev,
|
|||||||
return ret;
|
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.distrust_bios_wm = false;
|
||||||
dev_priv->wm.skl_results = intel_state->wm_results;
|
dev_priv->wm.skl_results = intel_state->wm_results;
|
||||||
intel_shared_dpll_commit(state);
|
intel_shared_dpll_commit(state);
|
||||||
|
@ -91,7 +91,7 @@ static int mtk_atomic_commit(struct drm_device *drm,
|
|||||||
mutex_lock(&private->commit.lock);
|
mutex_lock(&private->commit.lock);
|
||||||
flush_work(&private->commit.work);
|
flush_work(&private->commit.work);
|
||||||
|
|
||||||
drm_atomic_helper_swap_state(drm, state);
|
drm_atomic_helper_swap_state(state, true);
|
||||||
|
|
||||||
if (async)
|
if (async)
|
||||||
mtk_atomic_schedule(private, state);
|
mtk_atomic_schedule(private, state);
|
||||||
|
@ -238,7 +238,7 @@ int msm_atomic_commit(struct drm_device *dev,
|
|||||||
* the software side now.
|
* 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
|
* Everything below can be run asynchronously without the need to grab
|
||||||
|
@ -174,7 +174,7 @@ static int omap_atomic_commit(struct drm_device *dev,
|
|||||||
spin_unlock(&priv->commit.lock);
|
spin_unlock(&priv->commit.lock);
|
||||||
|
|
||||||
/* Swap the state, this is the point of no return. */
|
/* 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 (nonblock)
|
if (nonblock)
|
||||||
schedule_work(&commit->work);
|
schedule_work(&commit->work);
|
||||||
|
@ -327,7 +327,7 @@ static int rcar_du_atomic_commit(struct drm_device *dev,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Swap the state, this is the point of no return. */
|
/* 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 (nonblock)
|
if (nonblock)
|
||||||
schedule_work(&commit->work);
|
schedule_work(&commit->work);
|
||||||
|
@ -289,7 +289,7 @@ int rockchip_drm_atomic_commit(struct drm_device *dev,
|
|||||||
mutex_lock(&commit->lock);
|
mutex_lock(&commit->lock);
|
||||||
flush_work(&commit->work);
|
flush_work(&commit->work);
|
||||||
|
|
||||||
drm_atomic_helper_swap_state(dev, state);
|
drm_atomic_helper_swap_state(state, true);
|
||||||
|
|
||||||
commit->dev = dev;
|
commit->dev = dev;
|
||||||
commit->state = state;
|
commit->state = state;
|
||||||
|
@ -215,7 +215,7 @@ static int sti_atomic_commit(struct drm_device *drm,
|
|||||||
* the software side now.
|
* the software side now.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
drm_atomic_helper_swap_state(drm, state);
|
drm_atomic_helper_swap_state(state, true);
|
||||||
|
|
||||||
if (nonblock)
|
if (nonblock)
|
||||||
sti_atomic_schedule(private, state);
|
sti_atomic_schedule(private, state);
|
||||||
|
@ -93,7 +93,7 @@ static int tegra_atomic_commit(struct drm_device *drm,
|
|||||||
* the software side now.
|
* the software side now.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
drm_atomic_helper_swap_state(drm, state);
|
drm_atomic_helper_swap_state(state, true);
|
||||||
|
|
||||||
if (nonblock)
|
if (nonblock)
|
||||||
tegra_atomic_schedule(tegra, state);
|
tegra_atomic_schedule(tegra, state);
|
||||||
|
@ -148,7 +148,7 @@ static int vc4_atomic_commit(struct drm_device *dev,
|
|||||||
* the software side now.
|
* 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
|
* Everything below can be run asynchronously without the need to grab
|
||||||
|
@ -395,7 +395,7 @@ static int vgdev_atomic_commit(struct drm_device *dev,
|
|||||||
if (nonblock)
|
if (nonblock)
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
||||||
drm_atomic_helper_swap_state(dev, state);
|
drm_atomic_helper_swap_state(state, true);
|
||||||
drm_atomic_helper_wait_for_fences(dev, state);
|
drm_atomic_helper_wait_for_fences(dev, state);
|
||||||
|
|
||||||
drm_atomic_helper_commit_modeset_disables(dev, state);
|
drm_atomic_helper_commit_modeset_disables(dev, state);
|
||||||
|
@ -71,8 +71,8 @@ void drm_atomic_helper_commit_planes_on_crtc(struct drm_crtc_state *old_crtc_sta
|
|||||||
void drm_atomic_helper_disable_planes_on_crtc(struct drm_crtc *crtc,
|
void drm_atomic_helper_disable_planes_on_crtc(struct drm_crtc *crtc,
|
||||||
bool atomic);
|
bool atomic);
|
||||||
|
|
||||||
void drm_atomic_helper_swap_state(struct drm_device *dev,
|
void drm_atomic_helper_swap_state(struct drm_atomic_state *state,
|
||||||
struct drm_atomic_state *state);
|
bool stall);
|
||||||
|
|
||||||
/* implementations for legacy interfaces */
|
/* implementations for legacy interfaces */
|
||||||
int drm_atomic_helper_update_plane(struct drm_plane *plane,
|
int drm_atomic_helper_update_plane(struct drm_plane *plane,
|
||||||
|
Loading…
Reference in New Issue
Block a user