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_gc_table.host.h" 23 24 #if defined(HAS_VAMEM_VERSION_2) 25 26 struct ia_css_gamma_table default_gamma_table; 27 28 static const uint16_t 29 default_gamma_table_data[IA_CSS_VAMEM_2_GAMMA_TABLE_SIZE] = { 30 0, 4, 8, 12, 17, 21, 27, 32, 31 38, 44, 49, 55, 61, 66, 71, 76, 32 80, 84, 88, 92, 95, 98, 102, 105, 33 108, 110, 113, 116, 118, 121, 123, 126, 34 128, 130, 132, 135, 137, 139, 141, 143, 35 145, 146, 148, 150, 152, 153, 155, 156, 36 158, 160, 161, 162, 164, 165, 166, 168, 37 169, 170, 171, 172, 174, 175, 176, 177, 38 178, 179, 180, 181, 182, 183, 184, 184, 39 185, 186, 187, 188, 189, 189, 190, 191, 40 192, 192, 193, 194, 195, 195, 196, 197, 41 197, 198, 198, 199, 200, 200, 201, 201, 42 202, 203, 203, 204, 204, 205, 205, 206, 43 206, 207, 207, 208, 208, 209, 209, 210, 44 210, 210, 211, 211, 212, 212, 213, 213, 45 214, 214, 214, 215, 215, 216, 216, 216, 46 217, 217, 218, 218, 218, 219, 219, 220, 47 220, 220, 221, 221, 222, 222, 222, 223, 48 223, 223, 224, 224, 225, 225, 225, 226, 49 226, 226, 227, 227, 227, 228, 228, 228, 50 229, 229, 229, 230, 230, 230, 231, 231, 51 231, 232, 232, 232, 233, 233, 233, 234, 52 234, 234, 234, 235, 235, 235, 236, 236, 53 236, 237, 237, 237, 237, 238, 238, 238, 54 239, 239, 239, 239, 240, 240, 240, 241, 55 241, 241, 241, 242, 242, 242, 242, 243, 56 243, 243, 243, 244, 244, 244, 245, 245, 57 245, 245, 246, 246, 246, 246, 247, 247, 58 247, 247, 248, 248, 248, 248, 249, 249, 59 249, 249, 250, 250, 250, 250, 251, 251, 60 251, 251, 252, 252, 252, 252, 253, 253, 61 253, 253, 254, 254, 254, 254, 255, 255, 62 255 63 }; 64 65 #elif defined(HAS_VAMEM_VERSION_1) 66 67 static const uint16_t 68 default_gamma_table_data[IA_CSS_VAMEM_1_GAMMA_TABLE_SIZE] = { 69 0, 1, 2, 3, 4, 5, 6, 7, 70 8, 9, 10, 11, 12, 13, 14, 16, 71 17, 18, 19, 20, 21, 23, 24, 25, 72 27, 28, 29, 31, 32, 33, 35, 36, 73 38, 39, 41, 42, 44, 45, 47, 48, 74 49, 51, 52, 54, 55, 57, 58, 60, 75 61, 62, 64, 65, 66, 68, 69, 70, 76 71, 72, 74, 75, 76, 77, 78, 79, 77 80, 81, 82, 83, 84, 85, 86, 87, 78 88, 89, 90, 91, 92, 93, 93, 94, 79 95, 96, 97, 98, 98, 99, 100, 101, 80 102, 102, 103, 104, 105, 105, 106, 107, 81 108, 108, 109, 110, 110, 111, 112, 112, 82 113, 114, 114, 115, 116, 116, 117, 118, 83 118, 119, 120, 120, 121, 121, 122, 123, 84 123, 124, 125, 125, 126, 126, 127, 127, /* 128 */ 85 128, 129, 129, 130, 130, 131, 131, 132, 86 132, 133, 134, 134, 135, 135, 136, 136, 87 137, 137, 138, 138, 139, 139, 140, 140, 88 141, 141, 142, 142, 143, 143, 144, 144, 89 145, 145, 145, 146, 146, 147, 147, 148, 90 148, 149, 149, 150, 150, 150, 151, 151, 91 152, 152, 152, 153, 153, 154, 154, 155, 92 155, 155, 156, 156, 156, 157, 157, 158, 93 158, 158, 159, 159, 160, 160, 160, 161, 94 161, 161, 162, 162, 162, 163, 163, 163, 95 164, 164, 164, 165, 165, 165, 166, 166, 96 166, 167, 167, 167, 168, 168, 168, 169, 97 169, 169, 170, 170, 170, 170, 171, 171, 98 171, 172, 172, 172, 172, 173, 173, 173, 99 174, 174, 174, 174, 175, 175, 175, 176, 100 176, 176, 176, 177, 177, 177, 177, 178, /* 256 */ 101 178, 178, 178, 179, 179, 179, 179, 180, 102 180, 180, 180, 181, 181, 181, 181, 182, 103 182, 182, 182, 182, 183, 183, 183, 183, 104 184, 184, 184, 184, 184, 185, 185, 185, 105 185, 186, 186, 186, 186, 186, 187, 187, 106 187, 187, 187, 188, 188, 188, 188, 188, 107 189, 189, 189, 189, 189, 190, 190, 190, 108 190, 190, 191, 191, 191, 191, 191, 192, 109 192, 192, 192, 192, 192, 193, 193, 193, 110 193, 193, 194, 194, 194, 194, 194, 194, 111 195, 195, 195, 195, 195, 195, 196, 196, 112 196, 196, 196, 196, 197, 197, 197, 197, 113 197, 197, 198, 198, 198, 198, 198, 198, 114 198, 199, 199, 199, 199, 199, 199, 200, 115 200, 200, 200, 200, 200, 200, 201, 201, 116 201, 201, 201, 201, 201, 202, 202, 202, /* 384 */ 117 202, 202, 202, 202, 203, 203, 203, 203, 118 203, 203, 203, 204, 204, 204, 204, 204, 119 204, 204, 204, 205, 205, 205, 205, 205, 120 205, 205, 205, 206, 206, 206, 206, 206, 121 206, 206, 206, 207, 207, 207, 207, 207, 122 207, 207, 207, 208, 208, 208, 208, 208, 123 208, 208, 208, 209, 209, 209, 209, 209, 124 209, 209, 209, 209, 210, 210, 210, 210, 125 210, 210, 210, 210, 210, 211, 211, 211, 126 211, 211, 211, 211, 211, 211, 212, 212, 127 212, 212, 212, 212, 212, 212, 212, 213, 128 213, 213, 213, 213, 213, 213, 213, 213, 129 214, 214, 214, 214, 214, 214, 214, 214, 130 214, 214, 215, 215, 215, 215, 215, 215, 131 215, 215, 215, 216, 216, 216, 216, 216, 132 216, 216, 216, 216, 216, 217, 217, 217, /* 512 */ 133 217, 217, 217, 217, 217, 217, 217, 218, 134 218, 218, 218, 218, 218, 218, 218, 218, 135 218, 219, 219, 219, 219, 219, 219, 219, 136 219, 219, 219, 220, 220, 220, 220, 220, 137 220, 220, 220, 220, 220, 221, 221, 221, 138 221, 221, 221, 221, 221, 221, 221, 221, 139 222, 222, 222, 222, 222, 222, 222, 222, 140 222, 222, 223, 223, 223, 223, 223, 223, 141 223, 223, 223, 223, 223, 224, 224, 224, 142 224, 224, 224, 224, 224, 224, 224, 224, 143 225, 225, 225, 225, 225, 225, 225, 225, 144 225, 225, 225, 226, 226, 226, 226, 226, 145 226, 226, 226, 226, 226, 226, 226, 227, 146 227, 227, 227, 227, 227, 227, 227, 227, 147 227, 227, 228, 228, 228, 228, 228, 228, 148 228, 228, 228, 228, 228, 228, 229, 229, 149 229, 229, 229, 229, 229, 229, 229, 229, 150 229, 229, 230, 230, 230, 230, 230, 230, 151 230, 230, 230, 230, 230, 230, 231, 231, 152 231, 231, 231, 231, 231, 231, 231, 231, 153 231, 231, 231, 232, 232, 232, 232, 232, 154 232, 232, 232, 232, 232, 232, 232, 233, 155 233, 233, 233, 233, 233, 233, 233, 233, 156 233, 233, 233, 233, 234, 234, 234, 234, 157 234, 234, 234, 234, 234, 234, 234, 234, 158 234, 235, 235, 235, 235, 235, 235, 235, 159 235, 235, 235, 235, 235, 235, 236, 236, 160 236, 236, 236, 236, 236, 236, 236, 236, 161 236, 236, 236, 236, 237, 237, 237, 237, 162 237, 237, 237, 237, 237, 237, 237, 237, 163 237, 237, 238, 238, 238, 238, 238, 238, 164 238, 238, 238, 238, 238, 238, 238, 238, 165 239, 239, 239, 239, 239, 239, 239, 239, 166 239, 239, 239, 239, 239, 239, 240, 240, 167 240, 240, 240, 240, 240, 240, 240, 240, 168 240, 240, 240, 240, 241, 241, 241, 241, 169 241, 241, 241, 241, 241, 241, 241, 241, 170 241, 241, 241, 242, 242, 242, 242, 242, 171 242, 242, 242, 242, 242, 242, 242, 242, 172 242, 242, 243, 243, 243, 243, 243, 243, 173 243, 243, 243, 243, 243, 243, 243, 243, 174 243, 244, 244, 244, 244, 244, 244, 244, 175 244, 244, 244, 244, 244, 244, 244, 244, 176 245, 245, 245, 245, 245, 245, 245, 245, 177 245, 245, 245, 245, 245, 245, 245, 246, 178 246, 246, 246, 246, 246, 246, 246, 246, 179 246, 246, 246, 246, 246, 246, 246, 247, 180 247, 247, 247, 247, 247, 247, 247, 247, 181 247, 247, 247, 247, 247, 247, 247, 248, 182 248, 248, 248, 248, 248, 248, 248, 248, 183 248, 248, 248, 248, 248, 248, 248, 249, 184 249, 249, 249, 249, 249, 249, 249, 249, 185 249, 249, 249, 249, 249, 249, 249, 250, 186 250, 250, 250, 250, 250, 250, 250, 250, 187 250, 250, 250, 250, 250, 250, 250, 251, 188 251, 251, 251, 251, 251, 251, 251, 251, 189 251, 251, 251, 251, 251, 251, 251, 252, 190 252, 252, 252, 252, 252, 252, 252, 252, 191 252, 252, 252, 252, 252, 252, 252, 253, 192 253, 253, 253, 253, 253, 253, 253, 253, 193 253, 253, 253, 253, 253, 253, 253, 253, 194 254, 254, 254, 254, 254, 254, 254, 254, 195 254, 254, 254, 254, 254, 254, 254, 254, 196 255, 255, 255, 255, 255, 255, 255, 255 197 }; 198 199 #else 200 #error "VAMEM version must be one of {VAMEM_VERSION_1, VAMEM_VERSION_2}" 201 #endif 202 203 void 204 ia_css_config_gamma_table(void) 205 { 206 #if defined(HAS_VAMEM_VERSION_2) 207 memcpy(default_gamma_table.data.vamem_2, default_gamma_table_data, 208 sizeof(default_gamma_table_data)); 209 default_gamma_table.vamem_type = IA_CSS_VAMEM_TYPE_2; 210 #else 211 memcpy(default_gamma_table.data.vamem_1, default_gamma_table_data, 212 sizeof(default_gamma_table_data)); 213 default_gamma_table.vamem_type = IA_CSS_VAMEM_TYPE_1; 214 #endif 215 } 216