Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/armada: Introduce GEM object functions

GEM object functions deprecate several similar callback interfaces in
struct drm_driver. This patch replaces the per-driver callbacks with
per-instance callbacks in armada.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Russell King <rmk+kernel@armlinux.org.uk>
Acked-by: Christian König <christian.koenig@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200923102159.24084-3-tzimmermann@suse.de

+11 -6
-3
drivers/gpu/drm/armada/armada_drv.c
··· 37 37 38 38 static struct drm_driver armada_drm_driver = { 39 39 .lastclose = drm_fb_helper_lastclose, 40 - .gem_free_object_unlocked = armada_gem_free_object, 41 40 .prime_handle_to_fd = drm_gem_prime_handle_to_fd, 42 41 .prime_fd_to_handle = drm_gem_prime_fd_to_handle, 43 - .gem_prime_export = armada_gem_prime_export, 44 42 .gem_prime_import = armada_gem_prime_import, 45 43 .dumb_create = armada_gem_dumb_create, 46 - .gem_vm_ops = &armada_gem_vm_ops, 47 44 .major = 1, 48 45 .minor = 0, 49 46 .name = "armada-drm",
+11 -1
drivers/gpu/drm/armada/armada_gem.c
··· 25 25 return vmf_insert_pfn(vmf->vma, vmf->address, pfn); 26 26 } 27 27 28 - const struct vm_operations_struct armada_gem_vm_ops = { 28 + static const struct vm_operations_struct armada_gem_vm_ops = { 29 29 .fault = armada_gem_vm_fault, 30 30 .open = drm_gem_vm_open, 31 31 .close = drm_gem_vm_close, ··· 184 184 return dobj->addr; 185 185 } 186 186 187 + static const struct drm_gem_object_funcs armada_gem_object_funcs = { 188 + .free = armada_gem_free_object, 189 + .export = armada_gem_prime_export, 190 + .vm_ops = &armada_gem_vm_ops, 191 + }; 192 + 187 193 struct armada_gem_object * 188 194 armada_gem_alloc_private_object(struct drm_device *dev, size_t size) 189 195 { ··· 200 194 obj = kzalloc(sizeof(*obj), GFP_KERNEL); 201 195 if (!obj) 202 196 return NULL; 197 + 198 + obj->obj.funcs = &armada_gem_object_funcs; 203 199 204 200 drm_gem_private_object_init(dev, &obj->obj, size); 205 201 ··· 221 213 obj = kzalloc(sizeof(*obj), GFP_KERNEL); 222 214 if (!obj) 223 215 return NULL; 216 + 217 + obj->obj.funcs = &armada_gem_object_funcs; 224 218 225 219 if (drm_gem_object_init(dev, &obj->obj, size)) { 226 220 kfree(obj);
-2
drivers/gpu/drm/armada/armada_gem.h
··· 21 21 void *update_data; 22 22 }; 23 23 24 - extern const struct vm_operations_struct armada_gem_vm_ops; 25 - 26 24 #define drm_to_armada_gem(o) container_of(o, struct armada_gem_object, obj) 27 25 28 26 void armada_gem_free_object(struct drm_gem_object *);