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