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