2 * Copyright (C) STMicroelectronics SA 2014
3 * Authors: Fabien Dessenne <fabien.dessenne@st.com> for STMicroelectronics.
4 * License terms: GNU General Public License (GPL), version 2
11 * struct bdisp_filter_h_spec - Horizontal filter specification
13 * @min: min scale factor for this filter (6.10 fixed point)
14 * @max: max scale factor for this filter (6.10 fixed point)
15 * coef: filter coefficients
17 struct bdisp_filter_h_spec
{
20 const u8 coef
[BDISP_HF_NB
];
23 static const struct bdisp_filter_h_spec bdisp_h_spec
[] = {
28 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
29 0x00, 0x00, 0xff, 0x07, 0x3d, 0xfc, 0x01, 0x00,
30 0x00, 0x01, 0xfd, 0x11, 0x36, 0xf9, 0x02, 0x00,
31 0x00, 0x01, 0xfb, 0x1b, 0x2e, 0xf9, 0x02, 0x00,
32 0x00, 0x01, 0xf9, 0x26, 0x26, 0xf9, 0x01, 0x00,
33 0x00, 0x02, 0xf9, 0x30, 0x19, 0xfb, 0x01, 0x00,
34 0x00, 0x02, 0xf9, 0x39, 0x0e, 0xfd, 0x01, 0x00,
35 0x00, 0x01, 0xfc, 0x3e, 0x06, 0xff, 0x00, 0x00
42 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
43 0xff, 0x03, 0xfd, 0x08, 0x3e, 0xf9, 0x04, 0xfe,
44 0xfd, 0x06, 0xf8, 0x13, 0x3b, 0xf4, 0x07, 0xfc,
45 0xfb, 0x08, 0xf5, 0x1f, 0x34, 0xf1, 0x09, 0xfb,
46 0xfb, 0x09, 0xf2, 0x2b, 0x2a, 0xf1, 0x09, 0xfb,
47 0xfb, 0x09, 0xf2, 0x35, 0x1e, 0xf4, 0x08, 0xfb,
48 0xfc, 0x07, 0xf5, 0x3c, 0x12, 0xf7, 0x06, 0xfd,
49 0xfe, 0x04, 0xfa, 0x3f, 0x07, 0xfc, 0x03, 0xff
56 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
57 0xff, 0x03, 0xfd, 0x08, 0x3e, 0xf9, 0x04, 0xfe,
58 0xfd, 0x06, 0xf8, 0x13, 0x3b, 0xf4, 0x07, 0xfc,
59 0xfb, 0x08, 0xf5, 0x1f, 0x34, 0xf1, 0x09, 0xfb,
60 0xfb, 0x09, 0xf2, 0x2b, 0x2a, 0xf1, 0x09, 0xfb,
61 0xfb, 0x09, 0xf2, 0x35, 0x1e, 0xf4, 0x08, 0xfb,
62 0xfc, 0x07, 0xf5, 0x3c, 0x12, 0xf7, 0x06, 0xfd,
63 0xfe, 0x04, 0xfa, 0x3f, 0x07, 0xfc, 0x03, 0xff
70 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
71 0xff, 0x03, 0xfd, 0x08, 0x3e, 0xf9, 0x04, 0xfe,
72 0xfd, 0x06, 0xf8, 0x13, 0x3b, 0xf4, 0x07, 0xfc,
73 0xfb, 0x08, 0xf5, 0x1f, 0x34, 0xf1, 0x09, 0xfb,
74 0xfb, 0x09, 0xf2, 0x2b, 0x2a, 0xf1, 0x09, 0xfb,
75 0xfb, 0x09, 0xf2, 0x35, 0x1e, 0xf4, 0x08, 0xfb,
76 0xfc, 0x07, 0xf5, 0x3c, 0x12, 0xf7, 0x06, 0xfd,
77 0xfe, 0x04, 0xfa, 0x3f, 0x07, 0xfc, 0x03, 0xff
84 0xfd, 0x04, 0xfc, 0x05, 0x39, 0x05, 0xfc, 0x04,
85 0xfc, 0x06, 0xf9, 0x0c, 0x39, 0xfe, 0x00, 0x02,
86 0xfb, 0x08, 0xf6, 0x17, 0x35, 0xf9, 0x02, 0x00,
87 0xfc, 0x08, 0xf4, 0x20, 0x30, 0xf4, 0x05, 0xff,
88 0xfd, 0x07, 0xf4, 0x29, 0x28, 0xf3, 0x07, 0xfd,
89 0xff, 0x05, 0xf5, 0x31, 0x1f, 0xf3, 0x08, 0xfc,
90 0x00, 0x02, 0xf9, 0x38, 0x14, 0xf6, 0x08, 0xfb,
91 0x02, 0x00, 0xff, 0x3a, 0x0b, 0xf8, 0x06, 0xfc
98 0xfc, 0x06, 0xf9, 0x09, 0x34, 0x09, 0xf9, 0x06,
99 0xfd, 0x07, 0xf7, 0x10, 0x32, 0x02, 0xfc, 0x05,
100 0xfe, 0x07, 0xf6, 0x17, 0x2f, 0xfc, 0xff, 0x04,
101 0xff, 0x06, 0xf5, 0x20, 0x2a, 0xf9, 0x01, 0x02,
102 0x00, 0x04, 0xf6, 0x27, 0x25, 0xf6, 0x04, 0x00,
103 0x02, 0x01, 0xf9, 0x2d, 0x1d, 0xf5, 0x06, 0xff,
104 0x04, 0xff, 0xfd, 0x31, 0x15, 0xf5, 0x07, 0xfe,
105 0x05, 0xfc, 0x02, 0x35, 0x0d, 0xf7, 0x07, 0xfd
112 0xfe, 0x06, 0xf8, 0x0b, 0x30, 0x0b, 0xf8, 0x06,
113 0xff, 0x06, 0xf7, 0x12, 0x2d, 0x05, 0xfa, 0x06,
114 0x00, 0x04, 0xf6, 0x18, 0x2c, 0x00, 0xfc, 0x06,
115 0x01, 0x02, 0xf7, 0x1f, 0x27, 0xfd, 0xff, 0x04,
116 0x03, 0x00, 0xf9, 0x24, 0x24, 0xf9, 0x00, 0x03,
117 0x04, 0xff, 0xfd, 0x29, 0x1d, 0xf7, 0x02, 0x01,
118 0x06, 0xfc, 0x00, 0x2d, 0x17, 0xf6, 0x04, 0x00,
119 0x06, 0xfa, 0x05, 0x30, 0x0f, 0xf7, 0x06, 0xff
126 0x05, 0xfd, 0xfb, 0x13, 0x25, 0x13, 0xfb, 0xfd,
127 0x05, 0xfc, 0xfd, 0x17, 0x24, 0x0f, 0xf9, 0xff,
128 0x04, 0xfa, 0xff, 0x1b, 0x24, 0x0b, 0xf9, 0x00,
129 0x03, 0xf9, 0x01, 0x1f, 0x23, 0x08, 0xf8, 0x01,
130 0x02, 0xf9, 0x04, 0x22, 0x20, 0x04, 0xf9, 0x02,
131 0x01, 0xf8, 0x08, 0x25, 0x1d, 0x01, 0xf9, 0x03,
132 0x00, 0xf9, 0x0c, 0x25, 0x1a, 0xfe, 0xfa, 0x04,
133 0xff, 0xf9, 0x10, 0x26, 0x15, 0xfc, 0xfc, 0x05
140 0xfc, 0xfd, 0x06, 0x13, 0x18, 0x13, 0x06, 0xfd,
141 0xfc, 0xfe, 0x08, 0x15, 0x17, 0x12, 0x04, 0xfc,
142 0xfb, 0xfe, 0x0a, 0x16, 0x18, 0x10, 0x03, 0xfc,
143 0xfb, 0x00, 0x0b, 0x18, 0x17, 0x0f, 0x01, 0xfb,
144 0xfb, 0x00, 0x0d, 0x19, 0x17, 0x0d, 0x00, 0xfb,
145 0xfb, 0x01, 0x0f, 0x19, 0x16, 0x0b, 0x00, 0xfb,
146 0xfc, 0x03, 0x11, 0x19, 0x15, 0x09, 0xfe, 0xfb,
147 0xfc, 0x04, 0x12, 0x1a, 0x12, 0x08, 0xfe, 0xfc
154 0xfe, 0x02, 0x09, 0x0f, 0x0e, 0x0f, 0x09, 0x02,
155 0xff, 0x02, 0x09, 0x0f, 0x10, 0x0e, 0x08, 0x01,
156 0xff, 0x03, 0x0a, 0x10, 0x10, 0x0d, 0x07, 0x00,
157 0x00, 0x04, 0x0b, 0x10, 0x0f, 0x0c, 0x06, 0x00,
158 0x00, 0x05, 0x0c, 0x10, 0x0e, 0x0c, 0x05, 0x00,
159 0x00, 0x06, 0x0c, 0x11, 0x0e, 0x0b, 0x04, 0x00,
160 0x00, 0x07, 0x0d, 0x11, 0x0f, 0x0a, 0x03, 0xff,
161 0x01, 0x08, 0x0e, 0x11, 0x0e, 0x09, 0x02, 0xff
168 0x00, 0x04, 0x09, 0x0c, 0x0e, 0x0c, 0x09, 0x04,
169 0x01, 0x05, 0x09, 0x0c, 0x0d, 0x0c, 0x08, 0x04,
170 0x01, 0x05, 0x0a, 0x0c, 0x0e, 0x0b, 0x08, 0x03,
171 0x02, 0x06, 0x0a, 0x0d, 0x0c, 0x0b, 0x07, 0x03,
172 0x02, 0x07, 0x0a, 0x0d, 0x0d, 0x0a, 0x07, 0x02,
173 0x03, 0x07, 0x0b, 0x0d, 0x0c, 0x0a, 0x06, 0x02,
174 0x03, 0x08, 0x0b, 0x0d, 0x0d, 0x0a, 0x05, 0x01,
175 0x04, 0x08, 0x0c, 0x0d, 0x0c, 0x09, 0x05, 0x01
182 0x03, 0x06, 0x09, 0x0b, 0x09, 0x0b, 0x09, 0x06,
183 0x03, 0x06, 0x09, 0x0b, 0x0c, 0x0a, 0x08, 0x05,
184 0x03, 0x06, 0x09, 0x0b, 0x0c, 0x0a, 0x08, 0x05,
185 0x04, 0x07, 0x09, 0x0b, 0x0b, 0x0a, 0x08, 0x04,
186 0x04, 0x07, 0x0a, 0x0b, 0x0b, 0x0a, 0x07, 0x04,
187 0x04, 0x08, 0x0a, 0x0b, 0x0b, 0x09, 0x07, 0x04,
188 0x05, 0x08, 0x0a, 0x0b, 0x0c, 0x09, 0x06, 0x03,
189 0x05, 0x08, 0x0a, 0x0b, 0x0c, 0x09, 0x06, 0x03
195 * struct bdisp_filter_v_spec - Vertical filter specification
197 * @min: min scale factor for this filter (6.10 fixed point)
198 * @max: max scale factor for this filter (6.10 fixed point)
199 * coef: filter coefficients
201 struct bdisp_filter_v_spec
{
204 const u8 coef
[BDISP_VF_NB
];
207 static const struct bdisp_filter_v_spec bdisp_v_spec
[] = {
212 0x00, 0x00, 0x40, 0x00, 0x00,
213 0x00, 0x06, 0x3d, 0xfd, 0x00,
214 0xfe, 0x0f, 0x38, 0xfb, 0x00,
215 0xfd, 0x19, 0x2f, 0xfb, 0x00,
216 0xfc, 0x24, 0x24, 0xfc, 0x00,
217 0xfb, 0x2f, 0x19, 0xfd, 0x00,
218 0xfb, 0x38, 0x0f, 0xfe, 0x00,
219 0xfd, 0x3d, 0x06, 0x00, 0x00
226 0xfc, 0x05, 0x3e, 0x05, 0xfc,
227 0xf8, 0x0e, 0x3b, 0xff, 0x00,
228 0xf5, 0x18, 0x38, 0xf9, 0x02,
229 0xf4, 0x21, 0x31, 0xf5, 0x05,
230 0xf4, 0x2a, 0x27, 0xf4, 0x07,
231 0xf6, 0x30, 0x1e, 0xf4, 0x08,
232 0xf9, 0x35, 0x15, 0xf6, 0x07,
233 0xff, 0x37, 0x0b, 0xf9, 0x06
240 0xf8, 0x0a, 0x3c, 0x0a, 0xf8,
241 0xf6, 0x12, 0x3b, 0x02, 0xfb,
242 0xf4, 0x1b, 0x35, 0xfd, 0xff,
243 0xf4, 0x23, 0x30, 0xf8, 0x01,
244 0xf6, 0x29, 0x27, 0xf6, 0x04,
245 0xf9, 0x2e, 0x1e, 0xf5, 0x06,
246 0xfd, 0x31, 0x16, 0xf6, 0x06,
247 0x02, 0x32, 0x0d, 0xf8, 0x07
254 0xf6, 0x0e, 0x38, 0x0e, 0xf6,
255 0xf5, 0x15, 0x38, 0x06, 0xf8,
256 0xf5, 0x1d, 0x33, 0x00, 0xfb,
257 0xf6, 0x23, 0x2d, 0xfc, 0xfe,
258 0xf9, 0x28, 0x26, 0xf9, 0x00,
259 0xfc, 0x2c, 0x1e, 0xf7, 0x03,
260 0x00, 0x2e, 0x18, 0xf6, 0x04,
261 0x05, 0x2e, 0x11, 0xf7, 0x05
268 0xfb, 0x13, 0x24, 0x13, 0xfb,
269 0xfd, 0x17, 0x23, 0x0f, 0xfa,
270 0xff, 0x1a, 0x23, 0x0b, 0xf9,
271 0x01, 0x1d, 0x22, 0x07, 0xf9,
272 0x04, 0x20, 0x1f, 0x04, 0xf9,
273 0x07, 0x22, 0x1c, 0x01, 0xfa,
274 0x0b, 0x24, 0x17, 0xff, 0xfb,
275 0x0f, 0x24, 0x14, 0xfd, 0xfc
282 0x05, 0x10, 0x16, 0x10, 0x05,
283 0x06, 0x11, 0x16, 0x0f, 0x04,
284 0x08, 0x13, 0x15, 0x0e, 0x02,
285 0x09, 0x14, 0x16, 0x0c, 0x01,
286 0x0b, 0x15, 0x15, 0x0b, 0x00,
287 0x0d, 0x16, 0x13, 0x0a, 0x00,
288 0x0f, 0x17, 0x13, 0x08, 0xff,
289 0x11, 0x18, 0x12, 0x07, 0xfe
296 0x09, 0x0f, 0x10, 0x0f, 0x09,
297 0x09, 0x0f, 0x12, 0x0e, 0x08,
298 0x0a, 0x10, 0x11, 0x0e, 0x07,
299 0x0b, 0x11, 0x11, 0x0d, 0x06,
300 0x0c, 0x11, 0x12, 0x0c, 0x05,
301 0x0d, 0x12, 0x11, 0x0c, 0x04,
302 0x0e, 0x12, 0x11, 0x0b, 0x04,
303 0x0f, 0x13, 0x11, 0x0a, 0x03
310 0x0a, 0x0e, 0x10, 0x0e, 0x0a,
311 0x0b, 0x0e, 0x0f, 0x0e, 0x0a,
312 0x0b, 0x0f, 0x10, 0x0d, 0x09,
313 0x0c, 0x0f, 0x10, 0x0d, 0x08,
314 0x0d, 0x0f, 0x0f, 0x0d, 0x08,
315 0x0d, 0x10, 0x10, 0x0c, 0x07,
316 0x0e, 0x10, 0x0f, 0x0c, 0x07,
317 0x0f, 0x10, 0x10, 0x0b, 0x06
324 0x0b, 0x0e, 0x0e, 0x0e, 0x0b,
325 0x0b, 0x0e, 0x0f, 0x0d, 0x0b,
326 0x0c, 0x0e, 0x0f, 0x0d, 0x0a,
327 0x0c, 0x0e, 0x0f, 0x0d, 0x0a,
328 0x0d, 0x0f, 0x0e, 0x0d, 0x09,
329 0x0d, 0x0f, 0x0f, 0x0c, 0x09,
330 0x0e, 0x0f, 0x0e, 0x0c, 0x09,
331 0x0e, 0x0f, 0x0f, 0x0c, 0x08
336 #define NB_H_FILTER ARRAY_SIZE(bdisp_h_spec)
337 #define NB_V_FILTER ARRAY_SIZE(bdisp_v_spec)
339 /* RGB YUV 601 standard conversion */
340 static const u32 bdisp_rgb_to_yuv
[] = {
341 0x0e1e8bee, 0x08420419, 0xfb5ed471, 0x08004080,
344 static const u32 bdisp_yuv_to_rgb
[] = {
345 0x3324a800, 0xe604ab9c, 0x0004a957, 0x32121eeb,