diff options
author | Maxime Ripard <maxime@cerno.tech> | 2021-02-19 13:00:30 +0100 |
---|---|---|
committer | Maxime Ripard <maxime@cerno.tech> | 2021-02-25 08:05:28 +0100 |
commit | 37418bf14c1392260d633e3b4448b78c2f15044a (patch) | |
tree | a84d5d3d5ef16a8d2eefd8cedfe922a7ba03efe3 /drivers/gpu/drm/imx | |
parent | 977697e20b3d758786b67edc33941e5c410ffe4d (diff) | |
download | linux-stable-37418bf14c1392260d633e3b4448b78c2f15044a.tar.gz linux-stable-37418bf14c1392260d633e3b4448b78c2f15044a.tar.bz2 linux-stable-37418bf14c1392260d633e3b4448b78c2f15044a.zip |
drm: Use state helper instead of the plane state pointer
Many drivers reference the plane->state pointer in order to get the
current plane state in their atomic_update or atomic_disable hooks,
which would be the new plane state in the global atomic state since
_swap_state happened when those hooks are run.
Use the drm_atomic_get_new_plane_state helper to get that state to make it
more obvious.
This was made using the coccinelle script below:
@ plane_atomic_func @
identifier helpers;
identifier func;
@@
(
static const struct drm_plane_helper_funcs helpers = {
...,
.atomic_disable = func,
...,
};
|
static const struct drm_plane_helper_funcs helpers = {
...,
.atomic_update = func,
...,
};
)
@ adds_new_state @
identifier plane_atomic_func.func;
identifier plane, state;
identifier new_state;
@@
func(struct drm_plane *plane, struct drm_atomic_state *state)
{
...
- struct drm_plane_state *new_state = plane->state;
+ struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state, plane);
...
}
@ include depends on adds_new_state @
@@
#include <drm/drm_atomic.h>
@ no_include depends on !include && adds_new_state @
@@
+ #include <drm/drm_atomic.h>
#include <drm/...>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://lore.kernel.org/r/20210219120032.260676-1-maxime@cerno.tech
Diffstat (limited to 'drivers/gpu/drm/imx')
-rw-r--r-- | drivers/gpu/drm/imx/dcss/dcss-plane.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/imx/ipuv3-plane.c | 3 |
2 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/drm/imx/dcss/dcss-plane.c b/drivers/gpu/drm/imx/dcss/dcss-plane.c index 76947a973d85..044d3bdf313c 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-plane.c +++ b/drivers/gpu/drm/imx/dcss/dcss-plane.c @@ -268,7 +268,8 @@ static void dcss_plane_atomic_update(struct drm_plane *plane, { struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state, plane); - struct drm_plane_state *new_state = plane->state; + struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state, + plane); struct dcss_plane *dcss_plane = to_dcss_plane(plane); struct dcss_dev *dcss = plane->dev->dev_private; struct drm_framebuffer *fb = new_state->fb; diff --git a/drivers/gpu/drm/imx/ipuv3-plane.c b/drivers/gpu/drm/imx/ipuv3-plane.c index 9d8472afb5d8..fa5009705365 100644 --- a/drivers/gpu/drm/imx/ipuv3-plane.c +++ b/drivers/gpu/drm/imx/ipuv3-plane.c @@ -544,7 +544,8 @@ static void ipu_plane_atomic_update(struct drm_plane *plane, struct drm_plane_state *old_state = drm_atomic_get_old_plane_state(state, plane); struct ipu_plane *ipu_plane = to_ipu_plane(plane); - struct drm_plane_state *new_state = plane->state; + struct drm_plane_state *new_state = drm_atomic_get_new_plane_state(state, + plane); struct ipu_plane_state *ipu_state = to_ipu_plane_state(new_state); struct drm_crtc_state *crtc_state = new_state->crtc->state; struct drm_framebuffer *fb = new_state->fb; |