1 /* 2 * Allwinner SoCs display driver. 3 * 4 * Copyright (C) 2016 Allwinner. 5 * 6 * This file is licensed under the terms of the GNU General Public 7 * License version 2. This program is licensed "as is" without any 8 * warranty of any kind, whether express or implied. 9 */ 10 11 /******************************************************************************* 12 * All Winner Tech, All Right Reserved. 2014-2015 Copyright (c) 13 * 14 * File name : de_vep_table.c 15 * 16 * Description : display engine 2.0 video enhancement processor 17 * common fir table coefficients 18 * 19 * History : 2014/03/28 iptang v0.1 Initial version 20 * 21 ******************************************************************************/ 22 #include "de_vep_table.h" 23 24 int y2r[192] = { 25 /* bt601 */ 26 0x000012A0, 0x0, 0x00000000, 0x0, 0x00001989, 0x0, 0xFFF21168, 27 0xFFFFFFFF, 0x000012A0, 0x0, 0xFFFFF9BE, 0xFFFFFFFF, 0xFFFFF2FE, 28 0xFFFFFFFF, 0x000877CF, 0x0, 29 0x000012A0, 0x0, 0x0000204A, 0x0, 0x00000000, 0x0, 0xFFEEB127, 30 0xFFFFFFFF, 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 31 0x00001000, 0x0, 32 33 /* bt709 */ 34 0x000012A0, 0x0, 0x00000000, 0x0, 0x00001CB0, 0x0, 0xFFF07DF4, 35 0xFFFFFFFF, 0x000012A0, 0x0, 0xfffffC98, 0xFFFFFFFF, 0xfffff775, 36 0xFFFFFFFF, 0x0004CFDF, 0x0, 37 0x000012A0, 0x0, 0x000021D7, 0x0, 0x00000000, 0x0, 0xFFEDEA7F, 38 0xFFFFFFFF, 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 39 0x00001000, 0x0, 40 41 /* ycc */ 42 0x00001000, 0x0, 0x00000000, 0x0, 0x0000166F, 0x0, 0xFFF4C84B, 43 0xFFFFFFFF, 0x00001000, 0x0, 0xFFFFFA78, 0xFFFFFFFF, 0xFFFFF491, 44 0xFFFFFFFF, 0x00087B16, 0x0, 45 0x00001000, 0x0, 0x00001C56, 0x0, 0x00000000, 0x0, 0xFFF1D4FE, 46 0xFFFFFFFF, 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 47 0x00001000, 0x0, 48 49 /* ehance */ 50 0x00001000, 0x0, 0x00000000, 0x0, 0x00001933, 0x0, 0xFFF36666, 51 0xFFFFFFFF, 0x00001000, 0x0, 0xFFFFFD02, 0xFFFFFFFF, 0xFFFFF883, 52 0xFFFFFFFF, 0x00053D71, 0x0, 53 0x00001000, 0x0, 0x00001DB2, 0x0, 0x00000000, 0x0, 0xFFF126E9, 54 0xFFFFFFFF, 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 55 0x00001000, 0x0, 56 57 /* bt601 studio */ 58 0x00001000, 0x0, 0x00000000, 0x0, 0x000015F0, 0x0, 0xFFF50831, 59 0xFFFFFFFF, 0x00001000, 0x0, 0xFFFFFAA0, 0xFFFFFFFF, 0xFFFFF4FA, 60 0xFFFFFFFF, 0x00083333, 0x0, 61 0x00001000, 0x0, 0x00001BB6, 0x0, 0x00000000, 0x0, 0xFFF224DD, 62 0xFFFFFFFF, 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 63 0x00001000, 0x0, 64 65 /* bt709 studio */ 66 0x00001000, 0x0, 0x00000000, 0x0, 0x000018A4, 0x0, 0xFFF3AE14, 67 0xFFFFFFFF, 0x00001000, 0x0, 0xFFFFFD12, 0xFFFFFFFF, 0xFFFFF8A8, 68 0xFFFFFFFF, 0x000522D1, 0x0, 69 0x00001000, 0x0, 0x00001D0E, 0x0, 0x00000000, 0x0, 0xFFF178D5, 70 0xFFFFFFFF, 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 71 0x00001000, 0x0, 72 73 }; 74 75 int r2y[128] = { 76 /* bt601 */ 77 0x0000041D, 0x0, 0x00000810, 0x0, 0x00000191, 0x0, 0x00010000, 0x0, 78 0xFFFFFDA2, 0xFFFFFFFF, 0xFFFFFB58, 0xFFFFFFFF, 0x00000706, 0x0, 79 0x00080000, 0x0, 80 0x00000706, 0x0, 0xFFFFFA1D, 0xFFFFFFFF, 0xFFFFFEDD, 0xFFFFFFFF, 81 0x00080000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 82 0x00001000, 0x0, 83 84 /* bt709 */ 85 0x000002EE, 0x0, 0x000009D3, 0x0, 0x000000FE, 0x0, 0x00010000, 0x0, 86 0xfffffe62, 0xFFFFFFFF, 0xfffffA98, 0xFFFFFFFF, 0x00000706, 0x0, 87 0x00080000, 0x0, 88 0x00000706, 0x0, 0xfffff99E, 0xFFFFFFFF, 0xffffff5C, 0xFFFFFFFF, 89 0x00080000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 90 0x00001000, 0x0, 91 92 /* ycc */ 93 0x000004C8, 0x0, 0x00000963, 0x0, 0x000001D5, 0x0, 0x00000000, 0x0, 94 0xFFFFFD4D, 0xFFFFFFFF, 0xFFFFFAB3, 0xFFFFFFFF, 0x00000800, 0x0, 95 0x00080000, 0x0, 96 0x00000800, 0x0, 0xFFFFF94F, 0xFFFFFFFF, 0xFFFFFEB2, 0xFFFFFFFF, 97 0x00080000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 98 0x00001000, 0x0, 99 100 /* ehance */ 101 0x00000368, 0x0, 0x00000B71, 0x0, 0x00000127, 0x0, 0x00000000, 0x0, 102 0xFFFFFE29, 0xFFFFFFFF, 0xFFFFF9D7, 0xFFFFFFFF, 0x00000800, 0x0, 103 0x00080000, 0x0, 104 0x00000800, 0x0, 0xFFFFF8BC, 0xFFFFFFFF, 0xFFFFFF44, 0xFFFFFFFF, 105 0x00080000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 106 0x00001000, 0x0, 107 }; 108 109 int y2y[64] = { 110 /* bt601 to bt709 */ 111 0x00001000, 0x0, 0xFFFFFE27, 0xFFFFFFFF, 0xFFFFFCAC, 0xFFFFFFFF, 112 0x00029681, 0x0, 0x00000000, 0x0, 0x0000104C, 0x0, 0x000001D5, 0x0, 113 0xFFFEEF17, 0xFFFFFFFF, 114 0x00000000, 0x0, 0x00000133, 0x0, 0x00001068, 0x0, 0xFFFF326E, 115 0xFFFFFFFF, 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 116 0x00001000, 0x0, 117 118 /* bt709 to bt601 */ 119 0x00001000, 0x0, 0x00000197, 0x0, 0x00000311, 0x0, 0xFFFDAC02, 120 0xFFFFFFFF, 0x00000000, 0x0, 0x00000FD6, 0x0, 0xFFFFFE3B, 121 0xFFFFFFFF, 0x0000F765, 0x0, 122 0x00000000, 0x0, 0xFFFFFED7, 0xFFFFFFFF, 0x00000FBC, 0x0, 0x0000B663, 123 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 0x00001000, 124 0x0, 125 }; 126 127 int r2r[32] = { 128 /* 0-255 to 16-235 */ 129 0x00000DC0, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 0x00010000, 0x0, 130 0x00000000, 0x0, 0x00000DC0, 0x0, 0x00000000, 0x0, 0x00010000, 0x0, 131 0x00000000, 0x0, 0x00000000, 0x0, 0x00000DC0, 0x0, 0x00010000, 0x0, 132 0x00000000, 0x0, 0x00000000, 0x0, 0x00000000, 0x0, 0x00001000, 0x0, 133 }; 134 135 int bypass_csc[12] = { 136 0x00000400, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000400, 137 0x00000000, 0x00000000, 138 0x00000000, 0x00000000, 0x00000400, 0x00000000, 139 }; 140 141 unsigned int sin_cos[128] = { 142 /* sin table */ 143 0xffffffbd, 0xffffffbf, 0xffffffc1, 0xffffffc2, 0xffffffc4, 0xffffffc6, 144 0xffffffc8, 0xffffffca, 145 0xffffffcc, 0xffffffce, 0xffffffd1, 0xffffffd3, 0xffffffd5, 0xffffffd7, 146 0xffffffd9, 0xffffffdb, 147 0xffffffdd, 0xffffffdf, 0xffffffe2, 0xffffffe4, 0xffffffe6, 0xffffffe8, 148 0xffffffea, 0xffffffec, 149 0xffffffef, 0xfffffff1, 0xfffffff3, 0xfffffff5, 0xfffffff8, 0xfffffffa, 150 0xfffffffc, 0xfffffffe, 151 0x00000000, 0x00000002, 0x00000004, 0x00000006, 0x00000008, 0x0000000b, 152 0x0000000d, 0x0000000f, 153 0x00000011, 0x00000014, 0x00000016, 0x00000018, 0x0000001a, 0x0000001c, 154 0x0000001e, 0x00000021, 155 0x00000023, 0x00000025, 0x00000027, 0x00000029, 0x0000002b, 0x0000002d, 156 0x0000002f, 0x00000032, 157 0x00000034, 0x00000036, 0x00000038, 0x0000003a, 0x0000003c, 0x0000003e, 158 0x0000003f, 0x00000041, 159 /* cos table */ 160 0x0000006c, 0x0000006d, 0x0000006e, 0x0000006f, 0x00000071, 0x00000072, 161 0x00000073, 0x00000074, 162 0x00000074, 0x00000075, 0x00000076, 0x00000077, 0x00000078, 0x00000079, 163 0x00000079, 0x0000007a, 164 0x0000007b, 0x0000007b, 0x0000007c, 0x0000007c, 0x0000007d, 0x0000007d, 165 0x0000007e, 0x0000007e, 166 0x0000007e, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 167 0x0000007f, 0x0000007f, 168 0x00000080, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 0x0000007f, 169 0x0000007f, 0x0000007f, 170 0x0000007e, 0x0000007e, 0x0000007e, 0x0000007d, 0x0000007d, 0x0000007c, 171 0x0000007c, 0x0000007b, 172 0x0000007b, 0x0000007a, 0x00000079, 0x00000079, 0x00000078, 0x00000077, 173 0x00000076, 0x00000075, 174 0x00000074, 0x00000074, 0x00000073, 0x00000072, 0x00000071, 0x0000006f, 175 0x0000006e, 0x0000006d 176 }; 177 178 int fcc_range_gain[6] = { 179 0x01550eaa, 0x070503f3, 0x0bdd084f, 0x0a000705, 180 0x0eaa0bdd, 0x03330155 181 }; 182 183 unsigned char ce_bypass_lut[256] = { 184 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 185 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 186 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 187 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 188 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 189 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 190 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 191 111, 192 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 193 126, 127, 194 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 195 142, 143, 196 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 197 158, 159, 198 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 199 174, 175, 200 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 201 190, 191, 202 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 203 206, 207, 204 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 205 222, 223, 206 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 207 238, 239, 208 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 209 254, 255 210 }; 211 unsigned char ce_constant_lut[256] = { 212 0, 1, 1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9, 10, 10, 11, 213 12, 14, 15, 16, 17, 19, 20, 21, 22, 24, 25, 26, 27, 29, 30, 31, 214 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 215 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 216 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 217 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 218 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 219 111, 220 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 221 126, 127, 222 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 223 142, 143, 224 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 225 158, 159, 226 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 227 174, 175, 228 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 229 190, 191, 230 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 231 206, 207, 232 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 233 222, 223, 234 225, 226, 228, 229, 231, 232, 234, 235, 237, 238, 240, 241, 243, 244, 235 246, 247, 236 248, 248, 249, 249, 250, 250, 251, 251, 252, 252, 253, 253, 254, 254, 237 255, 255, 238 }; 239