1b862a648SJernej Skrabec /*
2b862a648SJernej Skrabec * Copyright (C) 2017 Jernej Skrabec <jernej.skrabec@siol.net>
3b862a648SJernej Skrabec *
4b862a648SJernej Skrabec * Coefficients are taken from BSP driver, which is:
5b862a648SJernej Skrabec * Copyright (C) 2014-2015 Allwinner
6b862a648SJernej Skrabec *
7b862a648SJernej Skrabec * This file is licensed under the terms of the GNU General Public
8b862a648SJernej Skrabec * License version 2. This program is licensed "as is" without any
9b862a648SJernej Skrabec * warranty of any kind, whether express or implied.
10b862a648SJernej Skrabec */
11b862a648SJernej Skrabec
12b862a648SJernej Skrabec #include "sun8i_vi_scaler.h"
13b862a648SJernej Skrabec
14b862a648SJernej Skrabec static const u32 lan3coefftab32_left[480] = {
15b862a648SJernej Skrabec 0x40000000, 0x40fe0000, 0x3ffd0100, 0x3efc0100,
16b862a648SJernej Skrabec 0x3efb0100, 0x3dfa0200, 0x3cf90200, 0x3bf80200,
17b862a648SJernej Skrabec 0x39f70200, 0x37f70200, 0x35f70200, 0x33f70200,
18b862a648SJernej Skrabec 0x31f70200, 0x2ef70200, 0x2cf70200, 0x2af70200,
19b862a648SJernej Skrabec 0x27f70200, 0x24f80100, 0x22f80100, 0x1ef90100,
20b862a648SJernej Skrabec 0x1cf90100, 0x19fa0100, 0x17fa0100, 0x14fb0100,
21b862a648SJernej Skrabec 0x11fc0000, 0x0ffc0000, 0x0cfd0000, 0x0afd0000,
22b862a648SJernej Skrabec 0x08fe0000, 0x05ff0000, 0x03ff0000, 0x02000000,
23b862a648SJernej Skrabec
24b862a648SJernej Skrabec 0x3806fc02, 0x3805fc02, 0x3803fd01, 0x3801fe01,
25b862a648SJernej Skrabec 0x3700fe01, 0x35ffff01, 0x35fdff01, 0x34fc0001,
26b862a648SJernej Skrabec 0x34fb0000, 0x33fa0000, 0x31fa0100, 0x2ff90100,
27b862a648SJernej Skrabec 0x2df80200, 0x2bf80200, 0x2af70200, 0x28f70200,
28b862a648SJernej Skrabec 0x27f70200, 0x24f70300, 0x22f70300, 0x1ff70300,
29b862a648SJernej Skrabec 0x1ef70300, 0x1cf70300, 0x1af70300, 0x18f70300,
30b862a648SJernej Skrabec 0x16f80300, 0x13f80300, 0x11f90300, 0x0ef90300,
31b862a648SJernej Skrabec 0x0efa0200, 0x0cfa0200, 0x0afb0200, 0x08fb0200,
32b862a648SJernej Skrabec
33b862a648SJernej Skrabec 0x320bfa02, 0x3309fa02, 0x3208fb02, 0x3206fb02,
34b862a648SJernej Skrabec 0x3205fb02, 0x3104fc02, 0x3102fc01, 0x3001fd01,
35b862a648SJernej Skrabec 0x3000fd01, 0x2ffffd01, 0x2efefe01, 0x2dfdfe01,
36b862a648SJernej Skrabec 0x2bfcff01, 0x29fcff01, 0x28fbff01, 0x27fa0001,
37b862a648SJernej Skrabec 0x26fa0000, 0x24f90000, 0x22f90100, 0x20f90100,
38b862a648SJernej Skrabec 0x1ff80100, 0x1ef80100, 0x1cf80100, 0x1af80200,
39b862a648SJernej Skrabec 0x18f80200, 0x17f80200, 0x15f80200, 0x12f80200,
40b862a648SJernej Skrabec 0x11f90200, 0x0ff90200, 0x0df90200, 0x0cfa0200,
41b862a648SJernej Skrabec
42b862a648SJernej Skrabec 0x2e0efa01, 0x2f0dfa01, 0x2f0bfa01, 0x2e0afa01,
43b862a648SJernej Skrabec 0x2e09fa01, 0x2e07fb01, 0x2d06fb01, 0x2d05fb01,
44b862a648SJernej Skrabec 0x2c04fb01, 0x2b03fc01, 0x2a02fc01, 0x2a01fc01,
45b862a648SJernej Skrabec 0x2800fd01, 0x28fffd01, 0x26fefd01, 0x25fefe01,
46b862a648SJernej Skrabec 0x24fdfe01, 0x23fcfe01, 0x21fcff01, 0x20fbff01,
47b862a648SJernej Skrabec 0x1efbff01, 0x1efbff00, 0x1cfa0000, 0x1bfa0000,
48b862a648SJernej Skrabec 0x19fa0000, 0x18fa0000, 0x17f90000, 0x15f90100,
49b862a648SJernej Skrabec 0x14f90100, 0x12f90100, 0x11f90100, 0x0ff90100,
50b862a648SJernej Skrabec
51b862a648SJernej Skrabec 0x2b10fa00, 0x2b0ffa00, 0x2b0efa00, 0x2b0cfa00,
52b862a648SJernej Skrabec 0x2b0bfa00, 0x2a0afb01, 0x2a09fb01, 0x2908fb01,
53b862a648SJernej Skrabec 0x2807fb01, 0x2806fb01, 0x2805fb01, 0x2604fc01,
54b862a648SJernej Skrabec 0x2503fc01, 0x2502fc01, 0x2401fc01, 0x2301fc01,
55b862a648SJernej Skrabec 0x2100fd01, 0x21fffd01, 0x21fffd01, 0x20fefd01,
56b862a648SJernej Skrabec 0x1dfefe01, 0x1cfdfe01, 0x1cfdfe00, 0x1bfcfe00,
57b862a648SJernej Skrabec 0x19fcff00, 0x19fbff00, 0x17fbff00, 0x16fbff00,
58b862a648SJernej Skrabec 0x15fbff00, 0x14fb0000, 0x13fa0000, 0x11fa0000,
59b862a648SJernej Skrabec
60b862a648SJernej Skrabec 0x2811fcff, 0x2810fcff, 0x280ffbff, 0x280efbff,
61b862a648SJernej Skrabec 0x270dfb00, 0x270cfb00, 0x270bfb00, 0x260afb00,
62b862a648SJernej Skrabec 0x2609fb00, 0x2508fb00, 0x2507fb00, 0x2407fb00,
63b862a648SJernej Skrabec 0x2406fc00, 0x2305fc00, 0x2204fc00, 0x2203fc00,
64b862a648SJernej Skrabec 0x2103fc00, 0x2002fc00, 0x1f01fd00, 0x1e01fd00,
65b862a648SJernej Skrabec 0x1d00fd00, 0x1dfffd00, 0x1cfffd00, 0x1bfefd00,
66b862a648SJernej Skrabec 0x1afefe00, 0x19fefe00, 0x18fdfe00, 0x17fdfe00,
67b862a648SJernej Skrabec 0x16fdfe00, 0x15fcff00, 0x13fcff00, 0x12fcff00,
68b862a648SJernej Skrabec
69b862a648SJernej Skrabec 0x2512fdfe, 0x2511fdff, 0x2410fdff, 0x240ffdff,
70b862a648SJernej Skrabec 0x240efcff, 0x240dfcff, 0x240dfcff, 0x240cfcff,
71b862a648SJernej Skrabec 0x230bfcff, 0x230afc00, 0x2209fc00, 0x2108fc00,
72b862a648SJernej Skrabec 0x2108fc00, 0x2007fc00, 0x2006fc00, 0x2005fc00,
73b862a648SJernej Skrabec 0x1f05fc00, 0x1e04fc00, 0x1e03fc00, 0x1c03fd00,
74b862a648SJernej Skrabec 0x1c02fd00, 0x1b02fd00, 0x1b01fd00, 0x1a00fd00,
75b862a648SJernej Skrabec 0x1900fd00, 0x1800fd00, 0x17fffe00, 0x16fffe00,
76b862a648SJernej Skrabec 0x16fefe00, 0x14fefe00, 0x13fefe00, 0x13fdfe00,
77b862a648SJernej Skrabec
78b862a648SJernej Skrabec 0x2212fffe, 0x2211fefe, 0x2211fefe, 0x2110fefe,
79b862a648SJernej Skrabec 0x210ffeff, 0x220efdff, 0x210dfdff, 0x210dfdff,
80b862a648SJernej Skrabec 0x210cfdff, 0x210bfdff, 0x200afdff, 0x200afdff,
81b862a648SJernej Skrabec 0x1f09fdff, 0x1f08fdff, 0x1d08fd00, 0x1c07fd00,
82b862a648SJernej Skrabec 0x1d06fd00, 0x1b06fd00, 0x1b05fd00, 0x1c04fd00,
83b862a648SJernej Skrabec 0x1b04fd00, 0x1a03fd00, 0x1a03fd00, 0x1902fd00,
84b862a648SJernej Skrabec 0x1802fd00, 0x1801fd00, 0x1701fd00, 0x1600fd00,
85b862a648SJernej Skrabec 0x1400fe00, 0x1400fe00, 0x14fffe00, 0x13fffe00,
86b862a648SJernej Skrabec
87b862a648SJernej Skrabec 0x201200fe, 0x201100fe, 0x1f11fffe, 0x2010fffe,
88b862a648SJernej Skrabec 0x1f0ffffe, 0x1e0ffffe, 0x1f0efeff, 0x1f0dfeff,
89b862a648SJernej Skrabec 0x1f0dfeff, 0x1e0cfeff, 0x1e0bfeff, 0x1d0bfeff,
90b862a648SJernej Skrabec 0x1d0afeff, 0x1d09fdff, 0x1d09fdff, 0x1c08fdff,
91b862a648SJernej Skrabec 0x1c07fdff, 0x1b07fd00, 0x1b06fd00, 0x1a06fd00,
92b862a648SJernej Skrabec 0x1a05fd00, 0x1805fd00, 0x1904fd00, 0x1804fd00,
93b862a648SJernej Skrabec 0x1703fd00, 0x1703fd00, 0x1602fe00, 0x1502fe00,
94b862a648SJernej Skrabec 0x1501fe00, 0x1401fe00, 0x1301fe00, 0x1300fe00,
95b862a648SJernej Skrabec
96b862a648SJernej Skrabec 0x1c1202fe, 0x1c1102fe, 0x1b1102fe, 0x1c1001fe,
97b862a648SJernej Skrabec 0x1b1001fe, 0x1b0f01ff, 0x1b0e00ff, 0x1b0e00ff,
98b862a648SJernej Skrabec 0x1b0d00ff, 0x1a0d00ff, 0x1a0c00ff, 0x1a0cffff,
99b862a648SJernej Skrabec 0x1a0bffff, 0x1a0bffff, 0x1a0affff, 0x180affff,
100b862a648SJernej Skrabec 0x1909ffff, 0x1809ffff, 0x1808ffff, 0x1808feff,
101b862a648SJernej Skrabec 0x1807feff, 0x1707fe00, 0x1606fe00, 0x1506fe00,
102b862a648SJernej Skrabec 0x1605fe00, 0x1505fe00, 0x1504fe00, 0x1304fe00,
103b862a648SJernej Skrabec 0x1304fe00, 0x1303fe00, 0x1203fe00, 0x1203fe00,
104b862a648SJernej Skrabec
105b862a648SJernej Skrabec 0x181104ff, 0x191103ff, 0x191003ff, 0x181003ff,
106b862a648SJernej Skrabec 0x180f03ff, 0x190f02ff, 0x190e02ff, 0x180e02ff,
107b862a648SJernej Skrabec 0x180d02ff, 0x180d01ff, 0x180d01ff, 0x180c01ff,
108b862a648SJernej Skrabec 0x180c01ff, 0x180b00ff, 0x170b00ff, 0x170a00ff,
109b862a648SJernej Skrabec 0x170a00ff, 0x170900ff, 0x160900ff, 0x160900ff,
110b862a648SJernej Skrabec 0x1608ffff, 0x1508ffff, 0x1507ff00, 0x1507ff00,
111b862a648SJernej Skrabec 0x1407ff00, 0x1306ff00, 0x1306ff00, 0x1305ff00,
112b862a648SJernej Skrabec 0x1205ff00, 0x1105ff00, 0x1204ff00, 0x1104ff00,
113b862a648SJernej Skrabec
114b862a648SJernej Skrabec 0x171005ff, 0x171005ff, 0x171004ff, 0x170f04ff,
115b862a648SJernej Skrabec 0x160f04ff, 0x170f03ff, 0x170e03ff, 0x160e03ff,
116b862a648SJernej Skrabec 0x160d03ff, 0x160d02ff, 0x160d02ff, 0x160c02ff,
117b862a648SJernej Skrabec 0x160c02ff, 0x160c02ff, 0x160b01ff, 0x150b01ff,
118b862a648SJernej Skrabec 0x150a01ff, 0x150a01ff, 0x150a01ff, 0x140901ff,
119b862a648SJernej Skrabec 0x14090000, 0x14090000, 0x14080000, 0x13080000,
120b862a648SJernej Skrabec 0x13070000, 0x12070000, 0x12070000, 0x12060000,
121b862a648SJernej Skrabec 0x11060000, 0x11060000, 0x11050000, 0x1105ff00,
122b862a648SJernej Skrabec
123b862a648SJernej Skrabec 0x14100600, 0x15100500, 0x150f0500, 0x150f0500,
124b862a648SJernej Skrabec 0x140f0500, 0x150e0400, 0x140e0400, 0x130e0400,
125b862a648SJernej Skrabec 0x140d0400, 0x150d0300, 0x130d0300, 0x140c0300,
126b862a648SJernej Skrabec 0x140c0300, 0x140c0200, 0x140b0200, 0x130b0200,
127b862a648SJernej Skrabec 0x120b0200, 0x130a0200, 0x130a0200, 0x130a0100,
128b862a648SJernej Skrabec 0x13090100, 0x12090100, 0x11090100, 0x12080100,
129b862a648SJernej Skrabec 0x11080100, 0x10080100, 0x11070100, 0x11070000,
130b862a648SJernej Skrabec 0x10070000, 0x11060000, 0x10060000, 0x10060000,
131b862a648SJernej Skrabec
132b862a648SJernej Skrabec 0x140f0600, 0x140f0600, 0x130f0600, 0x140f0500,
133b862a648SJernej Skrabec 0x140e0500, 0x130e0500, 0x130e0500, 0x140d0400,
134b862a648SJernej Skrabec 0x140d0400, 0x130d0400, 0x120d0400, 0x130c0400,
135b862a648SJernej Skrabec 0x130c0300, 0x130c0300, 0x130b0300, 0x130b0300,
136b862a648SJernej Skrabec 0x110b0300, 0x130a0200, 0x120a0200, 0x120a0200,
137b862a648SJernej Skrabec 0x120a0200, 0x12090200, 0x10090200, 0x11090100,
138b862a648SJernej Skrabec 0x11080100, 0x11080100, 0x10080100, 0x10080100,
139b862a648SJernej Skrabec 0x10070100, 0x10070100, 0x0f070100, 0x10060100,
140b862a648SJernej Skrabec
141b862a648SJernej Skrabec 0x120f0701, 0x130f0601, 0x130e0601, 0x130e0601,
142b862a648SJernej Skrabec 0x120e0601, 0x130e0501, 0x130e0500, 0x130d0500,
143b862a648SJernej Skrabec 0x120d0500, 0x120d0500, 0x130c0400, 0x130c0400,
144b862a648SJernej Skrabec 0x120c0400, 0x110c0400, 0x120b0400, 0x120b0300,
145b862a648SJernej Skrabec 0x120b0300, 0x120b0300, 0x120a0300, 0x110a0300,
146b862a648SJernej Skrabec 0x110a0200, 0x11090200, 0x11090200, 0x10090200,
147b862a648SJernej Skrabec 0x10090200, 0x10080200, 0x10080200, 0x10080100,
148b862a648SJernej Skrabec 0x0f080100, 0x10070100, 0x0f070100, 0x0f070100
149b862a648SJernej Skrabec };
150b862a648SJernej Skrabec
151b862a648SJernej Skrabec static const u32 lan3coefftab32_right[480] = {
152b862a648SJernej Skrabec 0x00000000, 0x00000002, 0x0000ff04, 0x0000ff06,
153b862a648SJernej Skrabec 0x0000fe08, 0x0000fd0a, 0x0000fd0c, 0x0000fc0f,
154b862a648SJernej Skrabec 0x0000fc12, 0x0001fb14, 0x0001fa17, 0x0001fa19,
155b862a648SJernej Skrabec 0x0001f91c, 0x0001f91f, 0x0001f822, 0x0001f824,
156b862a648SJernej Skrabec 0x0002f727, 0x0002f72a, 0x0002f72c, 0x0002f72f,
157b862a648SJernej Skrabec 0x0002f731, 0x0002f733, 0x0002f735, 0x0002f737,
158b862a648SJernej Skrabec 0x0002f73a, 0x0002f83b, 0x0002f93c, 0x0002fa3d,
159b862a648SJernej Skrabec 0x0001fb3e, 0x0001fc3f, 0x0001fd40, 0x0000fe40,
160b862a648SJernej Skrabec
161b862a648SJernej Skrabec 0x0002fc06, 0x0002fb08, 0x0002fb0a, 0x0002fa0c,
162b862a648SJernej Skrabec 0x0002fa0e, 0x0003f910, 0x0003f912, 0x0003f814,
163b862a648SJernej Skrabec 0x0003f816, 0x0003f719, 0x0003f71a, 0x0003f71d,
164b862a648SJernej Skrabec 0x0003f71f, 0x0003f721, 0x0003f723, 0x0003f725,
165b862a648SJernej Skrabec 0x0002f727, 0x0002f729, 0x0002f72b, 0x0002f82d,
166b862a648SJernej Skrabec 0x0002f82e, 0x0001f930, 0x0001fa31, 0x0000fa34,
167b862a648SJernej Skrabec 0x0000fb34, 0x0100fc35, 0x01fffd36, 0x01ffff37,
168b862a648SJernej Skrabec 0x01fe0037, 0x01fe0138, 0x01fd0338, 0x02fc0538,
169b862a648SJernej Skrabec
170b862a648SJernej Skrabec 0x0002fa0b, 0x0002fa0c, 0x0002f90e, 0x0002f910,
171b862a648SJernej Skrabec 0x0002f911, 0x0002f813, 0x0002f816, 0x0002f817,
172b862a648SJernej Skrabec 0x0002f818, 0x0002f81a, 0x0001f81c, 0x0001f81e,
173b862a648SJernej Skrabec 0x0001f820, 0x0001f921, 0x0001f923, 0x0000f925,
174b862a648SJernej Skrabec 0x0000fa26, 0x0100fa28, 0x01fffb29, 0x01fffc2a,
175b862a648SJernej Skrabec 0x01fffc2c, 0x01fefd2d, 0x01fefe2e, 0x01fdff2f,
176b862a648SJernej Skrabec 0x01fd0030, 0x01fd0130, 0x01fc0232, 0x02fc0432,
177b862a648SJernej Skrabec 0x02fb0532, 0x02fb0633, 0x02fb0833, 0x02fa0933,
178b862a648SJernej Skrabec
179b862a648SJernej Skrabec 0x0001fa0e, 0x0001f90f, 0x0001f911, 0x0001f913,
180b862a648SJernej Skrabec 0x0001f914, 0x0001f915, 0x0000f918, 0x0000fa18,
181b862a648SJernej Skrabec 0x0000fa1a, 0x0000fa1b, 0x0000fa1d, 0x00fffb1e,
182b862a648SJernej Skrabec 0x01fffb1f, 0x01fffb20, 0x01fffc22, 0x01fefc23,
183b862a648SJernej Skrabec 0x01fefd24, 0x01fefe25, 0x01fdfe27, 0x01fdff28,
184b862a648SJernej Skrabec 0x01fd0029, 0x01fc012a, 0x01fc022b, 0x01fc032b,
185b862a648SJernej Skrabec 0x01fb042d, 0x01fb052d, 0x01fb062e, 0x01fb072e,
186b862a648SJernej Skrabec 0x01fa092e, 0x01fa0a2f, 0x01fa0b2f, 0x01fa0d2f,
187b862a648SJernej Skrabec
188b862a648SJernej Skrabec 0x0000fa11, 0x0000fa12, 0x0000fa13, 0x0000fb14,
189b862a648SJernej Skrabec 0x00fffb16, 0x00fffb16, 0x00fffb17, 0x00fffb19,
190b862a648SJernej Skrabec 0x00fffc1a, 0x00fefc1c, 0x00fefd1c, 0x01fefd1d,
191b862a648SJernej Skrabec 0x01fefe1e, 0x01fdfe20, 0x01fdff21, 0x01fdff22,
192b862a648SJernej Skrabec 0x01fd0023, 0x01fc0124, 0x01fc0124, 0x01fc0225,
193b862a648SJernej Skrabec 0x01fc0326, 0x01fc0427, 0x01fb0528, 0x01fb0629,
194b862a648SJernej Skrabec 0x01fb0729, 0x01fb0829, 0x01fb092a, 0x01fb0a2a,
195b862a648SJernej Skrabec 0x00fa0b2c, 0x00fa0c2b, 0x00fa0e2b, 0x00fa0f2c,
196b862a648SJernej Skrabec
197b862a648SJernej Skrabec 0x00fffc11, 0x00fffc12, 0x00fffc14, 0x00fffc15,
198b862a648SJernej Skrabec 0x00fefd16, 0x00fefd17, 0x00fefd18, 0x00fefe19,
199b862a648SJernej Skrabec 0x00fefe1a, 0x00fdfe1d, 0x00fdff1d, 0x00fdff1e,
200b862a648SJernej Skrabec 0x00fd001d, 0x00fd011e, 0x00fd0120, 0x00fc0221,
201b862a648SJernej Skrabec 0x00fc0321, 0x00fc0323, 0x00fc0423, 0x00fc0523,
202b862a648SJernej Skrabec 0x00fc0624, 0x00fb0725, 0x00fb0726, 0x00fb0827,
203b862a648SJernej Skrabec 0x00fb0926, 0x00fb0a26, 0x00fb0b27, 0x00fb0c27,
204b862a648SJernej Skrabec 0x00fb0d27, 0xfffb0e28, 0xfffb0f29, 0xfffc1028,
205b862a648SJernej Skrabec
206b862a648SJernej Skrabec 0x00fefd13, 0x00fefd13, 0x00fefe14, 0x00fefe15,
207b862a648SJernej Skrabec 0x00fefe17, 0x00feff17, 0x00feff17, 0x00fd0018,
208b862a648SJernej Skrabec 0x00fd001a, 0x00fd001a, 0x00fd011b, 0x00fd021c,
209b862a648SJernej Skrabec 0x00fd021c, 0x00fd031d, 0x00fc031f, 0x00fc041f,
210b862a648SJernej Skrabec 0x00fc051f, 0x00fc0521, 0x00fc0621, 0x00fc0721,
211b862a648SJernej Skrabec 0x00fc0821, 0x00fc0822, 0x00fc0922, 0x00fc0a23,
212b862a648SJernej Skrabec 0xfffc0b24, 0xfffc0c24, 0xfffc0d24, 0xfffc0d25,
213b862a648SJernej Skrabec 0xfffc0e25, 0xfffd0f25, 0xfffd1025, 0xfffd1125,
214b862a648SJernej Skrabec
215b862a648SJernej Skrabec 0x00feff12, 0x00feff14, 0x00feff14, 0x00fe0015,
216b862a648SJernej Skrabec 0x00fe0015, 0x00fd0017, 0x00fd0118, 0x00fd0118,
217b862a648SJernej Skrabec 0x00fd0218, 0x00fd0219, 0x00fd031a, 0x00fd031a,
218b862a648SJernej Skrabec 0x00fd041b, 0x00fd041c, 0x00fd051c, 0x00fd061d,
219b862a648SJernej Skrabec 0x00fd061d, 0x00fd071e, 0x00fd081e, 0xfffd081f,
220b862a648SJernej Skrabec 0xfffd091f, 0xfffd0a20, 0xfffd0a20, 0xfffd0b21,
221b862a648SJernej Skrabec 0xfffd0c21, 0xfffd0d21, 0xfffd0d22, 0xfffd0e23,
222b862a648SJernej Skrabec 0xfffe0f22, 0xfefe1022, 0xfefe1122, 0xfefe1123,
223b862a648SJernej Skrabec
224b862a648SJernej Skrabec 0x00fe0012, 0x00fe0013, 0x00fe0114, 0x00fe0114,
225b862a648SJernej Skrabec 0x00fe0116, 0x00fe0216, 0x00fe0216, 0x00fd0317,
226b862a648SJernej Skrabec 0x00fd0317, 0x00fd0418, 0x00fd0419, 0x00fd0519,
227b862a648SJernej Skrabec 0x00fd051a, 0x00fd061b, 0x00fd061b, 0x00fd071c,
228b862a648SJernej Skrabec 0xfffd071e, 0xfffd081d, 0xfffd091d, 0xfffd091e,
229b862a648SJernej Skrabec 0xfffe0a1d, 0xfffe0b1e, 0xfffe0b1e, 0xfffe0c1e,
230b862a648SJernej Skrabec 0xfffe0d1f, 0xfffe0d1f, 0xfffe0e1f, 0xfeff0f1f,
231b862a648SJernej Skrabec 0xfeff0f20, 0xfeff1020, 0xfeff1120, 0xfe001120,
232b862a648SJernej Skrabec
233b862a648SJernej Skrabec 0x00fe0212, 0x00fe0312, 0x00fe0313, 0x00fe0314,
234b862a648SJernej Skrabec 0x00fe0414, 0x00fe0414, 0x00fe0416, 0x00fe0515,
235b862a648SJernej Skrabec 0x00fe0516, 0x00fe0616, 0x00fe0617, 0x00fe0717,
236b862a648SJernej Skrabec 0xfffe0719, 0xfffe0818, 0xffff0818, 0xffff0919,
237b862a648SJernej Skrabec 0xffff0919, 0xffff0a19, 0xffff0a1a, 0xffff0b1a,
238b862a648SJernej Skrabec 0xffff0b1b, 0xffff0c1a, 0xff000c1b, 0xff000d1b,
239b862a648SJernej Skrabec 0xff000d1b, 0xff000e1b, 0xff000e1c, 0xff010f1c,
240b862a648SJernej Skrabec 0xfe01101c, 0xfe01101d, 0xfe02111c, 0xfe02111c,
241b862a648SJernej Skrabec
242b862a648SJernej Skrabec 0x00ff0411, 0x00ff0411, 0x00ff0412, 0x00ff0512,
243b862a648SJernej Skrabec 0x00ff0513, 0x00ff0513, 0x00ff0613, 0x00ff0614,
244b862a648SJernej Skrabec 0x00ff0714, 0x00ff0715, 0x00ff0715, 0xffff0816,
245b862a648SJernej Skrabec 0xffff0816, 0xff000916, 0xff000917, 0xff000918,
246b862a648SJernej Skrabec 0xff000a17, 0xff000a18, 0xff000b18, 0xff000b18,
247b862a648SJernej Skrabec 0xff010c18, 0xff010c19, 0xff010d18, 0xff010d18,
248b862a648SJernej Skrabec 0xff020d18, 0xff020e19, 0xff020e19, 0xff020f19,
249b862a648SJernej Skrabec 0xff030f19, 0xff031019, 0xff031019, 0xff031119,
250b862a648SJernej Skrabec
251b862a648SJernej Skrabec 0x00ff0511, 0x00ff0511, 0x00000511, 0x00000611,
252b862a648SJernej Skrabec 0x00000612, 0x00000612, 0x00000712, 0x00000713,
253b862a648SJernej Skrabec 0x00000714, 0x00000814, 0x00000814, 0x00000914,
254b862a648SJernej Skrabec 0x00000914, 0xff010914, 0xff010a15, 0xff010a16,
255b862a648SJernej Skrabec 0xff010a17, 0xff010b16, 0xff010b16, 0xff020c16,
256b862a648SJernej Skrabec 0xff020c16, 0xff020c16, 0xff020d16, 0xff020d17,
257b862a648SJernej Skrabec 0xff030d17, 0xff030e17, 0xff030e17, 0xff030f17,
258b862a648SJernej Skrabec 0xff040f17, 0xff040f17, 0xff041017, 0xff051017,
259b862a648SJernej Skrabec
260b862a648SJernej Skrabec 0x00000610, 0x00000610, 0x00000611, 0x00000611,
261b862a648SJernej Skrabec 0x00000711, 0x00000712, 0x00010712, 0x00010812,
262b862a648SJernej Skrabec 0x00010812, 0x00010812, 0x00010913, 0x00010913,
263b862a648SJernej Skrabec 0x00010913, 0x00010a13, 0x00020a13, 0x00020a14,
264b862a648SJernej Skrabec 0x00020b14, 0x00020b14, 0x00020b14, 0x00020c14,
265b862a648SJernej Skrabec 0x00030c14, 0x00030c15, 0x00030d15, 0x00030d15,
266b862a648SJernej Skrabec 0x00040d15, 0x00040e15, 0x00040e15, 0x00040e16,
267b862a648SJernej Skrabec 0x00050f15, 0x00050f15, 0x00050f16, 0x00051015,
268b862a648SJernej Skrabec
269b862a648SJernej Skrabec 0x00000611, 0x00010610, 0x00010710, 0x00010710,
270b862a648SJernej Skrabec 0x00010711, 0x00010811, 0x00010811, 0x00010812,
271b862a648SJernej Skrabec 0x00010812, 0x00010912, 0x00020912, 0x00020912,
272b862a648SJernej Skrabec 0x00020a12, 0x00020a12, 0x00020a13, 0x00020a13,
273b862a648SJernej Skrabec 0x00030b13, 0x00030b13, 0x00030b14, 0x00030c13,
274b862a648SJernej Skrabec 0x00030c13, 0x00040c13, 0x00040d14, 0x00040d14,
275b862a648SJernej Skrabec 0x00040d15, 0x00040d15, 0x00050e14, 0x00050e14,
276b862a648SJernej Skrabec 0x00050e15, 0x00050f14, 0x00060f14, 0x00060f14,
277b862a648SJernej Skrabec
278b862a648SJernej Skrabec 0x0001070f, 0x0001070f, 0x00010710, 0x00010710,
279b862a648SJernej Skrabec 0x00010810, 0x00010810, 0x00020810, 0x00020811,
280b862a648SJernej Skrabec 0x00020911, 0x00020911, 0x00020912, 0x00020912,
281b862a648SJernej Skrabec 0x00020a12, 0x00030a12, 0x00030a12, 0x00030b12,
282b862a648SJernej Skrabec 0x00030b12, 0x00030b12, 0x00040b12, 0x00040c12,
283b862a648SJernej Skrabec 0x00040c13, 0x00040c14, 0x00040c14, 0x00050d13,
284b862a648SJernej Skrabec 0x00050d13, 0x00050d14, 0x00050e13, 0x01050e13,
285b862a648SJernej Skrabec 0x01060e13, 0x01060e13, 0x01060e14, 0x01060f13
286b862a648SJernej Skrabec };
287b862a648SJernej Skrabec
288b862a648SJernej Skrabec static const u32 lan2coefftab32[480] = {
289b862a648SJernej Skrabec 0x00004000, 0x000140ff, 0x00033ffe, 0x00043ffd,
290b862a648SJernej Skrabec 0x00063efc, 0xff083dfc, 0x000a3bfb, 0xff0d39fb,
291b862a648SJernej Skrabec 0xff0f37fb, 0xff1136fa, 0xfe1433fb, 0xfe1631fb,
292b862a648SJernej Skrabec 0xfd192ffb, 0xfd1c2cfb, 0xfd1f29fb, 0xfc2127fc,
293b862a648SJernej Skrabec 0xfc2424fc, 0xfc2721fc, 0xfb291ffd, 0xfb2c1cfd,
294b862a648SJernej Skrabec 0xfb2f19fd, 0xfb3116fe, 0xfb3314fe, 0xfa3611ff,
295b862a648SJernej Skrabec 0xfb370fff, 0xfb390dff, 0xfb3b0a00, 0xfc3d08ff,
296b862a648SJernej Skrabec 0xfc3e0600, 0xfd3f0400, 0xfe3f0300, 0xff400100,
297b862a648SJernej Skrabec
298b862a648SJernej Skrabec 0xff053804, 0xff063803, 0xff083801, 0xff093701,
299b862a648SJernej Skrabec 0xff0a3700, 0xff0c3500, 0xff0e34ff, 0xff1033fe,
300b862a648SJernej Skrabec 0xff1232fd, 0xfe1431fd, 0xfe162ffd, 0xfe182dfd,
301b862a648SJernej Skrabec 0xfd1b2cfc, 0xfd1d2afc, 0xfd1f28fc, 0xfd2126fc,
302b862a648SJernej Skrabec 0xfd2323fd, 0xfc2621fd, 0xfc281ffd, 0xfc2a1dfd,
303b862a648SJernej Skrabec 0xfc2c1bfd, 0xfd2d18fe, 0xfd2f16fe, 0xfd3114fe,
304b862a648SJernej Skrabec 0xfd3212ff, 0xfe3310ff, 0xff340eff, 0x00350cff,
305b862a648SJernej Skrabec 0x00360a00, 0x01360900, 0x02370700, 0x03370600,
306b862a648SJernej Skrabec
307b862a648SJernej Skrabec 0xff083207, 0xff093206, 0xff0a3205, 0xff0c3203,
308b862a648SJernej Skrabec 0xff0d3103, 0xff0e3102, 0xfe113001, 0xfe132f00,
309b862a648SJernej Skrabec 0xfe142e00, 0xfe162dff, 0xfe182bff, 0xfe192aff,
310b862a648SJernej Skrabec 0xfe1b29fe, 0xfe1d27fe, 0xfe1f25fe, 0xfd2124fe,
311b862a648SJernej Skrabec 0xfe2222fe, 0xfe2421fd, 0xfe251ffe, 0xfe271dfe,
312b862a648SJernej Skrabec 0xfe291bfe, 0xff2a19fe, 0xff2b18fe, 0xff2d16fe,
313b862a648SJernej Skrabec 0x002e14fe, 0x002f12ff, 0x013010ff, 0x02300fff,
314b862a648SJernej Skrabec 0x03310dff, 0x04310cff, 0x05310a00, 0x06310900,
315b862a648SJernej Skrabec
316b862a648SJernej Skrabec 0xff0a2e09, 0xff0b2e08, 0xff0c2e07, 0xff0e2d06,
317b862a648SJernej Skrabec 0xff0f2d05, 0xff102d04, 0xff122c03, 0xfe142c02,
318b862a648SJernej Skrabec 0xfe152b02, 0xfe172a01, 0xfe182901, 0xfe1a2800,
319b862a648SJernej Skrabec 0xfe1b2700, 0xfe1d2500, 0xff1e24ff, 0xfe2023ff,
320b862a648SJernej Skrabec 0xff2121ff, 0xff2320fe, 0xff241eff, 0x00251dfe,
321b862a648SJernej Skrabec 0x00261bff, 0x00281afe, 0x012818ff, 0x012a16ff,
322b862a648SJernej Skrabec 0x022a15ff, 0x032b13ff, 0x032c12ff, 0x052c10ff,
323b862a648SJernej Skrabec 0x052d0fff, 0x062d0d00, 0x072d0c00, 0x082d0b00,
324b862a648SJernej Skrabec
325b862a648SJernej Skrabec 0xff0c2a0b, 0xff0d2a0a, 0xff0e2a09, 0xff0f2a08,
326b862a648SJernej Skrabec 0xff102a07, 0xff112a06, 0xff132905, 0xff142904,
327b862a648SJernej Skrabec 0xff162803, 0xff172703, 0xff182702, 0xff1a2601,
328b862a648SJernej Skrabec 0xff1b2501, 0xff1c2401, 0xff1e2300, 0xff1f2200,
329b862a648SJernej Skrabec 0x00202000, 0x00211f00, 0x01221d00, 0x01231c00,
330b862a648SJernej Skrabec 0x01251bff, 0x02251aff, 0x032618ff, 0x032717ff,
331b862a648SJernej Skrabec 0x042815ff, 0x052814ff, 0x052913ff, 0x06291100,
332b862a648SJernej Skrabec 0x072a10ff, 0x082a0e00, 0x092a0d00, 0x0a2a0c00,
333b862a648SJernej Skrabec
334b862a648SJernej Skrabec 0xff0d280c, 0xff0e280b, 0xff0f280a, 0xff102809,
335b862a648SJernej Skrabec 0xff112808, 0xff122708, 0xff142706, 0xff152705,
336b862a648SJernej Skrabec 0xff162605, 0xff172604, 0xff192503, 0xff1a2403,
337b862a648SJernej Skrabec 0x001b2302, 0x001c2202, 0x001d2201, 0x001e2101,
338b862a648SJernej Skrabec 0x011f1f01, 0x01211e00, 0x01221d00, 0x02221c00,
339b862a648SJernej Skrabec 0x02231b00, 0x03241900, 0x04241800, 0x04251700,
340b862a648SJernej Skrabec 0x052616ff, 0x06261400, 0x072713ff, 0x08271100,
341b862a648SJernej Skrabec 0x08271100, 0x09271000, 0x0a280e00, 0x0b280d00,
342b862a648SJernej Skrabec
343b862a648SJernej Skrabec 0xff0e260d, 0xff0f260c, 0xff10260b, 0xff11260a,
344b862a648SJernej Skrabec 0xff122609, 0xff132608, 0xff142508, 0xff152507,
345b862a648SJernej Skrabec 0x00152506, 0x00172405, 0x00182305, 0x00192304,
346b862a648SJernej Skrabec 0x001b2203, 0x001c2103, 0x011d2002, 0x011d2002,
347b862a648SJernej Skrabec 0x011f1f01, 0x021f1e01, 0x02201d01, 0x03211c00,
348b862a648SJernej Skrabec 0x03221b00, 0x04221a00, 0x04231801, 0x05241700,
349b862a648SJernej Skrabec 0x06241600, 0x07241500, 0x08251300, 0x09251200,
350b862a648SJernej Skrabec 0x09261100, 0x0a261000, 0x0b260f00, 0x0c260e00,
351b862a648SJernej Skrabec
352b862a648SJernej Skrabec 0xff0e250e, 0xff0f250d, 0xff10250c, 0xff11250b,
353b862a648SJernej Skrabec 0x0011250a, 0x00132409, 0x00142408, 0x00152407,
354b862a648SJernej Skrabec 0x00162307, 0x00172306, 0x00182206, 0x00192205,
355b862a648SJernej Skrabec 0x011a2104, 0x011b2004, 0x011c2003, 0x021c1f03,
356b862a648SJernej Skrabec 0x021e1e02, 0x031e1d02, 0x03201c01, 0x04201b01,
357b862a648SJernej Skrabec 0x04211a01, 0x05221900, 0x05221801, 0x06231700,
358b862a648SJernej Skrabec 0x07231600, 0x07241500, 0x08241400, 0x09241300,
359b862a648SJernej Skrabec 0x0a241200, 0x0b241100, 0x0c241000, 0x0d240f00,
360b862a648SJernej Skrabec
361b862a648SJernej Skrabec 0x000e240e, 0x000f240d, 0x0010240c, 0x0011240b,
362b862a648SJernej Skrabec 0x0013230a, 0x0013230a, 0x00142309, 0x00152308,
363b862a648SJernej Skrabec 0x00162208, 0x00172207, 0x01182106, 0x01192105,
364b862a648SJernej Skrabec 0x011a2005, 0x021b1f04, 0x021b1f04, 0x021d1e03,
365b862a648SJernej Skrabec 0x031d1d03, 0x031e1d02, 0x041e1c02, 0x041f1b02,
366b862a648SJernej Skrabec 0x05201a01, 0x05211901, 0x06211801, 0x07221700,
367b862a648SJernej Skrabec 0x07221601, 0x08231500, 0x09231400, 0x0a231300,
368b862a648SJernej Skrabec 0x0a231300, 0x0b231200, 0x0c231100, 0x0d231000,
369b862a648SJernej Skrabec
370b862a648SJernej Skrabec 0x000f220f, 0x0010220e, 0x0011220d, 0x0012220c,
371b862a648SJernej Skrabec 0x0013220b, 0x0013220b, 0x0015210a, 0x0015210a,
372b862a648SJernej Skrabec 0x01162108, 0x01172008, 0x01182007, 0x02191f06,
373b862a648SJernej Skrabec 0x02191f06, 0x021a1e06, 0x031a1e05, 0x031c1d04,
374b862a648SJernej Skrabec 0x041c1c04, 0x041d1c03, 0x051d1b03, 0x051e1a03,
375b862a648SJernej Skrabec 0x061f1902, 0x061f1902, 0x07201801, 0x08201701,
376b862a648SJernej Skrabec 0x08211601, 0x09211501, 0x0a211500, 0x0b211400,
377b862a648SJernej Skrabec 0x0b221300, 0x0c221200, 0x0d221100, 0x0e221000,
378b862a648SJernej Skrabec
379b862a648SJernej Skrabec 0x0010210f, 0x0011210e, 0x0011210e, 0x0012210d,
380b862a648SJernej Skrabec 0x0013210c, 0x0014200c, 0x0114200b, 0x0115200a,
381b862a648SJernej Skrabec 0x01161f0a, 0x01171f09, 0x02171f08, 0x02181e08,
382b862a648SJernej Skrabec 0x03181e07, 0x031a1d06, 0x031a1d06, 0x041b1c05,
383b862a648SJernej Skrabec 0x041c1c04, 0x051c1b04, 0x051d1a04, 0x061d1a03,
384b862a648SJernej Skrabec 0x071d1903, 0x071e1803, 0x081e1802, 0x081f1702,
385b862a648SJernej Skrabec 0x091f1602, 0x0a201501, 0x0b1f1501, 0x0b201401,
386b862a648SJernej Skrabec 0x0c211300, 0x0d211200, 0x0e201200, 0x0e211100,
387b862a648SJernej Skrabec
388b862a648SJernej Skrabec 0x00102010, 0x0011200f, 0x0012200e, 0x0013200d,
389b862a648SJernej Skrabec 0x0013200d, 0x01141f0c, 0x01151f0b, 0x01151f0b,
390b862a648SJernej Skrabec 0x01161f0a, 0x02171e09, 0x02171e09, 0x03181d08,
391b862a648SJernej Skrabec 0x03191d07, 0x03191d07, 0x041a1c06, 0x041b1c05,
392b862a648SJernej Skrabec 0x051b1b05, 0x051c1b04, 0x061c1a04, 0x071d1903,
393b862a648SJernej Skrabec 0x071d1903, 0x081d1803, 0x081e1703, 0x091e1702,
394b862a648SJernej Skrabec 0x0a1f1601, 0x0a1f1502, 0x0b1f1501, 0x0c1f1401,
395b862a648SJernej Skrabec 0x0d201300, 0x0d201300, 0x0e201200, 0x0f201100,
396b862a648SJernej Skrabec
397b862a648SJernej Skrabec 0x00102010, 0x0011200f, 0x00121f0f, 0x00131f0e,
398b862a648SJernej Skrabec 0x00141f0d, 0x01141f0c, 0x01141f0c, 0x01151e0c,
399b862a648SJernej Skrabec 0x02161e0a, 0x02171e09, 0x03171d09, 0x03181d08,
400b862a648SJernej Skrabec 0x03181d08, 0x04191c07, 0x041a1c06, 0x051a1b06,
401b862a648SJernej Skrabec 0x051b1b05, 0x061b1a05, 0x061c1a04, 0x071c1904,
402b862a648SJernej Skrabec 0x081c1903, 0x081d1803, 0x091d1703, 0x091e1702,
403b862a648SJernej Skrabec 0x0a1e1602, 0x0b1e1502, 0x0c1e1501, 0x0c1f1401,
404b862a648SJernej Skrabec 0x0d1f1400, 0x0e1f1300, 0x0e1f1201, 0x0f1f1200,
405b862a648SJernej Skrabec
406b862a648SJernej Skrabec 0x00111e11, 0x00121e10, 0x00131e0f, 0x00131e0f,
407b862a648SJernej Skrabec 0x01131e0e, 0x01141d0e, 0x02151d0c, 0x02151d0c,
408b862a648SJernej Skrabec 0x02161d0b, 0x03161c0b, 0x03171c0a, 0x04171c09,
409b862a648SJernej Skrabec 0x04181b09, 0x05181b08, 0x05191b07, 0x06191a07,
410b862a648SJernej Skrabec 0x061a1a06, 0x071a1906, 0x071b1905, 0x081b1805,
411b862a648SJernej Skrabec 0x091b1804, 0x091c1704, 0x0a1c1703, 0x0a1c1604,
412b862a648SJernej Skrabec 0x0b1d1602, 0x0c1d1502, 0x0c1d1502, 0x0d1d1402,
413b862a648SJernej Skrabec 0x0e1d1401, 0x0e1e1301, 0x0f1e1300, 0x101e1200,
414b862a648SJernej Skrabec
415b862a648SJernej Skrabec 0x00111e11, 0x00121e10, 0x00131d10, 0x01131d0f,
416b862a648SJernej Skrabec 0x01141d0e, 0x01141d0e, 0x02151c0d, 0x02151c0d,
417b862a648SJernej Skrabec 0x03161c0b, 0x03161c0b, 0x04171b0a, 0x04171b0a,
418b862a648SJernej Skrabec 0x05171b09, 0x05181a09, 0x06181a08, 0x06191a07,
419b862a648SJernej Skrabec 0x07191907, 0x071a1906, 0x081a1806, 0x081a1806,
420b862a648SJernej Skrabec 0x091a1805, 0x0a1b1704, 0x0a1b1704, 0x0b1c1603,
421b862a648SJernej Skrabec 0x0b1c1603, 0x0c1c1503, 0x0d1c1502, 0x0d1d1402,
422b862a648SJernej Skrabec 0x0e1d1401, 0x0f1d1301, 0x0f1d1301, 0x101e1200,
423b862a648SJernej Skrabec };
424b862a648SJernej Skrabec
4251343bd6cSJernej Skrabec static const u32 bicubic8coefftab32_left[480] = {
4261343bd6cSJernej Skrabec 0x40000000, 0x40ff0000, 0x3ffe0000, 0x3efe0000,
4271343bd6cSJernej Skrabec 0x3dfd0000, 0x3cfc0000, 0x3bfc0000, 0x39fc0000,
4281343bd6cSJernej Skrabec 0x36fc0000, 0x35fb0000, 0x33fb0000, 0x31fb0000,
4291343bd6cSJernej Skrabec 0x2ffb0000, 0x2cfb0000, 0x29fc0000, 0x27fc0000,
4301343bd6cSJernej Skrabec 0x24fc0000, 0x21fc0000, 0x1efd0000, 0x1cfd0000,
4311343bd6cSJernej Skrabec 0x19fd0000, 0x16fe0000, 0x14fe0000, 0x11fe0000,
4321343bd6cSJernej Skrabec 0x0dff0000, 0x0cff0000, 0x0aff0000, 0x08ff0000,
4331343bd6cSJernej Skrabec 0x05000000, 0x03000000, 0x02000000, 0x01000000,
4341343bd6cSJernej Skrabec
4351343bd6cSJernej Skrabec 0x3904ff00, 0x3903ff00, 0x3902ff00, 0x38010000,
4361343bd6cSJernej Skrabec 0x37000000, 0x36ff0000, 0x35ff0000, 0x34fe0000,
4371343bd6cSJernej Skrabec 0x32fe0000, 0x31fd0000, 0x30fd0000, 0x2efc0000,
4381343bd6cSJernej Skrabec 0x2cfc0000, 0x2afc0000, 0x28fc0000, 0x26fc0000,
4391343bd6cSJernej Skrabec 0x24fc0000, 0x22fc0000, 0x20fc0000, 0x1efc0000,
4401343bd6cSJernej Skrabec 0x1cfc0000, 0x19fc0000, 0x17fc0000, 0x15fd0000,
4411343bd6cSJernej Skrabec 0x12fd0000, 0x11fd0000, 0x0ffd0000, 0x0dfe0000,
4421343bd6cSJernej Skrabec 0x0bfe0000, 0x09fe0000, 0x08fe0000, 0x06ff0000,
4431343bd6cSJernej Skrabec
4441343bd6cSJernej Skrabec 0x3209fe00, 0x3407fe00, 0x3306fe00, 0x3305fe00,
4451343bd6cSJernej Skrabec 0x3204fe00, 0x3102ff00, 0x3102ff00, 0x3001ff00,
4461343bd6cSJernej Skrabec 0x2f00ff00, 0x2effff00, 0x2cff0000, 0x2bfe0000,
4471343bd6cSJernej Skrabec 0x29fe0000, 0x28fe0000, 0x26fd0000, 0x24fd0000,
4481343bd6cSJernej Skrabec 0x23fd0000, 0x21fd0000, 0x20fc0000, 0x1efc0000,
4491343bd6cSJernej Skrabec 0x1dfc0000, 0x1bfc0000, 0x19fc0000, 0x17fc0000,
4501343bd6cSJernej Skrabec 0x16fc0000, 0x14fc0000, 0x12fc0000, 0x10fd0000,
4511343bd6cSJernej Skrabec 0x0ffd0000, 0x0dfd0000, 0x0cfd0000, 0x0afd0000,
4521343bd6cSJernej Skrabec
4531343bd6cSJernej Skrabec 0x2e0cfd00, 0x2e0bfd00, 0x2e09fd00, 0x2e08fd00,
4541343bd6cSJernej Skrabec 0x2e07fd00, 0x2c06fe00, 0x2c05fe00, 0x2b04fe00,
4551343bd6cSJernej Skrabec 0x2b03fe00, 0x2a02fe00, 0x2901fe00, 0x2701ff00,
4561343bd6cSJernej Skrabec 0x2700ff00, 0x26ffff00, 0x24ffff00, 0x23ffff00,
4571343bd6cSJernej Skrabec 0x22feff00, 0x20fe0000, 0x1ffe0000, 0x1efd0000,
4581343bd6cSJernej Skrabec 0x1dfd0000, 0x1bfd0000, 0x1afd0000, 0x19fd0000,
4591343bd6cSJernej Skrabec 0x17fd0000, 0x15fd0000, 0x13fd0000, 0x12fd0000,
4601343bd6cSJernej Skrabec 0x11fd0000, 0x10fd0000, 0x0ffd0000, 0x0cfd0000,
4611343bd6cSJernej Skrabec
4621343bd6cSJernej Skrabec 0x2a0efd00, 0x2a0dfd00, 0x2a0cfd00, 0x290bfd00,
4631343bd6cSJernej Skrabec 0x290afd00, 0x2909fd00, 0x2908fd00, 0x2807fd00,
4641343bd6cSJernej Skrabec 0x2706fd00, 0x2705fd00, 0x2604fe00, 0x2603fe00,
4651343bd6cSJernej Skrabec 0x2502fe00, 0x2402fe00, 0x2401fe00, 0x2200fe00,
4661343bd6cSJernej Skrabec 0x2200fe00, 0x2000ff00, 0x1fffff00, 0x1effff00,
4671343bd6cSJernej Skrabec 0x1dfeff00, 0x1cfeff00, 0x1afeff00, 0x19feff00,
4681343bd6cSJernej Skrabec 0x17fe0000, 0x16fd0000, 0x15fd0000, 0x14fd0000,
4691343bd6cSJernej Skrabec 0x12fd0000, 0x11fd0000, 0x10fd0000, 0x0ffd0000,
4701343bd6cSJernej Skrabec
4711343bd6cSJernej Skrabec 0x2610fd00, 0x260ffd00, 0x260efd00, 0x260dfd00,
4721343bd6cSJernej Skrabec 0x260cfd00, 0x260bfd00, 0x260afd00, 0x2609fd00,
4731343bd6cSJernej Skrabec 0x2508fd00, 0x2507fd00, 0x2406fd00, 0x2406fd00,
4741343bd6cSJernej Skrabec 0x2305fd00, 0x2304fd00, 0x2203fe00, 0x2103fe00,
4751343bd6cSJernej Skrabec 0x2002fe00, 0x1f01fe00, 0x1e01fe00, 0x1e00fe00,
4761343bd6cSJernej Skrabec 0x1c00fe00, 0x1b00fe00, 0x1afffe00, 0x19ffff00,
4771343bd6cSJernej Skrabec 0x18ffff00, 0x17feff00, 0x16feff00, 0x15feff00,
4781343bd6cSJernej Skrabec 0x14feff00, 0x13feff00, 0x11feff00, 0x10fd0000,
4791343bd6cSJernej Skrabec
4801343bd6cSJernej Skrabec 0x2411feff, 0x2410feff, 0x240ffeff, 0x230efeff,
4811343bd6cSJernej Skrabec 0x240dfeff, 0x240cfeff, 0x230cfd00, 0x230bfd00,
4821343bd6cSJernej Skrabec 0x230afd00, 0x2309fd00, 0x2208fd00, 0x2108fd00,
4831343bd6cSJernej Skrabec 0x2007fd00, 0x2106fd00, 0x2005fd00, 0x1f05fd00,
4841343bd6cSJernej Skrabec 0x1f04fd00, 0x1e03fd00, 0x1d03fe00, 0x1c02fe00,
4851343bd6cSJernej Skrabec 0x1b02fe00, 0x1a01fe00, 0x1a01fe00, 0x1900fe00,
4861343bd6cSJernej Skrabec 0x1800fe00, 0x1700fe00, 0x16fffe00, 0x15fffe00,
4871343bd6cSJernej Skrabec 0x13ffff00, 0x12ffff00, 0x12feff00, 0x11feff00,
4881343bd6cSJernej Skrabec
4891343bd6cSJernej Skrabec 0x2212fffe, 0x2211fffe, 0x2210ffff, 0x220ffeff,
4901343bd6cSJernej Skrabec 0x220efeff, 0x210efeff, 0x210dfeff, 0x210cfeff,
4911343bd6cSJernej Skrabec 0x210bfeff, 0x200bfeff, 0x200afeff, 0x1f09feff,
4921343bd6cSJernej Skrabec 0x1f08feff, 0x1d08fe00, 0x1e07fd00, 0x1e06fd00,
4931343bd6cSJernej Skrabec 0x1d06fd00, 0x1c05fd00, 0x1b04fe00, 0x1a04fe00,
4941343bd6cSJernej Skrabec 0x1a03fe00, 0x1903fe00, 0x1802fe00, 0x1802fe00,
4951343bd6cSJernej Skrabec 0x1701fe00, 0x1601fe00, 0x1501fe00, 0x1500fe00,
4961343bd6cSJernej Skrabec 0x1400fe00, 0x1400fe00, 0x13fffe00, 0x12fffe00,
4971343bd6cSJernej Skrabec
4981343bd6cSJernej Skrabec 0x201200fe, 0x201100fe, 0x1f1100fe, 0x2010fffe,
4991343bd6cSJernej Skrabec 0x200ffffe, 0x1f0ffffe, 0x1f0efffe, 0x1e0dffff,
5001343bd6cSJernej Skrabec 0x1f0cfeff, 0x1e0cfeff, 0x1e0bfeff, 0x1e0afeff,
5011343bd6cSJernej Skrabec 0x1d0afeff, 0x1d09feff, 0x1c08feff, 0x1b08feff,
5021343bd6cSJernej Skrabec 0x1b07feff, 0x1a07feff, 0x1a06feff, 0x1a05feff,
5031343bd6cSJernej Skrabec 0x1805fe00, 0x1904fe00, 0x1704fe00, 0x1703fe00,
5041343bd6cSJernej Skrabec 0x1603fe00, 0x1602fe00, 0x1402fe00, 0x1402fe00,
5051343bd6cSJernej Skrabec 0x1401fe00, 0x1301fe00, 0x1201fe00, 0x1200fe00,
5061343bd6cSJernej Skrabec
5071343bd6cSJernej Skrabec 0x1c1202fe, 0x1c1102fe, 0x1b1102fe, 0x1c1001fe,
5081343bd6cSJernej Skrabec 0x1b1001fe, 0x1c0f01fe, 0x1b0f00fe, 0x1b0e00fe,
5091343bd6cSJernej Skrabec 0x1b0e00fe, 0x1b0d00fe, 0x1b0c00fe, 0x1a0cfffe,
5101343bd6cSJernej Skrabec 0x1a0bfffe, 0x1a0bfffe, 0x190afffe, 0x190afffe,
5111343bd6cSJernej Skrabec 0x1909fffe, 0x1709ffff, 0x1808ffff, 0x1708feff,
5121343bd6cSJernej Skrabec 0x1707feff, 0x1707feff, 0x1606feff, 0x1506feff,
5131343bd6cSJernej Skrabec 0x1505feff, 0x1505feff, 0x1404feff, 0x1404feff,
5141343bd6cSJernej Skrabec 0x1404feff, 0x1303feff, 0x1203feff, 0x1202feff,
5151343bd6cSJernej Skrabec
5161343bd6cSJernej Skrabec 0x191104fe, 0x191104fe, 0x191003fe, 0x191003fe,
5171343bd6cSJernej Skrabec 0x171003fe, 0x180f03fe, 0x180f02fe, 0x180e02fe,
5181343bd6cSJernej Skrabec 0x180e02fe, 0x180d01fe, 0x180d01fe, 0x180d01fe,
5191343bd6cSJernej Skrabec 0x170c01fe, 0x160c01fe, 0x170b00fe, 0x170b00fe,
5201343bd6cSJernej Skrabec 0x160a00fe, 0x160a00fe, 0x160a00fe, 0x150900fe,
5211343bd6cSJernej Skrabec 0x1509fffe, 0x1508fffe, 0x1508fffe, 0x1408fffe,
5221343bd6cSJernej Skrabec 0x1407fffe, 0x1307ffff, 0x1306ffff, 0x1206ffff,
5231343bd6cSJernej Skrabec 0x1206ffff, 0x1205ffff, 0x1205ffff, 0x1104feff,
5241343bd6cSJernej Skrabec
5251343bd6cSJernej Skrabec 0x161006ff, 0x161005ff, 0x161005ff, 0x160f05ff,
5261343bd6cSJernej Skrabec 0x160f04ff, 0x150f04ff, 0x150e04ff, 0x150e04ff,
5271343bd6cSJernej Skrabec 0x150e03ff, 0x150d03ff, 0x150d03ff, 0x150d02ff,
5281343bd6cSJernej Skrabec 0x140c02ff, 0x150c02fe, 0x150c02fe, 0x150b02fe,
5291343bd6cSJernej Skrabec 0x140b01fe, 0x140b01fe, 0x140a01fe, 0x140a01fe,
5301343bd6cSJernej Skrabec 0x140a01fe, 0x130900fe, 0x130900fe, 0x130900fe,
5311343bd6cSJernej Skrabec 0x130800fe, 0x120800fe, 0x120800fe, 0x120700fe,
5321343bd6cSJernej Skrabec 0x120700fe, 0x1107fffe, 0x1106fffe, 0x1106fffe,
5331343bd6cSJernej Skrabec
5341343bd6cSJernej Skrabec 0x140f0700, 0x140f0600, 0x140f0600, 0x140f0600,
5351343bd6cSJernej Skrabec 0x140e0600, 0x130e0500, 0x140e05ff, 0x130e05ff,
5361343bd6cSJernej Skrabec 0x140d05ff, 0x130d04ff, 0x130d04ff, 0x120d04ff,
5371343bd6cSJernej Skrabec 0x130c04ff, 0x130c03ff, 0x130c03ff, 0x120c03ff,
5381343bd6cSJernej Skrabec 0x120b03ff, 0x120b02ff, 0x120b02ff, 0x120a02ff,
5391343bd6cSJernej Skrabec 0x120a02ff, 0x110a02ff, 0x110a01ff, 0x120901ff,
5401343bd6cSJernej Skrabec 0x100901ff, 0x100901ff, 0x110801ff, 0x110801ff,
5411343bd6cSJernej Skrabec 0x100800ff, 0x100800ff, 0x100700ff, 0x100700fe,
5421343bd6cSJernej Skrabec
5431343bd6cSJernej Skrabec 0x120f0701, 0x120e0701, 0x120e0701, 0x120e0701,
5441343bd6cSJernej Skrabec 0x120e0600, 0x110e0600, 0x120d0600, 0x120d0600,
5451343bd6cSJernej Skrabec 0x120d0500, 0x120d0500, 0x110d0500, 0x110c0500,
5461343bd6cSJernej Skrabec 0x110c0500, 0x110c0400, 0x110c0400, 0x110b04ff,
5471343bd6cSJernej Skrabec 0x110b04ff, 0x110b04ff, 0x110b03ff, 0x110b03ff,
5481343bd6cSJernej Skrabec 0x110a03ff, 0x110a03ff, 0x100a03ff, 0x110a02ff,
5491343bd6cSJernej Skrabec 0x100902ff, 0x100902ff, 0x100902ff, 0x0f0902ff,
5501343bd6cSJernej Skrabec 0x0e0902ff, 0x100801ff, 0x0f0801ff, 0x0f0801ff,
5511343bd6cSJernej Skrabec
5521343bd6cSJernej Skrabec 0x100e0802, 0x100e0802, 0x110e0702, 0x110d0701,
5531343bd6cSJernej Skrabec 0x110d0701, 0x100d0701, 0x100d0701, 0x110d0601,
5541343bd6cSJernej Skrabec 0x110d0601, 0x110c0601, 0x110c0601, 0x100c0600,
5551343bd6cSJernej Skrabec 0x100c0500, 0x100c0500, 0x100c0500, 0x100b0500,
5561343bd6cSJernej Skrabec 0x100b0500, 0x100b0400, 0x100b0400, 0x0f0b0400,
5571343bd6cSJernej Skrabec 0x100a0400, 0x0f0a0400, 0x0f0a0400, 0x0f0a0300,
5581343bd6cSJernej Skrabec 0x0f0a03ff, 0x0f0903ff, 0x0f0903ff, 0x0f0903ff,
5591343bd6cSJernej Skrabec 0x0f0903ff, 0x0f0902ff, 0x0f0902ff, 0x0f0802ff
5601343bd6cSJernej Skrabec };
5611343bd6cSJernej Skrabec
5621343bd6cSJernej Skrabec static const u32 bicubic8coefftab32_right[480] = {
5631343bd6cSJernej Skrabec 0x00000000, 0x00000001, 0x00000003, 0x00000004,
5641343bd6cSJernej Skrabec 0x00000006, 0x0000ff09, 0x0000ff0a, 0x0000ff0c,
5651343bd6cSJernej Skrabec 0x0000ff0f, 0x0000fe12, 0x0000fe14, 0x0000fe16,
5661343bd6cSJernej Skrabec 0x0000fd19, 0x0000fd1c, 0x0000fd1e, 0x0000fc21,
5671343bd6cSJernej Skrabec 0x0000fc24, 0x0000fc27, 0x0000fc29, 0x0000fb2c,
5681343bd6cSJernej Skrabec 0x0000fb2f, 0x0000fb31, 0x0000fb33, 0x0000fb36,
5691343bd6cSJernej Skrabec 0x0000fc38, 0x0000fc39, 0x0000fc3b, 0x0000fc3d,
5701343bd6cSJernej Skrabec 0x0000fd3e, 0x0000fe3f, 0x0000fe40, 0x0000ff40,
5711343bd6cSJernej Skrabec
5721343bd6cSJernej Skrabec 0x0000ff05, 0x0000ff06, 0x0000fe08, 0x0000fe09,
5731343bd6cSJernej Skrabec 0x0000fe0b, 0x0000fe0d, 0x0000fd0f, 0x0000fd11,
5741343bd6cSJernej Skrabec 0x0000fd13, 0x0000fd15, 0x0000fc17, 0x0000fc1a,
5751343bd6cSJernej Skrabec 0x0000fc1c, 0x0000fc1e, 0x0000fc20, 0x0000fc22,
5761343bd6cSJernej Skrabec 0x0000fc24, 0x0000fc26, 0x0000fc28, 0x0000fc2a,
5771343bd6cSJernej Skrabec 0x0000fc2c, 0x0000fc2f, 0x0000fd30, 0x0000fd31,
5781343bd6cSJernej Skrabec 0x0000fe33, 0x0000fe34, 0x0000ff35, 0x0000ff36,
5791343bd6cSJernej Skrabec 0x00000037, 0x00000138, 0x00ff0239, 0x00ff0339,
5801343bd6cSJernej Skrabec
5811343bd6cSJernej Skrabec 0x0000fe09, 0x0000fd0a, 0x0000fd0c, 0x0000fd0d,
5821343bd6cSJernej Skrabec 0x0000fd0f, 0x0000fd11, 0x0000fc12, 0x0000fc14,
5831343bd6cSJernej Skrabec 0x0000fc16, 0x0000fc18, 0x0000fc19, 0x0000fc1b,
5841343bd6cSJernej Skrabec 0x0000fc1d, 0x0000fc1e, 0x0000fc21, 0x0000fd22,
5851343bd6cSJernej Skrabec 0x0000fd23, 0x0000fd25, 0x0000fd27, 0x0000fe28,
5861343bd6cSJernej Skrabec 0x0000fe29, 0x0000fe2b, 0x0000ff2c, 0x00ffff2f,
5871343bd6cSJernej Skrabec 0x00ff002f, 0x00ff0130, 0x00ff0231, 0x00ff0232,
5881343bd6cSJernej Skrabec 0x00fe0432, 0x00fe0533, 0x00fe0633, 0x00fe0734,
5891343bd6cSJernej Skrabec
5901343bd6cSJernej Skrabec 0x0000fd0c, 0x0000fd0d, 0x0000fd0f, 0x0000fd10,
5911343bd6cSJernej Skrabec 0x0000fd11, 0x0000fd13, 0x0000fd14, 0x0000fd16,
5921343bd6cSJernej Skrabec 0x0000fd17, 0x0000fd19, 0x0000fd1b, 0x0000fd1c,
5931343bd6cSJernej Skrabec 0x0000fd1d, 0x0000fd1f, 0x0000fe20, 0x0000fe21,
5941343bd6cSJernej Skrabec 0x00fffe24, 0x00ffff24, 0x00ffff25, 0x00ffff27,
5951343bd6cSJernej Skrabec 0x00ff0027, 0x00ff0128, 0x00fe012a, 0x00fe022a,
5961343bd6cSJernej Skrabec 0x00fe032b, 0x00fe042c, 0x00fe052d, 0x00fe062d,
5971343bd6cSJernej Skrabec 0x00fd072e, 0x00fd082e, 0x00fd092e, 0x00fd0b2f,
5981343bd6cSJernej Skrabec
5991343bd6cSJernej Skrabec 0x0000fd0e, 0x0000fd0f, 0x0000fd10, 0x0000fd12,
6001343bd6cSJernej Skrabec 0x0000fd13, 0x0000fd14, 0x0000fd15, 0x0000fd17,
6011343bd6cSJernej Skrabec 0x0000fe18, 0x00fffe1a, 0x00fffe1b, 0x00fffe1c,
6021343bd6cSJernej Skrabec 0x00fffe1e, 0x00ffff1e, 0x00ffff1f, 0x00ff0021,
6031343bd6cSJernej Skrabec 0x00fe0022, 0x00fe0023, 0x00fe0124, 0x00fe0224,
6041343bd6cSJernej Skrabec 0x00fe0226, 0x00fe0326, 0x00fe0427, 0x00fd0528,
6051343bd6cSJernej Skrabec 0x00fd0628, 0x00fd0729, 0x00fd0829, 0x00fd0929,
6061343bd6cSJernej Skrabec 0x00fd0a2a, 0x00fd0b2a, 0x00fd0c2a, 0x00fd0d2a,
6071343bd6cSJernej Skrabec
6081343bd6cSJernej Skrabec 0x0000fd10, 0x0000fd11, 0x00fffe12, 0x00fffe13,
6091343bd6cSJernej Skrabec 0x00fffe14, 0x00fffe15, 0x00fffe16, 0x00fffe17,
6101343bd6cSJernej Skrabec 0x00ffff18, 0x00ffff19, 0x00feff1c, 0x00fe001b,
6111343bd6cSJernej Skrabec 0x00fe001d, 0x00fe001e, 0x00fe011e, 0x00fe011f,
6121343bd6cSJernej Skrabec 0x00fe0220, 0x00fe0321, 0x00fe0322, 0x00fd0423,
6131343bd6cSJernej Skrabec 0x00fd0524, 0x00fd0624, 0x00fd0626, 0x00fd0725,
6141343bd6cSJernej Skrabec 0x00fd0825, 0x00fd0926, 0x00fd0a26, 0x00fd0b26,
6151343bd6cSJernej Skrabec 0x00fd0c26, 0x00fd0d26, 0x00fd0e27, 0x00fd0f27,
6161343bd6cSJernej Skrabec
6171343bd6cSJernej Skrabec 0x00fffe11, 0x00fffe12, 0x00fffe13, 0x00ffff14,
6181343bd6cSJernej Skrabec 0x00ffff14, 0x00feff16, 0x00feff17, 0x00fe0017,
6191343bd6cSJernej Skrabec 0x00fe0018, 0x00fe0019, 0x00fe011a, 0x00fe011b,
6201343bd6cSJernej Skrabec 0x00fe021c, 0x00fe021c, 0x00fe031d, 0x00fd031f,
6211343bd6cSJernej Skrabec 0x00fd041f, 0x00fd0520, 0x00fd0520, 0x00fd0621,
6221343bd6cSJernej Skrabec 0x00fd0721, 0x00fd0822, 0x00fd0822, 0x00fd0923,
6231343bd6cSJernej Skrabec 0x00fd0a23, 0x00fd0b23, 0x00fd0b25, 0x00fe0c24,
6241343bd6cSJernej Skrabec 0x00fe0d24, 0x00fe0e24, 0x00fe0f24, 0x00fe1024,
6251343bd6cSJernej Skrabec
6261343bd6cSJernej Skrabec 0x00feff12, 0x00feff13, 0x00feff13, 0x00fe0014,
6271343bd6cSJernej Skrabec 0x00fe0015, 0x00fe0016, 0x00fe0116, 0x00fe0117,
6281343bd6cSJernej Skrabec 0x00fe0118, 0x00fe0218, 0x00fe0219, 0x00fe031a,
6291343bd6cSJernej Skrabec 0x00fe031b, 0x00fe041b, 0x00fd041d, 0x00fd051d,
6301343bd6cSJernej Skrabec 0x00fd061d, 0x00fd061f, 0x00fe071e, 0x00fe081e,
6311343bd6cSJernej Skrabec 0x00fe081f, 0x00fe091f, 0x00fe0a20, 0x00fe0a20,
6321343bd6cSJernej Skrabec 0x00fe0b21, 0x00fe0c21, 0x00fe0d21, 0x00fe0d22,
6331343bd6cSJernej Skrabec 0x00fe0e22, 0x00fe0f21, 0x00ff1021, 0x00ff1022,
6341343bd6cSJernej Skrabec
6351343bd6cSJernej Skrabec 0x00fe0012, 0x00fe0013, 0x00fe0113, 0x00fe0114,
6361343bd6cSJernej Skrabec 0x00fe0115, 0x00fe0215, 0x00fe0216, 0x00fe0217,
6371343bd6cSJernej Skrabec 0x00fe0317, 0x00fe0318, 0x00fe0418, 0x00fe0419,
6381343bd6cSJernej Skrabec 0x00fe0519, 0x00fe051a, 0x00fe061b, 0x00fe071b,
6391343bd6cSJernej Skrabec 0x00fe071c, 0x00fe081c, 0x00fe081d, 0x00fe091d,
6401343bd6cSJernej Skrabec 0x00fe0a1d, 0x00fe0a1d, 0x00fe0b1e, 0x00fe0c1e,
6411343bd6cSJernej Skrabec 0x00ff0c1e, 0x00ff0d1e, 0x00ff0e1f, 0x00ff0e1f,
6421343bd6cSJernej Skrabec 0x00ff0f1f, 0x00ff0f20, 0x0000101f, 0x0000111f,
6431343bd6cSJernej Skrabec
6441343bd6cSJernej Skrabec 0x00fe0212, 0x00fe0312, 0x00fe0313, 0x00fe0314,
6451343bd6cSJernej Skrabec 0x00fe0414, 0x00fe0414, 0x00fe0515, 0x00fe0516,
6461343bd6cSJernej Skrabec 0x00fe0516, 0x00fe0616, 0x00fe0617, 0x00fe0718,
6471343bd6cSJernej Skrabec 0x00fe0719, 0x00fe0818, 0x00ff0819, 0x00ff0918,
6481343bd6cSJernej Skrabec 0x00ff0919, 0x00ff0a19, 0x00ff0a19, 0x00ff0b1a,
6491343bd6cSJernej Skrabec 0x00ff0b1b, 0x00ff0c1a, 0x00000c1b, 0x00000d1b,
6501343bd6cSJernej Skrabec 0x00000d1c, 0x00000e1b, 0x00000e1d, 0x00010f1b,
6511343bd6cSJernej Skrabec 0x00010f1b, 0x0001101c, 0x0001101d, 0x0002111c,
6521343bd6cSJernej Skrabec
6531343bd6cSJernej Skrabec 0x00fe0412, 0x00fe0412, 0x00ff0512, 0x00ff0512,
6541343bd6cSJernej Skrabec 0x00ff0613, 0x00ff0613, 0x00ff0614, 0x00ff0714,
6551343bd6cSJernej Skrabec 0x00ff0714, 0x00ff0815, 0x00ff0815, 0x00ff0815,
6561343bd6cSJernej Skrabec 0x00ff0916, 0x00000916, 0x00000a16, 0x00000a16,
6571343bd6cSJernej Skrabec 0x00000a18, 0x00000b17, 0x00000b17, 0x00010c17,
6581343bd6cSJernej Skrabec 0x00010c18, 0x00010d18, 0x00010d18, 0x00010d19,
6591343bd6cSJernej Skrabec 0x00020e18, 0x00020e18, 0x00020f18, 0x00030f18,
6601343bd6cSJernej Skrabec 0x00030f18, 0x00031018, 0x00031018, 0x00041119,
6611343bd6cSJernej Skrabec
6621343bd6cSJernej Skrabec 0x00ff0610, 0x00ff0611, 0x00ff0611, 0x00ff0711,
6631343bd6cSJernej Skrabec 0x00000711, 0x00000712, 0x00000812, 0x00000812,
6641343bd6cSJernej Skrabec 0x00000813, 0x00000913, 0x00000913, 0x00000914,
6651343bd6cSJernej Skrabec 0x00010a14, 0x00010a14, 0x00010a14, 0x00010b14,
6661343bd6cSJernej Skrabec 0x00010b16, 0x00020b15, 0x00020c15, 0x00020c15,
6671343bd6cSJernej Skrabec 0x00020c15, 0x00020d17, 0x00030d16, 0x00030d16,
6681343bd6cSJernej Skrabec 0x00030e16, 0x00040e16, 0x00040e16, 0x00040f16,
6691343bd6cSJernej Skrabec 0x00040f16, 0x00050f17, 0x00051017, 0x00051017,
6701343bd6cSJernej Skrabec
6711343bd6cSJernej Skrabec 0x0000070f, 0x00000710, 0x00000710, 0x00000710,
6721343bd6cSJernej Skrabec 0x00000810, 0x00010811, 0x00010811, 0x00010911,
6731343bd6cSJernej Skrabec 0x00010911, 0x00010913, 0x00010913, 0x00020a12,
6741343bd6cSJernej Skrabec 0x00020a12, 0x00020a13, 0x00020b12, 0x00020b13,
6751343bd6cSJernej Skrabec 0x00030b13, 0x00030c13, 0x00030c13, 0x00030c14,
6761343bd6cSJernej Skrabec 0x00040c13, 0x00040d13, 0x00040d14, 0x00040d14,
6771343bd6cSJernej Skrabec 0x00050e14, 0x00050e14, 0x00050e14, 0x00050e14,
6781343bd6cSJernej Skrabec 0x00060f14, 0x00060f14, 0x00060f15, 0x00061015,
6791343bd6cSJernej Skrabec
6801343bd6cSJernej Skrabec 0x0001070f, 0x0001080f, 0x0001080f, 0x0001080f,
6811343bd6cSJernej Skrabec 0x00010811, 0x00020910, 0x00020910, 0x00020910,
6821343bd6cSJernej Skrabec 0x00020911, 0x00020a10, 0x00030a10, 0x00030a11,
6831343bd6cSJernej Skrabec 0x00030a11, 0x00030b11, 0x00030b11, 0x00040b12,
6841343bd6cSJernej Skrabec 0x00040b12, 0x00040c11, 0x00040c12, 0x00040c12,
6851343bd6cSJernej Skrabec 0x00050c12, 0x00050c12, 0x00050d12, 0x00050d12,
6861343bd6cSJernej Skrabec 0x00060d13, 0x00060d13, 0x00060e12, 0x00060e13,
6871343bd6cSJernej Skrabec 0x00070e13, 0x00070e13, 0x00070f13, 0x00070f13,
6881343bd6cSJernej Skrabec
6891343bd6cSJernej Skrabec 0x0002080e, 0x0002080e, 0x0002080e, 0x00020810,
6901343bd6cSJernej Skrabec 0x0002090f, 0x0003090f, 0x0003090f, 0x0003090f,
6911343bd6cSJernej Skrabec 0x0003090f, 0x00030a0f, 0x00030a0f, 0x00040a10,
6921343bd6cSJernej Skrabec 0x00040a11, 0x00040b10, 0x00040b10, 0x00040b11,
6931343bd6cSJernej Skrabec 0x00050b10, 0x00050b11, 0x00050c10, 0x00050c11,
6941343bd6cSJernej Skrabec 0x00050c11, 0x00060c11, 0x00060c11, 0x00060d11,
6951343bd6cSJernej Skrabec 0x00060d12, 0x00070d12, 0x00070d12, 0x00070e11,
6961343bd6cSJernej Skrabec 0x00070e11, 0x00070e12, 0x00080e11, 0x00080e12
6971343bd6cSJernej Skrabec };
6981343bd6cSJernej Skrabec
6991343bd6cSJernej Skrabec static const u32 bicubic4coefftab32[480] = {
7001343bd6cSJernej Skrabec 0x00004000, 0x000140ff, 0x00033ffe, 0x00043ffd,
7011343bd6cSJernej Skrabec 0x00063dfd, 0xff083dfc, 0xff0a3bfc, 0xff0c39fc,
7021343bd6cSJernej Skrabec 0xff0e37fc, 0xfe1136fb, 0xfe1433fb, 0xfe1631fb,
7031343bd6cSJernej Skrabec 0xfd192ffb, 0xfd1c2cfb, 0xfd1e29fc, 0xfc2127fc,
7041343bd6cSJernej Skrabec 0xfc2424fc, 0xfc2721fc, 0xfc291efd, 0xfb2c1cfd,
7051343bd6cSJernej Skrabec 0xfb2f19fd, 0xfb3116fe, 0xfb3314fe, 0xfb3611fe,
7061343bd6cSJernej Skrabec 0xfc370eff, 0xfc390cff, 0xfc3b0aff, 0xfc3d08ff,
7071343bd6cSJernej Skrabec 0xfd3d0600, 0xfd3f0400, 0xfe3f0300, 0xff400100,
7081343bd6cSJernej Skrabec
7091343bd6cSJernej Skrabec 0xfe053904, 0xfe063903, 0xfe083901, 0xfe0a3800,
7101343bd6cSJernej Skrabec 0xfd0b3800, 0xfe0d36ff, 0xfd0f35ff, 0xfd1134fe,
7111343bd6cSJernej Skrabec 0xfd1332fe, 0xfd1531fd, 0xfc1730fd, 0xfc1a2efc,
7121343bd6cSJernej Skrabec 0xfc1c2cfc, 0xfc1e2afc, 0xfc2028fc, 0xfc2226fc,
7131343bd6cSJernej Skrabec 0xfc2424fc, 0xfc2622fc, 0xfc2820fc, 0xfc2a1efc,
7141343bd6cSJernej Skrabec 0xfc2c1cfc, 0xfc2e1afc, 0xfd3017fc, 0xfd3115fd,
7151343bd6cSJernej Skrabec 0xfe3213fd, 0xfe3411fd, 0xff350ffd, 0xff360dfe,
7161343bd6cSJernej Skrabec 0x00370bfe, 0x013809fe, 0x023808fe, 0x033806ff,
7171343bd6cSJernej Skrabec
7181343bd6cSJernej Skrabec 0xfd093208, 0xfd0a3207, 0xfd0c3205, 0xfd0d3204,
7191343bd6cSJernej Skrabec 0xfc0f3203, 0xfc113102, 0xfc123002, 0xfc143000,
7201343bd6cSJernej Skrabec 0xfc152f00, 0xfc172d00, 0xfc192cff, 0xfc1b2bfe,
7211343bd6cSJernej Skrabec 0xfc1d29fe, 0xfc1e28fe, 0xfc2027fd, 0xfd2125fd,
7221343bd6cSJernej Skrabec 0xfd2323fd, 0xfd2521fd, 0xfd2720fc, 0xfe281efc,
7231343bd6cSJernej Skrabec 0xfe291dfc, 0xfe2b1bfc, 0xff2c19fc, 0x002d17fc,
7241343bd6cSJernej Skrabec 0x002e16fc, 0x012f14fc, 0x022f12fd, 0x023110fd,
7251343bd6cSJernej Skrabec 0x03310ffd, 0x05310dfd, 0x06320bfd, 0x07320afd,
7261343bd6cSJernej Skrabec
7271343bd6cSJernej Skrabec 0xfc0c2d0b, 0xfc0d2d0a, 0xfc0e2d09, 0xfc102d07,
7281343bd6cSJernej Skrabec 0xfc112c07, 0xfc132c05, 0xfc142c04, 0xfc162b03,
7291343bd6cSJernej Skrabec 0xfc172a03, 0xfc192a01, 0xfc1a2901, 0xfd1b2800,
7301343bd6cSJernej Skrabec 0xfd1c2700, 0xfd1e2500, 0xfe1f24ff, 0xfe2023ff,
7311343bd6cSJernej Skrabec 0xfe2222fe, 0xff2320fe, 0xff241ffe, 0x00251efd,
7321343bd6cSJernej Skrabec 0x00271cfd, 0x01271bfd, 0x01281afd, 0x022918fd,
7331343bd6cSJernej Skrabec 0x032a16fd, 0x032b15fd, 0x042b14fd, 0x052c12fd,
7341343bd6cSJernej Skrabec 0x072c10fd, 0x082c0ffd, 0x092c0efd, 0x0a2c0dfd,
7351343bd6cSJernej Skrabec
7361343bd6cSJernej Skrabec 0xfd0d290d, 0xfd0e290c, 0xfd0f290b, 0xfd11280a,
7371343bd6cSJernej Skrabec 0xfd122809, 0xfd132808, 0xfd142807, 0xfd162706,
7381343bd6cSJernej Skrabec 0xfd172705, 0xfd192604, 0xfe1a2503, 0xfe1b2502,
7391343bd6cSJernej Skrabec 0xfe1c2402, 0xfe1d2302, 0xff1e2201, 0xff1f2101,
7401343bd6cSJernej Skrabec 0x00202000, 0x00211f00, 0x01221eff, 0x02221dff,
7411343bd6cSJernej Skrabec 0x02241cfe, 0x03241bfe, 0x042519fe, 0x042618fe,
7421343bd6cSJernej Skrabec 0x052617fe, 0x062716fd, 0x072714fe, 0x082713fe,
7431343bd6cSJernej Skrabec 0x092812fd, 0x0a2811fd, 0x0b2810fd, 0x0c280ffd,
7441343bd6cSJernej Skrabec
7451343bd6cSJernej Skrabec 0xfd0f250f, 0xfd10250e, 0xfd11250d, 0xfd12250c,
7461343bd6cSJernej Skrabec 0xfd13250b, 0xfe13250a, 0xfe152409, 0xfe162408,
7471343bd6cSJernej Skrabec 0xfe172308, 0xff182306, 0xff192305, 0xff1a2205,
7481343bd6cSJernej Skrabec 0x001b2104, 0x001c2103, 0x001d2003, 0x011e1f02,
7491343bd6cSJernej Skrabec 0x011f1f01, 0x021f1e01, 0x03201d00, 0x03211c00,
7501343bd6cSJernej Skrabec 0x04211b00, 0x05221aff, 0x062219ff, 0x062318ff,
7511343bd6cSJernej Skrabec 0x082316ff, 0x082316ff, 0x092415fe, 0x0a2414fe,
7521343bd6cSJernej Skrabec 0x0b2413fe, 0x0c2412fe, 0x0d2411fe, 0x0e2410fe,
7531343bd6cSJernej Skrabec
7541343bd6cSJernej Skrabec 0xfe10230f, 0xfe11230e, 0xfe12220e, 0xfe13220d,
7551343bd6cSJernej Skrabec 0xfe14220c, 0xff14220b, 0xff15220a, 0xff16210a,
7561343bd6cSJernej Skrabec 0x00162109, 0x00172108, 0x00182008, 0x01192006,
7571343bd6cSJernej Skrabec 0x011a1f06, 0x021a1f05, 0x021b1e05, 0x031c1d04,
7581343bd6cSJernej Skrabec 0x031d1d03, 0x041d1c03, 0x041e1b03, 0x051e1b02,
7591343bd6cSJernej Skrabec 0x061f1a01, 0x06201901, 0x07201801, 0x08201800,
7601343bd6cSJernej Skrabec 0x09201700, 0x0a211500, 0x0b2115ff, 0x0c2114ff,
7611343bd6cSJernej Skrabec 0x0c2213ff, 0x0d2212ff, 0x0e2211ff, 0x0f2211fe,
7621343bd6cSJernej Skrabec
7631343bd6cSJernej Skrabec 0xff112010, 0xff12200f, 0xff12200f, 0xff13200e,
7641343bd6cSJernej Skrabec 0x0013200d, 0x0014200c, 0x00151f0c, 0x00161f0b,
7651343bd6cSJernej Skrabec 0x01161f0a, 0x01171e0a, 0x02171e09, 0x02181e08,
7661343bd6cSJernej Skrabec 0x03191d07, 0x03191d07, 0x041a1c06, 0x041b1c05,
7671343bd6cSJernej Skrabec 0x051b1b05, 0x051c1b04, 0x061c1a04, 0x071c1a03,
7681343bd6cSJernej Skrabec 0x071d1903, 0x081e1802, 0x091d1802, 0x091e1702,
7691343bd6cSJernej Skrabec 0x0a1f1601, 0x0b1f1600, 0x0b1f1501, 0x0c201400,
7701343bd6cSJernej Skrabec 0x0d1f1400, 0x0e2013ff, 0x0f1f1200, 0x102011ff,
7711343bd6cSJernej Skrabec
7721343bd6cSJernej Skrabec 0x00111f10, 0x00121e10, 0x00131e0f, 0x00131e0f,
7731343bd6cSJernej Skrabec 0x01131e0e, 0x01141e0d, 0x01151d0d, 0x02151d0c,
7741343bd6cSJernej Skrabec 0x02161d0b, 0x03161d0a, 0x03171c0a, 0x04171c09,
7751343bd6cSJernej Skrabec 0x04181c08, 0x05181b08, 0x05191b07, 0x06191a07,
7761343bd6cSJernej Skrabec 0x061a1a06, 0x071a1906, 0x071b1905, 0x081b1805,
7771343bd6cSJernej Skrabec 0x081c1804, 0x091c1704, 0x0a1c1703, 0x0a1d1603,
7781343bd6cSJernej Skrabec 0x0b1d1602, 0x0c1d1502, 0x0c1d1502, 0x0d1e1401,
7791343bd6cSJernej Skrabec 0x0e1d1401, 0x0e1e1301, 0x0f1e1300, 0x101e1200,
7801343bd6cSJernej Skrabec
7811343bd6cSJernej Skrabec 0x02111c11, 0x02121c10, 0x02131b10, 0x03131b0f,
7821343bd6cSJernej Skrabec 0x03131b0f, 0x03141b0e, 0x04141b0d, 0x04151a0d,
7831343bd6cSJernej Skrabec 0x05151a0c, 0x05151a0c, 0x05161a0b, 0x0616190b,
7841343bd6cSJernej Skrabec 0x0616190b, 0x0716190a, 0x0717180a, 0x08171809,
7851343bd6cSJernej Skrabec 0x08181808, 0x09181708, 0x09181708, 0x0a181707,
7861343bd6cSJernej Skrabec 0x0a191607, 0x0b191606, 0x0b1a1605, 0x0c1a1505,
7871343bd6cSJernej Skrabec 0x0c1a1505, 0x0d1a1504, 0x0d1b1404, 0x0e1b1403,
7881343bd6cSJernej Skrabec 0x0f1b1303, 0x0f1b1303, 0x101b1302, 0x101c1202,
7891343bd6cSJernej Skrabec
7901343bd6cSJernej Skrabec 0x04111a11, 0x04121911, 0x04131910, 0x0513190f,
7911343bd6cSJernej Skrabec 0x0513190f, 0x0513190f, 0x0613190e, 0x0614180e,
7921343bd6cSJernej Skrabec 0x0714180d, 0x0714180d, 0x0715180c, 0x0814180c,
7931343bd6cSJernej Skrabec 0x0815170c, 0x0816170b, 0x0916170a, 0x0916170a,
7941343bd6cSJernej Skrabec 0x0a16160a, 0x0a171609, 0x0a171609, 0x0b171608,
7951343bd6cSJernej Skrabec 0x0b171509, 0x0c171508, 0x0c181507, 0x0d171507,
7961343bd6cSJernej Skrabec 0x0d181407, 0x0e181406, 0x0e181406, 0x0e191306,
7971343bd6cSJernej Skrabec 0x0f191305, 0x0f191305, 0x10191304, 0x10191205,
7981343bd6cSJernej Skrabec
7991343bd6cSJernej Skrabec 0x05121811, 0x06121810, 0x06121810, 0x06131710,
8001343bd6cSJernej Skrabec 0x0713170f, 0x0713170f, 0x0713170f, 0x0813170e,
8011343bd6cSJernej Skrabec 0x0813170e, 0x0814170d, 0x0914160d, 0x0914160d,
8021343bd6cSJernej Skrabec 0x0914160d, 0x0a14160c, 0x0a15160b, 0x0a15150c,
8031343bd6cSJernej Skrabec 0x0b15150b, 0x0b15150b, 0x0b16150a, 0x0c15150a,
8041343bd6cSJernej Skrabec 0x0c16140a, 0x0d161409, 0x0d161409, 0x0d171408,
8051343bd6cSJernej Skrabec 0x0e161408, 0x0e171308, 0x0e171308, 0x0f171307,
8061343bd6cSJernej Skrabec 0x0f171307, 0x10171306, 0x10181206, 0x10181206,
8071343bd6cSJernej Skrabec
8081343bd6cSJernej Skrabec 0x07111711, 0x07121710, 0x07121611, 0x08121610,
8091343bd6cSJernej Skrabec 0x08121610, 0x0813160f, 0x0912160f, 0x0913160e,
8101343bd6cSJernej Skrabec 0x0913160e, 0x0913160e, 0x0a14150d, 0x0a14150d,
8111343bd6cSJernej Skrabec 0x0a14150d, 0x0b14150c, 0x0b14150c, 0x0b14150c,
8121343bd6cSJernej Skrabec 0x0c14140c, 0x0c15140b, 0x0c15140b, 0x0c15140b,
8131343bd6cSJernej Skrabec 0x0d15140a, 0x0d15140a, 0x0d15140a, 0x0e161309,
8141343bd6cSJernej Skrabec 0x0e161309, 0x0e161309, 0x0f151309, 0x0f161308,
8151343bd6cSJernej Skrabec 0x0f161209, 0x10161208, 0x10161208, 0x10171207,
8161343bd6cSJernej Skrabec
8171343bd6cSJernej Skrabec 0x0a111411, 0x0b111410, 0x0b111410, 0x0b111410,
8181343bd6cSJernej Skrabec 0x0b111410, 0x0b12140f, 0x0b12140f, 0x0c12130f,
8191343bd6cSJernej Skrabec 0x0c12130f, 0x0c12130f, 0x0c12130f, 0x0c12130f,
8201343bd6cSJernej Skrabec 0x0d12130e, 0x0d12130e, 0x0d12130e, 0x0d13130d,
8211343bd6cSJernej Skrabec 0x0d13130d, 0x0d13130d, 0x0e12130d, 0x0e13120d,
8221343bd6cSJernej Skrabec 0x0e13120d, 0x0e13120d, 0x0e13120d, 0x0f13120c,
8231343bd6cSJernej Skrabec 0x0f13120c, 0x0f13120c, 0x0f14120b, 0x0f14120b,
8241343bd6cSJernej Skrabec 0x1013120b, 0x1013120b, 0x1013120b, 0x1014110b,
8251343bd6cSJernej Skrabec
8261343bd6cSJernej Skrabec 0x0c111310, 0x0c111310, 0x0c111310, 0x0d101310,
8271343bd6cSJernej Skrabec 0x0d101310, 0x0d111210, 0x0d111210, 0x0d111210,
8281343bd6cSJernej Skrabec 0x0d12120f, 0x0d12120f, 0x0d12120f, 0x0d12120f,
8291343bd6cSJernej Skrabec 0x0e11120f, 0x0e12120e, 0x0e12120e, 0x0e12120e,
8301343bd6cSJernej Skrabec 0x0e12120e, 0x0e12120e, 0x0e12120e, 0x0e12120e,
8311343bd6cSJernej Skrabec 0x0f11120e, 0x0f12120d, 0x0f12120d, 0x0f12120d,
8321343bd6cSJernej Skrabec 0x0f12120d, 0x0f12110e, 0x0f12110e, 0x0f12110e,
8331343bd6cSJernej Skrabec 0x1012110d, 0x1012110d, 0x1013110c, 0x1013110c,
8341343bd6cSJernej Skrabec };
8351343bd6cSJernej Skrabec
sun8i_vi_scaler_base(struct sun8i_mixer * mixer,int channel)8364b09c073SJernej Skrabec static u32 sun8i_vi_scaler_base(struct sun8i_mixer *mixer, int channel)
8374b09c073SJernej Skrabec {
838*c50519e6SJernej Skrabec if (mixer->cfg->is_de3)
839*c50519e6SJernej Skrabec return DE3_VI_SCALER_UNIT_BASE +
840*c50519e6SJernej Skrabec DE3_VI_SCALER_UNIT_SIZE * channel;
841*c50519e6SJernej Skrabec else
842*c50519e6SJernej Skrabec return DE2_VI_SCALER_UNIT_BASE +
843*c50519e6SJernej Skrabec DE2_VI_SCALER_UNIT_SIZE * channel;
8444b09c073SJernej Skrabec }
8454b09c073SJernej Skrabec
sun8i_vi_scaler_coef_index(unsigned int step)846b862a648SJernej Skrabec static int sun8i_vi_scaler_coef_index(unsigned int step)
847b862a648SJernej Skrabec {
848b862a648SJernej Skrabec unsigned int scale, int_part, float_part;
849b862a648SJernej Skrabec
850b862a648SJernej Skrabec scale = step >> (SUN8I_VI_SCALER_SCALE_FRAC - 3);
851b862a648SJernej Skrabec int_part = scale >> 3;
852b862a648SJernej Skrabec float_part = scale & 0x7;
853b862a648SJernej Skrabec
854b862a648SJernej Skrabec switch (int_part) {
855b862a648SJernej Skrabec case 0:
856b862a648SJernej Skrabec return 0;
857b862a648SJernej Skrabec case 1:
858b862a648SJernej Skrabec return float_part;
859b862a648SJernej Skrabec case 2:
860b862a648SJernej Skrabec return 8 + (float_part >> 1);
861b862a648SJernej Skrabec case 3:
862b862a648SJernej Skrabec return 12;
863b862a648SJernej Skrabec case 4:
864b862a648SJernej Skrabec return 13;
865b862a648SJernej Skrabec default:
866b862a648SJernej Skrabec return 14;
867b862a648SJernej Skrabec }
868b862a648SJernej Skrabec }
869b862a648SJernej Skrabec
sun8i_vi_scaler_set_coeff(struct regmap * map,u32 base,u32 hstep,u32 vstep,const struct drm_format_info * format)8704b09c073SJernej Skrabec static void sun8i_vi_scaler_set_coeff(struct regmap *map, u32 base,
8711343bd6cSJernej Skrabec u32 hstep, u32 vstep,
8721343bd6cSJernej Skrabec const struct drm_format_info *format)
873b862a648SJernej Skrabec {
8741343bd6cSJernej Skrabec const u32 *ch_left, *ch_right, *cy;
875b862a648SJernej Skrabec int offset, i;
876b862a648SJernej Skrabec
8771343bd6cSJernej Skrabec if (format->hsub == 1 && format->vsub == 1) {
8781343bd6cSJernej Skrabec ch_left = lan3coefftab32_left;
8791343bd6cSJernej Skrabec ch_right = lan3coefftab32_right;
8801343bd6cSJernej Skrabec cy = lan2coefftab32;
8811343bd6cSJernej Skrabec } else {
8821343bd6cSJernej Skrabec ch_left = bicubic8coefftab32_left;
8831343bd6cSJernej Skrabec ch_right = bicubic8coefftab32_right;
8841343bd6cSJernej Skrabec cy = bicubic4coefftab32;
8851343bd6cSJernej Skrabec }
8861343bd6cSJernej Skrabec
887b862a648SJernej Skrabec offset = sun8i_vi_scaler_coef_index(hstep) *
888b862a648SJernej Skrabec SUN8I_VI_SCALER_COEFF_COUNT;
889b862a648SJernej Skrabec for (i = 0; i < SUN8I_VI_SCALER_COEFF_COUNT; i++) {
8904b09c073SJernej Skrabec regmap_write(map, SUN8I_SCALER_VSU_YHCOEFF0(base, i),
891b862a648SJernej Skrabec lan3coefftab32_left[offset + i]);
8924b09c073SJernej Skrabec regmap_write(map, SUN8I_SCALER_VSU_YHCOEFF1(base, i),
893b862a648SJernej Skrabec lan3coefftab32_right[offset + i]);
8944b09c073SJernej Skrabec regmap_write(map, SUN8I_SCALER_VSU_CHCOEFF0(base, i),
8951343bd6cSJernej Skrabec ch_left[offset + i]);
8964b09c073SJernej Skrabec regmap_write(map, SUN8I_SCALER_VSU_CHCOEFF1(base, i),
8971343bd6cSJernej Skrabec ch_right[offset + i]);
898b862a648SJernej Skrabec }
899b862a648SJernej Skrabec
900b862a648SJernej Skrabec offset = sun8i_vi_scaler_coef_index(hstep) *
901b862a648SJernej Skrabec SUN8I_VI_SCALER_COEFF_COUNT;
902b862a648SJernej Skrabec for (i = 0; i < SUN8I_VI_SCALER_COEFF_COUNT; i++) {
9034b09c073SJernej Skrabec regmap_write(map, SUN8I_SCALER_VSU_YVCOEFF(base, i),
904b862a648SJernej Skrabec lan2coefftab32[offset + i]);
9054b09c073SJernej Skrabec regmap_write(map, SUN8I_SCALER_VSU_CVCOEFF(base, i),
9061343bd6cSJernej Skrabec cy[offset + i]);
907b862a648SJernej Skrabec }
908b862a648SJernej Skrabec }
909b862a648SJernej Skrabec
sun8i_vi_scaler_enable(struct sun8i_mixer * mixer,int layer,bool enable)910b862a648SJernej Skrabec void sun8i_vi_scaler_enable(struct sun8i_mixer *mixer, int layer, bool enable)
911b862a648SJernej Skrabec {
9124b09c073SJernej Skrabec u32 val, base;
9134b09c073SJernej Skrabec
9144b09c073SJernej Skrabec base = sun8i_vi_scaler_base(mixer, layer);
915b862a648SJernej Skrabec
916b862a648SJernej Skrabec if (enable)
917b862a648SJernej Skrabec val = SUN8I_SCALER_VSU_CTRL_EN |
918b862a648SJernej Skrabec SUN8I_SCALER_VSU_CTRL_COEFF_RDY;
919b862a648SJernej Skrabec else
920b862a648SJernej Skrabec val = 0;
921b862a648SJernej Skrabec
9224b09c073SJernej Skrabec regmap_write(mixer->engine.regs,
9234b09c073SJernej Skrabec SUN8I_SCALER_VSU_CTRL(base), val);
924b862a648SJernej Skrabec }
925b862a648SJernej Skrabec
sun8i_vi_scaler_setup(struct sun8i_mixer * mixer,int layer,u32 src_w,u32 src_h,u32 dst_w,u32 dst_h,u32 hscale,u32 vscale,u32 hphase,u32 vphase,const struct drm_format_info * format)926b862a648SJernej Skrabec void sun8i_vi_scaler_setup(struct sun8i_mixer *mixer, int layer,
927b862a648SJernej Skrabec u32 src_w, u32 src_h, u32 dst_w, u32 dst_h,
9281343bd6cSJernej Skrabec u32 hscale, u32 vscale, u32 hphase, u32 vphase,
9291343bd6cSJernej Skrabec const struct drm_format_info *format)
930b862a648SJernej Skrabec {
931b862a648SJernej Skrabec u32 chphase, cvphase;
932b862a648SJernej Skrabec u32 insize, outsize;
9334b09c073SJernej Skrabec u32 base;
9344b09c073SJernej Skrabec
9354b09c073SJernej Skrabec base = sun8i_vi_scaler_base(mixer, layer);
936b862a648SJernej Skrabec
937b862a648SJernej Skrabec hphase <<= SUN8I_VI_SCALER_PHASE_FRAC - 16;
938b862a648SJernej Skrabec vphase <<= SUN8I_VI_SCALER_PHASE_FRAC - 16;
939b862a648SJernej Skrabec hscale <<= SUN8I_VI_SCALER_SCALE_FRAC - 16;
940b862a648SJernej Skrabec vscale <<= SUN8I_VI_SCALER_SCALE_FRAC - 16;
941b862a648SJernej Skrabec
942b862a648SJernej Skrabec insize = SUN8I_VI_SCALER_SIZE(src_w, src_h);
943b862a648SJernej Skrabec outsize = SUN8I_VI_SCALER_SIZE(dst_w, dst_h);
944b862a648SJernej Skrabec
9451343bd6cSJernej Skrabec /*
9461343bd6cSJernej Skrabec * This is chroma V/H phase calculation as it appears in
9471343bd6cSJernej Skrabec * BSP driver. There is no detailed explanation. YUV 420
9481343bd6cSJernej Skrabec * chroma is threated specialy for some reason.
9491343bd6cSJernej Skrabec */
9501343bd6cSJernej Skrabec if (format->hsub == 2 && format->vsub == 2) {
9511343bd6cSJernej Skrabec chphase = hphase >> 1;
9521343bd6cSJernej Skrabec cvphase = (vphase >> 1) -
9531343bd6cSJernej Skrabec (1UL << (SUN8I_VI_SCALER_SCALE_FRAC - 2));
9541343bd6cSJernej Skrabec } else {
955b862a648SJernej Skrabec chphase = hphase;
956b862a648SJernej Skrabec cvphase = vphase;
9571343bd6cSJernej Skrabec }
958b862a648SJernej Skrabec
959*c50519e6SJernej Skrabec if (mixer->cfg->is_de3) {
960*c50519e6SJernej Skrabec u32 val;
961*c50519e6SJernej Skrabec
962*c50519e6SJernej Skrabec if (format->hsub == 1 && format->vsub == 1)
963*c50519e6SJernej Skrabec val = SUN50I_SCALER_VSU_SCALE_MODE_UI;
964*c50519e6SJernej Skrabec else
965*c50519e6SJernej Skrabec val = SUN50I_SCALER_VSU_SCALE_MODE_NORMAL;
966*c50519e6SJernej Skrabec
967*c50519e6SJernej Skrabec regmap_write(mixer->engine.regs,
968*c50519e6SJernej Skrabec SUN50I_SCALER_VSU_SCALE_MODE(base), val);
969*c50519e6SJernej Skrabec }
970*c50519e6SJernej Skrabec
971b862a648SJernej Skrabec regmap_write(mixer->engine.regs,
9724b09c073SJernej Skrabec SUN8I_SCALER_VSU_OUTSIZE(base), outsize);
973b862a648SJernej Skrabec regmap_write(mixer->engine.regs,
9744b09c073SJernej Skrabec SUN8I_SCALER_VSU_YINSIZE(base), insize);
975b862a648SJernej Skrabec regmap_write(mixer->engine.regs,
9764b09c073SJernej Skrabec SUN8I_SCALER_VSU_YHSTEP(base), hscale);
977b862a648SJernej Skrabec regmap_write(mixer->engine.regs,
9784b09c073SJernej Skrabec SUN8I_SCALER_VSU_YVSTEP(base), vscale);
979b862a648SJernej Skrabec regmap_write(mixer->engine.regs,
9804b09c073SJernej Skrabec SUN8I_SCALER_VSU_YHPHASE(base), hphase);
981b862a648SJernej Skrabec regmap_write(mixer->engine.regs,
9824b09c073SJernej Skrabec SUN8I_SCALER_VSU_YVPHASE(base), vphase);
983b862a648SJernej Skrabec regmap_write(mixer->engine.regs,
9844b09c073SJernej Skrabec SUN8I_SCALER_VSU_CINSIZE(base),
9851343bd6cSJernej Skrabec SUN8I_VI_SCALER_SIZE(src_w / format->hsub,
9861343bd6cSJernej Skrabec src_h / format->vsub));
987b862a648SJernej Skrabec regmap_write(mixer->engine.regs,
9884b09c073SJernej Skrabec SUN8I_SCALER_VSU_CHSTEP(base),
9891343bd6cSJernej Skrabec hscale / format->hsub);
990b862a648SJernej Skrabec regmap_write(mixer->engine.regs,
9914b09c073SJernej Skrabec SUN8I_SCALER_VSU_CVSTEP(base),
9921343bd6cSJernej Skrabec vscale / format->vsub);
993b862a648SJernej Skrabec regmap_write(mixer->engine.regs,
9944b09c073SJernej Skrabec SUN8I_SCALER_VSU_CHPHASE(base), chphase);
995b862a648SJernej Skrabec regmap_write(mixer->engine.regs,
9964b09c073SJernej Skrabec SUN8I_SCALER_VSU_CVPHASE(base), cvphase);
9974b09c073SJernej Skrabec sun8i_vi_scaler_set_coeff(mixer->engine.regs, base,
9981343bd6cSJernej Skrabec hscale, vscale, format);
999b862a648SJernej Skrabec }
1000