1*7688df22SAndroid Build Coastguard Worker /* 2*7688df22SAndroid Build Coastguard Worker * Copyright (C) 2012 Samsung Electronics Co., Ltd. 3*7688df22SAndroid Build Coastguard Worker * 4*7688df22SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 5*7688df22SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 6*7688df22SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 7*7688df22SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*7688df22SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 9*7688df22SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 10*7688df22SAndroid Build Coastguard Worker * 11*7688df22SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next 12*7688df22SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the 13*7688df22SAndroid Build Coastguard Worker * Software. 14*7688df22SAndroid Build Coastguard Worker * 15*7688df22SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16*7688df22SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17*7688df22SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18*7688df22SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19*7688df22SAndroid Build Coastguard Worker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20*7688df22SAndroid Build Coastguard Worker * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21*7688df22SAndroid Build Coastguard Worker * SOFTWARE. 22*7688df22SAndroid Build Coastguard Worker * 23*7688df22SAndroid Build Coastguard Worker * Authors: 24*7688df22SAndroid Build Coastguard Worker * Inki Dae <[email protected]> 25*7688df22SAndroid Build Coastguard Worker */ 26*7688df22SAndroid Build Coastguard Worker 27*7688df22SAndroid Build Coastguard Worker #ifndef EXYNOS_DRMIF_H_ 28*7688df22SAndroid Build Coastguard Worker #define EXYNOS_DRMIF_H_ 29*7688df22SAndroid Build Coastguard Worker 30*7688df22SAndroid Build Coastguard Worker #include <xf86drm.h> 31*7688df22SAndroid Build Coastguard Worker #include <stdint.h> 32*7688df22SAndroid Build Coastguard Worker #include "exynos_drm.h" 33*7688df22SAndroid Build Coastguard Worker 34*7688df22SAndroid Build Coastguard Worker #if defined(__cplusplus) 35*7688df22SAndroid Build Coastguard Worker extern "C" { 36*7688df22SAndroid Build Coastguard Worker #endif 37*7688df22SAndroid Build Coastguard Worker 38*7688df22SAndroid Build Coastguard Worker struct exynos_device { 39*7688df22SAndroid Build Coastguard Worker int fd; 40*7688df22SAndroid Build Coastguard Worker }; 41*7688df22SAndroid Build Coastguard Worker 42*7688df22SAndroid Build Coastguard Worker /* 43*7688df22SAndroid Build Coastguard Worker * Exynos Buffer Object structure. 44*7688df22SAndroid Build Coastguard Worker * 45*7688df22SAndroid Build Coastguard Worker * @dev: exynos device object allocated. 46*7688df22SAndroid Build Coastguard Worker * @handle: a gem handle to gem object created. 47*7688df22SAndroid Build Coastguard Worker * @flags: indicate memory allocation and cache attribute types. 48*7688df22SAndroid Build Coastguard Worker * @size: size to the buffer created. 49*7688df22SAndroid Build Coastguard Worker * @vaddr: user space address to a gem buffer mmapped. 50*7688df22SAndroid Build Coastguard Worker * @name: a gem global handle from flink request. 51*7688df22SAndroid Build Coastguard Worker */ 52*7688df22SAndroid Build Coastguard Worker struct exynos_bo { 53*7688df22SAndroid Build Coastguard Worker struct exynos_device *dev; 54*7688df22SAndroid Build Coastguard Worker uint32_t handle; 55*7688df22SAndroid Build Coastguard Worker uint32_t flags; 56*7688df22SAndroid Build Coastguard Worker size_t size; 57*7688df22SAndroid Build Coastguard Worker void *vaddr; 58*7688df22SAndroid Build Coastguard Worker uint32_t name; 59*7688df22SAndroid Build Coastguard Worker }; 60*7688df22SAndroid Build Coastguard Worker 61*7688df22SAndroid Build Coastguard Worker #define EXYNOS_EVENT_CONTEXT_VERSION 1 62*7688df22SAndroid Build Coastguard Worker 63*7688df22SAndroid Build Coastguard Worker /* 64*7688df22SAndroid Build Coastguard Worker * Exynos Event Context structure. 65*7688df22SAndroid Build Coastguard Worker * 66*7688df22SAndroid Build Coastguard Worker * @base: base context (for core events). 67*7688df22SAndroid Build Coastguard Worker * @version: version info similar to the one in 'drmEventContext'. 68*7688df22SAndroid Build Coastguard Worker * @g2d_event_handler: handler for G2D events. 69*7688df22SAndroid Build Coastguard Worker */ 70*7688df22SAndroid Build Coastguard Worker struct exynos_event_context { 71*7688df22SAndroid Build Coastguard Worker drmEventContext base; 72*7688df22SAndroid Build Coastguard Worker 73*7688df22SAndroid Build Coastguard Worker int version; 74*7688df22SAndroid Build Coastguard Worker 75*7688df22SAndroid Build Coastguard Worker void (*g2d_event_handler)(int fd, unsigned int cmdlist_no, 76*7688df22SAndroid Build Coastguard Worker unsigned int tv_sec, unsigned int tv_usec, 77*7688df22SAndroid Build Coastguard Worker void *user_data); 78*7688df22SAndroid Build Coastguard Worker }; 79*7688df22SAndroid Build Coastguard Worker 80*7688df22SAndroid Build Coastguard Worker /* 81*7688df22SAndroid Build Coastguard Worker * device related functions: 82*7688df22SAndroid Build Coastguard Worker */ 83*7688df22SAndroid Build Coastguard Worker struct exynos_device * exynos_device_create(int fd); 84*7688df22SAndroid Build Coastguard Worker void exynos_device_destroy(struct exynos_device *dev); 85*7688df22SAndroid Build Coastguard Worker 86*7688df22SAndroid Build Coastguard Worker /* 87*7688df22SAndroid Build Coastguard Worker * buffer-object related functions: 88*7688df22SAndroid Build Coastguard Worker */ 89*7688df22SAndroid Build Coastguard Worker struct exynos_bo * exynos_bo_create(struct exynos_device *dev, 90*7688df22SAndroid Build Coastguard Worker size_t size, uint32_t flags); 91*7688df22SAndroid Build Coastguard Worker int exynos_bo_get_info(struct exynos_device *dev, uint32_t handle, 92*7688df22SAndroid Build Coastguard Worker size_t *size, uint32_t *flags); 93*7688df22SAndroid Build Coastguard Worker void exynos_bo_destroy(struct exynos_bo *bo); 94*7688df22SAndroid Build Coastguard Worker struct exynos_bo * exynos_bo_from_name(struct exynos_device *dev, uint32_t name); 95*7688df22SAndroid Build Coastguard Worker int exynos_bo_get_name(struct exynos_bo *bo, uint32_t *name); 96*7688df22SAndroid Build Coastguard Worker uint32_t exynos_bo_handle(struct exynos_bo *bo); 97*7688df22SAndroid Build Coastguard Worker void * exynos_bo_map(struct exynos_bo *bo); 98*7688df22SAndroid Build Coastguard Worker int exynos_prime_handle_to_fd(struct exynos_device *dev, uint32_t handle, 99*7688df22SAndroid Build Coastguard Worker int *fd); 100*7688df22SAndroid Build Coastguard Worker int exynos_prime_fd_to_handle(struct exynos_device *dev, int fd, 101*7688df22SAndroid Build Coastguard Worker uint32_t *handle); 102*7688df22SAndroid Build Coastguard Worker 103*7688df22SAndroid Build Coastguard Worker /* 104*7688df22SAndroid Build Coastguard Worker * Virtual Display related functions: 105*7688df22SAndroid Build Coastguard Worker */ 106*7688df22SAndroid Build Coastguard Worker int exynos_vidi_connection(struct exynos_device *dev, uint32_t connect, 107*7688df22SAndroid Build Coastguard Worker uint32_t ext, void *edid); 108*7688df22SAndroid Build Coastguard Worker 109*7688df22SAndroid Build Coastguard Worker /* 110*7688df22SAndroid Build Coastguard Worker * event handling related functions: 111*7688df22SAndroid Build Coastguard Worker */ 112*7688df22SAndroid Build Coastguard Worker int exynos_handle_event(struct exynos_device *dev, 113*7688df22SAndroid Build Coastguard Worker struct exynos_event_context *ctx); 114*7688df22SAndroid Build Coastguard Worker 115*7688df22SAndroid Build Coastguard Worker 116*7688df22SAndroid Build Coastguard Worker #if defined(__cplusplus) 117*7688df22SAndroid Build Coastguard Worker } 118*7688df22SAndroid Build Coastguard Worker #endif 119*7688df22SAndroid Build Coastguard Worker 120*7688df22SAndroid Build Coastguard Worker #endif /* EXYNOS_DRMIF_H_ */ 121