1*d83cc019SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2*d83cc019SAndroid Build Coastguard Worker /* 3*d83cc019SAndroid Build Coastguard Worker * include/uapi/drm/omap_drm.h 4*d83cc019SAndroid Build Coastguard Worker * 5*d83cc019SAndroid Build Coastguard Worker * Copyright (C) 2011 Texas Instruments 6*d83cc019SAndroid Build Coastguard Worker * Author: Rob Clark <[email protected]> 7*d83cc019SAndroid Build Coastguard Worker * 8*d83cc019SAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or modify it 9*d83cc019SAndroid Build Coastguard Worker * under the terms of the GNU General Public License version 2 as published by 10*d83cc019SAndroid Build Coastguard Worker * the Free Software Foundation. 11*d83cc019SAndroid Build Coastguard Worker * 12*d83cc019SAndroid Build Coastguard Worker * This program is distributed in the hope that it will be useful, but WITHOUT 13*d83cc019SAndroid Build Coastguard Worker * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14*d83cc019SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15*d83cc019SAndroid Build Coastguard Worker * more details. 16*d83cc019SAndroid Build Coastguard Worker * 17*d83cc019SAndroid Build Coastguard Worker * You should have received a copy of the GNU General Public License along with 18*d83cc019SAndroid Build Coastguard Worker * this program. If not, see <http://www.gnu.org/licenses/>. 19*d83cc019SAndroid Build Coastguard Worker */ 20*d83cc019SAndroid Build Coastguard Worker 21*d83cc019SAndroid Build Coastguard Worker #ifndef __OMAP_DRM_H__ 22*d83cc019SAndroid Build Coastguard Worker #define __OMAP_DRM_H__ 23*d83cc019SAndroid Build Coastguard Worker 24*d83cc019SAndroid Build Coastguard Worker #include "drm.h" 25*d83cc019SAndroid Build Coastguard Worker 26*d83cc019SAndroid Build Coastguard Worker #if defined(__cplusplus) 27*d83cc019SAndroid Build Coastguard Worker extern "C" { 28*d83cc019SAndroid Build Coastguard Worker #endif 29*d83cc019SAndroid Build Coastguard Worker 30*d83cc019SAndroid Build Coastguard Worker /* Please note that modifications to all structs defined here are 31*d83cc019SAndroid Build Coastguard Worker * subject to backwards-compatibility constraints. 32*d83cc019SAndroid Build Coastguard Worker */ 33*d83cc019SAndroid Build Coastguard Worker 34*d83cc019SAndroid Build Coastguard Worker #define OMAP_PARAM_CHIPSET_ID 1 /* ie. 0x3430, 0x4430, etc */ 35*d83cc019SAndroid Build Coastguard Worker 36*d83cc019SAndroid Build Coastguard Worker struct drm_omap_param { 37*d83cc019SAndroid Build Coastguard Worker __u64 param; /* in */ 38*d83cc019SAndroid Build Coastguard Worker __u64 value; /* in (set_param), out (get_param) */ 39*d83cc019SAndroid Build Coastguard Worker }; 40*d83cc019SAndroid Build Coastguard Worker 41*d83cc019SAndroid Build Coastguard Worker #define OMAP_BO_SCANOUT 0x00000001 /* scanout capable (phys contiguous) */ 42*d83cc019SAndroid Build Coastguard Worker #define OMAP_BO_CACHE_MASK 0x00000006 /* cache type mask, see cache modes */ 43*d83cc019SAndroid Build Coastguard Worker #define OMAP_BO_TILED_MASK 0x00000f00 /* tiled mapping mask, see tiled modes */ 44*d83cc019SAndroid Build Coastguard Worker 45*d83cc019SAndroid Build Coastguard Worker /* cache modes */ 46*d83cc019SAndroid Build Coastguard Worker #define OMAP_BO_CACHED 0x00000000 /* default */ 47*d83cc019SAndroid Build Coastguard Worker #define OMAP_BO_WC 0x00000002 /* write-combine */ 48*d83cc019SAndroid Build Coastguard Worker #define OMAP_BO_UNCACHED 0x00000004 /* strongly-ordered (uncached) */ 49*d83cc019SAndroid Build Coastguard Worker 50*d83cc019SAndroid Build Coastguard Worker /* tiled modes */ 51*d83cc019SAndroid Build Coastguard Worker #define OMAP_BO_TILED_8 0x00000100 52*d83cc019SAndroid Build Coastguard Worker #define OMAP_BO_TILED_16 0x00000200 53*d83cc019SAndroid Build Coastguard Worker #define OMAP_BO_TILED_32 0x00000300 54*d83cc019SAndroid Build Coastguard Worker #define OMAP_BO_TILED (OMAP_BO_TILED_8 | OMAP_BO_TILED_16 | OMAP_BO_TILED_32) 55*d83cc019SAndroid Build Coastguard Worker 56*d83cc019SAndroid Build Coastguard Worker union omap_gem_size { 57*d83cc019SAndroid Build Coastguard Worker __u32 bytes; /* (for non-tiled formats) */ 58*d83cc019SAndroid Build Coastguard Worker struct { 59*d83cc019SAndroid Build Coastguard Worker __u16 width; 60*d83cc019SAndroid Build Coastguard Worker __u16 height; 61*d83cc019SAndroid Build Coastguard Worker } tiled; /* (for tiled formats) */ 62*d83cc019SAndroid Build Coastguard Worker }; 63*d83cc019SAndroid Build Coastguard Worker 64*d83cc019SAndroid Build Coastguard Worker struct drm_omap_gem_new { 65*d83cc019SAndroid Build Coastguard Worker union omap_gem_size size; /* in */ 66*d83cc019SAndroid Build Coastguard Worker __u32 flags; /* in */ 67*d83cc019SAndroid Build Coastguard Worker __u32 handle; /* out */ 68*d83cc019SAndroid Build Coastguard Worker __u32 __pad; 69*d83cc019SAndroid Build Coastguard Worker }; 70*d83cc019SAndroid Build Coastguard Worker 71*d83cc019SAndroid Build Coastguard Worker /* mask of operations: */ 72*d83cc019SAndroid Build Coastguard Worker enum omap_gem_op { 73*d83cc019SAndroid Build Coastguard Worker OMAP_GEM_READ = 0x01, 74*d83cc019SAndroid Build Coastguard Worker OMAP_GEM_WRITE = 0x02, 75*d83cc019SAndroid Build Coastguard Worker }; 76*d83cc019SAndroid Build Coastguard Worker 77*d83cc019SAndroid Build Coastguard Worker struct drm_omap_gem_cpu_prep { 78*d83cc019SAndroid Build Coastguard Worker __u32 handle; /* buffer handle (in) */ 79*d83cc019SAndroid Build Coastguard Worker __u32 op; /* mask of omap_gem_op (in) */ 80*d83cc019SAndroid Build Coastguard Worker }; 81*d83cc019SAndroid Build Coastguard Worker 82*d83cc019SAndroid Build Coastguard Worker struct drm_omap_gem_cpu_fini { 83*d83cc019SAndroid Build Coastguard Worker __u32 handle; /* buffer handle (in) */ 84*d83cc019SAndroid Build Coastguard Worker __u32 op; /* mask of omap_gem_op (in) */ 85*d83cc019SAndroid Build Coastguard Worker /* TODO maybe here we pass down info about what regions are touched 86*d83cc019SAndroid Build Coastguard Worker * by sw so we can be clever about cache ops? For now a placeholder, 87*d83cc019SAndroid Build Coastguard Worker * set to zero and we just do full buffer flush.. 88*d83cc019SAndroid Build Coastguard Worker */ 89*d83cc019SAndroid Build Coastguard Worker __u32 nregions; 90*d83cc019SAndroid Build Coastguard Worker __u32 __pad; 91*d83cc019SAndroid Build Coastguard Worker }; 92*d83cc019SAndroid Build Coastguard Worker 93*d83cc019SAndroid Build Coastguard Worker struct drm_omap_gem_info { 94*d83cc019SAndroid Build Coastguard Worker __u32 handle; /* buffer handle (in) */ 95*d83cc019SAndroid Build Coastguard Worker __u32 pad; 96*d83cc019SAndroid Build Coastguard Worker __u64 offset; /* mmap offset (out) */ 97*d83cc019SAndroid Build Coastguard Worker /* note: in case of tiled buffers, the user virtual size can be 98*d83cc019SAndroid Build Coastguard Worker * different from the physical size (ie. how many pages are needed 99*d83cc019SAndroid Build Coastguard Worker * to back the object) which is returned in DRM_IOCTL_GEM_OPEN.. 100*d83cc019SAndroid Build Coastguard Worker * This size here is the one that should be used if you want to 101*d83cc019SAndroid Build Coastguard Worker * mmap() the buffer: 102*d83cc019SAndroid Build Coastguard Worker */ 103*d83cc019SAndroid Build Coastguard Worker __u32 size; /* virtual size for mmap'ing (out) */ 104*d83cc019SAndroid Build Coastguard Worker __u32 __pad; 105*d83cc019SAndroid Build Coastguard Worker }; 106*d83cc019SAndroid Build Coastguard Worker 107*d83cc019SAndroid Build Coastguard Worker #define DRM_OMAP_GET_PARAM 0x00 108*d83cc019SAndroid Build Coastguard Worker #define DRM_OMAP_SET_PARAM 0x01 109*d83cc019SAndroid Build Coastguard Worker #define DRM_OMAP_GEM_NEW 0x03 110*d83cc019SAndroid Build Coastguard Worker #define DRM_OMAP_GEM_CPU_PREP 0x04 /* Deprecated, to be removed */ 111*d83cc019SAndroid Build Coastguard Worker #define DRM_OMAP_GEM_CPU_FINI 0x05 /* Deprecated, to be removed */ 112*d83cc019SAndroid Build Coastguard Worker #define DRM_OMAP_GEM_INFO 0x06 113*d83cc019SAndroid Build Coastguard Worker #define DRM_OMAP_NUM_IOCTLS 0x07 114*d83cc019SAndroid Build Coastguard Worker 115*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_OMAP_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GET_PARAM, struct drm_omap_param) 116*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_OMAP_SET_PARAM DRM_IOW (DRM_COMMAND_BASE + DRM_OMAP_SET_PARAM, struct drm_omap_param) 117*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_OMAP_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GEM_NEW, struct drm_omap_gem_new) 118*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_OMAP_GEM_CPU_PREP DRM_IOW (DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_PREP, struct drm_omap_gem_cpu_prep) 119*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_OMAP_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_FINI, struct drm_omap_gem_cpu_fini) 120*d83cc019SAndroid Build Coastguard Worker #define DRM_IOCTL_OMAP_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GEM_INFO, struct drm_omap_gem_info) 121*d83cc019SAndroid Build Coastguard Worker 122*d83cc019SAndroid Build Coastguard Worker #if defined(__cplusplus) 123*d83cc019SAndroid Build Coastguard Worker } 124*d83cc019SAndroid Build Coastguard Worker #endif 125*d83cc019SAndroid Build Coastguard Worker 126*d83cc019SAndroid Build Coastguard Worker #endif /* __OMAP_DRM_H__ */ 127