2014-07-24 12:10:04 +02:00
# ifndef __DRM_LEGACY_H__
# define __DRM_LEGACY_H__
/*
* Copyright ( c ) 2014 David Herrmann < dh . herrmann @ gmail . com >
*
* Permission is hereby granted , free of charge , to any person obtaining a
* copy of this software and associated documentation files ( the " Software " ) ,
* to deal in the Software without restriction , including without limitation
* the rights to use , copy , modify , merge , publish , distribute , sublicense ,
* and / or sell copies of the Software , and to permit persons to whom the
* Software is furnished to do so , subject to the following conditions :
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software .
*
* THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
* IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL
* THE COPYRIGHT HOLDER ( S ) OR AUTHOR ( S ) BE LIABLE FOR ANY CLAIM , DAMAGES OR
* OTHER LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE ,
* ARISING FROM , OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
* OTHER DEALINGS IN THE SOFTWARE .
*/
2014-08-29 12:12:28 +02:00
/*
* This file contains legacy interfaces that modern drm drivers
* should no longer be using . They cannot be removed as legacy
* drivers use them , and removing them are API breaks .
*/
2014-08-29 12:12:32 +02:00
# include <linux/list.h>
2014-09-10 12:43:49 +02:00
# include <drm/drm_legacy.h>
2014-08-29 12:12:32 +02:00
struct agp_memory ;
2014-07-24 12:10:04 +02:00
struct drm_device ;
struct drm_file ;
/*
* Generic DRM Contexts
*/
# define DRM_KERNEL_CONTEXT 0
# define DRM_RESERVED_CONTEXTS 1
2015-06-23 11:22:36 +02:00
void drm_legacy_ctxbitmap_init ( struct drm_device * dev ) ;
2014-07-24 12:10:04 +02:00
void drm_legacy_ctxbitmap_cleanup ( struct drm_device * dev ) ;
void drm_legacy_ctxbitmap_free ( struct drm_device * dev , int ctx_handle ) ;
void drm_legacy_ctxbitmap_flush ( struct drm_device * dev , struct drm_file * file ) ;
int drm_legacy_resctx ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_addctx ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_getctx ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_switchctx ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_newctx ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_rmctx ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_setsareactx ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_getsareactx ( struct drm_device * d , void * v , struct drm_file * f ) ;
2014-08-29 12:12:28 +02:00
/*
* Generic Buffer Management
*/
# define DRM_MAP_HASH_OFFSET 0x10000000
2016-04-26 19:29:36 +02:00
int drm_legacy_getmap_ioctl ( struct drm_device * dev , void * data ,
struct drm_file * file_priv ) ;
2014-08-29 12:12:28 +02:00
int drm_legacy_addmap_ioctl ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_rmmap_ioctl ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_addbufs ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_infobufs ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_markbufs ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_freebufs ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_mapbufs ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_dma_ioctl ( struct drm_device * d , void * v , struct drm_file * f ) ;
2017-05-24 17:54:09 -04:00
int __drm_legacy_infobufs ( struct drm_device * , void * , int * ,
int ( * ) ( void * , int , struct drm_buf_entry * ) ) ;
2017-05-25 16:24:20 -04:00
int __drm_legacy_mapbufs ( struct drm_device * , void * , int * ,
void __user * * ,
int ( * ) ( void * , int , unsigned long , struct drm_buf * ) ,
struct drm_file * ) ;
2017-05-24 17:54:09 -04:00
2019-04-23 08:42:23 +10:00
void drm_legacy_master_rmmaps ( struct drm_device * dev ,
struct drm_master * master ) ;
2017-01-04 10:12:56 +01:00
# ifdef CONFIG_DRM_VM
2014-09-10 12:43:48 +02:00
void drm_legacy_vma_flush ( struct drm_device * d ) ;
2017-01-04 10:12:56 +01:00
# else
static inline void drm_legacy_vma_flush ( struct drm_device * d )
{
/* do nothing */
}
# endif
2014-09-10 12:43:48 +02:00
2014-08-29 12:12:32 +02:00
/*
* AGP Support
*/
struct drm_agp_mem {
unsigned long handle ;
struct agp_memory * memory ;
unsigned long bound ;
int pages ;
struct list_head head ;
} ;
2016-06-14 20:50:57 +02:00
/* drm_lock.c */
2014-08-29 12:12:46 +02:00
int drm_legacy_lock ( struct drm_device * d , void * v , struct drm_file * f ) ;
int drm_legacy_unlock ( struct drm_device * d , void * v , struct drm_file * f ) ;
2016-06-14 20:50:57 +02:00
void drm_legacy_lock_release ( struct drm_device * dev , struct file * filp ) ;
2014-08-29 12:12:46 +02:00
2014-09-11 07:41:51 +02:00
/* DMA support */
int drm_legacy_dma_setup ( struct drm_device * dev ) ;
void drm_legacy_dma_takedown ( struct drm_device * dev ) ;
void drm_legacy_free_buffer ( struct drm_device * dev ,
struct drm_buf * buf ) ;
void drm_legacy_reclaim_buffers ( struct drm_device * dev ,
struct drm_file * filp ) ;
2014-09-11 07:42:43 +02:00
/* Scatter Gather Support */
void drm_legacy_sg_cleanup ( struct drm_device * dev ) ;
int drm_legacy_sg_alloc ( struct drm_device * dev , void * data ,
struct drm_file * file_priv ) ;
int drm_legacy_sg_free ( struct drm_device * dev , void * data ,
struct drm_file * file_priv ) ;
2014-07-24 12:10:04 +02:00
# endif /* __DRM_LEGACY_H__ */