1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * Support for Intel Camera Imaging ISP subsystem. 4 * Copyright (c) 2015, Intel Corporation. 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms and conditions of the GNU General Public License, 8 * version 2, as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope it will be useful, but WITHOUT 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 13 * more details. 14 */ 15 16 #include <linux/string.h> /* for memcpy() */ 17 18 #include <type_support.h> 19 #include "system_global.h" 20 #include "vamem.h" 21 #include "ia_css_types.h" 22 #include "ia_css_ctc_table.host.h" 23 24 struct ia_css_ctc_table default_ctc_table; 25 26 #if defined(HAS_VAMEM_VERSION_2) 27 28 static const uint16_t 29 default_ctc_table_data[IA_CSS_VAMEM_2_CTC_TABLE_SIZE] = { 30 0, 384, 837, 957, 1011, 1062, 1083, 1080, 31 1078, 1077, 1053, 1039, 1012, 992, 969, 951, 32 929, 906, 886, 866, 845, 823, 809, 790, 33 772, 758, 741, 726, 711, 701, 688, 675, 34 666, 656, 648, 639, 633, 626, 618, 612, 35 603, 594, 582, 572, 557, 545, 529, 516, 36 504, 491, 480, 467, 459, 447, 438, 429, 37 419, 412, 404, 397, 389, 382, 376, 368, 38 363, 357, 351, 345, 340, 336, 330, 326, 39 321, 318, 312, 308, 304, 300, 297, 294, 40 291, 286, 284, 281, 278, 275, 271, 268, 41 261, 257, 251, 245, 240, 235, 232, 225, 42 223, 218, 213, 209, 206, 204, 199, 197, 43 193, 189, 186, 185, 183, 179, 177, 175, 44 172, 170, 169, 167, 164, 164, 162, 160, 45 158, 157, 156, 154, 154, 152, 151, 150, 46 149, 148, 146, 147, 146, 144, 143, 143, 47 142, 141, 140, 141, 139, 138, 138, 138, 48 137, 136, 136, 135, 134, 134, 134, 133, 49 132, 132, 131, 130, 131, 130, 129, 128, 50 129, 127, 127, 127, 127, 125, 125, 125, 51 123, 123, 122, 120, 118, 115, 114, 111, 52 110, 108, 106, 105, 103, 102, 100, 99, 53 97, 97, 96, 95, 94, 93, 93, 91, 54 91, 91, 90, 90, 89, 89, 88, 88, 55 89, 88, 88, 87, 87, 87, 87, 86, 56 87, 87, 86, 87, 86, 86, 84, 84, 57 82, 80, 78, 76, 74, 72, 70, 68, 58 67, 65, 62, 60, 58, 56, 55, 54, 59 53, 51, 49, 49, 47, 45, 45, 45, 60 41, 40, 39, 39, 34, 33, 34, 32, 61 25, 23, 24, 20, 13, 9, 12, 0, 62 0 63 }; 64 65 #elif defined(HAS_VAMEM_VERSION_1) 66 67 /* Default Parameters */ 68 static const uint16_t 69 default_ctc_table_data[IA_CSS_VAMEM_1_CTC_TABLE_SIZE] = { 70 0, 0, 256, 384, 384, 497, 765, 806, 71 837, 851, 888, 901, 957, 981, 993, 1001, 72 1011, 1029, 1028, 1039, 1062, 1059, 1073, 1080, 73 1083, 1085, 1085, 1098, 1080, 1084, 1085, 1093, 74 1078, 1073, 1070, 1069, 1077, 1066, 1072, 1063, 75 1053, 1044, 1046, 1053, 1039, 1028, 1025, 1024, 76 1012, 1013, 1016, 996, 992, 990, 990, 980, 77 969, 968, 961, 955, 951, 949, 933, 930, 78 929, 925, 921, 916, 906, 901, 895, 893, 79 886, 877, 872, 869, 866, 861, 857, 849, 80 845, 838, 836, 832, 823, 821, 815, 813, 81 809, 805, 796, 793, 790, 785, 784, 778, 82 772, 768, 766, 763, 758, 752, 749, 745, 83 741, 740, 736, 730, 726, 724, 723, 718, 84 711, 709, 706, 704, 701, 698, 691, 689, 85 688, 683, 683, 678, 675, 673, 671, 669, 86 666, 663, 661, 660, 656, 656, 653, 650, 87 648, 647, 646, 643, 639, 638, 637, 635, 88 633, 632, 629, 627, 626, 625, 622, 621, 89 618, 618, 614, 614, 612, 609, 606, 606, 90 603, 600, 600, 597, 594, 591, 590, 586, 91 582, 581, 578, 575, 572, 569, 563, 560, 92 557, 554, 551, 548, 545, 539, 536, 533, 93 529, 527, 524, 519, 516, 513, 510, 507, 94 504, 501, 498, 493, 491, 488, 485, 484, 95 480, 476, 474, 471, 467, 466, 464, 460, 96 459, 455, 453, 449, 447, 446, 443, 441, 97 438, 435, 432, 432, 429, 427, 426, 422, 98 419, 418, 416, 414, 412, 410, 408, 406, 99 404, 402, 401, 398, 397, 395, 393, 390, 100 389, 388, 387, 384, 382, 380, 378, 377, 101 376, 375, 372, 370, 368, 368, 366, 364, 102 363, 361, 360, 358, 357, 355, 354, 352, 103 351, 350, 349, 346, 345, 344, 344, 342, 104 340, 339, 337, 337, 336, 335, 333, 331, 105 330, 329, 328, 326, 326, 324, 324, 322, 106 321, 320, 318, 318, 318, 317, 315, 313, 107 312, 311, 311, 310, 308, 307, 306, 306, 108 304, 304, 302, 301, 300, 300, 299, 297, 109 297, 296, 296, 294, 294, 292, 291, 291, 110 291, 290, 288, 287, 286, 286, 287, 285, 111 284, 283, 282, 282, 281, 281, 279, 278, 112 278, 278, 276, 276, 275, 274, 274, 273, 113 271, 270, 269, 268, 268, 267, 265, 262, 114 261, 260, 260, 259, 257, 254, 252, 252, 115 251, 251, 249, 246, 245, 244, 243, 242, 116 240, 239, 239, 237, 235, 235, 233, 231, 117 232, 230, 229, 226, 225, 224, 225, 224, 118 223, 220, 219, 219, 218, 217, 217, 214, 119 213, 213, 212, 211, 209, 209, 209, 208, 120 206, 205, 204, 203, 204, 203, 201, 200, 121 199, 197, 198, 198, 197, 195, 194, 194, 122 193, 192, 192, 191, 189, 190, 189, 188, 123 186, 187, 186, 185, 185, 184, 183, 181, 124 183, 182, 181, 180, 179, 178, 178, 178, 125 177, 176, 175, 176, 175, 174, 174, 173, 126 172, 173, 172, 171, 170, 170, 169, 169, 127 169, 168, 167, 166, 167, 167, 166, 165, 128 164, 164, 164, 163, 164, 163, 162, 163, 129 162, 161, 160, 161, 160, 160, 160, 159, 130 158, 157, 158, 158, 157, 157, 156, 156, 131 156, 156, 155, 155, 154, 154, 154, 154, 132 154, 153, 152, 153, 152, 152, 151, 152, 133 151, 152, 151, 150, 150, 149, 149, 150, 134 149, 149, 148, 148, 148, 149, 148, 147, 135 146, 146, 147, 146, 147, 146, 145, 146, 136 146, 145, 144, 145, 144, 145, 144, 144, 137 143, 143, 143, 144, 143, 142, 142, 142, 138 142, 142, 142, 141, 141, 141, 141, 140, 139 140, 141, 140, 140, 141, 140, 139, 139, 140 139, 140, 139, 139, 138, 138, 137, 139, 141 138, 138, 138, 137, 138, 137, 137, 137, 142 137, 136, 137, 136, 136, 136, 136, 135, 143 136, 135, 135, 135, 135, 136, 135, 135, 144 134, 134, 133, 135, 134, 134, 134, 133, 145 134, 133, 134, 133, 133, 132, 133, 133, 146 132, 133, 132, 132, 132, 132, 131, 131, 147 131, 132, 131, 131, 130, 131, 130, 132, 148 131, 130, 130, 129, 130, 129, 130, 129, 149 129, 129, 130, 129, 128, 128, 128, 128, 150 129, 128, 128, 127, 127, 128, 128, 127, 151 127, 126, 126, 127, 127, 126, 126, 126, 152 127, 126, 126, 126, 125, 125, 126, 125, 153 125, 124, 124, 124, 125, 125, 124, 124, 154 123, 124, 124, 123, 123, 122, 122, 122, 155 122, 122, 121, 120, 120, 119, 118, 118, 156 118, 117, 117, 116, 115, 115, 115, 114, 157 114, 113, 113, 112, 111, 111, 111, 110, 158 110, 109, 109, 108, 108, 108, 107, 107, 159 106, 106, 105, 105, 105, 104, 104, 103, 160 103, 102, 102, 102, 102, 101, 101, 100, 161 100, 99, 99, 99, 99, 99, 99, 98, 162 97, 98, 97, 97, 97, 96, 96, 95, 163 96, 95, 96, 95, 95, 94, 94, 95, 164 94, 94, 94, 93, 93, 92, 93, 93, 165 93, 93, 92, 92, 91, 92, 92, 92, 166 91, 91, 90, 90, 91, 91, 91, 90, 167 90, 90, 90, 91, 90, 90, 90, 89, 168 89, 89, 90, 89, 89, 89, 89, 89, 169 88, 89, 89, 88, 88, 88, 88, 87, 170 89, 88, 88, 88, 88, 88, 87, 88, 171 88, 88, 87, 87, 87, 87, 87, 88, 172 87, 87, 87, 87, 87, 87, 88, 87, 173 87, 87, 87, 86, 86, 87, 87, 87, 174 87, 86, 86, 86, 87, 87, 86, 87, 175 86, 86, 86, 87, 87, 86, 86, 86, 176 86, 86, 87, 87, 86, 85, 85, 85, 177 84, 85, 85, 84, 84, 83, 83, 82, 178 82, 82, 81, 81, 80, 79, 79, 79, 179 78, 77, 77, 76, 76, 76, 75, 74, 180 74, 74, 73, 73, 72, 71, 71, 71, 181 70, 70, 69, 69, 68, 68, 67, 67, 182 67, 66, 66, 65, 65, 64, 64, 63, 183 62, 62, 62, 61, 60, 60, 59, 59, 184 58, 58, 57, 57, 56, 56, 56, 55, 185 55, 54, 55, 55, 54, 53, 53, 52, 186 53, 53, 52, 51, 51, 50, 51, 50, 187 49, 49, 50, 49, 49, 48, 48, 47, 188 47, 48, 46, 45, 45, 45, 46, 45, 189 45, 44, 45, 45, 45, 43, 42, 42, 190 41, 43, 41, 40, 40, 39, 40, 41, 191 39, 39, 39, 39, 39, 38, 35, 35, 192 34, 37, 36, 34, 33, 33, 33, 35, 193 34, 32, 32, 31, 32, 30, 29, 26, 194 25, 25, 27, 26, 23, 23, 23, 25, 195 24, 24, 22, 21, 20, 19, 16, 14, 196 13, 13, 13, 10, 9, 7, 7, 7, 197 12, 12, 12, 7, 0, 0, 0, 0 198 }; 199 200 #else 201 #error "VAMEM version must be one of {VAMEM_VERSION_1, VAMEM_VERSION_2}" 202 #endif 203 204 void 205 ia_css_config_ctc_table(void) 206 { 207 #if defined(HAS_VAMEM_VERSION_2) 208 memcpy(default_ctc_table.data.vamem_2, default_ctc_table_data, 209 sizeof(default_ctc_table_data)); 210 default_ctc_table.vamem_type = IA_CSS_VAMEM_TYPE_2; 211 #else 212 memcpy(default_ctc_table.data.vamem_1, default_ctc_table_data, 213 sizeof(default_ctc_table_data)); 214 default_ctc_table.vamem_type = 1IA_CSS_VAMEM_TYPE_1; 215 #endif 216 } 217