4 #define IEP_IOC_MAGIC 'i'
6 #define IEP_SET_PARAMETER_REQ _IOW(IEP_IOC_MAGIC, 1, unsigned long)
7 #define IEP_SET_PARAMETER_DEINTERLACE _IOW(IEP_IOC_MAGIC, 2, unsigned long)
8 #define IEP_SET_PARAMETER_ENHANCE _IOW(IEP_IOC_MAGIC, 3, unsigned long)
9 #define IEP_SET_PARAMETER_CONVERT _IOW(IEP_IOC_MAGIC, 4, unsigned long)
10 #define IEP_SET_PARAMETER_SCALE _IOW(IEP_IOC_MAGIC, 5, unsigned long)
11 #define IEP_GET_RESULT_SYNC _IOW(IEP_IOC_MAGIC, 6, unsigned long)
12 #define IEP_GET_RESULT_ASYNC _IOW(IEP_IOC_MAGIC, 7, unsigned long)
13 #define IEP_SET_PARAMETER _IOW(IEP_IOC_MAGIC, 8, unsigned long)
14 #define IEP_RELEASE_CURRENT_TASK _IOW(IEP_IOC_MAGIC, 9, unsigned long)
17 #define COMPAT_IEP_SET_PARAMETER_REQ _IOW(IEP_IOC_MAGIC, 1, u32)
18 #define COMPAT_IEP_SET_PARAMETER_DEINTERLACE _IOW(IEP_IOC_MAGIC, 2, u32)
19 #define COMPAT_IEP_SET_PARAMETER_ENHANCE _IOW(IEP_IOC_MAGIC, 3, u32)
20 #define COMPAT_IEP_SET_PARAMETER_CONVERT _IOW(IEP_IOC_MAGIC, 4, u32)
21 #define COMPAT_IEP_SET_PARAMETER_SCALE _IOW(IEP_IOC_MAGIC, 5, u32)
22 #define COMPAT_IEP_GET_RESULT_SYNC _IOW(IEP_IOC_MAGIC, 6, u32)
23 #define COMPAT_IEP_GET_RESULT_ASYNC _IOW(IEP_IOC_MAGIC, 7, u32)
24 #define COMPAT_IEP_SET_PARAMETER _IOW(IEP_IOC_MAGIC, 8, u32)
25 #define COMPAT_IEP_RELEASE_CURRENT_TASK _IOW(IEP_IOC_MAGIC, 9, u32)
28 /* Driver information */
29 #define DRIVER_DESC "IEP Device Driver"
30 #define DRIVER_NAME "iep"
34 #define iep_debug(level, fmt, args...) \
37 pr_info("%s:%d: " fmt, \
38 __func__, __LINE__, ##args); \
41 #define iep_debug(level, fmt, args...)
44 #define iep_debug_enter() vpu_debug(4, "enter\n")
45 #define iep_debug_leave() vpu_debug(4, "leave\n")
47 #define iep_err(fmt, args...) \
48 pr_err("%s:%d: " fmt, __func__, __LINE__, ##args)
53 #define IEP_DBG(format, args...) printk("%s: " format, DRIVER_NAME, ## args)
55 #define IEP_DBG(format, args...)
58 #define IEP_INFORMATION 1
60 #define IEP_INFO(format, args...) printk(format, ## args)
62 #define IEP_INFO(format, args...)
65 #define IEP_ERR(format, args...) printk(KERN_ERR "%s: " format, DRIVER_NAME, ## args)
66 #define IEP_WARNING(format, args...) printk(KERN_WARNING "%s: " format, DRIVER_NAME, ## args)
69 yuv2rgb_BT_601_l = 0x0, /* BT.601_1 */
70 yuv2rgb_BT_601_f = 0x1, /* BT.601_f */
71 yuv2rgb_BT_709_l = 0x2, /* BT.709_1 */
72 yuv2rgb_BT_709_f = 0x3, /* BT.709_f */
76 rgb2yuv_BT_601_l = 0x0, /* BT.601_1 */
77 rgb2yuv_BT_601_f = 0x1, /* BT.601_f */
78 rgb2yuv_BT_709_l = 0x2, /* BT.709_1 */
79 rgb2yuv_BT_709_f = 0x3, /* BT.709_f */
83 dein_mode_bypass_dis = 0x0,
85 dein_mode_I4O1B = 0x2,
86 dein_mode_I4O1T = 0x3,
87 dein_mode_I2O1B = 0x4,
88 dein_mode_I2O1T = 0x5,
89 dein_mode_bypass = 0x6,
92 enum IEP_FIELD_ORDER {
93 FIELD_ORDER_TOP_FIRST,
94 FIELD_ORDER_BOTTOM_FIRST
97 enum IEP_YUV_DEINTERLACE_MODE {
98 IEP_DEINTERLACE_MODE_DISABLE,
99 IEP_DEINTERLACE_MODE_I2O1,
100 IEP_DEINTERLACE_MODE_I4O1,
101 IEP_DEINTERLACE_MODE_I4O2,
102 IEP_DEINTERLACE_MODE_BYPASS
106 rgb_enhance_bypass = 0x0,
107 rgb_enhance_denoise = 0x1,
108 rgb_enhance_detail = 0x2,
109 rgb_enhance_edge = 0x3,
110 };/* for rgb_enhance_mode */
113 rgb_contrast_CC_P_DDE = 0x0, /* cg prior to dde */
114 rgb_contrast_DDE_P_CC = 0x1, /* dde prior to cg */
115 }; /* for rgb_contrast_enhance_mode */
122 }; /* for video mode */
126 { 4, 32, {{32,24, 24,16, 16, 8, 8, 0 }}, GGL_RGBA }, IEP_FORMAT_ARGB_8888
127 { 4, 32, {{32,24, 8, 0, 16, 8, 24,16 }}, GGL_RGB }, IEP_FORMAT_ABGR_8888
128 { 4, 32, {{ 8, 0, 32,24, 24,16, 16, 8 }}, GGL_RGB }, IEP_FORMAT_RGBA_8888
129 { 4, 32, {{ 8, 0, 16, 8, 24,16, 32,24 }}, GGL_BGRA }, IEP_FORMAT_BGRA_8888
130 { 2, 16, {{ 0, 0, 16,11, 11, 5, 5, 0 }}, GGL_RGB }, IEP_FORMAT_RGB_565
131 { 2, 16, {{ 0, 0, 5, 0, 11, 5, 16,11 }}, GGL_RGB }, IEP_FORMAT_RGB_565
134 IEP_FORMAT_ARGB_8888 = 0x0,
135 IEP_FORMAT_ABGR_8888 = 0x1,
136 IEP_FORMAT_RGBA_8888 = 0x2,
137 IEP_FORMAT_BGRA_8888 = 0x3,
138 IEP_FORMAT_RGB_565 = 0x4,
139 IEP_FORMAT_BGR_565 = 0x5,
141 IEP_FORMAT_YCbCr_422_SP = 0x10,
142 IEP_FORMAT_YCbCr_422_P = 0x11,
143 IEP_FORMAT_YCbCr_420_SP = 0x12,
144 IEP_FORMAT_YCbCr_420_P = 0x13,
145 IEP_FORMAT_YCrCb_422_SP = 0x14,
146 IEP_FORMAT_YCrCb_422_P = 0x15,/* same as IEP_FORMAT_YCbCr_422_P */
147 IEP_FORMAT_YCrCb_420_SP = 0x16,
148 IEP_FORMAT_YCrCb_420_P = 0x17,/* same as IEP_FORMAT_YCbCr_420_P */
153 u16 act_w; /* act_width */
154 u16 act_h; /* act_height */
155 s16 x_off; /* x offset for the vir,word unit */
156 s16 y_off; /* y offset for the vir,word unit */
158 u16 vir_w; /* unit :pix */
159 u16 vir_h; /* unit :pix */
165 u8 rb_swap; /* not be used */
166 u8 uv_swap; /* not be used */
168 u8 alpha_swap; /* not be used */
179 struct iep_img src_itemp;
180 struct iep_img src_ftemp;
182 struct iep_img dst_itemp;
183 struct iep_img dst_ftemp;
186 u8 dither_down_en;/* not to be used */
191 u8 global_alpha_value;
203 u8 yuv_3D_denoise_en;
205 /* yuv color enhance */
211 s8 yuv_enh_brightness; /*-32<brightness<31*/
212 u8 video_mode; /*0-3*/
213 u8 color_bar_y; /*0-127*/
214 u8 color_bar_u; /*0-127*/
215 u8 color_bar_v; /*0-127*/
218 u8 rgb_enhance_en;/*i don't konw what is used*/
220 u8 rgb_color_enhance_en;/*sw_rgb_color_enh_en*/
223 u8 rgb_enhance_mode;/*sw_rgb_enh_sel,dde sel*/
225 u8 rgb_cg_en;/*sw_rgb_con_gam_en*/
228 /*sw_con_gam_order;0 cg prior to dde,1 dde prior to cg*/
229 u8 rgb_contrast_enhance_mode;
241 u8 dein_high_fre_fct;
246 u8 dein_ei_radius;/*when dein_ei_sel=0 will be used*/