xref: /rockchip-linux_mpp/mpp/vproc/vdpp/vdpp_common.c (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
1*437bfbebSnyanmisaka /* SPDX-License-Identifier: Apache-2.0 OR MIT */
2*437bfbebSnyanmisaka /*
3*437bfbebSnyanmisaka  * Copyright (c) 2024 Rockchip Electronics Co., Ltd.
4*437bfbebSnyanmisaka  */
5*437bfbebSnyanmisaka 
6*437bfbebSnyanmisaka #define MODULE_TAG "vdpp_common"
7*437bfbebSnyanmisaka 
8*437bfbebSnyanmisaka #include "vdpp_common.h"
9*437bfbebSnyanmisaka 
10*437bfbebSnyanmisaka const char *working_mode_name[] = {
11*437bfbebSnyanmisaka     NULL,
12*437bfbebSnyanmisaka     NULL,
13*437bfbebSnyanmisaka     "VEP MODE",
14*437bfbebSnyanmisaka     "DCI HIST MODE",
15*437bfbebSnyanmisaka };
16*437bfbebSnyanmisaka 
17*437bfbebSnyanmisaka #define VDPP_SET_ZME_COEF(index, row, col) \
18*437bfbebSnyanmisaka     do { \
19*437bfbebSnyanmisaka         zme->yrgb_hor_coe.reg##index.yrgb_hor_coe##row##_##col = \
20*437bfbebSnyanmisaka         yrgb_scl_info.xscl_zme_coe[row][col]; \
21*437bfbebSnyanmisaka         zme->yrgb_ver_coe.reg##index.yrgb_ver_coe##row##_##col = \
22*437bfbebSnyanmisaka         yrgb_scl_info.yscl_zme_coe[row][col]; \
23*437bfbebSnyanmisaka         zme->cbcr_hor_coe.reg##index.cbcr_hor_coe##row##_##col = \
24*437bfbebSnyanmisaka         cbcr_scl_info.xscl_zme_coe[row][col]; \
25*437bfbebSnyanmisaka         zme->cbcr_ver_coe.reg##index.cbcr_ver_coe##row##_##col = \
26*437bfbebSnyanmisaka         cbcr_scl_info.yscl_zme_coe[row][col]; \
27*437bfbebSnyanmisaka     } while (0);
28*437bfbebSnyanmisaka 
29*437bfbebSnyanmisaka static RK_U16 vdpp_scale_threshold[] = {
30*437bfbebSnyanmisaka     2667, 2000, 1500, 1000, 833, 700, 500, 330, 250,
31*437bfbebSnyanmisaka };
32*437bfbebSnyanmisaka 
33*437bfbebSnyanmisaka static RK_S16 g_zme_tap8_coeff[11][17][8] = {
34*437bfbebSnyanmisaka //>=2.667
35*437bfbebSnyanmisaka     {
36*437bfbebSnyanmisaka         {   4, -12,  20, 488,  20, -12,   4,   0},
37*437bfbebSnyanmisaka         {   4,  -8,   8, 484,  36, -16,   4,   0},
38*437bfbebSnyanmisaka         {   4,  -4,  -4, 476,  52, -20,   8,   0},
39*437bfbebSnyanmisaka         {   0,   0, -16, 480,  68, -28,   8,   0},
40*437bfbebSnyanmisaka         {   0,   4, -24, 472,  84, -32,   8,   0},
41*437bfbebSnyanmisaka         {   0,   4, -36, 468, 100, -36,  12,   0},
42*437bfbebSnyanmisaka         {   0,   8, -44, 456, 120, -40,  12,   0},
43*437bfbebSnyanmisaka         {   0,  12, -52, 448, 136, -44,  12,   0},
44*437bfbebSnyanmisaka         {   0,  12, -56, 436, 156, -48,  16,  -4},
45*437bfbebSnyanmisaka         {  -4,  16, -60, 424, 176, -52,  16,  -4},
46*437bfbebSnyanmisaka         {  -4,  16, -64, 412, 196, -56,  16,  -4},
47*437bfbebSnyanmisaka         {  -4,  16, -68, 400, 216, -60,  16,  -4},
48*437bfbebSnyanmisaka         {  -4,  20, -72, 380, 236, -64,  20,  -4},
49*437bfbebSnyanmisaka         {  -4,  20, -72, 364, 256, -68,  20,  -4},
50*437bfbebSnyanmisaka         {  -4,  20, -72, 348, 272, -68,  20,  -4},
51*437bfbebSnyanmisaka         {  -4,  20, -72, 332, 292, -72,  20,  -4},
52*437bfbebSnyanmisaka         {  -4,  20, -72, 312, 312, -72,  20,  -4},
53*437bfbebSnyanmisaka     },
54*437bfbebSnyanmisaka //>=2
55*437bfbebSnyanmisaka     {
56*437bfbebSnyanmisaka         {   8, -24,  44, 456,  44, -24,   8,   0},
57*437bfbebSnyanmisaka         {   8, -20,  28, 460,  56, -28,   8,   0},
58*437bfbebSnyanmisaka         {   8, -16,  16, 452,  72, -32,  12,   0},
59*437bfbebSnyanmisaka         {   4, -12,   8, 448,  88, -36,  12,   0},
60*437bfbebSnyanmisaka         {   4,  -8,  -4, 444, 104, -40,  12,   0},
61*437bfbebSnyanmisaka         {   4,  -8, -16, 444, 120, -44,  12,   0},
62*437bfbebSnyanmisaka         {   4,  -4, -24, 432, 136, -48,  16,   0},
63*437bfbebSnyanmisaka         {   4,   0, -32, 428, 152, -52,  16,  -4},
64*437bfbebSnyanmisaka         {   0,   4, -40, 424, 168, -56,  16,  -4},
65*437bfbebSnyanmisaka         {   0,   4, -44, 412, 188, -60,  16,  -4},
66*437bfbebSnyanmisaka         {   0,   8, -52, 400, 204, -60,  16,  -4},
67*437bfbebSnyanmisaka         {   0,   8, -56, 388, 224, -64,  16,  -4},
68*437bfbebSnyanmisaka         {   0,  12, -60, 372, 240, -64,  16,  -4},
69*437bfbebSnyanmisaka         {   0,  12, -64, 356, 264, -68,  16,  -4},
70*437bfbebSnyanmisaka         {   0,  12, -64, 340, 280, -68,  16,  -4},
71*437bfbebSnyanmisaka         {   0,  16, -68, 324, 296, -68,  16,  -4},
72*437bfbebSnyanmisaka         {   0,  16, -68, 308, 308, -68,  16,   0},
73*437bfbebSnyanmisaka     },
74*437bfbebSnyanmisaka //>=1.5
75*437bfbebSnyanmisaka     {
76*437bfbebSnyanmisaka         {  12, -32,  64, 424,  64, -32,  12,   0},
77*437bfbebSnyanmisaka         {   8, -32,  52, 432,  76, -36,  12,   0},
78*437bfbebSnyanmisaka         {   8, -28,  40, 432,  88, -40,  12,   0},
79*437bfbebSnyanmisaka         {   8, -24,  28, 428, 104, -44,  12,   0},
80*437bfbebSnyanmisaka         {   8, -20,  16, 424, 120, -48,  12,   0},
81*437bfbebSnyanmisaka         {   8, -16,   8, 416, 132, -48,  12,   0},
82*437bfbebSnyanmisaka         {   4, -16,  -4, 420, 148, -52,  12,   0},
83*437bfbebSnyanmisaka         {   4, -12, -12, 412, 164, -56,  12,   0},
84*437bfbebSnyanmisaka         {   4,  -8, -20, 400, 180, -56,  12,   0},
85*437bfbebSnyanmisaka         {   4,  -4, -28, 388, 196, -56,  12,   0},
86*437bfbebSnyanmisaka         {   4,  -4, -32, 380, 212, -60,  12,   0},
87*437bfbebSnyanmisaka         {   4,   0, -40, 368, 228, -60,  12,   0},
88*437bfbebSnyanmisaka         {   4,   0, -44, 356, 244, -60,  12,   0},
89*437bfbebSnyanmisaka         {   0,   4, -48, 344, 260, -60,  12,   0},
90*437bfbebSnyanmisaka         {   0,   4, -52, 332, 276, -60,  12,   0},
91*437bfbebSnyanmisaka         {   0,   8, -56, 320, 292, -60,   8,   0},
92*437bfbebSnyanmisaka         {   0,   8, -56, 304, 304, -56,   8,   0},
93*437bfbebSnyanmisaka     },
94*437bfbebSnyanmisaka //>1
95*437bfbebSnyanmisaka     {
96*437bfbebSnyanmisaka         {  12, -40,  84, 400,  84, -40,  12,   0},
97*437bfbebSnyanmisaka         {  12, -40,  72, 404,  96, -44,  12,   0},
98*437bfbebSnyanmisaka         {  12, -36,  60, 404, 108, -48,  12,   0},
99*437bfbebSnyanmisaka         {   8, -32,  48, 404, 120, -48,  12,   0},
100*437bfbebSnyanmisaka         {   8, -32,  36, 404, 136, -52,  12,   0},
101*437bfbebSnyanmisaka         {   8, -28,  28, 396, 148, -52,  12,   0},
102*437bfbebSnyanmisaka         {   8, -24,  16, 392, 160, -52,  12,   0},
103*437bfbebSnyanmisaka         {   8, -20,   8, 384, 176, -56,  12,   0},
104*437bfbebSnyanmisaka         {   8, -20,   0, 384, 188, -56,   8,   0},
105*437bfbebSnyanmisaka         {   8, -16,  -8, 372, 204, -56,   8,   0},
106*437bfbebSnyanmisaka         {   8, -12, -16, 364, 216, -56,   8,   0},
107*437bfbebSnyanmisaka         {   4, -12, -20, 356, 232, -56,   8,   0},
108*437bfbebSnyanmisaka         {   4,  -8, -28, 348, 244, -56,   8,   0},
109*437bfbebSnyanmisaka         {   4,  -8, -32, 332, 264, -52,   4,   0},
110*437bfbebSnyanmisaka         {   4,  -4, -36, 324, 272, -52,   4,   0},
111*437bfbebSnyanmisaka         {   4,   0, -40, 312, 280, -48,   0,   4},
112*437bfbebSnyanmisaka         {   4,   0, -44, 296, 296, -44,   0,   4},
113*437bfbebSnyanmisaka     },
114*437bfbebSnyanmisaka //==1
115*437bfbebSnyanmisaka     {
116*437bfbebSnyanmisaka         { 0,  0,  0,   511, 0,   0,   0,  0 },
117*437bfbebSnyanmisaka         { -1, 3,  -12, 511, 14,  -4,  1,  0 },
118*437bfbebSnyanmisaka         { -2, 6,  -23, 509, 28,  -8,  2,  0 },
119*437bfbebSnyanmisaka         { -2, 9,  -33, 503, 44,  -12, 3,  0 },
120*437bfbebSnyanmisaka         { -3, 11, -41, 496, 61,  -16, 4,  0 },
121*437bfbebSnyanmisaka         { -3, 13, -48, 488, 79,  -21, 5,  -1 },
122*437bfbebSnyanmisaka         { -3, 14, -54, 477, 98,  -25, 7,  -2 },
123*437bfbebSnyanmisaka         { -4, 16, -59, 465, 118, -30, 8,  -2 },
124*437bfbebSnyanmisaka         { -4, 17, -63, 451, 138, -35, 9,  -1 },
125*437bfbebSnyanmisaka         { -4, 18, -66, 437, 158, -39, 10, -2 },
126*437bfbebSnyanmisaka         { -4, 18, -68, 421, 180, -44, 11, -2 },
127*437bfbebSnyanmisaka         { -4, 18, -69, 404, 201, -48, 13, -3 },
128*437bfbebSnyanmisaka         { -4, 18, -70, 386, 222, -52, 14, -2 },
129*437bfbebSnyanmisaka         { -4, 18, -70, 368, 244, -56, 15, -3 },
130*437bfbebSnyanmisaka         { -4, 18, -69, 348, 265, -59, 16, -3 },
131*437bfbebSnyanmisaka         { -4, 18, -67, 329, 286, -63, 16, -3 },
132*437bfbebSnyanmisaka         { -3, 17, -65, 307, 307, -65, 17, -3 },
133*437bfbebSnyanmisaka     },
134*437bfbebSnyanmisaka //>=0.833
135*437bfbebSnyanmisaka     {
136*437bfbebSnyanmisaka         { -16, 0,   145, 254, 145, 0,  -16, 0 },
137*437bfbebSnyanmisaka         { -16, -2,  140, 253, 151, 3,  -17, 0 },
138*437bfbebSnyanmisaka         { -15, -5,  135, 253, 157, 5,  -18, 0 },
139*437bfbebSnyanmisaka         { -14, -7,  129, 252, 162, 8,  -18, 0 },
140*437bfbebSnyanmisaka         { -13, -9,  123, 252, 167, 11, -19, 0 },
141*437bfbebSnyanmisaka         { -13, -11, 118, 250, 172, 15, -19, 0 },
142*437bfbebSnyanmisaka         { -12, -12, 112, 250, 177, 18, -20, -1 },
143*437bfbebSnyanmisaka         { -11, -14, 107, 247, 183, 21, -20, -1 },
144*437bfbebSnyanmisaka         { -10, -15, 101, 245, 188, 25, -21, -1 },
145*437bfbebSnyanmisaka         { -9,  -16, 96,  243, 192, 29, -21, -2 },
146*437bfbebSnyanmisaka         { -8,  -18, 90,  242, 197, 33, -22, -2 },
147*437bfbebSnyanmisaka         { -8,  -19, 85,  239, 202, 37, -22, -2 },
148*437bfbebSnyanmisaka         { -7,  -19, 80,  236, 206, 41, -22, -3 },
149*437bfbebSnyanmisaka         { -7,  -20, 75,  233, 210, 46, -22, -3 },
150*437bfbebSnyanmisaka         { -6,  -21, 69,  230, 215, 50, -22, -3 },
151*437bfbebSnyanmisaka         { -5,  -21, 65,  226, 219, 55, -22, -5 },
152*437bfbebSnyanmisaka         { -5,  -21, 60,  222, 222, 60, -21, -5 },
153*437bfbebSnyanmisaka     },
154*437bfbebSnyanmisaka //>=0.7
155*437bfbebSnyanmisaka     {
156*437bfbebSnyanmisaka         { -16, 0,   145, 254, 145, 0,  -16, 0 },
157*437bfbebSnyanmisaka         { -16, -2,  140, 253, 151, 3,  -17, 0 },
158*437bfbebSnyanmisaka         { -15, -5,  135, 253, 157, 5,  -18, 0 },
159*437bfbebSnyanmisaka         { -14, -7,  129, 252, 162, 8,  -18, 0 },
160*437bfbebSnyanmisaka         { -13, -9,  123, 252, 167, 11, -19, 0 },
161*437bfbebSnyanmisaka         { -13, -11, 118, 250, 172, 15, -19, 0 },
162*437bfbebSnyanmisaka         { -12, -12, 112, 250, 177, 18, -20, -1 },
163*437bfbebSnyanmisaka         { -11, -14, 107, 247, 183, 21, -20, -1 },
164*437bfbebSnyanmisaka         { -10, -15, 101, 245, 188, 25, -21, -1 },
165*437bfbebSnyanmisaka         { -9,  -16, 96,  243, 192, 29, -21, -2 },
166*437bfbebSnyanmisaka         { -8,  -18, 90,  242, 197, 33, -22, -2 },
167*437bfbebSnyanmisaka         { -8,  -19, 85,  239, 202, 37, -22, -2 },
168*437bfbebSnyanmisaka         { -7,  -19, 80,  236, 206, 41, -22, -3 },
169*437bfbebSnyanmisaka         { -7,  -20, 75,  233, 210, 46, -22, -3 },
170*437bfbebSnyanmisaka         { -6,  -21, 69,  230, 215, 50, -22, -3 },
171*437bfbebSnyanmisaka         { -5,  -21, 65,  226, 219, 55, -22, -5 },
172*437bfbebSnyanmisaka         { -5,  -21, 60,  222, 222, 60, -21, -5 },
173*437bfbebSnyanmisaka     },
174*437bfbebSnyanmisaka //>=0.5
175*437bfbebSnyanmisaka     {
176*437bfbebSnyanmisaka         { -16, 0,   145, 254, 145, 0,  -16, 0 },
177*437bfbebSnyanmisaka         { -16, -2,  140, 253, 151, 3,  -17, 0 },
178*437bfbebSnyanmisaka         { -15, -5,  135, 253, 157, 5,  -18, 0 },
179*437bfbebSnyanmisaka         { -14, -7,  129, 252, 162, 8,  -18, 0 },
180*437bfbebSnyanmisaka         { -13, -9,  123, 252, 167, 11, -19, 0 },
181*437bfbebSnyanmisaka         { -13, -11, 118, 250, 172, 15, -19, 0 },
182*437bfbebSnyanmisaka         { -12, -12, 112, 250, 177, 18, -20, -1 },
183*437bfbebSnyanmisaka         { -11, -14, 107, 247, 183, 21, -20, -1 },
184*437bfbebSnyanmisaka         { -10, -15, 101, 245, 188, 25, -21, -1 },
185*437bfbebSnyanmisaka         { -9,  -16, 96,  243, 192, 29, -21, -2 },
186*437bfbebSnyanmisaka         { -8,  -18, 90,  242, 197, 33, -22, -2 },
187*437bfbebSnyanmisaka         { -8,  -19, 85,  239, 202, 37, -22, -2 },
188*437bfbebSnyanmisaka         { -7,  -19, 80,  236, 206, 41, -22, -3 },
189*437bfbebSnyanmisaka         { -7,  -20, 75,  233, 210, 46, -22, -3 },
190*437bfbebSnyanmisaka         { -6,  -21, 69,  230, 215, 50, -22, -3 },
191*437bfbebSnyanmisaka         { -5,  -21, 65,  226, 219, 55, -22, -5 },
192*437bfbebSnyanmisaka         { -5,  -21, 60,  222, 222, 60, -21, -5 },
193*437bfbebSnyanmisaka     },
194*437bfbebSnyanmisaka //>=0.33
195*437bfbebSnyanmisaka     {
196*437bfbebSnyanmisaka         { -18, 18,  144, 226, 144, 19, -17, -4 },
197*437bfbebSnyanmisaka         { -17, 16,  139, 226, 148, 21, -17, -4 },
198*437bfbebSnyanmisaka         { -17, 13,  135, 227, 153, 24, -18, -5 },
199*437bfbebSnyanmisaka         { -17, 11,  131, 226, 157, 27, -18, -5 },
200*437bfbebSnyanmisaka         { -17, 9,   126, 225, 161, 30, -17, -5 },
201*437bfbebSnyanmisaka         { -16, 6,   122, 225, 165, 33, -17, -6 },
202*437bfbebSnyanmisaka         { -16, 4,   118, 224, 169, 37, -17, -7 },
203*437bfbebSnyanmisaka         { -16, 2,   113, 224, 173, 40, -17, -7 },
204*437bfbebSnyanmisaka         { -15, 0,   109, 222, 177, 43, -17, -7 },
205*437bfbebSnyanmisaka         { -15, -1,  104, 220, 181, 47, -16, -8 },
206*437bfbebSnyanmisaka         { -14, -3,  100, 218, 185, 51, -16, -9 },
207*437bfbebSnyanmisaka         { -14, -5,  96,  217, 188, 54, -15, -9 },
208*437bfbebSnyanmisaka         { -14, -6,  91,  214, 192, 58, -14, -9 },
209*437bfbebSnyanmisaka         { -13, -7,  87,  212, 195, 62, -14, -10 },
210*437bfbebSnyanmisaka         { -13, -9,  83,  210, 198, 66, -13, -10 },
211*437bfbebSnyanmisaka         { -12, -10, 79,  207, 201, 70, -12, -11 },
212*437bfbebSnyanmisaka         { -12, -11, 74,  205, 205, 74, -11, -12 },
213*437bfbebSnyanmisaka     },
214*437bfbebSnyanmisaka //>=0.25
215*437bfbebSnyanmisaka     {
216*437bfbebSnyanmisaka         { 14, 66, 113, 133, 113, 66, 14, -7 },
217*437bfbebSnyanmisaka         { 12, 65, 112, 133, 114, 68, 15, -7 },
218*437bfbebSnyanmisaka         { 11, 63, 111, 132, 115, 70, 17, -7 },
219*437bfbebSnyanmisaka         { 10, 62, 110, 132, 116, 71, 18, -7 },
220*437bfbebSnyanmisaka         { 8,  60, 108, 132, 118, 73, 20, -7 },
221*437bfbebSnyanmisaka         { 7,  58, 107, 132, 119, 75, 21, -7 },
222*437bfbebSnyanmisaka         { 6,  56, 106, 132, 120, 76, 23, -7 },
223*437bfbebSnyanmisaka         { 5,  55, 105, 131, 121, 78, 24, -7 },
224*437bfbebSnyanmisaka         { 4,  53, 103, 131, 122, 80, 26, -7 },
225*437bfbebSnyanmisaka         { 3,  51, 102, 131, 122, 81, 28, -6 },
226*437bfbebSnyanmisaka         { 2,  50, 101, 130, 123, 83, 29, -6 },
227*437bfbebSnyanmisaka         { 1,  48, 99,  131, 124, 84, 31, -6 },
228*437bfbebSnyanmisaka         { 0,  46, 98,  129, 125, 86, 33, -5 },
229*437bfbebSnyanmisaka         { -1, 45, 97,  128, 126, 88, 34, -5 },
230*437bfbebSnyanmisaka         { -2, 43, 95,  130, 126, 89, 36, -5 },
231*437bfbebSnyanmisaka         { -3, 41, 94,  128, 127, 91, 38, -4 },
232*437bfbebSnyanmisaka         { -3, 39, 92,  128, 128, 92, 39, -3 },
233*437bfbebSnyanmisaka     },
234*437bfbebSnyanmisaka //others
235*437bfbebSnyanmisaka     {
236*437bfbebSnyanmisaka         { 39, 69, 93, 102, 93, 69, 39, 8 },
237*437bfbebSnyanmisaka         { 38, 68, 92, 102, 93, 70, 40, 9 },
238*437bfbebSnyanmisaka         { 37, 67, 91, 102, 93, 71, 41, 10 },
239*437bfbebSnyanmisaka         { 36, 66, 91, 101, 94, 71, 42, 11 },
240*437bfbebSnyanmisaka         { 35, 65, 90, 102, 94, 72, 43, 11 },
241*437bfbebSnyanmisaka         { 34, 64, 89, 102, 94, 73, 44, 12 },
242*437bfbebSnyanmisaka         { 33, 63, 88, 101, 95, 74, 45, 13 },
243*437bfbebSnyanmisaka         { 32, 62, 88, 100, 95, 75, 46, 14 },
244*437bfbebSnyanmisaka         { 31, 62, 87, 100, 95, 75, 47, 15 },
245*437bfbebSnyanmisaka         { 30, 61, 86, 99,  96, 76, 48, 16 },
246*437bfbebSnyanmisaka         { 29, 60, 86, 98,  96, 77, 49, 17 },
247*437bfbebSnyanmisaka         { 28, 59, 85, 98,  96, 78, 50, 18 },
248*437bfbebSnyanmisaka         { 27, 58, 84, 99,  97, 78, 50, 19 },
249*437bfbebSnyanmisaka         { 26, 57, 83, 99,  97, 79, 51, 20 },
250*437bfbebSnyanmisaka         { 25, 56, 83, 98,  97, 80, 52, 21 },
251*437bfbebSnyanmisaka         { 24, 55, 82, 97,  98, 81, 53, 22 },
252*437bfbebSnyanmisaka         { 23, 54, 81, 98,  98, 81, 54, 23 },
253*437bfbebSnyanmisaka     }
254*437bfbebSnyanmisaka };
255*437bfbebSnyanmisaka 
256*437bfbebSnyanmisaka static RK_S16 g_zme_tap6_coeff[11][17][8] = {
257*437bfbebSnyanmisaka //>=2.667
258*437bfbebSnyanmisaka     {
259*437bfbebSnyanmisaka         { -12,  20, 492,  20, -12,   4,   0,   0},
260*437bfbebSnyanmisaka         {  -8,   8, 488,  36, -16,   4,   0,   0},
261*437bfbebSnyanmisaka         {  -4,  -4, 488,  48, -20,   4,   0,   0},
262*437bfbebSnyanmisaka         {   0, -16, 484,  64, -24,   4,   0,   0},
263*437bfbebSnyanmisaka         {   0, -24, 476,  80, -28,   8,   0,   0},
264*437bfbebSnyanmisaka         {   4, -32, 464, 100, -32,   8,   0,   0},
265*437bfbebSnyanmisaka         {   8, -40, 456, 116, -36,   8,   0,   0},
266*437bfbebSnyanmisaka         {   8, -48, 448, 136, -40,   8,   0,   0},
267*437bfbebSnyanmisaka         {  12, -52, 436, 152, -44,   8,   0,   0},
268*437bfbebSnyanmisaka         {  12, -60, 424, 172, -48,  12,   0,   0},
269*437bfbebSnyanmisaka         {  12, -64, 412, 192, -52,  12,   0,   0},
270*437bfbebSnyanmisaka         {  16, -64, 392, 212, -56,  12,   0,   0},
271*437bfbebSnyanmisaka         {  16, -68, 380, 232, -60,  12,   0,   0},
272*437bfbebSnyanmisaka         {  16, -68, 360, 248, -60,  16,   0,   0},
273*437bfbebSnyanmisaka         {  16, -68, 344, 268, -64,  16,   0,   0},
274*437bfbebSnyanmisaka         {  16, -68, 328, 288, -68,  16,   0,   0},
275*437bfbebSnyanmisaka         {  16, -68, 308, 308, -68,  16,   0,   0},
276*437bfbebSnyanmisaka     },
277*437bfbebSnyanmisaka //>=2
278*437bfbebSnyanmisaka     {
279*437bfbebSnyanmisaka         { -20,  40, 468,  40, -20,   4,   0,   0},
280*437bfbebSnyanmisaka         { -16,  28, 464,  56, -24,   4,   0,   0},
281*437bfbebSnyanmisaka         { -16,  16, 464,  68, -28,   8,   0,   0},
282*437bfbebSnyanmisaka         { -12,   4, 460,  84, -32,   8,   0,   0},
283*437bfbebSnyanmisaka         {  -8,  -4, 452, 100, -36,   8,   0,   0},
284*437bfbebSnyanmisaka         {  -4, -12, 444, 116, -40,   8,   0,   0},
285*437bfbebSnyanmisaka         {  -4, -24, 440, 136, -44,   8,   0,   0},
286*437bfbebSnyanmisaka         {   0, -32, 432, 152, -48,   8,   0,   0},
287*437bfbebSnyanmisaka         {   0, -36, 416, 168, -48,  12,   0,   0},
288*437bfbebSnyanmisaka         {   4, -44, 408, 184, -52,  12,   0,   0},
289*437bfbebSnyanmisaka         {   4, -48, 400, 200, -56,  12,   0,   0},
290*437bfbebSnyanmisaka         {   8, -52, 380, 220, -56,  12,   0,   0},
291*437bfbebSnyanmisaka         {   8, -56, 372, 236, -60,  12,   0,   0},
292*437bfbebSnyanmisaka         {   8, -60, 356, 256, -60,  12,   0,   0},
293*437bfbebSnyanmisaka         {  12, -60, 340, 268, -60,  12,   0,   0},
294*437bfbebSnyanmisaka         {  12, -60, 324, 288, -64,  12,   0,   0},
295*437bfbebSnyanmisaka         {  12, -64, 308, 308, -64,  12,   0,   0},
296*437bfbebSnyanmisaka     },
297*437bfbebSnyanmisaka //>=1.5
298*437bfbebSnyanmisaka     {
299*437bfbebSnyanmisaka         { -28,  60, 440,  60, -28,   8,   0,   0},
300*437bfbebSnyanmisaka         { -28,  48, 440,  76, -32,   8,   0,   0},
301*437bfbebSnyanmisaka         { -24,  36, 440,  88, -36,   8,   0,   0},
302*437bfbebSnyanmisaka         { -20,  28, 432, 104, -40,   8,   0,   0},
303*437bfbebSnyanmisaka         { -16,  16, 428, 116, -40,   8,   0,   0},
304*437bfbebSnyanmisaka         { -16,   4, 428, 132, -44,   8,   0,   0},
305*437bfbebSnyanmisaka         { -12,  -4, 420, 148, -48,   8,   0,   0},
306*437bfbebSnyanmisaka         {  -8, -12, 408, 164, -48,   8,   0,   0},
307*437bfbebSnyanmisaka         {  -8, -20, 404, 180, -52,   8,   0,   0},
308*437bfbebSnyanmisaka         {  -4, -24, 388, 196, -52,   8,   0,   0},
309*437bfbebSnyanmisaka         {  -4, -32, 384, 212, -56,   8,   0,   0},
310*437bfbebSnyanmisaka         {   0, -36, 372, 224, -56,   8,   0,   0},
311*437bfbebSnyanmisaka         {   0, -40, 360, 240, -56,   8,   0,   0},
312*437bfbebSnyanmisaka         {   4, -44, 344, 256, -56,   8,   0,   0},
313*437bfbebSnyanmisaka         {   4, -48, 332, 272, -56,   8,   0,   0},
314*437bfbebSnyanmisaka         {   4, -52, 316, 292, -56,   8,   0,   0},
315*437bfbebSnyanmisaka         {   8, -52, 300, 300, -52,   8,   0,   0},
316*437bfbebSnyanmisaka     },
317*437bfbebSnyanmisaka //>1
318*437bfbebSnyanmisaka     {
319*437bfbebSnyanmisaka         { -36,  80, 420,  80, -36,   4,   0,   0},
320*437bfbebSnyanmisaka         { -32,  68, 412,  92, -36,   8,   0,   0},
321*437bfbebSnyanmisaka         { -28,  56, 412, 104, -40,   8,   0,   0},
322*437bfbebSnyanmisaka         { -28,  44, 412, 116, -40,   8,   0,   0},
323*437bfbebSnyanmisaka         { -24,  36, 404, 132, -44,   8,   0,   0},
324*437bfbebSnyanmisaka         { -24,  24, 404, 144, -44,   8,   0,   0},
325*437bfbebSnyanmisaka         { -20,  16, 396, 160, -48,   8,   0,   0},
326*437bfbebSnyanmisaka         { -16,   8, 388, 172, -48,   8,   0,   0},
327*437bfbebSnyanmisaka         { -16,   0, 380, 188, -48,   8,   0,   0},
328*437bfbebSnyanmisaka         { -12,  -8, 376, 200, -48,   4,   0,   0},
329*437bfbebSnyanmisaka         { -12, -12, 364, 216, -48,   4,   0,   0},
330*437bfbebSnyanmisaka         {  -8, -20, 356, 228, -48,   4,   0,   0},
331*437bfbebSnyanmisaka         {  -8, -24, 344, 244, -48,   4,   0,   0},
332*437bfbebSnyanmisaka         {  -4, -32, 332, 260, -48,   4,   0,   0},
333*437bfbebSnyanmisaka         {  -4, -36, 320, 272, -44,   4,   0,   0},
334*437bfbebSnyanmisaka         {   0, -40, 308, 288, -44,   0,   0,   0},
335*437bfbebSnyanmisaka         {   0, -40, 296, 296, -40,   0,   0,   0},
336*437bfbebSnyanmisaka     },
337*437bfbebSnyanmisaka //==1
338*437bfbebSnyanmisaka     {
339*437bfbebSnyanmisaka         {  0,   0, 511,   0,   0,  0, 0, 0 },
340*437bfbebSnyanmisaka         { 3,   -12,  511,  13,   -3,   0, 0, 0 },
341*437bfbebSnyanmisaka         { 6,   -22,  507,  28,   -7,   0, 0, 0 },
342*437bfbebSnyanmisaka         { 8,   -32,  502,  44,   -11,  1, 0, 0 },
343*437bfbebSnyanmisaka         { 10,  -40,  495,  61,   -15,  1, 0, 0 },
344*437bfbebSnyanmisaka         { 11,  -47,  486,  79,   -19,  2, 0, 0 },
345*437bfbebSnyanmisaka         { 12,  -53,  476,  98,   -24,  3, 0, 0 },
346*437bfbebSnyanmisaka         { 13,  -58,  464,  117,  -28,  4, 0, 0 },
347*437bfbebSnyanmisaka         { 14,  -62,  451,  137,  -33,  5, 0, 0 },
348*437bfbebSnyanmisaka         { 15,  -65,  437,  157,  -38,  6, 0, 0 },
349*437bfbebSnyanmisaka         { 15,  -67,  420,  179,  -42,  7, 0, 0 },
350*437bfbebSnyanmisaka         { 15,  -68,  404,  200,  -46,  7, 0, 0 },
351*437bfbebSnyanmisaka         { 14,  -68,  386,  221,  -50,  9, 0, 0 },
352*437bfbebSnyanmisaka         { 14,  -68,  367,  243,  -54,  10, 0, 0 },
353*437bfbebSnyanmisaka         { 14,  -67,  348,  264,  -58,  11, 0, 0 },
354*437bfbebSnyanmisaka         { 13,  -66,  328,  286,  -61,  12, 0, 0 },
355*437bfbebSnyanmisaka         { 13,  -63,  306,  306,  -63,  13, 0, 0 },
356*437bfbebSnyanmisaka     },
357*437bfbebSnyanmisaka //>=0.833
358*437bfbebSnyanmisaka     {
359*437bfbebSnyanmisaka         { -31, 104, 362, 104, -31, 4,  0, 0 },
360*437bfbebSnyanmisaka         { -30, 94,  362, 114, -32, 4,  0, 0 },
361*437bfbebSnyanmisaka         { -29, 84,  361, 125, -32, 3,  0, 0 },
362*437bfbebSnyanmisaka         { -28, 75,  359, 136, -33, 3,  0, 0 },
363*437bfbebSnyanmisaka         { -27, 66,  356, 147, -33, 3,  0, 0 },
364*437bfbebSnyanmisaka         { -25, 57,  353, 158, -33, 2,  0, 0 },
365*437bfbebSnyanmisaka         { -24, 49,  349, 169, -33, 2,  0, 0 },
366*437bfbebSnyanmisaka         { -22, 41,  344, 180, -32, 1,  0, 0 },
367*437bfbebSnyanmisaka         { -20, 33,  339, 191, -31, 0,  0, 0 },
368*437bfbebSnyanmisaka         { -19, 26,  333, 203, -30, -1, 0, 0 },
369*437bfbebSnyanmisaka         { -17, 19,  327, 214, -29, -2, 0, 0 },
370*437bfbebSnyanmisaka         { -16, 13,  320, 225, -27, -3, 0, 0 },
371*437bfbebSnyanmisaka         { -14, 7,   312, 236, -25, -4, 0, 0 },
372*437bfbebSnyanmisaka         { -13, 1,   305, 246, -22, -5, 0, 0 },
373*437bfbebSnyanmisaka         { -11, -4,  295, 257, -19, -6, 0, 0 },
374*437bfbebSnyanmisaka         { -10, -8,  286, 267, -16, -7, 0, 0 },
375*437bfbebSnyanmisaka         { -9,  -12, 277, 277, -12, -9, 0, 0 },
376*437bfbebSnyanmisaka     },
377*437bfbebSnyanmisaka //>=0.7
378*437bfbebSnyanmisaka     {
379*437bfbebSnyanmisaka         { -31, 104, 362, 104, -31, 4,  0, 0 },
380*437bfbebSnyanmisaka         { -30, 94,  362, 114, -32, 4,  0, 0 },
381*437bfbebSnyanmisaka         { -29, 84,  361, 125, -32, 3,  0, 0 },
382*437bfbebSnyanmisaka         { -28, 75,  359, 136, -33, 3,  0, 0 },
383*437bfbebSnyanmisaka         { -27, 66,  356, 147, -33, 3,  0, 0 },
384*437bfbebSnyanmisaka         { -25, 57,  353, 158, -33, 2,  0, 0 },
385*437bfbebSnyanmisaka         { -24, 49,  349, 169, -33, 2,  0, 0 },
386*437bfbebSnyanmisaka         { -22, 41,  344, 180, -32, 1,  0, 0 },
387*437bfbebSnyanmisaka         { -20, 33,  339, 191, -31, 0,  0, 0 },
388*437bfbebSnyanmisaka         { -19, 26,  333, 203, -30, -1, 0, 0 },
389*437bfbebSnyanmisaka         { -17, 19,  327, 214, -29, -2, 0, 0 },
390*437bfbebSnyanmisaka         { -16, 13,  320, 225, -27, -3, 0, 0 },
391*437bfbebSnyanmisaka         { -14, 7,   312, 236, -25, -4, 0, 0 },
392*437bfbebSnyanmisaka         { -13, 1,   305, 246, -22, -5, 0, 0 },
393*437bfbebSnyanmisaka         { -11, -4,  295, 257, -19, -6, 0, 0 },
394*437bfbebSnyanmisaka         { -10, -8,  286, 267, -16, -7, 0, 0 },
395*437bfbebSnyanmisaka         { -9,  -12, 277, 277, -12, -9, 0, 0 },
396*437bfbebSnyanmisaka     },
397*437bfbebSnyanmisaka //>=0.5
398*437bfbebSnyanmisaka     {
399*437bfbebSnyanmisaka         { -20, 130, 297, 130, -20, -5,  0, 0 },
400*437bfbebSnyanmisaka         { -21, 122, 298, 138, -19, -6,  0, 0 },
401*437bfbebSnyanmisaka         { -22, 115, 297, 146, -17, -7,  0, 0 },
402*437bfbebSnyanmisaka         { -22, 108, 296, 153, -16, -7,  0, 0 },
403*437bfbebSnyanmisaka         { -23, 101, 295, 161, -14, -8,  0, 0 },
404*437bfbebSnyanmisaka         { -23, 93,  294, 169, -12, -9,  0, 0 },
405*437bfbebSnyanmisaka         { -24, 87,  292, 177, -10, -10, 0, 0 },
406*437bfbebSnyanmisaka         { -24, 80,  289, 185, -7,  -11, 0, 0 },
407*437bfbebSnyanmisaka         { -24, 73,  286, 193, -4,  -12, 0, 0 },
408*437bfbebSnyanmisaka         { -23, 66,  283, 200, -1,  -13, 0, 0 },
409*437bfbebSnyanmisaka         { -23, 60,  279, 208, 2,   -14, 0, 0 },
410*437bfbebSnyanmisaka         { -23, 54,  276, 215, 5,   -15, 0, 0 },
411*437bfbebSnyanmisaka         { -22, 48,  271, 222, 9,   -16, 0, 0 },
412*437bfbebSnyanmisaka         { -21, 42,  266, 229, 13,  -17, 0, 0 },
413*437bfbebSnyanmisaka         { -21, 37,  261, 236, 17,  -18, 0, 0 },
414*437bfbebSnyanmisaka         { -21, 32,  255, 242, 22,  -18, 0, 0 },
415*437bfbebSnyanmisaka         { -20, 27,  249, 249, 27,  -20, 0, 0 },
416*437bfbebSnyanmisaka     },
417*437bfbebSnyanmisaka //>=0.33
418*437bfbebSnyanmisaka     {
419*437bfbebSnyanmisaka         { 16, 136, 217, 136, 16, -9,  0, 0 },
420*437bfbebSnyanmisaka         { 13, 132, 217, 141, 18, -9,  0, 0 },
421*437bfbebSnyanmisaka         { 11, 128, 217, 145, 21, -10, 0, 0 },
422*437bfbebSnyanmisaka         { 9,  124, 216, 149, 24, -10, 0, 0 },
423*437bfbebSnyanmisaka         { 7,  119, 216, 153, 27, -10, 0, 0 },
424*437bfbebSnyanmisaka         { 5,  115, 216, 157, 30, -11, 0, 0 },
425*437bfbebSnyanmisaka         { 3,  111, 215, 161, 33, -11, 0, 0 },
426*437bfbebSnyanmisaka         { 1,  107, 214, 165, 36, -11, 0, 0 },
427*437bfbebSnyanmisaka         { 0,  102, 213, 169, 39, -11, 0, 0 },
428*437bfbebSnyanmisaka         { -2, 98,  211, 173, 43, -11, 0, 0 },
429*437bfbebSnyanmisaka         { -3, 94,  209, 177, 46, -11, 0, 0 },
430*437bfbebSnyanmisaka         { -4, 90,  207, 180, 50, -11, 0, 0 },
431*437bfbebSnyanmisaka         { -5, 85,  206, 184, 53, -11, 0, 0 },
432*437bfbebSnyanmisaka         { -6, 81,  203, 187, 57, -10, 0, 0 },
433*437bfbebSnyanmisaka         { -7, 77,  201, 190, 61, -10, 0, 0 },
434*437bfbebSnyanmisaka         { -8, 73,  198, 193, 65, -9,  0, 0 },
435*437bfbebSnyanmisaka         { -9, 69,  196, 196, 69, -9,  0, 0 },
436*437bfbebSnyanmisaka     },
437*437bfbebSnyanmisaka //>=0.25
438*437bfbebSnyanmisaka     {
439*437bfbebSnyanmisaka         { 66, 115, 138, 115, 66, 12, 0, 0 },
440*437bfbebSnyanmisaka         { 64, 114, 136, 116, 68, 14, 0, 0 },
441*437bfbebSnyanmisaka         { 63, 113, 134, 117, 70, 15, 0, 0 },
442*437bfbebSnyanmisaka         { 61, 111, 135, 118, 71, 16, 0, 0 },
443*437bfbebSnyanmisaka         { 59, 110, 133, 119, 73, 18, 0, 0 },
444*437bfbebSnyanmisaka         { 57, 108, 134, 120, 74, 19, 0, 0 },
445*437bfbebSnyanmisaka         { 55, 107, 133, 121, 76, 20, 0, 0 },
446*437bfbebSnyanmisaka         { 53, 105, 133, 121, 78, 22, 0, 0 },
447*437bfbebSnyanmisaka         { 51, 104, 133, 122, 79, 23, 0, 0 },
448*437bfbebSnyanmisaka         { 49, 102, 132, 123, 81, 25, 0, 0 },
449*437bfbebSnyanmisaka         { 47, 101, 132, 124, 82, 26, 0, 0 },
450*437bfbebSnyanmisaka         { 45, 99,  131, 125, 84, 28, 0, 0 },
451*437bfbebSnyanmisaka         { 44, 98,  130, 125, 85, 30, 0, 0 },
452*437bfbebSnyanmisaka         { 42, 96,  130, 126, 87, 31, 0, 0 },
453*437bfbebSnyanmisaka         { 40, 95,  128, 127, 89, 33, 0, 0 },
454*437bfbebSnyanmisaka         { 38, 93,  129, 127, 90, 35, 0, 0 },
455*437bfbebSnyanmisaka         { 36, 92,  128, 128, 92, 36, 0, 0 },
456*437bfbebSnyanmisaka     },
457*437bfbebSnyanmisaka //others
458*437bfbebSnyanmisaka     {
459*437bfbebSnyanmisaka         { 80, 105, 116, 105, 80, 26, 0, 0 },
460*437bfbebSnyanmisaka         { 79, 104, 115, 105, 81, 28, 0, 0 },
461*437bfbebSnyanmisaka         { 77, 103, 116, 106, 81, 29, 0, 0 },
462*437bfbebSnyanmisaka         { 76, 102, 115, 106, 82, 31, 0, 0 },
463*437bfbebSnyanmisaka         { 74, 101, 115, 106, 83, 33, 0, 0 },
464*437bfbebSnyanmisaka         { 73, 100, 114, 106, 84, 35, 0, 0 },
465*437bfbebSnyanmisaka         { 71, 99,  114, 107, 84, 37, 0, 0 },
466*437bfbebSnyanmisaka         { 70, 98,  113, 107, 85, 39, 0, 0 },
467*437bfbebSnyanmisaka         { 68, 98,  113, 107, 86, 40, 0, 0 },
468*437bfbebSnyanmisaka         { 67, 97,  112, 108, 86, 42, 0, 0 },
469*437bfbebSnyanmisaka         { 65, 96,  112, 108, 87, 44, 0, 0 },
470*437bfbebSnyanmisaka         { 63, 95,  112, 108, 88, 46, 0, 0 },
471*437bfbebSnyanmisaka         { 62, 94,  112, 108, 88, 48, 0, 0 },
472*437bfbebSnyanmisaka         { 60, 93,  111, 109, 89, 50, 0, 0 },
473*437bfbebSnyanmisaka         { 58, 93,  111, 109, 90, 51, 0, 0 },
474*437bfbebSnyanmisaka         { 57, 92,  110, 110, 90, 53, 0, 0 },
475*437bfbebSnyanmisaka         { 55, 91,  110, 110, 91, 55, 0, 0 },
476*437bfbebSnyanmisaka     }
477*437bfbebSnyanmisaka };
478*437bfbebSnyanmisaka 
calc_scl_factor(struct zme_params * src_params,scl_info * p_scl_info,RK_U8 bypass_en)479*437bfbebSnyanmisaka static MPP_RET calc_scl_factor(struct zme_params* src_params, scl_info *p_scl_info, RK_U8 bypass_en)
480*437bfbebSnyanmisaka {
481*437bfbebSnyanmisaka     RK_U16 act_width  = p_scl_info->act_width;
482*437bfbebSnyanmisaka     RK_U16 dsp_width  = p_scl_info->dsp_width;
483*437bfbebSnyanmisaka 
484*437bfbebSnyanmisaka     RK_U16 act_height = p_scl_info->act_height;
485*437bfbebSnyanmisaka     RK_U16 dsp_height = p_scl_info->dsp_height;
486*437bfbebSnyanmisaka 
487*437bfbebSnyanmisaka     RK_U8  xsd_en     = 0;
488*437bfbebSnyanmisaka     RK_U8  xsu_en     = 0;
489*437bfbebSnyanmisaka     RK_U8  xscl_mode  = p_scl_info->xscl_mode;
490*437bfbebSnyanmisaka     RK_U16 xscl_factor;
491*437bfbebSnyanmisaka     RK_U8  xscl_offset = 0;
492*437bfbebSnyanmisaka 
493*437bfbebSnyanmisaka     RK_U8  ysd_en     = 0;
494*437bfbebSnyanmisaka     RK_U8  ysu_en     = 0;
495*437bfbebSnyanmisaka     RK_U8  yscl_mode  = p_scl_info->yscl_mode;
496*437bfbebSnyanmisaka     RK_U16 yscl_factor;
497*437bfbebSnyanmisaka     RK_U8  yscl_offset = 0;
498*437bfbebSnyanmisaka 
499*437bfbebSnyanmisaka     RK_U8  xavg_en    = 0;
500*437bfbebSnyanmisaka     RK_U8  xgt_en     = 0;
501*437bfbebSnyanmisaka     RK_U8  xgt_mode   = 0;
502*437bfbebSnyanmisaka 
503*437bfbebSnyanmisaka     RK_U8  yavg_en    = 0;
504*437bfbebSnyanmisaka     RK_U8  ygt_en     = 0;
505*437bfbebSnyanmisaka     RK_U8  ygt_mode   = 0;
506*437bfbebSnyanmisaka 
507*437bfbebSnyanmisaka     RK_U32 f_xscl_factor_t;
508*437bfbebSnyanmisaka     RK_U32 f_yscl_factor_t;
509*437bfbebSnyanmisaka     RK_U32 f_xscl_factor_t1;
510*437bfbebSnyanmisaka     RK_U32 f_yscl_factor_t1;
511*437bfbebSnyanmisaka 
512*437bfbebSnyanmisaka     if (act_width >= dsp_width * 14) {
513*437bfbebSnyanmisaka         act_width = act_width / 4;
514*437bfbebSnyanmisaka         xgt_en     = 1;
515*437bfbebSnyanmisaka         xgt_mode   = 3;
516*437bfbebSnyanmisaka     } else if (act_width >= dsp_width * 7) {
517*437bfbebSnyanmisaka         act_width = act_width / 2;
518*437bfbebSnyanmisaka         xgt_en     = 1;
519*437bfbebSnyanmisaka         xgt_mode   = 1;
520*437bfbebSnyanmisaka     }
521*437bfbebSnyanmisaka 
522*437bfbebSnyanmisaka     if (act_width > dsp_width) {
523*437bfbebSnyanmisaka         xsd_en     = 1;
524*437bfbebSnyanmisaka         xsu_en     = 0;
525*437bfbebSnyanmisaka         xscl_factor = GET_SCALE_FACTOR_DN(act_width, dsp_width);
526*437bfbebSnyanmisaka     } else if (act_width < dsp_width) {
527*437bfbebSnyanmisaka         xsd_en     = 0;
528*437bfbebSnyanmisaka         xsu_en     = 1;
529*437bfbebSnyanmisaka         xscl_factor = GET_SCALE_FACTOR_UP(act_width, dsp_width);
530*437bfbebSnyanmisaka     } else {
531*437bfbebSnyanmisaka         xsd_en     = 0;
532*437bfbebSnyanmisaka         xsu_en     = 0;
533*437bfbebSnyanmisaka         xscl_factor = 1 << 12;
534*437bfbebSnyanmisaka     }
535*437bfbebSnyanmisaka 
536*437bfbebSnyanmisaka     if (yscl_mode <= SCL_BIL) {
537*437bfbebSnyanmisaka         if (act_height > dsp_height * 4) {
538*437bfbebSnyanmisaka             ygt_en   = 1;
539*437bfbebSnyanmisaka             ygt_mode = 1;
540*437bfbebSnyanmisaka             act_height = act_height / 4;
541*437bfbebSnyanmisaka         } else if (act_height > dsp_height * 2) {
542*437bfbebSnyanmisaka             ygt_en   = 1;
543*437bfbebSnyanmisaka             ygt_mode = 0;
544*437bfbebSnyanmisaka             act_height = act_height / 2;
545*437bfbebSnyanmisaka         } else {
546*437bfbebSnyanmisaka             ygt_en   = 0;
547*437bfbebSnyanmisaka             ygt_mode = 0;
548*437bfbebSnyanmisaka         }
549*437bfbebSnyanmisaka     }
550*437bfbebSnyanmisaka 
551*437bfbebSnyanmisaka     if (yscl_mode == SCL_MPH) {
552*437bfbebSnyanmisaka         if (act_height >= dsp_height * 6) {
553*437bfbebSnyanmisaka             ygt_en = 1;
554*437bfbebSnyanmisaka             ygt_mode = 3;
555*437bfbebSnyanmisaka         }
556*437bfbebSnyanmisaka     }
557*437bfbebSnyanmisaka 
558*437bfbebSnyanmisaka     if (act_height > dsp_height) {
559*437bfbebSnyanmisaka         ysd_en     = 1;
560*437bfbebSnyanmisaka         ysu_en     = 0;
561*437bfbebSnyanmisaka         yscl_factor = GET_SCALE_FACTOR_DN(act_height, dsp_height);
562*437bfbebSnyanmisaka     } else if (act_height < dsp_height) {
563*437bfbebSnyanmisaka         ysd_en     = 0;
564*437bfbebSnyanmisaka         ysu_en     = 1;
565*437bfbebSnyanmisaka         yscl_factor = GET_SCALE_FACTOR_UP(act_height, dsp_height);
566*437bfbebSnyanmisaka     } else {
567*437bfbebSnyanmisaka         ysd_en     = 0;
568*437bfbebSnyanmisaka         ysu_en     = 0;
569*437bfbebSnyanmisaka         yscl_factor = 1 << 12;
570*437bfbebSnyanmisaka     }
571*437bfbebSnyanmisaka 
572*437bfbebSnyanmisaka     if (xsu_en == 1) {
573*437bfbebSnyanmisaka         f_xscl_factor_t = (1 << 16) * act_width / dsp_width;
574*437bfbebSnyanmisaka         f_xscl_factor_t1 = 1000 * (1 << 16) / f_xscl_factor_t;
575*437bfbebSnyanmisaka     } else {
576*437bfbebSnyanmisaka         f_xscl_factor_t = (1 << 12) * act_width / dsp_width;
577*437bfbebSnyanmisaka         f_xscl_factor_t1 = 1000 * (1 << 12) / f_xscl_factor_t;
578*437bfbebSnyanmisaka     }
579*437bfbebSnyanmisaka 
580*437bfbebSnyanmisaka     if (ysu_en == 1) {
581*437bfbebSnyanmisaka         f_yscl_factor_t = (1 << 16) * act_height / dsp_height;
582*437bfbebSnyanmisaka         f_yscl_factor_t1 = 1000 * (1 << 16) / f_yscl_factor_t;
583*437bfbebSnyanmisaka     } else {
584*437bfbebSnyanmisaka         f_yscl_factor_t = (1 << 12) * act_height / dsp_height;
585*437bfbebSnyanmisaka         f_yscl_factor_t1 = 1000 * (1 << 12) / f_yscl_factor_t;
586*437bfbebSnyanmisaka     }
587*437bfbebSnyanmisaka 
588*437bfbebSnyanmisaka     if (f_xscl_factor_t1 >= vdpp_scale_threshold[0])
589*437bfbebSnyanmisaka         p_scl_info->xscl_zme_coe = src_params->zme_tap8_coeff[0];
590*437bfbebSnyanmisaka     else if (f_xscl_factor_t1 >= vdpp_scale_threshold[1])
591*437bfbebSnyanmisaka         p_scl_info->xscl_zme_coe = src_params->zme_tap8_coeff[1];
592*437bfbebSnyanmisaka     else if (f_xscl_factor_t1 >= vdpp_scale_threshold[2])
593*437bfbebSnyanmisaka         p_scl_info->xscl_zme_coe = src_params->zme_tap8_coeff[2];
594*437bfbebSnyanmisaka     else if (f_xscl_factor_t1 > vdpp_scale_threshold[3])
595*437bfbebSnyanmisaka         p_scl_info->xscl_zme_coe = src_params->zme_tap8_coeff[3];
596*437bfbebSnyanmisaka     else if (f_xscl_factor_t1 == vdpp_scale_threshold[3])
597*437bfbebSnyanmisaka         p_scl_info->xscl_zme_coe = src_params->zme_tap8_coeff[4];
598*437bfbebSnyanmisaka     else if (f_xscl_factor_t1 >= vdpp_scale_threshold[4])
599*437bfbebSnyanmisaka         p_scl_info->xscl_zme_coe = src_params->zme_tap8_coeff[5];
600*437bfbebSnyanmisaka     else if (f_xscl_factor_t1 >= vdpp_scale_threshold[5])
601*437bfbebSnyanmisaka         p_scl_info->xscl_zme_coe = src_params->zme_tap8_coeff[6];
602*437bfbebSnyanmisaka     else if (f_xscl_factor_t1 >= vdpp_scale_threshold[6])
603*437bfbebSnyanmisaka         p_scl_info->xscl_zme_coe = src_params->zme_tap8_coeff[7];
604*437bfbebSnyanmisaka     else if (f_xscl_factor_t1 >= vdpp_scale_threshold[7])
605*437bfbebSnyanmisaka         p_scl_info->xscl_zme_coe = src_params->zme_tap8_coeff[8];
606*437bfbebSnyanmisaka     else if (f_xscl_factor_t1 >= vdpp_scale_threshold[8])
607*437bfbebSnyanmisaka         p_scl_info->xscl_zme_coe = src_params->zme_tap8_coeff[9];
608*437bfbebSnyanmisaka     else
609*437bfbebSnyanmisaka         p_scl_info->xscl_zme_coe = src_params->zme_tap8_coeff[10];
610*437bfbebSnyanmisaka 
611*437bfbebSnyanmisaka     if (f_yscl_factor_t1 >= vdpp_scale_threshold[0])
612*437bfbebSnyanmisaka         p_scl_info->yscl_zme_coe = src_params->zme_tap6_coeff[0];
613*437bfbebSnyanmisaka     else if (f_yscl_factor_t1 >= vdpp_scale_threshold[1])
614*437bfbebSnyanmisaka         p_scl_info->yscl_zme_coe = src_params->zme_tap6_coeff[1];
615*437bfbebSnyanmisaka     else if (f_yscl_factor_t1 >= vdpp_scale_threshold[2])
616*437bfbebSnyanmisaka         p_scl_info->yscl_zme_coe = src_params->zme_tap6_coeff[2];
617*437bfbebSnyanmisaka     else if (f_yscl_factor_t1 > vdpp_scale_threshold[3])
618*437bfbebSnyanmisaka         p_scl_info->yscl_zme_coe = src_params->zme_tap6_coeff[3];
619*437bfbebSnyanmisaka     else if (f_yscl_factor_t1 == vdpp_scale_threshold[3])
620*437bfbebSnyanmisaka         p_scl_info->yscl_zme_coe = src_params->zme_tap6_coeff[4];
621*437bfbebSnyanmisaka     else if (f_yscl_factor_t1 >= vdpp_scale_threshold[4])
622*437bfbebSnyanmisaka         p_scl_info->yscl_zme_coe = src_params->zme_tap6_coeff[5];
623*437bfbebSnyanmisaka     else if (f_yscl_factor_t1 >= vdpp_scale_threshold[5])
624*437bfbebSnyanmisaka         p_scl_info->yscl_zme_coe = src_params->zme_tap6_coeff[6];
625*437bfbebSnyanmisaka     else if (f_yscl_factor_t1 >= vdpp_scale_threshold[6])
626*437bfbebSnyanmisaka         p_scl_info->yscl_zme_coe = src_params->zme_tap6_coeff[7];
627*437bfbebSnyanmisaka     else if (f_yscl_factor_t1 >= vdpp_scale_threshold[7])
628*437bfbebSnyanmisaka         p_scl_info->yscl_zme_coe = src_params->zme_tap6_coeff[8];
629*437bfbebSnyanmisaka     else if (f_yscl_factor_t1 >= vdpp_scale_threshold[8])
630*437bfbebSnyanmisaka         p_scl_info->yscl_zme_coe = src_params->zme_tap6_coeff[9];
631*437bfbebSnyanmisaka     else
632*437bfbebSnyanmisaka         p_scl_info->yscl_zme_coe = src_params->zme_tap6_coeff[10];
633*437bfbebSnyanmisaka 
634*437bfbebSnyanmisaka     p_scl_info->xsd_en     = xsd_en;
635*437bfbebSnyanmisaka     p_scl_info->xsu_en     = xsu_en;
636*437bfbebSnyanmisaka     p_scl_info->xscl_mode  = xscl_mode;
637*437bfbebSnyanmisaka     p_scl_info->xscl_factor = xscl_factor;
638*437bfbebSnyanmisaka     p_scl_info->xscl_offset = xscl_offset;
639*437bfbebSnyanmisaka 
640*437bfbebSnyanmisaka     p_scl_info->ysd_en     = ysd_en;
641*437bfbebSnyanmisaka     p_scl_info->ysu_en     = ysu_en;
642*437bfbebSnyanmisaka     p_scl_info->yscl_mode  = yscl_mode;
643*437bfbebSnyanmisaka     p_scl_info->yscl_factor = yscl_factor;
644*437bfbebSnyanmisaka     p_scl_info->yscl_offset = yscl_offset;
645*437bfbebSnyanmisaka 
646*437bfbebSnyanmisaka     p_scl_info->xavg_en    = xavg_en;
647*437bfbebSnyanmisaka     p_scl_info->xgt_en     = xgt_en;
648*437bfbebSnyanmisaka     p_scl_info->xgt_mode   = xgt_mode;
649*437bfbebSnyanmisaka 
650*437bfbebSnyanmisaka     p_scl_info->yavg_en    = yavg_en;
651*437bfbebSnyanmisaka     p_scl_info->ygt_en     = ygt_en;
652*437bfbebSnyanmisaka     p_scl_info->ygt_mode   = ygt_mode;
653*437bfbebSnyanmisaka 
654*437bfbebSnyanmisaka     if (bypass_en) {
655*437bfbebSnyanmisaka         p_scl_info->xsd_bypass = !xsd_en;
656*437bfbebSnyanmisaka         p_scl_info->xsu_bypass = !xsu_en;
657*437bfbebSnyanmisaka         p_scl_info->ys_bypass = !(ysd_en || ysu_en);
658*437bfbebSnyanmisaka     } else {
659*437bfbebSnyanmisaka         p_scl_info->xsd_bypass = 0;
660*437bfbebSnyanmisaka         p_scl_info->xsu_bypass = 0;
661*437bfbebSnyanmisaka         p_scl_info->ys_bypass = 0;
662*437bfbebSnyanmisaka     }
663*437bfbebSnyanmisaka     return MPP_OK;
664*437bfbebSnyanmisaka }
665*437bfbebSnyanmisaka 
set_dmsr_to_vdpp_reg(struct dmsr_params * p_dmsr_param,struct dmsr_reg * dmsr)666*437bfbebSnyanmisaka void set_dmsr_to_vdpp_reg(struct dmsr_params* p_dmsr_param, struct dmsr_reg* dmsr)
667*437bfbebSnyanmisaka {
668*437bfbebSnyanmisaka     /* 0x0080(reg0) */
669*437bfbebSnyanmisaka     dmsr->reg0.sw_dmsr_edge_low_thre_0 = p_dmsr_param->dmsr_edge_th_low_arr[0];
670*437bfbebSnyanmisaka     dmsr->reg0.sw_dmsr_edge_high_thre_0 = p_dmsr_param->dmsr_edge_th_high_arr[0];
671*437bfbebSnyanmisaka 
672*437bfbebSnyanmisaka     /* 0x0084(reg1) */
673*437bfbebSnyanmisaka     dmsr->reg1.sw_dmsr_edge_low_thre_1 = p_dmsr_param->dmsr_edge_th_low_arr[1];
674*437bfbebSnyanmisaka     dmsr->reg1.sw_dmsr_edge_high_thre_1 = p_dmsr_param->dmsr_edge_th_high_arr[1];
675*437bfbebSnyanmisaka 
676*437bfbebSnyanmisaka     /* 0x0088(reg2) */
677*437bfbebSnyanmisaka     dmsr->reg2.sw_dmsr_edge_low_thre_2 = p_dmsr_param->dmsr_edge_th_low_arr[2];
678*437bfbebSnyanmisaka     dmsr->reg2.sw_dmsr_edge_high_thre_2 = p_dmsr_param->dmsr_edge_th_high_arr[2];
679*437bfbebSnyanmisaka 
680*437bfbebSnyanmisaka     /* 0x008C(reg3) */
681*437bfbebSnyanmisaka     dmsr->reg3.sw_dmsr_edge_low_thre_3 = p_dmsr_param->dmsr_edge_th_low_arr[3];
682*437bfbebSnyanmisaka     dmsr->reg3.sw_dmsr_edge_high_thre_3 = p_dmsr_param->dmsr_edge_th_high_arr[3];
683*437bfbebSnyanmisaka 
684*437bfbebSnyanmisaka     /* 0x0090(reg4) */
685*437bfbebSnyanmisaka     dmsr->reg4.sw_dmsr_edge_low_thre_4 = p_dmsr_param->dmsr_edge_th_low_arr[4];
686*437bfbebSnyanmisaka     dmsr->reg4.sw_dmsr_edge_high_thre_4 = p_dmsr_param->dmsr_edge_th_high_arr[4];
687*437bfbebSnyanmisaka 
688*437bfbebSnyanmisaka     /* 0x0094(reg5) */
689*437bfbebSnyanmisaka     dmsr->reg5.sw_dmsr_edge_low_thre_5 = p_dmsr_param->dmsr_edge_th_low_arr[5];
690*437bfbebSnyanmisaka     dmsr->reg5.sw_dmsr_edge_high_thre_5 = p_dmsr_param->dmsr_edge_th_high_arr[5];
691*437bfbebSnyanmisaka 
692*437bfbebSnyanmisaka     /* 0x0098(reg6) */
693*437bfbebSnyanmisaka     dmsr->reg6.sw_dmsr_edge_low_thre_6 = p_dmsr_param->dmsr_edge_th_low_arr[6];
694*437bfbebSnyanmisaka     dmsr->reg6.sw_dmsr_edge_high_thre_6 = p_dmsr_param->dmsr_edge_th_high_arr[6];
695*437bfbebSnyanmisaka     {
696*437bfbebSnyanmisaka         RK_U16 adj_mapping_k[7];
697*437bfbebSnyanmisaka         RK_U16 tmp_diff;
698*437bfbebSnyanmisaka         RK_U16 i;
699*437bfbebSnyanmisaka         RK_U16 contrast2conf_mapping_k;
700*437bfbebSnyanmisaka         RK_U32 tmp_diff_y, tmp_diff_x;
701*437bfbebSnyanmisaka 
702*437bfbebSnyanmisaka         for (i = 0; i < 7; i++) {
703*437bfbebSnyanmisaka             tmp_diff =  p_dmsr_param->dmsr_edge_th_high_arr[i] - p_dmsr_param->dmsr_edge_th_low_arr[i];
704*437bfbebSnyanmisaka             adj_mapping_k[i] = (65535 / MPP_MAX(1, tmp_diff));
705*437bfbebSnyanmisaka         }
706*437bfbebSnyanmisaka         tmp_diff_y = p_dmsr_param->dmsr_contrast_to_conf_map_y1 - p_dmsr_param->dmsr_contrast_to_conf_map_y0;
707*437bfbebSnyanmisaka         tmp_diff_x = MPP_MAX(p_dmsr_param->dmsr_contrast_to_conf_map_x1 - p_dmsr_param->dmsr_contrast_to_conf_map_x0, 1);
708*437bfbebSnyanmisaka 
709*437bfbebSnyanmisaka         contrast2conf_mapping_k = mpp_clip(256 * tmp_diff_y / tmp_diff_x, 0, 65535);
710*437bfbebSnyanmisaka         /* 0x009C(reg7) */
711*437bfbebSnyanmisaka         dmsr->reg7.sw_dmsr_edge_k_0 = adj_mapping_k[0];
712*437bfbebSnyanmisaka         dmsr->reg7.sw_dmsr_edge_k_1 = adj_mapping_k[1];
713*437bfbebSnyanmisaka 
714*437bfbebSnyanmisaka         /* 0x00A0(reg8) */
715*437bfbebSnyanmisaka         dmsr->reg8.sw_dmsr_edge_k_2 = adj_mapping_k[2];
716*437bfbebSnyanmisaka         dmsr->reg8.sw_dmsr_edge_k_3 = adj_mapping_k[3];
717*437bfbebSnyanmisaka 
718*437bfbebSnyanmisaka         /* 0x00A4(reg9) */
719*437bfbebSnyanmisaka         dmsr->reg9.sw_dmsr_edge_k_4 = adj_mapping_k[4];
720*437bfbebSnyanmisaka         dmsr->reg9.sw_dmsr_edge_k_5 = adj_mapping_k[5];
721*437bfbebSnyanmisaka 
722*437bfbebSnyanmisaka         /* 0x00A8(reg10) */
723*437bfbebSnyanmisaka         dmsr->reg10.sw_dmsr_edge_k_6 = adj_mapping_k[6];
724*437bfbebSnyanmisaka         dmsr->reg10.sw_dmsr_dir_contrast_conf_f = contrast2conf_mapping_k;
725*437bfbebSnyanmisaka     }
726*437bfbebSnyanmisaka     /* 0x00AC(reg11) */
727*437bfbebSnyanmisaka     dmsr->reg11.sw_dmsr_dir_contrast_conf_x0 = p_dmsr_param->dmsr_contrast_to_conf_map_x0;
728*437bfbebSnyanmisaka     dmsr->reg11.sw_dmsr_dir_contrast_conf_x1 = p_dmsr_param->dmsr_contrast_to_conf_map_x1;
729*437bfbebSnyanmisaka 
730*437bfbebSnyanmisaka     /* 0x00B0(reg12) */
731*437bfbebSnyanmisaka     dmsr->reg12.sw_dmsr_dir_contrast_conf_y0 = p_dmsr_param->dmsr_contrast_to_conf_map_y0;
732*437bfbebSnyanmisaka     dmsr->reg12.sw_dmsr_dir_contrast_conf_y1 = p_dmsr_param->dmsr_contrast_to_conf_map_y1;
733*437bfbebSnyanmisaka 
734*437bfbebSnyanmisaka     /* 0x00B4(reg13) */
735*437bfbebSnyanmisaka     dmsr->reg13.sw_dmsr_var_th = p_dmsr_param->dmsr_blk_flat_th;
736*437bfbebSnyanmisaka 
737*437bfbebSnyanmisaka     /* 0x00B8(reg14) */
738*437bfbebSnyanmisaka     dmsr->reg14.sw_dmsr_diff_coring_th0 = p_dmsr_param->dmsr_diff_core_th0;
739*437bfbebSnyanmisaka     dmsr->reg14.sw_dmsr_diff_coring_th1 = p_dmsr_param->dmsr_diff_core_th1;
740*437bfbebSnyanmisaka 
741*437bfbebSnyanmisaka     /* 0x00BC(reg15) */
742*437bfbebSnyanmisaka     dmsr->reg15.sw_dmsr_diff_coring_wgt0 = p_dmsr_param->dmsr_diff_core_wgt0;
743*437bfbebSnyanmisaka     dmsr->reg15.sw_dmsr_diff_coring_wgt1 = p_dmsr_param->dmsr_diff_core_wgt1;
744*437bfbebSnyanmisaka     dmsr->reg15.sw_dmsr_diff_coring_wgt2 = p_dmsr_param->dmsr_diff_core_wgt2;
745*437bfbebSnyanmisaka     {
746*437bfbebSnyanmisaka         RK_U16 diff_coring_y0 = p_dmsr_param->dmsr_diff_core_th0 * p_dmsr_param->dmsr_diff_core_wgt0;
747*437bfbebSnyanmisaka         RK_U16 diff_coring_y1 = ((p_dmsr_param->dmsr_diff_core_th1 - p_dmsr_param->dmsr_diff_core_th0) * p_dmsr_param->dmsr_diff_core_wgt1) + diff_coring_y0;
748*437bfbebSnyanmisaka         /* 0x00C0(reg16) */
749*437bfbebSnyanmisaka         dmsr->reg16.sw_dmsr_diff_coring_y0 = diff_coring_y0;
750*437bfbebSnyanmisaka         dmsr->reg16.sw_dmsr_diff_coring_y1 = diff_coring_y1;
751*437bfbebSnyanmisaka     }
752*437bfbebSnyanmisaka     /* 0x00C4(reg17) */
753*437bfbebSnyanmisaka     dmsr->reg17.sw_dmsr_wgt_pri_gain_1_odd = p_dmsr_param->dmsr_wgt_pri_gain_odd_1;
754*437bfbebSnyanmisaka     dmsr->reg17.sw_dmsr_wgt_pri_gain_1_even = p_dmsr_param->dmsr_wgt_pri_gain_even_1;
755*437bfbebSnyanmisaka     dmsr->reg17.sw_dmsr_wgt_pri_gain_2_odd = p_dmsr_param->dmsr_wgt_pri_gain_odd_2;
756*437bfbebSnyanmisaka     dmsr->reg17.sw_dmsr_wgt_pri_gain_2_even = p_dmsr_param->dmsr_wgt_pri_gain_even_2;
757*437bfbebSnyanmisaka 
758*437bfbebSnyanmisaka     /* 0x00C8(reg18) */
759*437bfbebSnyanmisaka     dmsr->reg18.sw_dmsr_wgt_sec_gain_1 = p_dmsr_param->dmsr_wgt_sec_gain;
760*437bfbebSnyanmisaka     dmsr->reg18.sw_dmsr_wgt_sec_gain_2 = p_dmsr_param->dmsr_wgt_sec_gain * 2;
761*437bfbebSnyanmisaka 
762*437bfbebSnyanmisaka     /* 0x00CC(reg19) */
763*437bfbebSnyanmisaka     dmsr->reg19.sw_dmsr_strength_pri = p_dmsr_param->dmsr_str_pri_y;
764*437bfbebSnyanmisaka     dmsr->reg19.sw_dmsr_strength_sec = p_dmsr_param->dmsr_str_sec_y;
765*437bfbebSnyanmisaka     dmsr->reg19.sw_dmsr_dump = p_dmsr_param->dmsr_dumping_y;
766*437bfbebSnyanmisaka }
767*437bfbebSnyanmisaka 
vdpp_set_default_zme_param(struct zme_params * param)768*437bfbebSnyanmisaka void vdpp_set_default_zme_param(struct zme_params* param)
769*437bfbebSnyanmisaka {
770*437bfbebSnyanmisaka     param->zme_bypass_en = 1;
771*437bfbebSnyanmisaka     param->zme_dering_enable = 1;
772*437bfbebSnyanmisaka     param->zme_dering_sen_0 = 16;
773*437bfbebSnyanmisaka     param->zme_dering_sen_1 = 4;
774*437bfbebSnyanmisaka     param->zme_dering_blend_alpha = 16;
775*437bfbebSnyanmisaka     param->zme_dering_blend_beta = 13;
776*437bfbebSnyanmisaka     param->zme_tap8_coeff = g_zme_tap8_coeff;
777*437bfbebSnyanmisaka     param->zme_tap6_coeff = g_zme_tap6_coeff;
778*437bfbebSnyanmisaka }
779*437bfbebSnyanmisaka 
780*437bfbebSnyanmisaka 
set_zme_to_vdpp_reg(struct zme_params * zme_params,struct zme_reg * zme)781*437bfbebSnyanmisaka void set_zme_to_vdpp_reg(struct zme_params *zme_params, struct zme_reg *zme)
782*437bfbebSnyanmisaka {
783*437bfbebSnyanmisaka     /* 0x00D0(reg20), debug settings, skip */
784*437bfbebSnyanmisaka     /* 3. set reg::zme */
785*437bfbebSnyanmisaka     /* 3.1 set reg::zme::common */
786*437bfbebSnyanmisaka     enum ZME_FMT zme_format_in = FMT_YCbCr420_888;
787*437bfbebSnyanmisaka     scl_info yrgb_scl_info = {0};
788*437bfbebSnyanmisaka     scl_info cbcr_scl_info = {0};
789*437bfbebSnyanmisaka 
790*437bfbebSnyanmisaka     yrgb_scl_info.act_width = zme_params->src_width;
791*437bfbebSnyanmisaka     yrgb_scl_info.act_height = zme_params->src_height;
792*437bfbebSnyanmisaka     yrgb_scl_info.dsp_width = zme_params->dst_width;
793*437bfbebSnyanmisaka     yrgb_scl_info.dsp_height = zme_params->dst_height;
794*437bfbebSnyanmisaka     yrgb_scl_info.xscl_mode = SCL_MPH;
795*437bfbebSnyanmisaka     yrgb_scl_info.yscl_mode = SCL_MPH;
796*437bfbebSnyanmisaka     yrgb_scl_info.dering_en = zme_params->zme_dering_enable;
797*437bfbebSnyanmisaka     calc_scl_factor(zme_params, &yrgb_scl_info, zme_params->zme_bypass_en);
798*437bfbebSnyanmisaka 
799*437bfbebSnyanmisaka     if (zme_format_in == FMT_YCbCr420_888) {
800*437bfbebSnyanmisaka         cbcr_scl_info.act_width = zme_params->src_width / 2;
801*437bfbebSnyanmisaka         cbcr_scl_info.act_height = zme_params->src_height / 2;
802*437bfbebSnyanmisaka     } else {
803*437bfbebSnyanmisaka         /* only support yuv420 as input */
804*437bfbebSnyanmisaka     }
805*437bfbebSnyanmisaka 
806*437bfbebSnyanmisaka     if (zme_params->dst_fmt == VDPP_FMT_YUV444) {
807*437bfbebSnyanmisaka         if (!zme_params->yuv_out_diff) {
808*437bfbebSnyanmisaka             cbcr_scl_info.dsp_width = zme_params->dst_width;
809*437bfbebSnyanmisaka             cbcr_scl_info.dsp_height = zme_params->dst_height;
810*437bfbebSnyanmisaka         } else {
811*437bfbebSnyanmisaka             cbcr_scl_info.dsp_width = zme_params->dst_c_width;
812*437bfbebSnyanmisaka             cbcr_scl_info.dsp_height = zme_params->dst_c_height;
813*437bfbebSnyanmisaka         }
814*437bfbebSnyanmisaka     } else if (zme_params->dst_fmt == VDPP_FMT_YUV420) {
815*437bfbebSnyanmisaka         if (!zme_params->yuv_out_diff) {
816*437bfbebSnyanmisaka             cbcr_scl_info.dsp_width = zme_params->dst_width / 2;
817*437bfbebSnyanmisaka             cbcr_scl_info.dsp_height = zme_params->dst_height / 2;
818*437bfbebSnyanmisaka         } else {
819*437bfbebSnyanmisaka             cbcr_scl_info.dsp_width = zme_params->dst_c_width / 2;
820*437bfbebSnyanmisaka             cbcr_scl_info.dsp_height = zme_params->dst_c_height / 2;
821*437bfbebSnyanmisaka         }
822*437bfbebSnyanmisaka     } else {
823*437bfbebSnyanmisaka         /* not supported */
824*437bfbebSnyanmisaka     }
825*437bfbebSnyanmisaka     cbcr_scl_info.xscl_mode = SCL_MPH;
826*437bfbebSnyanmisaka     cbcr_scl_info.yscl_mode = SCL_MPH;
827*437bfbebSnyanmisaka     cbcr_scl_info.dering_en = zme_params->zme_dering_enable;
828*437bfbebSnyanmisaka     calc_scl_factor(zme_params, &cbcr_scl_info, zme_params->zme_bypass_en);
829*437bfbebSnyanmisaka 
830*437bfbebSnyanmisaka     /* 0x0800(reg0) */
831*437bfbebSnyanmisaka     zme->common.reg0.bypass_en = 0;
832*437bfbebSnyanmisaka     zme->common.reg0.align_en = 0;
833*437bfbebSnyanmisaka     zme->common.reg0.format_in = FMT_YCbCr420_888;
834*437bfbebSnyanmisaka     if (zme_params->dst_fmt == VDPP_FMT_YUV444)
835*437bfbebSnyanmisaka         zme->common.reg0.format_out = FMT_YCbCr444_888;
836*437bfbebSnyanmisaka     else
837*437bfbebSnyanmisaka         zme->common.reg0.format_out = FMT_YCbCr420_888;
838*437bfbebSnyanmisaka     zme->common.reg0.auto_gating_en = 1;
839*437bfbebSnyanmisaka 
840*437bfbebSnyanmisaka     /* 0x0804 ~ 0x0808(reg1 ~ reg2), skip */
841*437bfbebSnyanmisaka 
842*437bfbebSnyanmisaka     /* 0x080C(reg3), not used */
843*437bfbebSnyanmisaka     zme->common.reg3.vir_width = zme_params->src_width;
844*437bfbebSnyanmisaka     zme->common.reg3.vir_height = zme_params->src_height;
845*437bfbebSnyanmisaka 
846*437bfbebSnyanmisaka     /* 0x0810(reg4) */
847*437bfbebSnyanmisaka     zme->common.reg4.yrgb_xsd_en = yrgb_scl_info.xsd_en;
848*437bfbebSnyanmisaka     zme->common.reg4.yrgb_xsu_en = yrgb_scl_info.xsu_en;
849*437bfbebSnyanmisaka     zme->common.reg4.yrgb_scl_mode = yrgb_scl_info.xscl_mode;
850*437bfbebSnyanmisaka     zme->common.reg4.yrgb_ysd_en = yrgb_scl_info.ysd_en;
851*437bfbebSnyanmisaka     zme->common.reg4.yrgb_ysu_en = yrgb_scl_info.ysu_en;
852*437bfbebSnyanmisaka     zme->common.reg4.yrgb_yscl_mode = yrgb_scl_info.yscl_mode;
853*437bfbebSnyanmisaka     zme->common.reg4.yrgb_dering_en = yrgb_scl_info.dering_en;
854*437bfbebSnyanmisaka     zme->common.reg4.yrgb_gt_en = yrgb_scl_info.ygt_en;
855*437bfbebSnyanmisaka     zme->common.reg4.yrgb_gt_mode = yrgb_scl_info.ygt_mode;
856*437bfbebSnyanmisaka     zme->common.reg4.yrgb_xgt_en = yrgb_scl_info.xgt_en;
857*437bfbebSnyanmisaka     zme->common.reg4.yrgb_xgt_mode = yrgb_scl_info.xgt_mode;
858*437bfbebSnyanmisaka     zme->common.reg4.yrgb_xsd_bypass = yrgb_scl_info.xsd_bypass;
859*437bfbebSnyanmisaka     zme->common.reg4.yrgb_ys_bypass = yrgb_scl_info.ys_bypass;
860*437bfbebSnyanmisaka     zme->common.reg4.yrgb_xsu_bypass = yrgb_scl_info.xsu_bypass;
861*437bfbebSnyanmisaka 
862*437bfbebSnyanmisaka     /* 0x0814(reg5) */
863*437bfbebSnyanmisaka     zme->common.reg5.yrgb_src_width = yrgb_scl_info.act_width - 1;
864*437bfbebSnyanmisaka     zme->common.reg5.yrgb_src_height = yrgb_scl_info.act_height - 1;
865*437bfbebSnyanmisaka 
866*437bfbebSnyanmisaka     /* 0x0818(reg6) */
867*437bfbebSnyanmisaka     zme->common.reg6.yrgb_dst_width = yrgb_scl_info.dsp_width - 1;
868*437bfbebSnyanmisaka     zme->common.reg6.yrgb_dst_height = yrgb_scl_info.dsp_height - 1;
869*437bfbebSnyanmisaka 
870*437bfbebSnyanmisaka     /* 0x081C(reg7) */
871*437bfbebSnyanmisaka     zme->common.reg7.yrgb_dering_sen0 = zme_params->zme_dering_sen_0;
872*437bfbebSnyanmisaka     zme->common.reg7.yrgb_dering_sen1 = zme_params->zme_dering_sen_1;
873*437bfbebSnyanmisaka     zme->common.reg7.yrgb_dering_alpha = zme_params->zme_dering_blend_alpha;
874*437bfbebSnyanmisaka     zme->common.reg7.yrgb_dering_delta = zme_params->zme_dering_blend_beta;
875*437bfbebSnyanmisaka 
876*437bfbebSnyanmisaka     /* 0x0820(reg8) */
877*437bfbebSnyanmisaka     zme->common.reg8.yrgb_xscl_factor = yrgb_scl_info.xscl_factor;
878*437bfbebSnyanmisaka     zme->common.reg8.yrgb_xscl_offset = yrgb_scl_info.xscl_offset;
879*437bfbebSnyanmisaka 
880*437bfbebSnyanmisaka     /* 0x0824(reg9) */
881*437bfbebSnyanmisaka     zme->common.reg9.yrgb_yscl_factor = yrgb_scl_info.yscl_factor;
882*437bfbebSnyanmisaka     zme->common.reg9.yrgb_yscl_offset = yrgb_scl_info.yscl_offset;
883*437bfbebSnyanmisaka 
884*437bfbebSnyanmisaka     /* 0x0828 ~ 0x082C(reg10 ~ reg11), skip */
885*437bfbebSnyanmisaka 
886*437bfbebSnyanmisaka     /* 0x0830(reg12) */
887*437bfbebSnyanmisaka     zme->common.reg12.cbcr_xsd_en = cbcr_scl_info.xsd_en;
888*437bfbebSnyanmisaka     zme->common.reg12.cbcr_xsu_en = cbcr_scl_info.xsu_en;
889*437bfbebSnyanmisaka     zme->common.reg12.cbcr_scl_mode = cbcr_scl_info.xscl_mode;
890*437bfbebSnyanmisaka     zme->common.reg12.cbcr_ysd_en = cbcr_scl_info.ysd_en;
891*437bfbebSnyanmisaka     zme->common.reg12.cbcr_ysu_en = cbcr_scl_info.ysu_en;
892*437bfbebSnyanmisaka     zme->common.reg12.cbcr_yscl_mode = cbcr_scl_info.yscl_mode;
893*437bfbebSnyanmisaka     zme->common.reg12.cbcr_dering_en = cbcr_scl_info.dering_en;
894*437bfbebSnyanmisaka     zme->common.reg12.cbcr_gt_en = cbcr_scl_info.ygt_en;
895*437bfbebSnyanmisaka     zme->common.reg12.cbcr_gt_mode = cbcr_scl_info.ygt_mode;
896*437bfbebSnyanmisaka     zme->common.reg12.cbcr_xgt_en = cbcr_scl_info.xgt_en;
897*437bfbebSnyanmisaka     zme->common.reg12.cbcr_xgt_mode = cbcr_scl_info.xgt_mode;
898*437bfbebSnyanmisaka     zme->common.reg12.cbcr_xsd_bypass = cbcr_scl_info.xsd_bypass;
899*437bfbebSnyanmisaka     zme->common.reg12.cbcr_ys_bypass = cbcr_scl_info.ys_bypass;
900*437bfbebSnyanmisaka     zme->common.reg12.cbcr_xsu_bypass = cbcr_scl_info.xsu_bypass;
901*437bfbebSnyanmisaka 
902*437bfbebSnyanmisaka     /* 0x0834(reg13) */
903*437bfbebSnyanmisaka     zme->common.reg13.cbcr_src_width = cbcr_scl_info.act_width - 1;
904*437bfbebSnyanmisaka     zme->common.reg13.cbcr_src_height = cbcr_scl_info.act_height - 1;
905*437bfbebSnyanmisaka 
906*437bfbebSnyanmisaka     /* 0x0838(reg14) */
907*437bfbebSnyanmisaka     zme->common.reg14.cbcr_dst_width = cbcr_scl_info.dsp_width - 1;
908*437bfbebSnyanmisaka     zme->common.reg14.cbcr_dst_height = cbcr_scl_info.dsp_height - 1;
909*437bfbebSnyanmisaka 
910*437bfbebSnyanmisaka     /* 0x083C(reg15) */
911*437bfbebSnyanmisaka     zme->common.reg15.cbcr_dering_sen0 = zme_params->zme_dering_sen_0;
912*437bfbebSnyanmisaka     zme->common.reg15.cbcr_dering_sen1 = zme_params->zme_dering_sen_1;
913*437bfbebSnyanmisaka     zme->common.reg15.cbcr_dering_alpha = zme_params->zme_dering_blend_alpha;
914*437bfbebSnyanmisaka     zme->common.reg15.cbcr_dering_delta = zme_params->zme_dering_blend_beta;
915*437bfbebSnyanmisaka 
916*437bfbebSnyanmisaka     /* 0x0840(reg16) */
917*437bfbebSnyanmisaka     zme->common.reg16.cbcr_xscl_factor = cbcr_scl_info.xscl_factor;
918*437bfbebSnyanmisaka     zme->common.reg16.cbcr_xscl_offset = cbcr_scl_info.xscl_offset;
919*437bfbebSnyanmisaka 
920*437bfbebSnyanmisaka     /* 0x0844(reg17) */
921*437bfbebSnyanmisaka     zme->common.reg17.cbcr_yscl_factor = cbcr_scl_info.yscl_factor;
922*437bfbebSnyanmisaka     zme->common.reg17.cbcr_yscl_offset = cbcr_scl_info.yscl_offset;
923*437bfbebSnyanmisaka 
924*437bfbebSnyanmisaka     /* 3.2 set reg::zme::coef */
925*437bfbebSnyanmisaka     /* 0x0000(reg0) */
926*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(0, 0, 0);
927*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(0, 0, 1);
928*437bfbebSnyanmisaka 
929*437bfbebSnyanmisaka     /* 0x0004(reg1) */
930*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(1, 0, 2);
931*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(1, 0, 3);
932*437bfbebSnyanmisaka 
933*437bfbebSnyanmisaka     /* 0x0008(reg2) */
934*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(2, 0, 4);
935*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(2, 0, 5);
936*437bfbebSnyanmisaka 
937*437bfbebSnyanmisaka     /* 0x000c(reg3) */
938*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(3, 0, 6);
939*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(3, 0, 7);
940*437bfbebSnyanmisaka 
941*437bfbebSnyanmisaka     /* 0x0010(reg4) */
942*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(4, 1, 0);
943*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(4, 1, 1);
944*437bfbebSnyanmisaka 
945*437bfbebSnyanmisaka     /* 0x0014(reg5) */
946*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(5, 1, 2);
947*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(5, 1, 3);
948*437bfbebSnyanmisaka 
949*437bfbebSnyanmisaka     /* 0x0018(reg6) */
950*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(6, 1, 4);
951*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(6, 1, 5);
952*437bfbebSnyanmisaka 
953*437bfbebSnyanmisaka     /* 0x001c(reg7) */
954*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(7, 1, 6);
955*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(7, 1, 7);
956*437bfbebSnyanmisaka 
957*437bfbebSnyanmisaka     /* 0x0020(reg8) */
958*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(8, 2, 0);
959*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(8, 2, 1);
960*437bfbebSnyanmisaka 
961*437bfbebSnyanmisaka     /* 0x0024(reg9) */
962*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(9, 2, 2);
963*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(9, 2, 3);
964*437bfbebSnyanmisaka 
965*437bfbebSnyanmisaka     /* 0x0028(reg10) */
966*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(10, 2, 4);
967*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(10, 2, 5);
968*437bfbebSnyanmisaka 
969*437bfbebSnyanmisaka     /* 0x002c(reg11) */
970*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(11, 2, 6);
971*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(11, 2, 7);
972*437bfbebSnyanmisaka 
973*437bfbebSnyanmisaka     /* 0x0030(reg12) */
974*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(12, 3, 0);
975*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(12, 3, 1);
976*437bfbebSnyanmisaka 
977*437bfbebSnyanmisaka     /* 0x0034(reg13) */
978*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(13, 3, 2);
979*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(13, 3, 3);
980*437bfbebSnyanmisaka 
981*437bfbebSnyanmisaka     /* 0x0038(reg14) */
982*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(14, 3, 4);
983*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(14, 3, 5);
984*437bfbebSnyanmisaka 
985*437bfbebSnyanmisaka     /* 0x003c(reg15) */
986*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(15, 3, 6);
987*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(15, 3, 7);
988*437bfbebSnyanmisaka 
989*437bfbebSnyanmisaka     /* 0x0040(reg16) */
990*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(16, 4, 0);
991*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(16, 4, 1);
992*437bfbebSnyanmisaka 
993*437bfbebSnyanmisaka     /* 0x0044(reg17) */
994*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(17, 4, 2);
995*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(17, 4, 3);
996*437bfbebSnyanmisaka 
997*437bfbebSnyanmisaka     /* 0x0048(reg18) */
998*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(18, 4, 4);
999*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(18, 4, 5);
1000*437bfbebSnyanmisaka 
1001*437bfbebSnyanmisaka     /* 0x004c(reg19) */
1002*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(19, 4, 6);
1003*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(19, 4, 7);
1004*437bfbebSnyanmisaka 
1005*437bfbebSnyanmisaka     /* 0x0050(reg20) */
1006*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(20, 5, 0);
1007*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(20, 5, 1);
1008*437bfbebSnyanmisaka 
1009*437bfbebSnyanmisaka     /* 0x0054(reg21) */
1010*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(21, 5, 2);
1011*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(21, 5, 3);
1012*437bfbebSnyanmisaka 
1013*437bfbebSnyanmisaka     /* 0x0058(reg22) */
1014*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(22, 5, 4);
1015*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(22, 5, 5);
1016*437bfbebSnyanmisaka 
1017*437bfbebSnyanmisaka     /* 0x005c(reg23) */
1018*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(23, 5, 6);
1019*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(23, 5, 7);
1020*437bfbebSnyanmisaka 
1021*437bfbebSnyanmisaka     /* 0x0060(reg24) */
1022*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(24, 6, 0);
1023*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(24, 6, 1);
1024*437bfbebSnyanmisaka 
1025*437bfbebSnyanmisaka     /* 0x0064(reg25) */
1026*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(25, 6, 2);
1027*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(25, 6, 3);
1028*437bfbebSnyanmisaka 
1029*437bfbebSnyanmisaka     /* 0x0068(reg26) */
1030*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(26, 6, 4);
1031*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(26, 6, 5);
1032*437bfbebSnyanmisaka 
1033*437bfbebSnyanmisaka     /* 0x006c(reg27) */
1034*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(27, 6, 6);
1035*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(27, 6, 7);
1036*437bfbebSnyanmisaka 
1037*437bfbebSnyanmisaka     /* 0x0070(reg28) */
1038*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(28, 7, 0);
1039*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(28, 7, 1);
1040*437bfbebSnyanmisaka 
1041*437bfbebSnyanmisaka     /* 0x0074(reg29) */
1042*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(29, 7, 2);
1043*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(29, 7, 3);
1044*437bfbebSnyanmisaka 
1045*437bfbebSnyanmisaka     /* 0x0078(reg30) */
1046*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(30, 7, 4);
1047*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(30, 7, 5);
1048*437bfbebSnyanmisaka 
1049*437bfbebSnyanmisaka     /* 0x007c(reg31) */
1050*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(31, 7, 6);
1051*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(31, 7, 7);
1052*437bfbebSnyanmisaka 
1053*437bfbebSnyanmisaka     /* 0x0080(reg32) */
1054*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(32, 8, 0);
1055*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(32, 8, 1);
1056*437bfbebSnyanmisaka 
1057*437bfbebSnyanmisaka     /* 0x0084(reg33) */
1058*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(33, 8, 2);
1059*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(33, 8, 3);
1060*437bfbebSnyanmisaka 
1061*437bfbebSnyanmisaka     /* 0x0088(reg34) */
1062*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(34, 8, 4);
1063*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(34, 8, 5);
1064*437bfbebSnyanmisaka 
1065*437bfbebSnyanmisaka     /* 0x008c(reg35) */
1066*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(35, 8, 6);
1067*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(35, 8, 7);
1068*437bfbebSnyanmisaka 
1069*437bfbebSnyanmisaka     /* 0x0090(reg36) */
1070*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(36, 9, 0);
1071*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(36, 9, 1);
1072*437bfbebSnyanmisaka 
1073*437bfbebSnyanmisaka     /* 0x0094(reg37) */
1074*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(37, 9, 2);
1075*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(37, 9, 3);
1076*437bfbebSnyanmisaka 
1077*437bfbebSnyanmisaka     /* 0x0098(reg38) */
1078*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(38, 9, 4);
1079*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(38, 9, 5);
1080*437bfbebSnyanmisaka 
1081*437bfbebSnyanmisaka     /* 0x009c(reg39) */
1082*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(39, 9, 6);
1083*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(39, 9, 7);
1084*437bfbebSnyanmisaka 
1085*437bfbebSnyanmisaka     /* 0x00a0(reg40) */
1086*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(40, 10, 0);
1087*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(40, 10, 1);
1088*437bfbebSnyanmisaka 
1089*437bfbebSnyanmisaka     /* 0x00a4(reg41) */
1090*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(41, 10, 2);
1091*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(41, 10, 3);
1092*437bfbebSnyanmisaka 
1093*437bfbebSnyanmisaka     /* 0x00a8(reg42) */
1094*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(42, 10, 4);
1095*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(42, 10, 5);
1096*437bfbebSnyanmisaka 
1097*437bfbebSnyanmisaka     /* 0x00ac(reg43) */
1098*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(43, 10, 6);
1099*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(43, 10, 7);
1100*437bfbebSnyanmisaka 
1101*437bfbebSnyanmisaka     /* 0x00b0(reg44) */
1102*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(44, 11, 0);
1103*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(44, 11, 1);
1104*437bfbebSnyanmisaka 
1105*437bfbebSnyanmisaka     /* 0x00b4(reg45) */
1106*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(45, 11, 2);
1107*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(45, 11, 3);
1108*437bfbebSnyanmisaka 
1109*437bfbebSnyanmisaka     /* 0x00b8(reg46) */
1110*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(46, 11, 4);
1111*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(46, 11, 5);
1112*437bfbebSnyanmisaka 
1113*437bfbebSnyanmisaka     /* 0x00bc(reg47) */
1114*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(47, 11, 6);
1115*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(47, 11, 7);
1116*437bfbebSnyanmisaka 
1117*437bfbebSnyanmisaka     /* 0x00c0(reg48) */
1118*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(48, 12, 0);
1119*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(48, 12, 1);
1120*437bfbebSnyanmisaka 
1121*437bfbebSnyanmisaka     /* 0x00c4(reg49) */
1122*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(49, 12, 2);
1123*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(49, 12, 3);
1124*437bfbebSnyanmisaka 
1125*437bfbebSnyanmisaka     /* 0x00c8(reg50) */
1126*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(50, 12, 4);
1127*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(50, 12, 5);
1128*437bfbebSnyanmisaka 
1129*437bfbebSnyanmisaka     /* 0x00cc(reg51) */
1130*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(51, 12, 6);
1131*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(51, 12, 7);
1132*437bfbebSnyanmisaka 
1133*437bfbebSnyanmisaka     /* 0x00d0(reg52) */
1134*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(52, 13, 0);
1135*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(52, 13, 1);
1136*437bfbebSnyanmisaka 
1137*437bfbebSnyanmisaka     /* 0x00d4(reg53) */
1138*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(53, 13, 2);
1139*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(53, 13, 3);
1140*437bfbebSnyanmisaka 
1141*437bfbebSnyanmisaka     /* 0x00d8(reg54) */
1142*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(54, 13, 4);
1143*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(54, 13, 5);
1144*437bfbebSnyanmisaka 
1145*437bfbebSnyanmisaka     /* 0x00dc(reg55) */
1146*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(55, 13, 6);
1147*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(55, 13, 7);
1148*437bfbebSnyanmisaka 
1149*437bfbebSnyanmisaka     /* 0x00e0(reg56) */
1150*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(56, 14, 0);
1151*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(56, 14, 1);
1152*437bfbebSnyanmisaka 
1153*437bfbebSnyanmisaka     /* 0x00e4(reg57) */
1154*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(57, 14, 2);
1155*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(57, 14, 3);
1156*437bfbebSnyanmisaka 
1157*437bfbebSnyanmisaka     /* 0x00e8(reg58) */
1158*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(58, 14, 4);
1159*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(58, 14, 5);
1160*437bfbebSnyanmisaka 
1161*437bfbebSnyanmisaka     /* 0x00ec(reg59) */
1162*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(59, 14, 6);
1163*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(59, 14, 7);
1164*437bfbebSnyanmisaka 
1165*437bfbebSnyanmisaka     /* 0x00f0(reg60) */
1166*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(60, 15, 0);
1167*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(60, 15, 1);
1168*437bfbebSnyanmisaka 
1169*437bfbebSnyanmisaka     /* 0x00f4(reg61) */
1170*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(61, 15, 2);
1171*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(61, 15, 3);
1172*437bfbebSnyanmisaka 
1173*437bfbebSnyanmisaka     /* 0x00f8(reg62) */
1174*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(62, 15, 4);
1175*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(62, 15, 5);
1176*437bfbebSnyanmisaka 
1177*437bfbebSnyanmisaka     /* 0x00fc(reg63) */
1178*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(63, 15, 6);
1179*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(63, 15, 7);
1180*437bfbebSnyanmisaka 
1181*437bfbebSnyanmisaka     /* 0x0100(reg64) */
1182*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(64, 16, 0);
1183*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(64, 16, 1);
1184*437bfbebSnyanmisaka 
1185*437bfbebSnyanmisaka     /* 0x0104(reg65) */
1186*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(65, 16, 2);
1187*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(65, 16, 3);
1188*437bfbebSnyanmisaka 
1189*437bfbebSnyanmisaka     /* 0x0108(reg66) */
1190*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(66, 16, 4);
1191*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(66, 16, 5);
1192*437bfbebSnyanmisaka 
1193*437bfbebSnyanmisaka     /* 0x010c(reg67) */
1194*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(67, 16, 6);
1195*437bfbebSnyanmisaka     VDPP_SET_ZME_COEF(67, 16, 7);
1196*437bfbebSnyanmisaka 
1197*437bfbebSnyanmisaka }
1198