1 // SPDX-License-Identifier: GPL-2.0+
4 #include <drm/drm_plane_helper.h>
5 #include <drm/drm_atomic_helper.h>
7 static const struct drm_plane_funcs vkms_plane_funcs = {
8 .update_plane = drm_atomic_helper_update_plane,
9 .disable_plane = drm_atomic_helper_disable_plane,
10 .destroy = drm_plane_cleanup,
11 .reset = drm_atomic_helper_plane_reset,
12 .atomic_duplicate_state = drm_atomic_helper_plane_duplicate_state,
13 .atomic_destroy_state = drm_atomic_helper_plane_destroy_state,
16 static void vkms_primary_plane_update(struct drm_plane *plane,
17 struct drm_plane_state *old_state)
21 static const struct drm_plane_helper_funcs vkms_primary_helper_funcs = {
22 .atomic_update = vkms_primary_plane_update,
25 struct drm_plane *vkms_plane_init(struct vkms_device *vkmsdev)
27 struct drm_device *dev = &vkmsdev->drm;
28 struct drm_plane *plane;
32 plane = kzalloc(sizeof(*plane), GFP_KERNEL);
34 return ERR_PTR(-ENOMEM);
36 formats = vkms_formats;
37 nformats = ARRAY_SIZE(vkms_formats);
39 ret = drm_universal_plane_init(dev, plane, 0,
42 NULL, DRM_PLANE_TYPE_PRIMARY, NULL);
48 drm_plane_helper_add(plane, &vkms_primary_helper_funcs);