1e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2cd5351f4SRob Clark /* 38bb0daffSRob Clark * include/uapi/drm/omap_drm.h 4cd5351f4SRob Clark * 5cd5351f4SRob Clark * Copyright (C) 2011 Texas Instruments 6cd5351f4SRob Clark * Author: Rob Clark <rob@ti.com> 7cd5351f4SRob Clark * 8cd5351f4SRob Clark * This program is free software; you can redistribute it and/or modify it 9cd5351f4SRob Clark * under the terms of the GNU General Public License version 2 as published by 10cd5351f4SRob Clark * the Free Software Foundation. 11cd5351f4SRob Clark * 12cd5351f4SRob Clark * This program is distributed in the hope that it will be useful, but WITHOUT 13cd5351f4SRob Clark * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14cd5351f4SRob Clark * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15cd5351f4SRob Clark * more details. 16cd5351f4SRob Clark * 17cd5351f4SRob Clark * You should have received a copy of the GNU General Public License along with 18cd5351f4SRob Clark * this program. If not, see <http://www.gnu.org/licenses/>. 19cd5351f4SRob Clark */ 20cd5351f4SRob Clark 21cd5351f4SRob Clark #ifndef __OMAP_DRM_H__ 22cd5351f4SRob Clark #define __OMAP_DRM_H__ 23cd5351f4SRob Clark 247ef500e4SGabriel Laskar #include "drm.h" 25cd5351f4SRob Clark 26c92378a0SEmil Velikov #if defined(__cplusplus) 27c92378a0SEmil Velikov extern "C" { 28c92378a0SEmil Velikov #endif 29c92378a0SEmil Velikov 30cd5351f4SRob Clark /* Please note that modifications to all structs defined here are 31cd5351f4SRob Clark * subject to backwards-compatibility constraints. 32cd5351f4SRob Clark */ 33cd5351f4SRob Clark 34cd5351f4SRob Clark #define OMAP_PARAM_CHIPSET_ID 1 /* ie. 0x3430, 0x4430, etc */ 35cd5351f4SRob Clark 36cd5351f4SRob Clark struct drm_omap_param { 37337ba7fbSDmitry V. Levin __u64 param; /* in */ 38337ba7fbSDmitry V. Levin __u64 value; /* in (set_param), out (get_param) */ 39cd5351f4SRob Clark }; 40cd5351f4SRob Clark 41*9b7117e2STomi Valkeinen /* Scanout buffer, consumable by DSS */ 42*9b7117e2STomi Valkeinen #define OMAP_BO_SCANOUT 0x00000001 43cd5351f4SRob Clark 44*9b7117e2STomi Valkeinen /* Buffer CPU caching mode: cached, write-combining or uncached. */ 45*9b7117e2STomi Valkeinen #define OMAP_BO_CACHED 0x00000000 46*9b7117e2STomi Valkeinen #define OMAP_BO_WC 0x00000002 47*9b7117e2STomi Valkeinen #define OMAP_BO_UNCACHED 0x00000004 48*9b7117e2STomi Valkeinen #define OMAP_BO_CACHE_MASK 0x00000006 49cd5351f4SRob Clark 50*9b7117e2STomi Valkeinen /* Use TILER for the buffer. The TILER container unit can be 8, 16 or 32 bits. */ 51cd5351f4SRob Clark #define OMAP_BO_TILED_8 0x00000100 52cd5351f4SRob Clark #define OMAP_BO_TILED_16 0x00000200 53cd5351f4SRob Clark #define OMAP_BO_TILED_32 0x00000300 54*9b7117e2STomi Valkeinen #define OMAP_BO_TILED_MASK 0x00000f00 55cd5351f4SRob Clark 56cd5351f4SRob Clark union omap_gem_size { 57337ba7fbSDmitry V. Levin __u32 bytes; /* (for non-tiled formats) */ 58cd5351f4SRob Clark struct { 59337ba7fbSDmitry V. Levin __u16 width; 60337ba7fbSDmitry V. Levin __u16 height; 61cd5351f4SRob Clark } tiled; /* (for tiled formats) */ 62cd5351f4SRob Clark }; 63cd5351f4SRob Clark 64cd5351f4SRob Clark struct drm_omap_gem_new { 65cd5351f4SRob Clark union omap_gem_size size; /* in */ 66337ba7fbSDmitry V. Levin __u32 flags; /* in */ 67337ba7fbSDmitry V. Levin __u32 handle; /* out */ 68337ba7fbSDmitry V. Levin __u32 __pad; 69cd5351f4SRob Clark }; 70cd5351f4SRob Clark 71cd5351f4SRob Clark /* mask of operations: */ 72cd5351f4SRob Clark enum omap_gem_op { 73cd5351f4SRob Clark OMAP_GEM_READ = 0x01, 74cd5351f4SRob Clark OMAP_GEM_WRITE = 0x02, 75cd5351f4SRob Clark }; 76cd5351f4SRob Clark 77cd5351f4SRob Clark struct drm_omap_gem_cpu_prep { 78337ba7fbSDmitry V. Levin __u32 handle; /* buffer handle (in) */ 79337ba7fbSDmitry V. Levin __u32 op; /* mask of omap_gem_op (in) */ 80cd5351f4SRob Clark }; 81cd5351f4SRob Clark 82cd5351f4SRob Clark struct drm_omap_gem_cpu_fini { 83337ba7fbSDmitry V. Levin __u32 handle; /* buffer handle (in) */ 84337ba7fbSDmitry V. Levin __u32 op; /* mask of omap_gem_op (in) */ 85cd5351f4SRob Clark /* TODO maybe here we pass down info about what regions are touched 86cd5351f4SRob Clark * by sw so we can be clever about cache ops? For now a placeholder, 87cd5351f4SRob Clark * set to zero and we just do full buffer flush.. 88cd5351f4SRob Clark */ 89337ba7fbSDmitry V. Levin __u32 nregions; 90337ba7fbSDmitry V. Levin __u32 __pad; 91cd5351f4SRob Clark }; 92cd5351f4SRob Clark 93cd5351f4SRob Clark struct drm_omap_gem_info { 94337ba7fbSDmitry V. Levin __u32 handle; /* buffer handle (in) */ 95337ba7fbSDmitry V. Levin __u32 pad; 96337ba7fbSDmitry V. Levin __u64 offset; /* mmap offset (out) */ 97cd5351f4SRob Clark /* note: in case of tiled buffers, the user virtual size can be 98cd5351f4SRob Clark * different from the physical size (ie. how many pages are needed 99cd5351f4SRob Clark * to back the object) which is returned in DRM_IOCTL_GEM_OPEN.. 100cd5351f4SRob Clark * This size here is the one that should be used if you want to 101cd5351f4SRob Clark * mmap() the buffer: 102cd5351f4SRob Clark */ 103337ba7fbSDmitry V. Levin __u32 size; /* virtual size for mmap'ing (out) */ 104337ba7fbSDmitry V. Levin __u32 __pad; 105cd5351f4SRob Clark }; 106cd5351f4SRob Clark 107cd5351f4SRob Clark #define DRM_OMAP_GET_PARAM 0x00 108cd5351f4SRob Clark #define DRM_OMAP_SET_PARAM 0x01 109cd5351f4SRob Clark #define DRM_OMAP_GEM_NEW 0x03 110d6f544f6SLaurent Pinchart #define DRM_OMAP_GEM_CPU_PREP 0x04 /* Deprecated, to be removed */ 111d6f544f6SLaurent Pinchart #define DRM_OMAP_GEM_CPU_FINI 0x05 /* Deprecated, to be removed */ 112cd5351f4SRob Clark #define DRM_OMAP_GEM_INFO 0x06 113cd5351f4SRob Clark #define DRM_OMAP_NUM_IOCTLS 0x07 114cd5351f4SRob Clark 115cd5351f4SRob Clark #define DRM_IOCTL_OMAP_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GET_PARAM, struct drm_omap_param) 116cd5351f4SRob Clark #define DRM_IOCTL_OMAP_SET_PARAM DRM_IOW (DRM_COMMAND_BASE + DRM_OMAP_SET_PARAM, struct drm_omap_param) 117cd5351f4SRob Clark #define DRM_IOCTL_OMAP_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GEM_NEW, struct drm_omap_gem_new) 118cd5351f4SRob Clark #define DRM_IOCTL_OMAP_GEM_CPU_PREP DRM_IOW (DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_PREP, struct drm_omap_gem_cpu_prep) 119cd5351f4SRob Clark #define DRM_IOCTL_OMAP_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_OMAP_GEM_CPU_FINI, struct drm_omap_gem_cpu_fini) 120cd5351f4SRob Clark #define DRM_IOCTL_OMAP_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_OMAP_GEM_INFO, struct drm_omap_gem_info) 121cd5351f4SRob Clark 122c92378a0SEmil Velikov #if defined(__cplusplus) 123c92378a0SEmil Velikov } 124c92378a0SEmil Velikov #endif 125c92378a0SEmil Velikov 126cd5351f4SRob Clark #endif /* __OMAP_DRM_H__ */ 127