2 * Support for Intel Camera Imaging ISP subsystem.
3 * Copyright (c) 2015, Intel Corporation.
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.
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
15 #ifndef _isp_acquisition_defs_h
16 #define _isp_acquisition_defs_h
18 #define _ISP_ACQUISITION_REG_ALIGN 4 /* assuming 32 bit control bus width */
19 #define _ISP_ACQUISITION_BYTES_PER_ELEM 4
21 /* --------------------------------------------------*/
23 #define NOF_ACQ_IRQS 1
25 /* --------------------------------------------------*/
27 /* --------------------------------------------------*/
28 #define MEM2STREAM_FSM_STATE_BITS 2
29 #define ACQ_SYNCHRONIZER_FSM_STATE_BITS 2
31 /* --------------------------------------------------*/
33 /* --------------------------------------------------*/
35 #define NOF_ACQ_REGS 12
37 // Register id's of MMIO slave accesible registers
38 #define ACQ_START_ADDR_REG_ID 0
39 #define ACQ_MEM_REGION_SIZE_REG_ID 1
40 #define ACQ_NUM_MEM_REGIONS_REG_ID 2
41 #define ACQ_INIT_REG_ID 3
42 #define ACQ_RECEIVED_SHORT_PACKETS_REG_ID 4
43 #define ACQ_RECEIVED_LONG_PACKETS_REG_ID 5
44 #define ACQ_LAST_COMMAND_REG_ID 6
45 #define ACQ_NEXT_COMMAND_REG_ID 7
46 #define ACQ_LAST_ACKNOWLEDGE_REG_ID 8
47 #define ACQ_NEXT_ACKNOWLEDGE_REG_ID 9
48 #define ACQ_FSM_STATE_INFO_REG_ID 10
49 #define ACQ_INT_CNTR_INFO_REG_ID 11
52 #define ACQ_START_ADDR_REG_WIDTH 9
53 #define ACQ_MEM_REGION_SIZE_REG_WIDTH 9
54 #define ACQ_NUM_MEM_REGIONS_REG_WIDTH 9
55 #define ACQ_INIT_REG_WIDTH 3
56 #define ACQ_RECEIVED_SHORT_PACKETS_REG_WIDTH 32
57 #define ACQ_RECEIVED_LONG_PACKETS_REG_WIDTH 32
58 #define ACQ_LAST_COMMAND_REG_WIDTH 32
59 #define ACQ_NEXT_COMMAND_REG_WIDTH 32
60 #define ACQ_LAST_ACKNOWLEDGE_REG_WIDTH 32
61 #define ACQ_NEXT_ACKNOWLEDGE_REG_WIDTH 32
62 #define ACQ_FSM_STATE_INFO_REG_WIDTH ((MEM2STREAM_FSM_STATE_BITS * 3) + (ACQ_SYNCHRONIZER_FSM_STATE_BITS *3))
63 #define ACQ_INT_CNTR_INFO_REG_WIDTH 32
65 /* register reset value */
66 #define ACQ_START_ADDR_REG_RSTVAL 0
67 #define ACQ_MEM_REGION_SIZE_REG_RSTVAL 128
68 #define ACQ_NUM_MEM_REGIONS_REG_RSTVAL 3
69 #define ACQ_INIT_REG_RSTVAL 0
70 #define ACQ_RECEIVED_SHORT_PACKETS_REG_RSTVAL 0
71 #define ACQ_RECEIVED_LONG_PACKETS_REG_RSTVAL 0
72 #define ACQ_LAST_COMMAND_REG_RSTVAL 0
73 #define ACQ_NEXT_COMMAND_REG_RSTVAL 0
74 #define ACQ_LAST_ACKNOWLEDGE_REG_RSTVAL 0
75 #define ACQ_NEXT_ACKNOWLEDGE_REG_RSTVAL 0
76 #define ACQ_FSM_STATE_INFO_REG_RSTVAL 0
77 #define ACQ_INT_CNTR_INFO_REG_RSTVAL 0
80 #define ACQ_INIT_RST_REG_BIT 0
81 #define ACQ_INIT_RESYNC_BIT 2
82 #define ACQ_INIT_RST_IDX ACQ_INIT_RST_REG_BIT
83 #define ACQ_INIT_RST_BITS 1
84 #define ACQ_INIT_RESYNC_IDX ACQ_INIT_RESYNC_BIT
85 #define ACQ_INIT_RESYNC_BITS 1
87 /* --------------------------------------------------*/
89 /* --------------------------------------------------*/
90 #define ACQ_TOKEN_ID_LSB 0
91 #define ACQ_TOKEN_ID_MSB 3
92 #define ACQ_TOKEN_WIDTH (ACQ_TOKEN_ID_MSB - ACQ_TOKEN_ID_LSB + 1) // 4
93 #define ACQ_TOKEN_ID_IDX 0
94 #define ACQ_TOKEN_ID_BITS ACQ_TOKEN_WIDTH
95 #define ACQ_INIT_CMD_INIT_IDX 4
96 #define ACQ_INIT_CMD_INIT_BITS 3
97 #define ACQ_CMD_START_ADDR_IDX 4
98 #define ACQ_CMD_START_ADDR_BITS 9
99 #define ACQ_CMD_NOFWORDS_IDX 13
100 #define ACQ_CMD_NOFWORDS_BITS 9
101 #define ACQ_MEM_REGION_ID_IDX 22
102 #define ACQ_MEM_REGION_ID_BITS 9
103 #define ACQ_PACKET_LENGTH_TOKEN_MSB 21
104 #define ACQ_PACKET_LENGTH_TOKEN_LSB 13
105 #define ACQ_PACKET_DATA_FORMAT_ID_TOKEN_MSB 9
106 #define ACQ_PACKET_DATA_FORMAT_ID_TOKEN_LSB 4
107 #define ACQ_PACKET_CH_ID_TOKEN_MSB 11
108 #define ACQ_PACKET_CH_ID_TOKEN_LSB 10
109 #define ACQ_PACKET_MEM_REGION_ID_TOKEN_MSB 12 /* only for capt_end_of_packet_written */
110 #define ACQ_PACKET_MEM_REGION_ID_TOKEN_LSB 4 /* only for capt_end_of_packet_written */
113 /* Command tokens IDs */
114 #define ACQ_READ_REGION_AUTO_INCR_TOKEN_ID 0 //0000b
115 #define ACQ_READ_REGION_TOKEN_ID 1 //0001b
116 #define ACQ_READ_REGION_SOP_TOKEN_ID 2 //0010b
117 #define ACQ_INIT_TOKEN_ID 8 //1000b
119 /* Acknowledge token IDs */
120 #define ACQ_READ_REGION_ACK_TOKEN_ID 0 //0000b
121 #define ACQ_END_OF_PACKET_TOKEN_ID 4 //0100b
122 #define ACQ_END_OF_REGION_TOKEN_ID 5 //0101b
123 #define ACQ_SOP_MISMATCH_TOKEN_ID 6 //0110b
124 #define ACQ_UNDEF_PH_TOKEN_ID 7 //0111b
126 #define ACQ_TOKEN_MEMREGIONID_MSB 30
127 #define ACQ_TOKEN_MEMREGIONID_LSB 22
128 #define ACQ_TOKEN_NOFWORDS_MSB 21
129 #define ACQ_TOKEN_NOFWORDS_LSB 13
130 #define ACQ_TOKEN_STARTADDR_MSB 12
131 #define ACQ_TOKEN_STARTADDR_LSB 4
134 /* --------------------------------------------------*/
136 /* --------------------------------------------------*/
138 #define WORD_COUNT_WIDTH 16
139 #define PKT_CODE_WIDTH 6
140 #define CHN_NO_WIDTH 2
141 #define ERROR_INFO_WIDTH 8
143 #define LONG_PKTCODE_MAX 63
144 #define LONG_PKTCODE_MIN 16
145 #define SHORT_PKTCODE_MAX 15
149 /* --------------------------------------------------*/
151 /* --------------------------------------------------*/
152 #define ACQ_START_OF_FRAME 0
153 #define ACQ_END_OF_FRAME 1
154 #define ACQ_START_OF_LINE 2
155 #define ACQ_END_OF_LINE 3
156 #define ACQ_LINE_PAYLOAD 4
157 #define ACQ_GEN_SH_PKT 5
161 #define ACQ_PKT_TYPE_IDX 16
162 #define ACQ_PKT_TYPE_BITS 6
163 #define ACQ_PKT_SOP_IDX 32
164 #define ACQ_WORD_CNT_IDX 0
165 #define ACQ_WORD_CNT_BITS 16
166 #define ACQ_PKT_INFO_IDX 16
167 #define ACQ_PKT_INFO_BITS 8
168 #define ACQ_HEADER_DATA_IDX 0
169 #define ACQ_HEADER_DATA_BITS 16
170 #define ACQ_ACK_TOKEN_ID_IDX ACQ_TOKEN_ID_IDX
171 #define ACQ_ACK_TOKEN_ID_BITS ACQ_TOKEN_ID_BITS
172 #define ACQ_ACK_NOFWORDS_IDX 13
173 #define ACQ_ACK_NOFWORDS_BITS 9
174 #define ACQ_ACK_PKT_LEN_IDX 4
175 #define ACQ_ACK_PKT_LEN_BITS 16
178 /* --------------------------------------------------*/
179 /* Packet Data Type */
180 /* --------------------------------------------------*/
183 #define ACQ_YUV420_8_DATA 24 /* 01 1000 YUV420 8-bit */
184 #define ACQ_YUV420_10_DATA 25 /* 01 1001 YUV420 10-bit */
185 #define ACQ_YUV420_8L_DATA 26 /* 01 1010 YUV420 8-bit legacy */
186 #define ACQ_YUV422_8_DATA 30 /* 01 1110 YUV422 8-bit */
187 #define ACQ_YUV422_10_DATA 31 /* 01 1111 YUV422 10-bit */
188 #define ACQ_RGB444_DATA 32 /* 10 0000 RGB444 */
189 #define ACQ_RGB555_DATA 33 /* 10 0001 RGB555 */
190 #define ACQ_RGB565_DATA 34 /* 10 0010 RGB565 */
191 #define ACQ_RGB666_DATA 35 /* 10 0011 RGB666 */
192 #define ACQ_RGB888_DATA 36 /* 10 0100 RGB888 */
193 #define ACQ_RAW6_DATA 40 /* 10 1000 RAW6 */
194 #define ACQ_RAW7_DATA 41 /* 10 1001 RAW7 */
195 #define ACQ_RAW8_DATA 42 /* 10 1010 RAW8 */
196 #define ACQ_RAW10_DATA 43 /* 10 1011 RAW10 */
197 #define ACQ_RAW12_DATA 44 /* 10 1100 RAW12 */
198 #define ACQ_RAW14_DATA 45 /* 10 1101 RAW14 */
199 #define ACQ_USR_DEF_1_DATA 48 /* 11 0000 JPEG [User Defined 8-bit Data Type 1] */
200 #define ACQ_USR_DEF_2_DATA 49 /* 11 0001 User Defined 8-bit Data Type 2 */
201 #define ACQ_USR_DEF_3_DATA 50 /* 11 0010 User Defined 8-bit Data Type 3 */
202 #define ACQ_USR_DEF_4_DATA 51 /* 11 0011 User Defined 8-bit Data Type 4 */
203 #define ACQ_USR_DEF_5_DATA 52 /* 11 0100 User Defined 8-bit Data Type 5 */
204 #define ACQ_USR_DEF_6_DATA 53 /* 11 0101 User Defined 8-bit Data Type 6 */
205 #define ACQ_USR_DEF_7_DATA 54 /* 11 0110 User Defined 8-bit Data Type 7 */
206 #define ACQ_USR_DEF_8_DATA 55 /* 11 0111 User Defined 8-bit Data Type 8 */
207 #define ACQ_Emb_DATA 18 /* 01 0010 embedded eight bit non image data */
208 #define ACQ_SOF_DATA 0 /* 00 0000 frame start */
209 #define ACQ_EOF_DATA 1 /* 00 0001 frame end */
210 #define ACQ_SOL_DATA 2 /* 00 0010 line start */
211 #define ACQ_EOL_DATA 3 /* 00 0011 line end */
212 #define ACQ_GEN_SH1_DATA 8 /* 00 1000 Generic Short Packet Code 1 */
213 #define ACQ_GEN_SH2_DATA 9 /* 00 1001 Generic Short Packet Code 2 */
214 #define ACQ_GEN_SH3_DATA 10 /* 00 1010 Generic Short Packet Code 3 */
215 #define ACQ_GEN_SH4_DATA 11 /* 00 1011 Generic Short Packet Code 4 */
216 #define ACQ_GEN_SH5_DATA 12 /* 00 1100 Generic Short Packet Code 5 */
217 #define ACQ_GEN_SH6_DATA 13 /* 00 1101 Generic Short Packet Code 6 */
218 #define ACQ_GEN_SH7_DATA 14 /* 00 1110 Generic Short Packet Code 7 */
219 #define ACQ_GEN_SH8_DATA 15 /* 00 1111 Generic Short Packet Code 8 */
220 #define ACQ_YUV420_8_CSPS_DATA 28 /* 01 1100 YUV420 8-bit (Chroma Shifted Pixel Sampling) */
221 #define ACQ_YUV420_10_CSPS_DATA 29 /* 01 1101 YUV420 10-bit (Chroma Shifted Pixel Sampling) */
222 #define ACQ_RESERVED_DATA_TYPE_MIN 56
223 #define ACQ_RESERVED_DATA_TYPE_MAX 63
224 #define ACQ_GEN_LONG_RESERVED_DATA_TYPE_MIN 19
225 #define ACQ_GEN_LONG_RESERVED_DATA_TYPE_MAX 23
226 #define ACQ_YUV_RESERVED_DATA_TYPE 27
227 #define ACQ_RGB_RESERVED_DATA_TYPE_MIN 37
228 #define ACQ_RGB_RESERVED_DATA_TYPE_MAX 39
229 #define ACQ_RAW_RESERVED_DATA_TYPE_MIN 46
230 #define ACQ_RAW_RESERVED_DATA_TYPE_MAX 47
232 /* --------------------------------------------------*/
234 #endif /* _isp_acquisition_defs_h */