GNU Linux-libre 4.14.266-gnu1
[releases.git] / drivers / staging / media / atomisp / pci / atomisp2 / css2400 / css_2401_system / hrt / isp_capture_defs.h
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 #ifndef _isp_capture_defs_h
16 #define _isp_capture_defs_h
17
18 #define _ISP_CAPTURE_REG_ALIGN                    4  /* assuming 32 bit control bus width */
19 #define _ISP_CAPTURE_BITS_PER_ELEM                32  /* only for data, not SOP */                                                         
20 #define _ISP_CAPTURE_BYTES_PER_ELEM               (_ISP_CAPTURE_BITS_PER_ELEM/8 )                                          
21 #define _ISP_CAPTURE_BYTES_PER_WORD               32            /* 256/8 */     
22 #define _ISP_CAPTURE_ELEM_PER_WORD                _ISP_CAPTURE_BYTES_PER_WORD / _ISP_CAPTURE_BYTES_PER_ELEM                        
23
24 //#define CAPT_RCV_ACK                              1
25 //#define CAPT_WRT_ACK                              2               
26 //#define CAPT_IRQ_ACK                              3                        
27
28 /* --------------------------------------------------*/
29
30 #define NOF_IRQS                                  2
31
32 /* --------------------------------------------------*/
33 /* REGISTER INFO */
34 /* --------------------------------------------------*/
35
36 // Number of registers
37 #define CAPT_NOF_REGS                             16
38
39 // Register id's of MMIO slave accesible registers
40 #define CAPT_START_MODE_REG_ID                    0
41 #define CAPT_START_ADDR_REG_ID                    1 
42 #define CAPT_MEM_REGION_SIZE_REG_ID               2 
43 #define CAPT_NUM_MEM_REGIONS_REG_ID               3 
44 #define CAPT_INIT_REG_ID                          4 
45 #define CAPT_START_REG_ID                         5
46 #define CAPT_STOP_REG_ID                          6  
47
48 #define CAPT_PACKET_LENGTH_REG_ID                 7
49 #define CAPT_RECEIVED_LENGTH_REG_ID               8 
50 #define CAPT_RECEIVED_SHORT_PACKETS_REG_ID        9 
51 #define CAPT_RECEIVED_LONG_PACKETS_REG_ID         10 
52 #define CAPT_LAST_COMMAND_REG_ID                  11        
53 #define CAPT_NEXT_COMMAND_REG_ID                  12
54 #define CAPT_LAST_ACKNOWLEDGE_REG_ID              13
55 #define CAPT_NEXT_ACKNOWLEDGE_REG_ID              14
56 #define CAPT_FSM_STATE_INFO_REG_ID                15
57
58 // Register width
59 #define CAPT_START_MODE_REG_WIDTH                 1 
60 //#define CAPT_START_ADDR_REG_WIDTH                 9
61 //#define CAPT_MEM_REGION_SIZE_REG_WIDTH            9
62 //#define CAPT_NUM_MEM_REGIONS_REG_WIDTH            9
63 #define CAPT_INIT_REG_WIDTH                       (22 + 4)
64
65 #define CAPT_START_REG_WIDTH                      1
66 #define CAPT_STOP_REG_WIDTH                       1
67
68 /* --------------------------------------------------*/
69 /* FSM */
70 /* --------------------------------------------------*/
71 #define CAPT_WRITE2MEM_FSM_STATE_BITS             2
72 #define CAPT_SYNCHRONIZER_FSM_STATE_BITS          3
73
74
75 #define CAPT_PACKET_LENGTH_REG_WIDTH              17
76 #define CAPT_RECEIVED_LENGTH_REG_WIDTH            17   
77 #define CAPT_RECEIVED_SHORT_PACKETS_REG_WIDTH     32
78 #define CAPT_RECEIVED_LONG_PACKETS_REG_WIDTH      32
79 #define CAPT_LAST_COMMAND_REG_WIDTH               32
80 /* #define CAPT_NEXT_COMMAND_REG_WIDTH               32 */  
81 #define CAPT_LAST_ACKNOWLEDGE_REG_WIDTH           32
82 #define CAPT_NEXT_ACKNOWLEDGE_REG_WIDTH           32
83 #define CAPT_FSM_STATE_INFO_REG_WIDTH             ((CAPT_WRITE2MEM_FSM_STATE_BITS * 3) + (CAPT_SYNCHRONIZER_FSM_STATE_BITS * 3))
84
85 //#define CAPT_INIT_RESTART_MEM_ADDR_WIDTH          9   
86 //#define CAPT_INIT_RESTART_MEM_REGION_WIDTH        9 
87
88 /* register reset value */
89 #define CAPT_START_MODE_REG_RSTVAL                0   
90 #define CAPT_START_ADDR_REG_RSTVAL                0
91 #define CAPT_MEM_REGION_SIZE_REG_RSTVAL           128
92 #define CAPT_NUM_MEM_REGIONS_REG_RSTVAL           3 
93 #define CAPT_INIT_REG_RSTVAL                      0
94
95 #define CAPT_START_REG_RSTVAL                     0
96 #define CAPT_STOP_REG_RSTVAL                      0
97
98 #define CAPT_PACKET_LENGTH_REG_RSTVAL             0
99 #define CAPT_RECEIVED_LENGTH_REG_RSTVAL           0
100 #define CAPT_RECEIVED_SHORT_PACKETS_REG_RSTVAL    0
101 #define CAPT_RECEIVED_LONG_PACKETS_REG_RSTVAL     0
102 #define CAPT_LAST_COMMAND_REG_RSTVAL              0
103 #define CAPT_NEXT_COMMAND_REG_RSTVAL              0
104 #define CAPT_LAST_ACKNOWLEDGE_REG_RSTVAL          0
105 #define CAPT_NEXT_ACKNOWLEDGE_REG_RSTVAL          0
106 #define CAPT_FSM_STATE_INFO_REG_RSTVAL            0
107
108 /* bit definitions */
109 #define CAPT_INIT_RST_REG_BIT                     0
110 #define CAPT_INIT_FLUSH_BIT                       1
111 #define CAPT_INIT_RESYNC_BIT                      2
112 #define CAPT_INIT_RESTART_BIT                     3
113 #define CAPT_INIT_RESTART_MEM_ADDR_LSB            4
114 #define CAPT_INIT_RESTART_MEM_ADDR_MSB            14
115 #define CAPT_INIT_RESTART_MEM_REGION_LSB          15
116 #define CAPT_INIT_RESTART_MEM_REGION_MSB          25
117
118
119 #define CAPT_INIT_RST_REG_IDX                     CAPT_INIT_RST_REG_BIT
120 #define CAPT_INIT_RST_REG_BITS                    1
121 #define CAPT_INIT_FLUSH_IDX                       CAPT_INIT_FLUSH_BIT
122 #define CAPT_INIT_FLUSH_BITS                      1
123 #define CAPT_INIT_RESYNC_IDX                      CAPT_INIT_RESYNC_BIT
124 #define CAPT_INIT_RESYNC_BITS                     1
125 #define CAPT_INIT_RESTART_IDX                     CAPT_INIT_RESTART_BIT
126 #define CAPT_INIT_RESTART_BITS                                                                  1
127 #define CAPT_INIT_RESTART_MEM_ADDR_IDX            CAPT_INIT_RESTART_MEM_ADDR_LSB
128 #define CAPT_INIT_RESTART_MEM_ADDR_BITS           (CAPT_INIT_RESTART_MEM_ADDR_MSB - CAPT_INIT_RESTART_MEM_ADDR_LSB + 1)
129 #define CAPT_INIT_RESTART_MEM_REGION_IDX          CAPT_INIT_RESTART_MEM_REGION_LSB
130 #define CAPT_INIT_RESTART_MEM_REGION_BITS         (CAPT_INIT_RESTART_MEM_REGION_MSB - CAPT_INIT_RESTART_MEM_REGION_LSB + 1)
131
132
133
134 /* --------------------------------------------------*/
135 /* TOKEN INFO */
136 /* --------------------------------------------------*/
137 #define CAPT_TOKEN_ID_LSB                         0
138 #define CAPT_TOKEN_ID_MSB                         3            
139 #define CAPT_TOKEN_WIDTH                         (CAPT_TOKEN_ID_MSB - CAPT_TOKEN_ID_LSB  + 1) /* 4 */
140
141 /* Command tokens IDs */
142 #define CAPT_START_TOKEN_ID                       0 /* 0000b */
143 #define CAPT_STOP_TOKEN_ID                        1 /* 0001b */
144 #define CAPT_FREEZE_TOKEN_ID                      2 /* 0010b */  
145 #define CAPT_RESUME_TOKEN_ID                      3 /* 0011b */
146 #define CAPT_INIT_TOKEN_ID                        8 /* 1000b */
147
148 #define CAPT_START_TOKEN_BIT                      0      
149 #define CAPT_STOP_TOKEN_BIT                       0
150 #define CAPT_FREEZE_TOKEN_BIT                     0
151 #define CAPT_RESUME_TOKEN_BIT                     0
152 #define CAPT_INIT_TOKEN_BIT                       0
153
154 /* Acknowledge token IDs */
155 #define CAPT_END_OF_PACKET_RECEIVED_TOKEN_ID      0 /* 0000b */
156 #define CAPT_END_OF_PACKET_WRITTEN_TOKEN_ID       1 /* 0001b */
157 #define CAPT_END_OF_REGION_WRITTEN_TOKEN_ID       2 /* 0010b */
158 #define CAPT_FLUSH_DONE_TOKEN_ID                  3 /* 0011b */
159 #define CAPT_PREMATURE_SOP_TOKEN_ID               4 /* 0100b */
160 #define CAPT_MISSING_SOP_TOKEN_ID                 5 /* 0101b */
161 #define CAPT_UNDEF_PH_TOKEN_ID                    6 /* 0110b */
162 #define CAPT_STOP_ACK_TOKEN_ID                    7 /* 0111b */
163
164 #define CAPT_PACKET_LENGTH_TOKEN_MSB             19
165 #define CAPT_PACKET_LENGTH_TOKEN_LSB              4
166 #define CAPT_SUPER_PACKET_LENGTH_TOKEN_MSB       20
167 #define CAPT_SUPER_PACKET_LENGTH_TOKEN_LSB        4
168 #define CAPT_PACKET_DATA_FORMAT_ID_TOKEN_MSB     25
169 #define CAPT_PACKET_DATA_FORMAT_ID_TOKEN_LSB     20
170 #define CAPT_PACKET_CH_ID_TOKEN_MSB              27
171 #define CAPT_PACKET_CH_ID_TOKEN_LSB              26
172 #define CAPT_PACKET_MEM_REGION_ID_TOKEN_MSB      29             
173 #define CAPT_PACKET_MEM_REGION_ID_TOKEN_LSB      21             
174
175 /*  bit definition */
176 #define CAPT_CMD_IDX                              CAPT_TOKEN_ID_LSB
177 #define CAPT_CMD_BITS                             (CAPT_TOKEN_ID_MSB - CAPT_TOKEN_ID_LSB + 1)
178 #define CAPT_SOP_IDX                              32
179 #define CAPT_SOP_BITS                             1
180 #define CAPT_PKT_INFO_IDX                         16
181 #define CAPT_PKT_INFO_BITS                        8
182 #define CAPT_PKT_TYPE_IDX                         0
183 #define CAPT_PKT_TYPE_BITS                        6
184 #define CAPT_HEADER_DATA_IDX                      0
185 #define CAPT_HEADER_DATA_BITS                     16
186 #define CAPT_PKT_DATA_IDX                         0
187 #define CAPT_PKT_DATA_BITS                        32
188 #define CAPT_WORD_CNT_IDX                         0
189 #define CAPT_WORD_CNT_BITS                        16
190 #define CAPT_ACK_TOKEN_ID_IDX                     0
191 #define CAPT_ACK_TOKEN_ID_BITS                    4
192 //#define CAPT_ACK_PKT_LEN_IDX                      CAPT_PACKET_LENGTH_TOKEN_LSB
193 //#define CAPT_ACK_PKT_LEN_BITS                     (CAPT_PACKET_LENGTH_TOKEN_MSB - CAPT_PACKET_LENGTH_TOKEN_LSB + 1)
194 //#define CAPT_ACK_PKT_INFO_IDX                     20
195 //#define CAPT_ACK_PKT_INFO_BITS                    8
196 //#define CAPT_ACK_MEM_REG_ID1_IDX                  20                  /* for capt_end_of_packet_written */
197 //#define CAPT_ACK_MEM_REG_ID2_IDX                  4       /* for capt_end_of_region_written */
198 #define CAPT_ACK_PKT_LEN_IDX                      CAPT_PACKET_LENGTH_TOKEN_LSB
199 #define CAPT_ACK_PKT_LEN_BITS                     (CAPT_PACKET_LENGTH_TOKEN_MSB - CAPT_PACKET_LENGTH_TOKEN_LSB + 1)
200 #define CAPT_ACK_SUPER_PKT_LEN_IDX                CAPT_SUPER_PACKET_LENGTH_TOKEN_LSB
201 #define CAPT_ACK_SUPER_PKT_LEN_BITS               (CAPT_SUPER_PACKET_LENGTH_TOKEN_MSB - CAPT_SUPER_PACKET_LENGTH_TOKEN_LSB + 1)
202 #define CAPT_ACK_PKT_INFO_IDX                     CAPT_PACKET_DATA_FORMAT_ID_TOKEN_LSB
203 #define CAPT_ACK_PKT_INFO_BITS                    (CAPT_PACKET_CH_ID_TOKEN_MSB - CAPT_PACKET_DATA_FORMAT_ID_TOKEN_LSB + 1)
204 #define CAPT_ACK_MEM_REGION_ID_IDX                CAPT_PACKET_MEM_REGION_ID_TOKEN_LSB
205 #define CAPT_ACK_MEM_REGION_ID_BITS               (CAPT_PACKET_MEM_REGION_ID_TOKEN_MSB - CAPT_PACKET_MEM_REGION_ID_TOKEN_LSB + 1)
206 #define CAPT_ACK_PKT_TYPE_IDX                     CAPT_PACKET_DATA_FORMAT_ID_TOKEN_LSB
207 #define CAPT_ACK_PKT_TYPE_BITS                    (CAPT_PACKET_DATA_FORMAT_ID_TOKEN_MSB - CAPT_PACKET_DATA_FORMAT_ID_TOKEN_LSB + 1)
208 #define CAPT_INIT_TOKEN_INIT_IDX                  4
209 #define CAPT_INIT_TOKEN_INIT_BITS                 22
210
211
212 /* --------------------------------------------------*/
213 /* MIPI */
214 /* --------------------------------------------------*/
215
216 #define CAPT_WORD_COUNT_WIDTH                     16      
217 #define CAPT_PKT_CODE_WIDTH                       6                  
218 #define CAPT_CHN_NO_WIDTH                         2        
219 #define CAPT_ERROR_INFO_WIDTH                     8       
220
221 #define LONG_PKTCODE_MAX                          63
222 #define LONG_PKTCODE_MIN                          16
223 #define SHORT_PKTCODE_MAX                         15
224
225
226 /* --------------------------------------------------*/
227 /* Packet Info */
228 /* --------------------------------------------------*/
229 #define CAPT_START_OF_FRAME                       0
230 #define CAPT_END_OF_FRAME                         1
231 #define CAPT_START_OF_LINE                        2
232 #define CAPT_END_OF_LINE                          3
233 #define CAPT_LINE_PAYLOAD                         4
234 #define CAPT_GEN_SH_PKT                           5
235
236
237 /* --------------------------------------------------*/
238 /* Packet Data Type */
239 /* --------------------------------------------------*/
240
241 #define CAPT_YUV420_8_DATA                       24   /* 01 1000 YUV420 8-bit                                        */
242 #define CAPT_YUV420_10_DATA                      25   /* 01 1001  YUV420 10-bit                                      */
243 #define CAPT_YUV420_8L_DATA                      26   /* 01 1010   YUV420 8-bit legacy                               */
244 #define CAPT_YUV422_8_DATA                       30   /* 01 1110   YUV422 8-bit                                      */
245 #define CAPT_YUV422_10_DATA                      31   /* 01 1111   YUV422 10-bit                                     */
246 #define CAPT_RGB444_DATA                         32   /* 10 0000   RGB444                                            */
247 #define CAPT_RGB555_DATA                                                 33   /* 10 0001   RGB555                                            */
248 #define CAPT_RGB565_DATA                                                 34   /* 10 0010   RGB565                                            */
249 #define CAPT_RGB666_DATA                                                 35   /* 10 0011   RGB666                                            */
250 #define CAPT_RGB888_DATA                                                 36   /* 10 0100   RGB888                                            */
251 #define CAPT_RAW6_DATA                                                   40   /* 10 1000   RAW6                                              */
252 #define CAPT_RAW7_DATA                                                   41   /* 10 1001   RAW7                                              */
253 #define CAPT_RAW8_DATA                                                   42   /* 10 1010   RAW8                                              */
254 #define CAPT_RAW10_DATA                                                  43   /* 10 1011   RAW10                                             */
255 #define CAPT_RAW12_DATA                                                  44   /* 10 1100   RAW12                                             */
256 #define CAPT_RAW14_DATA                                                  45   /* 10 1101   RAW14                                             */
257 #define CAPT_USR_DEF_1_DATA                                              48   /* 11 0000    JPEG [User Defined 8-bit Data Type 1]            */
258 #define CAPT_USR_DEF_2_DATA                                              49   /* 11 0001    User Defined 8-bit Data Type 2                   */
259 #define CAPT_USR_DEF_3_DATA                                              50   /* 11 0010    User Defined 8-bit Data Type 3                   */
260 #define CAPT_USR_DEF_4_DATA                                              51   /* 11 0011    User Defined 8-bit Data Type 4                   */
261 #define CAPT_USR_DEF_5_DATA                                              52   /* 11 0100    User Defined 8-bit Data Type 5                   */
262 #define CAPT_USR_DEF_6_DATA                                              53   /* 11 0101    User Defined 8-bit Data Type 6                   */
263 #define CAPT_USR_DEF_7_DATA                                              54   /* 11 0110    User Defined 8-bit Data Type 7                   */
264 #define CAPT_USR_DEF_8_DATA                                              55   /* 11 0111    User Defined 8-bit Data Type 8                   */
265 #define CAPT_Emb_DATA                                                    18   /* 01 0010    embedded eight bit non image data                */
266 #define CAPT_SOF_DATA                                                    0   /* 00 0000    frame start                                      */
267 #define CAPT_EOF_DATA                                                    1   /* 00 0001    frame end                                        */
268 #define CAPT_SOL_DATA                                                    2   /* 00 0010    line start                                       */
269 #define CAPT_EOL_DATA                                                    3   /* 00 0011    line end                                         */
270 #define CAPT_GEN_SH1_DATA                                                8   /* 00 1000  Generic Short Packet Code 1                        */
271 #define CAPT_GEN_SH2_DATA                                                9   /* 00 1001    Generic Short Packet Code 2                      */
272 #define CAPT_GEN_SH3_DATA                                                10   /* 00 1010    Generic Short Packet Code 3                      */
273 #define CAPT_GEN_SH4_DATA                                                11   /* 00 1011    Generic Short Packet Code 4                      */
274 #define CAPT_GEN_SH5_DATA                                                12   /* 00 1100    Generic Short Packet Code 5                      */
275 #define CAPT_GEN_SH6_DATA                                                13   /* 00 1101    Generic Short Packet Code 6                      */
276 #define CAPT_GEN_SH7_DATA                                                14   /* 00 1110    Generic Short Packet Code 7                      */
277 #define CAPT_GEN_SH8_DATA                                                15   /* 00 1111    Generic Short Packet Code 8                      */
278 #define CAPT_YUV420_8_CSPS_DATA                                          28   /* 01 1100   YUV420 8-bit (Chroma Shifted Pixel Sampling)      */
279 #define CAPT_YUV420_10_CSPS_DATA                                         29   /* 01 1101   YUV420 10-bit (Chroma Shifted Pixel Sampling)     */
280 #define CAPT_RESERVED_DATA_TYPE_MIN              56
281 #define CAPT_RESERVED_DATA_TYPE_MAX              63
282 #define CAPT_GEN_LONG_RESERVED_DATA_TYPE_MIN     19
283 #define CAPT_GEN_LONG_RESERVED_DATA_TYPE_MAX     23
284 #define CAPT_YUV_RESERVED_DATA_TYPE              27
285 #define CAPT_RGB_RESERVED_DATA_TYPE_MIN          37
286 #define CAPT_RGB_RESERVED_DATA_TYPE_MAX          39
287 #define CAPT_RAW_RESERVED_DATA_TYPE_MIN          46
288 #define CAPT_RAW_RESERVED_DATA_TYPE_MAX          47
289
290
291 /* --------------------------------------------------*/
292 /* Capture Unit State */
293 /* --------------------------------------------------*/
294 #define CAPT_FREE_RUN                             0
295 #define CAPT_NO_SYNC                              1
296 #define CAPT_SYNC_SWP                             2
297 #define CAPT_SYNC_MWP                             3
298 #define CAPT_SYNC_WAIT                            4
299 #define CAPT_FREEZE                               5
300 #define CAPT_RUN                                  6
301
302
303 /* --------------------------------------------------*/
304
305 #endif /* _isp_capture_defs_h */ 
306
307
308
309
310