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_gc2_table.host.h" 219d4fa1a1SMauro Carvalho Chehab 229d4fa1a1SMauro Carvalho Chehab struct ia_css_rgb_gamma_table default_r_gamma_table; 239d4fa1a1SMauro Carvalho Chehab struct ia_css_rgb_gamma_table default_g_gamma_table; 249d4fa1a1SMauro Carvalho Chehab struct ia_css_rgb_gamma_table default_b_gamma_table; 259d4fa1a1SMauro Carvalho Chehab 269d4fa1a1SMauro Carvalho Chehab /* Identical default gamma table for R, G, and B. */ 279d4fa1a1SMauro Carvalho Chehab 289d4fa1a1SMauro Carvalho Chehab #if defined(HAS_VAMEM_VERSION_2) 299d4fa1a1SMauro Carvalho Chehab 309d4fa1a1SMauro Carvalho Chehab static const uint16_t 319d4fa1a1SMauro Carvalho Chehab default_gamma_table_data[IA_CSS_VAMEM_2_RGB_GAMMA_TABLE_SIZE] = { 329d4fa1a1SMauro Carvalho Chehab 0, 72, 144, 216, 288, 360, 426, 486, 339d4fa1a1SMauro Carvalho Chehab 541, 592, 641, 687, 730, 772, 812, 850, 349d4fa1a1SMauro Carvalho Chehab 887, 923, 958, 991, 1024, 1055, 1086, 1117, 359d4fa1a1SMauro Carvalho Chehab 1146, 1175, 1203, 1230, 1257, 1284, 1310, 1335, 369d4fa1a1SMauro Carvalho Chehab 1360, 1385, 1409, 1433, 1457, 1480, 1502, 1525, 379d4fa1a1SMauro Carvalho Chehab 1547, 1569, 1590, 1612, 1632, 1653, 1674, 1694, 389d4fa1a1SMauro Carvalho Chehab 1714, 1734, 1753, 1772, 1792, 1811, 1829, 1848, 399d4fa1a1SMauro Carvalho Chehab 1866, 1884, 1902, 1920, 1938, 1955, 1973, 1990, 409d4fa1a1SMauro Carvalho Chehab 2007, 2024, 2040, 2057, 2074, 2090, 2106, 2122, 419d4fa1a1SMauro Carvalho Chehab 2138, 2154, 2170, 2185, 2201, 2216, 2231, 2247, 429d4fa1a1SMauro Carvalho Chehab 2262, 2277, 2291, 2306, 2321, 2335, 2350, 2364, 439d4fa1a1SMauro Carvalho Chehab 2378, 2393, 2407, 2421, 2435, 2449, 2462, 2476, 449d4fa1a1SMauro Carvalho Chehab 2490, 2503, 2517, 2530, 2543, 2557, 2570, 2583, 459d4fa1a1SMauro Carvalho Chehab 2596, 2609, 2622, 2634, 2647, 2660, 2673, 2685, 469d4fa1a1SMauro Carvalho Chehab 2698, 2710, 2722, 2735, 2747, 2759, 2771, 2783, 479d4fa1a1SMauro Carvalho Chehab 2795, 2807, 2819, 2831, 2843, 2855, 2867, 2878, 489d4fa1a1SMauro Carvalho Chehab 2890, 2901, 2913, 2924, 2936, 2947, 2958, 2970, 499d4fa1a1SMauro Carvalho Chehab 2981, 2992, 3003, 3014, 3025, 3036, 3047, 3058, 509d4fa1a1SMauro Carvalho Chehab 3069, 3080, 3091, 3102, 3112, 3123, 3134, 3144, 519d4fa1a1SMauro Carvalho Chehab 3155, 3165, 3176, 3186, 3197, 3207, 3217, 3228, 529d4fa1a1SMauro Carvalho Chehab 3238, 3248, 3258, 3268, 3279, 3289, 3299, 3309, 539d4fa1a1SMauro Carvalho Chehab 3319, 3329, 3339, 3349, 3358, 3368, 3378, 3388, 549d4fa1a1SMauro Carvalho Chehab 3398, 3407, 3417, 3427, 3436, 3446, 3455, 3465, 559d4fa1a1SMauro Carvalho Chehab 3474, 3484, 3493, 3503, 3512, 3521, 3531, 3540, 569d4fa1a1SMauro Carvalho Chehab 3549, 3559, 3568, 3577, 3586, 3595, 3605, 3614, 579d4fa1a1SMauro Carvalho Chehab 3623, 3632, 3641, 3650, 3659, 3668, 3677, 3686, 589d4fa1a1SMauro Carvalho Chehab 3694, 3703, 3712, 3721, 3730, 3739, 3747, 3756, 599d4fa1a1SMauro Carvalho Chehab 3765, 3773, 3782, 3791, 3799, 3808, 3816, 3825, 609d4fa1a1SMauro Carvalho Chehab 3833, 3842, 3850, 3859, 3867, 3876, 3884, 3893, 619d4fa1a1SMauro Carvalho Chehab 3901, 3909, 3918, 3926, 3934, 3942, 3951, 3959, 629d4fa1a1SMauro Carvalho Chehab 3967, 3975, 3984, 3992, 4000, 4008, 4016, 4024, 639d4fa1a1SMauro Carvalho Chehab 4032, 4040, 4048, 4056, 4064, 4072, 4080, 4088, 649d4fa1a1SMauro Carvalho Chehab 4095 659d4fa1a1SMauro Carvalho Chehab }; 669d4fa1a1SMauro Carvalho Chehab #elif defined(HAS_VAMEM_VERSION_1) 679d4fa1a1SMauro Carvalho Chehab 689d4fa1a1SMauro Carvalho Chehab static const uint16_t 699d4fa1a1SMauro Carvalho Chehab default_gamma_table_data[IA_CSS_VAMEM_1_RGB_GAMMA_TABLE_SIZE] = { 709d4fa1a1SMauro Carvalho Chehab 0, 72, 144, 216, 288, 360, 426, 486, 719d4fa1a1SMauro Carvalho Chehab 541, 592, 641, 687, 730, 772, 812, 850, 729d4fa1a1SMauro Carvalho Chehab 887, 923, 958, 991, 1024, 1055, 1086, 1117, 739d4fa1a1SMauro Carvalho Chehab 1146, 1175, 1203, 1230, 1257, 1284, 1310, 1335, 749d4fa1a1SMauro Carvalho Chehab 1360, 1385, 1409, 1433, 1457, 1480, 1502, 1525, 759d4fa1a1SMauro Carvalho Chehab 1547, 1569, 1590, 1612, 1632, 1653, 1674, 1694, 769d4fa1a1SMauro Carvalho Chehab 1714, 1734, 1753, 1772, 1792, 1811, 1829, 1848, 779d4fa1a1SMauro Carvalho Chehab 1866, 1884, 1902, 1920, 1938, 1955, 1973, 1990, 789d4fa1a1SMauro Carvalho Chehab 2007, 2024, 2040, 2057, 2074, 2090, 2106, 2122, 799d4fa1a1SMauro Carvalho Chehab 2138, 2154, 2170, 2185, 2201, 2216, 2231, 2247, 809d4fa1a1SMauro Carvalho Chehab 2262, 2277, 2291, 2306, 2321, 2335, 2350, 2364, 819d4fa1a1SMauro Carvalho Chehab 2378, 2393, 2407, 2421, 2435, 2449, 2462, 2476, 829d4fa1a1SMauro Carvalho Chehab 2490, 2503, 2517, 2530, 2543, 2557, 2570, 2583, 839d4fa1a1SMauro Carvalho Chehab 2596, 2609, 2622, 2634, 2647, 2660, 2673, 2685, 849d4fa1a1SMauro Carvalho Chehab 2698, 2710, 2722, 2735, 2747, 2759, 2771, 2783, 859d4fa1a1SMauro Carvalho Chehab 2795, 2807, 2819, 2831, 2843, 2855, 2867, 2878, 869d4fa1a1SMauro Carvalho Chehab 2890, 2901, 2913, 2924, 2936, 2947, 2958, 2970, 879d4fa1a1SMauro Carvalho Chehab 2981, 2992, 3003, 3014, 3025, 3036, 3047, 3058, 889d4fa1a1SMauro Carvalho Chehab 3069, 3080, 3091, 3102, 3112, 3123, 3134, 3144, 899d4fa1a1SMauro Carvalho Chehab 3155, 3165, 3176, 3186, 3197, 3207, 3217, 3228, 909d4fa1a1SMauro Carvalho Chehab 3238, 3248, 3258, 3268, 3279, 3289, 3299, 3309, 919d4fa1a1SMauro Carvalho Chehab 3319, 3329, 3339, 3349, 3358, 3368, 3378, 3388, 929d4fa1a1SMauro Carvalho Chehab 3398, 3407, 3417, 3427, 3436, 3446, 3455, 3465, 939d4fa1a1SMauro Carvalho Chehab 3474, 3484, 3493, 3503, 3512, 3521, 3531, 3540, 949d4fa1a1SMauro Carvalho Chehab 3549, 3559, 3568, 3577, 3586, 3595, 3605, 3614, 959d4fa1a1SMauro Carvalho Chehab 3623, 3632, 3641, 3650, 3659, 3668, 3677, 3686, 969d4fa1a1SMauro Carvalho Chehab 3694, 3703, 3712, 3721, 3730, 3739, 3747, 3756, 979d4fa1a1SMauro Carvalho Chehab 3765, 3773, 3782, 3791, 3799, 3808, 3816, 3825, 989d4fa1a1SMauro Carvalho Chehab 3833, 3842, 3850, 3859, 3867, 3876, 3884, 3893, 999d4fa1a1SMauro Carvalho Chehab 3901, 3909, 3918, 3926, 3934, 3942, 3951, 3959, 1009d4fa1a1SMauro Carvalho Chehab 3967, 3975, 3984, 3992, 4000, 4008, 4016, 4024, 1019d4fa1a1SMauro Carvalho Chehab 4032, 4040, 4048, 4056, 4064, 4072, 4080, 4088 1029d4fa1a1SMauro Carvalho Chehab }; 1039d4fa1a1SMauro Carvalho Chehab #else 1049d4fa1a1SMauro Carvalho Chehab #error "VAMEM version must be one of {VAMEM_VERSION_1, VAMEM_VERSION_2}" 1059d4fa1a1SMauro Carvalho Chehab #endif 1069d4fa1a1SMauro Carvalho Chehab 1079d4fa1a1SMauro Carvalho Chehab void 1089d4fa1a1SMauro Carvalho Chehab ia_css_config_rgb_gamma_tables(void) 1099d4fa1a1SMauro Carvalho Chehab { 1109d4fa1a1SMauro Carvalho Chehab #if defined(HAS_VAMEM_VERSION_2) 1119d4fa1a1SMauro Carvalho Chehab default_r_gamma_table.vamem_type = IA_CSS_VAMEM_TYPE_2; 1129d4fa1a1SMauro Carvalho Chehab default_g_gamma_table.vamem_type = IA_CSS_VAMEM_TYPE_2; 1139d4fa1a1SMauro Carvalho Chehab default_b_gamma_table.vamem_type = IA_CSS_VAMEM_TYPE_2; 1149d4fa1a1SMauro Carvalho Chehab memcpy(default_r_gamma_table.data.vamem_2, default_gamma_table_data, 1159d4fa1a1SMauro Carvalho Chehab sizeof(default_gamma_table_data)); 1169d4fa1a1SMauro Carvalho Chehab memcpy(default_g_gamma_table.data.vamem_2, default_gamma_table_data, 1179d4fa1a1SMauro Carvalho Chehab sizeof(default_gamma_table_data)); 1189d4fa1a1SMauro Carvalho Chehab memcpy(default_b_gamma_table.data.vamem_2, default_gamma_table_data, 1199d4fa1a1SMauro Carvalho Chehab sizeof(default_gamma_table_data)); 1209d4fa1a1SMauro Carvalho Chehab #else 1219d4fa1a1SMauro Carvalho Chehab memcpy(default_r_gamma_table.data.vamem_1, default_gamma_table_data, 1229d4fa1a1SMauro Carvalho Chehab sizeof(default_gamma_table_data)); 1239d4fa1a1SMauro Carvalho Chehab memcpy(default_g_gamma_table.data.vamem_1, default_gamma_table_data, 1249d4fa1a1SMauro Carvalho Chehab sizeof(default_gamma_table_data)); 1259d4fa1a1SMauro Carvalho Chehab memcpy(default_b_gamma_table.data.vamem_1, default_gamma_table_data, 1269d4fa1a1SMauro Carvalho Chehab sizeof(default_gamma_table_data)); 1279d4fa1a1SMauro Carvalho Chehab default_r_gamma_table.vamem_type = IA_CSS_VAMEM_TYPE_1; 1289d4fa1a1SMauro Carvalho Chehab default_g_gamma_table.vamem_type = IA_CSS_VAMEM_TYPE_1; 1299d4fa1a1SMauro Carvalho Chehab default_b_gamma_table.vamem_type = IA_CSS_VAMEM_TYPE_1; 1309d4fa1a1SMauro Carvalho Chehab #endif 1319d4fa1a1SMauro Carvalho Chehab } 132