1*7688df22SAndroid Build Coastguard Worker /* exynos_drm.h 2*7688df22SAndroid Build Coastguard Worker * 3*7688df22SAndroid Build Coastguard Worker * Copyright (c) 2011 Samsung Electronics Co., Ltd. 4*7688df22SAndroid Build Coastguard Worker * Authors: 5*7688df22SAndroid Build Coastguard Worker * Inki Dae <[email protected]> 6*7688df22SAndroid Build Coastguard Worker * Joonyoung Shim <[email protected]> 7*7688df22SAndroid Build Coastguard Worker * Seung-Woo Kim <[email protected]> 8*7688df22SAndroid Build Coastguard Worker * 9*7688df22SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 10*7688df22SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 11*7688df22SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 12*7688df22SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 13*7688df22SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 14*7688df22SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 15*7688df22SAndroid Build Coastguard Worker * 16*7688df22SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next 17*7688df22SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the 18*7688df22SAndroid Build Coastguard Worker * Software. 19*7688df22SAndroid Build Coastguard Worker * 20*7688df22SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21*7688df22SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22*7688df22SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 23*7688df22SAndroid Build Coastguard Worker * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 24*7688df22SAndroid Build Coastguard Worker * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 25*7688df22SAndroid Build Coastguard Worker * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 26*7688df22SAndroid Build Coastguard Worker * OTHER DEALINGS IN THE SOFTWARE. 27*7688df22SAndroid Build Coastguard Worker */ 28*7688df22SAndroid Build Coastguard Worker 29*7688df22SAndroid Build Coastguard Worker #ifndef _EXYNOS_DRM_H_ 30*7688df22SAndroid Build Coastguard Worker #define _EXYNOS_DRM_H_ 31*7688df22SAndroid Build Coastguard Worker 32*7688df22SAndroid Build Coastguard Worker #include "drm.h" 33*7688df22SAndroid Build Coastguard Worker 34*7688df22SAndroid Build Coastguard Worker /** 35*7688df22SAndroid Build Coastguard Worker * User-desired buffer creation information structure. 36*7688df22SAndroid Build Coastguard Worker * 37*7688df22SAndroid Build Coastguard Worker * @size: user-desired memory allocation size. 38*7688df22SAndroid Build Coastguard Worker * - this size value would be page-aligned internally. 39*7688df22SAndroid Build Coastguard Worker * @flags: user request for setting memory type or cache attributes. 40*7688df22SAndroid Build Coastguard Worker * @handle: returned a handle to created gem object. 41*7688df22SAndroid Build Coastguard Worker * - this handle will be set by gem module of kernel side. 42*7688df22SAndroid Build Coastguard Worker */ 43*7688df22SAndroid Build Coastguard Worker struct drm_exynos_gem_create { 44*7688df22SAndroid Build Coastguard Worker uint64_t size; 45*7688df22SAndroid Build Coastguard Worker unsigned int flags; 46*7688df22SAndroid Build Coastguard Worker unsigned int handle; 47*7688df22SAndroid Build Coastguard Worker }; 48*7688df22SAndroid Build Coastguard Worker 49*7688df22SAndroid Build Coastguard Worker /** 50*7688df22SAndroid Build Coastguard Worker * A structure to gem information. 51*7688df22SAndroid Build Coastguard Worker * 52*7688df22SAndroid Build Coastguard Worker * @handle: a handle to gem object created. 53*7688df22SAndroid Build Coastguard Worker * @flags: flag value including memory type and cache attribute and 54*7688df22SAndroid Build Coastguard Worker * this value would be set by driver. 55*7688df22SAndroid Build Coastguard Worker * @size: size to memory region allocated by gem and this size would 56*7688df22SAndroid Build Coastguard Worker * be set by driver. 57*7688df22SAndroid Build Coastguard Worker */ 58*7688df22SAndroid Build Coastguard Worker struct drm_exynos_gem_info { 59*7688df22SAndroid Build Coastguard Worker unsigned int handle; 60*7688df22SAndroid Build Coastguard Worker unsigned int flags; 61*7688df22SAndroid Build Coastguard Worker uint64_t size; 62*7688df22SAndroid Build Coastguard Worker }; 63*7688df22SAndroid Build Coastguard Worker 64*7688df22SAndroid Build Coastguard Worker /** 65*7688df22SAndroid Build Coastguard Worker * A structure for user connection request of virtual display. 66*7688df22SAndroid Build Coastguard Worker * 67*7688df22SAndroid Build Coastguard Worker * @connection: indicate whether doing connection or not by user. 68*7688df22SAndroid Build Coastguard Worker * @extensions: if this value is 1 then the vidi driver would need additional 69*7688df22SAndroid Build Coastguard Worker * 128bytes edid data. 70*7688df22SAndroid Build Coastguard Worker * @edid: the edid data pointer from user side. 71*7688df22SAndroid Build Coastguard Worker */ 72*7688df22SAndroid Build Coastguard Worker struct drm_exynos_vidi_connection { 73*7688df22SAndroid Build Coastguard Worker unsigned int connection; 74*7688df22SAndroid Build Coastguard Worker unsigned int extensions; 75*7688df22SAndroid Build Coastguard Worker uint64_t edid; 76*7688df22SAndroid Build Coastguard Worker }; 77*7688df22SAndroid Build Coastguard Worker 78*7688df22SAndroid Build Coastguard Worker /* memory type definitions. */ 79*7688df22SAndroid Build Coastguard Worker enum e_drm_exynos_gem_mem_type { 80*7688df22SAndroid Build Coastguard Worker /* Physically Continuous memory and used as default. */ 81*7688df22SAndroid Build Coastguard Worker EXYNOS_BO_CONTIG = 0 << 0, 82*7688df22SAndroid Build Coastguard Worker /* Physically Non-Continuous memory. */ 83*7688df22SAndroid Build Coastguard Worker EXYNOS_BO_NONCONTIG = 1 << 0, 84*7688df22SAndroid Build Coastguard Worker /* non-cachable mapping and used as default. */ 85*7688df22SAndroid Build Coastguard Worker EXYNOS_BO_NONCACHABLE = 0 << 1, 86*7688df22SAndroid Build Coastguard Worker /* cachable mapping. */ 87*7688df22SAndroid Build Coastguard Worker EXYNOS_BO_CACHABLE = 1 << 1, 88*7688df22SAndroid Build Coastguard Worker /* write-combine mapping. */ 89*7688df22SAndroid Build Coastguard Worker EXYNOS_BO_WC = 1 << 2, 90*7688df22SAndroid Build Coastguard Worker EXYNOS_BO_MASK = EXYNOS_BO_NONCONTIG | EXYNOS_BO_CACHABLE | 91*7688df22SAndroid Build Coastguard Worker EXYNOS_BO_WC 92*7688df22SAndroid Build Coastguard Worker }; 93*7688df22SAndroid Build Coastguard Worker 94*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_get_ver { 95*7688df22SAndroid Build Coastguard Worker __u32 major; 96*7688df22SAndroid Build Coastguard Worker __u32 minor; 97*7688df22SAndroid Build Coastguard Worker }; 98*7688df22SAndroid Build Coastguard Worker 99*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_cmd { 100*7688df22SAndroid Build Coastguard Worker __u32 offset; 101*7688df22SAndroid Build Coastguard Worker __u32 data; 102*7688df22SAndroid Build Coastguard Worker }; 103*7688df22SAndroid Build Coastguard Worker 104*7688df22SAndroid Build Coastguard Worker enum drm_exynos_g2d_buf_type { 105*7688df22SAndroid Build Coastguard Worker G2D_BUF_USERPTR = 1 << 31, 106*7688df22SAndroid Build Coastguard Worker }; 107*7688df22SAndroid Build Coastguard Worker 108*7688df22SAndroid Build Coastguard Worker enum drm_exynos_g2d_event_type { 109*7688df22SAndroid Build Coastguard Worker G2D_EVENT_NOT, 110*7688df22SAndroid Build Coastguard Worker G2D_EVENT_NONSTOP, 111*7688df22SAndroid Build Coastguard Worker G2D_EVENT_STOP, /* not yet */ 112*7688df22SAndroid Build Coastguard Worker }; 113*7688df22SAndroid Build Coastguard Worker 114*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_userptr { 115*7688df22SAndroid Build Coastguard Worker unsigned long userptr; 116*7688df22SAndroid Build Coastguard Worker unsigned long size; 117*7688df22SAndroid Build Coastguard Worker }; 118*7688df22SAndroid Build Coastguard Worker 119*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_set_cmdlist { 120*7688df22SAndroid Build Coastguard Worker __u64 cmd; 121*7688df22SAndroid Build Coastguard Worker __u64 cmd_buf; 122*7688df22SAndroid Build Coastguard Worker __u32 cmd_nr; 123*7688df22SAndroid Build Coastguard Worker __u32 cmd_buf_nr; 124*7688df22SAndroid Build Coastguard Worker 125*7688df22SAndroid Build Coastguard Worker /* for g2d event */ 126*7688df22SAndroid Build Coastguard Worker __u64 event_type; 127*7688df22SAndroid Build Coastguard Worker __u64 user_data; 128*7688df22SAndroid Build Coastguard Worker }; 129*7688df22SAndroid Build Coastguard Worker 130*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_exec { 131*7688df22SAndroid Build Coastguard Worker __u64 async; 132*7688df22SAndroid Build Coastguard Worker }; 133*7688df22SAndroid Build Coastguard Worker 134*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_GEM_CREATE 0x00 135*7688df22SAndroid Build Coastguard Worker /* Reserved 0x04 ~ 0x05 for exynos specific gem ioctl */ 136*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_GEM_GET 0x04 137*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_VIDI_CONNECTION 0x07 138*7688df22SAndroid Build Coastguard Worker 139*7688df22SAndroid Build Coastguard Worker /* G2D */ 140*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_G2D_GET_VER 0x20 141*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_G2D_SET_CMDLIST 0x21 142*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_G2D_EXEC 0x22 143*7688df22SAndroid Build Coastguard Worker 144*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_EXYNOS_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + \ 145*7688df22SAndroid Build Coastguard Worker DRM_EXYNOS_GEM_CREATE, struct drm_exynos_gem_create) 146*7688df22SAndroid Build Coastguard Worker 147*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_EXYNOS_GEM_GET DRM_IOWR(DRM_COMMAND_BASE + \ 148*7688df22SAndroid Build Coastguard Worker DRM_EXYNOS_GEM_GET, struct drm_exynos_gem_info) 149*7688df22SAndroid Build Coastguard Worker 150*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_EXYNOS_VIDI_CONNECTION DRM_IOWR(DRM_COMMAND_BASE + \ 151*7688df22SAndroid Build Coastguard Worker DRM_EXYNOS_VIDI_CONNECTION, struct drm_exynos_vidi_connection) 152*7688df22SAndroid Build Coastguard Worker 153*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_EXYNOS_G2D_GET_VER DRM_IOWR(DRM_COMMAND_BASE + \ 154*7688df22SAndroid Build Coastguard Worker DRM_EXYNOS_G2D_GET_VER, struct drm_exynos_g2d_get_ver) 155*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST DRM_IOWR(DRM_COMMAND_BASE + \ 156*7688df22SAndroid Build Coastguard Worker DRM_EXYNOS_G2D_SET_CMDLIST, struct drm_exynos_g2d_set_cmdlist) 157*7688df22SAndroid Build Coastguard Worker #define DRM_IOCTL_EXYNOS_G2D_EXEC DRM_IOWR(DRM_COMMAND_BASE + \ 158*7688df22SAndroid Build Coastguard Worker DRM_EXYNOS_G2D_EXEC, struct drm_exynos_g2d_exec) 159*7688df22SAndroid Build Coastguard Worker 160*7688df22SAndroid Build Coastguard Worker /* EXYNOS specific events */ 161*7688df22SAndroid Build Coastguard Worker #define DRM_EXYNOS_G2D_EVENT 0x80000000 162*7688df22SAndroid Build Coastguard Worker 163*7688df22SAndroid Build Coastguard Worker struct drm_exynos_g2d_event { 164*7688df22SAndroid Build Coastguard Worker struct drm_event base; 165*7688df22SAndroid Build Coastguard Worker __u64 user_data; 166*7688df22SAndroid Build Coastguard Worker __u32 tv_sec; 167*7688df22SAndroid Build Coastguard Worker __u32 tv_usec; 168*7688df22SAndroid Build Coastguard Worker __u32 cmdlist_no; 169*7688df22SAndroid Build Coastguard Worker __u32 reserved; 170*7688df22SAndroid Build Coastguard Worker }; 171*7688df22SAndroid Build Coastguard Worker 172*7688df22SAndroid Build Coastguard Worker #endif 173