exynos_drmif.h revision e07b650662ea0529d99741691c47856ef1034c9c
1e07b650662ea0529d99741691c47856ef1034c9cInki Dae/* 2e07b650662ea0529d99741691c47856ef1034c9cInki Dae * Copyright (C) 2012 Samsung Electronics Co., Ltd. 3e07b650662ea0529d99741691c47856ef1034c9cInki Dae * 4e07b650662ea0529d99741691c47856ef1034c9cInki Dae * Permission is hereby granted, free of charge, to any person obtaining a 5e07b650662ea0529d99741691c47856ef1034c9cInki Dae * copy of this software and associated documentation files (the "Software"), 6e07b650662ea0529d99741691c47856ef1034c9cInki Dae * to deal in the Software without restriction, including without limitation 7e07b650662ea0529d99741691c47856ef1034c9cInki Dae * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8e07b650662ea0529d99741691c47856ef1034c9cInki Dae * and/or sell copies of the Software, and to permit persons to whom the 9e07b650662ea0529d99741691c47856ef1034c9cInki Dae * Software is furnished to do so, subject to the following conditions: 10e07b650662ea0529d99741691c47856ef1034c9cInki Dae * 11e07b650662ea0529d99741691c47856ef1034c9cInki Dae * The above copyright notice and this permission notice (including the next 12e07b650662ea0529d99741691c47856ef1034c9cInki Dae * paragraph) shall be included in all copies or substantial portions of the 13e07b650662ea0529d99741691c47856ef1034c9cInki Dae * Software. 14e07b650662ea0529d99741691c47856ef1034c9cInki Dae * 15e07b650662ea0529d99741691c47856ef1034c9cInki Dae * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16e07b650662ea0529d99741691c47856ef1034c9cInki Dae * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17e07b650662ea0529d99741691c47856ef1034c9cInki Dae * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18e07b650662ea0529d99741691c47856ef1034c9cInki Dae * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19e07b650662ea0529d99741691c47856ef1034c9cInki Dae * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20e07b650662ea0529d99741691c47856ef1034c9cInki Dae * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21e07b650662ea0529d99741691c47856ef1034c9cInki Dae * SOFTWARE. 22e07b650662ea0529d99741691c47856ef1034c9cInki Dae * 23e07b650662ea0529d99741691c47856ef1034c9cInki Dae * Authors: 24e07b650662ea0529d99741691c47856ef1034c9cInki Dae * Inki Dae <inki.dae@samsung.com> 25e07b650662ea0529d99741691c47856ef1034c9cInki Dae */ 26e07b650662ea0529d99741691c47856ef1034c9cInki Dae 27e07b650662ea0529d99741691c47856ef1034c9cInki Dae#ifndef EXYNOS_DRMIF_H_ 28e07b650662ea0529d99741691c47856ef1034c9cInki Dae#define EXYNOS_DRMIF_H_ 29e07b650662ea0529d99741691c47856ef1034c9cInki Dae 30e07b650662ea0529d99741691c47856ef1034c9cInki Dae#include <xf86drm.h> 31e07b650662ea0529d99741691c47856ef1034c9cInki Dae#include <stdint.h> 32e07b650662ea0529d99741691c47856ef1034c9cInki Dae#include "exynos_drm.h" 33e07b650662ea0529d99741691c47856ef1034c9cInki Dae 34e07b650662ea0529d99741691c47856ef1034c9cInki Daestruct exynos_device { 35e07b650662ea0529d99741691c47856ef1034c9cInki Dae int fd; 36e07b650662ea0529d99741691c47856ef1034c9cInki Dae}; 37e07b650662ea0529d99741691c47856ef1034c9cInki Dae 38e07b650662ea0529d99741691c47856ef1034c9cInki Dae/* 39e07b650662ea0529d99741691c47856ef1034c9cInki Dae * Exynos Buffer Object structure. 40e07b650662ea0529d99741691c47856ef1034c9cInki Dae * 41e07b650662ea0529d99741691c47856ef1034c9cInki Dae * @dev: exynos device object allocated. 42e07b650662ea0529d99741691c47856ef1034c9cInki Dae * @handle: a gem handle to gem object created. 43e07b650662ea0529d99741691c47856ef1034c9cInki Dae * @flags: indicate memory allocation and cache attribute types. 44e07b650662ea0529d99741691c47856ef1034c9cInki Dae * @fd: file descriptor exported into dmabuf. 45e07b650662ea0529d99741691c47856ef1034c9cInki Dae * @size: size to the buffer created. 46e07b650662ea0529d99741691c47856ef1034c9cInki Dae * @vaddr: user space address to a gem buffer mmaped. 47e07b650662ea0529d99741691c47856ef1034c9cInki Dae * @name: a gem global handle from flink request. 48e07b650662ea0529d99741691c47856ef1034c9cInki Dae */ 49e07b650662ea0529d99741691c47856ef1034c9cInki Daestruct exynos_bo { 50e07b650662ea0529d99741691c47856ef1034c9cInki Dae struct exynos_device *dev; 51e07b650662ea0529d99741691c47856ef1034c9cInki Dae uint32_t handle; 52e07b650662ea0529d99741691c47856ef1034c9cInki Dae uint32_t flags; 53e07b650662ea0529d99741691c47856ef1034c9cInki Dae int fd; 54e07b650662ea0529d99741691c47856ef1034c9cInki Dae size_t size; 55e07b650662ea0529d99741691c47856ef1034c9cInki Dae void *vaddr; 56e07b650662ea0529d99741691c47856ef1034c9cInki Dae uint32_t name; 57e07b650662ea0529d99741691c47856ef1034c9cInki Dae}; 58e07b650662ea0529d99741691c47856ef1034c9cInki Dae 59e07b650662ea0529d99741691c47856ef1034c9cInki Dae/* 60e07b650662ea0529d99741691c47856ef1034c9cInki Dae * device related functions: 61e07b650662ea0529d99741691c47856ef1034c9cInki Dae */ 62e07b650662ea0529d99741691c47856ef1034c9cInki Daestruct exynos_device * exynos_device_create(int fd); 63e07b650662ea0529d99741691c47856ef1034c9cInki Daevoid exynos_device_destroy(struct exynos_device *dev); 64e07b650662ea0529d99741691c47856ef1034c9cInki Dae 65e07b650662ea0529d99741691c47856ef1034c9cInki Dae/* 66e07b650662ea0529d99741691c47856ef1034c9cInki Dae * buffer-object related functions: 67e07b650662ea0529d99741691c47856ef1034c9cInki Dae */ 68e07b650662ea0529d99741691c47856ef1034c9cInki Daestruct exynos_bo * exynos_bo_create(struct exynos_device *dev, 69e07b650662ea0529d99741691c47856ef1034c9cInki Dae size_t size, uint32_t flags); 70e07b650662ea0529d99741691c47856ef1034c9cInki Daeint exynos_bo_get_info(struct exynos_device *dev, uint32_t handle, 71e07b650662ea0529d99741691c47856ef1034c9cInki Dae size_t *size, uint32_t *flags); 72e07b650662ea0529d99741691c47856ef1034c9cInki Daevoid exynos_bo_destroy(struct exynos_bo *bo); 73e07b650662ea0529d99741691c47856ef1034c9cInki Daestruct exynos_bo * exynos_bo_from_name(struct exynos_device *dev, uint32_t name); 74e07b650662ea0529d99741691c47856ef1034c9cInki Daeint exynos_bo_get_name(struct exynos_bo *bo, uint32_t *name); 75e07b650662ea0529d99741691c47856ef1034c9cInki Daeuint32_t exynos_bo_handle(struct exynos_bo *bo); 76e07b650662ea0529d99741691c47856ef1034c9cInki Daevoid * exynos_bo_map(struct exynos_bo *bo); 77e07b650662ea0529d99741691c47856ef1034c9cInki Daeint exynos_prime_handle_to_fd(struct exynos_device *dev, uint32_t handle, 78e07b650662ea0529d99741691c47856ef1034c9cInki Dae int *fd); 79e07b650662ea0529d99741691c47856ef1034c9cInki Daeint exynos_prime_fd_to_handle(struct exynos_device *dev, int fd, 80e07b650662ea0529d99741691c47856ef1034c9cInki Dae uint32_t *handle); 81e07b650662ea0529d99741691c47856ef1034c9cInki Dae 82e07b650662ea0529d99741691c47856ef1034c9cInki Dae/* 83e07b650662ea0529d99741691c47856ef1034c9cInki Dae * Virtual Display related functions: 84e07b650662ea0529d99741691c47856ef1034c9cInki Dae */ 85e07b650662ea0529d99741691c47856ef1034c9cInki Daeint exynos_vidi_connection(struct exynos_device *dev, uint32_t connect, 86e07b650662ea0529d99741691c47856ef1034c9cInki Dae uint32_t ext, void *edid); 87e07b650662ea0529d99741691c47856ef1034c9cInki Dae 88e07b650662ea0529d99741691c47856ef1034c9cInki Dae#endif /* EXYNOS_DRMIF_H_ */ 89