1 /**************************************************************************
5 Copyright 2015 Samsung Electronics co., Ltd. All Rights Reserved.
7 Contact: Eunchul Kim <chulspro.kim@samsung.com>,
8 JinYoung Jeon <jy0.jeon@samsung.com>,
9 Taeheon Kim <th908.kim@samsung.com>,
10 YoungJun Cho <yj44.cho@samsung.com>,
11 SooChan Lim <sc1.lim@samsung.com>,
12 Boram Park <sc1.lim@samsung.com>
14 Permission is hereby granted, free of charge, to any person obtaining a
15 copy of this software and associated documentation files (the
16 "Software"), to deal in the Software without restriction, including
17 without limitation the rights to use, copy, modify, merge, publish,
18 distribute, sub license, and/or sell copies of the Software, and to
19 permit persons to whom the Software is furnished to do so, subject to
20 the following conditions:
22 The above copyright notice and this permission notice (including the
23 next paragraph) shall be included in all copies or substantial portions
26 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
27 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
28 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
29 IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
30 ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
31 TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
32 SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34 **************************************************************************/
39 #include <tbm_surface.h>
45 #define TDM_NAME_LEN 64
50 TDM_ERROR_BAD_REQUEST = -1, //bad request
51 TDM_ERROR_OPERATION_FAILED = -2, //operaion failed
52 TDM_ERROR_INVALID_PARAMETER = -3, //wrong input parameter
53 TDM_ERROR_PERMISSION_DENIED = -4, //access denied
54 TDM_ERROR_BUSY = -5, //hardware resource busy
55 TDM_ERROR_OUT_OF_MEMORY = -6, //no free memory
56 TDM_ERROR_BAD_MODULE = -7, //bad backend module
57 TDM_ERROR_NOT_IMPLEMENTED = -8, //not implemented
62 TDM_TRANSFORM_NORMAL = 0,
64 TDM_TRANSFORM_180 = 2,
65 TDM_TRANSFORM_270 = 3,
66 TDM_TRANSFORM_FLIPPED = 4,
67 TDM_TRANSFORM_FLIPPED_90 = 5,
68 TDM_TRANSFORM_FLIPPED_180 = 6,
69 TDM_TRANSFORM_FLIPPED_270 = 7,
75 TDM_OUTPUT_CONN_STATUS_DISCONNECTED,
76 TDM_OUTPUT_CONN_STATUS_CONNECTED,
77 TDM_OUTPUT_CONN_STATUS_MODE_SETTED,
78 TDM_OUTPUT_CONN_STATUS_MAX,
79 } tdm_output_conn_status;
81 /* bit compatible with the libdrm definitions. */
84 TDM_OUTPUT_TYPE_Unknown,
89 TDM_OUTPUT_TYPE_Composite,
90 TDM_OUTPUT_TYPE_SVIDEO,
92 TDM_OUTPUT_TYPE_Component,
93 TDM_OUTPUT_TYPE_9PinDIN,
94 TDM_OUTPUT_TYPE_DisplayPort,
95 TDM_OUTPUT_TYPE_HDMIA,
96 TDM_OUTPUT_TYPE_HDMIB,
99 TDM_OUTPUT_TYPE_VIRTUAL,
104 /* bit compatible with the drm definitions. */
108 TDM_OUTPUT_DPMS_STANDBY,
109 TDM_OUTPUT_DPMS_SUSPEND,
116 TDM_LAYER_CAPABILITY_CURSOR = (1<<0),
117 TDM_LAYER_CAPABILITY_PRIMARY = (1<<1),
118 TDM_LAYER_CAPABILITY_OVERLAY = (1<<2),
119 TDM_LAYER_CAPABILITY_SCALE = (1<<4),
120 TDM_LAYER_CAPABILITY_TRANSFORM = (1<<5),
121 TDM_LAYER_CAPABILITY_GRAPHIC = (1<<8),
122 TDM_LAYER_CAPABILITY_VIDEO = (1<<9),
123 } tdm_layer_capability;
127 TDM_PP_CAPABILITY_SYNC = (1<<0),
128 TDM_PP_CAPABILITY_ASYNC = (1<<1),
129 TDM_PP_CAPABILITY_SCALE = (1<<4),
130 TDM_PP_CAPABILITY_TRANSFORM = (1<<5),
135 TDM_CAPTURE_CAPABILITY_OUTPUT = (1<<0),
136 TDM_CAPTURE_CAPABILITY_LAYER = (1<<1),
137 TDM_CAPTURE_CAPABILITY_SCALE = (1<<4),
138 TDM_CAPTURE_CAPABILITY_TRANSFORM = (1<<5),
139 } tdm_capture_capability;
141 /* bit compatible with the drm definitions. */
144 TDM_OUTPUT_MODE_TYPE_BUILTIN = (1<<0),
145 TDM_OUTPUT_MODE_TYPE_CLOCK_C = ((1<<1) | TDM_OUTPUT_MODE_TYPE_BUILTIN),
146 TDM_OUTPUT_MODE_TYPE_CRTC_C = ((1<<2) | TDM_OUTPUT_MODE_TYPE_BUILTIN),
147 TDM_OUTPUT_MODE_TYPE_PREFERRED = (1<<3),
148 TDM_OUTPUT_MODE_TYPE_DEFAULT = (1<<4),
149 TDM_OUTPUT_MODE_TYPE_USERDEF = (1<<5),
150 TDM_OUTPUT_MODE_TYPE_DRIVER = (1<<6),
151 } tdm_output_mode_type;
153 /* bit compatible with the drm definitions. */
156 TDM_OUTPUT_MODE_FLAG_PHSYNC = (1<<0),
157 TDM_OUTPUT_MODE_FLAG_NHSYNC = (1<<1),
158 TDM_OUTPUT_MODE_FLAG_PVSYNC = (1<<2),
159 TDM_OUTPUT_MODE_FLAG_NVSYNC = (1<<3),
160 TDM_OUTPUT_MODE_FLAG_INTERLACE = (1<<4),
161 TDM_OUTPUT_MODE_FLAG_DBLSCAN = (1<<5),
162 TDM_OUTPUT_MODE_FLAG_CSYNC = (1<<6),
163 TDM_OUTPUT_MODE_FLAG_PCSYNC = (1<<7),
164 TDM_OUTPUT_MODE_FLAG_NCSYNC = (1<<8),
165 TDM_OUTPUT_MODE_FLAG_HSKEW = (1<<9), /* hskew provided */
166 TDM_OUTPUT_MODE_FLAG_BCAST = (1<<10),
167 TDM_OUTPUT_MODE_FLAG_PIXMUX = (1<<11),
168 TDM_OUTPUT_MODE_FLAG_DBLCLK = (1<<12),
169 TDM_OUTPUT_MODE_FLAG_CLKDIV2 = (1<<13),
170 } tdm_output_mode_flag;
172 typedef struct _tdm_output_mode
176 unsigned int refresh;
179 char name[TDM_NAME_LEN];
182 typedef struct _tdm_prop
185 char name[TDM_NAME_LEN];
188 typedef struct _tdm_size {
193 typedef struct _tdm_pos
210 typedef struct _tdm_info_config
217 typedef struct _tdm_info_layer
219 tdm_info_config src_config;
221 tdm_transform transform;
224 typedef struct _tdm_info_pp
226 tdm_info_config src_config;
227 tdm_info_config dst_config;
228 tdm_transform transform;
233 typedef struct _tdm_info_capture
235 tdm_info_config dst_config;
236 tdm_transform transform;
242 typedef void tdm_display;
243 typedef void tdm_output;
244 typedef void tdm_layer;
245 typedef void tdm_capture;
248 typedef void (*tdm_output_vblank_handler)(tdm_output *output, unsigned int sequence,
249 unsigned int tv_sec, unsigned int tv_usec, void *user_data);
250 typedef void (*tdm_output_commit_handler)(tdm_output *output, unsigned int sequence,
251 unsigned int tv_sec, unsigned int tv_usec, void *user_data);
258 #endif /* _TDM_TYPES_H_ */