xref: /OK3568_Linux_fs/kernel/drivers/media/platform/rockchip/cif/regs.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Rockchip CIF Driver
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2018 Rockchip Electronics Co., Ltd.
6*4882a593Smuzhiyun  */
7*4882a593Smuzhiyun 
8*4882a593Smuzhiyun #ifndef _RKCIF_REGS_H
9*4882a593Smuzhiyun #define _RKCIF_REGS_H
10*4882a593Smuzhiyun 
11*4882a593Smuzhiyun struct cif_reg {
12*4882a593Smuzhiyun 	u32 offset;
13*4882a593Smuzhiyun };
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun #define CIF_REG(_offset)		{ .offset = (_offset), }
16*4882a593Smuzhiyun 
17*4882a593Smuzhiyun enum cif_reg_index {
18*4882a593Smuzhiyun 	/* dvp registers index */
19*4882a593Smuzhiyun 	CIF_REG_DVP_CTRL = 0x0,
20*4882a593Smuzhiyun 	CIF_REG_DVP_INTEN,
21*4882a593Smuzhiyun 	CIF_REG_DVP_INTSTAT,
22*4882a593Smuzhiyun 	CIF_REG_DVP_FOR,
23*4882a593Smuzhiyun 	CIF_REG_DVP_LINE_NUM_ADDR,
24*4882a593Smuzhiyun 	CIF_REG_DVP_DMA_IDLE_REQ,
25*4882a593Smuzhiyun 	CIF_REG_DVP_MULTI_ID,
26*4882a593Smuzhiyun 	CIF_REG_DVP_FRM0_ADDR_Y,
27*4882a593Smuzhiyun 	CIF_REG_DVP_FRM0_ADDR_UV,
28*4882a593Smuzhiyun 	CIF_REG_DVP_FRM1_ADDR_Y,
29*4882a593Smuzhiyun 	CIF_REG_DVP_FRM1_ADDR_UV,
30*4882a593Smuzhiyun 	CIF_REG_DVP_VIR_LINE_WIDTH,
31*4882a593Smuzhiyun 	CIF_REG_DVP_SET_SIZE,
32*4882a593Smuzhiyun 	CIF_REG_DVP_SCM_ADDR_Y,
33*4882a593Smuzhiyun 	CIF_REG_DVP_SCM_ADDR_U,
34*4882a593Smuzhiyun 	CIF_REG_DVP_SCM_ADDR_V,
35*4882a593Smuzhiyun 	CIF_REG_DVP_WB_UP_FILTER,
36*4882a593Smuzhiyun 	CIF_REG_DVP_WB_LOW_FILTER,
37*4882a593Smuzhiyun 	CIF_REG_DVP_WBC_CNT,
38*4882a593Smuzhiyun 	CIF_REG_DVP_LINE_INT_NUM,
39*4882a593Smuzhiyun 	CIF_REG_DVP_LINE_CNT,
40*4882a593Smuzhiyun 	CIF_REG_DVP_CROP,
41*4882a593Smuzhiyun 	CIF_REG_DVP_SCL_CTRL,
42*4882a593Smuzhiyun 	CIF_REG_DVP_SCL_DST,
43*4882a593Smuzhiyun 	CIF_REG_DVP_SCL_FCT,
44*4882a593Smuzhiyun 	CIF_REG_DVP_SCL_VALID_NUM,
45*4882a593Smuzhiyun 	CIF_REG_DVP_LINE_LOOP_CTRL,
46*4882a593Smuzhiyun 	CIF_REG_DVP_PATH_SEL,
47*4882a593Smuzhiyun 	CIF_REG_DVP_FIFO_ENTRY,
48*4882a593Smuzhiyun 	CIF_REG_DVP_FRAME_STATUS,
49*4882a593Smuzhiyun 	CIF_REG_DVP_CUR_DST,
50*4882a593Smuzhiyun 	CIF_REG_DVP_LAST_LINE,
51*4882a593Smuzhiyun 	CIF_REG_DVP_LAST_PIX,
52*4882a593Smuzhiyun 	CIF_REG_DVP_FRM0_ADDR_Y_ID1,
53*4882a593Smuzhiyun 	CIF_REG_DVP_FRM0_ADDR_UV_ID1,
54*4882a593Smuzhiyun 	CIF_REG_DVP_FRM1_ADDR_Y_ID1,
55*4882a593Smuzhiyun 	CIF_REG_DVP_FRM1_ADDR_UV_ID1,
56*4882a593Smuzhiyun 	CIF_REG_DVP_FRM0_ADDR_Y_ID2,
57*4882a593Smuzhiyun 	CIF_REG_DVP_FRM0_ADDR_UV_ID2,
58*4882a593Smuzhiyun 	CIF_REG_DVP_FRM1_ADDR_Y_ID2,
59*4882a593Smuzhiyun 	CIF_REG_DVP_FRM1_ADDR_UV_ID2,
60*4882a593Smuzhiyun 	CIF_REG_DVP_FRM0_ADDR_Y_ID3,
61*4882a593Smuzhiyun 	CIF_REG_DVP_FRM0_ADDR_UV_ID3,
62*4882a593Smuzhiyun 	CIF_REG_DVP_FRM1_ADDR_Y_ID3,
63*4882a593Smuzhiyun 	CIF_REG_DVP_FRM1_ADDR_UV_ID3,
64*4882a593Smuzhiyun 	CIF_REG_DVP_SAV_EAV,
65*4882a593Smuzhiyun 	CIF_REG_DVP_LINE_CNT1,
66*4882a593Smuzhiyun 	CIF_REG_DVP_LINE_INT_NUM1,
67*4882a593Smuzhiyun 	/* mipi & lvds registers index */
68*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_ID0_CTRL0,
69*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_ID0_CTRL1,
70*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_ID1_CTRL0,
71*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_ID1_CTRL1,
72*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_ID2_CTRL0,
73*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_ID2_CTRL1,
74*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_ID3_CTRL0,
75*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_ID3_CTRL1,
76*4882a593Smuzhiyun 	CIF_REG_MIPI_WATER_LINE,
77*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_CTRL,
78*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_ADDR_Y_ID0,
79*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_ADDR_Y_ID0,
80*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_ADDR_UV_ID0,
81*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_ADDR_UV_ID0,
82*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_VLW_Y_ID0,
83*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_VLW_Y_ID0,
84*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_VLW_UV_ID0,
85*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_VLW_UV_ID0,
86*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_ADDR_Y_ID1,
87*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_ADDR_Y_ID1,
88*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_ADDR_UV_ID1,
89*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_ADDR_UV_ID1,
90*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_VLW_Y_ID1,
91*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_VLW_Y_ID1,
92*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_VLW_UV_ID1,
93*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_VLW_UV_ID1,
94*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_ADDR_Y_ID2,
95*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_ADDR_Y_ID2,
96*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_ADDR_UV_ID2,
97*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_ADDR_UV_ID2,
98*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_VLW_Y_ID2,
99*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_VLW_Y_ID2,
100*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_VLW_UV_ID2,
101*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_VLW_UV_ID2,
102*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_ADDR_Y_ID3,
103*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_ADDR_Y_ID3,
104*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_ADDR_UV_ID3,
105*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_ADDR_UV_ID3,
106*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_VLW_Y_ID3,
107*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_VLW_Y_ID3,
108*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME0_VLW_UV_ID3,
109*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_FRAME1_VLW_UV_ID3,
110*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_INTEN,
111*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_INTSTAT,
112*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_LINE_INT_NUM_ID0_1,
113*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_LINE_INT_NUM_ID2_3,
114*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_LINE_LINE_CNT_ID0_1,
115*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_LINE_LINE_CNT_ID2_3,
116*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_ID0_CROP_START,
117*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_ID1_CROP_START,
118*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_ID2_CROP_START,
119*4882a593Smuzhiyun 	CIF_REG_MIPI_LVDS_ID3_CROP_START,
120*4882a593Smuzhiyun 	CIF_REG_MIPI_FRAME_NUM_VC0,
121*4882a593Smuzhiyun 	CIF_REG_MIPI_FRAME_NUM_VC1,
122*4882a593Smuzhiyun 	CIF_REG_MIPI_FRAME_NUM_VC2,
123*4882a593Smuzhiyun 	CIF_REG_MIPI_FRAME_NUM_VC3,
124*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_ACT0_ID0,
125*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_BLK0_ID0,
126*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_ACT1_ID0,
127*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_BLK1_ID0,
128*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_ACT0_ID1,
129*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_BLK0_ID1,
130*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_ACT1_ID1,
131*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_BLK1_ID1,
132*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_ACT0_ID2,
133*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_BLK0_ID2,
134*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_ACT1_ID2,
135*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_BLK1_ID2,
136*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_ACT0_ID3,
137*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_BLK0_ID3,
138*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_ACT1_ID3,
139*4882a593Smuzhiyun 	CIF_REG_LVDS_SAV_EAV_BLK1_ID3,
140*4882a593Smuzhiyun 	CIF_REG_MIPI_EFFECT_CODE_ID0,
141*4882a593Smuzhiyun 	CIF_REG_MIPI_EFFECT_CODE_ID1,
142*4882a593Smuzhiyun 	CIF_REG_MIPI_EFFECT_CODE_ID2,
143*4882a593Smuzhiyun 	CIF_REG_MIPI_EFFECT_CODE_ID3,
144*4882a593Smuzhiyun 	CIF_REG_LVDS_ID0_CTRL0,
145*4882a593Smuzhiyun 	CIF_REG_LVDS_ID1_CTRL0,
146*4882a593Smuzhiyun 	CIF_REG_LVDS_ID2_CTRL0,
147*4882a593Smuzhiyun 	CIF_REG_LVDS_ID3_CTRL0,
148*4882a593Smuzhiyun 	CIF_REG_MIPI_ON_PAD,
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun 	CIF_REG_Y_STAT_CONTROL,
151*4882a593Smuzhiyun 	CIF_REG_Y_STAT_VALUE,
152*4882a593Smuzhiyun 	CIF_REG_MMU_DTE_ADDR,
153*4882a593Smuzhiyun 	CIF_REG_MMU_STATUS,
154*4882a593Smuzhiyun 	CIF_REG_MMU_COMMAND,
155*4882a593Smuzhiyun 	CIF_REG_MMU_PAGE_FAULT_ADDR,
156*4882a593Smuzhiyun 	CIF_REG_MMU_ZAP_ONE_LINE,
157*4882a593Smuzhiyun 	CIF_REG_MMU_INT_RAWSTAT,
158*4882a593Smuzhiyun 	CIF_REG_MMU_INT_CLEAR,
159*4882a593Smuzhiyun 	CIF_REG_MMU_INT_MASK,
160*4882a593Smuzhiyun 	CIF_REG_MMU_INT_STATUS,
161*4882a593Smuzhiyun 	CIF_REG_MMU_AUTO_GATING,
162*4882a593Smuzhiyun 	/* reg belowed is in grf */
163*4882a593Smuzhiyun 	CIF_REG_GRF_CIFIO_CON,
164*4882a593Smuzhiyun 	CIF_REG_GRF_CIFIO_CON1,
165*4882a593Smuzhiyun 	CIF_REG_GRF_CIFIO_VENC,
166*4882a593Smuzhiyun 	/* reg global control */
167*4882a593Smuzhiyun 	CIF_REG_GLB_CTRL,
168*4882a593Smuzhiyun 	CIF_REG_GLB_INTEN,
169*4882a593Smuzhiyun 	CIF_REG_GLB_INTST,
170*4882a593Smuzhiyun 	CIF_REG_SCL_CH_CTRL,
171*4882a593Smuzhiyun 	CIF_REG_SCL_CTRL,
172*4882a593Smuzhiyun 	CIF_REG_SCL_FRM0_ADDR_CH0,
173*4882a593Smuzhiyun 	CIF_REG_SCL_FRM1_ADDR_CH0,
174*4882a593Smuzhiyun 	CIF_REG_SCL_VLW_CH0,
175*4882a593Smuzhiyun 	CIF_REG_SCL_FRM0_ADDR_CH1,
176*4882a593Smuzhiyun 	CIF_REG_SCL_FRM1_ADDR_CH1,
177*4882a593Smuzhiyun 	CIF_REG_SCL_VLW_CH1,
178*4882a593Smuzhiyun 	CIF_REG_SCL_FRM0_ADDR_CH2,
179*4882a593Smuzhiyun 	CIF_REG_SCL_FRM1_ADDR_CH2,
180*4882a593Smuzhiyun 	CIF_REG_SCL_VLW_CH2,
181*4882a593Smuzhiyun 	CIF_REG_SCL_FRM0_ADDR_CH3,
182*4882a593Smuzhiyun 	CIF_REG_SCL_FRM1_ADDR_CH3,
183*4882a593Smuzhiyun 	CIF_REG_SCL_VLW_CH3,
184*4882a593Smuzhiyun 	CIF_REG_SCL_BLC_CH0,
185*4882a593Smuzhiyun 	CIF_REG_SCL_BLC_CH1,
186*4882a593Smuzhiyun 	CIF_REG_SCL_BLC_CH2,
187*4882a593Smuzhiyun 	CIF_REG_SCL_BLC_CH3,
188*4882a593Smuzhiyun 	CIF_REG_TOISP0_CTRL,
189*4882a593Smuzhiyun 	CIF_REG_TOISP0_SIZE,
190*4882a593Smuzhiyun 	CIF_REG_TOISP0_CROP,
191*4882a593Smuzhiyun 	CIF_REG_TOISP1_CTRL,
192*4882a593Smuzhiyun 	CIF_REG_TOISP1_SIZE,
193*4882a593Smuzhiyun 	CIF_REG_TOISP1_CROP,
194*4882a593Smuzhiyun 	CIF_REG_INDEX_MAX
195*4882a593Smuzhiyun };
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun /* CIF Reg Offset */
198*4882a593Smuzhiyun #define CIF_CTRL			0x00
199*4882a593Smuzhiyun #define CIF_INTEN			0x04
200*4882a593Smuzhiyun #define CIF_INTSTAT			0x08
201*4882a593Smuzhiyun #define CIF_FOR				0x0c
202*4882a593Smuzhiyun #define CIF_LINE_NUM_ADDR		0x10
203*4882a593Smuzhiyun #define CIF_DMA_IDLE_REQ		0x10
204*4882a593Smuzhiyun #define CIF_FRM0_ADDR_Y			0x14
205*4882a593Smuzhiyun #define CIF_FRM0_ADDR_UV		0x18
206*4882a593Smuzhiyun #define CIF_FRM1_ADDR_Y			0x1c
207*4882a593Smuzhiyun #define CIF_FRM1_ADDR_UV		0x20
208*4882a593Smuzhiyun #define CIF_VIR_LINE_WIDTH		0x24
209*4882a593Smuzhiyun #define CIF_SET_SIZE			0x28
210*4882a593Smuzhiyun #define CIF_SCM_ADDR_Y			0x2c
211*4882a593Smuzhiyun #define CIF_LINE_INT_NUM		0x2c
212*4882a593Smuzhiyun #define CIF_SCM_ADDR_U			0x30
213*4882a593Smuzhiyun #define CIF_LINE_CNT			0x30
214*4882a593Smuzhiyun #define CIF_SCM_ADDR_V			0x34
215*4882a593Smuzhiyun #define CIF_WB_UP_FILTER		0x38
216*4882a593Smuzhiyun #define CIF_WB_LOW_FILTER		0x3c
217*4882a593Smuzhiyun #define CIF_WBC_CNT			0x40
218*4882a593Smuzhiyun #define CIF_CROP			0x44
219*4882a593Smuzhiyun #define RV1126_CIF_CROP			0x34
220*4882a593Smuzhiyun #define RK3568_CIF_FIFO_ENTRY		0x38
221*4882a593Smuzhiyun #define CIF_SCL_CTRL			0x48
222*4882a593Smuzhiyun #define CIF_PATH_SEL			0x48
223*4882a593Smuzhiyun #define CIF_SCL_DST			0x4c
224*4882a593Smuzhiyun #define CIF_SCL_FCT			0x50
225*4882a593Smuzhiyun #define CIF_SCL_VALID_NUM		0x54
226*4882a593Smuzhiyun #define CIF_FIFO_ENTRY			0x54
227*4882a593Smuzhiyun #define CIF_LINE_LOOP_CTR		0x58
228*4882a593Smuzhiyun #define CIF_FRAME_STATUS		0x60
229*4882a593Smuzhiyun #define RV1126_CIF_FRAME_STATUS		0x3c
230*4882a593Smuzhiyun #define CIF_CUR_DST			0x64
231*4882a593Smuzhiyun #define RV1126_CIF_CUR_DST		0x40
232*4882a593Smuzhiyun #define CIF_LAST_LINE			0x68
233*4882a593Smuzhiyun #define RV1126_CIF_LAST_LINE		0x44
234*4882a593Smuzhiyun #define CIF_LAST_PIX			0x6c
235*4882a593Smuzhiyun #define RV1126_CIF_LAST_PIX		0x48
236*4882a593Smuzhiyun #define CIF_MULTI_ID			0x10
237*4882a593Smuzhiyun #define CIF_FRM0_ADDR_Y_ID1		0x50
238*4882a593Smuzhiyun #define CIF_FRM0_ADDR_UV_ID1		0x54
239*4882a593Smuzhiyun #define CIF_FRM1_ADDR_Y_ID1		0x58
240*4882a593Smuzhiyun #define CIF_FRM1_ADDR_UV_ID1		0x5c
241*4882a593Smuzhiyun #define CIF_FRM0_ADDR_Y_ID2		0x60
242*4882a593Smuzhiyun #define CIF_FRM0_ADDR_UV_ID2		0x64
243*4882a593Smuzhiyun #define CIF_FRM1_ADDR_Y_ID2		0x68
244*4882a593Smuzhiyun #define CIF_FRM1_ADDR_UV_ID2		0x6c
245*4882a593Smuzhiyun #define CIF_FRM0_ADDR_Y_ID3		0x70
246*4882a593Smuzhiyun #define CIF_FRM0_ADDR_UV_ID3		0x74
247*4882a593Smuzhiyun #define CIF_FRM1_ADDR_Y_ID3		0x78
248*4882a593Smuzhiyun #define CIF_FRM1_ADDR_UV_ID3		0x7c
249*4882a593Smuzhiyun 
250*4882a593Smuzhiyun #define CIF_FETCH_Y_LAST_LINE(val)	((val) & 0x1fff)
251*4882a593Smuzhiyun /* Check if swap y and c in bt1120 mode */
252*4882a593Smuzhiyun #define CIF_FETCH_IS_Y_FIRST(val)	((val >> 5) & 0x3)
253*4882a593Smuzhiyun #define CIF_RAW_STORED_BIT_WIDTH	(16U)
254*4882a593Smuzhiyun #define CIF_RAW_STORED_BIT_WIDTH_RV1126	(8U)
255*4882a593Smuzhiyun #define CIF_YUV_STORED_BIT_WIDTH	(8U)
256*4882a593Smuzhiyun 
257*4882a593Smuzhiyun /* RK1808 & RV1126 CIF CSI & LVDS Registers Offset */
258*4882a593Smuzhiyun #define CIF_CSI_ID0_CTRL0		0x80
259*4882a593Smuzhiyun #define CIF_CSI_ID0_CTRL1		0x84
260*4882a593Smuzhiyun #define CIF_CSI_ID1_CTRL0		0x88
261*4882a593Smuzhiyun #define CIF_CSI_ID1_CTRL1		0x8c
262*4882a593Smuzhiyun #define CIF_CSI_ID2_CTRL0		0x90
263*4882a593Smuzhiyun #define CIF_CSI_ID2_CTRL1		0x94
264*4882a593Smuzhiyun #define CIF_CSI_ID3_CTRL0		0x98
265*4882a593Smuzhiyun #define CIF_CSI_ID3_CTRL1		0x9c
266*4882a593Smuzhiyun #define CIF_CSI_WATER_LINE		0xa0
267*4882a593Smuzhiyun #define CIF_CSI_MIPI_LVDS_CTRL		0xa0
268*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_Y_ID0		0xa4
269*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_Y_ID0		0xa8
270*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_UV_ID0	0xac
271*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_UV_ID0	0xb0
272*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_Y_ID0		0xb4
273*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_Y_ID0		0xb8
274*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_UV_ID0		0xbc
275*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_UV_ID0		0xc0
276*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_Y_ID1		0xc4
277*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_Y_ID1		0xc8
278*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_UV_ID1	0xcc
279*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_UV_ID1	0xd0
280*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_Y_ID1		0xd4
281*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_Y_ID1		0xd8
282*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_UV_ID1		0xdc
283*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_UV_ID1		0xe0
284*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_Y_ID2		0xe4
285*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_Y_ID2		0xe8
286*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_UV_ID2	0xec
287*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_UV_ID2	0xf0
288*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_Y_ID2		0xf4
289*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_Y_ID2		0xf8
290*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_UV_ID2		0xfc
291*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_UV_ID2		0x100
292*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_Y_ID3		0x104
293*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_Y_ID3		0x108
294*4882a593Smuzhiyun #define CIF_CSI_FRM0_ADDR_UV_ID3	0x10c
295*4882a593Smuzhiyun #define CIF_CSI_FRM1_ADDR_UV_ID3	0x110
296*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_Y_ID3		0x114
297*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_Y_ID3		0x118
298*4882a593Smuzhiyun #define CIF_CSI_FRM0_VLW_UV_ID3		0x11c
299*4882a593Smuzhiyun #define CIF_CSI_FRM1_VLW_UV_ID3		0x120
300*4882a593Smuzhiyun #define CIF_CSI_INTEN			0x124
301*4882a593Smuzhiyun #define CIF_CSI_INTSTAT			0x128
302*4882a593Smuzhiyun #define CIF_CSI_LINE_INT_NUM_ID0_1	0x12c
303*4882a593Smuzhiyun #define CIF_CSI_LINE_INT_NUM_ID2_3	0x130
304*4882a593Smuzhiyun #define CIF_CSI_LINE_CNT_ID0_1		0x134
305*4882a593Smuzhiyun #define CIF_CSI_LINE_CNT_ID2_3		0x138
306*4882a593Smuzhiyun #define CIF_CSI_ID0_CROP_START		0x13c
307*4882a593Smuzhiyun #define CIF_CSI_ID1_CROP_START		0x140
308*4882a593Smuzhiyun #define CIF_CSI_ID2_CROP_START		0x144
309*4882a593Smuzhiyun #define CIF_CSI_ID3_CROP_START		0x148
310*4882a593Smuzhiyun #define CIF_CSI_FRAME_NUM_VC0		0x14c
311*4882a593Smuzhiyun #define CIF_CSI_FRAME_NUM_VC1		0x150
312*4882a593Smuzhiyun #define CIF_CSI_FRAME_NUM_VC2		0x154
313*4882a593Smuzhiyun #define CIF_CSI_FRAME_NUM_VC3		0x158
314*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID0	0x150
315*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID0	0x154
316*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID0	0x158
317*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID0	0x15c
318*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID1	0x160
319*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID1	0x164
320*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID1	0x168
321*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID1	0x16c
322*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID2	0x170
323*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID2	0x174
324*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID2	0x178
325*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID2	0x17c
326*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID3	0x180
327*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID3	0x184
328*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID3	0x188
329*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID3	0x18c
330*4882a593Smuzhiyun #define CIF_Y_STAT_CONTROL		0x190
331*4882a593Smuzhiyun #define CIF_Y_STAT_VALUE		0x194
332*4882a593Smuzhiyun #define CIF_MMU_DTE_ADDR		0x800
333*4882a593Smuzhiyun #define CIF_MMU_STATUS			0x804
334*4882a593Smuzhiyun #define CIF_MMU_COMMAND			0x808
335*4882a593Smuzhiyun #define CIF_MMU_PAGE_FAULT_ADDR		0x80c
336*4882a593Smuzhiyun #define CIF_MMU_ZAP_ONE_LINE		0x810
337*4882a593Smuzhiyun #define CIF_MMU_INT_RAWSTAT		0x814
338*4882a593Smuzhiyun #define CIF_MMU_INT_CLEAR		0x818
339*4882a593Smuzhiyun #define CIF_MMU_INT_MASK		0x81c
340*4882a593Smuzhiyun #define CIF_MMU_INT_STATUS		0x820
341*4882a593Smuzhiyun #define CIF_MMU_AUTO_GATING		0x824
342*4882a593Smuzhiyun 
343*4882a593Smuzhiyun /* RK3588 DVP Registers Offset */
344*4882a593Smuzhiyun #define DVP_CTRL			0x10
345*4882a593Smuzhiyun #define DVP_INTEN			0x14
346*4882a593Smuzhiyun #define DVP_INTSTAT			0x18
347*4882a593Smuzhiyun #define DVP_FOR				0x1C
348*4882a593Smuzhiyun #define DVP_MULTI_ID			0x20
349*4882a593Smuzhiyun #define DVP_SAV_EAV			0x24
350*4882a593Smuzhiyun #define DVP_CROP_SIZE			0x28
351*4882a593Smuzhiyun #define DVP_CROP			0x2C
352*4882a593Smuzhiyun #define DVP_FRM0_ADDR_Y_ID0		0x30
353*4882a593Smuzhiyun #define DVP_FRM0_ADDR_UV_ID0		0x34
354*4882a593Smuzhiyun #define DVP_FRM1_ADDR_Y_ID0		0x38
355*4882a593Smuzhiyun #define DVP_FRM1_ADDR_UV_ID0		0x3C
356*4882a593Smuzhiyun #define DVP_FRM0_ADDR_Y_ID1		0x40
357*4882a593Smuzhiyun #define DVP_FRM0_ADDR_UV_ID1		0x44
358*4882a593Smuzhiyun #define DVP_FRM1_ADDR_Y_ID1		0x48
359*4882a593Smuzhiyun #define DVP_FRM1_ADDR_UV_ID1		0x4C
360*4882a593Smuzhiyun #define DVP_FRM0_ADDR_Y_ID2		0x50
361*4882a593Smuzhiyun #define DVP_FRM0_ADDR_UV_ID2		0x54
362*4882a593Smuzhiyun #define DVP_FRM1_ADDR_Y_ID2		0x58
363*4882a593Smuzhiyun #define DVP_FRM1_ADDR_UV_ID2		0x5C
364*4882a593Smuzhiyun #define DVP_FRM0_ADDR_Y_ID3		0x60
365*4882a593Smuzhiyun #define DVP_FRM0_ADDR_UV_ID3		0x64
366*4882a593Smuzhiyun #define DVP_FRM1_ADDR_Y_ID3		0x68
367*4882a593Smuzhiyun #define DVP_FRM1_ADDR_UV_ID3		0x6C
368*4882a593Smuzhiyun #define DVP_VIR_LINE_WIDTH		0x70
369*4882a593Smuzhiyun #define DVP_LINE_INT_NUM_01		0x74
370*4882a593Smuzhiyun #define DVP_LINE_INT_NUM_23		0x78
371*4882a593Smuzhiyun #define DVP_LINE_CNT_01			0x7C
372*4882a593Smuzhiyun #define DVP_LINE_CNT_23			0x80
373*4882a593Smuzhiyun 
374*4882a593Smuzhiyun /* RK3588 CSI Registers Offset */
375*4882a593Smuzhiyun #define CSI_MIPI0_ID0_CTRL0		0x100
376*4882a593Smuzhiyun #define CSI_MIPI0_ID0_CTRL1		0x104
377*4882a593Smuzhiyun #define CSI_MIPI0_ID1_CTRL0		0x108
378*4882a593Smuzhiyun #define CSI_MIPI0_ID1_CTRL1		0x10C
379*4882a593Smuzhiyun #define CSI_MIPI0_ID2_CTRL0		0x110
380*4882a593Smuzhiyun #define CSI_MIPI0_ID2_CTRL1		0x114
381*4882a593Smuzhiyun #define CSI_MIPI0_ID3_CTRL0		0x118
382*4882a593Smuzhiyun #define CSI_MIPI0_ID3_CTRL1		0x11C
383*4882a593Smuzhiyun #define CSI_MIPI0_CTRL			0x120
384*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_Y_ID0	0x124
385*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_Y_ID0	0x128
386*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_UV_ID0	0x12C
387*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_UV_ID0	0x130
388*4882a593Smuzhiyun #define CSI_MIPI0_VLW_ID0		0x134
389*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_Y_ID1	0x138
390*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_Y_ID1	0x13C
391*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_UV_ID1	0x140
392*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_UV_ID1	0x144
393*4882a593Smuzhiyun #define CSI_MIPI0_VLW_ID1		0x148
394*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_Y_ID2	0x14C
395*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_Y_ID2	0x150
396*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_UV_ID2	0x154
397*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_UV_ID2	0x158
398*4882a593Smuzhiyun #define CSI_MIPI0_VLW_ID2		0x15C
399*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_Y_ID3	0x160
400*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_Y_ID3	0x164
401*4882a593Smuzhiyun #define CSI_MIPI0_FRM0_ADDR_UV_ID3	0x168
402*4882a593Smuzhiyun #define CSI_MIPI0_FRM1_ADDR_UV_ID3	0x16C
403*4882a593Smuzhiyun #define CSI_MIPI0_VLW_ID3		0x170
404*4882a593Smuzhiyun #define CSI_MIPI0_INTEN			0x174
405*4882a593Smuzhiyun #define CSI_MIPI0_INTSTAT		0x178
406*4882a593Smuzhiyun #define CSI_MIPI0_LINE_INT_NUM_ID0_1	0x17C
407*4882a593Smuzhiyun #define CSI_MIPI0_LINE_INT_NUM_ID2_3	0x180
408*4882a593Smuzhiyun #define CSI_MIPI0_LINE_CNT_ID0_1	0x184
409*4882a593Smuzhiyun #define CSI_MIPI0_LINE_CNT_ID2_3	0x188
410*4882a593Smuzhiyun #define CSI_MIPI0_ID0_CROP_START	0x18C
411*4882a593Smuzhiyun #define CSI_MIPI0_ID1_CROP_START	0x190
412*4882a593Smuzhiyun #define CSI_MIPI0_ID2_CROP_START	0x194
413*4882a593Smuzhiyun #define CSI_MIPI0_ID3_CROP_START	0x198
414*4882a593Smuzhiyun #define CSI_MIPI0_FRAME_NUM_VC0		0x19C
415*4882a593Smuzhiyun #define CSI_MIPI0_FRAME_NUM_VC1		0x1A0
416*4882a593Smuzhiyun #define CSI_MIPI0_FRAME_NUM_VC2		0x1A4
417*4882a593Smuzhiyun #define CSI_MIPI0_FRAME_NUM_VC3		0x1A8
418*4882a593Smuzhiyun #define CSI_MIPI0_EFFECT_CODE_ID0	0x1AC
419*4882a593Smuzhiyun #define CSI_MIPI0_EFFECT_CODE_ID1	0x1B0
420*4882a593Smuzhiyun #define CSI_MIPI0_EFFECT_CODE_ID2	0x1B4
421*4882a593Smuzhiyun #define CSI_MIPI0_EFFECT_CODE_ID3	0x1B8
422*4882a593Smuzhiyun #define CSI_MIPI0_ON_PAD		0x1BC
423*4882a593Smuzhiyun 
424*4882a593Smuzhiyun /* RV1106 CONTROL Registers Offset */
425*4882a593Smuzhiyun #define CIF_LVDS0_ID0_CTRL0		0x1D0
426*4882a593Smuzhiyun #define CIF_LVDS0_ID1_CTRL0		0x1D4
427*4882a593Smuzhiyun #define CIF_LVDS0_ID2_CTRL0		0x1D8
428*4882a593Smuzhiyun #define CIF_LVDS0_ID3_CTRL0		0x1DC
429*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID0_RV1106	0x1E0
430*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID0_RV1106	0x1E4
431*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID0_RV1106	0x1E8
432*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID0_RV1106	0x1EC
433*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID1_RV1106	0x1F0
434*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID1_RV1106	0x1F4
435*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID1_RV1106	0x1F8
436*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID1_RV1106	0x1FC
437*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID2_RV1106	0x200
438*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID2_RV1106	0x204
439*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID2_RV1106	0x208
440*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID2_RV1106	0x20C
441*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT0_ID3_RV1106	0x210
442*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK0_ID3_RV1106	0x214
443*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_ACT1_ID3_RV1106	0x218
444*4882a593Smuzhiyun #define CIF_LVDS_SAV_EAV_BLK1_ID3_RV1106	0x21C
445*4882a593Smuzhiyun 
446*4882a593Smuzhiyun /* RK3588 CONTROL Registers Offset */
447*4882a593Smuzhiyun #define GLB_CTRL			0X000
448*4882a593Smuzhiyun #define GLB_INTEN			0X004
449*4882a593Smuzhiyun #define GLB_INTST			0X008
450*4882a593Smuzhiyun #define SCL_CH_CTRL			0x700
451*4882a593Smuzhiyun #define SCL_CTRL			0x704
452*4882a593Smuzhiyun #define SCL_FRM0_ADDR_CH0		0x708
453*4882a593Smuzhiyun #define SCL_FRM1_ADDR_CH0		0x70C
454*4882a593Smuzhiyun #define SCL_VLW_CH0			0x710
455*4882a593Smuzhiyun #define SCL_FRM0_ADDR_CH1		0x714
456*4882a593Smuzhiyun #define SCL_FRM1_ADDR_CH1		0x718
457*4882a593Smuzhiyun #define SCL_VLW_CH1			0x71C
458*4882a593Smuzhiyun #define SCL_FRM0_ADDR_CH2		0x720
459*4882a593Smuzhiyun #define SCL_FRM1_ADDR_CH2		0x724
460*4882a593Smuzhiyun #define SCL_VLW_CH2			0x728
461*4882a593Smuzhiyun #define SCL_FRM0_ADDR_CH3		0x72C
462*4882a593Smuzhiyun #define SCL_FRM1_ADDR_CH3		0x730
463*4882a593Smuzhiyun #define SCL_VLW_CH3			0x734
464*4882a593Smuzhiyun #define SCL_BLC_CH0			0x738
465*4882a593Smuzhiyun #define SCL_BLC_CH1			0x73C
466*4882a593Smuzhiyun #define SCL_BLC_CH2			0x740
467*4882a593Smuzhiyun #define SCL_BLC_CH3			0x744
468*4882a593Smuzhiyun #define TOISP0_CH_CTRL			0x780
469*4882a593Smuzhiyun #define TOISP0_CROP_SIZE		0x784
470*4882a593Smuzhiyun #define TOISP0_CROP			0x788
471*4882a593Smuzhiyun #define TOISP1_CH_CTRL			0x78C
472*4882a593Smuzhiyun #define TOISP1_CROP_SIZE		0x790
473*4882a593Smuzhiyun #define TOISP1_CROP			0x794
474*4882a593Smuzhiyun 
475*4882a593Smuzhiyun /* The key register bit description */
476*4882a593Smuzhiyun 
477*4882a593Smuzhiyun /* CIF_CTRL Reg */
478*4882a593Smuzhiyun #define DISABLE_CAPTURE			(0x0 << 0)
479*4882a593Smuzhiyun #define ENABLE_CAPTURE			(0x1 << 0)
480*4882a593Smuzhiyun #define MODE_ONEFRAME			(0x0 << 1)
481*4882a593Smuzhiyun #define MODE_PINGPONG			(0x1 << 1)
482*4882a593Smuzhiyun #define MODE_LINELOOP			(0x2 << 1)
483*4882a593Smuzhiyun #define AXI_BURST_16			(0xF << 12)
484*4882a593Smuzhiyun #define DVP_PRESS_EN			(0x1 << 12)
485*4882a593Smuzhiyun #define DVP_HURRY_EN			(0x1 << 8)
486*4882a593Smuzhiyun #define DVP_DMA_EN			(0x1 << 1)
487*4882a593Smuzhiyun #define DVP_SW_WATER_LINE_75		(0x0 << 5)
488*4882a593Smuzhiyun #define DVP_SW_WATER_LINE_50		(0x1 << 5)
489*4882a593Smuzhiyun #define DVP_SW_WATER_LINE_25		(0x2 << 5)
490*4882a593Smuzhiyun #define DVP_SW_WATER_LINE_00		(0x3 << 5)
491*4882a593Smuzhiyun 
492*4882a593Smuzhiyun /* CIF_INTEN */
493*4882a593Smuzhiyun #define INTEN_DISABLE			(0x0 << 0)
494*4882a593Smuzhiyun #define FRAME_END_EN			(0x1 << 0)
495*4882a593Smuzhiyun #define BUS_ERR_EN			(0x1 << 6)
496*4882a593Smuzhiyun #define SCL_ERR_EN			(0x1 << 7)
497*4882a593Smuzhiyun #define PRE_INF_FRAME_END_EN		(0x1 << 8)
498*4882a593Smuzhiyun #define PST_INF_FRAME_END_EN		(0x1 << 9)
499*4882a593Smuzhiyun #define LINE_INT_EN			(0x1 << 10)
500*4882a593Smuzhiyun #define DVP_CHANNEL1_FRM_END_EN		(0x1 << 11)
501*4882a593Smuzhiyun #define DVP_CHANNEL2_FRM_END_EN		(0x1 << 12)
502*4882a593Smuzhiyun #define DVP_CHANNEL3_FRM_END_EN		(0x1 << 13)
503*4882a593Smuzhiyun 
504*4882a593Smuzhiyun /* CIF INTSTAT */
505*4882a593Smuzhiyun #define INTSTAT_CLS			(0x3FF)
506*4882a593Smuzhiyun #define FRAME_END			(0x01 << 0)
507*4882a593Smuzhiyun #define LINE_ERR			(0x01 << 2)
508*4882a593Smuzhiyun #define PIX_ERR				(0x01 << 3)
509*4882a593Smuzhiyun #define IFIFO_OVERFLOW			(0x01 << 4)
510*4882a593Smuzhiyun #define DFIFO_OVERFLOW			(0x01 << 5)
511*4882a593Smuzhiyun #define BUS_ERR				(0x01 << 6)
512*4882a593Smuzhiyun #define PRE_INF_FRAME_END		(0x01 << 8)
513*4882a593Smuzhiyun #define PST_INF_FRAME_END		(0x01 << 9)
514*4882a593Smuzhiyun #define LINE_INT_END			(0x01 << 10)
515*4882a593Smuzhiyun #define FRAME_END_CLR			(0x01 << 0)
516*4882a593Smuzhiyun #define PRE_INF_FRAME_END_CLR		(0x01 << 8)
517*4882a593Smuzhiyun #define PST_INF_FRAME_END_CLR		(0x01 << 9)
518*4882a593Smuzhiyun #define INTSTAT_ERR			(0xFC)
519*4882a593Smuzhiyun #define INTSTAT_ERR_RK3588		(DVP_SIZE_ERR |\
520*4882a593Smuzhiyun 					 DVP_FIFO_OVERFLOW |\
521*4882a593Smuzhiyun 					 DVP_BANDWIDTH_LACK)
522*4882a593Smuzhiyun 
523*4882a593Smuzhiyun #define DVP_ALL_OVERFLOW		(IFIFO_OVERFLOW | DFIFO_OVERFLOW)
524*4882a593Smuzhiyun 
525*4882a593Smuzhiyun #define DVP_FIFO_OVERFLOW		(0x01 << 16)
526*4882a593Smuzhiyun #define DVP_BANDWIDTH_LACK		(0x01 << 17)
527*4882a593Smuzhiyun 
528*4882a593Smuzhiyun #define DVP_SIZE_ERR_ID0		(0x1 << 22)
529*4882a593Smuzhiyun #define DVP_SIZE_ERR_ID1		(0x1 << 23)
530*4882a593Smuzhiyun #define DVP_SIZE_ERR_ID2		(0x1 << 24)
531*4882a593Smuzhiyun #define DVP_SIZE_ERR_ID3		(0x1 << 25)
532*4882a593Smuzhiyun 
533*4882a593Smuzhiyun #define DVP_SIZE_ERR			(DVP_SIZE_ERR_ID0 |\
534*4882a593Smuzhiyun 					 DVP_SIZE_ERR_ID1 |\
535*4882a593Smuzhiyun 					 DVP_SIZE_ERR_ID2 |\
536*4882a593Smuzhiyun 					 DVP_SIZE_ERR_ID3)
537*4882a593Smuzhiyun 
538*4882a593Smuzhiyun #define DVP_SW_PRESS_VALUE(val)		(((val) & 0x7) << 13)
539*4882a593Smuzhiyun #define DVP_SW_HURRY_VALUE(val)		(((val) & 0x7) << 9)
540*4882a593Smuzhiyun #define DVP_SW_CAP_EN(ID)		(2 << ID)
541*4882a593Smuzhiyun #define DVP_SW_DMA_EN(ID)		(0x100000 << ID)
542*4882a593Smuzhiyun #define DVP_START_INTSTAT(ID)		(0x3 << ((ID) * 2))
543*4882a593Smuzhiyun 
544*4882a593Smuzhiyun #define DVP_DMA_END_INTEN(id)	\
545*4882a593Smuzhiyun 	({ \
546*4882a593Smuzhiyun 	unsigned int mask; \
547*4882a593Smuzhiyun 	switch (id) { \
548*4882a593Smuzhiyun 	case 0: \
549*4882a593Smuzhiyun 		mask = 0x1 << 0; \
550*4882a593Smuzhiyun 		break; \
551*4882a593Smuzhiyun 	default: \
552*4882a593Smuzhiyun 		mask = 0x1 << (id  + 10); \
553*4882a593Smuzhiyun 		break; \
554*4882a593Smuzhiyun 	} \
555*4882a593Smuzhiyun 	mask; \
556*4882a593Smuzhiyun 	})
557*4882a593Smuzhiyun 
558*4882a593Smuzhiyun #define DVP_LINE_INTEN			(0x01 << 10)
559*4882a593Smuzhiyun 
560*4882a593Smuzhiyun #define DVP_DMA_END_INTSTAT(id)		\
561*4882a593Smuzhiyun 	({ \
562*4882a593Smuzhiyun 	unsigned int mask; \
563*4882a593Smuzhiyun 	switch (id) { \
564*4882a593Smuzhiyun 	case 0: \
565*4882a593Smuzhiyun 		mask = 0x1 << 0; \
566*4882a593Smuzhiyun 		break; \
567*4882a593Smuzhiyun 	default: \
568*4882a593Smuzhiyun 		mask = 0x1 << (id  + 10); \
569*4882a593Smuzhiyun 		break; \
570*4882a593Smuzhiyun 	} \
571*4882a593Smuzhiyun 	mask; \
572*4882a593Smuzhiyun 	})
573*4882a593Smuzhiyun 
574*4882a593Smuzhiyun #define DVP_PST_INTSTAT			PST_INF_FRAME_END
575*4882a593Smuzhiyun #define DVP_LINE_INTSTAT		(0x01 << 10)
576*4882a593Smuzhiyun 
577*4882a593Smuzhiyun /* FRAME STATUS */
578*4882a593Smuzhiyun #define FRAME_STAT_CLS			0x00
579*4882a593Smuzhiyun /* write 0 to clear frame 0 */
580*4882a593Smuzhiyun #define FRM0_STAT_CLS			0xfffffffe
581*4882a593Smuzhiyun #define FRAME_NUM_SHIFT			(16U)
582*4882a593Smuzhiyun #define FRAME_NUM_MASK			(0xffff << FRAME_NUM_SHIFT)
583*4882a593Smuzhiyun #define CIF_GET_FRAME_ID(val)		(((val) & FRAME_NUM_MASK) >> FRAME_NUM_SHIFT)
584*4882a593Smuzhiyun 
585*4882a593Smuzhiyun /* CIF FORMAT */
586*4882a593Smuzhiyun #define VSY_HIGH_ACTIVE			(0x01 << 0)
587*4882a593Smuzhiyun #define VSY_LOW_ACTIVE			(0x00 << 0)
588*4882a593Smuzhiyun #define HSY_LOW_ACTIVE			(0x01 << 1)
589*4882a593Smuzhiyun #define HSY_HIGH_ACTIVE			(0x00 << 1)
590*4882a593Smuzhiyun #define INPUT_MODE_YUV			(0x00 << 2)
591*4882a593Smuzhiyun #define INPUT_MODE_PAL			(0x02 << 2)
592*4882a593Smuzhiyun #define INPUT_MODE_BT656_YUV422		(0x02 << 2)
593*4882a593Smuzhiyun #define INPUT_MODE_NTSC			(0x03 << 2)
594*4882a593Smuzhiyun #define INPUT_MODE_BT1120		(0x07 << 2)
595*4882a593Smuzhiyun #define INPUT_MODE_RAW			(0x04 << 2)
596*4882a593Smuzhiyun #define INPUT_MODE_JPEG			(0x05 << 2)
597*4882a593Smuzhiyun #define INPUT_MODE_SONY_RAW		(0x05 << 2)
598*4882a593Smuzhiyun #define INPUT_MODE_MIPI			(0x06 << 2)
599*4882a593Smuzhiyun #define YUV_INPUT_ORDER_UYVY		(0x00 << 5)
600*4882a593Smuzhiyun #define YUV_INPUT_ORDER_YVYU		(0x01 << 5)
601*4882a593Smuzhiyun #define YUV_INPUT_ORDER_VYUY		(0x10 << 5)
602*4882a593Smuzhiyun #define YUV_INPUT_ORDER_YUYV		(0x03 << 5)
603*4882a593Smuzhiyun #define YUV_INPUT_422			(0x00 << 7)
604*4882a593Smuzhiyun #define YUV_INPUT_420			(0x01 << 7)
605*4882a593Smuzhiyun #define INPUT_420_ORDER_EVEN		(0x00 << 8)
606*4882a593Smuzhiyun #define INPUT_420_ORDER_ODD		(0x01 << 8)
607*4882a593Smuzhiyun #define CCIR_INPUT_ORDER_ODD		(0x00 << 9)
608*4882a593Smuzhiyun #define CCIR_INPUT_ORDER_EVEN		(0x01 << 9)
609*4882a593Smuzhiyun #define RAW_DATA_WIDTH_8		(0x00 << 11)
610*4882a593Smuzhiyun #define RAW_DATA_WIDTH_10		(0x01 << 11)
611*4882a593Smuzhiyun #define RAW_DATA_WIDTH_12		(0x02 << 11)
612*4882a593Smuzhiyun #define MIPI_MODE_32BITS_BYPASS		(0x00 << 13)
613*4882a593Smuzhiyun #define MIPI_MODE_RGB			(0x01 << 13)
614*4882a593Smuzhiyun #define MIPI_MODE_YUV			(0x02 << 13)
615*4882a593Smuzhiyun #define YUV_OUTPUT_422			(0x00 << 16)
616*4882a593Smuzhiyun #define YUV_OUTPUT_420			(0x01 << 16)
617*4882a593Smuzhiyun #define OUTPUT_420_ORDER_EVEN		(0x00 << 17)
618*4882a593Smuzhiyun #define OUTPUT_420_ORDER_ODD		(0x01 << 17)
619*4882a593Smuzhiyun #define RAWD_DATA_LITTLE_ENDIAN		(0x00 << 18)
620*4882a593Smuzhiyun #define RAWD_DATA_BIG_ENDIAN		(0x01 << 18)
621*4882a593Smuzhiyun #define UV_STORAGE_ORDER_UVUV		(0x00 << 19)
622*4882a593Smuzhiyun #define UV_STORAGE_ORDER_VUVU		(0x01 << 19)
623*4882a593Smuzhiyun #define BT1120_CLOCK_SINGLE_EDGES	(0x00 << 24)
624*4882a593Smuzhiyun #define BT1120_CLOCK_DOUBLE_EDGES	(0x01 << 24)
625*4882a593Smuzhiyun #define BT1120_TRANSMIT_INTERFACE	(0x00 << 25)
626*4882a593Smuzhiyun #define BT1120_TRANSMIT_PROGRESS	(0x01 << 25)
627*4882a593Smuzhiyun #define BT1120_YC_SWAP			(0x01 << 26)
628*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_DISABLE	(0x00 << 28)
629*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_ENABLE	(0x01 << 28)
630*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_SEL_MSB	(0x00 << 29)
631*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_SEL_LSB	(0x01 << 29)
632*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_MODE_1	(0x00 << 30)
633*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_MODE_2	(0x01 << 30)
634*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_MODE_4	(0x02 << 30)
635*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_0_MASK	~(0x03 << 4)
636*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_1_MASK	~(0x03 << 12)
637*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_2_MASK	~(0x03 << 20)
638*4882a593Smuzhiyun #define BT656_1120_MULTI_ID_3_MASK	~(0x03 << 28)
639*4882a593Smuzhiyun #define	CIF_HIGH_ALIGN			(0x01 << 18)
640*4882a593Smuzhiyun #define	CIF_HIGH_ALIGN_RK3588		(0x01 << 21)
641*4882a593Smuzhiyun #define BT656_DETECT_SAV		(0X01 << 13)
642*4882a593Smuzhiyun #define BT656_DETECT_SAV_EAV		(0X00 << 13)
643*4882a593Smuzhiyun 
644*4882a593Smuzhiyun #define BT1120_CLOCK_SINGLE_EDGES_RK3588	(0x00 << 11)
645*4882a593Smuzhiyun #define BT1120_CLOCK_DOUBLE_EDGES_RK3588	(0x01 << 11)
646*4882a593Smuzhiyun #define TRANSMIT_INTERFACE_RK3588		(0x01 << 9)
647*4882a593Smuzhiyun #define TRANSMIT_PROGRESS_RK3588		(0x00 << 9)
648*4882a593Smuzhiyun #define BT1120_YC_SWAP_RK3588			(0x01 << 12)
649*4882a593Smuzhiyun #define INPUT_BT601_YUV422			(0x00 << 2)
650*4882a593Smuzhiyun #define INPUT_BT601_RAW				(0x01 << 2)
651*4882a593Smuzhiyun #define INPUT_BT656_YUV422			(0x02 << 2)
652*4882a593Smuzhiyun #define INPUT_BT1120_YUV422			(0x03 << 2)
653*4882a593Smuzhiyun #define INPUT_SONY_RAW				(0x04 << 2)
654*4882a593Smuzhiyun 
655*4882a593Smuzhiyun /* CIF_SCL_CTRL */
656*4882a593Smuzhiyun #define ENABLE_SCL_DOWN			(0x01 << 0)
657*4882a593Smuzhiyun #define DISABLE_SCL_DOWN		(0x00 << 0)
658*4882a593Smuzhiyun #define ENABLE_SCL_UP			(0x01 << 1)
659*4882a593Smuzhiyun #define DISABLE_SCL_UP			(0x00 << 1)
660*4882a593Smuzhiyun #define ENABLE_YUV_16BIT_BYPASS		(0x01 << 4)
661*4882a593Smuzhiyun #define DISABLE_YUV_16BIT_BYPASS	(0x00 << 4)
662*4882a593Smuzhiyun #define ENABLE_RAW_16BIT_BYPASS		(0x01 << 5)
663*4882a593Smuzhiyun #define DISABLE_RAW_16BIT_BYPASS	(0x00 << 5)
664*4882a593Smuzhiyun #define ENABLE_32BIT_BYPASS		(0x01 << 6)
665*4882a593Smuzhiyun #define DISABLE_32BIT_BYPASS		(0x00 << 6)
666*4882a593Smuzhiyun 
667*4882a593Smuzhiyun /* CIF_FRAME_INTSTAT */
668*4882a593Smuzhiyun #define CIF_F0_READY			(0x01 << 0)
669*4882a593Smuzhiyun #define CIF_F1_READY			(0x01 << 1)
670*4882a593Smuzhiyun #define DVP_CHANNEL0_FRM_READ		(CIF_F0_READY | CIF_F1_READY)
671*4882a593Smuzhiyun #define DVP_CHANNEL1_F0_READY		(0x01 << 4)
672*4882a593Smuzhiyun #define DVP_CHANNEL1_F1_READY		(0x01 << 5)
673*4882a593Smuzhiyun #define DVP_CHANNEL1_FRM_READ		(DVP_CHANNEL1_F0_READY | DVP_CHANNEL1_F1_READY)
674*4882a593Smuzhiyun #define DVP_CHANNEL2_F0_READY		(0x01 << 8)
675*4882a593Smuzhiyun #define DVP_CHANNEL2_F1_READY		(0x01 << 9)
676*4882a593Smuzhiyun #define DVP_CHANNEL2_FRM_READ		(DVP_CHANNEL2_F0_READY | DVP_CHANNEL2_F1_READY)
677*4882a593Smuzhiyun #define DVP_CHANNEL3_F0_READY		(0x01 << 12)
678*4882a593Smuzhiyun #define DVP_CHANNEL3_F1_READY		(0x01 << 13)
679*4882a593Smuzhiyun #define DVP_CHANNEL3_FRM_READ		(DVP_CHANNEL3_F0_READY | DVP_CHANNEL3_F1_READY)
680*4882a593Smuzhiyun 
681*4882a593Smuzhiyun #define DVP_FRAME0_START_ID0		(0x1 << 0)
682*4882a593Smuzhiyun #define DVP_FRAME1_START_ID0		(0x1 << 1)
683*4882a593Smuzhiyun 
684*4882a593Smuzhiyun #define DVP_FRAME_END_ID0		(0x1 << 0)
685*4882a593Smuzhiyun #define DVP_FRAME_END_ID1		(0x1 << 11)
686*4882a593Smuzhiyun #define DVP_FRAME_END_ID2		(0x1 << 12)
687*4882a593Smuzhiyun #define DVP_FRAME_END_ID3		(0x1 << 13)
688*4882a593Smuzhiyun 
689*4882a593Smuzhiyun #define DVP_FRAME0_END_ID0		(0x1 << 8)
690*4882a593Smuzhiyun #define DVP_FRAME1_END_ID0		(0x1 << 9)
691*4882a593Smuzhiyun #define DVP_ALL_END_ID0			(DVP_FRAME0_END_ID0 | DVP_FRAME1_END_ID0)
692*4882a593Smuzhiyun 
693*4882a593Smuzhiyun #define DVP_FRAME0_END_ID1		(0x1 << 10)
694*4882a593Smuzhiyun #define DVP_FRAME1_END_ID1		(0x1 << 11)
695*4882a593Smuzhiyun #define DVP_ALL_END_ID1			(DVP_FRAME0_END_ID1 | DVP_FRAME1_END_ID1)
696*4882a593Smuzhiyun 
697*4882a593Smuzhiyun #define DVP_FRAME0_END_ID2		(0x1 << 12)
698*4882a593Smuzhiyun #define DVP_FRAME1_END_ID2		(0x1 << 13)
699*4882a593Smuzhiyun #define DVP_ALL_END_ID2			(DVP_FRAME0_END_ID2 | DVP_FRAME1_END_ID2)
700*4882a593Smuzhiyun 
701*4882a593Smuzhiyun #define DVP_FRAME0_END_ID3		(0x1 << 14)
702*4882a593Smuzhiyun #define DVP_FRAME1_END_ID3		(0x1 << 15)
703*4882a593Smuzhiyun #define DVP_ALL_END_ID3			(DVP_FRAME0_END_ID3 | DVP_FRAME1_END_ID3)
704*4882a593Smuzhiyun 
705*4882a593Smuzhiyun #define DVP_ALIGN_MSB			(0x01 << 21)
706*4882a593Smuzhiyun #define DVP_ALIGN_LSB			(0x00 << 21)
707*4882a593Smuzhiyun 
708*4882a593Smuzhiyun #define DVP_FRM_STS_ID0(x)		(((x) & (0x3 << 0)) >> 0)
709*4882a593Smuzhiyun #define DVP_FRM_STS_ID1(x)		(((x) & (0x3 << 4)) >> 4)
710*4882a593Smuzhiyun #define DVP_FRM_STS_ID2(x)		(((x) & (0x3 << 8)) >> 8)
711*4882a593Smuzhiyun #define DVP_FRM_STS_ID3(x)		(((x) & (0x3 << 12)) >> 12)
712*4882a593Smuzhiyun 
713*4882a593Smuzhiyun #define DVP_SW_MULTI_ID(channel, id, bits)	\
714*4882a593Smuzhiyun 	({ \
715*4882a593Smuzhiyun 		unsigned int mask; \
716*4882a593Smuzhiyun 		switch (channel) { \
717*4882a593Smuzhiyun 		case 0: \
718*4882a593Smuzhiyun 			mask = ((bits) << 4) | ((id) << 0); \
719*4882a593Smuzhiyun 			break; \
720*4882a593Smuzhiyun 		case 1: \
721*4882a593Smuzhiyun 			mask = ((bits) << 12) | ((id) << 8); \
722*4882a593Smuzhiyun 			break; \
723*4882a593Smuzhiyun 		case 2: \
724*4882a593Smuzhiyun 			mask = ((bits) << 20) | ((id) << 16); \
725*4882a593Smuzhiyun 			break; \
726*4882a593Smuzhiyun 		case 3: \
727*4882a593Smuzhiyun 			mask = ((bits) << 28) | ((id) << 24); \
728*4882a593Smuzhiyun 			break; \
729*4882a593Smuzhiyun 		default: \
730*4882a593Smuzhiyun 			mask = ((bits) << 4) | ((id) << 0); \
731*4882a593Smuzhiyun 			break; \
732*4882a593Smuzhiyun 		} \
733*4882a593Smuzhiyun 		mask; \
734*4882a593Smuzhiyun 	})
735*4882a593Smuzhiyun 
736*4882a593Smuzhiyun /* CIF CROP */
737*4882a593Smuzhiyun #define CIF_CROP_Y_SHIFT		16
738*4882a593Smuzhiyun #define CIF_CROP_X_SHIFT		0
739*4882a593Smuzhiyun 
740*4882a593Smuzhiyun /* CIF SCALE*/
741*4882a593Smuzhiyun #define SCALE_END_INTSTAT(ch)		(0x3 << ((ch + 1) * 2))
742*4882a593Smuzhiyun #define SCALE_FIFO_OVERFLOW(ch)		(1 << (10 + ch))
743*4882a593Smuzhiyun #define SCALE_TOISP_AXI0_ERR		(1 << 0)
744*4882a593Smuzhiyun #define SCALE_TOISP_AXI1_ERR		(1 << 1)
745*4882a593Smuzhiyun #define CIF_SCALE_SW_PRESS_VALUE(val)	(((val) & 0x7) << 13)
746*4882a593Smuzhiyun #define CIF_SCALE_SW_PRESS_ENABLE	(0x1 << 12)
747*4882a593Smuzhiyun #define CIF_SCALE_SW_HURRY_VALUE(val)	(((val) & 0x7) << 5)
748*4882a593Smuzhiyun #define CIF_SCALE_SW_HURRY_ENABLE	(0x1 << 4)
749*4882a593Smuzhiyun #define CIF_SCALE_SW_WATER_LINE(val)	(val << 1)
750*4882a593Smuzhiyun #define CIF_SCALE_SW_SRC_CH(val, ch)	((val & 0x1f) << (3 + ch * 8))
751*4882a593Smuzhiyun #define CIF_SCALE_SW_MODE(val, ch)	((val & 0x3) << (1 + ch * 8))
752*4882a593Smuzhiyun #define CIF_SCALE_EN(ch)		(1 << (ch * 8))
753*4882a593Smuzhiyun #define SW_SCALE_END(intstat, ch)	((intstat >> ((ch + 1) * 2)) & 0x3)
754*4882a593Smuzhiyun #define SCALE_SOFT_RESET(ch)		(0x1 << (ch + 16))
755*4882a593Smuzhiyun 
756*4882a593Smuzhiyun /* CIF TOISP*/
757*4882a593Smuzhiyun #define CIF_TOISP0_FS(ch)		(BIT(14) << ch)
758*4882a593Smuzhiyun #define CIF_TOISP1_FS(ch)		(BIT(17) << ch)
759*4882a593Smuzhiyun #define CIF_TOISP0_FE(ch)		(BIT(20) << ch)
760*4882a593Smuzhiyun #define CIF_TOISP1_FE(ch)		(BIT(23) << ch)
761*4882a593Smuzhiyun 
762*4882a593Smuzhiyun /* CIF_CSI_ID_CTRL0 */
763*4882a593Smuzhiyun #define CSI_DISABLE_CAPTURE		(0x0 << 0)
764*4882a593Smuzhiyun #define CSI_ENABLE_CAPTURE		(0x1 << 0)
765*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RAW8		(0x0 << 1)
766*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RAW10		(0x1 << 1)
767*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RAW12		(0x2 << 1)
768*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RGB888		(0x3 << 1)
769*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV422		(0x4 << 1)
770*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV420SP		(0x5 << 1)
771*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV400		(0x6 << 1)
772*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RGB565		(0x7 << 1)
773*4882a593Smuzhiyun #define CSI_DISABLE_COMMAND_MODE	(0x0 << 4)
774*4882a593Smuzhiyun #define CSI_ENABLE_COMMAND_MODE		(0x1 << 4)
775*4882a593Smuzhiyun #define CSI_DISABLE_CROP		(0x0 << 5)
776*4882a593Smuzhiyun #define CSI_ENABLE_CROP			(0x1 << 5)
777*4882a593Smuzhiyun #define CSI_DISABLE_CROP_V1		(0x0 << 4)
778*4882a593Smuzhiyun #define CSI_ENABLE_CROP_V1		(0x1 << 4)
779*4882a593Smuzhiyun #define CSI_ENABLE_MIPI_COMPACT		(0x1 << 6)
780*4882a593Smuzhiyun #define CSI_YUV_INPUT_ORDER_UYVY	(0x0 << 16)
781*4882a593Smuzhiyun #define CSI_YUV_INPUT_ORDER_VYUY	(0x1 << 16)
782*4882a593Smuzhiyun #define CSI_YUV_INPUT_ORDER_YUYV	(0x2 << 16)
783*4882a593Smuzhiyun #define CSI_YUV_INPUT_ORDER_YVYU	(0x3 << 16)
784*4882a593Smuzhiyun #define CSI_HIGH_ALIGN			(0x1 << 31)
785*4882a593Smuzhiyun #define CSI_HIGH_ALIGN_RK3588		(0x1 << 27)
786*4882a593Smuzhiyun 
787*4882a593Smuzhiyun #define CSI_YUV_OUTPUT_ORDER_UYVY	(0x0 << 18)
788*4882a593Smuzhiyun #define CSI_YUV_OUTPUT_ORDER_VYUY	(0x1 << 18)
789*4882a593Smuzhiyun #define CSI_YUV_OUTPUT_ORDER_YUYV	(0x2 << 18)
790*4882a593Smuzhiyun #define CSI_YUV_OUTPUT_ORDER_YVYU	(0x3 << 18)
791*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RAW_COMPACT	(0x0 << 5)
792*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_RAW_UNCOMPACT	(0x1 << 5)
793*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV_PACKET	(0x2 << 5)
794*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV400_RK3588	(0x3 << 5)
795*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV422SP_RK3588	(0x4 << 5)
796*4882a593Smuzhiyun #define CSI_WRDDR_TYPE_YUV420SP_RK3588	(0x5 << 5)
797*4882a593Smuzhiyun #define CSI_ALIGN_MSB			(0x01 << 27)
798*4882a593Smuzhiyun #define CSI_ALIGN_LSB			(0x0 << 27)
799*4882a593Smuzhiyun #define CSI_DMA_ENABLE			(0x1 << 28)
800*4882a593Smuzhiyun 
801*4882a593Smuzhiyun #define CSI_NO_HDR			(0X0 << 22)
802*4882a593Smuzhiyun #define CSI_HDR2			(0X1 << 22)
803*4882a593Smuzhiyun #define CSI_HDR3			(0X2 << 22)
804*4882a593Smuzhiyun 
805*4882a593Smuzhiyun #define CSI_HDR_MODE_VC			(0x0 << 20)
806*4882a593Smuzhiyun #define CSI_HDR_MODE_LINE_CNT		(0x1 << 20)
807*4882a593Smuzhiyun #define CSI_HDR_MODE_LINE_INFO		(0x2 << 20)
808*4882a593Smuzhiyun #define CSI_HDR_VC_MODE_PROTECT		(0x1 << 29)
809*4882a593Smuzhiyun 
810*4882a593Smuzhiyun #define LVDS_ENABLE_CAPTURE		(0x1 << 16)
811*4882a593Smuzhiyun #define LVDS_MODE(mode)			(((mode) & 0x7) << 17)
812*4882a593Smuzhiyun #define LVDS_LANES_ENABLED(lanes)	\
813*4882a593Smuzhiyun 	({ \
814*4882a593Smuzhiyun 		unsigned int mask; \
815*4882a593Smuzhiyun 		switch (lanes) { \
816*4882a593Smuzhiyun 		case 1: \
817*4882a593Smuzhiyun 			mask = 0x1 << 20; \
818*4882a593Smuzhiyun 			break; \
819*4882a593Smuzhiyun 		case 2: \
820*4882a593Smuzhiyun 			mask = 0x3 << 20; \
821*4882a593Smuzhiyun 			break; \
822*4882a593Smuzhiyun 		case 3: \
823*4882a593Smuzhiyun 			mask = 0x7 << 20; \
824*4882a593Smuzhiyun 			break; \
825*4882a593Smuzhiyun 		case 4: \
826*4882a593Smuzhiyun 			mask = 0xf << 20; \
827*4882a593Smuzhiyun 			break; \
828*4882a593Smuzhiyun 		default: \
829*4882a593Smuzhiyun 			mask = 0x1 << 20; \
830*4882a593Smuzhiyun 			break; \
831*4882a593Smuzhiyun 		} \
832*4882a593Smuzhiyun 		mask; \
833*4882a593Smuzhiyun 	})
834*4882a593Smuzhiyun 
835*4882a593Smuzhiyun #define LVDS_MAIN_LANE(index)		(((index) & 0x3) << 24)
836*4882a593Smuzhiyun #define LVDS_FID(id)			(((id) & 0x3) << 26)
837*4882a593Smuzhiyun #define LVDS_HDR_FRAME_X2		(0x0 << 28)
838*4882a593Smuzhiyun #define LVDS_HDR_FRAME_X3		(0x1 << 28)
839*4882a593Smuzhiyun #define LVDS_COMPACT			(0x1 << 29)
840*4882a593Smuzhiyun 
841*4882a593Smuzhiyun #define LVDS_ENABLE_CAPTURE_RV1106		(0x1 << 0)
842*4882a593Smuzhiyun #define LVDS_MODE_RV1106(mode)			(((mode) & 0x7) << 1)
843*4882a593Smuzhiyun #define LVDS_LANES_ENABLED_RV1106(lanes)	\
844*4882a593Smuzhiyun 	({ \
845*4882a593Smuzhiyun 		unsigned int mask; \
846*4882a593Smuzhiyun 		switch (lanes) { \
847*4882a593Smuzhiyun 		case 1: \
848*4882a593Smuzhiyun 			mask = 0x1 << 4; \
849*4882a593Smuzhiyun 			break; \
850*4882a593Smuzhiyun 		case 2: \
851*4882a593Smuzhiyun 			mask = 0x3 << 4; \
852*4882a593Smuzhiyun 			break; \
853*4882a593Smuzhiyun 		case 3: \
854*4882a593Smuzhiyun 			mask = 0x7 << 4; \
855*4882a593Smuzhiyun 			break; \
856*4882a593Smuzhiyun 		case 4: \
857*4882a593Smuzhiyun 			mask = 0xf << 4; \
858*4882a593Smuzhiyun 			break; \
859*4882a593Smuzhiyun 		default: \
860*4882a593Smuzhiyun 			mask = 0x1 << 4; \
861*4882a593Smuzhiyun 			break; \
862*4882a593Smuzhiyun 		} \
863*4882a593Smuzhiyun 		mask; \
864*4882a593Smuzhiyun 	})
865*4882a593Smuzhiyun 
866*4882a593Smuzhiyun #define LVDS_MAIN_LANE_RV1106(index)		(((index) & 0x3) << 8)
867*4882a593Smuzhiyun #define LVDS_FID_RV1106(id)			(((id) & 0x3) << 10)
868*4882a593Smuzhiyun #define LVDS_HDR_FRAME_X2_RV1106		(0x0 << 12)
869*4882a593Smuzhiyun #define LVDS_HDR_FRAME_X3_RV1106		(0x1 << 12)
870*4882a593Smuzhiyun #define LVDS_DMAEN_RV1106			(0x1 << 15)
871*4882a593Smuzhiyun 
872*4882a593Smuzhiyun /* CIF_CSI_INTEN */
873*4882a593Smuzhiyun #define CSI_FRAME1_START_INTEN(id)	(0x1 << ((id) * 2 + 1))
874*4882a593Smuzhiyun #define CSI_FRAME0_END_INTEN(id)	(0x1 << ((id) * 2 + 8))
875*4882a593Smuzhiyun #define CSI_FRAME1_END_INTEN(id)	(0x1 << ((id) * 2 + 9))
876*4882a593Smuzhiyun #define CSI_DMA_Y_FIFO_OVERFLOW_INTEN	(0x1 << 16)
877*4882a593Smuzhiyun #define CSI_DMA_UV_FIFO_OVERFLOW_INTEN	(0x1 << 17)
878*4882a593Smuzhiyun #define CSI_CONFIG_FIFO_OVERFLOW_INTEN	(0x1 << 18)
879*4882a593Smuzhiyun #define CSI_BANDWIDTH_LACK_INTEN	(0x1 << 19)
880*4882a593Smuzhiyun #define CSI_RX_FIFO_OVERFLOW_INTEN	(0x1 << 20)
881*4882a593Smuzhiyun #define CSI_ALL_FRAME_START_INTEN	(0xff << 0)
882*4882a593Smuzhiyun #define CSI_ALL_FRAME_END_INTEN		(0xff << 8)
883*4882a593Smuzhiyun #define CSI_ALL_ERROR_INTEN		(0x1f << 16)
884*4882a593Smuzhiyun #define CSI_ALL_ERROR_INTEN_V1		(0xf0f << 16)
885*4882a593Smuzhiyun 
886*4882a593Smuzhiyun #define CSI_START_INTEN(id)		(0x3 << ((id) * 2))
887*4882a593Smuzhiyun #define CSI_DMA_END_INTEN(id)		(0x3 << ((id) * 2 + 8))
888*4882a593Smuzhiyun #define CSI_LINE_INTEN(id)		(0x1 << ((id) + 21))
889*4882a593Smuzhiyun #define CSI_LINE_INTEN_RK3588(id)	(0x1 << ((id) + 20))
890*4882a593Smuzhiyun 
891*4882a593Smuzhiyun #define CSI_START_INTSTAT(id)		(0x3 << ((id) * 2))
892*4882a593Smuzhiyun #define CSI_DMA_END_INTSTAT(id)		(0x3 << ((id) * 2 + 8))
893*4882a593Smuzhiyun #define CSI_LINE_INTSTAT(id)		(0x1 << ((id) + 21))
894*4882a593Smuzhiyun #define CSI_LINE_INTSTAT_V1(id)		(0x1 << ((id) + 20))
895*4882a593Smuzhiyun 
896*4882a593Smuzhiyun /* CIF_CSI_INTSTAT */
897*4882a593Smuzhiyun #define CSI_FRAME0_START_ID0		(0x1 << 0)
898*4882a593Smuzhiyun #define CSI_FRAME1_START_ID0		(0x1 << 1)
899*4882a593Smuzhiyun #define CSI_FRAME0_START_ID1		(0x1 << 2)
900*4882a593Smuzhiyun #define CSI_FRAME1_START_ID1		(0x1 << 3)
901*4882a593Smuzhiyun #define CSI_FRAME0_START_ID2		(0x1 << 4)
902*4882a593Smuzhiyun #define CSI_FRAME1_START_ID2		(0x1 << 5)
903*4882a593Smuzhiyun #define CSI_FRAME0_START_ID3		(0x1 << 6)
904*4882a593Smuzhiyun #define CSI_FRAME1_START_ID3		(0x1 << 7)
905*4882a593Smuzhiyun #define CSI_FRAME0_END_ID0		(0x1 << 8)
906*4882a593Smuzhiyun #define CSI_FRAME1_END_ID0		(0x1 << 9)
907*4882a593Smuzhiyun #define CSI_FRAME0_END_ID1		(0x1 << 10)
908*4882a593Smuzhiyun #define CSI_FRAME1_END_ID1		(0x1 << 11)
909*4882a593Smuzhiyun #define CSI_FRAME0_END_ID2		(0x1 << 12)
910*4882a593Smuzhiyun #define CSI_FRAME1_END_ID2		(0x1 << 13)
911*4882a593Smuzhiyun #define CSI_FRAME0_END_ID3		(0x1 << 14)
912*4882a593Smuzhiyun #define CSI_FRAME1_END_ID3		(0x1 << 15)
913*4882a593Smuzhiyun #define CSI_DMA_Y_FIFO_OVERFLOW		(0x1 << 16)
914*4882a593Smuzhiyun #define CSI_DMA_UV_FIFO_OVERFLOW	(0x1 << 17)
915*4882a593Smuzhiyun #define CSI_CONFIG_FIFO_OVERFLOW	(0x1 << 18)
916*4882a593Smuzhiyun #define CSI_BANDWIDTH_LACK		(0x1 << 19)
917*4882a593Smuzhiyun #define CSI_RX_FIFO_OVERFLOW		(0x1 << 20)
918*4882a593Smuzhiyun #define CSI_LINE_ID0_INTST		(0x1 << 21)
919*4882a593Smuzhiyun #define CSI_LINE_ID1_INTST		(0x1 << 22)
920*4882a593Smuzhiyun #define CSI_LINE_ID2_INTST		(0x1 << 23)
921*4882a593Smuzhiyun #define CSI_LINE_ID3_INTST		(0x1 << 24)
922*4882a593Smuzhiyun #define CSI_DMA_LVDS_ID2_FIFO_OVERFLOW	(0x1 << 25)
923*4882a593Smuzhiyun #define CSI_DMA_LVDS_ID3_FIFO_OVERFLOW	(0x1 << 26)
924*4882a593Smuzhiyun #define CSI_SIZE_ERR_ID0		(0x1 << 24)
925*4882a593Smuzhiyun #define CSI_SIZE_ERR_ID1		(0x1 << 25)
926*4882a593Smuzhiyun #define CSI_SIZE_ERR_ID2		(0x1 << 26)
927*4882a593Smuzhiyun #define CSI_SIZE_ERR_ID3		(0x1 << 27)
928*4882a593Smuzhiyun 
929*4882a593Smuzhiyun #define CSI_FRAME_START_ID0		(CSI_FRAME0_START_ID0 |\
930*4882a593Smuzhiyun 					 CSI_FRAME1_START_ID0)
931*4882a593Smuzhiyun #define CSI_FRAME_START_ID1		(CSI_FRAME0_START_ID1 |\
932*4882a593Smuzhiyun 					 CSI_FRAME1_START_ID1)
933*4882a593Smuzhiyun #define CSI_FRAME_START_ID2		(CSI_FRAME0_START_ID2 |\
934*4882a593Smuzhiyun 					 CSI_FRAME1_START_ID2)
935*4882a593Smuzhiyun #define CSI_FRAME_START_ID3		(CSI_FRAME0_START_ID3 |\
936*4882a593Smuzhiyun 					 CSI_FRAME1_START_ID3)
937*4882a593Smuzhiyun #define CSI_FRAME_END_ID0		(CSI_FRAME0_END_ID0 |\
938*4882a593Smuzhiyun 					 CSI_FRAME1_END_ID0)
939*4882a593Smuzhiyun #define CSI_FRAME_END_ID1		(CSI_FRAME0_END_ID1 |\
940*4882a593Smuzhiyun 					 CSI_FRAME1_END_ID1)
941*4882a593Smuzhiyun #define CSI_FRAME_END_ID2		(CSI_FRAME0_END_ID2 |\
942*4882a593Smuzhiyun 					 CSI_FRAME1_END_ID2)
943*4882a593Smuzhiyun #define CSI_FRAME_END_ID3		(CSI_FRAME0_END_ID3 |\
944*4882a593Smuzhiyun 					 CSI_FRAME1_END_ID3)
945*4882a593Smuzhiyun #define CSI_FIFO_OVERFLOW		(CSI_DMA_Y_FIFO_OVERFLOW |\
946*4882a593Smuzhiyun 					 CSI_DMA_UV_FIFO_OVERFLOW |\
947*4882a593Smuzhiyun 					 CSI_CONFIG_FIFO_OVERFLOW |\
948*4882a593Smuzhiyun 					 CSI_RX_FIFO_OVERFLOW |\
949*4882a593Smuzhiyun 					 CSI_DMA_LVDS_ID2_FIFO_OVERFLOW |\
950*4882a593Smuzhiyun 					 CSI_DMA_LVDS_ID3_FIFO_OVERFLOW)
951*4882a593Smuzhiyun 
952*4882a593Smuzhiyun /*mask for rk3588*/
953*4882a593Smuzhiyun #define CSI_RX_FIFO_OVERFLOW_V1		(0x1 << 19)
954*4882a593Smuzhiyun #define CSI_BANDWIDTH_LACK_V1		(0x1 << 18)
955*4882a593Smuzhiyun #define CSI_ALL_ERROR_INTEN_V1		(0xf0f << 16)
956*4882a593Smuzhiyun 
957*4882a593Smuzhiyun 
958*4882a593Smuzhiyun #define CSI_FIFO_OVERFLOW_V1		(CSI_DMA_Y_FIFO_OVERFLOW |\
959*4882a593Smuzhiyun 					 CSI_DMA_UV_FIFO_OVERFLOW |\
960*4882a593Smuzhiyun 					 CSI_RX_FIFO_OVERFLOW_V1)
961*4882a593Smuzhiyun #define CSI_SIZE_ERR			(CSI_SIZE_ERR_ID0 |\
962*4882a593Smuzhiyun 					 CSI_SIZE_ERR_ID1 |\
963*4882a593Smuzhiyun 					 CSI_SIZE_ERR_ID2 |\
964*4882a593Smuzhiyun 					 CSI_SIZE_ERR_ID3)
965*4882a593Smuzhiyun 
966*4882a593Smuzhiyun /* CIF_MIPI_LVDS_CTRL */
967*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_DMA_IDLE			(0x1 << 16)
968*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_PRESS_VALUE(val)		(((val) & 0x3) << 13)
969*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_PRESS_VALUE_RK3588(val)	(((val) & 0x7) << 13)
970*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_PRESS_ENABLE			(0x1 << 12)
971*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_LVDS_WIDTH_8BITS		(0x0 << 9)
972*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_LVDS_WIDTH_10BITS		(0x1 << 9)
973*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_LVDS_WIDTH_12BITS		(0x2 << 9)
974*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_SEL_LVDS			(0x1 << 8)
975*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_SEL_LVDS_RV1106		(0x1 << 3)
976*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_HURRY_VALUE(val)		(((val) & 0x3) << 5)
977*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_HURRY_VALUE_RK3588(val)	(((val) & 0x7) << 5)
978*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_HURRY_ENABLE			(0x1 << 4)
979*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_75			(0x0 << 1)
980*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_50			(0x1 << 1)
981*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_25			(0x2 << 1)
982*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_00			(0x3 << 1)
983*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_ENABLE		(0x1 << 0)
984*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_DMA_IDLE_RK1808		(0x1 << 24)
985*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_HURRY_VALUE_RK1808(val)	(((val) & 0x3) << 17)
986*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_HURRY_ENABLE_RK1808		(0x1 << 16)
987*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_75_RK1808		(0x0 << 0)
988*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_50_RK1808		(0x1 << 0)
989*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_25_RK1808		(0x2 << 0)
990*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_00_RK1808		(0x3 << 0)
991*4882a593Smuzhiyun #define CIF_MIPI_LVDS_SW_WATER_LINE_ENABLE_RK1808	(0x1 << 4)
992*4882a593Smuzhiyun 
993*4882a593Smuzhiyun /* CSI Host Registers Define */
994*4882a593Smuzhiyun #define CSIHOST_N_LANES		0x04
995*4882a593Smuzhiyun #define CSIHOST_PHY_RSTZ	0x0c
996*4882a593Smuzhiyun #define CSIHOST_RESETN		0x10
997*4882a593Smuzhiyun #define CSIHOST_ERR1		0x20
998*4882a593Smuzhiyun #define CSIHOST_ERR2		0x24
999*4882a593Smuzhiyun #define CSIHOST_MSK1		0x28
1000*4882a593Smuzhiyun #define CSIHOST_MSK2		0x2c
1001*4882a593Smuzhiyun #define CSIHOST_CONTROL		0x40
1002*4882a593Smuzhiyun 
1003*4882a593Smuzhiyun #define SW_CPHY_EN(x)		((x) << 0)
1004*4882a593Smuzhiyun #define SW_DSI_EN(x)		((x) << 4)
1005*4882a593Smuzhiyun #define SW_DATATYPE_FS(x)	((x) << 8)
1006*4882a593Smuzhiyun #define SW_DATATYPE_FE(x)	((x) << 14)
1007*4882a593Smuzhiyun #define SW_DATATYPE_LS(x)	((x) << 20)
1008*4882a593Smuzhiyun #define SW_DATATYPE_LE(x)	((x) << 26)
1009*4882a593Smuzhiyun 
1010*4882a593Smuzhiyun #define SW_FRM_END_ID0(x)	(((x) & CSI_FRAME_END_ID0) >> 8)
1011*4882a593Smuzhiyun #define SW_FRM_END_ID1(x)	(((x) & CSI_FRAME_END_ID1) >> 10)
1012*4882a593Smuzhiyun #define SW_FRM_END_ID2(x)	(((x) & CSI_FRAME_END_ID2) >> 12)
1013*4882a593Smuzhiyun #define SW_FRM_END_ID3(x)	(((x) & CSI_FRAME_END_ID3) >> 14)
1014*4882a593Smuzhiyun 
1015*4882a593Smuzhiyun /*RV1106 SKIP FUNC*/
1016*4882a593Smuzhiyun #define RKCIF_CAP_SHIFT		0x18
1017*4882a593Smuzhiyun #define RKCIF_SKIP_SHIFT	0X15
1018*4882a593Smuzhiyun #define RKCIF_SKIP_EN(x)	(0x1 << (8 + x))
1019*4882a593Smuzhiyun 
1020*4882a593Smuzhiyun /* CIF LVDS SAV EAV Define */
1021*4882a593Smuzhiyun #define SW_LVDS_EAV_ACT(code)	(((code) & 0xfff) << 16)
1022*4882a593Smuzhiyun #define SW_LVDS_SAV_ACT(code)	(((code) & 0xfff) << 0)
1023*4882a593Smuzhiyun #define SW_LVDS_EAV_BLK(code)	(((code) & 0xfff) << 16)
1024*4882a593Smuzhiyun #define SW_LVDS_SAV_BLK(code)	(((code) & 0xfff) << 0)
1025*4882a593Smuzhiyun 
1026*4882a593Smuzhiyun /* GRF related with CIF */
1027*4882a593Smuzhiyun #define CIF_GRF_CIFIO_CON		(0x10250)
1028*4882a593Smuzhiyun #define CIF_PCLK_SAMPLING_EDGE_RISING	(0x04000400)
1029*4882a593Smuzhiyun #define CIF_PCLK_SAMPLING_EDGE_FALLING	(0x04000000)
1030*4882a593Smuzhiyun #define CIF_PCLK_DELAY_ENABLE		(0x02000200)
1031*4882a593Smuzhiyun #define CIF_PCLK_DELAY_DISABLE		(0x02000000)
1032*4882a593Smuzhiyun #define CIF_SAMPLING_EDGE_DOUBLE	(0x01000100)
1033*4882a593Smuzhiyun #define CIF_SAMPLING_EDGE_SINGLE	(0x01000000)
1034*4882a593Smuzhiyun #define CIF_PCLK_DELAY_NUM(num)		(0x00ff0000 | ((num) & 0xff))
1035*4882a593Smuzhiyun #define CIF_GRF_VI_CON0			(0x340)
1036*4882a593Smuzhiyun #define CIF_GRF_VI_CON1			(0x344)
1037*4882a593Smuzhiyun #define RK3568_CIF_PCLK_SAMPLING_EDGE_RISING	(0x10000000)
1038*4882a593Smuzhiyun #define RK3568_CIF_PCLK_SAMPLING_EDGE_FALLING	(0x10001000)
1039*4882a593Smuzhiyun #define RK3568_CIF_PCLK_SINGLE_EDGE		(0x02000000)
1040*4882a593Smuzhiyun #define RK3568_CIF_PCLK_DUAL_EDGE		(0x02000200)
1041*4882a593Smuzhiyun #define CIF_GRF_SOC_CON2			(0x308)
1042*4882a593Smuzhiyun #define RK3588_CIF_PCLK_SAMPLING_EDGE_RISING	(0x00100000)
1043*4882a593Smuzhiyun #define RK3588_CIF_PCLK_SAMPLING_EDGE_FALLING	(0x00100010)
1044*4882a593Smuzhiyun #define RK3588_CIF_PCLK_SINGLE_EDGE		(0x00200000)
1045*4882a593Smuzhiyun #define RK3588_CIF_PCLK_DUAL_EDGE		(0x00200020)
1046*4882a593Smuzhiyun #define RV1106_CIF_GRF_VI_CON			(0x50038)
1047*4882a593Smuzhiyun #define RV1106_CIF_GRF_VENC_WRAPPER		(0x10008)
1048*4882a593Smuzhiyun #define RV1106_CIF_PCLK_SINGLE_EDGE		(0x00040000)
1049*4882a593Smuzhiyun #define RV1106_CIF_PCLK_DUAL_EDGE		(0x00040004)
1050*4882a593Smuzhiyun #define RV1106_CIF_PCLK_EDGE_RISING_M0		(0x00020002)
1051*4882a593Smuzhiyun #define RV1106_CIF_PCLK_EDGE_FALLING_M0		(0x00020000)
1052*4882a593Smuzhiyun #define RV1106_CIF_PCLK_EDGE_RISING_M1		(0x00010001)
1053*4882a593Smuzhiyun #define RV1106_CIF_PCLK_EDGE_FALLING_M1		(0x00010000)
1054*4882a593Smuzhiyun #define RV1106_CIF_GRF_SEL_M0			(0x00010000)
1055*4882a593Smuzhiyun #define RV1106_CIF_GRF_SEL_M1			(0x00010001)
1056*4882a593Smuzhiyun 
1057*4882a593Smuzhiyun /*toisp*/
1058*4882a593Smuzhiyun #define TOISP_FS_CH0(index)		(0x1 << (14 + index * 3))
1059*4882a593Smuzhiyun #define TOISP_FS_CH1(index)		(0x1 << (15 + index * 3))
1060*4882a593Smuzhiyun #define TOISP_FS_CH2(index)		(0x1 << (16 + index * 3))
1061*4882a593Smuzhiyun 
1062*4882a593Smuzhiyun #define TOISP_END_CH0(index)		(0x1 << (20 + index * 3))
1063*4882a593Smuzhiyun #define TOISP_END_CH1(index)		(0x1 << (21 + index * 3))
1064*4882a593Smuzhiyun #define TOISP_END_CH2(index)		(0x1 << (22 + index * 3))
1065*4882a593Smuzhiyun 
1066*4882a593Smuzhiyun #endif
1067