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_DISPLAY_CAPABILITY_PP = (1<<0),
117 TDM_DISPLAY_CAPABILITY_CAPTURE = (1<<1),
118 } tdm_display_capability;
122 TDM_LAYER_CAPABILITY_CURSOR = (1<<0),
123 TDM_LAYER_CAPABILITY_PRIMARY = (1<<1),
124 TDM_LAYER_CAPABILITY_OVERLAY = (1<<2),
125 TDM_LAYER_CAPABILITY_SCALE = (1<<4),
126 TDM_LAYER_CAPABILITY_TRANSFORM = (1<<5),
127 TDM_LAYER_CAPABILITY_GRAPHIC = (1<<8),
128 TDM_LAYER_CAPABILITY_VIDEO = (1<<9),
129 } tdm_layer_capability;
133 TDM_PP_CAPABILITY_SYNC = (1<<0),
134 TDM_PP_CAPABILITY_ASYNC = (1<<1),
135 TDM_PP_CAPABILITY_SCALE = (1<<4),
136 TDM_PP_CAPABILITY_TRANSFORM = (1<<5),
141 TDM_CAPTURE_CAPABILITY_OUTPUT = (1<<0),
142 TDM_CAPTURE_CAPABILITY_LAYER = (1<<1),
143 TDM_CAPTURE_CAPABILITY_SCALE = (1<<4),
144 TDM_CAPTURE_CAPABILITY_TRANSFORM = (1<<5),
145 } tdm_capture_capability;
147 /* bit compatible with the drm definitions. */
150 TDM_OUTPUT_MODE_TYPE_BUILTIN = (1<<0),
151 TDM_OUTPUT_MODE_TYPE_CLOCK_C = ((1<<1) | TDM_OUTPUT_MODE_TYPE_BUILTIN),
152 TDM_OUTPUT_MODE_TYPE_CRTC_C = ((1<<2) | TDM_OUTPUT_MODE_TYPE_BUILTIN),
153 TDM_OUTPUT_MODE_TYPE_PREFERRED = (1<<3),
154 TDM_OUTPUT_MODE_TYPE_DEFAULT = (1<<4),
155 TDM_OUTPUT_MODE_TYPE_USERDEF = (1<<5),
156 TDM_OUTPUT_MODE_TYPE_DRIVER = (1<<6),
157 } tdm_output_mode_type;
159 /* bit compatible with the drm definitions. */
162 TDM_OUTPUT_MODE_FLAG_PHSYNC = (1<<0),
163 TDM_OUTPUT_MODE_FLAG_NHSYNC = (1<<1),
164 TDM_OUTPUT_MODE_FLAG_PVSYNC = (1<<2),
165 TDM_OUTPUT_MODE_FLAG_NVSYNC = (1<<3),
166 TDM_OUTPUT_MODE_FLAG_INTERLACE = (1<<4),
167 TDM_OUTPUT_MODE_FLAG_DBLSCAN = (1<<5),
168 TDM_OUTPUT_MODE_FLAG_CSYNC = (1<<6),
169 TDM_OUTPUT_MODE_FLAG_PCSYNC = (1<<7),
170 TDM_OUTPUT_MODE_FLAG_NCSYNC = (1<<8),
171 TDM_OUTPUT_MODE_FLAG_HSKEW = (1<<9), /* hskew provided */
172 TDM_OUTPUT_MODE_FLAG_BCAST = (1<<10),
173 TDM_OUTPUT_MODE_FLAG_PIXMUX = (1<<11),
174 TDM_OUTPUT_MODE_FLAG_DBLCLK = (1<<12),
175 TDM_OUTPUT_MODE_FLAG_CLKDIV2 = (1<<13),
176 } tdm_output_mode_flag;
178 typedef struct _tdm_output_mode
182 unsigned int refresh;
185 char name[TDM_NAME_LEN];
188 typedef struct _tdm_prop
191 char name[TDM_NAME_LEN];
194 typedef struct _tdm_size {
199 typedef struct _tdm_pos
216 typedef struct _tdm_info_config
223 typedef struct _tdm_info_layer
225 tdm_info_config src_config;
227 tdm_transform transform;
230 typedef struct _tdm_info_pp
232 tdm_info_config src_config;
233 tdm_info_config dst_config;
234 tdm_transform transform;
238 typedef struct _tdm_info_capture
240 tdm_info_config dst_config;
241 tdm_transform transform;
246 typedef void tdm_display;
247 typedef void tdm_output;
248 typedef void tdm_layer;
249 typedef void tdm_buffer;
250 typedef void tdm_capture;
253 typedef void (*tdm_output_vblank_handler)(tdm_output *output, unsigned int sequence,
254 unsigned int tv_sec, unsigned int tv_usec, void *user_data);
255 typedef void (*tdm_output_commit_handler)(tdm_output *output, unsigned int sequence,
256 unsigned int tv_sec, unsigned int tv_usec, void *user_data);
263 #endif /* _TDM_TYPES_H_ */