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 5c60d38..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:
@@ -124,7 +126,7 @@ extern __printf(2, 3)
 void drm_ut_debug_printk(const char *function_name,
                         const char *format, ...);
 extern __printf(2, 3)
-int drm_err(const char *func, const char *format, ...);
+void drm_err(const char *func, const char *format, ...);
 
 /***********************************************************************/
 /** \name DRM template customization defaults */
@@ -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);
@@ -961,8 +877,6 @@ extern ssize_t drm_read(struct file *filp, char __user *buffer,
 extern int drm_release(struct inode *inode, struct file *filp);
 
                                /* Mapping support (drm_vm.h) */
-extern int drm_mmap(struct file *filp, struct vm_area_struct *vma);
-extern void drm_vm_open_locked(struct drm_device *dev, struct vm_area_struct *vma);
 extern unsigned int drm_poll(struct file *filp, struct poll_table_struct *wait);
 
 /* Misc. IOCTL support (drm_ioctl.c) */
@@ -1028,15 +942,8 @@ static inline wait_queue_head_t *drm_crtc_vblank_waitqueue(struct drm_crtc *crtc
 /* Modesetting support */
 extern void drm_vblank_pre_modeset(struct drm_device *dev, int crtc);
 extern void drm_vblank_post_modeset(struct drm_device *dev, int crtc);
-extern int drm_modeset_ctl(struct drm_device *dev, void *data,
-                          struct drm_file *file_priv);
 
                                /* Stub support (drm_stub.h) */
-extern int drm_setmaster_ioctl(struct drm_device *dev, void *data,
-                              struct drm_file *file_priv);
-extern int drm_dropmaster_ioctl(struct drm_device *dev, void *data,
-                               struct drm_file *file_priv);
-struct drm_master *drm_master_create(struct drm_minor *minor);
 extern struct drm_master *drm_master_get(struct drm_master *master);
 extern void drm_master_put(struct drm_master **master);
 
@@ -1046,23 +953,12 @@ extern unsigned int drm_debug;
 
                                /* Debugfs support */
 #if defined(CONFIG_DEBUG_FS)
-extern int drm_debugfs_init(struct drm_minor *minor, int minor_id,
-                           struct dentry *root);
 extern int drm_debugfs_create_files(const struct drm_info_list *files,
                                    int count, struct dentry *root,
                                    struct drm_minor *minor);
 extern int drm_debugfs_remove_files(const struct drm_info_list *files,
                                    int count, struct drm_minor *minor);
-extern int drm_debugfs_cleanup(struct drm_minor *minor);
-extern int drm_debugfs_connector_add(struct drm_connector *connector);
-extern void drm_debugfs_connector_remove(struct drm_connector *connector);
 #else
-static inline int drm_debugfs_init(struct drm_minor *minor, int minor_id,
-                                  struct dentry *root)
-{
-       return 0;
-}
-
 static inline int drm_debugfs_create_files(const struct drm_info_list *files,
                                           int count, struct dentry *root,
                                           struct drm_minor *minor)
@@ -1075,20 +971,6 @@ static inline int drm_debugfs_remove_files(const struct drm_info_list *files,
 {
        return 0;
 }
-
-static inline int drm_debugfs_cleanup(struct drm_minor *minor)
-{
-       return 0;
-}
-
-static inline int drm_debugfs_connector_add(struct drm_connector *connector)
-{
-       return 0;
-}
-static inline void drm_debugfs_connector_remove(struct drm_connector *connector)
-{
-}
-
 #endif
 
 extern struct dma_buf *drm_gem_prime_export(struct drm_device *dev,
@@ -1107,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);
@@ -1119,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);