linux/drivers/gpu/drm/sun4i/sun8i_vi_scaler.c
<<
>>
Prefs
   1/*
   2 * Copyright (C) 2017 Jernej Skrabec <jernej.skrabec@siol.net>
   3 *
   4 * Coefficients are taken from BSP driver, which is:
   5 * Copyright (C) 2014-2015 Allwinner
   6 *
   7 * This file is licensed under the terms of the GNU General Public
   8 * License version 2.  This program is licensed "as is" without any
   9 * warranty of any kind, whether express or implied.
  10 */
  11
  12#include "sun8i_vi_scaler.h"
  13
  14static const u32 lan3coefftab32_left[480] = {
  15        0x40000000, 0x40fe0000, 0x3ffd0100, 0x3efc0100,
  16        0x3efb0100, 0x3dfa0200, 0x3cf90200, 0x3bf80200,
  17        0x39f70200, 0x37f70200, 0x35f70200, 0x33f70200,
  18        0x31f70200, 0x2ef70200, 0x2cf70200, 0x2af70200,
  19        0x27f70200, 0x24f80100, 0x22f80100, 0x1ef90100,
  20        0x1cf90100, 0x19fa0100, 0x17fa0100, 0x14fb0100,
  21        0x11fc0000, 0x0ffc0000, 0x0cfd0000, 0x0afd0000,
  22        0x08fe0000, 0x05ff0000, 0x03ff0000, 0x02000000,
  23
  24        0x3806fc02, 0x3805fc02, 0x3803fd01, 0x3801fe01,
  25        0x3700fe01, 0x35ffff01, 0x35fdff01, 0x34fc0001,
  26        0x34fb0000, 0x33fa0000, 0x31fa0100, 0x2ff90100,
  27        0x2df80200, 0x2bf80200, 0x2af70200, 0x28f70200,
  28        0x27f70200, 0x24f70300, 0x22f70300, 0x1ff70300,
  29        0x1ef70300, 0x1cf70300, 0x1af70300, 0x18f70300,
  30        0x16f80300, 0x13f80300, 0x11f90300, 0x0ef90300,
  31        0x0efa0200, 0x0cfa0200, 0x0afb0200, 0x08fb0200,
  32
  33        0x320bfa02, 0x3309fa02, 0x3208fb02, 0x3206fb02,
  34        0x3205fb02, 0x3104fc02, 0x3102fc01, 0x3001fd01,
  35        0x3000fd01, 0x2ffffd01, 0x2efefe01, 0x2dfdfe01,
  36        0x2bfcff01, 0x29fcff01, 0x28fbff01, 0x27fa0001,
  37        0x26fa0000, 0x24f90000, 0x22f90100, 0x20f90100,
  38        0x1ff80100, 0x1ef80100, 0x1cf80100, 0x1af80200,
  39        0x18f80200, 0x17f80200, 0x15f80200, 0x12f80200,
  40        0x11f90200, 0x0ff90200, 0x0df90200, 0x0cfa0200,
  41
  42        0x2e0efa01, 0x2f0dfa01, 0x2f0bfa01, 0x2e0afa01,
  43        0x2e09fa01, 0x2e07fb01, 0x2d06fb01, 0x2d05fb01,
  44        0x2c04fb01, 0x2b03fc01, 0x2a02fc01, 0x2a01fc01,
  45        0x2800fd01, 0x28fffd01, 0x26fefd01, 0x25fefe01,
  46        0x24fdfe01, 0x23fcfe01, 0x21fcff01, 0x20fbff01,
  47        0x1efbff01, 0x1efbff00, 0x1cfa0000, 0x1bfa0000,
  48        0x19fa0000, 0x18fa0000, 0x17f90000, 0x15f90100,
  49        0x14f90100, 0x12f90100, 0x11f90100, 0x0ff90100,
  50
  51        0x2b10fa00, 0x2b0ffa00, 0x2b0efa00, 0x2b0cfa00,
  52        0x2b0bfa00, 0x2a0afb01, 0x2a09fb01, 0x2908fb01,
  53        0x2807fb01, 0x2806fb01, 0x2805fb01, 0x2604fc01,
  54        0x2503fc01, 0x2502fc01, 0x2401fc01, 0x2301fc01,
  55        0x2100fd01, 0x21fffd01, 0x21fffd01, 0x20fefd01,
  56        0x1dfefe01, 0x1cfdfe01, 0x1cfdfe00, 0x1bfcfe00,
  57        0x19fcff00, 0x19fbff00, 0x17fbff00, 0x16fbff00,
  58        0x15fbff00, 0x14fb0000, 0x13fa0000, 0x11fa0000,
  59
  60        0x2811fcff, 0x2810fcff, 0x280ffbff, 0x280efbff,
  61        0x270dfb00, 0x270cfb00, 0x270bfb00, 0x260afb00,
  62        0x2609fb00, 0x2508fb00, 0x2507fb00, 0x2407fb00,
  63        0x2406fc00, 0x2305fc00, 0x2204fc00, 0x2203fc00,
  64        0x2103fc00, 0x2002fc00, 0x1f01fd00, 0x1e01fd00,
  65        0x1d00fd00, 0x1dfffd00, 0x1cfffd00, 0x1bfefd00,
  66        0x1afefe00, 0x19fefe00, 0x18fdfe00, 0x17fdfe00,
  67        0x16fdfe00, 0x15fcff00, 0x13fcff00, 0x12fcff00,
  68
  69        0x2512fdfe, 0x2511fdff, 0x2410fdff, 0x240ffdff,
  70        0x240efcff, 0x240dfcff, 0x240dfcff, 0x240cfcff,
  71        0x230bfcff, 0x230afc00, 0x2209fc00, 0x2108fc00,
  72        0x2108fc00, 0x2007fc00, 0x2006fc00, 0x2005fc00,
  73        0x1f05fc00, 0x1e04fc00, 0x1e03fc00, 0x1c03fd00,
  74        0x1c02fd00, 0x1b02fd00, 0x1b01fd00, 0x1a00fd00,
  75        0x1900fd00, 0x1800fd00, 0x17fffe00, 0x16fffe00,
  76        0x16fefe00, 0x14fefe00, 0x13fefe00, 0x13fdfe00,
  77
  78        0x2212fffe, 0x2211fefe, 0x2211fefe, 0x2110fefe,
  79        0x210ffeff, 0x220efdff, 0x210dfdff, 0x210dfdff,
  80        0x210cfdff, 0x210bfdff, 0x200afdff, 0x200afdff,
  81        0x1f09fdff, 0x1f08fdff, 0x1d08fd00, 0x1c07fd00,
  82        0x1d06fd00, 0x1b06fd00, 0x1b05fd00, 0x1c04fd00,
  83        0x1b04fd00, 0x1a03fd00, 0x1a03fd00, 0x1902fd00,
  84        0x1802fd00, 0x1801fd00, 0x1701fd00, 0x1600fd00,
  85        0x1400fe00, 0x1400fe00, 0x14fffe00, 0x13fffe00,
  86
  87        0x201200fe, 0x201100fe, 0x1f11fffe, 0x2010fffe,
  88        0x1f0ffffe, 0x1e0ffffe, 0x1f0efeff, 0x1f0dfeff,
  89        0x1f0dfeff, 0x1e0cfeff, 0x1e0bfeff, 0x1d0bfeff,
  90        0x1d0afeff, 0x1d09fdff, 0x1d09fdff, 0x1c08fdff,
  91        0x1c07fdff, 0x1b07fd00, 0x1b06fd00, 0x1a06fd00,
  92        0x1a05fd00, 0x1805fd00, 0x1904fd00, 0x1804fd00,
  93        0x1703fd00, 0x1703fd00, 0x1602fe00, 0x1502fe00,
  94        0x1501fe00, 0x1401fe00, 0x1301fe00, 0x1300fe00,
  95
  96        0x1c1202fe, 0x1c1102fe, 0x1b1102fe, 0x1c1001fe,
  97        0x1b1001fe, 0x1b0f01ff, 0x1b0e00ff, 0x1b0e00ff,
  98        0x1b0d00ff, 0x1a0d00ff, 0x1a0c00ff, 0x1a0cffff,
  99        0x1a0bffff, 0x1a0bffff, 0x1a0affff, 0x180affff,
 100        0x1909ffff, 0x1809ffff, 0x1808ffff, 0x1808feff,
 101        0x1807feff, 0x1707fe00, 0x1606fe00, 0x1506fe00,
 102        0x1605fe00, 0x1505fe00, 0x1504fe00, 0x1304fe00,
 103        0x1304fe00, 0x1303fe00, 0x1203fe00, 0x1203fe00,
 104
 105        0x181104ff, 0x191103ff, 0x191003ff, 0x181003ff,
 106        0x180f03ff, 0x190f02ff, 0x190e02ff, 0x180e02ff,
 107        0x180d02ff, 0x180d01ff, 0x180d01ff, 0x180c01ff,
 108        0x180c01ff, 0x180b00ff, 0x170b00ff, 0x170a00ff,
 109        0x170a00ff, 0x170900ff, 0x160900ff, 0x160900ff,
 110        0x1608ffff, 0x1508ffff, 0x1507ff00, 0x1507ff00,
 111        0x1407ff00, 0x1306ff00, 0x1306ff00, 0x1305ff00,
 112        0x1205ff00, 0x1105ff00, 0x1204ff00, 0x1104ff00,
 113
 114        0x171005ff, 0x171005ff, 0x171004ff, 0x170f04ff,
 115        0x160f04ff, 0x170f03ff, 0x170e03ff, 0x160e03ff,
 116        0x160d03ff, 0x160d02ff, 0x160d02ff, 0x160c02ff,
 117        0x160c02ff, 0x160c02ff, 0x160b01ff, 0x150b01ff,
 118        0x150a01ff, 0x150a01ff, 0x150a01ff, 0x140901ff,
 119        0x14090000, 0x14090000, 0x14080000, 0x13080000,
 120        0x13070000, 0x12070000, 0x12070000, 0x12060000,
 121        0x11060000, 0x11060000, 0x11050000, 0x1105ff00,
 122
 123        0x14100600, 0x15100500, 0x150f0500, 0x150f0500,
 124        0x140f0500, 0x150e0400, 0x140e0400, 0x130e0400,
 125        0x140d0400, 0x150d0300, 0x130d0300, 0x140c0300,
 126        0x140c0300, 0x140c0200, 0x140b0200, 0x130b0200,
 127        0x120b0200, 0x130a0200, 0x130a0200, 0x130a0100,
 128        0x13090100, 0x12090100, 0x11090100, 0x12080100,
 129        0x11080100, 0x10080100, 0x11070100, 0x11070000,
 130        0x10070000, 0x11060000, 0x10060000, 0x10060000,
 131
 132        0x140f0600, 0x140f0600, 0x130f0600, 0x140f0500,
 133        0x140e0500, 0x130e0500, 0x130e0500, 0x140d0400,
 134        0x140d0400, 0x130d0400, 0x120d0400, 0x130c0400,
 135        0x130c0300, 0x130c0300, 0x130b0300, 0x130b0300,
 136        0x110b0300, 0x130a0200, 0x120a0200, 0x120a0200,
 137        0x120a0200, 0x12090200, 0x10090200, 0x11090100,
 138        0x11080100, 0x11080100, 0x10080100, 0x10080100,
 139        0x10070100, 0x10070100, 0x0f070100, 0x10060100,
 140
 141        0x120f0701, 0x130f0601, 0x130e0601, 0x130e0601,
 142        0x120e0601, 0x130e0501, 0x130e0500, 0x130d0500,
 143        0x120d0500, 0x120d0500, 0x130c0400, 0x130c0400,
 144        0x120c0400, 0x110c0400, 0x120b0400, 0x120b0300,
 145        0x120b0300, 0x120b0300, 0x120a0300, 0x110a0300,
 146        0x110a0200, 0x11090200, 0x11090200, 0x10090200,
 147        0x10090200, 0x10080200, 0x10080200, 0x10080100,
 148        0x0f080100, 0x10070100, 0x0f070100, 0x0f070100
 149};
 150
 151static const u32 lan3coefftab32_right[480] = {
 152        0x00000000, 0x00000002, 0x0000ff04, 0x0000ff06,
 153        0x0000fe08, 0x0000fd0a, 0x0000fd0c, 0x0000fc0f,
 154        0x0000fc12, 0x0001fb14, 0x0001fa17, 0x0001fa19,
 155        0x0001f91c, 0x0001f91f, 0x0001f822, 0x0001f824,
 156        0x0002f727, 0x0002f72a, 0x0002f72c, 0x0002f72f,
 157        0x0002f731, 0x0002f733, 0x0002f735, 0x0002f737,
 158        0x0002f73a, 0x0002f83b, 0x0002f93c, 0x0002fa3d,
 159        0x0001fb3e, 0x0001fc3f, 0x0001fd40, 0x0000fe40,
 160
 161        0x0002fc06, 0x0002fb08, 0x0002fb0a, 0x0002fa0c,
 162        0x0002fa0e, 0x0003f910, 0x0003f912, 0x0003f814,
 163        0x0003f816, 0x0003f719, 0x0003f71a, 0x0003f71d,
 164        0x0003f71f, 0x0003f721, 0x0003f723, 0x0003f725,
 165        0x0002f727, 0x0002f729, 0x0002f72b, 0x0002f82d,
 166        0x0002f82e, 0x0001f930, 0x0001fa31, 0x0000fa34,
 167        0x0000fb34, 0x0100fc35, 0x01fffd36, 0x01ffff37,
 168        0x01fe0037, 0x01fe0138, 0x01fd0338, 0x02fc0538,
 169
 170        0x0002fa0b, 0x0002fa0c, 0x0002f90e, 0x0002f910,
 171        0x0002f911, 0x0002f813, 0x0002f816, 0x0002f817,
 172        0x0002f818, 0x0002f81a, 0x0001f81c, 0x0001f81e,
 173        0x0001f820, 0x0001f921, 0x0001f923, 0x0000f925,
 174        0x0000fa26, 0x0100fa28, 0x01fffb29, 0x01fffc2a,
 175        0x01fffc2c, 0x01fefd2d, 0x01fefe2e, 0x01fdff2f,
 176        0x01fd0030, 0x01fd0130, 0x01fc0232, 0x02fc0432,
 177        0x02fb0532, 0x02fb0633, 0x02fb0833, 0x02fa0933,
 178
 179        0x0001fa0e, 0x0001f90f, 0x0001f911, 0x0001f913,
 180        0x0001f914, 0x0001f915, 0x0000f918, 0x0000fa18,
 181        0x0000fa1a, 0x0000fa1b, 0x0000fa1d, 0x00fffb1e,
 182        0x01fffb1f, 0x01fffb20, 0x01fffc22, 0x01fefc23,
 183        0x01fefd24, 0x01fefe25, 0x01fdfe27, 0x01fdff28,
 184        0x01fd0029, 0x01fc012a, 0x01fc022b, 0x01fc032b,
 185        0x01fb042d, 0x01fb052d, 0x01fb062e, 0x01fb072e,
 186        0x01fa092e, 0x01fa0a2f, 0x01fa0b2f, 0x01fa0d2f,
 187
 188        0x0000fa11, 0x0000fa12, 0x0000fa13, 0x0000fb14,
 189        0x00fffb16, 0x00fffb16, 0x00fffb17, 0x00fffb19,
 190        0x00fffc1a, 0x00fefc1c, 0x00fefd1c, 0x01fefd1d,
 191        0x01fefe1e, 0x01fdfe20, 0x01fdff21, 0x01fdff22,
 192        0x01fd0023, 0x01fc0124, 0x01fc0124, 0x01fc0225,
 193        0x01fc0326, 0x01fc0427, 0x01fb0528, 0x01fb0629,
 194        0x01fb0729, 0x01fb0829, 0x01fb092a, 0x01fb0a2a,
 195        0x00fa0b2c, 0x00fa0c2b, 0x00fa0e2b, 0x00fa0f2c,
 196
 197        0x00fffc11, 0x00fffc12, 0x00fffc14, 0x00fffc15,
 198        0x00fefd16, 0x00fefd17, 0x00fefd18, 0x00fefe19,
 199        0x00fefe1a, 0x00fdfe1d, 0x00fdff1d, 0x00fdff1e,
 200        0x00fd001d, 0x00fd011e, 0x00fd0120, 0x00fc0221,
 201        0x00fc0321, 0x00fc0323, 0x00fc0423, 0x00fc0523,
 202        0x00fc0624, 0x00fb0725, 0x00fb0726, 0x00fb0827,
 203        0x00fb0926, 0x00fb0a26, 0x00fb0b27, 0x00fb0c27,
 204        0x00fb0d27, 0xfffb0e28, 0xfffb0f29, 0xfffc1028,
 205
 206        0x00fefd13, 0x00fefd13, 0x00fefe14, 0x00fefe15,
 207        0x00fefe17, 0x00feff17, 0x00feff17, 0x00fd0018,
 208        0x00fd001a, 0x00fd001a, 0x00fd011b, 0x00fd021c,
 209        0x00fd021c, 0x00fd031d, 0x00fc031f, 0x00fc041f,
 210        0x00fc051f, 0x00fc0521, 0x00fc0621, 0x00fc0721,
 211        0x00fc0821, 0x00fc0822, 0x00fc0922, 0x00fc0a23,
 212        0xfffc0b24, 0xfffc0c24, 0xfffc0d24, 0xfffc0d25,
 213        0xfffc0e25, 0xfffd0f25, 0xfffd1025, 0xfffd1125,
 214
 215        0x00feff12, 0x00feff14, 0x00feff14, 0x00fe0015,
 216        0x00fe0015, 0x00fd0017, 0x00fd0118, 0x00fd0118,
 217        0x00fd0218, 0x00fd0219, 0x00fd031a, 0x00fd031a,
 218        0x00fd041b, 0x00fd041c, 0x00fd051c, 0x00fd061d,
 219        0x00fd061d, 0x00fd071e, 0x00fd081e, 0xfffd081f,
 220        0xfffd091f, 0xfffd0a20, 0xfffd0a20, 0xfffd0b21,
 221        0xfffd0c21, 0xfffd0d21, 0xfffd0d22, 0xfffd0e23,
 222        0xfffe0f22, 0xfefe1022, 0xfefe1122, 0xfefe1123,
 223
 224        0x00fe0012, 0x00fe0013, 0x00fe0114, 0x00fe0114,
 225        0x00fe0116, 0x00fe0216, 0x00fe0216, 0x00fd0317,
 226        0x00fd0317, 0x00fd0418, 0x00fd0419, 0x00fd0519,
 227        0x00fd051a, 0x00fd061b, 0x00fd061b, 0x00fd071c,
 228        0xfffd071e, 0xfffd081d, 0xfffd091d, 0xfffd091e,
 229        0xfffe0a1d, 0xfffe0b1e, 0xfffe0b1e, 0xfffe0c1e,
 230        0xfffe0d1f, 0xfffe0d1f, 0xfffe0e1f, 0xfeff0f1f,
 231        0xfeff0f20, 0xfeff1020, 0xfeff1120, 0xfe001120,
 232
 233        0x00fe0212, 0x00fe0312, 0x00fe0313, 0x00fe0314,
 234        0x00fe0414, 0x00fe0414, 0x00fe0416, 0x00fe0515,
 235        0x00fe0516, 0x00fe0616, 0x00fe0617, 0x00fe0717,
 236        0xfffe0719, 0xfffe0818, 0xffff0818, 0xffff0919,
 237        0xffff0919, 0xffff0a19, 0xffff0a1a, 0xffff0b1a,
 238        0xffff0b1b, 0xffff0c1a, 0xff000c1b, 0xff000d1b,
 239        0xff000d1b, 0xff000e1b, 0xff000e1c, 0xff010f1c,
 240        0xfe01101c, 0xfe01101d, 0xfe02111c, 0xfe02111c,
 241
 242        0x00ff0411, 0x00ff0411, 0x00ff0412, 0x00ff0512,
 243        0x00ff0513, 0x00ff0513, 0x00ff0613, 0x00ff0614,
 244        0x00ff0714, 0x00ff0715, 0x00ff0715, 0xffff0816,
 245        0xffff0816, 0xff000916, 0xff000917, 0xff000918,
 246        0xff000a17, 0xff000a18, 0xff000b18, 0xff000b18,
 247        0xff010c18, 0xff010c19, 0xff010d18, 0xff010d18,
 248        0xff020d18, 0xff020e19, 0xff020e19, 0xff020f19,
 249        0xff030f19, 0xff031019, 0xff031019, 0xff031119,
 250
 251        0x00ff0511, 0x00ff0511, 0x00000511, 0x00000611,
 252        0x00000612, 0x00000612, 0x00000712, 0x00000713,
 253        0x00000714, 0x00000814, 0x00000814, 0x00000914,
 254        0x00000914, 0xff010914, 0xff010a15, 0xff010a16,
 255        0xff010a17, 0xff010b16, 0xff010b16, 0xff020c16,
 256        0xff020c16, 0xff020c16, 0xff020d16, 0xff020d17,
 257        0xff030d17, 0xff030e17, 0xff030e17, 0xff030f17,
 258        0xff040f17, 0xff040f17, 0xff041017, 0xff051017,
 259
 260        0x00000610, 0x00000610, 0x00000611, 0x00000611,
 261        0x00000711, 0x00000712, 0x00010712, 0x00010812,
 262        0x00010812, 0x00010812, 0x00010913, 0x00010913,
 263        0x00010913, 0x00010a13, 0x00020a13, 0x00020a14,
 264        0x00020b14, 0x00020b14, 0x00020b14, 0x00020c14,
 265        0x00030c14, 0x00030c15, 0x00030d15, 0x00030d15,
 266        0x00040d15, 0x00040e15, 0x00040e15, 0x00040e16,
 267        0x00050f15, 0x00050f15, 0x00050f16, 0x00051015,
 268
 269        0x00000611, 0x00010610, 0x00010710, 0x00010710,
 270        0x00010711, 0x00010811, 0x00010811, 0x00010812,
 271        0x00010812, 0x00010912, 0x00020912, 0x00020912,
 272        0x00020a12, 0x00020a12, 0x00020a13, 0x00020a13,
 273        0x00030b13, 0x00030b13, 0x00030b14, 0x00030c13,
 274        0x00030c13, 0x00040c13, 0x00040d14, 0x00040d14,
 275        0x00040d15, 0x00040d15, 0x00050e14, 0x00050e14,
 276        0x00050e15, 0x00050f14, 0x00060f14, 0x00060f14,
 277
 278        0x0001070f, 0x0001070f, 0x00010710, 0x00010710,
 279        0x00010810, 0x00010810, 0x00020810, 0x00020811,
 280        0x00020911, 0x00020911, 0x00020912, 0x00020912,
 281        0x00020a12, 0x00030a12, 0x00030a12, 0x00030b12,
 282        0x00030b12, 0x00030b12, 0x00040b12, 0x00040c12,
 283        0x00040c13, 0x00040c14, 0x00040c14, 0x00050d13,
 284        0x00050d13, 0x00050d14, 0x00050e13, 0x01050e13,
 285        0x01060e13, 0x01060e13, 0x01060e14, 0x01060f13
 286};
 287
 288static const u32 lan2coefftab32[480] = {
 289        0x00004000, 0x000140ff, 0x00033ffe, 0x00043ffd,
 290        0x00063efc, 0xff083dfc, 0x000a3bfb, 0xff0d39fb,
 291        0xff0f37fb, 0xff1136fa, 0xfe1433fb, 0xfe1631fb,
 292        0xfd192ffb, 0xfd1c2cfb, 0xfd1f29fb, 0xfc2127fc,
 293        0xfc2424fc, 0xfc2721fc, 0xfb291ffd, 0xfb2c1cfd,
 294        0xfb2f19fd, 0xfb3116fe, 0xfb3314fe, 0xfa3611ff,
 295        0xfb370fff, 0xfb390dff, 0xfb3b0a00, 0xfc3d08ff,
 296        0xfc3e0600, 0xfd3f0400, 0xfe3f0300, 0xff400100,
 297
 298        0xff053804, 0xff063803, 0xff083801, 0xff093701,
 299        0xff0a3700, 0xff0c3500, 0xff0e34ff, 0xff1033fe,
 300        0xff1232fd, 0xfe1431fd, 0xfe162ffd, 0xfe182dfd,
 301        0xfd1b2cfc, 0xfd1d2afc, 0xfd1f28fc, 0xfd2126fc,
 302        0xfd2323fd, 0xfc2621fd, 0xfc281ffd, 0xfc2a1dfd,
 303        0xfc2c1bfd, 0xfd2d18fe, 0xfd2f16fe, 0xfd3114fe,
 304        0xfd3212ff, 0xfe3310ff, 0xff340eff, 0x00350cff,
 305        0x00360a00, 0x01360900, 0x02370700, 0x03370600,
 306
 307        0xff083207, 0xff093206, 0xff0a3205, 0xff0c3203,
 308        0xff0d3103, 0xff0e3102, 0xfe113001, 0xfe132f00,
 309        0xfe142e00, 0xfe162dff, 0xfe182bff, 0xfe192aff,
 310        0xfe1b29fe, 0xfe1d27fe, 0xfe1f25fe, 0xfd2124fe,
 311        0xfe2222fe, 0xfe2421fd, 0xfe251ffe, 0xfe271dfe,
 312        0xfe291bfe, 0xff2a19fe, 0xff2b18fe, 0xff2d16fe,
 313        0x002e14fe, 0x002f12ff, 0x013010ff, 0x02300fff,
 314        0x03310dff, 0x04310cff, 0x05310a00, 0x06310900,
 315
 316        0xff0a2e09, 0xff0b2e08, 0xff0c2e07, 0xff0e2d06,
 317        0xff0f2d05, 0xff102d04, 0xff122c03, 0xfe142c02,
 318        0xfe152b02, 0xfe172a01, 0xfe182901, 0xfe1a2800,
 319        0xfe1b2700, 0xfe1d2500, 0xff1e24ff, 0xfe2023ff,
 320        0xff2121ff, 0xff2320fe, 0xff241eff, 0x00251dfe,
 321        0x00261bff, 0x00281afe, 0x012818ff, 0x012a16ff,
 322        0x022a15ff, 0x032b13ff, 0x032c12ff, 0x052c10ff,
 323        0x052d0fff, 0x062d0d00, 0x072d0c00, 0x082d0b00,
 324
 325        0xff0c2a0b, 0xff0d2a0a, 0xff0e2a09, 0xff0f2a08,
 326        0xff102a07, 0xff112a06, 0xff132905, 0xff142904,
 327        0xff162803, 0xff172703, 0xff182702, 0xff1a2601,
 328        0xff1b2501, 0xff1c2401, 0xff1e2300, 0xff1f2200,
 329        0x00202000, 0x00211f00, 0x01221d00, 0x01231c00,
 330        0x01251bff, 0x02251aff, 0x032618ff, 0x032717ff,
 331        0x042815ff, 0x052814ff, 0x052913ff, 0x06291100,
 332        0x072a10ff, 0x082a0e00, 0x092a0d00, 0x0a2a0c00,
 333
 334        0xff0d280c, 0xff0e280b, 0xff0f280a, 0xff102809,
 335        0xff112808, 0xff122708, 0xff142706, 0xff152705,
 336        0xff162605, 0xff172604, 0xff192503, 0xff1a2403,
 337        0x001b2302, 0x001c2202, 0x001d2201, 0x001e2101,
 338        0x011f1f01, 0x01211e00, 0x01221d00, 0x02221c00,
 339        0x02231b00, 0x03241900, 0x04241800, 0x04251700,
 340        0x052616ff, 0x06261400, 0x072713ff, 0x08271100,
 341        0x08271100, 0x09271000, 0x0a280e00, 0x0b280d00,
 342
 343        0xff0e260d, 0xff0f260c, 0xff10260b, 0xff11260a,
 344        0xff122609, 0xff132608, 0xff142508, 0xff152507,
 345        0x00152506, 0x00172405, 0x00182305, 0x00192304,
 346        0x001b2203, 0x001c2103, 0x011d2002, 0x011d2002,
 347        0x011f1f01, 0x021f1e01, 0x02201d01, 0x03211c00,
 348        0x03221b00, 0x04221a00, 0x04231801, 0x05241700,
 349        0x06241600, 0x07241500, 0x08251300, 0x09251200,
 350        0x09261100, 0x0a261000, 0x0b260f00, 0x0c260e00,
 351
 352        0xff0e250e, 0xff0f250d, 0xff10250c, 0xff11250b,
 353        0x0011250a, 0x00132409, 0x00142408, 0x00152407,
 354        0x00162307, 0x00172306, 0x00182206, 0x00192205,
 355        0x011a2104, 0x011b2004, 0x011c2003, 0x021c1f03,
 356        0x021e1e02, 0x031e1d02, 0x03201c01, 0x04201b01,
 357        0x04211a01, 0x05221900, 0x05221801, 0x06231700,
 358        0x07231600, 0x07241500, 0x08241400, 0x09241300,
 359        0x0a241200, 0x0b241100, 0x0c241000, 0x0d240f00,
 360
 361        0x000e240e, 0x000f240d, 0x0010240c, 0x0011240b,
 362        0x0013230a, 0x0013230a, 0x00142309, 0x00152308,
 363        0x00162208, 0x00172207, 0x01182106, 0x01192105,
 364        0x011a2005, 0x021b1f04, 0x021b1f04, 0x021d1e03,
 365        0x031d1d03, 0x031e1d02, 0x041e1c02, 0x041f1b02,
 366        0x05201a01, 0x05211901, 0x06211801, 0x07221700,
 367        0x07221601, 0x08231500, 0x09231400, 0x0a231300,
 368        0x0a231300, 0x0b231200, 0x0c231100, 0x0d231000,
 369
 370        0x000f220f, 0x0010220e, 0x0011220d, 0x0012220c,
 371        0x0013220b, 0x0013220b, 0x0015210a, 0x0015210a,
 372        0x01162108, 0x01172008, 0x01182007, 0x02191f06,
 373        0x02191f06, 0x021a1e06, 0x031a1e05, 0x031c1d04,
 374        0x041c1c04, 0x041d1c03, 0x051d1b03, 0x051e1a03,
 375        0x061f1902, 0x061f1902, 0x07201801, 0x08201701,
 376        0x08211601, 0x09211501, 0x0a211500, 0x0b211400,
 377        0x0b221300, 0x0c221200, 0x0d221100, 0x0e221000,
 378
 379        0x0010210f, 0x0011210e, 0x0011210e, 0x0012210d,
 380        0x0013210c, 0x0014200c, 0x0114200b, 0x0115200a,
 381        0x01161f0a, 0x01171f09, 0x02171f08, 0x02181e08,
 382        0x03181e07, 0x031a1d06, 0x031a1d06, 0x041b1c05,
 383        0x041c1c04, 0x051c1b04, 0x051d1a04, 0x061d1a03,
 384        0x071d1903, 0x071e1803, 0x081e1802, 0x081f1702,
 385        0x091f1602, 0x0a201501, 0x0b1f1501, 0x0b201401,
 386        0x0c211300, 0x0d211200, 0x0e201200, 0x0e211100,
 387
 388        0x00102010, 0x0011200f, 0x0012200e, 0x0013200d,
 389        0x0013200d, 0x01141f0c, 0x01151f0b, 0x01151f0b,
 390        0x01161f0a, 0x02171e09, 0x02171e09, 0x03181d08,
 391        0x03191d07, 0x03191d07, 0x041a1c06, 0x041b1c05,
 392        0x051b1b05, 0x051c1b04, 0x061c1a04, 0x071d1903,
 393        0x071d1903, 0x081d1803, 0x081e1703, 0x091e1702,
 394        0x0a1f1601, 0x0a1f1502, 0x0b1f1501, 0x0c1f1401,
 395        0x0d201300, 0x0d201300, 0x0e201200, 0x0f201100,
 396
 397        0x00102010, 0x0011200f, 0x00121f0f, 0x00131f0e,
 398        0x00141f0d, 0x01141f0c, 0x01141f0c, 0x01151e0c,
 399        0x02161e0a, 0x02171e09, 0x03171d09, 0x03181d08,
 400        0x03181d08, 0x04191c07, 0x041a1c06, 0x051a1b06,
 401        0x051b1b05, 0x061b1a05, 0x061c1a04, 0x071c1904,
 402        0x081c1903, 0x081d1803, 0x091d1703, 0x091e1702,
 403        0x0a1e1602, 0x0b1e1502, 0x0c1e1501, 0x0c1f1401,
 404        0x0d1f1400, 0x0e1f1300, 0x0e1f1201, 0x0f1f1200,
 405
 406        0x00111e11, 0x00121e10, 0x00131e0f, 0x00131e0f,
 407        0x01131e0e, 0x01141d0e, 0x02151d0c, 0x02151d0c,
 408        0x02161d0b, 0x03161c0b, 0x03171c0a, 0x04171c09,
 409        0x04181b09, 0x05181b08, 0x05191b07, 0x06191a07,
 410        0x061a1a06, 0x071a1906, 0x071b1905, 0x081b1805,
 411        0x091b1804, 0x091c1704, 0x0a1c1703, 0x0a1c1604,
 412        0x0b1d1602, 0x0c1d1502, 0x0c1d1502, 0x0d1d1402,
 413        0x0e1d1401, 0x0e1e1301, 0x0f1e1300, 0x101e1200,
 414
 415        0x00111e11, 0x00121e10, 0x00131d10, 0x01131d0f,
 416        0x01141d0e, 0x01141d0e, 0x02151c0d, 0x02151c0d,
 417        0x03161c0b, 0x03161c0b, 0x04171b0a, 0x04171b0a,
 418        0x05171b09, 0x05181a09, 0x06181a08, 0x06191a07,
 419        0x07191907, 0x071a1906, 0x081a1806, 0x081a1806,
 420        0x091a1805, 0x0a1b1704, 0x0a1b1704, 0x0b1c1603,
 421        0x0b1c1603, 0x0c1c1503, 0x0d1c1502, 0x0d1d1402,
 422        0x0e1d1401, 0x0f1d1301, 0x0f1d1301, 0x101e1200,
 423};
 424
 425static const u32 bicubic8coefftab32_left[480] = {
 426        0x40000000, 0x40ff0000, 0x3ffe0000, 0x3efe0000,
 427        0x3dfd0000, 0x3cfc0000, 0x3bfc0000, 0x39fc0000,
 428        0x36fc0000, 0x35fb0000, 0x33fb0000, 0x31fb0000,
 429        0x2ffb0000, 0x2cfb0000, 0x29fc0000, 0x27fc0000,
 430        0x24fc0000, 0x21fc0000, 0x1efd0000, 0x1cfd0000,
 431        0x19fd0000, 0x16fe0000, 0x14fe0000, 0x11fe0000,
 432        0x0dff0000, 0x0cff0000, 0x0aff0000, 0x08ff0000,
 433        0x05000000, 0x03000000, 0x02000000, 0x01000000,
 434
 435        0x3904ff00, 0x3903ff00, 0x3902ff00, 0x38010000,
 436        0x37000000, 0x36ff0000, 0x35ff0000, 0x34fe0000,
 437        0x32fe0000, 0x31fd0000, 0x30fd0000, 0x2efc0000,
 438        0x2cfc0000, 0x2afc0000, 0x28fc0000, 0x26fc0000,
 439        0x24fc0000, 0x22fc0000, 0x20fc0000, 0x1efc0000,
 440        0x1cfc0000, 0x19fc0000, 0x17fc0000, 0x15fd0000,
 441        0x12fd0000, 0x11fd0000, 0x0ffd0000, 0x0dfe0000,
 442        0x0bfe0000, 0x09fe0000, 0x08fe0000, 0x06ff0000,
 443
 444        0x3209fe00, 0x3407fe00, 0x3306fe00, 0x3305fe00,
 445        0x3204fe00, 0x3102ff00, 0x3102ff00, 0x3001ff00,
 446        0x2f00ff00, 0x2effff00, 0x2cff0000, 0x2bfe0000,
 447        0x29fe0000, 0x28fe0000, 0x26fd0000, 0x24fd0000,
 448        0x23fd0000, 0x21fd0000, 0x20fc0000, 0x1efc0000,
 449        0x1dfc0000, 0x1bfc0000, 0x19fc0000, 0x17fc0000,
 450        0x16fc0000, 0x14fc0000, 0x12fc0000, 0x10fd0000,
 451        0x0ffd0000, 0x0dfd0000, 0x0cfd0000, 0x0afd0000,
 452
 453        0x2e0cfd00, 0x2e0bfd00, 0x2e09fd00, 0x2e08fd00,
 454        0x2e07fd00, 0x2c06fe00, 0x2c05fe00, 0x2b04fe00,
 455        0x2b03fe00, 0x2a02fe00, 0x2901fe00, 0x2701ff00,
 456        0x2700ff00, 0x26ffff00, 0x24ffff00, 0x23ffff00,
 457        0x22feff00, 0x20fe0000, 0x1ffe0000, 0x1efd0000,
 458        0x1dfd0000, 0x1bfd0000, 0x1afd0000, 0x19fd0000,
 459        0x17fd0000, 0x15fd0000, 0x13fd0000, 0x12fd0000,
 460        0x11fd0000, 0x10fd0000, 0x0ffd0000, 0x0cfd0000,
 461
 462        0x2a0efd00, 0x2a0dfd00, 0x2a0cfd00, 0x290bfd00,
 463        0x290afd00, 0x2909fd00, 0x2908fd00, 0x2807fd00,
 464        0x2706fd00, 0x2705fd00, 0x2604fe00, 0x2603fe00,
 465        0x2502fe00, 0x2402fe00, 0x2401fe00, 0x2200fe00,
 466        0x2200fe00, 0x2000ff00, 0x1fffff00, 0x1effff00,
 467        0x1dfeff00, 0x1cfeff00, 0x1afeff00, 0x19feff00,
 468        0x17fe0000, 0x16fd0000, 0x15fd0000, 0x14fd0000,
 469        0x12fd0000, 0x11fd0000, 0x10fd0000, 0x0ffd0000,
 470
 471        0x2610fd00, 0x260ffd00, 0x260efd00, 0x260dfd00,
 472        0x260cfd00, 0x260bfd00, 0x260afd00, 0x2609fd00,
 473        0x2508fd00, 0x2507fd00, 0x2406fd00, 0x2406fd00,
 474        0x2305fd00, 0x2304fd00, 0x2203fe00, 0x2103fe00,
 475        0x2002fe00, 0x1f01fe00, 0x1e01fe00, 0x1e00fe00,
 476        0x1c00fe00, 0x1b00fe00, 0x1afffe00, 0x19ffff00,
 477        0x18ffff00, 0x17feff00, 0x16feff00, 0x15feff00,
 478        0x14feff00, 0x13feff00, 0x11feff00, 0x10fd0000,
 479
 480        0x2411feff, 0x2410feff, 0x240ffeff, 0x230efeff,
 481        0x240dfeff, 0x240cfeff, 0x230cfd00, 0x230bfd00,
 482        0x230afd00, 0x2309fd00, 0x2208fd00, 0x2108fd00,
 483        0x2007fd00, 0x2106fd00, 0x2005fd00, 0x1f05fd00,
 484        0x1f04fd00, 0x1e03fd00, 0x1d03fe00, 0x1c02fe00,
 485        0x1b02fe00, 0x1a01fe00, 0x1a01fe00, 0x1900fe00,
 486        0x1800fe00, 0x1700fe00, 0x16fffe00, 0x15fffe00,
 487        0x13ffff00, 0x12ffff00, 0x12feff00, 0x11feff00,
 488
 489        0x2212fffe, 0x2211fffe, 0x2210ffff, 0x220ffeff,
 490        0x220efeff, 0x210efeff, 0x210dfeff, 0x210cfeff,
 491        0x210bfeff, 0x200bfeff, 0x200afeff, 0x1f09feff,
 492        0x1f08feff, 0x1d08fe00, 0x1e07fd00, 0x1e06fd00,
 493        0x1d06fd00, 0x1c05fd00, 0x1b04fe00, 0x1a04fe00,
 494        0x1a03fe00, 0x1903fe00, 0x1802fe00, 0x1802fe00,
 495        0x1701fe00, 0x1601fe00, 0x1501fe00, 0x1500fe00,
 496        0x1400fe00, 0x1400fe00, 0x13fffe00, 0x12fffe00,
 497
 498        0x201200fe, 0x201100fe, 0x1f1100fe, 0x2010fffe,
 499        0x200ffffe, 0x1f0ffffe, 0x1f0efffe, 0x1e0dffff,
 500        0x1f0cfeff, 0x1e0cfeff, 0x1e0bfeff, 0x1e0afeff,
 501        0x1d0afeff, 0x1d09feff, 0x1c08feff, 0x1b08feff,
 502        0x1b07feff, 0x1a07feff, 0x1a06feff, 0x1a05feff,
 503        0x1805fe00, 0x1904fe00, 0x1704fe00, 0x1703fe00,
 504        0x1603fe00, 0x1602fe00, 0x1402fe00, 0x1402fe00,
 505        0x1401fe00, 0x1301fe00, 0x1201fe00, 0x1200fe00,
 506
 507        0x1c1202fe, 0x1c1102fe, 0x1b1102fe, 0x1c1001fe,
 508        0x1b1001fe, 0x1c0f01fe, 0x1b0f00fe, 0x1b0e00fe,
 509        0x1b0e00fe, 0x1b0d00fe, 0x1b0c00fe, 0x1a0cfffe,
 510        0x1a0bfffe, 0x1a0bfffe, 0x190afffe, 0x190afffe,
 511        0x1909fffe, 0x1709ffff, 0x1808ffff, 0x1708feff,
 512        0x1707feff, 0x1707feff, 0x1606feff, 0x1506feff,
 513        0x1505feff, 0x1505feff, 0x1404feff, 0x1404feff,
 514        0x1404feff, 0x1303feff, 0x1203feff, 0x1202feff,
 515
 516        0x191104fe, 0x191104fe, 0x191003fe, 0x191003fe,
 517        0x171003fe, 0x180f03fe, 0x180f02fe, 0x180e02fe,
 518        0x180e02fe, 0x180d01fe, 0x180d01fe, 0x180d01fe,
 519        0x170c01fe, 0x160c01fe, 0x170b00fe, 0x170b00fe,
 520        0x160a00fe, 0x160a00fe, 0x160a00fe, 0x150900fe,
 521        0x1509fffe, 0x1508fffe, 0x1508fffe, 0x1408fffe,
 522        0x1407fffe, 0x1307ffff, 0x1306ffff, 0x1206ffff,
 523        0x1206ffff, 0x1205ffff, 0x1205ffff, 0x1104feff,
 524
 525        0x161006ff, 0x161005ff, 0x161005ff, 0x160f05ff,
 526        0x160f04ff, 0x150f04ff, 0x150e04ff, 0x150e04ff,
 527        0x150e03ff, 0x150d03ff, 0x150d03ff, 0x150d02ff,
 528        0x140c02ff, 0x150c02fe, 0x150c02fe, 0x150b02fe,
 529        0x140b01fe, 0x140b01fe, 0x140a01fe, 0x140a01fe,
 530        0x140a01fe, 0x130900fe, 0x130900fe, 0x130900fe,
 531        0x130800fe, 0x120800fe, 0x120800fe, 0x120700fe,
 532        0x120700fe, 0x1107fffe, 0x1106fffe, 0x1106fffe,
 533
 534        0x140f0700, 0x140f0600, 0x140f0600, 0x140f0600,
 535        0x140e0600, 0x130e0500, 0x140e05ff, 0x130e05ff,
 536        0x140d05ff, 0x130d04ff, 0x130d04ff, 0x120d04ff,
 537        0x130c04ff, 0x130c03ff, 0x130c03ff, 0x120c03ff,
 538        0x120b03ff, 0x120b02ff, 0x120b02ff, 0x120a02ff,
 539        0x120a02ff, 0x110a02ff, 0x110a01ff, 0x120901ff,
 540        0x100901ff, 0x100901ff, 0x110801ff, 0x110801ff,
 541        0x100800ff, 0x100800ff, 0x100700ff, 0x100700fe,
 542
 543        0x120f0701, 0x120e0701, 0x120e0701, 0x120e0701,
 544        0x120e0600, 0x110e0600, 0x120d0600, 0x120d0600,
 545        0x120d0500, 0x120d0500, 0x110d0500, 0x110c0500,
 546        0x110c0500, 0x110c0400, 0x110c0400, 0x110b04ff,
 547        0x110b04ff, 0x110b04ff, 0x110b03ff, 0x110b03ff,
 548        0x110a03ff, 0x110a03ff, 0x100a03ff, 0x110a02ff,
 549        0x100902ff, 0x100902ff, 0x100902ff, 0x0f0902ff,
 550        0x0e0902ff, 0x100801ff, 0x0f0801ff, 0x0f0801ff,
 551
 552        0x100e0802, 0x100e0802, 0x110e0702, 0x110d0701,
 553        0x110d0701, 0x100d0701, 0x100d0701, 0x110d0601,
 554        0x110d0601, 0x110c0601, 0x110c0601, 0x100c0600,
 555        0x100c0500, 0x100c0500, 0x100c0500, 0x100b0500,
 556        0x100b0500, 0x100b0400, 0x100b0400, 0x0f0b0400,
 557        0x100a0400, 0x0f0a0400, 0x0f0a0400, 0x0f0a0300,
 558        0x0f0a03ff, 0x0f0903ff, 0x0f0903ff, 0x0f0903ff,
 559        0x0f0903ff, 0x0f0902ff, 0x0f0902ff, 0x0f0802ff
 560};
 561
 562static const u32 bicubic8coefftab32_right[480] = {
 563        0x00000000, 0x00000001, 0x00000003, 0x00000004,
 564        0x00000006, 0x0000ff09, 0x0000ff0a, 0x0000ff0c,
 565        0x0000ff0f, 0x0000fe12, 0x0000fe14, 0x0000fe16,
 566        0x0000fd19, 0x0000fd1c, 0x0000fd1e, 0x0000fc21,
 567        0x0000fc24, 0x0000fc27, 0x0000fc29, 0x0000fb2c,
 568        0x0000fb2f, 0x0000fb31, 0x0000fb33, 0x0000fb36,
 569        0x0000fc38, 0x0000fc39, 0x0000fc3b, 0x0000fc3d,
 570        0x0000fd3e, 0x0000fe3f, 0x0000fe40, 0x0000ff40,
 571
 572        0x0000ff05, 0x0000ff06, 0x0000fe08, 0x0000fe09,
 573        0x0000fe0b, 0x0000fe0d, 0x0000fd0f, 0x0000fd11,
 574        0x0000fd13, 0x0000fd15, 0x0000fc17, 0x0000fc1a,
 575        0x0000fc1c, 0x0000fc1e, 0x0000fc20, 0x0000fc22,
 576        0x0000fc24, 0x0000fc26, 0x0000fc28, 0x0000fc2a,
 577        0x0000fc2c, 0x0000fc2f, 0x0000fd30, 0x0000fd31,
 578        0x0000fe33, 0x0000fe34, 0x0000ff35, 0x0000ff36,
 579        0x00000037, 0x00000138, 0x00ff0239, 0x00ff0339,
 580
 581        0x0000fe09, 0x0000fd0a, 0x0000fd0c, 0x0000fd0d,
 582        0x0000fd0f, 0x0000fd11, 0x0000fc12, 0x0000fc14,
 583        0x0000fc16, 0x0000fc18, 0x0000fc19, 0x0000fc1b,
 584        0x0000fc1d, 0x0000fc1e, 0x0000fc21, 0x0000fd22,
 585        0x0000fd23, 0x0000fd25, 0x0000fd27, 0x0000fe28,
 586        0x0000fe29, 0x0000fe2b, 0x0000ff2c, 0x00ffff2f,
 587        0x00ff002f, 0x00ff0130, 0x00ff0231, 0x00ff0232,
 588        0x00fe0432, 0x00fe0533, 0x00fe0633, 0x00fe0734,
 589
 590        0x0000fd0c, 0x0000fd0d, 0x0000fd0f, 0x0000fd10,
 591        0x0000fd11, 0x0000fd13, 0x0000fd14, 0x0000fd16,
 592        0x0000fd17, 0x0000fd19, 0x0000fd1b, 0x0000fd1c,
 593        0x0000fd1d, 0x0000fd1f, 0x0000fe20, 0x0000fe21,
 594        0x00fffe24, 0x00ffff24, 0x00ffff25, 0x00ffff27,
 595        0x00ff0027, 0x00ff0128, 0x00fe012a, 0x00fe022a,
 596        0x00fe032b, 0x00fe042c, 0x00fe052d, 0x00fe062d,
 597        0x00fd072e, 0x00fd082e, 0x00fd092e, 0x00fd0b2f,
 598
 599        0x0000fd0e, 0x0000fd0f, 0x0000fd10, 0x0000fd12,
 600        0x0000fd13, 0x0000fd14, 0x0000fd15, 0x0000fd17,
 601        0x0000fe18, 0x00fffe1a, 0x00fffe1b, 0x00fffe1c,
 602        0x00fffe1e, 0x00ffff1e, 0x00ffff1f, 0x00ff0021,
 603        0x00fe0022, 0x00fe0023, 0x00fe0124, 0x00fe0224,
 604        0x00fe0226, 0x00fe0326, 0x00fe0427, 0x00fd0528,
 605        0x00fd0628, 0x00fd0729, 0x00fd0829, 0x00fd0929,
 606        0x00fd0a2a, 0x00fd0b2a, 0x00fd0c2a, 0x00fd0d2a,
 607
 608        0x0000fd10, 0x0000fd11, 0x00fffe12, 0x00fffe13,
 609        0x00fffe14, 0x00fffe15, 0x00fffe16, 0x00fffe17,
 610        0x00ffff18, 0x00ffff19, 0x00feff1c, 0x00fe001b,
 611        0x00fe001d, 0x00fe001e, 0x00fe011e, 0x00fe011f,
 612        0x00fe0220, 0x00fe0321, 0x00fe0322, 0x00fd0423,
 613        0x00fd0524, 0x00fd0624, 0x00fd0626, 0x00fd0725,
 614        0x00fd0825, 0x00fd0926, 0x00fd0a26, 0x00fd0b26,
 615        0x00fd0c26, 0x00fd0d26, 0x00fd0e27, 0x00fd0f27,
 616
 617        0x00fffe11, 0x00fffe12, 0x00fffe13, 0x00ffff14,
 618        0x00ffff14, 0x00feff16, 0x00feff17, 0x00fe0017,
 619        0x00fe0018, 0x00fe0019, 0x00fe011a, 0x00fe011b,
 620        0x00fe021c, 0x00fe021c, 0x00fe031d, 0x00fd031f,
 621        0x00fd041f, 0x00fd0520, 0x00fd0520, 0x00fd0621,
 622        0x00fd0721, 0x00fd0822, 0x00fd0822, 0x00fd0923,
 623        0x00fd0a23, 0x00fd0b23, 0x00fd0b25, 0x00fe0c24,
 624        0x00fe0d24, 0x00fe0e24, 0x00fe0f24, 0x00fe1024,
 625
 626        0x00feff12, 0x00feff13, 0x00feff13, 0x00fe0014,
 627        0x00fe0015, 0x00fe0016, 0x00fe0116, 0x00fe0117,
 628        0x00fe0118, 0x00fe0218, 0x00fe0219, 0x00fe031a,
 629        0x00fe031b, 0x00fe041b, 0x00fd041d, 0x00fd051d,
 630        0x00fd061d, 0x00fd061f, 0x00fe071e, 0x00fe081e,
 631        0x00fe081f, 0x00fe091f, 0x00fe0a20, 0x00fe0a20,
 632        0x00fe0b21, 0x00fe0c21, 0x00fe0d21, 0x00fe0d22,
 633        0x00fe0e22, 0x00fe0f21, 0x00ff1021, 0x00ff1022,
 634
 635        0x00fe0012, 0x00fe0013, 0x00fe0113, 0x00fe0114,
 636        0x00fe0115, 0x00fe0215, 0x00fe0216, 0x00fe0217,
 637        0x00fe0317, 0x00fe0318, 0x00fe0418, 0x00fe0419,
 638        0x00fe0519, 0x00fe051a, 0x00fe061b, 0x00fe071b,
 639        0x00fe071c, 0x00fe081c, 0x00fe081d, 0x00fe091d,
 640        0x00fe0a1d, 0x00fe0a1d, 0x00fe0b1e, 0x00fe0c1e,
 641        0x00ff0c1e, 0x00ff0d1e, 0x00ff0e1f, 0x00ff0e1f,
 642        0x00ff0f1f, 0x00ff0f20, 0x0000101f, 0x0000111f,
 643
 644        0x00fe0212, 0x00fe0312, 0x00fe0313, 0x00fe0314,
 645        0x00fe0414, 0x00fe0414, 0x00fe0515, 0x00fe0516,
 646        0x00fe0516, 0x00fe0616, 0x00fe0617, 0x00fe0718,
 647        0x00fe0719, 0x00fe0818, 0x00ff0819, 0x00ff0918,
 648        0x00ff0919, 0x00ff0a19, 0x00ff0a19, 0x00ff0b1a,
 649        0x00ff0b1b, 0x00ff0c1a, 0x00000c1b, 0x00000d1b,
 650        0x00000d1c, 0x00000e1b, 0x00000e1d, 0x00010f1b,
 651        0x00010f1b, 0x0001101c, 0x0001101d, 0x0002111c,
 652
 653        0x00fe0412, 0x00fe0412, 0x00ff0512, 0x00ff0512,
 654        0x00ff0613, 0x00ff0613, 0x00ff0614, 0x00ff0714,
 655        0x00ff0714, 0x00ff0815, 0x00ff0815, 0x00ff0815,
 656        0x00ff0916, 0x00000916, 0x00000a16, 0x00000a16,
 657        0x00000a18, 0x00000b17, 0x00000b17, 0x00010c17,
 658        0x00010c18, 0x00010d18, 0x00010d18, 0x00010d19,
 659        0x00020e18, 0x00020e18, 0x00020f18, 0x00030f18,
 660        0x00030f18, 0x00031018, 0x00031018, 0x00041119,
 661
 662        0x00ff0610, 0x00ff0611, 0x00ff0611, 0x00ff0711,
 663        0x00000711, 0x00000712, 0x00000812, 0x00000812,
 664        0x00000813, 0x00000913, 0x00000913, 0x00000914,
 665        0x00010a14, 0x00010a14, 0x00010a14, 0x00010b14,
 666        0x00010b16, 0x00020b15, 0x00020c15, 0x00020c15,
 667        0x00020c15, 0x00020d17, 0x00030d16, 0x00030d16,
 668        0x00030e16, 0x00040e16, 0x00040e16, 0x00040f16,
 669        0x00040f16, 0x00050f17, 0x00051017, 0x00051017,
 670
 671        0x0000070f, 0x00000710, 0x00000710, 0x00000710,
 672        0x00000810, 0x00010811, 0x00010811, 0x00010911,
 673        0x00010911, 0x00010913, 0x00010913, 0x00020a12,
 674        0x00020a12, 0x00020a13, 0x00020b12, 0x00020b13,
 675        0x00030b13, 0x00030c13, 0x00030c13, 0x00030c14,
 676        0x00040c13, 0x00040d13, 0x00040d14, 0x00040d14,
 677        0x00050e14, 0x00050e14, 0x00050e14, 0x00050e14,
 678        0x00060f14, 0x00060f14, 0x00060f15, 0x00061015,
 679
 680        0x0001070f, 0x0001080f, 0x0001080f, 0x0001080f,
 681        0x00010811, 0x00020910, 0x00020910, 0x00020910,
 682        0x00020911, 0x00020a10, 0x00030a10, 0x00030a11,
 683        0x00030a11, 0x00030b11, 0x00030b11, 0x00040b12,
 684        0x00040b12, 0x00040c11, 0x00040c12, 0x00040c12,
 685        0x00050c12, 0x00050c12, 0x00050d12, 0x00050d12,
 686        0x00060d13, 0x00060d13, 0x00060e12, 0x00060e13,
 687        0x00070e13, 0x00070e13, 0x00070f13, 0x00070f13,
 688
 689        0x0002080e, 0x0002080e, 0x0002080e, 0x00020810,
 690        0x0002090f, 0x0003090f, 0x0003090f, 0x0003090f,
 691        0x0003090f, 0x00030a0f, 0x00030a0f, 0x00040a10,
 692        0x00040a11, 0x00040b10, 0x00040b10, 0x00040b11,
 693        0x00050b10, 0x00050b11, 0x00050c10, 0x00050c11,
 694        0x00050c11, 0x00060c11, 0x00060c11, 0x00060d11,
 695        0x00060d12, 0x00070d12, 0x00070d12, 0x00070e11,
 696        0x00070e11, 0x00070e12, 0x00080e11, 0x00080e12
 697};
 698
 699static const u32 bicubic4coefftab32[480] = {
 700        0x00004000, 0x000140ff, 0x00033ffe, 0x00043ffd,
 701        0x00063dfd, 0xff083dfc, 0xff0a3bfc, 0xff0c39fc,
 702        0xff0e37fc, 0xfe1136fb, 0xfe1433fb, 0xfe1631fb,
 703        0xfd192ffb, 0xfd1c2cfb, 0xfd1e29fc, 0xfc2127fc,
 704        0xfc2424fc, 0xfc2721fc, 0xfc291efd, 0xfb2c1cfd,
 705        0xfb2f19fd, 0xfb3116fe, 0xfb3314fe, 0xfb3611fe,
 706        0xfc370eff, 0xfc390cff, 0xfc3b0aff, 0xfc3d08ff,
 707        0xfd3d0600, 0xfd3f0400, 0xfe3f0300, 0xff400100,
 708
 709        0xfe053904, 0xfe063903, 0xfe083901, 0xfe0a3800,
 710        0xfd0b3800, 0xfe0d36ff, 0xfd0f35ff, 0xfd1134fe,
 711        0xfd1332fe, 0xfd1531fd, 0xfc1730fd, 0xfc1a2efc,
 712        0xfc1c2cfc, 0xfc1e2afc, 0xfc2028fc, 0xfc2226fc,
 713        0xfc2424fc, 0xfc2622fc, 0xfc2820fc, 0xfc2a1efc,
 714        0xfc2c1cfc, 0xfc2e1afc, 0xfd3017fc, 0xfd3115fd,
 715        0xfe3213fd, 0xfe3411fd, 0xff350ffd, 0xff360dfe,
 716        0x00370bfe, 0x013809fe, 0x023808fe, 0x033806ff,
 717
 718        0xfd093208, 0xfd0a3207, 0xfd0c3205, 0xfd0d3204,
 719        0xfc0f3203, 0xfc113102, 0xfc123002, 0xfc143000,
 720        0xfc152f00, 0xfc172d00, 0xfc192cff, 0xfc1b2bfe,
 721        0xfc1d29fe, 0xfc1e28fe, 0xfc2027fd, 0xfd2125fd,
 722        0xfd2323fd, 0xfd2521fd, 0xfd2720fc, 0xfe281efc,
 723        0xfe291dfc, 0xfe2b1bfc, 0xff2c19fc, 0x002d17fc,
 724        0x002e16fc, 0x012f14fc, 0x022f12fd, 0x023110fd,
 725        0x03310ffd, 0x05310dfd, 0x06320bfd, 0x07320afd,
 726
 727        0xfc0c2d0b, 0xfc0d2d0a, 0xfc0e2d09, 0xfc102d07,
 728        0xfc112c07, 0xfc132c05, 0xfc142c04, 0xfc162b03,
 729        0xfc172a03, 0xfc192a01, 0xfc1a2901, 0xfd1b2800,
 730        0xfd1c2700, 0xfd1e2500, 0xfe1f24ff, 0xfe2023ff,
 731        0xfe2222fe, 0xff2320fe, 0xff241ffe, 0x00251efd,
 732        0x00271cfd, 0x01271bfd, 0x01281afd, 0x022918fd,
 733        0x032a16fd, 0x032b15fd, 0x042b14fd, 0x052c12fd,
 734        0x072c10fd, 0x082c0ffd, 0x092c0efd, 0x0a2c0dfd,
 735
 736        0xfd0d290d, 0xfd0e290c, 0xfd0f290b, 0xfd11280a,
 737        0xfd122809, 0xfd132808, 0xfd142807, 0xfd162706,
 738        0xfd172705, 0xfd192604, 0xfe1a2503, 0xfe1b2502,
 739        0xfe1c2402, 0xfe1d2302, 0xff1e2201, 0xff1f2101,
 740        0x00202000, 0x00211f00, 0x01221eff, 0x02221dff,
 741        0x02241cfe, 0x03241bfe, 0x042519fe, 0x042618fe,
 742        0x052617fe, 0x062716fd, 0x072714fe, 0x082713fe,
 743        0x092812fd, 0x0a2811fd, 0x0b2810fd, 0x0c280ffd,
 744
 745        0xfd0f250f, 0xfd10250e, 0xfd11250d, 0xfd12250c,
 746        0xfd13250b, 0xfe13250a, 0xfe152409, 0xfe162408,
 747        0xfe172308, 0xff182306, 0xff192305, 0xff1a2205,
 748        0x001b2104, 0x001c2103, 0x001d2003, 0x011e1f02,
 749        0x011f1f01, 0x021f1e01, 0x03201d00, 0x03211c00,
 750        0x04211b00, 0x05221aff, 0x062219ff, 0x062318ff,
 751        0x082316ff, 0x082316ff, 0x092415fe, 0x0a2414fe,
 752        0x0b2413fe, 0x0c2412fe, 0x0d2411fe, 0x0e2410fe,
 753
 754        0xfe10230f, 0xfe11230e, 0xfe12220e, 0xfe13220d,
 755        0xfe14220c, 0xff14220b, 0xff15220a, 0xff16210a,
 756        0x00162109, 0x00172108, 0x00182008, 0x01192006,
 757        0x011a1f06, 0x021a1f05, 0x021b1e05, 0x031c1d04,
 758        0x031d1d03, 0x041d1c03, 0x041e1b03, 0x051e1b02,
 759        0x061f1a01, 0x06201901, 0x07201801, 0x08201800,
 760        0x09201700, 0x0a211500, 0x0b2115ff, 0x0c2114ff,
 761        0x0c2213ff, 0x0d2212ff, 0x0e2211ff, 0x0f2211fe,
 762
 763        0xff112010, 0xff12200f, 0xff12200f, 0xff13200e,
 764        0x0013200d, 0x0014200c, 0x00151f0c, 0x00161f0b,
 765        0x01161f0a, 0x01171e0a, 0x02171e09, 0x02181e08,
 766        0x03191d07, 0x03191d07, 0x041a1c06, 0x041b1c05,
 767        0x051b1b05, 0x051c1b04, 0x061c1a04, 0x071c1a03,
 768        0x071d1903, 0x081e1802, 0x091d1802, 0x091e1702,
 769        0x0a1f1601, 0x0b1f1600, 0x0b1f1501, 0x0c201400,
 770        0x0d1f1400, 0x0e2013ff, 0x0f1f1200, 0x102011ff,
 771
 772        0x00111f10, 0x00121e10, 0x00131e0f, 0x00131e0f,
 773        0x01131e0e, 0x01141e0d, 0x01151d0d, 0x02151d0c,
 774        0x02161d0b, 0x03161d0a, 0x03171c0a, 0x04171c09,
 775        0x04181c08, 0x05181b08, 0x05191b07, 0x06191a07,
 776        0x061a1a06, 0x071a1906, 0x071b1905, 0x081b1805,
 777        0x081c1804, 0x091c1704, 0x0a1c1703, 0x0a1d1603,
 778        0x0b1d1602, 0x0c1d1502, 0x0c1d1502, 0x0d1e1401,
 779        0x0e1d1401, 0x0e1e1301, 0x0f1e1300, 0x101e1200,
 780
 781        0x02111c11, 0x02121c10, 0x02131b10, 0x03131b0f,
 782        0x03131b0f, 0x03141b0e, 0x04141b0d, 0x04151a0d,
 783        0x05151a0c, 0x05151a0c, 0x05161a0b, 0x0616190b,
 784        0x0616190b, 0x0716190a, 0x0717180a, 0x08171809,
 785        0x08181808, 0x09181708, 0x09181708, 0x0a181707,
 786        0x0a191607, 0x0b191606, 0x0b1a1605, 0x0c1a1505,
 787        0x0c1a1505, 0x0d1a1504, 0x0d1b1404, 0x0e1b1403,
 788        0x0f1b1303, 0x0f1b1303, 0x101b1302, 0x101c1202,
 789
 790        0x04111a11, 0x04121911, 0x04131910, 0x0513190f,
 791        0x0513190f, 0x0513190f, 0x0613190e, 0x0614180e,
 792        0x0714180d, 0x0714180d, 0x0715180c, 0x0814180c,
 793        0x0815170c, 0x0816170b, 0x0916170a, 0x0916170a,
 794        0x0a16160a, 0x0a171609, 0x0a171609, 0x0b171608,
 795        0x0b171509, 0x0c171508, 0x0c181507, 0x0d171507,
 796        0x0d181407, 0x0e181406, 0x0e181406, 0x0e191306,
 797        0x0f191305, 0x0f191305, 0x10191304, 0x10191205,
 798
 799        0x05121811, 0x06121810, 0x06121810, 0x06131710,
 800        0x0713170f, 0x0713170f, 0x0713170f, 0x0813170e,
 801        0x0813170e, 0x0814170d, 0x0914160d, 0x0914160d,
 802        0x0914160d, 0x0a14160c, 0x0a15160b, 0x0a15150c,
 803        0x0b15150b, 0x0b15150b, 0x0b16150a, 0x0c15150a,
 804        0x0c16140a, 0x0d161409, 0x0d161409, 0x0d171408,
 805        0x0e161408, 0x0e171308, 0x0e171308, 0x0f171307,
 806        0x0f171307, 0x10171306, 0x10181206, 0x10181206,
 807
 808        0x07111711, 0x07121710, 0x07121611, 0x08121610,
 809        0x08121610, 0x0813160f, 0x0912160f, 0x0913160e,
 810        0x0913160e, 0x0913160e, 0x0a14150d, 0x0a14150d,
 811        0x0a14150d, 0x0b14150c, 0x0b14150c, 0x0b14150c,
 812        0x0c14140c, 0x0c15140b, 0x0c15140b, 0x0c15140b,
 813        0x0d15140a, 0x0d15140a, 0x0d15140a, 0x0e161309,
 814        0x0e161309, 0x0e161309, 0x0f151309, 0x0f161308,
 815        0x0f161209, 0x10161208, 0x10161208, 0x10171207,
 816
 817        0x0a111411, 0x0b111410, 0x0b111410, 0x0b111410,
 818        0x0b111410, 0x0b12140f, 0x0b12140f, 0x0c12130f,
 819        0x0c12130f, 0x0c12130f, 0x0c12130f, 0x0c12130f,
 820        0x0d12130e, 0x0d12130e, 0x0d12130e, 0x0d13130d,
 821        0x0d13130d, 0x0d13130d, 0x0e12130d, 0x0e13120d,
 822        0x0e13120d, 0x0e13120d, 0x0e13120d, 0x0f13120c,
 823        0x0f13120c, 0x0f13120c, 0x0f14120b, 0x0f14120b,
 824        0x1013120b, 0x1013120b, 0x1013120b, 0x1014110b,
 825
 826        0x0c111310, 0x0c111310, 0x0c111310, 0x0d101310,
 827        0x0d101310, 0x0d111210, 0x0d111210, 0x0d111210,
 828        0x0d12120f, 0x0d12120f, 0x0d12120f, 0x0d12120f,
 829        0x0e11120f, 0x0e12120e, 0x0e12120e, 0x0e12120e,
 830        0x0e12120e, 0x0e12120e, 0x0e12120e, 0x0e12120e,
 831        0x0f11120e, 0x0f12120d, 0x0f12120d, 0x0f12120d,
 832        0x0f12120d, 0x0f12110e, 0x0f12110e, 0x0f12110e,
 833        0x1012110d, 0x1012110d, 0x1013110c, 0x1013110c,
 834};
 835
 836static u32 sun8i_vi_scaler_base(struct sun8i_mixer *mixer, int channel)
 837{
 838        if (mixer->cfg->is_de3)
 839                return DE3_VI_SCALER_UNIT_BASE +
 840                       DE3_VI_SCALER_UNIT_SIZE * channel;
 841        else
 842                return DE2_VI_SCALER_UNIT_BASE +
 843                       DE2_VI_SCALER_UNIT_SIZE * channel;
 844}
 845
 846static int sun8i_vi_scaler_coef_index(unsigned int step)
 847{
 848        unsigned int scale, int_part, float_part;
 849
 850        scale = step >> (SUN8I_VI_SCALER_SCALE_FRAC - 3);
 851        int_part = scale >> 3;
 852        float_part = scale & 0x7;
 853
 854        switch (int_part) {
 855        case 0:
 856                return 0;
 857        case 1:
 858                return float_part;
 859        case 2:
 860                return 8 + (float_part >> 1);
 861        case 3:
 862                return 12;
 863        case 4:
 864                return 13;
 865        default:
 866                return 14;
 867        }
 868}
 869
 870static void sun8i_vi_scaler_set_coeff(struct regmap *map, u32 base,
 871                                      u32 hstep, u32 vstep,
 872                                      const struct drm_format_info *format)
 873{
 874        const u32 *ch_left, *ch_right, *cy;
 875        int offset, i;
 876
 877        if (format->hsub == 1 && format->vsub == 1) {
 878                ch_left = lan3coefftab32_left;
 879                ch_right = lan3coefftab32_right;
 880                cy = lan2coefftab32;
 881        } else {
 882                ch_left = bicubic8coefftab32_left;
 883                ch_right = bicubic8coefftab32_right;
 884                cy = bicubic4coefftab32;
 885        }
 886
 887        offset = sun8i_vi_scaler_coef_index(hstep) *
 888                        SUN8I_VI_SCALER_COEFF_COUNT;
 889        for (i = 0; i < SUN8I_VI_SCALER_COEFF_COUNT; i++) {
 890                regmap_write(map, SUN8I_SCALER_VSU_YHCOEFF0(base, i),
 891                             lan3coefftab32_left[offset + i]);
 892                regmap_write(map, SUN8I_SCALER_VSU_YHCOEFF1(base, i),
 893                             lan3coefftab32_right[offset + i]);
 894                regmap_write(map, SUN8I_SCALER_VSU_CHCOEFF0(base, i),
 895                             ch_left[offset + i]);
 896                regmap_write(map, SUN8I_SCALER_VSU_CHCOEFF1(base, i),
 897                             ch_right[offset + i]);
 898        }
 899
 900        offset = sun8i_vi_scaler_coef_index(hstep) *
 901                        SUN8I_VI_SCALER_COEFF_COUNT;
 902        for (i = 0; i < SUN8I_VI_SCALER_COEFF_COUNT; i++) {
 903                regmap_write(map, SUN8I_SCALER_VSU_YVCOEFF(base, i),
 904                             lan2coefftab32[offset + i]);
 905                regmap_write(map, SUN8I_SCALER_VSU_CVCOEFF(base, i),
 906                             cy[offset + i]);
 907        }
 908}
 909
 910void sun8i_vi_scaler_enable(struct sun8i_mixer *mixer, int layer, bool enable)
 911{
 912        u32 val, base;
 913
 914        base = sun8i_vi_scaler_base(mixer, layer);
 915
 916        if (enable)
 917                val = SUN8I_SCALER_VSU_CTRL_EN |
 918                      SUN8I_SCALER_VSU_CTRL_COEFF_RDY;
 919        else
 920                val = 0;
 921
 922        regmap_write(mixer->engine.regs,
 923                     SUN8I_SCALER_VSU_CTRL(base), val);
 924}
 925
 926void sun8i_vi_scaler_setup(struct sun8i_mixer *mixer, int layer,
 927                           u32 src_w, u32 src_h, u32 dst_w, u32 dst_h,
 928                           u32 hscale, u32 vscale, u32 hphase, u32 vphase,
 929                           const struct drm_format_info *format)
 930{
 931        u32 chphase, cvphase;
 932        u32 insize, outsize;
 933        u32 base;
 934
 935        base = sun8i_vi_scaler_base(mixer, layer);
 936
 937        hphase <<= SUN8I_VI_SCALER_PHASE_FRAC - 16;
 938        vphase <<= SUN8I_VI_SCALER_PHASE_FRAC - 16;
 939        hscale <<= SUN8I_VI_SCALER_SCALE_FRAC - 16;
 940        vscale <<= SUN8I_VI_SCALER_SCALE_FRAC - 16;
 941
 942        insize = SUN8I_VI_SCALER_SIZE(src_w, src_h);
 943        outsize = SUN8I_VI_SCALER_SIZE(dst_w, dst_h);
 944
 945        /*
 946         * This is chroma V/H phase calculation as it appears in
 947         * BSP driver. There is no detailed explanation. YUV 420
 948         * chroma is threated specialy for some reason.
 949         */
 950        if (format->hsub == 2 && format->vsub == 2) {
 951                chphase = hphase >> 1;
 952                cvphase = (vphase >> 1) -
 953                        (1UL << (SUN8I_VI_SCALER_SCALE_FRAC - 2));
 954        } else {
 955                chphase = hphase;
 956                cvphase = vphase;
 957        }
 958
 959        if (mixer->cfg->is_de3) {
 960                u32 val;
 961
 962                if (format->hsub == 1 && format->vsub == 1)
 963                        val = SUN50I_SCALER_VSU_SCALE_MODE_UI;
 964                else
 965                        val = SUN50I_SCALER_VSU_SCALE_MODE_NORMAL;
 966
 967                regmap_write(mixer->engine.regs,
 968                             SUN50I_SCALER_VSU_SCALE_MODE(base), val);
 969        }
 970
 971        regmap_write(mixer->engine.regs,
 972                     SUN8I_SCALER_VSU_OUTSIZE(base), outsize);
 973        regmap_write(mixer->engine.regs,
 974                     SUN8I_SCALER_VSU_YINSIZE(base), insize);
 975        regmap_write(mixer->engine.regs,
 976                     SUN8I_SCALER_VSU_YHSTEP(base), hscale);
 977        regmap_write(mixer->engine.regs,
 978                     SUN8I_SCALER_VSU_YVSTEP(base), vscale);
 979        regmap_write(mixer->engine.regs,
 980                     SUN8I_SCALER_VSU_YHPHASE(base), hphase);
 981        regmap_write(mixer->engine.regs,
 982                     SUN8I_SCALER_VSU_YVPHASE(base), vphase);
 983        regmap_write(mixer->engine.regs,
 984                     SUN8I_SCALER_VSU_CINSIZE(base),
 985                     SUN8I_VI_SCALER_SIZE(src_w / format->hsub,
 986                                          src_h / format->vsub));
 987        regmap_write(mixer->engine.regs,
 988                     SUN8I_SCALER_VSU_CHSTEP(base),
 989                     hscale / format->hsub);
 990        regmap_write(mixer->engine.regs,
 991                     SUN8I_SCALER_VSU_CVSTEP(base),
 992                     vscale / format->vsub);
 993        regmap_write(mixer->engine.regs,
 994                     SUN8I_SCALER_VSU_CHPHASE(base), chphase);
 995        regmap_write(mixer->engine.regs,
 996                     SUN8I_SCALER_VSU_CVPHASE(base), cvphase);
 997        sun8i_vi_scaler_set_coeff(mixer->engine.regs, base,
 998                                  hscale, vscale, format);
 999}
1000