Merge tag 'mac80211-for-john-2014-11-18' of git://git.kernel.org/pub/scm/linux/kernel...
[cascardo/linux.git] / include / drm / drmP.h
index 6656fd7..53ed876 100644 (file)
@@ -82,10 +82,12 @@ struct drm_agp_head;
 struct drm_local_map;
 struct drm_device_dma;
 struct drm_dma_handle;
+struct drm_gem_object;
 
 struct device_node;
 struct videomode;
 struct reservation_object;
+struct dma_buf_attachment;
 
 /*
  * 4 debug categories are defined:
@@ -330,93 +332,6 @@ struct drm_lock_data {
        int idle_has_lock;
 };
 
-/**
- * This structure defines the drm_mm memory object, which will be used by the
- * DRM for its buffer objects.
- */
-struct drm_gem_object {
-       /** Reference count of this object */
-       struct kref refcount;
-
-       /**
-        * handle_count - gem file_priv handle count of this object
-        *
-        * Each handle also holds a reference. Note that when the handle_count
-        * drops to 0 any global names (e.g. the id in the flink namespace) will
-        * be cleared.
-        *
-        * Protected by dev->object_name_lock.
-        * */
-       unsigned handle_count;
-
-       /** Related drm device */
-       struct drm_device *dev;
-
-       /** File representing the shmem storage */
-       struct file *filp;
-
-       /* Mapping info for this object */
-       struct drm_vma_offset_node vma_node;
-
-       /**
-        * Size of the object, in bytes.  Immutable over the object's
-        * lifetime.
-        */
-       size_t size;
-
-       /**
-        * Global name for this object, starts at 1. 0 means unnamed.
-        * Access is covered by the object_name_lock in the related drm_device
-        */
-       int name;
-
-       /**
-        * Memory domains. These monitor which caches contain read/write data
-        * related to the object. When transitioning from one set of domains
-        * to another, the driver is called to ensure that caches are suitably
-        * flushed and invalidated
-        */
-       uint32_t read_domains;
-       uint32_t write_domain;
-
-       /**
-        * While validating an exec operation, the
-        * new read/write domain values are computed here.
-        * They will be transferred to the above values
-        * at the point that any cache flushing occurs
-        */
-       uint32_t pending_read_domains;
-       uint32_t pending_write_domain;
-
-       /**
-        * dma_buf - dma buf associated with this GEM object
-        *
-        * Pointer to the dma-buf associated with this gem object (either
-        * through importing or exporting). We break the resulting reference
-        * loop when the last gem handle for this object is released.
-        *
-        * Protected by obj->object_name_lock
-        */
-       struct dma_buf *dma_buf;
-
-       /**
-        * import_attach - dma buf attachment backing this object
-        *
-        * Any foreign dma_buf imported as a gem object has this set to the
-        * attachment point for the device. This is invariant over the lifetime
-        * of a gem object.
-        *
-        * The driver's ->gem_free_object callback is responsible for cleaning
-        * up the dma_buf attachment and references acquired at import time.
-        *
-        * Note that the drm gem/prime core does not depend upon drivers setting
-        * this field any more. So for drivers where this doesn't make sense
-        * (e.g. virtual devices or a displaylink behind an usb bus) they can
-        * simply leave it as NULL.
-        */
-       struct dma_buf_attachment *import_attach;
-};
-
 /**
  * struct drm_master - drm master structure
  *
@@ -656,7 +571,8 @@ struct drm_driver {
                                struct drm_gem_object *obj);
        struct sg_table *(*gem_prime_get_sg_table)(struct drm_gem_object *obj);
        struct drm_gem_object *(*gem_prime_import_sg_table)(
-                               struct drm_device *dev, size_t size,
+                               struct drm_device *dev,
+                               struct dma_buf_attachment *attach,
                                struct sg_table *sgt);
        void *(*gem_prime_vmap)(struct drm_gem_object *obj);
        void (*gem_prime_vunmap)(struct drm_gem_object *obj, void *vaddr);
@@ -1073,10 +989,6 @@ extern int drm_prime_sg_to_page_addr_arrays(struct sg_table *sgt, struct page **
 extern struct sg_table *drm_prime_pages_to_sg(struct page **pages, int nr_pages);
 extern void drm_prime_gem_destroy(struct drm_gem_object *obj, struct sg_table *sg);
 
-int drm_gem_dumb_destroy(struct drm_file *file,
-                        struct drm_device *dev,
-                        uint32_t handle);
-
 
 extern struct drm_dma_handle *drm_pci_alloc(struct drm_device *dev, size_t size,
                                            size_t align);
@@ -1085,62 +997,6 @@ extern void drm_pci_free(struct drm_device *dev, struct drm_dma_handle * dmah);
                               /* sysfs support (drm_sysfs.c) */
 extern void drm_sysfs_hotplug_event(struct drm_device *dev);
 
-/* Graphics Execution Manager library functions (drm_gem.c) */
-void drm_gem_object_release(struct drm_gem_object *obj);
-void drm_gem_object_free(struct kref *kref);
-int drm_gem_object_init(struct drm_device *dev,
-                       struct drm_gem_object *obj, size_t size);
-void drm_gem_private_object_init(struct drm_device *dev,
-                                struct drm_gem_object *obj, size_t size);
-void drm_gem_vm_open(struct vm_area_struct *vma);
-void drm_gem_vm_close(struct vm_area_struct *vma);
-int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size,
-                    struct vm_area_struct *vma);
-int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma);
-
-static inline void
-drm_gem_object_reference(struct drm_gem_object *obj)
-{
-       kref_get(&obj->refcount);
-}
-
-static inline void
-drm_gem_object_unreference(struct drm_gem_object *obj)
-{
-       if (obj != NULL)
-               kref_put(&obj->refcount, drm_gem_object_free);
-}
-
-static inline void
-drm_gem_object_unreference_unlocked(struct drm_gem_object *obj)
-{
-       if (obj && !atomic_add_unless(&obj->refcount.refcount, -1, 1)) {
-               struct drm_device *dev = obj->dev;
-
-               mutex_lock(&dev->struct_mutex);
-               if (likely(atomic_dec_and_test(&obj->refcount.refcount)))
-                       drm_gem_object_free(&obj->refcount);
-               mutex_unlock(&dev->struct_mutex);
-       }
-}
-
-int drm_gem_handle_create(struct drm_file *file_priv,
-                         struct drm_gem_object *obj,
-                         u32 *handlep);
-int drm_gem_handle_delete(struct drm_file *filp, u32 handle);
-
-
-void drm_gem_free_mmap_offset(struct drm_gem_object *obj);
-int drm_gem_create_mmap_offset(struct drm_gem_object *obj);
-int drm_gem_create_mmap_offset_size(struct drm_gem_object *obj, size_t size);
-
-struct page **drm_gem_get_pages(struct drm_gem_object *obj);
-void drm_gem_put_pages(struct drm_gem_object *obj, struct page **pages,
-               bool dirty, bool accessed);
-
-struct drm_gem_object *drm_gem_object_lookup(struct drm_device *dev,
-                                            struct drm_file *filp,
-                                            u32 handle);
 
 struct drm_device *drm_dev_alloc(struct drm_driver *driver,
                                 struct device *parent);