1 /* 2 * linux-5.4/drivers/media/platform/sunxi-vin/vin-csi/parser_reg_i.h 3 * 4 * Copyright (c) 2007-2017 Allwinnertech Co., Ltd. 5 * 6 * Authors: Zhao Wei <zhaowei@allwinnertech.com> 7 * 8 * This software is licensed under the terms of the GNU General Public 9 * License version 2, as published by the Free Software Foundation, and 10 * may be copied, distributed, and modified under those terms. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 */ 18 19 #ifndef __CSIC__PARSER__REG__I__H__ 20 #define __CSIC__PARSER__REG__I__H__ 21 22 /* 23 * Detail information of registers 24 */ 25 #define PRS_EN_REG_OFF 0X000 26 #define PRS_EN_REG_PRS_EN 0 27 #define PRS_EN_REG_PRS_EN_MASK (0X1 << PRS_EN_REG_PRS_EN) 28 #define PRS_EN_REG_PRS_MODE 1 29 #define PRS_EN_REG_PRS_MODE_MASK (0X1 << PRS_EN_REG_PRS_MODE) 30 #define PRS_CH_PRS_MODE 2 31 #define PRS_CH_PRS_MODE_MASK (0X1 << PRS_CH_PRS_MODE) 32 #define PRS_EN_REG_PCLK_EN 15 33 #define PRS_EN_REG_PCLK_EN_MASK (0X1 << PRS_EN_REG_PCLK_EN) 34 #define PRS_EN_REG_NCSIC_EN 16 35 #define PRS_EN_REG_NCSIC_EN_MASK (0X1 << PRS_EN_REG_NCSIC_EN) 36 #define PRS_EN_REG_MCSIC_EN 31 37 #define PRS_EN_REG_MCSIC_EN_MASK (0X1 << PRS_EN_REG_MCSIC_EN) 38 39 40 #define PRS_NCSIC_IF_CFG_REG_OFF 0X004 41 #define PRS_NCSIC_IF_CSI_IF 0 42 #define PRS_NCSIC_IF_CSI_IF_MASK (0X1F << PRS_NCSIC_IF_CSI_IF) 43 #define PRS_NCSIC_IF_OUTPUT_MODE 5 44 #define PRS_NCSIC_IF_OUTPUT_MODE_MASK (0X1 << PRS_NCSIC_IF_OUTPUT_MODE) 45 #define PRS_NCSIC_IF_INPUT_SEQ 6 46 #define PRS_NCSIC_IF_INPUT_SEQ_MASK (0X3 << PRS_NCSIC_IF_INPUT_SEQ) 47 #define PRS_NCSIC_IF_DATA_WIDTH 8 48 #define PRS_NCSIC_IF_DATA_WIDTH_MASK (0X7 << PRS_NCSIC_IF_DATA_WIDTH) 49 #define PRS_NCSIC_IF_SEQ_8PLUS2 11 50 #define PRS_NCSIC_IF_SEQ_8PLUS2_MASK (0X3 << PRS_NCSIC_IF_SEQ_8PLUS2) 51 #define PRS_NCSIC_IF_DDR_SAMPLE_MODE 13 52 #define PRS_NCSIC_IF_DDR_SAMPLE_MODE_MASK (0X1 << PRS_NCSIC_IF_DDR_SAMPLE_MODE) 53 #define PRS_NCSIC_IF_FIELD_DT 14 54 #define PRS_NCSIC_IF_FIELD_DT_MASK (0X3 << PRS_NCSIC_IF_FIELD_DT) 55 #define PRS_NCSIC_IF_CLK_POL 16 56 #define PRS_NCSIC_IF_CLK_POL_MASK (0X1 << PRS_NCSIC_IF_CLK_POL) 57 #define PRS_NCSIC_IF_HREF_POL 17 58 #define PRS_NCSIC_IF_HREF_POL_MASK (0X1 << PRS_NCSIC_IF_HREF_POL) 59 #define PRS_NCSIC_IF_VREF_POL 18 60 #define PRS_NCSIC_IF_VREF_POL_MASK (0X1 << PRS_NCSIC_IF_VREF_POL) 61 #define PRS_NCSIC_IF_FIELD_POL 19 62 #define PRS_NCSIC_IF_FIELD_POL_MASK (0X1 << PRS_NCSIC_IF_FIELD_POL) 63 #ifndef CONFIG_ARCH_SUN8IW20 64 #define PRS_NCSIC_IF_RES0 20 65 #define PRS_NCSIC_IF_SRC_TYPE 21 66 #define PRS_NCSIC_IF_SRC_TYPE_MASK (0X1 << PRS_NCSIC_IF_SRC_TYPE) 67 #else 68 #define PRS_NCSIC_IF_CH0_SRC_TYPE 20 69 #define PRS_NCSIC_IF_CH0_SRC_TYPE_MASK (0X1 << PRS_NCSIC_IF_CH0_SRC_TYPE) 70 #define PRS_NCSIC_IF_CH1_SRC_TYPE 21 71 #define PRS_NCSIC_IF_CH1_SRC_TYPE_MASK (0X1 << PRS_NCSIC_IF_CH1_SRC_TYPE) 72 #define PRS_NCSIC_IF_CH2_SRC_TYPE 22 73 #define PRS_NCSIC_IF_CH2_SRC_TYPE_MASK (0X1 << PRS_NCSIC_IF_CH2_SRC_TYPE) 74 #define PRS_NCSIC_IF_CH3_SRC_TYPE 23 75 #define PRS_NCSIC_IF_CH3_SRC_TYPE_MASK (0X1 << PRS_NCSIC_IF_CH3_SRC_TYPE) 76 #endif 77 78 #define PRS_NCSIC_IF_PCLK_SHIFT 24 79 #define PRS_NCSIC_IF_PCLK_SHIFT_MASK (0XF << PRS_NCSIC_IF_PCLK_SHIFT) 80 81 #define PRS_MCSIC_IF_CFG_REG_OFF 0X008 82 #define PRS_MCSIC_IF_OUTPUT_MODE 5 83 #define PRS_MCSIC_IF_OUTPUT_MODE_MASK (0X1 << PRS_MCSIC_IF_OUTPUT_MODE) 84 #define PRS_MCSIC_IF_INPUT_SEQ 6 85 #define PRS_MCSIC_IF_INPUT_SEQ_MASK (0X3 << PRS_MCSIC_IF_INPUT_SEQ) 86 87 #define PRS_CAP_REG_OFF 0X00C 88 #define CH0_SCAP_ON 0 89 #define CH0_VCAP_ON 1 90 #define CH0_SV_ON_MASK (0X3 << CH0_SCAP_ON) 91 #define CH0_FPS_DS 2 92 #define CH0_FPS_DS_MASK (0XF << CH0_FPS_DS) 93 #define CH1_SCAP_ON 8 94 #define CH1_VCAP_ON 9 95 #define CH1_SV_ON_MASK (0X3 << CH1_SCAP_ON) 96 #define CH1_FPS_DS 10 97 #define CH1_FPS_DS_MASK (0XF << CH1_FPS_DS) 98 #define CH2_SCAP_ON 16 99 #define CH2_VCAP_ON 17 100 #define CH2_SV_ON_MASK (0X3 << CH2_SCAP_ON) 101 #define CH2_FPS_DS 18 102 #define CH2_FPS_DS_MASK (0XF << CH2_FPS_DS) 103 #define CH3_SCAP_ON 24 104 #define CH3_VCAP_ON 25 105 #define CH3_SV_ON_MASK (0X3 << CH3_SCAP_ON) 106 #define CH3_FPS_DS 26 107 #define CH3_FPS_DS_MASK (0XF << CH3_FPS_DS) 108 109 #define PRS_SIGNAL_STA_REG_OFF 0X010 110 #define DATA_STA 0 111 #define DATA_STA_MASK (0XFFFFFF << DATA_STA) 112 #define PCLK_STA 24 113 #define PCLK_STA_MASK (0XF << PCLK_STA) 114 115 #define PRS_NCSIC_BT656_HEAD_CFG_REG_OFF 0X014 116 #define CH0_ID 0 117 #define CH0_ID_MASK (0XF << CH0_ID) 118 #define CH1_ID 8 119 #define CH1_ID_MASK (0XF << CH1_ID) 120 #define CH2_ID 16 121 #define CH2_ID_MASK (0XF << CH2_ID) 122 #define CH3_ID 24 123 #define CH3_ID_MASK (0XF << CH3_ID) 124 125 /***channel 0***/ 126 #define PARSER_CH_OFF 0x100 127 128 #define PRS_CH0_INFMT_REG_OFF 0X024 129 #define PRS_CH0_INPUT_FMT 0 130 #define PRS_CH0_INPUT_FMT_MASK (0XF << PRS_CH0_INPUT_FMT) 131 132 #define PRS_CH0_OUTPUT_HSIZE_REG_OFF 0X028 133 #define PRS_CH0_HOR_START 0 134 #define PRS_CH0_HOR_START_MASK (0X1FFF << PRS_CH0_HOR_START) 135 #define PRS_CH0_HOR_LEN 16 136 #define PRS_CH0_HOR_LEN_MASK (0X1FFF << PRS_CH0_HOR_LEN) 137 138 #define PRS_CH0_OUTPUT_VSIZE_REG_OFF 0X02C 139 #define PRS_CH0_VER_START 0 140 #define PRS_CH0_VER_START_MASK (0X1FFF << PRS_CH0_VER_START) 141 #define PRS_CH0_VER_LEN 16 142 #define PRS_CH0_VER_LEN_MASK (0X1FFF << PRS_CH0_VER_LEN) 143 144 #define PRS_CH0_INPUT_PARA0_REG_OFF 0X030 145 #define PRS_CH0_INPUT_SRC_TYPE 0 146 #define PRS_CH0_INPUT_SRC_TYPE_MASK (0X1 << PRS_CH0_INPUT_SRC_TYPE) 147 148 #define PRS_CH0_INPUT_PARA1_REG_OFF 0X034 149 #define PRS_CH0_INPUT_HT 0 150 #define PRS_CH0_INPUT_HT_MASK (0X3FFF << PRS_CH0_INPUT_HT) 151 #define PRS_CH0_INPUT_VT 16 152 #define PRS_CH0_INPUT_VT_MASK (0X3FFF << PRS_CH0_INPUT_VT) 153 154 #define PRS_CH0_INPUT_PARA2_REG_OFF 0X038 155 #define PRS_CH0_INPUT_HB 0 156 #define PRS_CH0_INPUT_HB_MASK (0X3FFF << PRS_CH0_INPUT_HB) 157 #define PRS_CH0_INPUT_VB 16 158 #define PRS_CH0_INPUT_VB_MASK (0X3FFF << PRS_CH0_INPUT_VB) 159 160 #define PRS_CH0_INPUT_PARA3_REG_OFF 0X03C 161 #define PRS_CH0_INPUT_X 0 162 #define PRS_CH0_INPUT_X_MASK (0X3FFF << PRS_CH0_INPUT_X) 163 #define PRS_CH0_INPUT_Y 16 164 #define PRS_CH0_INPUT_Y_MASK (0X3FFF << PRS_CH0_INPUT_Y) 165 166 #define PRS_CH0_INT_EN_REG_OFF 0X040 167 #define PRS_CH0_INPUT_PARA0_INT_EN 0 168 #define PRS_CH0_INPUT_PARA0_INT_EN_MASK (0X1 << PRS_CH0_INPUT_PARA0_INT_EN) 169 170 #define PRS_CH0_INPUT_PARA1_INT_EN 1 171 #define PRS_CH0_INPUT_PARA1_INT_EN_MASK (0X1 << PRS_CH0_INPUT_PARA1_INT_EN) 172 173 #define PRS_CH0_MUL_ERR_INT_EN 2 174 #define PRS_CH0_MUL_ERR_INT_EN_MASK (0X1 << PRS_CH0_MUL_ERR_INT_EN) 175 176 #define PRS_CH0_INT_STA_REG_OFF 0X044 177 #define PRS_CH0_INPUT_SRC_PD0 0 178 #define PRS_CH0_INPUT_SRC_PD0_MASK (0X1 << PRS_CH0_INPUT_SRC_PD0) 179 180 #define PRS_CH0_INPUT_SRC_PD1 1 181 #define PRS_CH0_INPUT_SRC_PD1_MASK (0X1 << PRS_CH0_INPUT_SRC_PD1) 182 183 #define PRS_CH0_MUL_ERR_PD 2 184 #define PRS_CH0_MUL_ERR_PD_MASK (0X1 << PRS_CH0_MUL_ERR_PD) 185 186 #define PRS_CH0_LINE_TIME_REG_OFF 0X048 187 #define PRS_CH0_INPUT_HSYN 0 188 #define PRS_CH0_INPUT_HSYN_MASK (0XFFFF << PRS_CH0_INPUT_HSYN) 189 #define PRS_CH0_INPUT_HBLK 16 190 #define PRS_CH0_INPUT_HBLK_MASK (0XFFFF << PRS_CH0_INPUT_HBLK) 191 192 #define PRS_NCSIC_RX_SIGNAL0_DLY_ADJ_REG_OFF 0X500 193 #define PRS_PCLK_DLY 0 194 #define PRS_PCLK_DLY_MASK (0X1F << PRS_PCLK_DLY) 195 #define PRS_HSYNC_DLY 8 196 #define PRS_HSYNC_DLY_MASK (0X1F << PRS_HSYNC_DLY) 197 #define PRS_VSYNC_DLY 16 198 #define PRS_VSYNC_DLY_MASK (0X1F << PRS_VSYNC_DLY) 199 #define PRS_FILED_DLY 24 200 #define PRS_FILED_DLY_MASK (0X1F << PRS_FILED_DLY) 201 202 #define PRS_NCSIC_RX_SIGNAL1_DLY_ADJ_REG_OFF 0X504 203 #define PRS_D20_DLY 0 204 #define PRS_D20_DLY_MASK (0X1F << PRS_D20_DLY) 205 #define PRS_D21_DLY 8 206 #define PRS_D21_DLY_MASK (0X1F << PRS_D21_DLY) 207 #define PRS_D22_DLY 16 208 #define PRS_D22_DLY_MASK (0X1F << PRS_D22_DLY) 209 #define PRS_D23_DLY 24 210 #define PRS_D23_DLY_MASK (0X1F << PRS_D23_DLY) 211 212 #define PRS_NCSIC_RX_SIGNAL2_DLY_ADJ_REG_OFF 0X508 213 #define PRS_D16_DLY 0 214 #define PRS_D16_DLY_MASK (0X1F << PRS_D16_DLY) 215 #define PRS_D17_DLY 8 216 #define PRS_D17_DLY_MASK (0X1F << PRS_D17_DLY) 217 #define PRS_D18_DLY 16 218 #define PRS_D18_DLY_MASK (0X1F << PRS_D18_DLY) 219 #define PRS_D19_DLY 24 220 #define PRS_D19_DLY_MASK (0X1F << PRS_D19_DLY) 221 222 #define PRS_NCSIC_RX_SIGNAL3_DLY_ADJ_REG_OFF 0X50C 223 #define PRS_D12_DLY 0 224 #define PRS_D12_DLY_MASK (0X1F << PRS_D12_DLY) 225 #define PRS_D13_DLY 8 226 #define PRS_D13_DLY_MASK (0X1F << PRS_D13_DLY) 227 #define PRS_D14_DLY 16 228 #define PRS_D14_DLY_MASK (0X1F << PRS_D14_DLY) 229 #define PRS_D15_DLY 24 230 #define PRS_D15_DLY_MASK (0X1F << PRS_D15_DLY) 231 232 #define PRS_NCSIC_RX_SIGNAL4_DLY_ADJ_REG_OFF 0X510 233 #define PRS_D8_DLY 0 234 #define PRS_D8_DLY_MASK (0X1F << PRS_D8_DLY) 235 #define PRS_D9_DLY 8 236 #define PRS_D9_DLY_MASK (0X1F << PRS_D9_DLY) 237 #define PRS_D10_DLY 16 238 #define PRS_D10_DLY_MASK (0X1F << PRS_D10_DLY) 239 #define PRS_D11_DLY 24 240 #define PRS_D11_DLY_MASK (0X1F << PRS_D11_DLY) 241 242 #define PRS_NCSIC_RX_SIGNAL5_DLY_ADJ_REG_OFF 0X514 243 #define PRS_D4_DLY 0 244 #define PRS_D4_DLY_MASK (0X1F << PRS_D4_DLY) 245 #define PRS_D5_DLY 8 246 #define PRS_D5_DLY_MASK (0X1F << PRS_D5_DLY) 247 #define PRS_D6_DLY 16 248 #define PRS_D6_DLY_MASK (0X1F << PRS_D6_DLY) 249 #define PRS_D7_DLY 24 250 #define PRS_D7_DLY_MASK (0X1F << PRS_D7_DLY) 251 252 #define PRS_NCSIC_RX_SIGNAL6_DLY_ADJ_REG_OFF 0X518 253 #define PRS_D0_DLY 0 254 #define PRS_D0_DLY_MASK (0X1F << PRS_D0_DLY) 255 #define PRS_D1_DLY 8 256 #define PRS_D1_DLY_MASK (0X1F << PRS_D1_DLY) 257 #define PRS_D2_DLY 16 258 #define PRS_D2_DLY_MASK (0X1F << PRS_D2_DLY) 259 #define PRS_D3_DLY 24 260 #define PRS_D3_DLY_MASK (0X1F << PRS_D3_DLY) 261 262 #define PRS_NCSIC_SYNC_EN_OFF 0x520 263 #define PRS_NCSIC_SYNC_EN_SENT_SYNC_SINGAL 0 264 #define PRS_NCSIC_SYNC_EN_SENT_SYNC_SINGAL_MASK (0x1 << PRS_NCSIC_SYNC_EN_SENT_SYNC_SINGAL) 265 #define PRS_NCSIC_SYNC_SINGAL_SOURCE_SEL 1 266 #define PRS_NCSIC_SYNC_SINGAL_SOURCE_SEL_MASK (0x1 << PRS_NCSIC_SYNC_SINGAL_SOURCE_SEL) 267 #define PRS_NCSIC_SYNC_SINGAL_VIA_BY 2 268 #define PRS_NCSIC_SYNC_SINGAL_VIA_BY_MASK (0x1 << PRS_NCSIC_SYNC_SINGAL_VIA_BY) 269 #define PRS_NCSIC_SYNC_INPUT_VSYNC_EN 4 270 #define PRS_NCSIC_SYNC_INPUT_VSYNC_EN_MASK (0xF << PRS_NCSIC_SYNC_INPUT_VSYNC_EN) 271 #define PRS_NCSIC_SYNC_BENCH_SEL 8 272 #define PRS_NCSIC_SYNC_BENCH_SEL_MASK (0xF << PRS_NCSIC_SYNC_BENCH_SEL) 273 #define PRS_NCSIC_SYNC_INPUT_VSYNC_SEL 16 274 #define PRS_NCSIC_SYNC_INPUT_VSYNC_SEL_MASK (0xF << PRS_NCSIC_SYNC_INPUT_VSYNC_SEL) 275 276 #define PRS_CSIC_SYNC_CFG_OFF 0x524 277 #define PRS_CSIC_SYNC_DISTANCE 0 278 #define PRS_CSIC_SYNC_DISTANCE_MASK (0xFFFF << PRS_CSIC_SYNC_DISTANCE) 279 #define PRS_CSIC_SYNC_PULSE_CFG 16 280 #define PRS_CSIC_SYNC_PULSE_CFG_MASK (0xFFFF << PRS_CSIC_SYNC_PULSE_CFG) 281 282 #define PRS_CSIC_VS_WAIT_N_OFF 0x528 283 #define PRS_CSIC_SYNC_WAIT_N 0 284 #define PRS_CSIC_SYNC_WAIT_N_MASK (0xFFFFFFFF << PRS_CSIC_SYNC_WAIT_N) 285 286 #define PRS_CSIC_VS_WAIT_M_OFF 0x52C 287 #define PRS_CSIC_SYNC_WAIT_M 0 288 #define PRS_CSIC_SYNC_WAIT_M_MASK (0xFFFFFFFF << PRS_CSIC_SYNC_WAIT_M) 289 290 #define PRS_CSIC_XS_ENABLE_REG_OFF 0x540 291 #define PRS_CSIC_XS_XHS_OUT_EN 0 292 #define PRS_CSIC_XS_XHS_OUT_EN_MASK (0x1 << PRS_CSIC_XS_XHS_OUT_EN) 293 #define PRS_CSIC_XS_XVS_OUT_EN 1 294 #define PRS_CSIC_XS_XVS_OUT_EN_MASK (0x1 << PRS_CSIC_XS_XVS_OUT_EN) 295 296 #define PRS_CSIC_XVS_PERIOD_REG_OFF 0x544 297 #define PRS_CSIC_XVS_T 0 298 #define PRS_CSIC_XVS_T_MASK (0xFFFFFFFF << PRS_CSIC_XVS_T) 299 300 #define PRS_CSIC_XHS_PERIOD_REG_OFF 0x548 301 #define PRS_CSIC_XHS_T 0 302 #define PRS_CSIC_XHS_T_MASK (0xFFFFFFFF << PRS_CSIC_XHS_T) 303 304 #define PRS_CSIC_XVS_LEN_REG_OFF 0x54C 305 #define PRS_CSIC_XVS_LEN 0 306 #define PRS_CSIC_XVS_LEN_MASK (0xFFFFFFFF << PRS_CSIC_XVS_LEN) 307 308 #define PRS_CSIC_XHS_LEN_REG_OFF 0x550 309 #define PRS_CSIC_XHS_LEN 0 310 #define PRS_CSIC_XHS_LEN_MASK (0xFFFFFFFF << PRS_CSIC_XHS_LEN) 311 312 #endif /* __CSIC__PARSER__REG__I__H__ */ 313