1c6603c74SDaniel Vetter // SPDX-License-Identifier: GPL-2.0 2c6603c74SDaniel Vetter 3c6603c74SDaniel Vetter #ifndef _DRM_MANAGED_H_ 4c6603c74SDaniel Vetter #define _DRM_MANAGED_H_ 5c6603c74SDaniel Vetter 6c6603c74SDaniel Vetter #include <linux/gfp.h> 7c6603c74SDaniel Vetter #include <linux/types.h> 8c6603c74SDaniel Vetter 9c6603c74SDaniel Vetter struct drm_device; 10c6603c74SDaniel Vetter 11c6603c74SDaniel Vetter typedef void (*drmres_release_t)(struct drm_device *dev, void *res); 12c6603c74SDaniel Vetter 13c6603c74SDaniel Vetter #define drmm_add_action(dev, action, data) \ 14c6603c74SDaniel Vetter __drmm_add_action(dev, action, data, #action) 15c6603c74SDaniel Vetter 16c6603c74SDaniel Vetter int __must_check __drmm_add_action(struct drm_device *dev, 17c6603c74SDaniel Vetter drmres_release_t action, 18c6603c74SDaniel Vetter void *data, const char *name); 19c6603c74SDaniel Vetter 20c6603c74SDaniel Vetter void drmm_add_final_kfree(struct drm_device *dev, void *parent); 21c6603c74SDaniel Vetter 22c6603c74SDaniel Vetter void *drmm_kmalloc(struct drm_device *dev, size_t size, gfp_t gfp) __malloc; 23c6603c74SDaniel Vetter static inline void *drmm_kzalloc(struct drm_device *dev, size_t size, gfp_t gfp) 24c6603c74SDaniel Vetter { 25c6603c74SDaniel Vetter return drmm_kmalloc(dev, size, gfp | __GFP_ZERO); 26c6603c74SDaniel Vetter } 27c6603c74SDaniel Vetter 28c6603c74SDaniel Vetter void drmm_kfree(struct drm_device *dev, void *data); 29c6603c74SDaniel Vetter 30c6603c74SDaniel Vetter #endif 31