• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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