import exynos 7570 bsp
[GitHub/LineageOS/android_hardware_samsung_slsi_exynos5.git] / include / sec_g2d.h
CommitLineData
e3534476
T
1/*
2 * Copyright@ Samsung Electronics Co. LTD
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#ifndef _SEC_G2D_DRIVER_H_
18#define _SEC_G2D_DRIVER_H_
19typedef unsigned char u8;
20typedef unsigned short u16;
21typedef unsigned long u32;
22
23#define SEC_G2D_DEV_NAME "/dev/fimg2d"
24
25#define G2D_IOCTL_MAGIC 'G'
26
27#define G2D_BLIT _IO(G2D_IOCTL_MAGIC,0)
28#define G2D_GET_VERSION _IO(G2D_IOCTL_MAGIC,1)
29#define G2D_GET_MEMORY _IOR(G2D_IOCTL_MAGIC,2, unsigned int)
30#define G2D_GET_MEMORY_SIZE _IOR(G2D_IOCTL_MAGIC,3, unsigned int)
31#define G2D_DMA_CACHE_CLEAN _IOWR(G2D_IOCTL_MAGIC,4, struct g2d_dma_info)
32#define G2D_DMA_CACHE_FLUSH _IOWR(G2D_IOCTL_MAGIC,5, struct g2d_dma_info)
33#define G2D_SYNC _IO(G2D_IOCTL_MAGIC,6)
34#define G2D_RESET _IO(G2D_IOCTL_MAGIC,7)
35
36#define G2D_MAX_WIDTH (2048)
37#define G2D_MAX_HEIGHT (2048)
38
39#define G2D_ALPHA_VALUE_MAX (255)
40
41#define G2D_POLLING (1<<0)
42#define G2D_INTERRUPT (0<<0)
43#define G2D_CACHE_OP (1<<1)
44#define G2D_NONE_INVALIDATE (0<<1)
45#define G2D_HYBRID_MODE (1<<2)
46
47typedef enum {
48 G2D_ROT_0 = 0,
49 G2D_ROT_90,
50 G2D_ROT_180,
51 G2D_ROT_270,
52 G2D_ROT_X_FLIP,
53 G2D_ROT_Y_FLIP
54} G2D_ROT_DEG;
55
56typedef enum {
57 G2D_ALPHA_BLENDING_MIN = 0, // wholly transparent
58 G2D_ALPHA_BLENDING_MAX = 255, // 255
59 G2D_ALPHA_BLENDING_OPAQUE = 256, // opaque
60} G2D_ALPHA_BLENDING_MODE;
61
62typedef enum {
63 G2D_COLORKEY_NONE = 0,
64 G2D_COLORKEY_SRC_ON,
65 G2D_COLORKEY_DST_ON,
66 G2D_COLORKEY_SRC_DST_ON,
67} G2D_COLORKEY_MODE;
68
69typedef enum {
70 G2D_BLUE_SCREEN_NONE = 0,
71 G2D_BLUE_SCREEN_TRANSPARENT,
72 G2D_BLUE_SCREEN_WITH_COLOR,
73} G2D_BLUE_SCREEN_MODE;
74
75typedef enum {
76 G2D_ROP_SRC = 0,
77 G2D_ROP_DST,
78 G2D_ROP_SRC_AND_DST,
79 G2D_ROP_SRC_OR_DST,
80 G2D_ROP_3RD_OPRND,
81 G2D_ROP_SRC_AND_3RD_OPRND,
82 G2D_ROP_SRC_OR_3RD_OPRND,
83 G2D_ROP_SRC_XOR_3RD_OPRND,
84 G2D_ROP_DST_OR_3RD,
85} G2D_ROP_TYPE;
86
87typedef enum {
88 G2D_THIRD_OP_NONE = 0,
89 G2D_THIRD_OP_PATTERN,
90 G2D_THIRD_OP_FG,
91 G2D_THIRD_OP_BG
92} G2D_THIRD_OP_MODE;
93
94typedef enum {
95 G2D_BLACK = 0,
96 G2D_RED,
97 G2D_GREEN,
98 G2D_BLUE,
99 G2D_WHITE,
100 G2D_YELLOW,
101 G2D_CYAN,
102 G2D_MAGENTA
103} G2D_COLOR;
104
105typedef enum {
106 G2D_RGB_565 = ((0<<4)|2),
107
108 G2D_ABGR_8888 = ((2<<4)|1),
109 G2D_BGRA_8888 = ((3<<4)|1),
110 G2D_ARGB_8888 = ((0<<4)|1),
111 G2D_RGBA_8888 = ((1<<4)|1),
112
113 G2D_XBGR_8888 = ((2<<4)|0),
114 G2D_BGRX_8888 = ((3<<4)|0),
115 G2D_XRGB_8888 = ((0<<4)|0),
116 G2D_RGBX_8888 = ((1<<4)|0),
117
118 G2D_ABGR_1555 = ((2<<4)|4),
119 G2D_BGRA_5551 = ((3<<4)|4),
120 G2D_ARGB_1555 = ((0<<4)|4),
121 G2D_RGBA_5551 = ((1<<4)|4),
122
123 G2D_XBGR_1555 = ((2<<4)|3),
124 G2D_BGRX_5551 = ((3<<4)|3),
125 G2D_XRGB_1555 = ((0<<4)|3),
126 G2D_RGBX_5551 = ((1<<4)|3),
127
128 G2D_ABGR_4444 = ((2<<4)|6),
129 G2D_BGRA_4444 = ((3<<4)|6),
130 G2D_ARGB_4444 = ((0<<4)|6),
131 G2D_RGBA_4444 = ((1<<4)|6),
132
133 G2D_XBGR_4444 = ((2<<4)|5),
134 G2D_BGRX_4444 = ((3<<4)|5),
135 G2D_XRGB_4444 = ((0<<4)|5),
136 G2D_RGBX_4444 = ((1<<4)|5),
137
138 G2D_PACKED_BGR_888 = ((2<<4)|7),
139 G2D_PACKED_RGB_888 = ((0<<4)|7),
140
141 G2D_MAX_COLOR_SPACE
142} G2D_COLOR_SPACE;
143
144typedef enum {
145 G2D_Clear_Mode, //!< [0, 0]
146 G2D_Src_Mode, //!< [Sa, Sc]
147 G2D_Dst_Mode, //!< [Da, Dc]
148 G2D_SrcOver_Mode, //!< [Sa + Da - Sa*Da, Rc = Sc + (1 - Sa)*Dc]
149 G2D_DstOver_Mode, //!< [Sa + Da - Sa*Da, Rc = Dc + (1 - Da)*Sc]
150 G2D_SrcIn_Mode, //!< [Sa * Da, Sc * Da]
151 G2D_DstIn_Mode, //!< [Sa * Da, Sa * Dc]
152 G2D_SrcOut_Mode, //!< [Sa * (1 - Da), Sc * (1 - Da)]
153 G2D_DstOut_Mode, //!< [Da * (1 - Sa), Dc * (1 - Sa)]
154 G2D_SrcATop_Mode, //!< [Da, Sc * Da + (1 - Sa) * Dc]
155 G2D_DstATop_Mode, //!< [Sa, Sa * Dc + Sc * (1 - Da)]
156 G2D_Xor_Mode, //!< [Sa + Da - 2 * Sa * Da, Sc * (1 - Da) + (1 - Sa) * Dc]
157
158 // these modes are defined in the SVG Compositing standard
159 // http://www.w3.org/TR/2009/WD-SVGCompositing-20090430/
160 G2D_Plus_Mode,
161 G2D_Multiply_Mode,
162 G2D_Screen_Mode,
163 G2D_Overlay_Mode,
164 G2D_Darken_Mode,
165 G2D_Lighten_Mode,
166 G2D_ColorDodge_Mode,
167 G2D_ColorBurn_Mode,
168 G2D_HardLight_Mode,
169 G2D_SoftLight_Mode,
170 G2D_Difference_Mode,
171 G2D_Exclusion_Mode,
172
173 kLastMode = G2D_Exclusion_Mode
174} G2D_PORTTERDUFF_MODE;
175
176typedef enum {
177 G2D_MEMORY_KERNEL,
178 G2D_MEMORY_USER
179} G2D_MEMORY_TYPE;
180
181typedef struct {
182 int x;
183 int y;
184 unsigned int w;
185 unsigned int h;
186 unsigned int full_w;
187 unsigned int full_h;
188 int color_format;
189 unsigned int bytes_per_pixel;
190 unsigned char * addr;
191} g2d_rect;
192
193typedef struct {
194 unsigned int rotate_val;
195 unsigned int alpha_val;
196
197 unsigned int blue_screen_mode; //true : enable, false : disable
198 unsigned int color_key_val; //screen color value
199 unsigned int color_switch_val; //one color
200
201 unsigned int src_color; // when set one color on SRC
202
203 unsigned int third_op_mode;
204 unsigned int rop_mode;
205 unsigned int mask_mode;
206 unsigned int render_mode;
207 unsigned int potterduff_mode;
208 unsigned int memory_type;
209} g2d_flag;
210
211typedef struct {
212 unsigned int t;
213 unsigned int b;
214 unsigned int l;
215 unsigned int r;
216} g2d_clip;
217
218typedef struct {
219 g2d_rect src_rect;
220 g2d_rect dst_rect;
221 g2d_clip clip;
222 g2d_flag flag;
223} g2d_params;
224
225struct g2d_dma_info {
226 unsigned long addr;
227 unsigned int size;
228};
229
230typedef struct _sec_g2d_t {
231 int dev_fd;
232 g2d_params params;
233}sec_g2d_t;
234
235typedef struct __s5p_rect {
236 uint32_t x;
237 uint32_t y;
238 uint32_t w;
239 uint32_t h;
240} __s5p_rect;
241
242typedef struct __s5p_img {
243 uint32_t width;
244 uint32_t height;
245 uint32_t format;
246 uint32_t offset;
247 uint32_t base;
248 int memory_id;
249} __s5p_img;
250
251#endif /*_SEC_G2D_DRIVER_H_*/