xref: /linux/drivers/gpu/drm/amd/display/dc/spl/dc_spl_scl_easf_filters.c (revision 3a39d672e7f48b8d6b91a09afa4b55352773b4b5)
1 // SPDX-License-Identifier: MIT
2 //
3 // Copyright 2024 Advanced Micro Devices, Inc.
4 
5 #include "spl_debug.h"
6 #include "dc_spl_filters.h"
7 #include "dc_spl_scl_filters.h"
8 #include "dc_spl_scl_easf_filters.h"
9 
10 //========================================================
11 // <using>			gen_scaler_coeffs_cnf_file.m
12 // <using>			make_test_script.m
13 // <date>			03-Apr-2024
14 // <coeffDescrip>	3t_64p_LanczosEd_p_0.3_p_10qb_
15 // <num_taps>		3
16 // <num_phases>		64
17 // <scale_ratio>	 input/output = 0.300000000000
18 // <CoefType>		LanczosEd
19 // <CoefQuant>		S1.10
20 //========================================================
21 static const uint16_t easf_filter_3tap_64p_ratio_0_30[99] = {
22 	0x0200, 0x0200, 0x0000,
23 	0x01F6, 0x0206, 0x0004,
24 	0x01EC, 0x020B, 0x0009,
25 	0x01E2, 0x0211, 0x000D,
26 	0x01D8, 0x0216, 0x0012,
27 	0x01CE, 0x021C, 0x0016,
28 	0x01C4, 0x0221, 0x001B,
29 	0x01BA, 0x0226, 0x0020,
30 	0x01B0, 0x022A, 0x0026,
31 	0x01A6, 0x022F, 0x002B,
32 	0x019C, 0x0233, 0x0031,
33 	0x0192, 0x0238, 0x0036,
34 	0x0188, 0x023C, 0x003C,
35 	0x017E, 0x0240, 0x0042,
36 	0x0174, 0x0244, 0x0048,
37 	0x016A, 0x0248, 0x004E,
38 	0x0161, 0x024A, 0x0055,
39 	0x0157, 0x024E, 0x005B,
40 	0x014D, 0x0251, 0x0062,
41 	0x0144, 0x0253, 0x0069,
42 	0x013A, 0x0256, 0x0070,
43 	0x0131, 0x0258, 0x0077,
44 	0x0127, 0x025B, 0x007E,
45 	0x011E, 0x025C, 0x0086,
46 	0x0115, 0x025E, 0x008D,
47 	0x010B, 0x0260, 0x0095,
48 	0x0102, 0x0262, 0x009C,
49 	0x00F9, 0x0263, 0x00A4,
50 	0x00F0, 0x0264, 0x00AC,
51 	0x00E7, 0x0265, 0x00B4,
52 	0x00DF, 0x0264, 0x00BD,
53 	0x00D6, 0x0265, 0x00C5,
54 	0x00CD, 0x0266, 0x00CD,
55 };
56 
57 //========================================================
58 // <using>			gen_scaler_coeffs_cnf_file.m
59 // <using>			make_test_script.m
60 // <date>			03-Apr-2024
61 // <coeffDescrip>	3t_64p_LanczosEd_p_0.4_p_10qb_
62 // <num_taps>		3
63 // <num_phases>		64
64 // <scale_ratio>	 input/output = 0.400000000000
65 // <CoefType>		LanczosEd
66 // <CoefQuant>		S1.10
67 //========================================================
68 static const uint16_t easf_filter_3tap_64p_ratio_0_40[99] = {
69 	0x0200, 0x0200, 0x0000,
70 	0x01F6, 0x0206, 0x0004,
71 	0x01EB, 0x020E, 0x0007,
72 	0x01E1, 0x0214, 0x000B,
73 	0x01D7, 0x021A, 0x000F,
74 	0x01CD, 0x0220, 0x0013,
75 	0x01C2, 0x0226, 0x0018,
76 	0x01B8, 0x022C, 0x001C,
77 	0x01AE, 0x0231, 0x0021,
78 	0x01A3, 0x0237, 0x0026,
79 	0x0199, 0x023C, 0x002B,
80 	0x018F, 0x0240, 0x0031,
81 	0x0185, 0x0245, 0x0036,
82 	0x017A, 0x024A, 0x003C,
83 	0x0170, 0x024F, 0x0041,
84 	0x0166, 0x0253, 0x0047,
85 	0x015C, 0x0257, 0x004D,
86 	0x0152, 0x025A, 0x0054,
87 	0x0148, 0x025E, 0x005A,
88 	0x013E, 0x0261, 0x0061,
89 	0x0134, 0x0264, 0x0068,
90 	0x012B, 0x0266, 0x006F,
91 	0x0121, 0x0269, 0x0076,
92 	0x0117, 0x026C, 0x007D,
93 	0x010E, 0x026E, 0x0084,
94 	0x0104, 0x0270, 0x008C,
95 	0x00FB, 0x0271, 0x0094,
96 	0x00F2, 0x0272, 0x009C,
97 	0x00E9, 0x0273, 0x00A4,
98 	0x00E0, 0x0274, 0x00AC,
99 	0x00D7, 0x0275, 0x00B4,
100 	0x00CE, 0x0275, 0x00BD,
101 	0x00C5, 0x0276, 0x00C5,
102 };
103 
104 //========================================================
105 // <using>			gen_scaler_coeffs_cnf_file.m
106 // <using>			make_test_script.m
107 // <date>			03-Apr-2024
108 // <coeffDescrip>	3t_64p_LanczosEd_p_0.5_p_10qb_
109 // <num_taps>		3
110 // <num_phases>		64
111 // <scale_ratio>	 input/output = 0.500000000000
112 // <CoefType>		LanczosEd
113 // <CoefQuant>		S1.10
114 //========================================================
115 static const uint16_t easf_filter_3tap_64p_ratio_0_50[99] = {
116 	0x0200, 0x0200, 0x0000,
117 	0x01F5, 0x0209, 0x0002,
118 	0x01EA, 0x0211, 0x0005,
119 	0x01DF, 0x021A, 0x0007,
120 	0x01D4, 0x0222, 0x000A,
121 	0x01C9, 0x022A, 0x000D,
122 	0x01BE, 0x0232, 0x0010,
123 	0x01B3, 0x0239, 0x0014,
124 	0x01A8, 0x0241, 0x0017,
125 	0x019D, 0x0248, 0x001B,
126 	0x0192, 0x024F, 0x001F,
127 	0x0187, 0x0255, 0x0024,
128 	0x017C, 0x025C, 0x0028,
129 	0x0171, 0x0262, 0x002D,
130 	0x0166, 0x0268, 0x0032,
131 	0x015B, 0x026E, 0x0037,
132 	0x0150, 0x0273, 0x003D,
133 	0x0146, 0x0278, 0x0042,
134 	0x013B, 0x027D, 0x0048,
135 	0x0130, 0x0282, 0x004E,
136 	0x0126, 0x0286, 0x0054,
137 	0x011B, 0x028A, 0x005B,
138 	0x0111, 0x028D, 0x0062,
139 	0x0107, 0x0290, 0x0069,
140 	0x00FD, 0x0293, 0x0070,
141 	0x00F3, 0x0296, 0x0077,
142 	0x00E9, 0x0298, 0x007F,
143 	0x00DF, 0x029A, 0x0087,
144 	0x00D5, 0x029C, 0x008F,
145 	0x00CC, 0x029D, 0x0097,
146 	0x00C3, 0x029E, 0x009F,
147 	0x00BA, 0x029E, 0x00A8,
148 	0x00B1, 0x029E, 0x00B1,
149 };
150 
151 //========================================================
152 // <using>			gen_scaler_coeffs_cnf_file.m
153 // <using>			make_test_script.m
154 // <date>			03-Apr-2024
155 // <coeffDescrip>	3t_64p_LanczosEd_p_0.6_p_10qb_
156 // <num_taps>		3
157 // <num_phases>		64
158 // <scale_ratio>	 input/output = 0.600000000000
159 // <CoefType>		LanczosEd
160 // <CoefQuant>		S1.10
161 //========================================================
162 static const uint16_t easf_filter_3tap_64p_ratio_0_60[99] = {
163 	0x0200, 0x0200, 0x0000,
164 	0x01F4, 0x020B, 0x0001,
165 	0x01E8, 0x0216, 0x0002,
166 	0x01DC, 0x0221, 0x0003,
167 	0x01D0, 0x022B, 0x0005,
168 	0x01C4, 0x0235, 0x0007,
169 	0x01B8, 0x0240, 0x0008,
170 	0x01AC, 0x0249, 0x000B,
171 	0x01A0, 0x0253, 0x000D,
172 	0x0194, 0x025C, 0x0010,
173 	0x0188, 0x0265, 0x0013,
174 	0x017C, 0x026E, 0x0016,
175 	0x0170, 0x0277, 0x0019,
176 	0x0164, 0x027F, 0x001D,
177 	0x0158, 0x0287, 0x0021,
178 	0x014C, 0x028F, 0x0025,
179 	0x0140, 0x0297, 0x0029,
180 	0x0135, 0x029D, 0x002E,
181 	0x0129, 0x02A4, 0x0033,
182 	0x011D, 0x02AB, 0x0038,
183 	0x0112, 0x02B0, 0x003E,
184 	0x0107, 0x02B5, 0x0044,
185 	0x00FC, 0x02BA, 0x004A,
186 	0x00F1, 0x02BF, 0x0050,
187 	0x00E6, 0x02C3, 0x0057,
188 	0x00DB, 0x02C7, 0x005E,
189 	0x00D1, 0x02CA, 0x0065,
190 	0x00C7, 0x02CC, 0x006D,
191 	0x00BD, 0x02CE, 0x0075,
192 	0x00B3, 0x02D0, 0x007D,
193 	0x00A9, 0x02D2, 0x0085,
194 	0x00A0, 0x02D2, 0x008E,
195 	0x0097, 0x02D2, 0x0097,
196 };
197 
198 //========================================================
199 // <using>			gen_scaler_coeffs_cnf_file.m
200 // <using>			make_test_script.m
201 // <date>			03-Apr-2024
202 // <coeffDescrip>	3t_64p_LanczosEd_p_0.7_p_10qb_
203 // <num_taps>		3
204 // <num_phases>		64
205 // <scale_ratio>	 input/output = 0.700000000000
206 // <CoefType>		LanczosEd
207 // <CoefQuant>		S1.10
208 //========================================================
209 static const uint16_t easf_filter_3tap_64p_ratio_0_70[99] = {
210 	0x0200, 0x0200, 0x0000,
211 	0x01F3, 0x020D, 0x0000,
212 	0x01E5, 0x021B, 0x0000,
213 	0x01D8, 0x0228, 0x0000,
214 	0x01CB, 0x0235, 0x0000,
215 	0x01BD, 0x0243, 0x0000,
216 	0x01B0, 0x024F, 0x0001,
217 	0x01A2, 0x025C, 0x0002,
218 	0x0195, 0x0268, 0x0003,
219 	0x0187, 0x0275, 0x0004,
220 	0x017A, 0x0280, 0x0006,
221 	0x016D, 0x028C, 0x0007,
222 	0x015F, 0x0298, 0x0009,
223 	0x0152, 0x02A2, 0x000C,
224 	0x0145, 0x02AD, 0x000E,
225 	0x0138, 0x02B7, 0x0011,
226 	0x012B, 0x02C0, 0x0015,
227 	0x011E, 0x02CA, 0x0018,
228 	0x0111, 0x02D3, 0x001C,
229 	0x0105, 0x02DB, 0x0020,
230 	0x00F8, 0x02E3, 0x0025,
231 	0x00EC, 0x02EA, 0x002A,
232 	0x00E0, 0x02F1, 0x002F,
233 	0x00D5, 0x02F6, 0x0035,
234 	0x00C9, 0x02FC, 0x003B,
235 	0x00BE, 0x0301, 0x0041,
236 	0x00B3, 0x0305, 0x0048,
237 	0x00A8, 0x0309, 0x004F,
238 	0x009E, 0x030C, 0x0056,
239 	0x0094, 0x030E, 0x005E,
240 	0x008A, 0x0310, 0x0066,
241 	0x0081, 0x0310, 0x006F,
242 	0x0077, 0x0312, 0x0077,
243 };
244 
245 //========================================================
246 // <using>			gen_scaler_coeffs_cnf_file.m
247 // <using>			make_test_script.m
248 // <date>			03-Apr-2024
249 // <coeffDescrip>	3t_64p_LanczosEd_p_0.8_p_10qb_
250 // <num_taps>		3
251 // <num_phases>		64
252 // <scale_ratio>	 input/output = 0.800000000000
253 // <CoefType>		LanczosEd
254 // <CoefQuant>		S1.10
255 //========================================================
256 static const uint16_t easf_filter_3tap_64p_ratio_0_80[99] = {
257 	0x0200, 0x0200, 0x0000,
258 	0x01F1, 0x0210, 0x0FFF,
259 	0x01E2, 0x0220, 0x0FFE,
260 	0x01D2, 0x0232, 0x0FFC,
261 	0x01C3, 0x0241, 0x0FFC,
262 	0x01B4, 0x0251, 0x0FFB,
263 	0x01A4, 0x0262, 0x0FFA,
264 	0x0195, 0x0271, 0x0FFA,
265 	0x0186, 0x0281, 0x0FF9,
266 	0x0176, 0x0291, 0x0FF9,
267 	0x0167, 0x02A0, 0x0FF9,
268 	0x0158, 0x02AE, 0x0FFA,
269 	0x0149, 0x02BD, 0x0FFA,
270 	0x013A, 0x02CB, 0x0FFB,
271 	0x012C, 0x02D7, 0x0FFD,
272 	0x011D, 0x02E5, 0x0FFE,
273 	0x010F, 0x02F1, 0x0000,
274 	0x0101, 0x02FD, 0x0002,
275 	0x00F3, 0x0308, 0x0005,
276 	0x00E5, 0x0313, 0x0008,
277 	0x00D8, 0x031D, 0x000B,
278 	0x00CB, 0x0326, 0x000F,
279 	0x00BE, 0x032F, 0x0013,
280 	0x00B2, 0x0337, 0x0017,
281 	0x00A6, 0x033E, 0x001C,
282 	0x009A, 0x0345, 0x0021,
283 	0x008F, 0x034A, 0x0027,
284 	0x0084, 0x034F, 0x002D,
285 	0x0079, 0x0353, 0x0034,
286 	0x006F, 0x0356, 0x003B,
287 	0x0065, 0x0358, 0x0043,
288 	0x005C, 0x0359, 0x004B,
289 	0x0053, 0x035A, 0x0053,
290 };
291 
292 //========================================================
293 // <using>			gen_scaler_coeffs_cnf_file.m
294 // <using>			make_test_script.m
295 // <date>			03-Apr-2024
296 // <coeffDescrip>	3t_64p_LanczosEd_p_0.9_p_10qb_
297 // <num_taps>		3
298 // <num_phases>		64
299 // <scale_ratio>	 input/output = 0.900000000000
300 // <CoefType>		LanczosEd
301 // <CoefQuant>		S1.10
302 //========================================================
303 static const uint16_t easf_filter_3tap_64p_ratio_0_90[99] = {
304 	0x0200, 0x0200, 0x0000,
305 	0x01EE, 0x0214, 0x0FFE,
306 	0x01DC, 0x0228, 0x0FFC,
307 	0x01CA, 0x023C, 0x0FFA,
308 	0x01B9, 0x024F, 0x0FF8,
309 	0x01A7, 0x0262, 0x0FF7,
310 	0x0195, 0x0276, 0x0FF5,
311 	0x0183, 0x028A, 0x0FF3,
312 	0x0172, 0x029C, 0x0FF2,
313 	0x0160, 0x02AF, 0x0FF1,
314 	0x014F, 0x02C2, 0x0FEF,
315 	0x013E, 0x02D4, 0x0FEE,
316 	0x012D, 0x02E5, 0x0FEE,
317 	0x011C, 0x02F7, 0x0FED,
318 	0x010C, 0x0307, 0x0FED,
319 	0x00FB, 0x0318, 0x0FED,
320 	0x00EC, 0x0327, 0x0FED,
321 	0x00DC, 0x0336, 0x0FEE,
322 	0x00CD, 0x0344, 0x0FEF,
323 	0x00BE, 0x0352, 0x0FF0,
324 	0x00B0, 0x035E, 0x0FF2,
325 	0x00A2, 0x036A, 0x0FF4,
326 	0x0095, 0x0375, 0x0FF6,
327 	0x0088, 0x037F, 0x0FF9,
328 	0x007B, 0x0388, 0x0FFD,
329 	0x006F, 0x0391, 0x0000,
330 	0x0064, 0x0397, 0x0005,
331 	0x0059, 0x039D, 0x000A,
332 	0x004E, 0x03A3, 0x000F,
333 	0x0045, 0x03A6, 0x0015,
334 	0x003B, 0x03A9, 0x001C,
335 	0x0033, 0x03AA, 0x0023,
336 	0x002A, 0x03AC, 0x002A,
337 };
338 
339 //========================================================
340 // <using>			gen_scaler_coeffs_cnf_file.m
341 // <using>			make_test_script.m
342 // <date>			03-Apr-2024
343 // <coeffDescrip>	3t_64p_LanczosEd_p_1_p_10qb_
344 // <num_taps>		3
345 // <num_phases>		64
346 // <scale_ratio>	 input/output = 1.000000000000
347 // <CoefType>		LanczosEd
348 // <CoefQuant>		S1.10
349 //========================================================
350 static const uint16_t easf_filter_3tap_64p_ratio_1_00[99] = {
351 	0x0200, 0x0200, 0x0000,
352 	0x01EB, 0x0217, 0x0FFE,
353 	0x01D5, 0x022F, 0x0FFC,
354 	0x01C0, 0x0247, 0x0FF9,
355 	0x01AB, 0x025E, 0x0FF7,
356 	0x0196, 0x0276, 0x0FF4,
357 	0x0181, 0x028D, 0x0FF2,
358 	0x016C, 0x02A5, 0x0FEF,
359 	0x0158, 0x02BB, 0x0FED,
360 	0x0144, 0x02D1, 0x0FEB,
361 	0x0130, 0x02E8, 0x0FE8,
362 	0x011C, 0x02FE, 0x0FE6,
363 	0x0109, 0x0313, 0x0FE4,
364 	0x00F6, 0x0328, 0x0FE2,
365 	0x00E4, 0x033C, 0x0FE0,
366 	0x00D2, 0x034F, 0x0FDF,
367 	0x00C0, 0x0363, 0x0FDD,
368 	0x00B0, 0x0374, 0x0FDC,
369 	0x009F, 0x0385, 0x0FDC,
370 	0x0090, 0x0395, 0x0FDB,
371 	0x0081, 0x03A4, 0x0FDB,
372 	0x0072, 0x03B3, 0x0FDB,
373 	0x0064, 0x03C0, 0x0FDC,
374 	0x0057, 0x03CC, 0x0FDD,
375 	0x004B, 0x03D6, 0x0FDF,
376 	0x003F, 0x03E0, 0x0FE1,
377 	0x0034, 0x03E8, 0x0FE4,
378 	0x002A, 0x03EF, 0x0FE7,
379 	0x0020, 0x03F5, 0x0FEB,
380 	0x0017, 0x03FA, 0x0FEF,
381 	0x000F, 0x03FD, 0x0FF4,
382 	0x0007, 0x03FF, 0x0FFA,
383 	0x0000, 0x0400, 0x0000,
384 };
385 
386 //========================================================
387 // <using>			gen_scaler_coeffs_cnf_file.m
388 // <using>			make_test_script.m
389 // <date>			03-Apr-2024
390 // <coeffDescrip>	4t_64p_LanczosEd_p_0.3_p_10qb_
391 // <num_taps>		4
392 // <num_phases>		64
393 // <scale_ratio>	 input/output = 0.300000000000
394 // <CoefType>		LanczosEd
395 // <CoefQuant>		S1.10
396 //========================================================
397 static const uint16_t easf_filter_4tap_64p_ratio_0_30[132] = {
398 	0x0104, 0x01F8, 0x0104, 0x0000,
399 	0x00FE, 0x01F7, 0x010A, 0x0001,
400 	0x00F8, 0x01F6, 0x010F, 0x0003,
401 	0x00F2, 0x01F5, 0x0114, 0x0005,
402 	0x00EB, 0x01F4, 0x011B, 0x0006,
403 	0x00E5, 0x01F3, 0x0120, 0x0008,
404 	0x00DF, 0x01F2, 0x0125, 0x000A,
405 	0x00DA, 0x01F0, 0x012A, 0x000C,
406 	0x00D4, 0x01EE, 0x0130, 0x000E,
407 	0x00CE, 0x01ED, 0x0135, 0x0010,
408 	0x00C8, 0x01EB, 0x013A, 0x0013,
409 	0x00C2, 0x01E9, 0x0140, 0x0015,
410 	0x00BD, 0x01E7, 0x0145, 0x0017,
411 	0x00B7, 0x01E5, 0x014A, 0x001A,
412 	0x00B1, 0x01E2, 0x0151, 0x001C,
413 	0x00AC, 0x01E0, 0x0155, 0x001F,
414 	0x00A7, 0x01DD, 0x015A, 0x0022,
415 	0x00A1, 0x01DB, 0x015F, 0x0025,
416 	0x009C, 0x01D8, 0x0165, 0x0027,
417 	0x0097, 0x01D5, 0x016A, 0x002A,
418 	0x0092, 0x01D2, 0x016E, 0x002E,
419 	0x008C, 0x01CF, 0x0174, 0x0031,
420 	0x0087, 0x01CC, 0x0179, 0x0034,
421 	0x0083, 0x01C9, 0x017D, 0x0037,
422 	0x007E, 0x01C5, 0x0182, 0x003B,
423 	0x0079, 0x01C2, 0x0187, 0x003E,
424 	0x0074, 0x01BE, 0x018C, 0x0042,
425 	0x0070, 0x01BA, 0x0190, 0x0046,
426 	0x006B, 0x01B7, 0x0195, 0x0049,
427 	0x0066, 0x01B3, 0x019A, 0x004D,
428 	0x0062, 0x01AF, 0x019E, 0x0051,
429 	0x005E, 0x01AB, 0x01A2, 0x0055,
430 	0x005A, 0x01A6, 0x01A6, 0x005A,
431 };
432 
433 //========================================================
434 // <using>			gen_scaler_coeffs_cnf_file.m
435 // <using>			make_test_script.m
436 // <date>			03-Apr-2024
437 // <coeffDescrip>	4t_64p_LanczosEd_p_0.4_p_10qb_
438 // <num_taps>		4
439 // <num_phases>		64
440 // <scale_ratio>	 input/output = 0.400000000000
441 // <CoefType>		LanczosEd
442 // <CoefQuant>		S1.10
443 //========================================================
444 static const uint16_t easf_filter_4tap_64p_ratio_0_40[132] = {
445 	0x00FB, 0x0209, 0x00FC, 0x0000,
446 	0x00F5, 0x0209, 0x0101, 0x0001,
447 	0x00EE, 0x0208, 0x0108, 0x0002,
448 	0x00E8, 0x0207, 0x010E, 0x0003,
449 	0x00E2, 0x0206, 0x0114, 0x0004,
450 	0x00DB, 0x0205, 0x011A, 0x0006,
451 	0x00D5, 0x0204, 0x0120, 0x0007,
452 	0x00CF, 0x0203, 0x0125, 0x0009,
453 	0x00C9, 0x0201, 0x012C, 0x000A,
454 	0x00C3, 0x01FF, 0x0132, 0x000C,
455 	0x00BD, 0x01FD, 0x0138, 0x000E,
456 	0x00B7, 0x01FB, 0x013E, 0x0010,
457 	0x00B1, 0x01F9, 0x0144, 0x0012,
458 	0x00AC, 0x01F7, 0x0149, 0x0014,
459 	0x00A6, 0x01F4, 0x0150, 0x0016,
460 	0x00A0, 0x01F2, 0x0156, 0x0018,
461 	0x009B, 0x01EF, 0x015C, 0x001A,
462 	0x0095, 0x01EC, 0x0162, 0x001D,
463 	0x0090, 0x01E9, 0x0168, 0x001F,
464 	0x008B, 0x01E6, 0x016D, 0x0022,
465 	0x0085, 0x01E3, 0x0173, 0x0025,
466 	0x0080, 0x01DF, 0x0179, 0x0028,
467 	0x007B, 0x01DC, 0x017E, 0x002B,
468 	0x0076, 0x01D8, 0x0184, 0x002E,
469 	0x0071, 0x01D4, 0x018A, 0x0031,
470 	0x006D, 0x01D1, 0x018E, 0x0034,
471 	0x0068, 0x01CD, 0x0193, 0x0038,
472 	0x0063, 0x01C8, 0x019A, 0x003B,
473 	0x005F, 0x01C4, 0x019E, 0x003F,
474 	0x005B, 0x01C0, 0x01A3, 0x0042,
475 	0x0056, 0x01BB, 0x01A9, 0x0046,
476 	0x0052, 0x01B7, 0x01AD, 0x004A,
477 	0x004E, 0x01B2, 0x01B2, 0x004E,
478 };
479 
480 //========================================================
481 // <using>			gen_scaler_coeffs_cnf_file.m
482 // <using>			make_test_script.m
483 // <date>			03-Apr-2024
484 // <coeffDescrip>	4t_64p_LanczosEd_p_0.5_p_10qb_
485 // <num_taps>		4
486 // <num_phases>		64
487 // <scale_ratio>	 input/output = 0.500000000000
488 // <CoefType>		LanczosEd
489 // <CoefQuant>		S1.10
490 //========================================================
491 static const uint16_t easf_filter_4tap_64p_ratio_0_50[132] = {
492 	0x00E5, 0x0236, 0x00E5, 0x0000,
493 	0x00DE, 0x0235, 0x00ED, 0x0000,
494 	0x00D7, 0x0235, 0x00F4, 0x0000,
495 	0x00D0, 0x0235, 0x00FB, 0x0000,
496 	0x00C9, 0x0234, 0x0102, 0x0001,
497 	0x00C2, 0x0233, 0x010A, 0x0001,
498 	0x00BC, 0x0232, 0x0111, 0x0001,
499 	0x00B5, 0x0230, 0x0119, 0x0002,
500 	0x00AE, 0x022F, 0x0121, 0x0002,
501 	0x00A8, 0x022D, 0x0128, 0x0003,
502 	0x00A2, 0x022B, 0x012F, 0x0004,
503 	0x009B, 0x0229, 0x0137, 0x0005,
504 	0x0095, 0x0226, 0x013F, 0x0006,
505 	0x008F, 0x0224, 0x0146, 0x0007,
506 	0x0089, 0x0221, 0x014E, 0x0008,
507 	0x0083, 0x021E, 0x0155, 0x000A,
508 	0x007E, 0x021B, 0x015C, 0x000B,
509 	0x0078, 0x0217, 0x0164, 0x000D,
510 	0x0072, 0x0213, 0x016D, 0x000E,
511 	0x006D, 0x0210, 0x0173, 0x0010,
512 	0x0068, 0x020C, 0x017A, 0x0012,
513 	0x0063, 0x0207, 0x0182, 0x0014,
514 	0x005E, 0x0203, 0x0189, 0x0016,
515 	0x0059, 0x01FE, 0x0191, 0x0018,
516 	0x0054, 0x01F9, 0x0198, 0x001B,
517 	0x0050, 0x01F4, 0x019F, 0x001D,
518 	0x004B, 0x01EF, 0x01A6, 0x0020,
519 	0x0047, 0x01EA, 0x01AC, 0x0023,
520 	0x0043, 0x01E4, 0x01B3, 0x0026,
521 	0x003F, 0x01DF, 0x01B9, 0x0029,
522 	0x003B, 0x01D9, 0x01C0, 0x002C,
523 	0x0037, 0x01D3, 0x01C6, 0x0030,
524 	0x0033, 0x01CD, 0x01CD, 0x0033,
525 };
526 
527 //========================================================
528 // <using>			gen_scaler_coeffs_cnf_file.m
529 // <using>			make_test_script.m
530 // <date>			03-Apr-2024
531 // <coeffDescrip>	4t_64p_LanczosEd_p_0.6_p_10qb_
532 // <num_taps>		4
533 // <num_phases>		64
534 // <scale_ratio>	 input/output = 0.600000000000
535 // <CoefType>		LanczosEd
536 // <CoefQuant>		S1.10
537 //========================================================
538 static const uint16_t easf_filter_4tap_64p_ratio_0_60[132] = {
539 	0x00C8, 0x026F, 0x00C9, 0x0000,
540 	0x00C0, 0x0270, 0x00D1, 0x0FFF,
541 	0x00B8, 0x0270, 0x00D9, 0x0FFF,
542 	0x00B1, 0x0270, 0x00E1, 0x0FFE,
543 	0x00A9, 0x026F, 0x00EB, 0x0FFD,
544 	0x00A2, 0x026E, 0x00F3, 0x0FFD,
545 	0x009A, 0x026D, 0x00FD, 0x0FFC,
546 	0x0093, 0x026C, 0x0105, 0x0FFC,
547 	0x008C, 0x026A, 0x010F, 0x0FFB,
548 	0x0085, 0x0268, 0x0118, 0x0FFB,
549 	0x007E, 0x0265, 0x0122, 0x0FFB,
550 	0x0078, 0x0263, 0x012A, 0x0FFB,
551 	0x0071, 0x0260, 0x0134, 0x0FFB,
552 	0x006B, 0x025C, 0x013E, 0x0FFB,
553 	0x0065, 0x0259, 0x0147, 0x0FFB,
554 	0x005F, 0x0255, 0x0151, 0x0FFB,
555 	0x0059, 0x0251, 0x015A, 0x0FFC,
556 	0x0054, 0x024D, 0x0163, 0x0FFC,
557 	0x004E, 0x0248, 0x016D, 0x0FFD,
558 	0x0049, 0x0243, 0x0176, 0x0FFE,
559 	0x0044, 0x023E, 0x017F, 0x0FFF,
560 	0x003F, 0x0238, 0x0189, 0x0000,
561 	0x003A, 0x0232, 0x0193, 0x0001,
562 	0x0036, 0x022C, 0x019C, 0x0002,
563 	0x0031, 0x0226, 0x01A5, 0x0004,
564 	0x002D, 0x021F, 0x01AF, 0x0005,
565 	0x0029, 0x0218, 0x01B8, 0x0007,
566 	0x0025, 0x0211, 0x01C1, 0x0009,
567 	0x0022, 0x020A, 0x01C9, 0x000B,
568 	0x001E, 0x0203, 0x01D2, 0x000D,
569 	0x001B, 0x01FB, 0x01DA, 0x0010,
570 	0x0018, 0x01F3, 0x01E3, 0x0012,
571 	0x0015, 0x01EB, 0x01EB, 0x0015,
572 };
573 
574 //========================================================
575 // <using>			gen_scaler_coeffs_cnf_file.m
576 // <using>			make_test_script.m
577 // <date>			03-Apr-2024
578 // <coeffDescrip>	4t_64p_LanczosEd_p_0.7_p_10qb_
579 // <num_taps>		4
580 // <num_phases>		64
581 // <scale_ratio>	 input/output = 0.700000000000
582 // <CoefType>		LanczosEd
583 // <CoefQuant>		S1.10
584 //========================================================
585 static const uint16_t easf_filter_4tap_64p_ratio_0_70[132] = {
586 	0x00A3, 0x02B9, 0x00A4, 0x0000,
587 	0x009A, 0x02BA, 0x00AD, 0x0FFF,
588 	0x0092, 0x02BA, 0x00B6, 0x0FFE,
589 	0x0089, 0x02BA, 0x00C1, 0x0FFC,
590 	0x0081, 0x02B9, 0x00CB, 0x0FFB,
591 	0x0079, 0x02B8, 0x00D5, 0x0FFA,
592 	0x0071, 0x02B7, 0x00DF, 0x0FF9,
593 	0x0069, 0x02B5, 0x00EA, 0x0FF8,
594 	0x0062, 0x02B3, 0x00F4, 0x0FF7,
595 	0x005B, 0x02B0, 0x00FF, 0x0FF6,
596 	0x0054, 0x02AD, 0x010B, 0x0FF4,
597 	0x004D, 0x02A9, 0x0117, 0x0FF3,
598 	0x0046, 0x02A5, 0x0123, 0x0FF2,
599 	0x0040, 0x02A1, 0x012D, 0x0FF2,
600 	0x003A, 0x029C, 0x0139, 0x0FF1,
601 	0x0034, 0x0297, 0x0145, 0x0FF0,
602 	0x002F, 0x0292, 0x0150, 0x0FEF,
603 	0x0029, 0x028C, 0x015C, 0x0FEF,
604 	0x0024, 0x0285, 0x0169, 0x0FEE,
605 	0x001F, 0x027F, 0x0174, 0x0FEE,
606 	0x001B, 0x0278, 0x017F, 0x0FEE,
607 	0x0016, 0x0270, 0x018D, 0x0FED,
608 	0x0012, 0x0268, 0x0199, 0x0FED,
609 	0x000E, 0x0260, 0x01A4, 0x0FEE,
610 	0x000B, 0x0258, 0x01AF, 0x0FEE,
611 	0x0007, 0x024F, 0x01BC, 0x0FEE,
612 	0x0004, 0x0246, 0x01C7, 0x0FEF,
613 	0x0001, 0x023D, 0x01D3, 0x0FEF,
614 	0x0FFE, 0x0233, 0x01DF, 0x0FF0,
615 	0x0FFC, 0x0229, 0x01EA, 0x0FF1,
616 	0x0FFA, 0x021F, 0x01F4, 0x0FF3,
617 	0x0FF8, 0x0215, 0x01FF, 0x0FF4,
618 	0x0FF6, 0x020A, 0x020A, 0x0FF6,
619 };
620 
621 //========================================================
622 // <using>			gen_scaler_coeffs_cnf_file.m
623 // <using>			make_test_script.m
624 // <date>			03-Apr-2024
625 // <coeffDescrip>	4t_64p_LanczosEd_p_0.8_p_10qb_
626 // <num_taps>		4
627 // <num_phases>		64
628 // <scale_ratio>	 input/output = 0.800000000000
629 // <CoefType>		LanczosEd
630 // <CoefQuant>		S1.10
631 //========================================================
632 static const uint16_t easf_filter_4tap_64p_ratio_0_80[132] = {
633 	0x0075, 0x0315, 0x0076, 0x0000,
634 	0x006C, 0x0316, 0x007F, 0x0FFF,
635 	0x0062, 0x0316, 0x008A, 0x0FFE,
636 	0x0059, 0x0315, 0x0096, 0x0FFC,
637 	0x0050, 0x0314, 0x00A1, 0x0FFB,
638 	0x0048, 0x0312, 0x00AD, 0x0FF9,
639 	0x0040, 0x0310, 0x00B8, 0x0FF8,
640 	0x0038, 0x030D, 0x00C5, 0x0FF6,
641 	0x0030, 0x030A, 0x00D1, 0x0FF5,
642 	0x0029, 0x0306, 0x00DE, 0x0FF3,
643 	0x0022, 0x0301, 0x00EB, 0x0FF2,
644 	0x001C, 0x02FC, 0x00F8, 0x0FF0,
645 	0x0015, 0x02F7, 0x0106, 0x0FEE,
646 	0x0010, 0x02F1, 0x0112, 0x0FED,
647 	0x000A, 0x02EA, 0x0121, 0x0FEB,
648 	0x0005, 0x02E3, 0x012F, 0x0FE9,
649 	0x0000, 0x02DB, 0x013D, 0x0FE8,
650 	0x0FFB, 0x02D3, 0x014C, 0x0FE6,
651 	0x0FF7, 0x02CA, 0x015A, 0x0FE5,
652 	0x0FF3, 0x02C1, 0x0169, 0x0FE3,
653 	0x0FF0, 0x02B7, 0x0177, 0x0FE2,
654 	0x0FEC, 0x02AD, 0x0186, 0x0FE1,
655 	0x0FE9, 0x02A2, 0x0196, 0x0FDF,
656 	0x0FE7, 0x0297, 0x01A4, 0x0FDE,
657 	0x0FE4, 0x028C, 0x01B3, 0x0FDD,
658 	0x0FE2, 0x0280, 0x01C2, 0x0FDC,
659 	0x0FE0, 0x0274, 0x01D0, 0x0FDC,
660 	0x0FDF, 0x0268, 0x01DE, 0x0FDB,
661 	0x0FDD, 0x025B, 0x01EE, 0x0FDA,
662 	0x0FDC, 0x024E, 0x01FC, 0x0FDA,
663 	0x0FDB, 0x0241, 0x020A, 0x0FDA,
664 	0x0FDB, 0x0233, 0x0218, 0x0FDA,
665 	0x0FDA, 0x0226, 0x0226, 0x0FDA,
666 };
667 
668 //========================================================
669 // <using>			gen_scaler_coeffs_cnf_file.m
670 // <using>			make_test_script.m
671 // <date>			03-Apr-2024
672 // <coeffDescrip>	4t_64p_LanczosEd_p_0.9_p_10qb_
673 // <num_taps>		4
674 // <num_phases>		64
675 // <scale_ratio>	 input/output = 0.900000000000
676 // <CoefType>		LanczosEd
677 // <CoefQuant>		S1.10
678 //========================================================
679 static const uint16_t easf_filter_4tap_64p_ratio_0_90[132] = {
680 	0x003F, 0x0383, 0x003E, 0x0000,
681 	0x0034, 0x0383, 0x004A, 0x0FFF,
682 	0x002B, 0x0383, 0x0054, 0x0FFE,
683 	0x0021, 0x0381, 0x0061, 0x0FFD,
684 	0x0019, 0x037F, 0x006C, 0x0FFC,
685 	0x0010, 0x037C, 0x0079, 0x0FFB,
686 	0x0008, 0x0378, 0x0086, 0x0FFA,
687 	0x0001, 0x0374, 0x0093, 0x0FF8,
688 	0x0FFA, 0x036E, 0x00A1, 0x0FF7,
689 	0x0FF3, 0x0368, 0x00B0, 0x0FF5,
690 	0x0FED, 0x0361, 0x00BF, 0x0FF3,
691 	0x0FE8, 0x035A, 0x00CD, 0x0FF1,
692 	0x0FE2, 0x0352, 0x00DC, 0x0FF0,
693 	0x0FDE, 0x0349, 0x00EB, 0x0FEE,
694 	0x0FD9, 0x033F, 0x00FC, 0x0FEC,
695 	0x0FD5, 0x0335, 0x010D, 0x0FE9,
696 	0x0FD2, 0x032A, 0x011D, 0x0FE7,
697 	0x0FCF, 0x031E, 0x012E, 0x0FE5,
698 	0x0FCC, 0x0312, 0x013F, 0x0FE3,
699 	0x0FCA, 0x0305, 0x0150, 0x0FE1,
700 	0x0FC8, 0x02F8, 0x0162, 0x0FDE,
701 	0x0FC6, 0x02EA, 0x0174, 0x0FDC,
702 	0x0FC5, 0x02DC, 0x0185, 0x0FDA,
703 	0x0FC4, 0x02CD, 0x0197, 0x0FD8,
704 	0x0FC3, 0x02BE, 0x01AA, 0x0FD5,
705 	0x0FC3, 0x02AF, 0x01BB, 0x0FD3,
706 	0x0FC3, 0x029F, 0x01CD, 0x0FD1,
707 	0x0FC3, 0x028E, 0x01E0, 0x0FCF,
708 	0x0FC3, 0x027E, 0x01F2, 0x0FCD,
709 	0x0FC4, 0x026D, 0x0203, 0x0FCC,
710 	0x0FC5, 0x025C, 0x0215, 0x0FCA,
711 	0x0FC6, 0x024B, 0x0227, 0x0FC8,
712 	0x0FC7, 0x0239, 0x0239, 0x0FC7,
713 };
714 
715 //========================================================
716 // <using>			gen_scaler_coeffs_cnf_file.m
717 // <using>			make_test_script.m
718 // <date>			03-Apr-2024
719 // <coeffDescrip>	4t_64p_LanczosEd_p_1_p_10qb_
720 // <num_taps>		4
721 // <num_phases>		64
722 // <scale_ratio>	 input/output = 1.000000000000
723 // <CoefType>		LanczosEd
724 // <CoefQuant>		S1.10
725 //========================================================
726 static const uint16_t easf_filter_4tap_64p_ratio_1_00[132] = {
727 	0x0000, 0x0400, 0x0000, 0x0000,
728 	0x0FF6, 0x03FF, 0x000B, 0x0000,
729 	0x0FED, 0x03FE, 0x0015, 0x0000,
730 	0x0FE4, 0x03FB, 0x0022, 0x0FFF,
731 	0x0FDC, 0x03F7, 0x002E, 0x0FFF,
732 	0x0FD5, 0x03F2, 0x003B, 0x0FFE,
733 	0x0FCE, 0x03EC, 0x0048, 0x0FFE,
734 	0x0FC8, 0x03E5, 0x0056, 0x0FFD,
735 	0x0FC3, 0x03DC, 0x0065, 0x0FFC,
736 	0x0FBE, 0x03D3, 0x0075, 0x0FFA,
737 	0x0FB9, 0x03C9, 0x0085, 0x0FF9,
738 	0x0FB6, 0x03BE, 0x0094, 0x0FF8,
739 	0x0FB2, 0x03B2, 0x00A6, 0x0FF6,
740 	0x0FB0, 0x03A5, 0x00B7, 0x0FF4,
741 	0x0FAD, 0x0397, 0x00CA, 0x0FF2,
742 	0x0FAB, 0x0389, 0x00DC, 0x0FF0,
743 	0x0FAA, 0x0379, 0x00EF, 0x0FEE,
744 	0x0FA9, 0x0369, 0x0102, 0x0FEC,
745 	0x0FA9, 0x0359, 0x0115, 0x0FE9,
746 	0x0FA9, 0x0348, 0x0129, 0x0FE6,
747 	0x0FA9, 0x0336, 0x013D, 0x0FE4,
748 	0x0FA9, 0x0323, 0x0153, 0x0FE1,
749 	0x0FAA, 0x0310, 0x0168, 0x0FDE,
750 	0x0FAC, 0x02FD, 0x017C, 0x0FDB,
751 	0x0FAD, 0x02E9, 0x0192, 0x0FD8,
752 	0x0FAF, 0x02D5, 0x01A7, 0x0FD5,
753 	0x0FB1, 0x02C0, 0x01BD, 0x0FD2,
754 	0x0FB3, 0x02AC, 0x01D2, 0x0FCF,
755 	0x0FB5, 0x0296, 0x01E9, 0x0FCC,
756 	0x0FB8, 0x0281, 0x01FE, 0x0FC9,
757 	0x0FBA, 0x026C, 0x0214, 0x0FC6,
758 	0x0FBD, 0x0256, 0x022A, 0x0FC3,
759 	0x0FC0, 0x0240, 0x0240, 0x0FC0,
760 };
761 
762 //========================================================
763 // <using>			gen_scaler_coeffs_cnf_file.m
764 // <using>			make_test_script.m
765 // <date>			02-Apr-2024
766 // <coeffDescrip>	6t_64p_LanczosEd_p_0.3_p_10qb_
767 // <num_taps>		6
768 // <num_phases>		64
769 // <scale_ratio>	 input/output = 0.300000000000
770 // <CoefType>		LanczosEd
771 // <CoefQuant>		S1.10
772 //========================================================
773 static const uint16_t easf_filter_6tap_64p_ratio_0_30[198] = {
774 	0x004B, 0x0100, 0x0169, 0x0101, 0x004B, 0x0000,
775 	0x0049, 0x00FD, 0x0169, 0x0103, 0x004E, 0x0000,
776 	0x0047, 0x00FA, 0x0169, 0x0106, 0x0050, 0x0000,
777 	0x0045, 0x00F7, 0x0168, 0x0109, 0x0052, 0x0001,
778 	0x0043, 0x00F5, 0x0168, 0x010B, 0x0054, 0x0001,
779 	0x0040, 0x00F2, 0x0168, 0x010E, 0x0057, 0x0001,
780 	0x003E, 0x00EF, 0x0168, 0x0110, 0x0059, 0x0002,
781 	0x003C, 0x00EC, 0x0167, 0x0113, 0x005C, 0x0002,
782 	0x003A, 0x00E9, 0x0167, 0x0116, 0x005E, 0x0002,
783 	0x0038, 0x00E6, 0x0166, 0x0118, 0x0061, 0x0003,
784 	0x0036, 0x00E3, 0x0165, 0x011C, 0x0063, 0x0003,
785 	0x0034, 0x00E0, 0x0165, 0x011D, 0x0066, 0x0004,
786 	0x0033, 0x00DD, 0x0164, 0x0120, 0x0068, 0x0004,
787 	0x0031, 0x00DA, 0x0163, 0x0122, 0x006B, 0x0005,
788 	0x002F, 0x00D7, 0x0163, 0x0125, 0x006D, 0x0005,
789 	0x002D, 0x00D3, 0x0162, 0x0128, 0x0070, 0x0006,
790 	0x002B, 0x00D0, 0x0161, 0x012A, 0x0073, 0x0007,
791 	0x002A, 0x00CD, 0x0160, 0x012D, 0x0075, 0x0007,
792 	0x0028, 0x00CA, 0x015F, 0x012F, 0x0078, 0x0008,
793 	0x0026, 0x00C7, 0x015E, 0x0131, 0x007B, 0x0009,
794 	0x0025, 0x00C4, 0x015D, 0x0133, 0x007E, 0x0009,
795 	0x0023, 0x00C1, 0x015C, 0x0136, 0x0080, 0x000A,
796 	0x0022, 0x00BE, 0x015A, 0x0138, 0x0083, 0x000B,
797 	0x0020, 0x00BB, 0x0159, 0x013A, 0x0086, 0x000C,
798 	0x001F, 0x00B8, 0x0158, 0x013B, 0x0089, 0x000D,
799 	0x001E, 0x00B5, 0x0156, 0x013E, 0x008C, 0x000D,
800 	0x001C, 0x00B2, 0x0155, 0x0140, 0x008F, 0x000E,
801 	0x001B, 0x00AF, 0x0153, 0x0143, 0x0091, 0x000F,
802 	0x0019, 0x00AC, 0x0152, 0x0145, 0x0094, 0x0010,
803 	0x0018, 0x00A9, 0x0150, 0x0147, 0x0097, 0x0011,
804 	0x0017, 0x00A6, 0x014F, 0x0148, 0x009A, 0x0012,
805 	0x0016, 0x00A3, 0x014D, 0x0149, 0x009D, 0x0014,
806 	0x0015, 0x00A0, 0x014B, 0x014B, 0x00A0, 0x0015,
807 };
808 
809 //========================================================
810 // <using>			gen_scaler_coeffs_cnf_file.m
811 // <using>			make_test_script.m
812 // <date>			02-Apr-2024
813 // <coeffDescrip>	6t_64p_LanczosEd_p_0.4_p_10qb_
814 // <num_taps>		6
815 // <num_phases>		64
816 // <scale_ratio>	 input/output = 0.400000000000
817 // <CoefType>		LanczosEd
818 // <CoefQuant>		S1.10
819 //========================================================
820 static const uint16_t easf_filter_6tap_64p_ratio_0_40[198] = {
821 	0x0028, 0x0106, 0x01A3, 0x0107, 0x0028, 0x0000,
822 	0x0026, 0x0102, 0x01A3, 0x010A, 0x002B, 0x0000,
823 	0x0024, 0x00FE, 0x01A3, 0x010F, 0x002D, 0x0FFF,
824 	0x0022, 0x00FA, 0x01A3, 0x0113, 0x002F, 0x0FFF,
825 	0x0021, 0x00F6, 0x01A3, 0x0116, 0x0031, 0x0FFF,
826 	0x001F, 0x00F2, 0x01A2, 0x011B, 0x0034, 0x0FFE,
827 	0x001D, 0x00EE, 0x01A2, 0x011F, 0x0036, 0x0FFE,
828 	0x001B, 0x00EA, 0x01A1, 0x0123, 0x0039, 0x0FFE,
829 	0x0019, 0x00E6, 0x01A1, 0x0127, 0x003B, 0x0FFE,
830 	0x0018, 0x00E2, 0x01A0, 0x012A, 0x003E, 0x0FFE,
831 	0x0016, 0x00DE, 0x01A0, 0x012E, 0x0041, 0x0FFD,
832 	0x0015, 0x00DA, 0x019F, 0x0132, 0x0043, 0x0FFD,
833 	0x0013, 0x00D6, 0x019E, 0x0136, 0x0046, 0x0FFD,
834 	0x0012, 0x00D2, 0x019D, 0x0139, 0x0049, 0x0FFD,
835 	0x0010, 0x00CE, 0x019C, 0x013D, 0x004C, 0x0FFD,
836 	0x000F, 0x00CA, 0x019A, 0x0141, 0x004F, 0x0FFD,
837 	0x000E, 0x00C6, 0x0199, 0x0144, 0x0052, 0x0FFD,
838 	0x000D, 0x00C2, 0x0197, 0x0148, 0x0055, 0x0FFD,
839 	0x000B, 0x00BE, 0x0196, 0x014C, 0x0058, 0x0FFD,
840 	0x000A, 0x00BA, 0x0195, 0x014F, 0x005B, 0x0FFD,
841 	0x0009, 0x00B6, 0x0193, 0x0153, 0x005E, 0x0FFD,
842 	0x0008, 0x00B2, 0x0191, 0x0157, 0x0061, 0x0FFD,
843 	0x0007, 0x00AE, 0x0190, 0x015A, 0x0064, 0x0FFD,
844 	0x0006, 0x00AA, 0x018E, 0x015D, 0x0068, 0x0FFD,
845 	0x0005, 0x00A6, 0x018C, 0x0161, 0x006B, 0x0FFD,
846 	0x0005, 0x00A2, 0x0189, 0x0164, 0x006F, 0x0FFD,
847 	0x0004, 0x009E, 0x0187, 0x0167, 0x0072, 0x0FFE,
848 	0x0003, 0x009A, 0x0185, 0x016B, 0x0075, 0x0FFE,
849 	0x0002, 0x0096, 0x0183, 0x016E, 0x0079, 0x0FFE,
850 	0x0002, 0x0093, 0x0180, 0x016F, 0x007D, 0x0FFF,
851 	0x0001, 0x008F, 0x017E, 0x0173, 0x0080, 0x0FFF,
852 	0x0001, 0x008B, 0x017B, 0x0175, 0x0084, 0x0000,
853 	0x0000, 0x0087, 0x0179, 0x0179, 0x0087, 0x0000,
854 };
855 
856 //========================================================
857 // <using>			gen_scaler_coeffs_cnf_file.m
858 // <using>			make_test_script.m
859 // <date>			02-Apr-2024
860 // <coeffDescrip>	6t_64p_LanczosEd_p_0.5_p_10qb_
861 // <num_taps>		6
862 // <num_phases>		64
863 // <scale_ratio>	 input/output = 0.500000000000
864 // <CoefType>		LanczosEd
865 // <CoefQuant>		S1.10
866 //========================================================
867 static const uint16_t easf_filter_6tap_64p_ratio_0_50[198] = {
868 	0x0000, 0x0107, 0x01F3, 0x0106, 0x0000, 0x0000,
869 	0x0FFE, 0x0101, 0x01F3, 0x010D, 0x0002, 0x0FFF,
870 	0x0FFD, 0x00FB, 0x01F3, 0x0113, 0x0003, 0x0FFF,
871 	0x0FFC, 0x00F6, 0x01F3, 0x0118, 0x0005, 0x0FFE,
872 	0x0FFA, 0x00F0, 0x01F3, 0x011E, 0x0007, 0x0FFE,
873 	0x0FF9, 0x00EB, 0x01F2, 0x0124, 0x0009, 0x0FFD,
874 	0x0FF8, 0x00E5, 0x01F2, 0x0129, 0x000B, 0x0FFD,
875 	0x0FF7, 0x00E0, 0x01F1, 0x012F, 0x000D, 0x0FFC,
876 	0x0FF6, 0x00DA, 0x01F0, 0x0135, 0x0010, 0x0FFB,
877 	0x0FF5, 0x00D4, 0x01EF, 0x013B, 0x0012, 0x0FFB,
878 	0x0FF4, 0x00CF, 0x01EE, 0x0141, 0x0014, 0x0FFA,
879 	0x0FF3, 0x00C9, 0x01ED, 0x0147, 0x0017, 0x0FF9,
880 	0x0FF2, 0x00C4, 0x01EB, 0x014C, 0x001A, 0x0FF9,
881 	0x0FF1, 0x00BF, 0x01EA, 0x0152, 0x001C, 0x0FF8,
882 	0x0FF1, 0x00B9, 0x01E8, 0x0157, 0x001F, 0x0FF8,
883 	0x0FF0, 0x00B4, 0x01E6, 0x015D, 0x0022, 0x0FF7,
884 	0x0FF0, 0x00AE, 0x01E4, 0x0163, 0x0025, 0x0FF6,
885 	0x0FEF, 0x00A9, 0x01E2, 0x0168, 0x0028, 0x0FF6,
886 	0x0FEF, 0x00A4, 0x01DF, 0x016E, 0x002B, 0x0FF5,
887 	0x0FEF, 0x009F, 0x01DD, 0x0172, 0x002E, 0x0FF5,
888 	0x0FEE, 0x009A, 0x01DA, 0x0178, 0x0032, 0x0FF4,
889 	0x0FEE, 0x0094, 0x01D8, 0x017E, 0x0035, 0x0FF3,
890 	0x0FEE, 0x008F, 0x01D5, 0x0182, 0x0039, 0x0FF3,
891 	0x0FEE, 0x008A, 0x01D2, 0x0188, 0x003C, 0x0FF2,
892 	0x0FEE, 0x0085, 0x01CF, 0x018C, 0x0040, 0x0FF2,
893 	0x0FEE, 0x0081, 0x01CB, 0x0191, 0x0044, 0x0FF1,
894 	0x0FEE, 0x007C, 0x01C8, 0x0196, 0x0047, 0x0FF1,
895 	0x0FEE, 0x0077, 0x01C4, 0x019C, 0x004B, 0x0FF0,
896 	0x0FEE, 0x0072, 0x01C1, 0x01A0, 0x004F, 0x0FF0,
897 	0x0FEE, 0x006E, 0x01BD, 0x01A4, 0x0053, 0x0FF0,
898 	0x0FEE, 0x0069, 0x01B9, 0x01A9, 0x0058, 0x0FEF,
899 	0x0FEE, 0x0065, 0x01B5, 0x01AD, 0x005C, 0x0FEF,
900 	0x0FEF, 0x0060, 0x01B1, 0x01B1, 0x0060, 0x0FEF,
901 };
902 
903 //========================================================
904 // <using>			gen_scaler_coeffs_cnf_file.m
905 // <using>			make_test_script.m
906 // <date>			02-Apr-2024
907 // <coeffDescrip>	6t_64p_LanczosEd_p_0.6_p_10qb_
908 // <num_taps>		6
909 // <num_phases>		64
910 // <scale_ratio>	 input/output = 0.600000000000
911 // <CoefType>		LanczosEd
912 // <CoefQuant>		S1.10
913 //========================================================
914 static const uint16_t easf_filter_6tap_64p_ratio_0_60[198] = {
915 	0x0FD9, 0x00FB, 0x0258, 0x00FB, 0x0FD9, 0x0000,
916 	0x0FD9, 0x00F3, 0x0258, 0x0102, 0x0FDA, 0x0000,
917 	0x0FD8, 0x00EB, 0x0258, 0x010B, 0x0FDB, 0x0FFF,
918 	0x0FD8, 0x00E3, 0x0258, 0x0112, 0x0FDC, 0x0FFF,
919 	0x0FD8, 0x00DC, 0x0257, 0x011B, 0x0FDC, 0x0FFE,
920 	0x0FD7, 0x00D4, 0x0256, 0x0123, 0x0FDE, 0x0FFE,
921 	0x0FD7, 0x00CD, 0x0255, 0x012B, 0x0FDF, 0x0FFD,
922 	0x0FD7, 0x00C5, 0x0254, 0x0133, 0x0FE0, 0x0FFD,
923 	0x0FD7, 0x00BE, 0x0252, 0x013C, 0x0FE1, 0x0FFC,
924 	0x0FD7, 0x00B6, 0x0251, 0x0143, 0x0FE3, 0x0FFC,
925 	0x0FD8, 0x00AF, 0x024F, 0x014B, 0x0FE4, 0x0FFB,
926 	0x0FD8, 0x00A8, 0x024C, 0x0154, 0x0FE6, 0x0FFA,
927 	0x0FD8, 0x00A1, 0x024A, 0x015B, 0x0FE8, 0x0FFA,
928 	0x0FD9, 0x009A, 0x0247, 0x0163, 0x0FEA, 0x0FF9,
929 	0x0FD9, 0x0093, 0x0244, 0x016C, 0x0FEC, 0x0FF8,
930 	0x0FD9, 0x008C, 0x0241, 0x0174, 0x0FEF, 0x0FF7,
931 	0x0FDA, 0x0085, 0x023E, 0x017B, 0x0FF1, 0x0FF7,
932 	0x0FDB, 0x007F, 0x023A, 0x0183, 0x0FF3, 0x0FF6,
933 	0x0FDB, 0x0078, 0x0237, 0x018B, 0x0FF6, 0x0FF5,
934 	0x0FDC, 0x0072, 0x0233, 0x0192, 0x0FF9, 0x0FF4,
935 	0x0FDD, 0x006C, 0x022F, 0x0199, 0x0FFC, 0x0FF3,
936 	0x0FDD, 0x0065, 0x022A, 0x01A3, 0x0FFF, 0x0FF2,
937 	0x0FDE, 0x005F, 0x0226, 0x01AA, 0x0002, 0x0FF1,
938 	0x0FDF, 0x005A, 0x0221, 0x01B0, 0x0006, 0x0FF0,
939 	0x0FE0, 0x0054, 0x021C, 0x01B7, 0x0009, 0x0FF0,
940 	0x0FE1, 0x004E, 0x0217, 0x01BE, 0x000D, 0x0FEF,
941 	0x0FE2, 0x0048, 0x0212, 0x01C6, 0x0010, 0x0FEE,
942 	0x0FE3, 0x0043, 0x020C, 0x01CD, 0x0014, 0x0FED,
943 	0x0FE4, 0x003E, 0x0207, 0x01D3, 0x0018, 0x0FEC,
944 	0x0FE5, 0x0039, 0x0200, 0x01DA, 0x001D, 0x0FEB,
945 	0x0FE6, 0x0034, 0x01FA, 0x01E1, 0x0021, 0x0FEA,
946 	0x0FE7, 0x002F, 0x01F5, 0x01E7, 0x0025, 0x0FE9,
947 	0x0FE8, 0x002A, 0x01EE, 0x01EE, 0x002A, 0x0FE8,
948 };
949 
950 //========================================================
951 // <using>			gen_scaler_coeffs_cnf_file.m
952 // <using>			make_test_script.m
953 // <date>			02-Apr-2024
954 // <coeffDescrip>	6t_64p_LanczosEd_p_0.7_p_10qb_
955 // <num_taps>		6
956 // <num_phases>		64
957 // <scale_ratio>	 input/output = 0.700000000000
958 // <CoefType>		LanczosEd
959 // <CoefQuant>		S1.10
960 //========================================================
961 static const uint16_t easf_filter_6tap_64p_ratio_0_70[198] = {
962 	0x0FC0, 0x00DA, 0x02CC, 0x00DA, 0x0FC0, 0x0000,
963 	0x0FC1, 0x00D0, 0x02CC, 0x00E4, 0x0FBF, 0x0000,
964 	0x0FC2, 0x00C6, 0x02CB, 0x00EF, 0x0FBE, 0x0000,
965 	0x0FC3, 0x00BC, 0x02CA, 0x00F9, 0x0FBE, 0x0000,
966 	0x0FC4, 0x00B2, 0x02C9, 0x0104, 0x0FBD, 0x0000,
967 	0x0FC5, 0x00A8, 0x02C7, 0x010F, 0x0FBD, 0x0000,
968 	0x0FC7, 0x009F, 0x02C5, 0x0119, 0x0FBC, 0x0000,
969 	0x0FC8, 0x0095, 0x02C3, 0x0124, 0x0FBC, 0x0000,
970 	0x0FC9, 0x008C, 0x02C0, 0x012F, 0x0FBC, 0x0000,
971 	0x0FCB, 0x0083, 0x02BD, 0x0139, 0x0FBC, 0x0000,
972 	0x0FCC, 0x007A, 0x02BA, 0x0144, 0x0FBC, 0x0000,
973 	0x0FCE, 0x0072, 0x02B6, 0x014D, 0x0FBD, 0x0000,
974 	0x0FD0, 0x0069, 0x02B2, 0x0159, 0x0FBD, 0x0FFF,
975 	0x0FD1, 0x0061, 0x02AD, 0x0164, 0x0FBE, 0x0FFF,
976 	0x0FD3, 0x0059, 0x02A9, 0x016E, 0x0FBF, 0x0FFE,
977 	0x0FD4, 0x0051, 0x02A4, 0x017A, 0x0FBF, 0x0FFE,
978 	0x0FD6, 0x0049, 0x029E, 0x0184, 0x0FC1, 0x0FFE,
979 	0x0FD8, 0x0042, 0x0299, 0x018E, 0x0FC2, 0x0FFD,
980 	0x0FD9, 0x003A, 0x0293, 0x019B, 0x0FC3, 0x0FFC,
981 	0x0FDB, 0x0033, 0x028D, 0x01A4, 0x0FC5, 0x0FFC,
982 	0x0FDC, 0x002D, 0x0286, 0x01AF, 0x0FC7, 0x0FFB,
983 	0x0FDE, 0x0026, 0x0280, 0x01BA, 0x0FC8, 0x0FFA,
984 	0x0FE0, 0x001F, 0x0279, 0x01C4, 0x0FCB, 0x0FF9,
985 	0x0FE1, 0x0019, 0x0272, 0x01CE, 0x0FCD, 0x0FF9,
986 	0x0FE3, 0x0013, 0x026A, 0x01D9, 0x0FCF, 0x0FF8,
987 	0x0FE4, 0x000D, 0x0263, 0x01E3, 0x0FD2, 0x0FF7,
988 	0x0FE6, 0x0008, 0x025B, 0x01EC, 0x0FD5, 0x0FF6,
989 	0x0FE7, 0x0002, 0x0253, 0x01F7, 0x0FD8, 0x0FF5,
990 	0x0FE9, 0x0FFD, 0x024A, 0x0202, 0x0FDB, 0x0FF3,
991 	0x0FEA, 0x0FF8, 0x0242, 0x020B, 0x0FDF, 0x0FF2,
992 	0x0FEC, 0x0FF3, 0x0239, 0x0215, 0x0FE2, 0x0FF1,
993 	0x0FED, 0x0FEF, 0x0230, 0x021E, 0x0FE6, 0x0FF0,
994 	0x0FEF, 0x0FEB, 0x0226, 0x0226, 0x0FEB, 0x0FEF,
995 };
996 
997 //========================================================
998 // <using>			gen_scaler_coeffs_cnf_file.m
999 // <using>			make_test_script.m
1000 // <date>			02-Apr-2024
1001 // <coeffDescrip>	6t_64p_LanczosEd_p_0.8_p_10qb_
1002 // <num_taps>		6
1003 // <num_phases>		64
1004 // <scale_ratio>	 input/output = 0.800000000000
1005 // <CoefType>		LanczosEd
1006 // <CoefQuant>		S1.10
1007 //========================================================
1008 static const uint16_t easf_filter_6tap_64p_ratio_0_80[198] = {
1009 	0x0FBF, 0x00A1, 0x0340, 0x00A1, 0x0FBF, 0x0000,
1010 	0x0FC1, 0x0095, 0x0340, 0x00AD, 0x0FBC, 0x0001,
1011 	0x0FC4, 0x0089, 0x033E, 0x00BA, 0x0FBA, 0x0001,
1012 	0x0FC6, 0x007D, 0x033D, 0x00C6, 0x0FB8, 0x0002,
1013 	0x0FC9, 0x0072, 0x033A, 0x00D3, 0x0FB6, 0x0002,
1014 	0x0FCC, 0x0067, 0x0338, 0x00DF, 0x0FB3, 0x0003,
1015 	0x0FCE, 0x005C, 0x0334, 0x00EE, 0x0FB1, 0x0003,
1016 	0x0FD1, 0x0051, 0x0331, 0x00FA, 0x0FAF, 0x0004,
1017 	0x0FD3, 0x0047, 0x032D, 0x0108, 0x0FAD, 0x0004,
1018 	0x0FD6, 0x003D, 0x0328, 0x0116, 0x0FAB, 0x0004,
1019 	0x0FD8, 0x0033, 0x0323, 0x0123, 0x0FAA, 0x0005,
1020 	0x0FDB, 0x002A, 0x031D, 0x0131, 0x0FA8, 0x0005,
1021 	0x0FDD, 0x0021, 0x0317, 0x013F, 0x0FA7, 0x0005,
1022 	0x0FDF, 0x0018, 0x0311, 0x014D, 0x0FA5, 0x0006,
1023 	0x0FE2, 0x0010, 0x030A, 0x015A, 0x0FA4, 0x0006,
1024 	0x0FE4, 0x0008, 0x0302, 0x0169, 0x0FA3, 0x0006,
1025 	0x0FE6, 0x0000, 0x02FB, 0x0177, 0x0FA2, 0x0006,
1026 	0x0FE8, 0x0FF9, 0x02F3, 0x0185, 0x0FA1, 0x0006,
1027 	0x0FEB, 0x0FF1, 0x02EA, 0x0193, 0x0FA1, 0x0006,
1028 	0x0FED, 0x0FEB, 0x02E1, 0x01A1, 0x0FA0, 0x0006,
1029 	0x0FEE, 0x0FE4, 0x02D8, 0x01B0, 0x0FA0, 0x0006,
1030 	0x0FF0, 0x0FDE, 0x02CE, 0x01BE, 0x0FA0, 0x0006,
1031 	0x0FF2, 0x0FD8, 0x02C5, 0x01CB, 0x0FA0, 0x0006,
1032 	0x0FF4, 0x0FD3, 0x02BA, 0x01D8, 0x0FA1, 0x0006,
1033 	0x0FF6, 0x0FCD, 0x02B0, 0x01E7, 0x0FA1, 0x0005,
1034 	0x0FF7, 0x0FC8, 0x02A5, 0x01F5, 0x0FA2, 0x0005,
1035 	0x0FF9, 0x0FC4, 0x029A, 0x0202, 0x0FA3, 0x0004,
1036 	0x0FFA, 0x0FC0, 0x028E, 0x0210, 0x0FA4, 0x0004,
1037 	0x0FFB, 0x0FBC, 0x0283, 0x021D, 0x0FA6, 0x0003,
1038 	0x0FFD, 0x0FB8, 0x0276, 0x022A, 0x0FA8, 0x0003,
1039 	0x0FFE, 0x0FB4, 0x026B, 0x0237, 0x0FAA, 0x0002,
1040 	0x0FFF, 0x0FB1, 0x025E, 0x0245, 0x0FAC, 0x0001,
1041 	0x0000, 0x0FAE, 0x0252, 0x0252, 0x0FAE, 0x0000,
1042 };
1043 
1044 //========================================================
1045 // <using>			gen_scaler_coeffs_cnf_file.m
1046 // <using>			make_test_script.m
1047 // <date>			02-Apr-2024
1048 // <coeffDescrip>	6t_64p_LanczosEd_p_0.9_p_10qb_
1049 // <num_taps>		6
1050 // <num_phases>		64
1051 // <scale_ratio>	 input/output = 0.900000000000
1052 // <CoefType>		LanczosEd
1053 // <CoefQuant>		S1.10
1054 //========================================================
1055 static const uint16_t easf_filter_6tap_64p_ratio_0_90[198] = {
1056 	0x0FD8, 0x0055, 0x03A7, 0x0054, 0x0FD8, 0x0000,
1057 	0x0FDB, 0x0047, 0x03A7, 0x0063, 0x0FD4, 0x0000,
1058 	0x0FDF, 0x003B, 0x03A5, 0x006F, 0x0FD1, 0x0001,
1059 	0x0FE2, 0x002E, 0x03A3, 0x007E, 0x0FCD, 0x0002,
1060 	0x0FE5, 0x0022, 0x03A0, 0x008D, 0x0FCA, 0x0002,
1061 	0x0FE8, 0x0017, 0x039D, 0x009B, 0x0FC6, 0x0003,
1062 	0x0FEB, 0x000C, 0x0398, 0x00AC, 0x0FC2, 0x0003,
1063 	0x0FEE, 0x0001, 0x0394, 0x00BA, 0x0FBF, 0x0004,
1064 	0x0FF1, 0x0FF7, 0x038E, 0x00CA, 0x0FBB, 0x0005,
1065 	0x0FF4, 0x0FED, 0x0388, 0x00DA, 0x0FB8, 0x0005,
1066 	0x0FF6, 0x0FE4, 0x0381, 0x00EB, 0x0FB4, 0x0006,
1067 	0x0FF9, 0x0FDB, 0x037A, 0x00FA, 0x0FB1, 0x0007,
1068 	0x0FFB, 0x0FD3, 0x0372, 0x010B, 0x0FAD, 0x0008,
1069 	0x0FFD, 0x0FCB, 0x0369, 0x011D, 0x0FAA, 0x0008,
1070 	0x0000, 0x0FC3, 0x0360, 0x012E, 0x0FA6, 0x0009,
1071 	0x0002, 0x0FBC, 0x0356, 0x013F, 0x0FA3, 0x000A,
1072 	0x0003, 0x0FB6, 0x034C, 0x0150, 0x0FA0, 0x000B,
1073 	0x0005, 0x0FB0, 0x0341, 0x0162, 0x0F9D, 0x000B,
1074 	0x0007, 0x0FAA, 0x0336, 0x0173, 0x0F9A, 0x000C,
1075 	0x0008, 0x0FA5, 0x032A, 0x0185, 0x0F97, 0x000D,
1076 	0x000A, 0x0FA0, 0x031E, 0x0197, 0x0F94, 0x000D,
1077 	0x000B, 0x0F9B, 0x0311, 0x01A9, 0x0F92, 0x000E,
1078 	0x000C, 0x0F97, 0x0303, 0x01BC, 0x0F8F, 0x000F,
1079 	0x000D, 0x0F94, 0x02F6, 0x01CD, 0x0F8D, 0x000F,
1080 	0x000E, 0x0F91, 0x02E8, 0x01DE, 0x0F8B, 0x0010,
1081 	0x000F, 0x0F8E, 0x02D9, 0x01F1, 0x0F89, 0x0010,
1082 	0x0010, 0x0F8B, 0x02CA, 0x0202, 0x0F88, 0x0011,
1083 	0x0010, 0x0F89, 0x02BB, 0x0214, 0x0F87, 0x0011,
1084 	0x0011, 0x0F87, 0x02AB, 0x0226, 0x0F86, 0x0011,
1085 	0x0011, 0x0F86, 0x029C, 0x0236, 0x0F85, 0x0012,
1086 	0x0011, 0x0F85, 0x028B, 0x0249, 0x0F84, 0x0012,
1087 	0x0012, 0x0F84, 0x027B, 0x0259, 0x0F84, 0x0012,
1088 	0x0012, 0x0F84, 0x026A, 0x026A, 0x0F84, 0x0012,
1089 };
1090 
1091 //========================================================
1092 // <using>			gen_scaler_coeffs_cnf_file.m
1093 // <using>			make_test_script.m
1094 // <date>			02-Apr-2024
1095 // <coeffDescrip>	6t_64p_LanczosEd_p_1_p_10qb_
1096 // <num_taps>		6
1097 // <num_phases>		64
1098 // <scale_ratio>	 input/output = 1.000000000000
1099 // <CoefType>		LanczosEd
1100 // <CoefQuant>		S1.10
1101 //========================================================
1102 static const uint16_t easf_filter_6tap_64p_ratio_1_00[198] = {
1103 	0x0000, 0x0000, 0x0400, 0x0000, 0x0000, 0x0000,
1104 	0x0003, 0x0FF3, 0x0400, 0x000D, 0x0FFD, 0x0000,
1105 	0x0006, 0x0FE7, 0x03FE, 0x001C, 0x0FF9, 0x0000,
1106 	0x0009, 0x0FDB, 0x03FC, 0x002B, 0x0FF5, 0x0000,
1107 	0x000C, 0x0FD0, 0x03F9, 0x003A, 0x0FF1, 0x0000,
1108 	0x000E, 0x0FC5, 0x03F5, 0x004A, 0x0FED, 0x0001,
1109 	0x0011, 0x0FBB, 0x03F0, 0x005A, 0x0FE9, 0x0001,
1110 	0x0013, 0x0FB2, 0x03EB, 0x006A, 0x0FE5, 0x0001,
1111 	0x0015, 0x0FA9, 0x03E4, 0x007B, 0x0FE1, 0x0002,
1112 	0x0017, 0x0FA1, 0x03DD, 0x008D, 0x0FDC, 0x0002,
1113 	0x0018, 0x0F99, 0x03D4, 0x00A0, 0x0FD8, 0x0003,
1114 	0x001A, 0x0F92, 0x03CB, 0x00B2, 0x0FD3, 0x0004,
1115 	0x001B, 0x0F8C, 0x03C1, 0x00C6, 0x0FCE, 0x0004,
1116 	0x001C, 0x0F86, 0x03B7, 0x00D9, 0x0FC9, 0x0005,
1117 	0x001D, 0x0F80, 0x03AB, 0x00EE, 0x0FC4, 0x0006,
1118 	0x001E, 0x0F7C, 0x039F, 0x0101, 0x0FBF, 0x0007,
1119 	0x001F, 0x0F78, 0x0392, 0x0115, 0x0FBA, 0x0008,
1120 	0x001F, 0x0F74, 0x0385, 0x012B, 0x0FB5, 0x0008,
1121 	0x0020, 0x0F71, 0x0376, 0x0140, 0x0FB0, 0x0009,
1122 	0x0020, 0x0F6E, 0x0367, 0x0155, 0x0FAB, 0x000B,
1123 	0x0020, 0x0F6C, 0x0357, 0x016B, 0x0FA6, 0x000C,
1124 	0x0020, 0x0F6A, 0x0347, 0x0180, 0x0FA2, 0x000D,
1125 	0x0020, 0x0F69, 0x0336, 0x0196, 0x0F9D, 0x000E,
1126 	0x0020, 0x0F69, 0x0325, 0x01AB, 0x0F98, 0x000F,
1127 	0x001F, 0x0F68, 0x0313, 0x01C3, 0x0F93, 0x0010,
1128 	0x001F, 0x0F69, 0x0300, 0x01D8, 0x0F8F, 0x0011,
1129 	0x001E, 0x0F69, 0x02ED, 0x01EF, 0x0F8B, 0x0012,
1130 	0x001D, 0x0F6A, 0x02D9, 0x0205, 0x0F87, 0x0014,
1131 	0x001D, 0x0F6C, 0x02C5, 0x021A, 0x0F83, 0x0015,
1132 	0x001C, 0x0F6E, 0x02B1, 0x0230, 0x0F7F, 0x0016,
1133 	0x001B, 0x0F70, 0x029C, 0x0247, 0x0F7B, 0x0017,
1134 	0x001A, 0x0F72, 0x0287, 0x025D, 0x0F78, 0x0018,
1135 	0x0019, 0x0F75, 0x0272, 0x0272, 0x0F75, 0x0019,
1136 };
1137 
1138 /* Converted scaler coeff tables from S1.10 to S1.12 */
1139 static uint16_t easf_filter_3tap_64p_ratio_0_30_s1_12[99];
1140 static uint16_t easf_filter_3tap_64p_ratio_0_40_s1_12[99];
1141 static uint16_t easf_filter_3tap_64p_ratio_0_50_s1_12[99];
1142 static uint16_t easf_filter_3tap_64p_ratio_0_60_s1_12[99];
1143 static uint16_t easf_filter_3tap_64p_ratio_0_70_s1_12[99];
1144 static uint16_t easf_filter_3tap_64p_ratio_0_80_s1_12[99];
1145 static uint16_t easf_filter_3tap_64p_ratio_0_90_s1_12[99];
1146 static uint16_t easf_filter_3tap_64p_ratio_1_00_s1_12[99];
1147 static uint16_t easf_filter_4tap_64p_ratio_0_30_s1_12[132];
1148 static uint16_t easf_filter_4tap_64p_ratio_0_40_s1_12[132];
1149 static uint16_t easf_filter_4tap_64p_ratio_0_50_s1_12[132];
1150 static uint16_t easf_filter_4tap_64p_ratio_0_60_s1_12[132];
1151 static uint16_t easf_filter_4tap_64p_ratio_0_70_s1_12[132];
1152 static uint16_t easf_filter_4tap_64p_ratio_0_80_s1_12[132];
1153 static uint16_t easf_filter_4tap_64p_ratio_0_90_s1_12[132];
1154 static uint16_t easf_filter_4tap_64p_ratio_1_00_s1_12[132];
1155 static uint16_t easf_filter_6tap_64p_ratio_0_30_s1_12[198];
1156 static uint16_t easf_filter_6tap_64p_ratio_0_40_s1_12[198];
1157 static uint16_t easf_filter_6tap_64p_ratio_0_50_s1_12[198];
1158 static uint16_t easf_filter_6tap_64p_ratio_0_60_s1_12[198];
1159 static uint16_t easf_filter_6tap_64p_ratio_0_70_s1_12[198];
1160 static uint16_t easf_filter_6tap_64p_ratio_0_80_s1_12[198];
1161 static uint16_t easf_filter_6tap_64p_ratio_0_90_s1_12[198];
1162 static uint16_t easf_filter_6tap_64p_ratio_1_00_s1_12[198];
1163 
1164 struct scale_ratio_to_reg_value_lookup easf_v_bf3_mode_lookup[] = {
1165 	{3, 10, 0x0000},
1166 	{4, 10, 0x0000},
1167 	{5, 10, 0x0000},
1168 	{6, 10, 0x0000},
1169 	{7, 10, 0x0000},
1170 	{8, 10, 0x0000},
1171 	{9, 10, 0x0000},
1172 	{1, 1, 0x0000},
1173 	{-1, -1, 0x0002},
1174 };
1175 
1176 struct scale_ratio_to_reg_value_lookup easf_h_bf3_mode_lookup[] = {
1177 	{3, 10, 0x0000},
1178 	{4, 10, 0x0000},
1179 	{5, 10, 0x0000},
1180 	{6, 10, 0x0000},
1181 	{7, 10, 0x0000},
1182 	{8, 10, 0x0000},
1183 	{9, 10, 0x0000},
1184 	{1, 1, 0x0000},
1185 	{-1, -1, 0x0002},
1186 };
1187 
1188 struct scale_ratio_to_reg_value_lookup easf_reducer_gain6_6tap_lookup[] = {
1189 	{3, 10, 0x4100},
1190 	{4, 10, 0x4100},
1191 	{5, 10, 0x4100},
1192 	{6, 10, 0x4100},
1193 	{7, 10, 0x4100},
1194 	{8, 10, 0x4100},
1195 	{9, 10, 0x4100},
1196 	{1, 1, 0x4100},
1197 	{-1, -1, 0x4100},
1198 };
1199 
1200 struct scale_ratio_to_reg_value_lookup easf_reducer_gain4_6tap_lookup[] = {
1201 	{3, 10, 0x4000},
1202 	{4, 10, 0x4000},
1203 	{5, 10, 0x4000},
1204 	{6, 10, 0x4000},
1205 	{7, 10, 0x4000},
1206 	{8, 10, 0x4000},
1207 	{9, 10, 0x4000},
1208 	{1, 1, 0x4000},
1209 	{-1, -1, 0x4000},
1210 };
1211 
1212 struct scale_ratio_to_reg_value_lookup easf_gain_ring6_6tap_lookup[] = {
1213 	{3, 10, 0x0000},
1214 	{4, 10, 0x251F},
1215 	{5, 10, 0x291F},
1216 	{6, 10, 0xA51F},
1217 	{7, 10, 0xA51F},
1218 	{8, 10, 0xAA66},
1219 	{9, 10, 0xA51F},
1220 	{1, 1, 0xA640},
1221 	{-1, -1, 0xA640},
1222 };
1223 
1224 struct scale_ratio_to_reg_value_lookup easf_gain_ring4_6tap_lookup[] = {
1225 	{3, 10, 0x0000},
1226 	{4, 10, 0x9600},
1227 	{5, 10, 0xA460},
1228 	{6, 10, 0xA8E0},
1229 	{7, 10, 0xAC00},
1230 	{8, 10, 0xAD20},
1231 	{9, 10, 0xAFC0},
1232 	{1, 1, 0xB058},
1233 	{-1, -1, 0xB058},
1234 };
1235 
1236 struct scale_ratio_to_reg_value_lookup easf_reducer_gain6_4tap_lookup[] = {
1237 	{3, 10, 0x4100},
1238 	{4, 10, 0x4100},
1239 	{5, 10, 0x4100},
1240 	{6, 10, 0x4100},
1241 	{7, 10, 0x4100},
1242 	{8, 10, 0x4100},
1243 	{9, 10, 0x4100},
1244 	{1, 1, 0x4100},
1245 	{-1, -1, 0x4100},
1246 };
1247 
1248 struct scale_ratio_to_reg_value_lookup easf_reducer_gain4_4tap_lookup[] = {
1249 	{3, 10, 0x4000},
1250 	{4, 10, 0x4000},
1251 	{5, 10, 0x4000},
1252 	{6, 10, 0x4000},
1253 	{7, 10, 0x4000},
1254 	{8, 10, 0x4000},
1255 	{9, 10, 0x4000},
1256 	{1, 1, 0x4000},
1257 	{-1, -1, 0x4000},
1258 };
1259 
1260 struct scale_ratio_to_reg_value_lookup easf_gain_ring6_4tap_lookup[] = {
1261 	{3, 10, 0x0000},
1262 	{4, 10, 0x0000},
1263 	{5, 10, 0x0000},
1264 	{6, 10, 0x0000},
1265 	{7, 10, 0x0000},
1266 	{8, 10, 0x0000},
1267 	{9, 10, 0x0000},
1268 	{1, 1, 0x0000},
1269 	{-1, -1, 0x0000},
1270 };
1271 
1272 struct scale_ratio_to_reg_value_lookup easf_gain_ring4_4tap_lookup[] = {
1273 	{3, 10, 0x0000},
1274 	{4, 10, 0x0000},
1275 	{5, 10, 0x0000},
1276 	{6, 10, 0x9900},
1277 	{7, 10, 0xA100},
1278 	{8, 10, 0xA8C0},
1279 	{9, 10, 0xAB20},
1280 	{1, 1, 0xAC00},
1281 	{-1, -1, 0xAC00},
1282 };
1283 
1284 struct scale_ratio_to_reg_value_lookup easf_3tap_dntilt_uptilt_offset_lookup[] = {
1285 	{3, 10, 0x0000},
1286 	{4, 10, 0x0000},
1287 	{5, 10, 0x0000},
1288 	{6, 10, 0x0000},
1289 	{7, 10, 0x0000},
1290 	{8, 10, 0x4100},
1291 	{9, 10, 0x9F00},
1292 	{1, 1, 0xA4C0},
1293 	{-1, -1, 0xA8D8},
1294 };
1295 
1296 struct scale_ratio_to_reg_value_lookup easf_3tap_uptilt_maxval_lookup[] = {
1297 	{3, 10, 0x0000},
1298 	{4, 10, 0x0000},
1299 	{5, 10, 0x0000},
1300 	{6, 10, 0x0000},
1301 	{7, 10, 0x0000},
1302 	{8, 10, 0x4000},
1303 	{9, 10, 0x24FE},
1304 	{1, 1, 0x2D64},
1305 	{-1, -1, 0x3ADB},
1306 };
1307 
1308 struct scale_ratio_to_reg_value_lookup easf_3tap_dntilt_slope_lookup[] = {
1309 	{3, 10, 0x3800},
1310 	{4, 10, 0x3800},
1311 	{5, 10, 0x3800},
1312 	{6, 10, 0x3800},
1313 	{7, 10, 0x3800},
1314 	{8, 10, 0x3886},
1315 	{9, 10, 0x3940},
1316 	{1, 1, 0x3A4E},
1317 	{-1, -1, 0x3B66},
1318 };
1319 
1320 struct scale_ratio_to_reg_value_lookup easf_3tap_uptilt1_slope_lookup[] = {
1321 	{3, 10, 0x3800},
1322 	{4, 10, 0x3800},
1323 	{5, 10, 0x3800},
1324 	{6, 10, 0x3800},
1325 	{7, 10, 0x3800},
1326 	{8, 10, 0x36F4},
1327 	{9, 10, 0x359C},
1328 	{1, 1, 0x3360},
1329 	{-1, -1, 0x2F20},
1330 };
1331 
1332 struct scale_ratio_to_reg_value_lookup easf_3tap_uptilt2_slope_lookup[] = {
1333 	{3, 10, 0x0000},
1334 	{4, 10, 0x0000},
1335 	{5, 10, 0x0000},
1336 	{6, 10, 0x0000},
1337 	{7, 10, 0x0000},
1338 	{8, 10, 0x0000},
1339 	{9, 10, 0x359C},
1340 	{1, 1, 0x31F0},
1341 	{-1, -1, 0x1F00},
1342 };
1343 
1344 struct scale_ratio_to_reg_value_lookup easf_3tap_uptilt2_offset_lookup[] = {
1345 	{3, 10, 0x0000},
1346 	{4, 10, 0x0000},
1347 	{5, 10, 0x0000},
1348 	{6, 10, 0x0000},
1349 	{7, 10, 0x0000},
1350 	{8, 10, 0x0000},
1351 	{9, 10, 0x9F00},
1352 	{1, 1, 0xA400},
1353 	{-1, -1, 0x9E00},
1354 };
1355 
spl_init_easf_filter_coeffs(void)1356 void spl_init_easf_filter_coeffs(void)
1357 {
1358 	convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_30,
1359 		easf_filter_3tap_64p_ratio_0_30_s1_12, 3);
1360 	convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_40,
1361 		easf_filter_3tap_64p_ratio_0_40_s1_12, 3);
1362 	convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_50,
1363 		easf_filter_3tap_64p_ratio_0_50_s1_12, 3);
1364 	convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_60,
1365 		easf_filter_3tap_64p_ratio_0_60_s1_12, 3);
1366 	convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_70,
1367 		easf_filter_3tap_64p_ratio_0_70_s1_12, 3);
1368 	convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_80,
1369 		easf_filter_3tap_64p_ratio_0_80_s1_12, 3);
1370 	convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_0_90,
1371 		easf_filter_3tap_64p_ratio_0_90_s1_12, 3);
1372 	convert_filter_s1_10_to_s1_12(easf_filter_3tap_64p_ratio_1_00,
1373 		easf_filter_3tap_64p_ratio_1_00_s1_12, 3);
1374 
1375 	convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_30,
1376 		easf_filter_4tap_64p_ratio_0_30_s1_12, 4);
1377 	convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_40,
1378 		easf_filter_4tap_64p_ratio_0_40_s1_12, 4);
1379 	convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_50,
1380 		easf_filter_4tap_64p_ratio_0_50_s1_12, 4);
1381 	convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_60,
1382 		easf_filter_4tap_64p_ratio_0_60_s1_12, 4);
1383 	convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_70,
1384 		easf_filter_4tap_64p_ratio_0_70_s1_12, 4);
1385 	convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_80,
1386 		easf_filter_4tap_64p_ratio_0_80_s1_12, 4);
1387 	convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_0_90,
1388 		easf_filter_4tap_64p_ratio_0_90_s1_12, 4);
1389 	convert_filter_s1_10_to_s1_12(easf_filter_4tap_64p_ratio_1_00,
1390 		easf_filter_4tap_64p_ratio_1_00_s1_12, 4);
1391 
1392 	convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_30,
1393 		easf_filter_6tap_64p_ratio_0_30_s1_12, 6);
1394 	convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_40,
1395 		easf_filter_6tap_64p_ratio_0_40_s1_12, 6);
1396 	convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_50,
1397 		easf_filter_6tap_64p_ratio_0_50_s1_12, 6);
1398 	convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_60,
1399 		easf_filter_6tap_64p_ratio_0_60_s1_12, 6);
1400 	convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_70,
1401 		easf_filter_6tap_64p_ratio_0_70_s1_12, 6);
1402 	convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_80,
1403 		easf_filter_6tap_64p_ratio_0_80_s1_12, 6);
1404 	convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_0_90,
1405 		easf_filter_6tap_64p_ratio_0_90_s1_12, 6);
1406 	convert_filter_s1_10_to_s1_12(easf_filter_6tap_64p_ratio_1_00,
1407 		easf_filter_6tap_64p_ratio_1_00_s1_12, 6);
1408 }
1409 
spl_get_easf_filter_3tap_64p(struct spl_fixed31_32 ratio)1410 uint16_t *spl_get_easf_filter_3tap_64p(struct spl_fixed31_32 ratio)
1411 {
1412 	if (ratio.value < spl_fixpt_from_fraction(3, 10).value)
1413 		return easf_filter_3tap_64p_ratio_0_30_s1_12;
1414 	else if (ratio.value < spl_fixpt_from_fraction(4, 10).value)
1415 		return easf_filter_3tap_64p_ratio_0_40_s1_12;
1416 	else if (ratio.value < spl_fixpt_from_fraction(5, 10).value)
1417 		return easf_filter_3tap_64p_ratio_0_50_s1_12;
1418 	else if (ratio.value < spl_fixpt_from_fraction(6, 10).value)
1419 		return easf_filter_3tap_64p_ratio_0_60_s1_12;
1420 	else if (ratio.value < spl_fixpt_from_fraction(7, 10).value)
1421 		return easf_filter_3tap_64p_ratio_0_70_s1_12;
1422 	else if (ratio.value < spl_fixpt_from_fraction(8, 10).value)
1423 		return easf_filter_3tap_64p_ratio_0_80_s1_12;
1424 	else if (ratio.value < spl_fixpt_from_fraction(9, 10).value)
1425 		return easf_filter_3tap_64p_ratio_0_90_s1_12;
1426 	else
1427 		return easf_filter_3tap_64p_ratio_1_00_s1_12;
1428 }
1429 
spl_get_easf_filter_4tap_64p(struct spl_fixed31_32 ratio)1430 uint16_t *spl_get_easf_filter_4tap_64p(struct spl_fixed31_32 ratio)
1431 {
1432 	if (ratio.value < spl_fixpt_from_fraction(3, 10).value)
1433 		return easf_filter_4tap_64p_ratio_0_30_s1_12;
1434 	else if (ratio.value < spl_fixpt_from_fraction(4, 10).value)
1435 		return easf_filter_4tap_64p_ratio_0_40_s1_12;
1436 	else if (ratio.value < spl_fixpt_from_fraction(5, 10).value)
1437 		return easf_filter_4tap_64p_ratio_0_50_s1_12;
1438 	else if (ratio.value < spl_fixpt_from_fraction(6, 10).value)
1439 		return easf_filter_4tap_64p_ratio_0_60_s1_12;
1440 	else if (ratio.value < spl_fixpt_from_fraction(7, 10).value)
1441 		return easf_filter_4tap_64p_ratio_0_70_s1_12;
1442 	else if (ratio.value < spl_fixpt_from_fraction(8, 10).value)
1443 		return easf_filter_4tap_64p_ratio_0_80_s1_12;
1444 	else if (ratio.value < spl_fixpt_from_fraction(9, 10).value)
1445 		return easf_filter_4tap_64p_ratio_0_90_s1_12;
1446 	else
1447 		return easf_filter_4tap_64p_ratio_1_00_s1_12;
1448 }
1449 
spl_get_easf_filter_6tap_64p(struct spl_fixed31_32 ratio)1450 uint16_t *spl_get_easf_filter_6tap_64p(struct spl_fixed31_32 ratio)
1451 {
1452 	if (ratio.value < spl_fixpt_from_fraction(3, 10).value)
1453 		return easf_filter_6tap_64p_ratio_0_30_s1_12;
1454 	else if (ratio.value < spl_fixpt_from_fraction(4, 10).value)
1455 		return easf_filter_6tap_64p_ratio_0_40_s1_12;
1456 	else if (ratio.value < spl_fixpt_from_fraction(5, 10).value)
1457 		return easf_filter_6tap_64p_ratio_0_50_s1_12;
1458 	else if (ratio.value < spl_fixpt_from_fraction(6, 10).value)
1459 		return easf_filter_6tap_64p_ratio_0_60_s1_12;
1460 	else if (ratio.value < spl_fixpt_from_fraction(7, 10).value)
1461 		return easf_filter_6tap_64p_ratio_0_70_s1_12;
1462 	else if (ratio.value < spl_fixpt_from_fraction(8, 10).value)
1463 		return easf_filter_6tap_64p_ratio_0_80_s1_12;
1464 	else if (ratio.value < spl_fixpt_from_fraction(9, 10).value)
1465 		return easf_filter_6tap_64p_ratio_0_90_s1_12;
1466 	else
1467 		return easf_filter_6tap_64p_ratio_1_00_s1_12;
1468 }
1469 
spl_dscl_get_easf_filter_coeffs_64p(int taps,struct spl_fixed31_32 ratio)1470 uint16_t *spl_dscl_get_easf_filter_coeffs_64p(int taps, struct spl_fixed31_32 ratio)
1471 {
1472 	if (taps == 6)
1473 		return spl_get_easf_filter_6tap_64p(ratio);
1474 	else if (taps == 4)
1475 		return spl_get_easf_filter_4tap_64p(ratio);
1476 	else if (taps == 3)
1477 		return spl_get_easf_filter_3tap_64p(ratio);
1478 	else {
1479 		/* should never happen, bug */
1480 		SPL_BREAK_TO_DEBUGGER();
1481 		return NULL;
1482 	}
1483 }
1484 
spl_set_filters_data(struct dscl_prog_data * dscl_prog_data,const struct spl_scaler_data * data,bool enable_easf_v,bool enable_easf_h)1485 void spl_set_filters_data(struct dscl_prog_data *dscl_prog_data,
1486 		const struct spl_scaler_data *data, bool enable_easf_v,
1487 		bool enable_easf_h)
1488 {
1489 	/*
1490 	 * Old coefficients calculated scaling ratio = input / output
1491 	 * New coefficients are calculated based on = output / input
1492 	 */
1493 	if (enable_easf_h) {
1494 		dscl_prog_data->filter_h = spl_dscl_get_easf_filter_coeffs_64p(
1495 			data->taps.h_taps, data->recip_ratios.horz);
1496 
1497 		dscl_prog_data->filter_h_c = spl_dscl_get_easf_filter_coeffs_64p(
1498 			data->taps.h_taps_c, data->recip_ratios.horz_c);
1499 	} else {
1500 		dscl_prog_data->filter_h = spl_dscl_get_filter_coeffs_64p(
1501 			data->taps.h_taps, data->ratios.horz);
1502 
1503 		dscl_prog_data->filter_h_c = spl_dscl_get_filter_coeffs_64p(
1504 			data->taps.h_taps_c, data->ratios.horz_c);
1505 	}
1506 	if (enable_easf_v) {
1507 		dscl_prog_data->filter_v = spl_dscl_get_easf_filter_coeffs_64p(
1508 			data->taps.v_taps, data->recip_ratios.vert);
1509 
1510 		dscl_prog_data->filter_v_c = spl_dscl_get_easf_filter_coeffs_64p(
1511 			data->taps.v_taps_c, data->recip_ratios.vert_c);
1512 	} else {
1513 		dscl_prog_data->filter_v = spl_dscl_get_filter_coeffs_64p(
1514 			data->taps.v_taps, data->ratios.vert);
1515 
1516 		dscl_prog_data->filter_v_c = spl_dscl_get_filter_coeffs_64p(
1517 			data->taps.v_taps_c, data->ratios.vert_c);
1518 	}
1519 }
1520 
spl_easf_get_scale_ratio_to_reg_value(struct spl_fixed31_32 ratio,struct scale_ratio_to_reg_value_lookup * lookup_table_base_ptr,unsigned int num_entries)1521 static uint32_t spl_easf_get_scale_ratio_to_reg_value(struct spl_fixed31_32 ratio,
1522 	struct scale_ratio_to_reg_value_lookup *lookup_table_base_ptr,
1523 	unsigned int num_entries)
1524 {
1525 	unsigned int count = 0;
1526 	uint32_t value = 0;
1527 	struct scale_ratio_to_reg_value_lookup *lookup_table_index_ptr;
1528 
1529 	lookup_table_index_ptr = (lookup_table_base_ptr + num_entries - 1);
1530 	value = lookup_table_index_ptr->reg_value;
1531 
1532 	while (count < num_entries) {
1533 
1534 		lookup_table_index_ptr = (lookup_table_base_ptr + count);
1535 		if (lookup_table_index_ptr->numer < 0)
1536 			break;
1537 
1538 		if (ratio.value < spl_fixpt_from_fraction(
1539 			lookup_table_index_ptr->numer,
1540 			lookup_table_index_ptr->denom).value) {
1541 			value = lookup_table_index_ptr->reg_value;
1542 			break;
1543 		}
1544 
1545 		count++;
1546 	}
1547 	return value;
1548 }
spl_get_v_bf3_mode(struct spl_fixed31_32 ratio)1549 uint32_t spl_get_v_bf3_mode(struct spl_fixed31_32 ratio)
1550 {
1551 	uint32_t value;
1552 	unsigned int num_entries = sizeof(easf_v_bf3_mode_lookup) /
1553 		sizeof(struct scale_ratio_to_reg_value_lookup);
1554 	value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1555 		easf_v_bf3_mode_lookup, num_entries);
1556 	return value;
1557 }
spl_get_h_bf3_mode(struct spl_fixed31_32 ratio)1558 uint32_t spl_get_h_bf3_mode(struct spl_fixed31_32 ratio)
1559 {
1560 	uint32_t value;
1561 	unsigned int num_entries = sizeof(easf_h_bf3_mode_lookup) /
1562 		sizeof(struct scale_ratio_to_reg_value_lookup);
1563 	value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1564 		easf_h_bf3_mode_lookup, num_entries);
1565 	return value;
1566 }
spl_get_reducer_gain6(int taps,struct spl_fixed31_32 ratio)1567 uint32_t spl_get_reducer_gain6(int taps, struct spl_fixed31_32 ratio)
1568 {
1569 	uint32_t value;
1570 	unsigned int num_entries;
1571 
1572 	if (taps == 4) {
1573 		num_entries = sizeof(easf_reducer_gain6_4tap_lookup) /
1574 			sizeof(struct scale_ratio_to_reg_value_lookup);
1575 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1576 			easf_reducer_gain6_4tap_lookup, num_entries);
1577 	} else if (taps == 6) {
1578 		num_entries = sizeof(easf_reducer_gain6_6tap_lookup) /
1579 			sizeof(struct scale_ratio_to_reg_value_lookup);
1580 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1581 			easf_reducer_gain6_6tap_lookup, num_entries);
1582 	} else
1583 		value = 0;
1584 	return value;
1585 }
spl_get_reducer_gain4(int taps,struct spl_fixed31_32 ratio)1586 uint32_t spl_get_reducer_gain4(int taps, struct spl_fixed31_32 ratio)
1587 {
1588 	uint32_t value;
1589 	unsigned int num_entries;
1590 
1591 	if (taps == 4) {
1592 		num_entries = sizeof(easf_reducer_gain4_4tap_lookup) /
1593 			sizeof(struct scale_ratio_to_reg_value_lookup);
1594 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1595 			easf_reducer_gain4_4tap_lookup, num_entries);
1596 	} else if (taps == 6) {
1597 		num_entries = sizeof(easf_reducer_gain4_6tap_lookup) /
1598 			sizeof(struct scale_ratio_to_reg_value_lookup);
1599 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1600 			easf_reducer_gain4_6tap_lookup, num_entries);
1601 	} else
1602 		value = 0;
1603 	return value;
1604 }
spl_get_gainRing6(int taps,struct spl_fixed31_32 ratio)1605 uint32_t spl_get_gainRing6(int taps, struct spl_fixed31_32 ratio)
1606 {
1607 	uint32_t value;
1608 	unsigned int num_entries;
1609 
1610 	if (taps == 4) {
1611 		num_entries = sizeof(easf_gain_ring6_4tap_lookup) /
1612 			sizeof(struct scale_ratio_to_reg_value_lookup);
1613 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1614 			easf_gain_ring6_4tap_lookup, num_entries);
1615 	} else if (taps == 6) {
1616 		num_entries = sizeof(easf_gain_ring6_6tap_lookup) /
1617 			sizeof(struct scale_ratio_to_reg_value_lookup);
1618 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1619 			easf_gain_ring6_6tap_lookup, num_entries);
1620 	} else
1621 		value = 0;
1622 	return value;
1623 }
spl_get_gainRing4(int taps,struct spl_fixed31_32 ratio)1624 uint32_t spl_get_gainRing4(int taps, struct spl_fixed31_32 ratio)
1625 {
1626 	uint32_t value;
1627 	unsigned int num_entries;
1628 
1629 	if (taps == 4) {
1630 		num_entries = sizeof(easf_gain_ring4_4tap_lookup) /
1631 			sizeof(struct scale_ratio_to_reg_value_lookup);
1632 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1633 			easf_gain_ring4_4tap_lookup, num_entries);
1634 	} else if (taps == 6) {
1635 		num_entries = sizeof(easf_gain_ring4_6tap_lookup) /
1636 			sizeof(struct scale_ratio_to_reg_value_lookup);
1637 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1638 			easf_gain_ring4_6tap_lookup, num_entries);
1639 	} else
1640 		value = 0;
1641 	return value;
1642 }
spl_get_3tap_dntilt_uptilt_offset(int taps,struct spl_fixed31_32 ratio)1643 uint32_t spl_get_3tap_dntilt_uptilt_offset(int taps, struct spl_fixed31_32 ratio)
1644 {
1645 	uint32_t value;
1646 	unsigned int num_entries;
1647 
1648 	if (taps == 3) {
1649 		num_entries = sizeof(easf_3tap_dntilt_uptilt_offset_lookup) /
1650 			sizeof(struct scale_ratio_to_reg_value_lookup);
1651 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1652 			easf_3tap_dntilt_uptilt_offset_lookup, num_entries);
1653 	} else
1654 		value = 0;
1655 	return value;
1656 }
spl_get_3tap_uptilt_maxval(int taps,struct spl_fixed31_32 ratio)1657 uint32_t spl_get_3tap_uptilt_maxval(int taps, struct spl_fixed31_32 ratio)
1658 {
1659 	uint32_t value;
1660 	unsigned int num_entries;
1661 
1662 	if (taps == 3) {
1663 		num_entries = sizeof(easf_3tap_uptilt_maxval_lookup) /
1664 			sizeof(struct scale_ratio_to_reg_value_lookup);
1665 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1666 			easf_3tap_uptilt_maxval_lookup, num_entries);
1667 	} else
1668 		value = 0;
1669 	return value;
1670 }
spl_get_3tap_dntilt_slope(int taps,struct spl_fixed31_32 ratio)1671 uint32_t spl_get_3tap_dntilt_slope(int taps, struct spl_fixed31_32 ratio)
1672 {
1673 	uint32_t value;
1674 	unsigned int num_entries;
1675 
1676 	if (taps == 3) {
1677 		num_entries = sizeof(easf_3tap_dntilt_slope_lookup) /
1678 			sizeof(struct scale_ratio_to_reg_value_lookup);
1679 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1680 			easf_3tap_dntilt_slope_lookup, num_entries);
1681 	} else
1682 		value = 0;
1683 	return value;
1684 }
spl_get_3tap_uptilt1_slope(int taps,struct spl_fixed31_32 ratio)1685 uint32_t spl_get_3tap_uptilt1_slope(int taps, struct spl_fixed31_32 ratio)
1686 {
1687 	uint32_t value;
1688 	unsigned int num_entries;
1689 
1690 	if (taps == 3) {
1691 		num_entries = sizeof(easf_3tap_uptilt1_slope_lookup) /
1692 			sizeof(struct scale_ratio_to_reg_value_lookup);
1693 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1694 			easf_3tap_uptilt1_slope_lookup, num_entries);
1695 	} else
1696 		value = 0;
1697 	return value;
1698 }
spl_get_3tap_uptilt2_slope(int taps,struct spl_fixed31_32 ratio)1699 uint32_t spl_get_3tap_uptilt2_slope(int taps, struct spl_fixed31_32 ratio)
1700 {
1701 	uint32_t value;
1702 	unsigned int num_entries;
1703 
1704 	if (taps == 3) {
1705 		num_entries = sizeof(easf_3tap_uptilt2_slope_lookup) /
1706 			sizeof(struct scale_ratio_to_reg_value_lookup);
1707 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1708 			easf_3tap_uptilt2_slope_lookup, num_entries);
1709 	} else
1710 		value = 0;
1711 	return value;
1712 }
spl_get_3tap_uptilt2_offset(int taps,struct spl_fixed31_32 ratio)1713 uint32_t spl_get_3tap_uptilt2_offset(int taps, struct spl_fixed31_32 ratio)
1714 {
1715 	uint32_t value;
1716 	unsigned int num_entries;
1717 
1718 	if (taps == 3) {
1719 		num_entries = sizeof(easf_3tap_uptilt2_offset_lookup) /
1720 			sizeof(struct scale_ratio_to_reg_value_lookup);
1721 		value = spl_easf_get_scale_ratio_to_reg_value(ratio,
1722 			easf_3tap_uptilt2_offset_lookup, num_entries);
1723 	} else
1724 		value = 0;
1725 	return value;
1726 }
1727