130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* exynos_drm.h 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright (c) 2011 Samsung Electronics Co., Ltd. 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Authors: 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Inki Dae <inki.dae@samsung.com> 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Joonyoung Shim <jy0922.shim@samsung.com> 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Seung-Woo Kim <sw0312.kim@samsung.com> 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This program is free software; you can redistribute it and/or modify it 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * under the terms of the GNU General Public License as published by the 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Free Software Foundation; either version 2 of the License, or (at your 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * option) any later version. 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _UAPI_EXYNOS_DRM_H_ 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _UAPI_EXYNOS_DRM_H_ 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <drm/drm.h> 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * User-desired buffer creation information structure. 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @size: user-desired memory allocation size. 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * - this size value would be page-aligned internally. 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @flags: user request for setting memory type or cache attributes. 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @handle: returned a handle to created gem object. 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * - this handle will be set by gem module of kernel side. 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 2930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_gem_create { 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng uint64_t size; 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int flags; 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int handle; 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * A structure for getting buffer offset. 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @handle: a pointer to gem object created. 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @pad: just padding to be 64-bit aligned. 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @offset: relatived offset value of the memory region allocated. 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * - this value should be set by user. 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 4330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_gem_map_off { 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int handle; 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int pad; 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng uint64_t offset; 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * A structure for mapping buffer. 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @handle: a handle to gem object created. 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @pad: just padding to be 64-bit aligned. 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @size: memory size to be mapped. 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @mapped: having user virtual address mmaped. 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * - this variable would be filled by exynos gem module 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * of kernel side with user virtual address which is allocated 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * by do_mmap(). 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 6030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_gem_mmap { 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int handle; 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int pad; 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng uint64_t size; 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng uint64_t mapped; 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * A structure to gem information. 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @handle: a handle to gem object created. 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @flags: flag value including memory type and cache attribute and 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * this value would be set by driver. 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @size: size to memory region allocated by gem and this size would 7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * be set by driver. 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 7630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_gem_info { 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int handle; 7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int flags; 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng uint64_t size; 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * A structure for user connection request of virtual display. 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @connection: indicate whether doing connetion or not by user. 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @extensions: if this value is 1 then the vidi driver would need additional 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 128bytes edid data. 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @edid: the edid data pointer from user side. 8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 9030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_vidi_connection { 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int connection; 9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int extensions; 9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng uint64_t edid; 9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* memory type definitions. */ 9730692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum e_drm_exynos_gem_mem_type { 9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* Physically Continuous memory and used as default. */ 9930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_BO_CONTIG = 0 << 0, 10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* Physically Non-Continuous memory. */ 10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_BO_NONCONTIG = 1 << 0, 10230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* non-cachable mapping and used as default. */ 10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_BO_NONCACHABLE = 0 << 1, 10430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* cachable mapping. */ 10530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_BO_CACHABLE = 1 << 1, 10630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* write-combine mapping. */ 10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_BO_WC = 1 << 2, 10830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_BO_MASK = EXYNOS_BO_NONCONTIG | EXYNOS_BO_CACHABLE | 10930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_BO_WC 11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_g2d_get_ver { 11330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 major; 11430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 minor; 11530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_g2d_cmd { 11830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 offset; 11930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 data; 12030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 12130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 12230692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum drm_exynos_g2d_buf_type { 12330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng G2D_BUF_USERPTR = 1 << 31, 12430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 12530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 12630692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum drm_exynos_g2d_event_type { 12730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng G2D_EVENT_NOT, 12830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng G2D_EVENT_NONSTOP, 12930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng G2D_EVENT_STOP, /* not yet */ 13030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 13130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 13230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_g2d_userptr { 13330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned long userptr; 13430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned long size; 13530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 13630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 13730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_g2d_set_cmdlist { 13830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 cmd; 13930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 cmd_buf; 14030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 cmd_nr; 14130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 cmd_buf_nr; 14230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 14330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* for g2d event */ 14430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 event_type; 14530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 user_data; 14630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 14730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 14830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_g2d_exec { 14930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 async; 15030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 15130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 15230692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum drm_exynos_ops_id { 15330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_OPS_SRC, 15430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_OPS_DST, 15530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_OPS_MAX, 15630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 15730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 15830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_sz { 15930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 hsize; 16030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 vsize; 16130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 16230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 16330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_pos { 16430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 x; 16530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 y; 16630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 w; 16730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 h; 16830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 16930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 17030692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum drm_exynos_flip { 17130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_FLIP_NONE = (0 << 0), 17230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_FLIP_VERTICAL = (1 << 0), 17330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_FLIP_HORIZONTAL = (1 << 1), 17430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_FLIP_BOTH = EXYNOS_DRM_FLIP_VERTICAL | 17530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_FLIP_HORIZONTAL, 17630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 17730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 17830692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum drm_exynos_degree { 17930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_DEGREE_0, 18030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_DEGREE_90, 18130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_DEGREE_180, 18230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_DEGREE_270, 18330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 18430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 18530692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum drm_exynos_planer { 18630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_PLANAR_Y, 18730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_PLANAR_CB, 18830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_PLANAR_CR, 18930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng EXYNOS_DRM_PLANAR_MAX, 19030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 19130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 19230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 19330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * A structure for ipp supported property list. 19430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 19530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @version: version of this structure. 19630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @ipp_id: id of ipp driver. 19730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @count: count of ipp driver. 19830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @writeback: flag of writeback supporting. 19930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @flip: flag of flip supporting. 20030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @degree: flag of degree information. 20130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @csc: flag of csc supporting. 20230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @crop: flag of crop supporting. 20330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @scale: flag of scale supporting. 20430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @refresh_min: min hz of refresh. 20530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @refresh_max: max hz of refresh. 20630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @crop_min: crop min resolution. 20730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @crop_max: crop max resolution. 20830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @scale_min: scale min resolution. 20930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @scale_max: scale max resolution. 21030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 21130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_ipp_prop_list { 21230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 version; 21330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 ipp_id; 21430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 count; 21530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 writeback; 21630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 flip; 21730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 degree; 21830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 csc; 21930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 crop; 22030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 scale; 22130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 refresh_min; 22230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 refresh_max; 22330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reserved; 22430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct drm_exynos_sz crop_min; 22530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct drm_exynos_sz crop_max; 22630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct drm_exynos_sz scale_min; 22730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct drm_exynos_sz scale_max; 22830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 22930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 23030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 23130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * A structure for ipp config. 23230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 23330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @ops_id: property of operation directions. 23430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @flip: property of mirror, flip. 23530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @degree: property of rotation degree. 23630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @fmt: property of image format. 23730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @sz: property of image size. 23830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @pos: property of image position(src-cropped,dst-scaler). 23930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 24030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_ipp_config { 24130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng enum drm_exynos_ops_id ops_id; 24230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng enum drm_exynos_flip flip; 24330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng enum drm_exynos_degree degree; 24430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 fmt; 24530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct drm_exynos_sz sz; 24630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct drm_exynos_pos pos; 24730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 24830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 24930692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum drm_exynos_ipp_cmd { 25030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IPP_CMD_NONE, 25130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IPP_CMD_M2M, 25230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IPP_CMD_WB, 25330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IPP_CMD_OUTPUT, 25430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IPP_CMD_MAX, 25530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 25630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 25730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 25830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * A structure for ipp property. 25930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 26030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @config: source, destination config. 26130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @cmd: definition of command. 26230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @ipp_id: id of ipp driver. 26330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @prop_id: id of property. 26430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @refresh_rate: refresh rate. 26530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 26630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_ipp_property { 26730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct drm_exynos_ipp_config config[EXYNOS_DRM_OPS_MAX]; 26830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng enum drm_exynos_ipp_cmd cmd; 26930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 ipp_id; 27030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 prop_id; 27130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 refresh_rate; 27230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 27330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 27430692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum drm_exynos_ipp_buf_type { 27530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IPP_BUF_ENQUEUE, 27630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IPP_BUF_DEQUEUE, 27730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 27830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 27930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 28030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * A structure for ipp buffer operations. 28130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 28230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @ops_id: operation directions. 28330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @buf_type: definition of buffer. 28430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @prop_id: id of property. 28530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @buf_id: id of buffer. 28630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @handle: Y, Cb, Cr each planar handle. 28730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @user_data: user data. 28830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 28930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_ipp_queue_buf { 29030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng enum drm_exynos_ops_id ops_id; 29130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng enum drm_exynos_ipp_buf_type buf_type; 29230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 prop_id; 29330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 buf_id; 29430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 handle[EXYNOS_DRM_PLANAR_MAX]; 29530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reserved; 29630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 user_data; 29730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 29830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 29930692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum drm_exynos_ipp_ctrl { 30030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IPP_CTRL_PLAY, 30130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IPP_CTRL_STOP, 30230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IPP_CTRL_PAUSE, 30330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IPP_CTRL_RESUME, 30430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng IPP_CTRL_MAX, 30530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 30630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 30730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 30830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * A structure for ipp start/stop operations. 30930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 31030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @prop_id: id of property. 31130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @ctrl: definition of control. 31230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 31330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_ipp_cmd_ctrl { 31430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 prop_id; 31530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng enum drm_exynos_ipp_ctrl ctrl; 31630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 31730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 31830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_GEM_CREATE 0x00 31930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_GEM_MAP_OFFSET 0x01 32030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_GEM_MMAP 0x02 32130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Reserved 0x03 ~ 0x05 for exynos specific gem ioctl */ 32230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_GEM_GET 0x04 32330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_VIDI_CONNECTION 0x07 32430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 32530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* G2D */ 32630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_G2D_GET_VER 0x20 32730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_G2D_SET_CMDLIST 0x21 32830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_G2D_EXEC 0x22 32930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 33030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* IPP - Image Post Processing */ 33130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_IPP_GET_PROPERTY 0x30 33230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_IPP_SET_PROPERTY 0x31 33330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_IPP_QUEUE_BUF 0x32 33430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_IPP_CMD_CTRL 0x33 33530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 33630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_IOCTL_EXYNOS_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + \ 33730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DRM_EXYNOS_GEM_CREATE, struct drm_exynos_gem_create) 33830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 33930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_IOCTL_EXYNOS_GEM_MAP_OFFSET DRM_IOWR(DRM_COMMAND_BASE + \ 34030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DRM_EXYNOS_GEM_MAP_OFFSET, struct drm_exynos_gem_map_off) 34130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 34230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_IOCTL_EXYNOS_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + \ 34330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DRM_EXYNOS_GEM_MMAP, struct drm_exynos_gem_mmap) 34430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 34530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_IOCTL_EXYNOS_GEM_GET DRM_IOWR(DRM_COMMAND_BASE + \ 34630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DRM_EXYNOS_GEM_GET, struct drm_exynos_gem_info) 34730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 34830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_IOCTL_EXYNOS_VIDI_CONNECTION DRM_IOWR(DRM_COMMAND_BASE + \ 34930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DRM_EXYNOS_VIDI_CONNECTION, struct drm_exynos_vidi_connection) 35030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 35130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_IOCTL_EXYNOS_G2D_GET_VER DRM_IOWR(DRM_COMMAND_BASE + \ 35230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DRM_EXYNOS_G2D_GET_VER, struct drm_exynos_g2d_get_ver) 35330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST DRM_IOWR(DRM_COMMAND_BASE + \ 35430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DRM_EXYNOS_G2D_SET_CMDLIST, struct drm_exynos_g2d_set_cmdlist) 35530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_IOCTL_EXYNOS_G2D_EXEC DRM_IOWR(DRM_COMMAND_BASE + \ 35630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DRM_EXYNOS_G2D_EXEC, struct drm_exynos_g2d_exec) 35730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 35830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_IOCTL_EXYNOS_IPP_GET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + \ 35930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DRM_EXYNOS_IPP_GET_PROPERTY, struct drm_exynos_ipp_prop_list) 36030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_IOCTL_EXYNOS_IPP_SET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + \ 36130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DRM_EXYNOS_IPP_SET_PROPERTY, struct drm_exynos_ipp_property) 36230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_IOCTL_EXYNOS_IPP_QUEUE_BUF DRM_IOWR(DRM_COMMAND_BASE + \ 36330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DRM_EXYNOS_IPP_QUEUE_BUF, struct drm_exynos_ipp_queue_buf) 36430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_IOCTL_EXYNOS_IPP_CMD_CTRL DRM_IOWR(DRM_COMMAND_BASE + \ 36530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng DRM_EXYNOS_IPP_CMD_CTRL, struct drm_exynos_ipp_cmd_ctrl) 36630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 36730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* EXYNOS specific events */ 36830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_G2D_EVENT 0x80000000 36930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define DRM_EXYNOS_IPP_EVENT 0x80000001 37030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 37130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_g2d_event { 37230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct drm_event base; 37330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 user_data; 37430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 tv_sec; 37530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 tv_usec; 37630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 cmdlist_no; 37730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reserved; 37830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 37930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 38030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct drm_exynos_ipp_event { 38130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct drm_event base; 38230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 user_data; 38330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 tv_sec; 38430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 tv_usec; 38530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 prop_id; 38630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 reserved; 38730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 buf_id[EXYNOS_DRM_OPS_MAX]; 38830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 38930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 39030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _UAPI_EXYNOS_DRM_H_ */ 391