static int mtk_drm_fb_mmap(struct fb_info *info, struct vm_area_struct *vma) { struct drm_fb_helper *helper = info->par; struct mtk_drm_fb *mtk_fb = to_mtk_fb(helper->fb); return mtk_drm_gem_mmap_buf(mtk_fb->gem_obj[0], vma); }
static int mtk_drm_fb_create_handle(struct drm_framebuffer *fb, struct drm_file *file_priv, unsigned int *handle) { struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); return drm_gem_handle_create(file_priv, mtk_fb->gem_obj, handle); }
static void mtk_drm_fb_destroy(struct drm_framebuffer *fb) { struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); drm_framebuffer_cleanup(fb); drm_gem_object_unreference_unlocked(mtk_fb->gem_obj); kfree(mtk_fb); }
static void mtk_drm_fb_destroy(struct drm_framebuffer *fb) { unsigned int i; struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); struct drm_gem_object *gem; int nr = drm_format_num_planes(fb->pixel_format); drm_framebuffer_cleanup(fb); for (i = 0; i < nr; i++) { gem = mtk_fb->gem_obj[i]; drm_gem_object_unreference_unlocked(gem); } kfree(mtk_fb); }
struct drm_gem_object *mtk_fb_get_gem_obj(struct drm_framebuffer *fb) { struct mtk_drm_fb *mtk_fb = to_mtk_fb(fb); return mtk_fb->gem_obj; }