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