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