1f5fbb83fSMauro Carvalho Chehab // SPDX-License-Identifier: GPL-2.0 29d4fa1a1SMauro Carvalho Chehab /* 39d4fa1a1SMauro Carvalho Chehab * Support for Intel Camera Imaging ISP subsystem. 49d4fa1a1SMauro Carvalho Chehab * Copyright (c) 2015, Intel Corporation. 59d4fa1a1SMauro Carvalho Chehab * 69d4fa1a1SMauro Carvalho Chehab * This program is free software; you can redistribute it and/or modify it 79d4fa1a1SMauro Carvalho Chehab * under the terms and conditions of the GNU General Public License, 89d4fa1a1SMauro Carvalho Chehab * version 2, as published by the Free Software Foundation. 99d4fa1a1SMauro Carvalho Chehab * 109d4fa1a1SMauro Carvalho Chehab * This program is distributed in the hope it will be useful, but WITHOUT 119d4fa1a1SMauro Carvalho Chehab * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 129d4fa1a1SMauro Carvalho Chehab * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 139d4fa1a1SMauro Carvalho Chehab * more details. 149d4fa1a1SMauro Carvalho Chehab */ 159d4fa1a1SMauro Carvalho Chehab 16662fb4fcSMauro Carvalho Chehab #include <linux/string.h> /* for memcpy() */ 17662fb4fcSMauro Carvalho Chehab 189d4fa1a1SMauro Carvalho Chehab #include <type_support.h> 199d4fa1a1SMauro Carvalho Chehab #include "system_global.h" 209d4fa1a1SMauro Carvalho Chehab #include "vamem.h" 219d4fa1a1SMauro Carvalho Chehab #include "ia_css_types.h" 229d4fa1a1SMauro Carvalho Chehab #include "ia_css_ctc_table.host.h" 239d4fa1a1SMauro Carvalho Chehab 249d4fa1a1SMauro Carvalho Chehab struct ia_css_ctc_table default_ctc_table; 259d4fa1a1SMauro Carvalho Chehab 269d4fa1a1SMauro Carvalho Chehab #if defined(HAS_VAMEM_VERSION_2) 279d4fa1a1SMauro Carvalho Chehab 289d4fa1a1SMauro Carvalho Chehab static const uint16_t 299d4fa1a1SMauro Carvalho Chehab default_ctc_table_data[IA_CSS_VAMEM_2_CTC_TABLE_SIZE] = { 309d4fa1a1SMauro Carvalho Chehab 0, 384, 837, 957, 1011, 1062, 1083, 1080, 319d4fa1a1SMauro Carvalho Chehab 1078, 1077, 1053, 1039, 1012, 992, 969, 951, 329d4fa1a1SMauro Carvalho Chehab 929, 906, 886, 866, 845, 823, 809, 790, 339d4fa1a1SMauro Carvalho Chehab 772, 758, 741, 726, 711, 701, 688, 675, 349d4fa1a1SMauro Carvalho Chehab 666, 656, 648, 639, 633, 626, 618, 612, 359d4fa1a1SMauro Carvalho Chehab 603, 594, 582, 572, 557, 545, 529, 516, 369d4fa1a1SMauro Carvalho Chehab 504, 491, 480, 467, 459, 447, 438, 429, 379d4fa1a1SMauro Carvalho Chehab 419, 412, 404, 397, 389, 382, 376, 368, 389d4fa1a1SMauro Carvalho Chehab 363, 357, 351, 345, 340, 336, 330, 326, 399d4fa1a1SMauro Carvalho Chehab 321, 318, 312, 308, 304, 300, 297, 294, 409d4fa1a1SMauro Carvalho Chehab 291, 286, 284, 281, 278, 275, 271, 268, 419d4fa1a1SMauro Carvalho Chehab 261, 257, 251, 245, 240, 235, 232, 225, 429d4fa1a1SMauro Carvalho Chehab 223, 218, 213, 209, 206, 204, 199, 197, 439d4fa1a1SMauro Carvalho Chehab 193, 189, 186, 185, 183, 179, 177, 175, 449d4fa1a1SMauro Carvalho Chehab 172, 170, 169, 167, 164, 164, 162, 160, 459d4fa1a1SMauro Carvalho Chehab 158, 157, 156, 154, 154, 152, 151, 150, 469d4fa1a1SMauro Carvalho Chehab 149, 148, 146, 147, 146, 144, 143, 143, 479d4fa1a1SMauro Carvalho Chehab 142, 141, 140, 141, 139, 138, 138, 138, 489d4fa1a1SMauro Carvalho Chehab 137, 136, 136, 135, 134, 134, 134, 133, 499d4fa1a1SMauro Carvalho Chehab 132, 132, 131, 130, 131, 130, 129, 128, 509d4fa1a1SMauro Carvalho Chehab 129, 127, 127, 127, 127, 125, 125, 125, 519d4fa1a1SMauro Carvalho Chehab 123, 123, 122, 120, 118, 115, 114, 111, 529d4fa1a1SMauro Carvalho Chehab 110, 108, 106, 105, 103, 102, 100, 99, 539d4fa1a1SMauro Carvalho Chehab 97, 97, 96, 95, 94, 93, 93, 91, 549d4fa1a1SMauro Carvalho Chehab 91, 91, 90, 90, 89, 89, 88, 88, 559d4fa1a1SMauro Carvalho Chehab 89, 88, 88, 87, 87, 87, 87, 86, 569d4fa1a1SMauro Carvalho Chehab 87, 87, 86, 87, 86, 86, 84, 84, 579d4fa1a1SMauro Carvalho Chehab 82, 80, 78, 76, 74, 72, 70, 68, 589d4fa1a1SMauro Carvalho Chehab 67, 65, 62, 60, 58, 56, 55, 54, 599d4fa1a1SMauro Carvalho Chehab 53, 51, 49, 49, 47, 45, 45, 45, 609d4fa1a1SMauro Carvalho Chehab 41, 40, 39, 39, 34, 33, 34, 32, 619d4fa1a1SMauro Carvalho Chehab 25, 23, 24, 20, 13, 9, 12, 0, 629d4fa1a1SMauro Carvalho Chehab 0 639d4fa1a1SMauro Carvalho Chehab }; 649d4fa1a1SMauro Carvalho Chehab 659d4fa1a1SMauro Carvalho Chehab #elif defined(HAS_VAMEM_VERSION_1) 669d4fa1a1SMauro Carvalho Chehab 679d4fa1a1SMauro Carvalho Chehab /* Default Parameters */ 689d4fa1a1SMauro Carvalho Chehab static const uint16_t 699d4fa1a1SMauro Carvalho Chehab default_ctc_table_data[IA_CSS_VAMEM_1_CTC_TABLE_SIZE] = { 709d4fa1a1SMauro Carvalho Chehab 0, 0, 256, 384, 384, 497, 765, 806, 719d4fa1a1SMauro Carvalho Chehab 837, 851, 888, 901, 957, 981, 993, 1001, 729d4fa1a1SMauro Carvalho Chehab 1011, 1029, 1028, 1039, 1062, 1059, 1073, 1080, 739d4fa1a1SMauro Carvalho Chehab 1083, 1085, 1085, 1098, 1080, 1084, 1085, 1093, 749d4fa1a1SMauro Carvalho Chehab 1078, 1073, 1070, 1069, 1077, 1066, 1072, 1063, 759d4fa1a1SMauro Carvalho Chehab 1053, 1044, 1046, 1053, 1039, 1028, 1025, 1024, 769d4fa1a1SMauro Carvalho Chehab 1012, 1013, 1016, 996, 992, 990, 990, 980, 779d4fa1a1SMauro Carvalho Chehab 969, 968, 961, 955, 951, 949, 933, 930, 789d4fa1a1SMauro Carvalho Chehab 929, 925, 921, 916, 906, 901, 895, 893, 799d4fa1a1SMauro Carvalho Chehab 886, 877, 872, 869, 866, 861, 857, 849, 809d4fa1a1SMauro Carvalho Chehab 845, 838, 836, 832, 823, 821, 815, 813, 819d4fa1a1SMauro Carvalho Chehab 809, 805, 796, 793, 790, 785, 784, 778, 829d4fa1a1SMauro Carvalho Chehab 772, 768, 766, 763, 758, 752, 749, 745, 839d4fa1a1SMauro Carvalho Chehab 741, 740, 736, 730, 726, 724, 723, 718, 849d4fa1a1SMauro Carvalho Chehab 711, 709, 706, 704, 701, 698, 691, 689, 859d4fa1a1SMauro Carvalho Chehab 688, 683, 683, 678, 675, 673, 671, 669, 869d4fa1a1SMauro Carvalho Chehab 666, 663, 661, 660, 656, 656, 653, 650, 879d4fa1a1SMauro Carvalho Chehab 648, 647, 646, 643, 639, 638, 637, 635, 889d4fa1a1SMauro Carvalho Chehab 633, 632, 629, 627, 626, 625, 622, 621, 899d4fa1a1SMauro Carvalho Chehab 618, 618, 614, 614, 612, 609, 606, 606, 909d4fa1a1SMauro Carvalho Chehab 603, 600, 600, 597, 594, 591, 590, 586, 919d4fa1a1SMauro Carvalho Chehab 582, 581, 578, 575, 572, 569, 563, 560, 929d4fa1a1SMauro Carvalho Chehab 557, 554, 551, 548, 545, 539, 536, 533, 939d4fa1a1SMauro Carvalho Chehab 529, 527, 524, 519, 516, 513, 510, 507, 949d4fa1a1SMauro Carvalho Chehab 504, 501, 498, 493, 491, 488, 485, 484, 959d4fa1a1SMauro Carvalho Chehab 480, 476, 474, 471, 467, 466, 464, 460, 969d4fa1a1SMauro Carvalho Chehab 459, 455, 453, 449, 447, 446, 443, 441, 979d4fa1a1SMauro Carvalho Chehab 438, 435, 432, 432, 429, 427, 426, 422, 989d4fa1a1SMauro Carvalho Chehab 419, 418, 416, 414, 412, 410, 408, 406, 999d4fa1a1SMauro Carvalho Chehab 404, 402, 401, 398, 397, 395, 393, 390, 1009d4fa1a1SMauro Carvalho Chehab 389, 388, 387, 384, 382, 380, 378, 377, 1019d4fa1a1SMauro Carvalho Chehab 376, 375, 372, 370, 368, 368, 366, 364, 1029d4fa1a1SMauro Carvalho Chehab 363, 361, 360, 358, 357, 355, 354, 352, 1039d4fa1a1SMauro Carvalho Chehab 351, 350, 349, 346, 345, 344, 344, 342, 1049d4fa1a1SMauro Carvalho Chehab 340, 339, 337, 337, 336, 335, 333, 331, 1059d4fa1a1SMauro Carvalho Chehab 330, 329, 328, 326, 326, 324, 324, 322, 1069d4fa1a1SMauro Carvalho Chehab 321, 320, 318, 318, 318, 317, 315, 313, 1079d4fa1a1SMauro Carvalho Chehab 312, 311, 311, 310, 308, 307, 306, 306, 1089d4fa1a1SMauro Carvalho Chehab 304, 304, 302, 301, 300, 300, 299, 297, 1099d4fa1a1SMauro Carvalho Chehab 297, 296, 296, 294, 294, 292, 291, 291, 1109d4fa1a1SMauro Carvalho Chehab 291, 290, 288, 287, 286, 286, 287, 285, 1119d4fa1a1SMauro Carvalho Chehab 284, 283, 282, 282, 281, 281, 279, 278, 1129d4fa1a1SMauro Carvalho Chehab 278, 278, 276, 276, 275, 274, 274, 273, 1139d4fa1a1SMauro Carvalho Chehab 271, 270, 269, 268, 268, 267, 265, 262, 1149d4fa1a1SMauro Carvalho Chehab 261, 260, 260, 259, 257, 254, 252, 252, 1159d4fa1a1SMauro Carvalho Chehab 251, 251, 249, 246, 245, 244, 243, 242, 1169d4fa1a1SMauro Carvalho Chehab 240, 239, 239, 237, 235, 235, 233, 231, 1179d4fa1a1SMauro Carvalho Chehab 232, 230, 229, 226, 225, 224, 225, 224, 1189d4fa1a1SMauro Carvalho Chehab 223, 220, 219, 219, 218, 217, 217, 214, 1199d4fa1a1SMauro Carvalho Chehab 213, 213, 212, 211, 209, 209, 209, 208, 1209d4fa1a1SMauro Carvalho Chehab 206, 205, 204, 203, 204, 203, 201, 200, 1219d4fa1a1SMauro Carvalho Chehab 199, 197, 198, 198, 197, 195, 194, 194, 1229d4fa1a1SMauro Carvalho Chehab 193, 192, 192, 191, 189, 190, 189, 188, 1239d4fa1a1SMauro Carvalho Chehab 186, 187, 186, 185, 185, 184, 183, 181, 1249d4fa1a1SMauro Carvalho Chehab 183, 182, 181, 180, 179, 178, 178, 178, 1259d4fa1a1SMauro Carvalho Chehab 177, 176, 175, 176, 175, 174, 174, 173, 1269d4fa1a1SMauro Carvalho Chehab 172, 173, 172, 171, 170, 170, 169, 169, 1279d4fa1a1SMauro Carvalho Chehab 169, 168, 167, 166, 167, 167, 166, 165, 1289d4fa1a1SMauro Carvalho Chehab 164, 164, 164, 163, 164, 163, 162, 163, 1299d4fa1a1SMauro Carvalho Chehab 162, 161, 160, 161, 160, 160, 160, 159, 1309d4fa1a1SMauro Carvalho Chehab 158, 157, 158, 158, 157, 157, 156, 156, 1319d4fa1a1SMauro Carvalho Chehab 156, 156, 155, 155, 154, 154, 154, 154, 1329d4fa1a1SMauro Carvalho Chehab 154, 153, 152, 153, 152, 152, 151, 152, 1339d4fa1a1SMauro Carvalho Chehab 151, 152, 151, 150, 150, 149, 149, 150, 1349d4fa1a1SMauro Carvalho Chehab 149, 149, 148, 148, 148, 149, 148, 147, 1359d4fa1a1SMauro Carvalho Chehab 146, 146, 147, 146, 147, 146, 145, 146, 1369d4fa1a1SMauro Carvalho Chehab 146, 145, 144, 145, 144, 145, 144, 144, 1379d4fa1a1SMauro Carvalho Chehab 143, 143, 143, 144, 143, 142, 142, 142, 1389d4fa1a1SMauro Carvalho Chehab 142, 142, 142, 141, 141, 141, 141, 140, 1399d4fa1a1SMauro Carvalho Chehab 140, 141, 140, 140, 141, 140, 139, 139, 1409d4fa1a1SMauro Carvalho Chehab 139, 140, 139, 139, 138, 138, 137, 139, 1419d4fa1a1SMauro Carvalho Chehab 138, 138, 138, 137, 138, 137, 137, 137, 1429d4fa1a1SMauro Carvalho Chehab 137, 136, 137, 136, 136, 136, 136, 135, 1439d4fa1a1SMauro Carvalho Chehab 136, 135, 135, 135, 135, 136, 135, 135, 1449d4fa1a1SMauro Carvalho Chehab 134, 134, 133, 135, 134, 134, 134, 133, 1459d4fa1a1SMauro Carvalho Chehab 134, 133, 134, 133, 133, 132, 133, 133, 1469d4fa1a1SMauro Carvalho Chehab 132, 133, 132, 132, 132, 132, 131, 131, 1479d4fa1a1SMauro Carvalho Chehab 131, 132, 131, 131, 130, 131, 130, 132, 1489d4fa1a1SMauro Carvalho Chehab 131, 130, 130, 129, 130, 129, 130, 129, 1499d4fa1a1SMauro Carvalho Chehab 129, 129, 130, 129, 128, 128, 128, 128, 1509d4fa1a1SMauro Carvalho Chehab 129, 128, 128, 127, 127, 128, 128, 127, 1519d4fa1a1SMauro Carvalho Chehab 127, 126, 126, 127, 127, 126, 126, 126, 1529d4fa1a1SMauro Carvalho Chehab 127, 126, 126, 126, 125, 125, 126, 125, 1539d4fa1a1SMauro Carvalho Chehab 125, 124, 124, 124, 125, 125, 124, 124, 1549d4fa1a1SMauro Carvalho Chehab 123, 124, 124, 123, 123, 122, 122, 122, 1559d4fa1a1SMauro Carvalho Chehab 122, 122, 121, 120, 120, 119, 118, 118, 1569d4fa1a1SMauro Carvalho Chehab 118, 117, 117, 116, 115, 115, 115, 114, 1579d4fa1a1SMauro Carvalho Chehab 114, 113, 113, 112, 111, 111, 111, 110, 1589d4fa1a1SMauro Carvalho Chehab 110, 109, 109, 108, 108, 108, 107, 107, 1599d4fa1a1SMauro Carvalho Chehab 106, 106, 105, 105, 105, 104, 104, 103, 1609d4fa1a1SMauro Carvalho Chehab 103, 102, 102, 102, 102, 101, 101, 100, 1619d4fa1a1SMauro Carvalho Chehab 100, 99, 99, 99, 99, 99, 99, 98, 1629d4fa1a1SMauro Carvalho Chehab 97, 98, 97, 97, 97, 96, 96, 95, 1639d4fa1a1SMauro Carvalho Chehab 96, 95, 96, 95, 95, 94, 94, 95, 1649d4fa1a1SMauro Carvalho Chehab 94, 94, 94, 93, 93, 92, 93, 93, 1659d4fa1a1SMauro Carvalho Chehab 93, 93, 92, 92, 91, 92, 92, 92, 1669d4fa1a1SMauro Carvalho Chehab 91, 91, 90, 90, 91, 91, 91, 90, 1679d4fa1a1SMauro Carvalho Chehab 90, 90, 90, 91, 90, 90, 90, 89, 1689d4fa1a1SMauro Carvalho Chehab 89, 89, 90, 89, 89, 89, 89, 89, 1699d4fa1a1SMauro Carvalho Chehab 88, 89, 89, 88, 88, 88, 88, 87, 1709d4fa1a1SMauro Carvalho Chehab 89, 88, 88, 88, 88, 88, 87, 88, 1719d4fa1a1SMauro Carvalho Chehab 88, 88, 87, 87, 87, 87, 87, 88, 1729d4fa1a1SMauro Carvalho Chehab 87, 87, 87, 87, 87, 87, 88, 87, 1739d4fa1a1SMauro Carvalho Chehab 87, 87, 87, 86, 86, 87, 87, 87, 1749d4fa1a1SMauro Carvalho Chehab 87, 86, 86, 86, 87, 87, 86, 87, 1759d4fa1a1SMauro Carvalho Chehab 86, 86, 86, 87, 87, 86, 86, 86, 1769d4fa1a1SMauro Carvalho Chehab 86, 86, 87, 87, 86, 85, 85, 85, 1779d4fa1a1SMauro Carvalho Chehab 84, 85, 85, 84, 84, 83, 83, 82, 1789d4fa1a1SMauro Carvalho Chehab 82, 82, 81, 81, 80, 79, 79, 79, 1799d4fa1a1SMauro Carvalho Chehab 78, 77, 77, 76, 76, 76, 75, 74, 1809d4fa1a1SMauro Carvalho Chehab 74, 74, 73, 73, 72, 71, 71, 71, 1819d4fa1a1SMauro Carvalho Chehab 70, 70, 69, 69, 68, 68, 67, 67, 1829d4fa1a1SMauro Carvalho Chehab 67, 66, 66, 65, 65, 64, 64, 63, 1839d4fa1a1SMauro Carvalho Chehab 62, 62, 62, 61, 60, 60, 59, 59, 1849d4fa1a1SMauro Carvalho Chehab 58, 58, 57, 57, 56, 56, 56, 55, 1859d4fa1a1SMauro Carvalho Chehab 55, 54, 55, 55, 54, 53, 53, 52, 1869d4fa1a1SMauro Carvalho Chehab 53, 53, 52, 51, 51, 50, 51, 50, 1879d4fa1a1SMauro Carvalho Chehab 49, 49, 50, 49, 49, 48, 48, 47, 1889d4fa1a1SMauro Carvalho Chehab 47, 48, 46, 45, 45, 45, 46, 45, 1899d4fa1a1SMauro Carvalho Chehab 45, 44, 45, 45, 45, 43, 42, 42, 1909d4fa1a1SMauro Carvalho Chehab 41, 43, 41, 40, 40, 39, 40, 41, 1919d4fa1a1SMauro Carvalho Chehab 39, 39, 39, 39, 39, 38, 35, 35, 1929d4fa1a1SMauro Carvalho Chehab 34, 37, 36, 34, 33, 33, 33, 35, 1939d4fa1a1SMauro Carvalho Chehab 34, 32, 32, 31, 32, 30, 29, 26, 1949d4fa1a1SMauro Carvalho Chehab 25, 25, 27, 26, 23, 23, 23, 25, 1959d4fa1a1SMauro Carvalho Chehab 24, 24, 22, 21, 20, 19, 16, 14, 1969d4fa1a1SMauro Carvalho Chehab 13, 13, 13, 10, 9, 7, 7, 7, 1979d4fa1a1SMauro Carvalho Chehab 12, 12, 12, 7, 0, 0, 0, 0 1989d4fa1a1SMauro Carvalho Chehab }; 1999d4fa1a1SMauro Carvalho Chehab 2009d4fa1a1SMauro Carvalho Chehab #else 2019d4fa1a1SMauro Carvalho Chehab #error "VAMEM version must be one of {VAMEM_VERSION_1, VAMEM_VERSION_2}" 2029d4fa1a1SMauro Carvalho Chehab #endif 2039d4fa1a1SMauro Carvalho Chehab 2049d4fa1a1SMauro Carvalho Chehab void 2059d4fa1a1SMauro Carvalho Chehab ia_css_config_ctc_table(void) 2069d4fa1a1SMauro Carvalho Chehab { 2079d4fa1a1SMauro Carvalho Chehab #if defined(HAS_VAMEM_VERSION_2) 2089d4fa1a1SMauro Carvalho Chehab memcpy(default_ctc_table.data.vamem_2, default_ctc_table_data, 2099d4fa1a1SMauro Carvalho Chehab sizeof(default_ctc_table_data)); 2109d4fa1a1SMauro Carvalho Chehab default_ctc_table.vamem_type = IA_CSS_VAMEM_TYPE_2; 2119d4fa1a1SMauro Carvalho Chehab #else 2129d4fa1a1SMauro Carvalho Chehab memcpy(default_ctc_table.data.vamem_1, default_ctc_table_data, 2139d4fa1a1SMauro Carvalho Chehab sizeof(default_ctc_table_data)); 2149d4fa1a1SMauro Carvalho Chehab default_ctc_table.vamem_type = 1IA_CSS_VAMEM_TYPE_1; 2159d4fa1a1SMauro Carvalho Chehab #endif 2169d4fa1a1SMauro Carvalho Chehab } 217