2011-10-04 14:19:01 +04:00
/* exynos_drm.h
*
* Copyright ( c ) 2011 Samsung Electronics Co . , Ltd .
* Authors :
* Inki Dae < inki . dae @ samsung . com >
* Joonyoung Shim < jy0922 . shim @ samsung . com >
* Seung - Woo Kim < sw0312 . kim @ samsung . 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 ( including the next
* paragraph ) 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
* VA LINUX SYSTEMS AND / OR ITS SUPPLIERS 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 .
*/
# ifndef _EXYNOS_DRM_H_
# define _EXYNOS_DRM_H_
/**
* User - desired buffer creation information structure .
*
2011-11-12 09:51:23 +04:00
* @ size : user - desired memory allocation size .
2011-10-04 14:19:01 +04:00
* - this size value would be page - aligned internally .
* @ flags : user request for setting memory type or cache attributes .
2011-11-12 09:51:23 +04:00
* @ handle : returned a handle to created gem object .
* - this handle will be set by gem module of kernel side .
2011-10-04 14:19:01 +04:00
*/
struct drm_exynos_gem_create {
2011-11-12 09:51:23 +04:00
uint64_t size ;
2011-10-04 14:19:01 +04:00
unsigned int flags ;
unsigned int handle ;
} ;
/**
* A structure for getting buffer offset .
*
* @ handle : a pointer to gem object created .
* @ pad : just padding to be 64 - bit aligned .
* @ offset : relatived offset value of the memory region allocated .
* - this value should be set by user .
*/
struct drm_exynos_gem_map_off {
unsigned int handle ;
unsigned int pad ;
uint64_t offset ;
} ;
/**
* A structure for mapping buffer .
*
* @ handle : a handle to gem object created .
* @ size : memory size to be mapped .
* @ mapped : having user virtual address mmaped .
* - this variable would be filled by exynos gem module
* of kernel side with user virtual address which is allocated
* by do_mmap ( ) .
*/
struct drm_exynos_gem_mmap {
unsigned int handle ;
unsigned int size ;
uint64_t mapped ;
} ;
2011-12-08 12:54:07 +04:00
struct drm_exynos_plane_set_zpos {
__u32 plane_id ;
__s32 zpos ;
} ;
2011-10-04 14:19:01 +04:00
# define DRM_EXYNOS_GEM_CREATE 0x00
# define DRM_EXYNOS_GEM_MAP_OFFSET 0x01
# define DRM_EXYNOS_GEM_MMAP 0x02
2011-12-08 12:54:07 +04:00
/* Reserved 0x03 ~ 0x05 for exynos specific gem ioctl */
# define DRM_EXYNOS_PLANE_SET_ZPOS 0x06
2011-10-04 14:19:01 +04:00
# define DRM_IOCTL_EXYNOS_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + \
DRM_EXYNOS_GEM_CREATE , struct drm_exynos_gem_create )
# define DRM_IOCTL_EXYNOS_GEM_MAP_OFFSET DRM_IOWR(DRM_COMMAND_BASE + \
DRM_EXYNOS_GEM_MAP_OFFSET , struct drm_exynos_gem_map_off )
# define DRM_IOCTL_EXYNOS_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + \
DRM_EXYNOS_GEM_MMAP , struct drm_exynos_gem_mmap )
2011-12-08 12:54:07 +04:00
# define DRM_IOCTL_EXYNOS_PLANE_SET_ZPOS DRM_IOWR(DRM_COMMAND_BASE + \
DRM_EXYNOS_PLANE_SET_ZPOS , struct drm_exynos_plane_set_zpos )
2011-10-04 14:19:01 +04:00
/**
* Platform Specific Structure for DRM based FIMD .
*
* @ timing : default video mode for initializing
* @ default_win : default window layer number to be used for UI .
* @ bpp : default bit per pixel .
*/
struct exynos_drm_fimd_pdata {
struct fb_videomode timing ;
u32 vidcon0 ;
u32 vidcon1 ;
unsigned int default_win ;
unsigned int bpp ;
} ;
# endif