Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /**************************************************************************
0003  * Copyright (c) 2014 Patrik Jakobsson
0004  * All Rights Reserved.
0005  *
0006  **************************************************************************/
0007 
0008 #ifndef _GEM_H
0009 #define _GEM_H
0010 
0011 #include <linux/kernel.h>
0012 
0013 #include <drm/drm_gem.h>
0014 
0015 struct drm_device;
0016 
0017 /*
0018  * PSB GEM object
0019  */
0020 
0021 struct psb_gem_object {
0022     struct drm_gem_object base;
0023 
0024     struct resource resource;   /* GTT resource for our allocation */
0025     u32 offset;         /* GTT offset of our object */
0026     int in_gart;            /* Currently in the GART (ref ct) */
0027     bool stolen;            /* Backed from stolen RAM */
0028     bool mmapping;          /* Is mmappable */
0029     struct page **pages;        /* Backing pages if present */
0030 };
0031 
0032 static inline struct psb_gem_object *to_psb_gem_object(struct drm_gem_object *obj)
0033 {
0034     return container_of(obj, struct psb_gem_object, base);
0035 }
0036 
0037 struct psb_gem_object *
0038 psb_gem_create(struct drm_device *dev, u64 size, const char *name, bool stolen, u32 align);
0039 
0040 int psb_gem_pin(struct psb_gem_object *pobj);
0041 void psb_gem_unpin(struct psb_gem_object *pobj);
0042 
0043 /*
0044  * Memory management
0045  */
0046 
0047 int psb_gem_mm_init(struct drm_device *dev);
0048 void psb_gem_mm_fini(struct drm_device *dev);
0049 int psb_gem_mm_resume(struct drm_device *dev);
0050 
0051 #endif