diff options
Diffstat (limited to 'drivers/gpu/drm/virtio/virtgpu_plane.c')
| -rw-r--r-- | drivers/gpu/drm/virtio/virtgpu_plane.c | 40 | 
1 files changed, 12 insertions, 28 deletions
diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c index 6d3cc9e238a4..4c09e313bebc 100644 --- a/drivers/gpu/drm/virtio/virtgpu_plane.c +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c @@ -26,7 +26,6 @@  #include <drm/drm_atomic_helper.h>  #include <drm/drm_damage_helper.h>  #include <drm/drm_fourcc.h> -#include <drm/drm_plane_helper.h>  #include "virtgpu_drv.h" @@ -67,16 +66,9 @@ uint32_t virtio_gpu_translate_format(uint32_t drm_fourcc)  	return format;  } -static void virtio_gpu_plane_destroy(struct drm_plane *plane) -{ -	drm_plane_cleanup(plane); -	kfree(plane); -} -  static const struct drm_plane_funcs virtio_gpu_plane_funcs = {  	.update_plane		= drm_atomic_helper_update_plane,  	.disable_plane		= drm_atomic_helper_disable_plane, -	.destroy		= virtio_gpu_plane_destroy,  	.reset			= drm_atomic_helper_plane_reset,  	.atomic_duplicate_state = drm_atomic_helper_plane_duplicate_state,  	.atomic_destroy_state	= drm_atomic_helper_plane_destroy_state, @@ -100,8 +92,8 @@ static int virtio_gpu_plane_atomic_check(struct drm_plane *plane,                  return PTR_ERR(crtc_state);  	ret = drm_atomic_helper_check_plane_state(new_plane_state, crtc_state, -						  DRM_PLANE_HELPER_NO_SCALING, -						  DRM_PLANE_HELPER_NO_SCALING, +						  DRM_PLANE_NO_SCALING, +						  DRM_PLANE_NO_SCALING,  						  is_cursor, true);  	return ret;  } @@ -266,14 +258,14 @@ static int virtio_gpu_plane_prepare_fb(struct drm_plane *plane,  }  static void virtio_gpu_plane_cleanup_fb(struct drm_plane *plane, -					struct drm_plane_state *old_state) +					struct drm_plane_state *state)  {  	struct virtio_gpu_framebuffer *vgfb; -	if (!plane->state->fb) +	if (!state->fb)  		return; -	vgfb = to_virtio_gpu_framebuffer(plane->state->fb); +	vgfb = to_virtio_gpu_framebuffer(state->fb);  	if (vgfb->fence) {  		dma_fence_put(&vgfb->fence->f);  		vgfb->fence = NULL; @@ -379,11 +371,7 @@ struct drm_plane *virtio_gpu_plane_init(struct virtio_gpu_device *vgdev,  	const struct drm_plane_helper_funcs *funcs;  	struct drm_plane *plane;  	const uint32_t *formats; -	int ret, nformats; - -	plane = kzalloc(sizeof(*plane), GFP_KERNEL); -	if (!plane) -		return ERR_PTR(-ENOMEM); +	int nformats;  	if (type == DRM_PLANE_TYPE_CURSOR) {  		formats = virtio_gpu_cursor_formats; @@ -394,17 +382,13 @@ struct drm_plane *virtio_gpu_plane_init(struct virtio_gpu_device *vgdev,  		nformats = ARRAY_SIZE(virtio_gpu_formats);  		funcs = &virtio_gpu_primary_helper_funcs;  	} -	ret = drm_universal_plane_init(dev, plane, 1 << index, -				       &virtio_gpu_plane_funcs, -				       formats, nformats, -				       NULL, type, NULL); -	if (ret) -		goto err_plane_init; + +	plane = drmm_universal_plane_alloc(dev, struct drm_plane, dev, +					   1 << index, &virtio_gpu_plane_funcs, +					   formats, nformats, NULL, type, NULL); +	if (IS_ERR(plane)) +		return plane;  	drm_plane_helper_add(plane, funcs);  	return plane; - -err_plane_init: -	kfree(plane); -	return ERR_PTR(ret);  }  |