drm: Add acquire ctx parameter to ->plane_disable
Nouveau had a few direct calls to ->disable_plane, I replaced those with drm_plane_force_disable. Same story for shmob. Otherwise no code changes. Cc: Ben Skeggs <bskeggs@redhat.com> Cc: Russell King <linux@armlinux.org.uk> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20170322215058.8671-5-daniel.vetter@ffwll.ch
This commit is contained in:
parent
5fbef3ee4a
commit
1931529448
|
@ -258,7 +258,8 @@ armada_ovl_plane_update(struct drm_plane *plane, struct drm_crtc *crtc,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int armada_ovl_plane_disable(struct drm_plane *plane)
|
static int armada_ovl_plane_disable(struct drm_plane *plane,
|
||||||
|
struct drm_modeset_acquire_ctx *ctx)
|
||||||
{
|
{
|
||||||
struct armada_ovl_plane *dplane = drm_to_armada_ovl_plane(plane);
|
struct armada_ovl_plane *dplane = drm_to_armada_ovl_plane(plane);
|
||||||
struct drm_framebuffer *fb;
|
struct drm_framebuffer *fb;
|
||||||
|
|
|
@ -2151,13 +2151,15 @@ EXPORT_SYMBOL(drm_atomic_helper_update_plane);
|
||||||
/**
|
/**
|
||||||
* drm_atomic_helper_disable_plane - Helper for primary plane disable using * atomic
|
* drm_atomic_helper_disable_plane - Helper for primary plane disable using * atomic
|
||||||
* @plane: plane to disable
|
* @plane: plane to disable
|
||||||
|
* @ctx: lock acquire context
|
||||||
*
|
*
|
||||||
* Provides a default plane disable handler using the atomic driver interface.
|
* Provides a default plane disable handler using the atomic driver interface.
|
||||||
*
|
*
|
||||||
* RETURNS:
|
* RETURNS:
|
||||||
* Zero on success, error code on failure
|
* Zero on success, error code on failure
|
||||||
*/
|
*/
|
||||||
int drm_atomic_helper_disable_plane(struct drm_plane *plane)
|
int drm_atomic_helper_disable_plane(struct drm_plane *plane,
|
||||||
|
struct drm_modeset_acquire_ctx *ctx)
|
||||||
{
|
{
|
||||||
struct drm_atomic_state *state;
|
struct drm_atomic_state *state;
|
||||||
struct drm_plane_state *plane_state;
|
struct drm_plane_state *plane_state;
|
||||||
|
|
|
@ -294,7 +294,7 @@ void drm_plane_force_disable(struct drm_plane *plane)
|
||||||
WARN_ON(drm_drv_uses_atomic_modeset(plane->dev));
|
WARN_ON(drm_drv_uses_atomic_modeset(plane->dev));
|
||||||
|
|
||||||
plane->old_fb = plane->fb;
|
plane->old_fb = plane->fb;
|
||||||
ret = plane->funcs->disable_plane(plane);
|
ret = plane->funcs->disable_plane(plane, NULL);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
DRM_ERROR("failed to disable plane with busy fb\n");
|
DRM_ERROR("failed to disable plane with busy fb\n");
|
||||||
plane->old_fb = NULL;
|
plane->old_fb = NULL;
|
||||||
|
@ -473,7 +473,7 @@ static int __setplane_internal(struct drm_plane *plane,
|
||||||
/* No fb means shut it down */
|
/* No fb means shut it down */
|
||||||
if (!fb) {
|
if (!fb) {
|
||||||
plane->old_fb = plane->fb;
|
plane->old_fb = plane->fb;
|
||||||
ret = plane->funcs->disable_plane(plane);
|
ret = plane->funcs->disable_plane(plane, ctx);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
plane->crtc = NULL;
|
plane->crtc = NULL;
|
||||||
plane->fb = NULL;
|
plane->fb = NULL;
|
||||||
|
|
|
@ -349,7 +349,7 @@ int drm_primary_helper_update(struct drm_plane *plane, struct drm_crtc *crtc,
|
||||||
* provides their own disable function, this will just
|
* provides their own disable function, this will just
|
||||||
* wind up returning -EINVAL to userspace.
|
* wind up returning -EINVAL to userspace.
|
||||||
*/
|
*/
|
||||||
return plane->funcs->disable_plane(plane);
|
return plane->funcs->disable_plane(plane, ctx);
|
||||||
|
|
||||||
/* Find current connectors for CRTC */
|
/* Find current connectors for CRTC */
|
||||||
num_connectors = get_connectors_for_crtc(crtc, NULL, 0);
|
num_connectors = get_connectors_for_crtc(crtc, NULL, 0);
|
||||||
|
@ -398,7 +398,8 @@ EXPORT_SYMBOL(drm_primary_helper_update);
|
||||||
* RETURNS:
|
* RETURNS:
|
||||||
* Unconditionally returns -EINVAL.
|
* Unconditionally returns -EINVAL.
|
||||||
*/
|
*/
|
||||||
int drm_primary_helper_disable(struct drm_plane *plane)
|
int drm_primary_helper_disable(struct drm_plane *plane,
|
||||||
|
struct drm_modeset_acquire_ctx *ctx)
|
||||||
{
|
{
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -173,7 +173,8 @@ nv10_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
nv10_disable_plane(struct drm_plane *plane)
|
nv10_disable_plane(struct drm_plane *plane,
|
||||||
|
struct drm_modeset_acquire_ctx *ctx)
|
||||||
{
|
{
|
||||||
struct nvif_object *dev = &nouveau_drm(plane->dev)->client.device.object;
|
struct nvif_object *dev = &nouveau_drm(plane->dev)->client.device.object;
|
||||||
struct nouveau_plane *nv_plane =
|
struct nouveau_plane *nv_plane =
|
||||||
|
@ -191,7 +192,7 @@ nv10_disable_plane(struct drm_plane *plane)
|
||||||
static void
|
static void
|
||||||
nv_destroy_plane(struct drm_plane *plane)
|
nv_destroy_plane(struct drm_plane *plane)
|
||||||
{
|
{
|
||||||
plane->funcs->disable_plane(plane);
|
drm_plane_force_disable(plane);
|
||||||
drm_plane_cleanup(plane);
|
drm_plane_cleanup(plane);
|
||||||
kfree(plane);
|
kfree(plane);
|
||||||
}
|
}
|
||||||
|
@ -332,7 +333,7 @@ nv10_overlay_init(struct drm_device *device)
|
||||||
|
|
||||||
plane->set_params = nv10_set_params;
|
plane->set_params = nv10_set_params;
|
||||||
nv10_set_params(plane);
|
nv10_set_params(plane);
|
||||||
nv10_disable_plane(&plane->base);
|
drm_plane_force_disable(&plane->base);
|
||||||
return;
|
return;
|
||||||
cleanup:
|
cleanup:
|
||||||
drm_plane_cleanup(&plane->base);
|
drm_plane_cleanup(&plane->base);
|
||||||
|
@ -427,7 +428,8 @@ nv04_update_plane(struct drm_plane *plane, struct drm_crtc *crtc,
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
nv04_disable_plane(struct drm_plane *plane)
|
nv04_disable_plane(struct drm_plane *plane,
|
||||||
|
struct drm_modeset_acquire_ctx *ctx)
|
||||||
{
|
{
|
||||||
struct nvif_object *dev = &nouveau_drm(plane->dev)->client.device.object;
|
struct nvif_object *dev = &nouveau_drm(plane->dev)->client.device.object;
|
||||||
struct nouveau_plane *nv_plane =
|
struct nouveau_plane *nv_plane =
|
||||||
|
@ -485,7 +487,7 @@ nv04_overlay_init(struct drm_device *device)
|
||||||
drm_object_attach_property(&plane->base.base,
|
drm_object_attach_property(&plane->base.base,
|
||||||
plane->props.brightness, plane->brightness);
|
plane->props.brightness, plane->brightness);
|
||||||
|
|
||||||
nv04_disable_plane(&plane->base);
|
drm_plane_force_disable(&plane->base);
|
||||||
return;
|
return;
|
||||||
cleanup:
|
cleanup:
|
||||||
drm_plane_cleanup(&plane->base);
|
drm_plane_cleanup(&plane->base);
|
||||||
|
|
|
@ -209,7 +209,8 @@ shmob_drm_plane_update(struct drm_plane *plane, struct drm_crtc *crtc,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int shmob_drm_plane_disable(struct drm_plane *plane)
|
static int shmob_drm_plane_disable(struct drm_plane *plane,
|
||||||
|
struct drm_modeset_acquire_ctx *ctx)
|
||||||
{
|
{
|
||||||
struct shmob_drm_plane *splane = to_shmob_plane(plane);
|
struct shmob_drm_plane *splane = to_shmob_plane(plane);
|
||||||
struct shmob_drm_device *sdev = plane->dev->dev_private;
|
struct shmob_drm_device *sdev = plane->dev->dev_private;
|
||||||
|
@ -222,7 +223,7 @@ static int shmob_drm_plane_disable(struct drm_plane *plane)
|
||||||
|
|
||||||
static void shmob_drm_plane_destroy(struct drm_plane *plane)
|
static void shmob_drm_plane_destroy(struct drm_plane *plane)
|
||||||
{
|
{
|
||||||
shmob_drm_plane_disable(plane);
|
drm_plane_force_disable(plane);
|
||||||
drm_plane_cleanup(plane);
|
drm_plane_cleanup(plane);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,8 @@ int drm_atomic_helper_update_plane(struct drm_plane *plane,
|
||||||
uint32_t src_x, uint32_t src_y,
|
uint32_t src_x, uint32_t src_y,
|
||||||
uint32_t src_w, uint32_t src_h,
|
uint32_t src_w, uint32_t src_h,
|
||||||
struct drm_modeset_acquire_ctx *ctx);
|
struct drm_modeset_acquire_ctx *ctx);
|
||||||
int drm_atomic_helper_disable_plane(struct drm_plane *plane);
|
int drm_atomic_helper_disable_plane(struct drm_plane *plane,
|
||||||
|
struct drm_modeset_acquire_ctx *ctx);
|
||||||
int __drm_atomic_helper_disable_plane(struct drm_plane *plane,
|
int __drm_atomic_helper_disable_plane(struct drm_plane *plane,
|
||||||
struct drm_plane_state *plane_state);
|
struct drm_plane_state *plane_state);
|
||||||
int drm_atomic_helper_set_config(struct drm_mode_set *set);
|
int drm_atomic_helper_set_config(struct drm_mode_set *set);
|
||||||
|
|
|
@ -203,7 +203,8 @@ struct drm_plane_funcs {
|
||||||
*
|
*
|
||||||
* 0 on success or a negative error code on failure.
|
* 0 on success or a negative error code on failure.
|
||||||
*/
|
*/
|
||||||
int (*disable_plane)(struct drm_plane *plane);
|
int (*disable_plane)(struct drm_plane *plane,
|
||||||
|
struct drm_modeset_acquire_ctx *ctx);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @destroy:
|
* @destroy:
|
||||||
|
|
|
@ -63,7 +63,8 @@ int drm_primary_helper_update(struct drm_plane *plane,
|
||||||
uint32_t src_x, uint32_t src_y,
|
uint32_t src_x, uint32_t src_y,
|
||||||
uint32_t src_w, uint32_t src_h,
|
uint32_t src_w, uint32_t src_h,
|
||||||
struct drm_modeset_acquire_ctx *ctx);
|
struct drm_modeset_acquire_ctx *ctx);
|
||||||
int drm_primary_helper_disable(struct drm_plane *plane);
|
int drm_primary_helper_disable(struct drm_plane *plane,
|
||||||
|
struct drm_modeset_acquire_ctx *ctx);
|
||||||
void drm_primary_helper_destroy(struct drm_plane *plane);
|
void drm_primary_helper_destroy(struct drm_plane *plane);
|
||||||
extern const struct drm_plane_funcs drm_primary_helper_funcs;
|
extern const struct drm_plane_funcs drm_primary_helper_funcs;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue