xref: /linux/drivers/media/platform/ti/vpe/vip.h (revision c17ee635fd3a482b2ad2bf5e269755c2eae5f25e)
1*fc2873aaSDale Farnsworth /* SPDX-License-Identifier: GPL-2.0 */
2*fc2873aaSDale Farnsworth /*
3*fc2873aaSDale Farnsworth  * TI VIP capture driver
4*fc2873aaSDale Farnsworth  *
5*fc2873aaSDale Farnsworth  * Copyright (C) 2025 Texas Instruments Incorpated - http://www.ti.com/
6*fc2873aaSDale Farnsworth  * David Griego, <dagriego@biglakesoftware.com>
7*fc2873aaSDale Farnsworth  * Dale Farnsworth, <dale@farnsworth.org>
8*fc2873aaSDale Farnsworth  * Yemike Abhilash Chandra, <y-abhilashchandra@ti.com>
9*fc2873aaSDale Farnsworth  */
10*fc2873aaSDale Farnsworth 
11*fc2873aaSDale Farnsworth #ifndef __TI_VIP_H
12*fc2873aaSDale Farnsworth #define __TI_VIP_H
13*fc2873aaSDale Farnsworth 
14*fc2873aaSDale Farnsworth #include <linux/videodev2.h>
15*fc2873aaSDale Farnsworth #include <media/v4l2-ctrls.h>
16*fc2873aaSDale Farnsworth #include <media/v4l2-device.h>
17*fc2873aaSDale Farnsworth #include <media/v4l2-event.h>
18*fc2873aaSDale Farnsworth #include <media/v4l2-ioctl.h>
19*fc2873aaSDale Farnsworth #include <media/videobuf2-core.h>
20*fc2873aaSDale Farnsworth #include <media/videobuf2-dma-contig.h>
21*fc2873aaSDale Farnsworth #include <media/videobuf2-memops.h>
22*fc2873aaSDale Farnsworth #include <media/v4l2-fwnode.h>
23*fc2873aaSDale Farnsworth #include <media/v4l2-async.h>
24*fc2873aaSDale Farnsworth 
25*fc2873aaSDale Farnsworth #include "vpdma.h"
26*fc2873aaSDale Farnsworth #include "vpdma_priv.h"
27*fc2873aaSDale Farnsworth #include "sc.h"
28*fc2873aaSDale Farnsworth #include "csc.h"
29*fc2873aaSDale Farnsworth 
30*fc2873aaSDale Farnsworth #define VIP_INSTANCE1	1
31*fc2873aaSDale Farnsworth #define VIP_INSTANCE2	2
32*fc2873aaSDale Farnsworth #define VIP_INSTANCE3	3
33*fc2873aaSDale Farnsworth 
34*fc2873aaSDale Farnsworth #define VIP_SLICE1	0
35*fc2873aaSDale Farnsworth #define VIP_SLICE2	1
36*fc2873aaSDale Farnsworth #define VIP_NUM_SLICES	2
37*fc2873aaSDale Farnsworth 
38*fc2873aaSDale Farnsworth /*
39*fc2873aaSDale Farnsworth  * Additional client identifiers used for VPDMA configuration descriptors
40*fc2873aaSDale Farnsworth  */
41*fc2873aaSDale Farnsworth #define VIP_SLICE1_CFD_SC_CLIENT	7
42*fc2873aaSDale Farnsworth #define VIP_SLICE2_CFD_SC_CLIENT	8
43*fc2873aaSDale Farnsworth 
44*fc2873aaSDale Farnsworth #define VIP_PORTA	0
45*fc2873aaSDale Farnsworth #define VIP_PORTB	1
46*fc2873aaSDale Farnsworth #define VIP_NUM_PORTS	2
47*fc2873aaSDale Farnsworth 
48*fc2873aaSDale Farnsworth #define VIP_MAX_PLANES	2
49*fc2873aaSDale Farnsworth #define	VIP_LUMA	0
50*fc2873aaSDale Farnsworth #define VIP_CHROMA	1
51*fc2873aaSDale Farnsworth 
52*fc2873aaSDale Farnsworth #define VIP_CAP_STREAMS_PER_PORT	16
53*fc2873aaSDale Farnsworth #define VIP_VBI_STREAMS_PER_PORT	16
54*fc2873aaSDale Farnsworth 
55*fc2873aaSDale Farnsworth #define VIP_MAX_SUBDEV			5
56*fc2873aaSDale Farnsworth 
57*fc2873aaSDale Farnsworth #define VPDMA_FIRMWARE	"vpdma-1b8.bin"
58*fc2873aaSDale Farnsworth 
59*fc2873aaSDale Farnsworth /*
60*fc2873aaSDale Farnsworth  * This value needs to be at least as large as the number of entry in
61*fc2873aaSDale Farnsworth  * vip_formats[].
62*fc2873aaSDale Farnsworth  * When vip_formats[] is modified make sure to adjust this value also.
63*fc2873aaSDale Farnsworth  */
64*fc2873aaSDale Farnsworth #define VIP_MAX_ACTIVE_FMT		16
65*fc2873aaSDale Farnsworth /*
66*fc2873aaSDale Farnsworth  * Colorspace conversion unit can be in one of 3 modes:
67*fc2873aaSDale Farnsworth  * NA  - Not Available on this port
68*fc2873aaSDale Farnsworth  * Y2R - Needed for YUV to RGB on this port
69*fc2873aaSDale Farnsworth  * R2Y - Needed for RGB to YUV on this port
70*fc2873aaSDale Farnsworth  */
71*fc2873aaSDale Farnsworth enum vip_csc_state {
72*fc2873aaSDale Farnsworth 	VIP_CSC_NA = 0,
73*fc2873aaSDale Farnsworth 	VIP_CSC_Y2R,
74*fc2873aaSDale Farnsworth 	VIP_CSC_R2Y,
75*fc2873aaSDale Farnsworth };
76*fc2873aaSDale Farnsworth 
77*fc2873aaSDale Farnsworth /* buffer for one video frame */
78*fc2873aaSDale Farnsworth struct vip_buffer {
79*fc2873aaSDale Farnsworth 	/* common v4l buffer stuff */
80*fc2873aaSDale Farnsworth 	struct vb2_v4l2_buffer	vb;
81*fc2873aaSDale Farnsworth 	struct list_head	list;
82*fc2873aaSDale Farnsworth 	bool			drop;
83*fc2873aaSDale Farnsworth };
84*fc2873aaSDale Farnsworth 
85*fc2873aaSDale Farnsworth /*
86*fc2873aaSDale Farnsworth  * struct vip_fmt - VIP media bus format information
87*fc2873aaSDale Farnsworth  * @fourcc: V4L2 pixel format FCC identifier
88*fc2873aaSDale Farnsworth  * @code: V4L2 media bus format code
89*fc2873aaSDale Farnsworth  * @colorspace: V4L2 colorspace identifier
90*fc2873aaSDale Farnsworth  * @coplanar: 1 if unpacked Luma and Chroma, 0 otherwise (packed/interleaved)
91*fc2873aaSDale Farnsworth  * @vpdma_fmt: VPDMA data format per plane.
92*fc2873aaSDale Farnsworth  * @finfo: Cache v4l2_format_info for associated fourcc
93*fc2873aaSDale Farnsworth  */
94*fc2873aaSDale Farnsworth struct vip_fmt {
95*fc2873aaSDale Farnsworth 	u32	fourcc;
96*fc2873aaSDale Farnsworth 	u32	code;
97*fc2873aaSDale Farnsworth 	u32	colorspace;
98*fc2873aaSDale Farnsworth 	u8	coplanar;
99*fc2873aaSDale Farnsworth 	const struct vpdma_data_format *vpdma_fmt[VIP_MAX_PLANES];
100*fc2873aaSDale Farnsworth 	const struct v4l2_format_info *finfo;
101*fc2873aaSDale Farnsworth };
102*fc2873aaSDale Farnsworth 
103*fc2873aaSDale Farnsworth /*
104*fc2873aaSDale Farnsworth  * The vip_parser_data structures contains the memory mapped
105*fc2873aaSDale Farnsworth  * info to access the parser registers.
106*fc2873aaSDale Farnsworth  */
107*fc2873aaSDale Farnsworth struct vip_parser_data {
108*fc2873aaSDale Farnsworth 	void __iomem		*base;
109*fc2873aaSDale Farnsworth 
110*fc2873aaSDale Farnsworth 	struct platform_device *pdev;
111*fc2873aaSDale Farnsworth };
112*fc2873aaSDale Farnsworth 
113*fc2873aaSDale Farnsworth /*
114*fc2873aaSDale Farnsworth  * The vip_shared structure contains data that is shared by both
115*fc2873aaSDale Farnsworth  * the VIP1 and VIP2 slices.
116*fc2873aaSDale Farnsworth  */
117*fc2873aaSDale Farnsworth struct vip_shared {
118*fc2873aaSDale Farnsworth 	struct list_head	list;
119*fc2873aaSDale Farnsworth 	void __iomem		*base;
120*fc2873aaSDale Farnsworth 	struct vpdma_data	vpdma_data;
121*fc2873aaSDale Farnsworth 	struct vpdma_data	*vpdma;
122*fc2873aaSDale Farnsworth 	struct v4l2_device	v4l2_dev;
123*fc2873aaSDale Farnsworth 	struct vip_dev		*devs[VIP_NUM_SLICES];
124*fc2873aaSDale Farnsworth 	struct v4l2_ctrl_handler ctrl_handler;
125*fc2873aaSDale Farnsworth };
126*fc2873aaSDale Farnsworth 
127*fc2873aaSDale Farnsworth struct vip_ctrl_module {
128*fc2873aaSDale Farnsworth 	struct regmap	*syscon_pol;
129*fc2873aaSDale Farnsworth 	u32		syscon_offset;
130*fc2873aaSDale Farnsworth 	u32		syscon_bit_field[4];
131*fc2873aaSDale Farnsworth };
132*fc2873aaSDale Farnsworth 
133*fc2873aaSDale Farnsworth /*
134*fc2873aaSDale Farnsworth  * There are two vip_dev structure, one for each vip slice: VIP1 & VIP2.
135*fc2873aaSDale Farnsworth  */
136*fc2873aaSDale Farnsworth struct vip_dev {
137*fc2873aaSDale Farnsworth 	struct v4l2_device	v4l2_dev;
138*fc2873aaSDale Farnsworth 	struct platform_device	*pdev;
139*fc2873aaSDale Farnsworth 	struct vip_shared	*shared;
140*fc2873aaSDale Farnsworth 	struct vip_ctrl_module	*syscon;
141*fc2873aaSDale Farnsworth 	int			instance_id;
142*fc2873aaSDale Farnsworth 	int			slice_id;
143*fc2873aaSDale Farnsworth 	int			num_ports;	/* count of open ports */
144*fc2873aaSDale Farnsworth 	struct mutex		mutex;
145*fc2873aaSDale Farnsworth 	/* protects access to stream buffer queues */
146*fc2873aaSDale Farnsworth 	spinlock_t		slock;
147*fc2873aaSDale Farnsworth 
148*fc2873aaSDale Farnsworth 	int			irq;
149*fc2873aaSDale Farnsworth 	void __iomem		*base;
150*fc2873aaSDale Farnsworth 
151*fc2873aaSDale Farnsworth 	struct vip_port		*ports[VIP_NUM_PORTS];
152*fc2873aaSDale Farnsworth 
153*fc2873aaSDale Farnsworth 	char			name[16];
154*fc2873aaSDale Farnsworth 	/* parser data handle */
155*fc2873aaSDale Farnsworth 	struct vip_parser_data	*parser;
156*fc2873aaSDale Farnsworth 	/* scaler data handle */
157*fc2873aaSDale Farnsworth 	struct sc_data		*sc;
158*fc2873aaSDale Farnsworth 	/* scaler port assignation */
159*fc2873aaSDale Farnsworth 	int			sc_assigned;
160*fc2873aaSDale Farnsworth 	/* csc data handle */
161*fc2873aaSDale Farnsworth 	struct csc_data		*csc;
162*fc2873aaSDale Farnsworth 	/* csc port assignation */
163*fc2873aaSDale Farnsworth 	int			csc_assigned;
164*fc2873aaSDale Farnsworth };
165*fc2873aaSDale Farnsworth 
166*fc2873aaSDale Farnsworth /*
167*fc2873aaSDale Farnsworth  * There are two vip_port structures for each vip_dev, one for port A
168*fc2873aaSDale Farnsworth  * and one for port B.
169*fc2873aaSDale Farnsworth  */
170*fc2873aaSDale Farnsworth struct vip_port {
171*fc2873aaSDale Farnsworth 	struct vip_dev		*dev;
172*fc2873aaSDale Farnsworth 	int			port_id;
173*fc2873aaSDale Farnsworth 
174*fc2873aaSDale Farnsworth 	unsigned int		flags;
175*fc2873aaSDale Farnsworth 	struct v4l2_rect	c_rect;		/* crop rectangle */
176*fc2873aaSDale Farnsworth 	struct v4l2_mbus_framefmt mbus_framefmt;
177*fc2873aaSDale Farnsworth 	struct v4l2_mbus_framefmt try_mbus_framefmt;
178*fc2873aaSDale Farnsworth 
179*fc2873aaSDale Farnsworth 	char			name[16];
180*fc2873aaSDale Farnsworth 	struct vip_fmt		*fmt;		/* current format info */
181*fc2873aaSDale Farnsworth 	/* Number of channels/streams configured */
182*fc2873aaSDale Farnsworth 	int			num_streams_configured;
183*fc2873aaSDale Farnsworth 	int			num_streams;	/* count of open streams */
184*fc2873aaSDale Farnsworth 	struct vip_stream	*cap_streams[VIP_CAP_STREAMS_PER_PORT];
185*fc2873aaSDale Farnsworth 
186*fc2873aaSDale Farnsworth 	struct v4l2_async_notifier notifier;
187*fc2873aaSDale Farnsworth 	struct v4l2_subdev	*subdev;
188*fc2873aaSDale Farnsworth 	struct v4l2_fwnode_endpoint endpoint;
189*fc2873aaSDale Farnsworth 	struct vip_fmt		*active_fmt[VIP_MAX_ACTIVE_FMT];
190*fc2873aaSDale Farnsworth 	int			num_active_fmt;
191*fc2873aaSDale Farnsworth 	/* have new shadow reg values */
192*fc2873aaSDale Farnsworth 	bool			load_mmrs;
193*fc2873aaSDale Farnsworth 	/* shadow reg addr/data block */
194*fc2873aaSDale Farnsworth 	struct vpdma_buf	mmr_adb;
195*fc2873aaSDale Farnsworth 	/* h coeff buffer */
196*fc2873aaSDale Farnsworth 	struct vpdma_buf	sc_coeff_h;
197*fc2873aaSDale Farnsworth 	/* v coeff buffer */
198*fc2873aaSDale Farnsworth 	struct vpdma_buf	sc_coeff_v;
199*fc2873aaSDale Farnsworth 	/* Show if scaler resource is available on this port */
200*fc2873aaSDale Farnsworth 	bool			scaler;
201*fc2873aaSDale Farnsworth 	/* Show the csc resource state on this port */
202*fc2873aaSDale Farnsworth 	enum vip_csc_state	csc;
203*fc2873aaSDale Farnsworth };
204*fc2873aaSDale Farnsworth 
205*fc2873aaSDale Farnsworth /*
206*fc2873aaSDale Farnsworth  * When handling multiplexed video, there can be multiple streams for each
207*fc2873aaSDale Farnsworth  * port.  The vip_stream structure holds per-stream data.
208*fc2873aaSDale Farnsworth  */
209*fc2873aaSDale Farnsworth struct vip_stream {
210*fc2873aaSDale Farnsworth 	struct video_device	*vfd;
211*fc2873aaSDale Farnsworth 	struct vip_port		*port;
212*fc2873aaSDale Farnsworth 	int			stream_id;
213*fc2873aaSDale Farnsworth 	int			list_num;
214*fc2873aaSDale Farnsworth 	int			vfl_type;
215*fc2873aaSDale Farnsworth 	char			name[16];
216*fc2873aaSDale Farnsworth 	struct work_struct	recovery_work;
217*fc2873aaSDale Farnsworth 	int			num_recovery;
218*fc2873aaSDale Farnsworth 	enum v4l2_field		field;		/* current field */
219*fc2873aaSDale Farnsworth 	unsigned int		sequence;	/* current frame/field seq */
220*fc2873aaSDale Farnsworth 	enum v4l2_field		sup_field;	/* supported field value */
221*fc2873aaSDale Farnsworth 	unsigned int		width;		/* frame width */
222*fc2873aaSDale Farnsworth 	unsigned int		height;		/* frame height */
223*fc2873aaSDale Farnsworth 	unsigned int		bytesperline;	/* bytes per line in memory */
224*fc2873aaSDale Farnsworth 	unsigned int		sizeimage;	/* image size in memory */
225*fc2873aaSDale Farnsworth 	struct list_head	vidq;		/* incoming vip_bufs queue */
226*fc2873aaSDale Farnsworth 	struct list_head	dropq;		/* drop vip_bufs queue */
227*fc2873aaSDale Farnsworth 	struct list_head	post_bufs;	/* vip_bufs to be DMAed */
228*fc2873aaSDale Farnsworth 	/* Maintain a list of used channels - Needed for VPDMA cleanup */
229*fc2873aaSDale Farnsworth 	int			vpdma_channels[VPDMA_MAX_CHANNELS];
230*fc2873aaSDale Farnsworth 	int			vpdma_channels_to_abort[VPDMA_MAX_CHANNELS];
231*fc2873aaSDale Farnsworth 	struct vpdma_desc_list	desc_list;	/* DMA descriptor list */
232*fc2873aaSDale Farnsworth 	struct vpdma_dtd	*write_desc;
233*fc2873aaSDale Farnsworth 	/* next unused desc_list addr */
234*fc2873aaSDale Farnsworth 	void			*desc_next;
235*fc2873aaSDale Farnsworth 	struct vb2_queue	vb_vidq;
236*fc2873aaSDale Farnsworth };
237*fc2873aaSDale Farnsworth 
238*fc2873aaSDale Farnsworth /*
239*fc2873aaSDale Farnsworth  * VIP Enumerations
240*fc2873aaSDale Farnsworth  */
241*fc2873aaSDale Farnsworth enum data_path_select {
242*fc2873aaSDale Farnsworth 	ALL_FIELDS_DATA_SELECT = 0,
243*fc2873aaSDale Farnsworth 	VIP_CSC_SRC_DATA_SELECT,
244*fc2873aaSDale Farnsworth 	VIP_SC_SRC_DATA_SELECT,
245*fc2873aaSDale Farnsworth 	VIP_RGB_SRC_DATA_SELECT,
246*fc2873aaSDale Farnsworth 	VIP_RGB_OUT_LO_DATA_SELECT,
247*fc2873aaSDale Farnsworth 	VIP_RGB_OUT_HI_DATA_SELECT,
248*fc2873aaSDale Farnsworth 	VIP_CHR_DS_1_SRC_DATA_SELECT,
249*fc2873aaSDale Farnsworth 	VIP_CHR_DS_2_SRC_DATA_SELECT,
250*fc2873aaSDale Farnsworth 	VIP_MULTI_CHANNEL_DATA_SELECT,
251*fc2873aaSDale Farnsworth 	VIP_CHR_DS_1_DATA_BYPASS,
252*fc2873aaSDale Farnsworth 	VIP_CHR_DS_2_DATA_BYPASS,
253*fc2873aaSDale Farnsworth };
254*fc2873aaSDale Farnsworth 
255*fc2873aaSDale Farnsworth enum data_interface_modes {
256*fc2873aaSDale Farnsworth 	SINGLE_24B_INTERFACE = 0,
257*fc2873aaSDale Farnsworth 	SINGLE_16B_INTERFACE = 1,
258*fc2873aaSDale Farnsworth 	DUAL_8B_INTERFACE = 2,
259*fc2873aaSDale Farnsworth };
260*fc2873aaSDale Farnsworth 
261*fc2873aaSDale Farnsworth enum sync_types {
262*fc2873aaSDale Farnsworth 	EMBEDDED_SYNC_SINGLE_YUV422 = 0,
263*fc2873aaSDale Farnsworth 	EMBEDDED_SYNC_2X_MULTIPLEXED_YUV422 = 1,
264*fc2873aaSDale Farnsworth 	EMBEDDED_SYNC_4X_MULTIPLEXED_YUV422 = 2,
265*fc2873aaSDale Farnsworth 	EMBEDDED_SYNC_LINE_MULTIPLEXED_YUV422 = 3,
266*fc2873aaSDale Farnsworth 	DISCRETE_SYNC_SINGLE_YUV422 = 4,
267*fc2873aaSDale Farnsworth 	EMBEDDED_SYNC_SINGLE_RGB_OR_YUV444 = 5,
268*fc2873aaSDale Farnsworth 	DISCRETE_SYNC_SINGLE_RGB_24B = 10,
269*fc2873aaSDale Farnsworth };
270*fc2873aaSDale Farnsworth 
271*fc2873aaSDale Farnsworth #define VIP_NOT_ASSIGNED	-1
272*fc2873aaSDale Farnsworth 
273*fc2873aaSDale Farnsworth /*
274*fc2873aaSDale Farnsworth  * Register offsets and field selectors
275*fc2873aaSDale Farnsworth  */
276*fc2873aaSDale Farnsworth #define VIP_PID_FUNC			0xf02
277*fc2873aaSDale Farnsworth 
278*fc2873aaSDale Farnsworth #define VIP_PID				0x0000
279*fc2873aaSDale Farnsworth #define VIP_PID_MINOR_MASK              0x3f
280*fc2873aaSDale Farnsworth #define VIP_PID_MINOR_SHIFT             0
281*fc2873aaSDale Farnsworth #define VIP_PID_CUSTOM_MASK             0x03
282*fc2873aaSDale Farnsworth #define VIP_PID_CUSTOM_SHIFT            6
283*fc2873aaSDale Farnsworth #define VIP_PID_MAJOR_MASK              0x07
284*fc2873aaSDale Farnsworth #define VIP_PID_MAJOR_SHIFT             8
285*fc2873aaSDale Farnsworth #define VIP_PID_RTL_MASK                0x1f
286*fc2873aaSDale Farnsworth #define VIP_PID_RTL_SHIFT               11
287*fc2873aaSDale Farnsworth #define VIP_PID_FUNC_MASK               0xfff
288*fc2873aaSDale Farnsworth #define VIP_PID_FUNC_SHIFT              16
289*fc2873aaSDale Farnsworth #define VIP_PID_SCHEME_MASK             0x03
290*fc2873aaSDale Farnsworth #define VIP_PID_SCHEME_SHIFT            30
291*fc2873aaSDale Farnsworth 
292*fc2873aaSDale Farnsworth #define VIP_SYSCONFIG			0x0010
293*fc2873aaSDale Farnsworth #define VIP_SYSCONFIG_IDLE_MASK         0x03
294*fc2873aaSDale Farnsworth #define VIP_SYSCONFIG_IDLE_SHIFT        2
295*fc2873aaSDale Farnsworth #define VIP_SYSCONFIG_STANDBY_MASK      0x03
296*fc2873aaSDale Farnsworth #define VIP_SYSCONFIG_STANDBY_SHIFT     4
297*fc2873aaSDale Farnsworth #define VIP_FORCE_IDLE_MODE             0
298*fc2873aaSDale Farnsworth #define VIP_NO_IDLE_MODE                1
299*fc2873aaSDale Farnsworth #define VIP_SMART_IDLE_MODE             2
300*fc2873aaSDale Farnsworth #define VIP_SMART_IDLE_WAKEUP_MODE      3
301*fc2873aaSDale Farnsworth #define VIP_FORCE_STANDBY_MODE          0
302*fc2873aaSDale Farnsworth #define VIP_NO_STANDBY_MODE             1
303*fc2873aaSDale Farnsworth #define VIP_SMART_STANDBY_MODE          2
304*fc2873aaSDale Farnsworth #define VIP_SMART_STANDBY_WAKEUP_MODE   3
305*fc2873aaSDale Farnsworth 
306*fc2873aaSDale Farnsworth #define VIP_INTC_INTX_OFFSET		0x0020
307*fc2873aaSDale Farnsworth 
308*fc2873aaSDale Farnsworth #define VIP_INT0_STATUS0_RAW_SET	0x0020
309*fc2873aaSDale Farnsworth #define VIP_INT0_STATUS0_RAW		VIP_INT0_STATUS0_RAW_SET
310*fc2873aaSDale Farnsworth #define VIP_INT0_STATUS0_CLR		0x0028
311*fc2873aaSDale Farnsworth #define VIP_INT0_STATUS0		VIP_INT0_STATUS0_CLR
312*fc2873aaSDale Farnsworth #define VIP_INT0_ENABLE0_SET		0x0030
313*fc2873aaSDale Farnsworth #define VIP_INT0_ENABLE0		VIP_INT0_ENABLE0_SET
314*fc2873aaSDale Farnsworth #define VIP_INT0_ENABLE0_CLR		0x0038
315*fc2873aaSDale Farnsworth #define VIP_INT0_LIST0_COMPLETE         BIT(0)
316*fc2873aaSDale Farnsworth #define VIP_INT0_LIST0_NOTIFY           BIT(1)
317*fc2873aaSDale Farnsworth #define VIP_INT0_LIST1_COMPLETE         BIT(2)
318*fc2873aaSDale Farnsworth #define VIP_INT0_LIST1_NOTIFY           BIT(3)
319*fc2873aaSDale Farnsworth #define VIP_INT0_LIST2_COMPLETE         BIT(4)
320*fc2873aaSDale Farnsworth #define VIP_INT0_LIST2_NOTIFY           BIT(5)
321*fc2873aaSDale Farnsworth #define VIP_INT0_LIST3_COMPLETE         BIT(6)
322*fc2873aaSDale Farnsworth #define VIP_INT0_LIST3_NOTIFY           BIT(7)
323*fc2873aaSDale Farnsworth #define VIP_INT0_LIST4_COMPLETE         BIT(8)
324*fc2873aaSDale Farnsworth #define VIP_INT0_LIST4_NOTIFY           BIT(9)
325*fc2873aaSDale Farnsworth #define VIP_INT0_LIST5_COMPLETE         BIT(10)
326*fc2873aaSDale Farnsworth #define VIP_INT0_LIST5_NOTIFY           BIT(11)
327*fc2873aaSDale Farnsworth #define VIP_INT0_LIST6_COMPLETE         BIT(12)
328*fc2873aaSDale Farnsworth #define VIP_INT0_LIST6_NOTIFY           BIT(13)
329*fc2873aaSDale Farnsworth #define VIP_INT0_LIST7_COMPLETE         BIT(14)
330*fc2873aaSDale Farnsworth #define VIP_INT0_LIST7_NOTIFY           BIT(15)
331*fc2873aaSDale Farnsworth #define VIP_INT0_DESCRIPTOR             BIT(16)
332*fc2873aaSDale Farnsworth #define VIP_VIP1_PARSER_INT		BIT(20)
333*fc2873aaSDale Farnsworth #define VIP_VIP2_PARSER_INT		BIT(21)
334*fc2873aaSDale Farnsworth 
335*fc2873aaSDale Farnsworth #define VIP_INT0_STATUS1_RAW_SET        0x0024
336*fc2873aaSDale Farnsworth #define VIP_INT0_STATUS1_RAW            VIP_INT0_STATUS0_RAW_SET
337*fc2873aaSDale Farnsworth #define VIP_INT0_STATUS1_CLR            0x002c
338*fc2873aaSDale Farnsworth #define VIP_INT0_STATUS1                VIP_INT0_STATUS0_CLR
339*fc2873aaSDale Farnsworth #define VIP_INT0_ENABLE1_SET            0x0034
340*fc2873aaSDale Farnsworth #define VIP_INT0_ENABLE1                VIP_INT0_ENABLE0_SET
341*fc2873aaSDale Farnsworth #define VIP_INT0_ENABLE1_CLR            0x003c
342*fc2873aaSDale Farnsworth #define VIP_INT0_ENABLE1_STAT		0x004c
343*fc2873aaSDale Farnsworth #define VIP_INT0_CHANNEL_GROUP0		BIT(0)
344*fc2873aaSDale Farnsworth #define VIP_INT0_CHANNEL_GROUP1		BIT(1)
345*fc2873aaSDale Farnsworth #define VIP_INT0_CHANNEL_GROUP2		BIT(2)
346*fc2873aaSDale Farnsworth #define VIP_INT0_CHANNEL_GROUP3		BIT(3)
347*fc2873aaSDale Farnsworth #define VIP_INT0_CHANNEL_GROUP4		BIT(4)
348*fc2873aaSDale Farnsworth #define VIP_INT0_CHANNEL_GROUP5		BIT(5)
349*fc2873aaSDale Farnsworth #define VIP_INT0_CLIENT			BIT(7)
350*fc2873aaSDale Farnsworth #define VIP_VIP1_DS1_UV_ERROR_INT	BIT(22)
351*fc2873aaSDale Farnsworth #define VIP_VIP1_DS2_UV_ERROR_INT	BIT(23)
352*fc2873aaSDale Farnsworth #define VIP_VIP2_DS1_UV_ERROR_INT	BIT(24)
353*fc2873aaSDale Farnsworth #define VIP_VIP2_DS2_UV_ERROR_INT	BIT(25)
354*fc2873aaSDale Farnsworth 
355*fc2873aaSDale Farnsworth #define VIP_INTC_E0I			0x00a0
356*fc2873aaSDale Farnsworth 
357*fc2873aaSDale Farnsworth #define VIP_CLK_ENABLE			0x0100
358*fc2873aaSDale Farnsworth #define VIP_VPDMA_CLK_ENABLE		BIT(0)
359*fc2873aaSDale Farnsworth #define VIP_VIP1_DATA_PATH_CLK_ENABLE	BIT(16)
360*fc2873aaSDale Farnsworth #define VIP_VIP2_DATA_PATH_CLK_ENABLE	BIT(17)
361*fc2873aaSDale Farnsworth 
362*fc2873aaSDale Farnsworth #define VIP_CLK_RESET			0x0104
363*fc2873aaSDale Farnsworth #define VIP_VPDMA_RESET			BIT(0)
364*fc2873aaSDale Farnsworth #define VIP_VPDMA_CLK_RESET_MASK	0x1
365*fc2873aaSDale Farnsworth #define VIP_VPDMA_CLK_RESET_SHIFT	0
366*fc2873aaSDale Farnsworth #define VIP_DATA_PATH_CLK_RESET_MASK	0x1
367*fc2873aaSDale Farnsworth #define VIP_VIP1_DATA_PATH_RESET_SHIFT	16
368*fc2873aaSDale Farnsworth #define VIP_VIP2_DATA_PATH_RESET_SHIFT	17
369*fc2873aaSDale Farnsworth #define VIP_VIP1_DATA_PATH_RESET	BIT(16)
370*fc2873aaSDale Farnsworth #define VIP_VIP2_DATA_PATH_RESET	BIT(17)
371*fc2873aaSDale Farnsworth #define VIP_VIP1_PARSER_RESET		BIT(18)
372*fc2873aaSDale Farnsworth #define VIP_VIP2_PARSER_RESET		BIT(19)
373*fc2873aaSDale Farnsworth #define VIP_VIP1_CSC_RESET		BIT(20)
374*fc2873aaSDale Farnsworth #define VIP_VIP2_CSC_RESET		BIT(21)
375*fc2873aaSDale Farnsworth #define VIP_VIP1_SC_RESET		BIT(22)
376*fc2873aaSDale Farnsworth #define VIP_VIP2_SC_RESET		BIT(23)
377*fc2873aaSDale Farnsworth #define VIP_VIP1_DS1_RESET		BIT(25)
378*fc2873aaSDale Farnsworth #define VIP_VIP2_DS1_RESET		BIT(26)
379*fc2873aaSDale Farnsworth #define VIP_VIP1_DS2_RESET		BIT(27)
380*fc2873aaSDale Farnsworth #define VIP_VIP2_DS2_RESET		BIT(28)
381*fc2873aaSDale Farnsworth #define VIP_MAIN_RESET			BIT(31)
382*fc2873aaSDale Farnsworth 
383*fc2873aaSDale Farnsworth #define VIP_VIP1_DATA_PATH_SELECT	0x010c
384*fc2873aaSDale Farnsworth #define VIP_VIP2_DATA_PATH_SELECT	0x0110
385*fc2873aaSDale Farnsworth #define VIP_CSC_SRC_SELECT_MASK		0x07
386*fc2873aaSDale Farnsworth #define VIP_CSC_SRC_SELECT_SHFT		0
387*fc2873aaSDale Farnsworth #define VIP_SC_SRC_SELECT_MASK		0x07
388*fc2873aaSDale Farnsworth #define VIP_SC_SRC_SELECT_SHFT		3
389*fc2873aaSDale Farnsworth #define VIP_RGB_SRC_SELECT		BIT(6)
390*fc2873aaSDale Farnsworth #define VIP_RGB_OUT_LO_SRC_SELECT	BIT(7)
391*fc2873aaSDale Farnsworth #define VIP_RGB_OUT_HI_SRC_SELECT	BIT(8)
392*fc2873aaSDale Farnsworth #define VIP_DS1_SRC_SELECT_MASK		0x07
393*fc2873aaSDale Farnsworth #define VIP_DS1_SRC_SELECT_SHFT		9
394*fc2873aaSDale Farnsworth #define VIP_DS2_SRC_SELECT_MASK		0x07
395*fc2873aaSDale Farnsworth #define VIP_DS2_SRC_SELECT_SHFT		12
396*fc2873aaSDale Farnsworth #define VIP_MULTI_CHANNEL_SELECT	BIT(15)
397*fc2873aaSDale Farnsworth #define VIP_DS1_BYPASS			BIT(16)
398*fc2873aaSDale Farnsworth #define VIP_DS2_BYPASS			BIT(17)
399*fc2873aaSDale Farnsworth #define VIP_TESTPORT_B_SELECT		BIT(26)
400*fc2873aaSDale Farnsworth #define VIP_TESTPORT_A_SELECT		BIT(27)
401*fc2873aaSDale Farnsworth #define VIP_DATAPATH_SELECT_MASK	0x0f
402*fc2873aaSDale Farnsworth #define VIP_DATAPATH_SELECT_SHFT	28
403*fc2873aaSDale Farnsworth 
404*fc2873aaSDale Farnsworth #define VIP_PARSER_MAIN_CFG		0x0000
405*fc2873aaSDale Farnsworth #define VIP_DATA_INTERFACE_MODE_MASK	0x03
406*fc2873aaSDale Farnsworth #define VIP_DATA_INTERFACE_MODE_SHFT	0
407*fc2873aaSDale Farnsworth #define VIP_CLIP_BLANK			BIT(4)
408*fc2873aaSDale Farnsworth #define VIP_CLIP_ACTIVE			BIT(5)
409*fc2873aaSDale Farnsworth 
410*fc2873aaSDale Farnsworth #define VIP_SLICE0_PARSER		0x5500
411*fc2873aaSDale Farnsworth #define VIP_SLICE1_PARSER		0x5a00
412*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTA_0		0x0004
413*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTB_0		0x000c
414*fc2873aaSDale Farnsworth #define VIP_SYNC_TYPE_MASK		0x0f
415*fc2873aaSDale Farnsworth #define VIP_SYNC_TYPE_SHFT		0
416*fc2873aaSDale Farnsworth #define VIP_CTRL_CHANNEL_SEL_MASK	0x03
417*fc2873aaSDale Farnsworth #define VIP_CTRL_CHANNEL_SEL_SHFT	4
418*fc2873aaSDale Farnsworth #define VIP_ASYNC_FIFO_WR		BIT(6)
419*fc2873aaSDale Farnsworth #define VIP_ASYNC_FIFO_RD		BIT(7)
420*fc2873aaSDale Farnsworth #define VIP_PORT_ENABLE			BIT(8)
421*fc2873aaSDale Farnsworth #define VIP_FID_POLARITY		BIT(9)
422*fc2873aaSDale Farnsworth #define VIP_PIXCLK_EDGE_POLARITY	BIT(10)
423*fc2873aaSDale Farnsworth #define VIP_HSYNC_POLARITY		BIT(11)
424*fc2873aaSDale Farnsworth #define VIP_VSYNC_POLARITY		BIT(12)
425*fc2873aaSDale Farnsworth #define VIP_ACTVID_POLARITY		BIT(13)
426*fc2873aaSDale Farnsworth #define VIP_FID_DETECT_MODE		BIT(14)
427*fc2873aaSDale Farnsworth #define VIP_USE_ACTVID_HSYNC_ONLY	BIT(15)
428*fc2873aaSDale Farnsworth #define VIP_FID_SKEW_PRECOUNT_MASK	0x3f
429*fc2873aaSDale Farnsworth #define VIP_FID_SKEW_PRECOUNT_SHFT	16
430*fc2873aaSDale Farnsworth #define VIP_DISCRETE_BASIC_MODE		BIT(22)
431*fc2873aaSDale Farnsworth #define VIP_SW_RESET			BIT(23)
432*fc2873aaSDale Farnsworth #define VIP_FID_SKEW_POSTCOUNT_MASK	0x3f
433*fc2873aaSDale Farnsworth #define VIP_FID_SKEW_POSTCOUNT_SHFT	24
434*fc2873aaSDale Farnsworth #define VIP_ANALYZER_2X4X_SRCNUM_POS	BIT(30)
435*fc2873aaSDale Farnsworth #define VIP_ANALYZER_FVH_ERR_COR_EN	BIT(31)
436*fc2873aaSDale Farnsworth 
437*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTA_1		0x0008
438*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTB_1		0x0010
439*fc2873aaSDale Farnsworth #define VIP_SRC0_NUMLINES_MASK		0x0fff
440*fc2873aaSDale Farnsworth #define VIP_SRC0_NUMLINES_SHFT		0
441*fc2873aaSDale Farnsworth #define VIP_ANC_CHAN_SEL_8B_MASK	0x03
442*fc2873aaSDale Farnsworth #define VIP_ANC_CHAN_SEL_8B_SHFT	13
443*fc2873aaSDale Farnsworth #define VIP_SRC0_NUMPIX_MASK		0x0fff
444*fc2873aaSDale Farnsworth #define VIP_SRC0_NUMPIX_SHFT		16
445*fc2873aaSDale Farnsworth #define VIP_REPACK_SEL_MASK		0x07
446*fc2873aaSDale Farnsworth #define VIP_REPACK_SEL_SHFT		28
447*fc2873aaSDale Farnsworth 
448*fc2873aaSDale Farnsworth #define VIP_PARSER_FIQ_MASK		0x0014
449*fc2873aaSDale Farnsworth #define VIP_PARSER_FIQ_CLR		0x0018
450*fc2873aaSDale Farnsworth #define VIP_PARSER_FIQ_STATUS		0x001c
451*fc2873aaSDale Farnsworth #define VIP_PORTA_VDET			BIT(0)
452*fc2873aaSDale Farnsworth #define VIP_PORTB_VDET			BIT(1)
453*fc2873aaSDale Farnsworth #define VIP_PORTA_ASYNC_FIFO_OF		BIT(2)
454*fc2873aaSDale Farnsworth #define VIP_PORTB_ASYNC_FIFO_OF		BIT(3)
455*fc2873aaSDale Farnsworth #define VIP_PORTA_OUTPUT_FIFO_YUV	BIT(4)
456*fc2873aaSDale Farnsworth #define VIP_PORTA_OUTPUT_FIFO_ANC	BIT(6)
457*fc2873aaSDale Farnsworth #define VIP_PORTB_OUTPUT_FIFO_YUV	BIT(7)
458*fc2873aaSDale Farnsworth #define VIP_PORTB_OUTPUT_FIFO_ANC	BIT(9)
459*fc2873aaSDale Farnsworth #define VIP_PORTA_CONN			BIT(10)
460*fc2873aaSDale Farnsworth #define VIP_PORTA_DISCONN		BIT(11)
461*fc2873aaSDale Farnsworth #define VIP_PORTB_CONN			BIT(12)
462*fc2873aaSDale Farnsworth #define VIP_PORTB_DISCONN		BIT(13)
463*fc2873aaSDale Farnsworth #define VIP_PORTA_SRC0_SIZE		BIT(14)
464*fc2873aaSDale Farnsworth #define VIP_PORTB_SRC0_SIZE		BIT(15)
465*fc2873aaSDale Farnsworth #define VIP_PORTA_YUV_PROTO_VIOLATION	BIT(16)
466*fc2873aaSDale Farnsworth #define VIP_PORTA_ANC_PROTO_VIOLATION	BIT(17)
467*fc2873aaSDale Farnsworth #define VIP_PORTB_YUV_PROTO_VIOLATION	BIT(18)
468*fc2873aaSDale Farnsworth #define VIP_PORTB_ANC_PROTO_VIOLATION	BIT(19)
469*fc2873aaSDale Farnsworth #define VIP_PORTA_CFG_DISABLE_COMPLETE	BIT(20)
470*fc2873aaSDale Farnsworth #define VIP_PORTB_CFG_DISABLE_COMPLETE	BIT(21)
471*fc2873aaSDale Farnsworth 
472*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTA_SOURCE_FID	0x0020
473*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTA_ENCODER_FID	0x0024
474*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTB_SOURCE_FID	0x0028
475*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTB_ENCODER_FID	0x002c
476*fc2873aaSDale Farnsworth 
477*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTA_SRC0_SIZE	0x0030
478*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTB_SRC0_SIZE	0x0070
479*fc2873aaSDale Farnsworth #define VIP_SOURCE_HEIGHT_MASK		0x0fff
480*fc2873aaSDale Farnsworth #define VIP_SOURCE_HEIGHT_SHFT		0
481*fc2873aaSDale Farnsworth #define VIP_SOURCE_WIDTH_MASK		0x0fff
482*fc2873aaSDale Farnsworth #define VIP_SOURCE_WIDTH_SHFT		16
483*fc2873aaSDale Farnsworth 
484*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTA_VDET_VEC	0x00b0
485*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTB_VDET_VEC	0x00b4
486*fc2873aaSDale Farnsworth 
487*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTA_EXTRA2		0x00b8
488*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTB_EXTRA2		0x00c8
489*fc2873aaSDale Farnsworth #define VIP_ANC_SKIP_NUMPIX_MASK	0x0fff
490*fc2873aaSDale Farnsworth #define VIP_ANC_SKIP_NUMPIX_SHFT	0
491*fc2873aaSDale Farnsworth #define VIP_ANC_BYPASS			BIT(15)
492*fc2873aaSDale Farnsworth #define VIP_ANC_USE_NUMPIX_MASK		0x0fff
493*fc2873aaSDale Farnsworth #define VIP_ANC_USE_NUMPIX_SHFT		16
494*fc2873aaSDale Farnsworth #define VIP_ANC_TARGET_SRCNUM_MASK	0x0f
495*fc2873aaSDale Farnsworth #define VIP_ANC_TARGET_SRCNUM_SHFT	28
496*fc2873aaSDale Farnsworth 
497*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTA_EXTRA3		0x00bc
498*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTB_EXTRA3		0x00cc
499*fc2873aaSDale Farnsworth #define VIP_ANC_SKIP_NUMLINES_MASK	0x0fff
500*fc2873aaSDale Farnsworth #define VIP_ANC_SKIP_NUMLINES_SHFT	0
501*fc2873aaSDale Farnsworth #define VIP_ANC_USE_NUMLINES_MASK	0x0fff
502*fc2873aaSDale Farnsworth #define VIP_ANC_USE_NUMLINES_SHFT	16
503*fc2873aaSDale Farnsworth 
504*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTA_EXTRA4		0x00c0
505*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTB_EXTRA4		0x00d0
506*fc2873aaSDale Farnsworth #define VIP_ACT_SKIP_NUMPIX_MASK	0x0fff
507*fc2873aaSDale Farnsworth #define VIP_ACT_SKIP_NUMPIX_SHFT	0
508*fc2873aaSDale Farnsworth #define VIP_ACT_BYPASS			BIT(15)
509*fc2873aaSDale Farnsworth #define VIP_ACT_USE_NUMPIX_MASK		0x0fff
510*fc2873aaSDale Farnsworth #define VIP_ACT_USE_NUMPIX_SHFT		16
511*fc2873aaSDale Farnsworth #define VIP_ACT_TARGET_SRCNUM_MASK	0x0f
512*fc2873aaSDale Farnsworth #define VIP_ACT_TARGET_SRCNUM_SHFT	28
513*fc2873aaSDale Farnsworth 
514*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTA_EXTRA5		0x00c4
515*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTB_EXTRA5		0x00d4
516*fc2873aaSDale Farnsworth #define VIP_ACT_SKIP_NUMLINES_MASK	0x0fff
517*fc2873aaSDale Farnsworth #define VIP_ACT_SKIP_NUMLINES_SHFT	0
518*fc2873aaSDale Farnsworth #define VIP_ACT_USE_NUMLINES_MASK	0x0fff
519*fc2873aaSDale Farnsworth #define VIP_ACT_USE_NUMLINES_SHFT	16
520*fc2873aaSDale Farnsworth 
521*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTA_EXTRA6		0x00d8
522*fc2873aaSDale Farnsworth #define VIP_PARSER_PORTB_EXTRA6		0x00dc
523*fc2873aaSDale Farnsworth #define VIP_ANC_SRCNUM_STOP_IMM_SHFT	0
524*fc2873aaSDale Farnsworth #define VIP_YUV_SRCNUM_STOP_IMM_SHFT	16
525*fc2873aaSDale Farnsworth 
526*fc2873aaSDale Farnsworth #define VIP_SLICE0_CSC			0x5700
527*fc2873aaSDale Farnsworth #define VIP_SLICE1_CSC			0x5c00
528*fc2873aaSDale Farnsworth #define VIP_CSC_CSC00			0x0200
529*fc2873aaSDale Farnsworth #define VIP_CSC_A0_MASK			0x1fff
530*fc2873aaSDale Farnsworth #define VIP_CSC_A0_SHFT			0
531*fc2873aaSDale Farnsworth #define VIP_CSC_B0_MASK			0x1fff
532*fc2873aaSDale Farnsworth #define VIP_CSC_B0_SHFT			16
533*fc2873aaSDale Farnsworth 
534*fc2873aaSDale Farnsworth #define VIP_CSC_CSC01			0x0204
535*fc2873aaSDale Farnsworth #define VIP_CSC_C0_MASK			0x1fff
536*fc2873aaSDale Farnsworth #define VIP_CSC_C0_SHFT			0
537*fc2873aaSDale Farnsworth #define VIP_CSC_A1_MASK			0x1fff
538*fc2873aaSDale Farnsworth #define VIP_CSC_A1_SHFT			16
539*fc2873aaSDale Farnsworth 
540*fc2873aaSDale Farnsworth #define VIP_CSC_CSC02			0x0208
541*fc2873aaSDale Farnsworth #define VIP_CSC_B1_MASK			0x1fff
542*fc2873aaSDale Farnsworth #define VIP_CSC_B1_SHFT			0
543*fc2873aaSDale Farnsworth #define VIP_CSC_C1_MASK			0x1fff
544*fc2873aaSDale Farnsworth #define VIP_CSC_C1_SHFT			16
545*fc2873aaSDale Farnsworth 
546*fc2873aaSDale Farnsworth #define VIP_CSC_CSC03			0x020c
547*fc2873aaSDale Farnsworth #define VIP_CSC_A2_MASK			0x1fff
548*fc2873aaSDale Farnsworth #define VIP_CSC_A2_SHFT			0
549*fc2873aaSDale Farnsworth #define VIP_CSC_B2_MASK			0x1fff
550*fc2873aaSDale Farnsworth #define VIP_CSC_B2_SHFT			16
551*fc2873aaSDale Farnsworth 
552*fc2873aaSDale Farnsworth #define VIP_CSC_CSC04			0x0210
553*fc2873aaSDale Farnsworth #define VIP_CSC_C2_MASK			0x1fff
554*fc2873aaSDale Farnsworth #define VIP_CSC_C2_SHFT			0
555*fc2873aaSDale Farnsworth #define VIP_CSC_D0_MASK			0x0fff
556*fc2873aaSDale Farnsworth #define VIP_CSC_D0_SHFT			16
557*fc2873aaSDale Farnsworth 
558*fc2873aaSDale Farnsworth #define VIP_CSC_CSC05			0x0214
559*fc2873aaSDale Farnsworth #define VIP_CSC_D1_MASK			0x0fff
560*fc2873aaSDale Farnsworth #define VIP_CSC_D1_SHFT			0
561*fc2873aaSDale Farnsworth #define VIP_CSC_D2_MASK			0x0fff
562*fc2873aaSDale Farnsworth #define VIP_CSC_D2_SHFT			16
563*fc2873aaSDale Farnsworth #define VIP_CSC_BYPASS			BIT(28)
564*fc2873aaSDale Farnsworth 
565*fc2873aaSDale Farnsworth #define VIP_SLICE0_SC			0x5800
566*fc2873aaSDale Farnsworth #define VIP_SLICE1_SC			0x5d00
567*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC0			0x0300
568*fc2873aaSDale Farnsworth #define VIP_INTERLACE_O			BIT(0)
569*fc2873aaSDale Farnsworth #define VIP_LINEAR			BIT(1)
570*fc2873aaSDale Farnsworth #define VIP_SC_BYPASS			BIT(2)
571*fc2873aaSDale Farnsworth #define VIP_INVT_FID			BIT(3)
572*fc2873aaSDale Farnsworth #define VIP_USE_RAV			BIT(4)
573*fc2873aaSDale Farnsworth #define VIP_ENABLE_EV			BIT(5)
574*fc2873aaSDale Farnsworth #define VIP_AUTH_HS			BIT(6)
575*fc2873aaSDale Farnsworth #define VIP_DCM_2X			BIT(7)
576*fc2873aaSDale Farnsworth #define VIP_DCM_4X			BIT(8)
577*fc2873aaSDale Farnsworth #define VIP_HP_BYPASS			BIT(9)
578*fc2873aaSDale Farnsworth #define VIP_INTERLACE_I			BIT(10)
579*fc2873aaSDale Farnsworth #define VIP_ENABLE_SIN2_VER_INTP	BIT(11)
580*fc2873aaSDale Farnsworth #define VIP_Y_PK_EN			BIT(14)
581*fc2873aaSDale Farnsworth #define VIP_TRIM			BIT(15)
582*fc2873aaSDale Farnsworth #define VIP_SELFGEN_FID			BIT(16)
583*fc2873aaSDale Farnsworth 
584*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC1			0x0304
585*fc2873aaSDale Farnsworth #define VIP_ROW_ACC_INC_MASK		0x07ffffff
586*fc2873aaSDale Farnsworth #define VIP_ROW_ACC_INC_SHFT		0
587*fc2873aaSDale Farnsworth 
588*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC2			0x0308
589*fc2873aaSDale Farnsworth #define VIP_ROW_ACC_OFFSET_MASK		0x0fffffff
590*fc2873aaSDale Farnsworth #define VIP_ROW_ACC_OFFSET_SHFT		0
591*fc2873aaSDale Farnsworth 
592*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC3			0x030c
593*fc2873aaSDale Farnsworth #define VIP_ROW_ACC_OFFSET_B_MASK	0x0fffffff
594*fc2873aaSDale Farnsworth #define VIP_ROW_ACC_OFFSET_B_SHFT	0
595*fc2873aaSDale Farnsworth 
596*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC4			0x0310
597*fc2873aaSDale Farnsworth #define VIP_TAR_H_MASK			0x07ff
598*fc2873aaSDale Farnsworth #define VIP_TAR_H_SHFT			0
599*fc2873aaSDale Farnsworth #define VIP_TAR_W_MASK			0x07ff
600*fc2873aaSDale Farnsworth #define VIP_TAR_W_SHFT			12
601*fc2873aaSDale Farnsworth #define VIP_LIN_ACC_INC_U_MASK		0x07
602*fc2873aaSDale Farnsworth #define VIP_LIN_ACC_INC_U_SHFT		24
603*fc2873aaSDale Farnsworth #define VIP_NLIN_ACC_INIT_U_MASK	0x07
604*fc2873aaSDale Farnsworth #define VIP_NLIN_ACC_INIT_U_SHFT	28
605*fc2873aaSDale Farnsworth 
606*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC5			0x0314
607*fc2873aaSDale Farnsworth #define VIP_SRC_H_MASK			0x03ff
608*fc2873aaSDale Farnsworth #define VIP_SRC_H_SHFT			0
609*fc2873aaSDale Farnsworth #define VIP_SRC_W_MASK			0x07ff
610*fc2873aaSDale Farnsworth #define VIP_SRC_W_SHFT			12
611*fc2873aaSDale Farnsworth #define VIP_NLIN_ACC_INC_U_MASK		0x07
612*fc2873aaSDale Farnsworth #define VIP_NLIN_ACC_INC_U_SHFT		24
613*fc2873aaSDale Farnsworth 
614*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC6			0x0318
615*fc2873aaSDale Farnsworth #define VIP_ROW_ACC_INIT_RAV_MASK	0x03ff
616*fc2873aaSDale Farnsworth #define VIP_ROW_ACC_INIT_RAV_SHFT	0
617*fc2873aaSDale Farnsworth #define VIP_ROW_ACC_INIT_RAV_B_MASK	0x03ff
618*fc2873aaSDale Farnsworth #define VIP_ROW_ACC_INIT_RAV_B_SHFT	10
619*fc2873aaSDale Farnsworth 
620*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC8			0x0320
621*fc2873aaSDale Farnsworth #define VIP_NLIN_LEFT_MASK		0x07ff
622*fc2873aaSDale Farnsworth #define VIP_NLIN_LEFT_SHFT		0
623*fc2873aaSDale Farnsworth #define VIP_NLIN_RIGHT_MASK		0x07ff
624*fc2873aaSDale Farnsworth #define VIP_NLIN_RIGHT_SHFT		12
625*fc2873aaSDale Farnsworth 
626*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC9			0x0324
627*fc2873aaSDale Farnsworth #define VIP_LIN_ACC_INC			VIP_SC_MP_SC9
628*fc2873aaSDale Farnsworth 
629*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC10			0x0328
630*fc2873aaSDale Farnsworth #define VIP_NLIN_ACC_INIT		VIP_SC_MP_SC10
631*fc2873aaSDale Farnsworth 
632*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC11			0x032c
633*fc2873aaSDale Farnsworth #define VIP_NLIN_ACC_INC		VIP_SC_MP_SC11
634*fc2873aaSDale Farnsworth 
635*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC12			0x0330
636*fc2873aaSDale Farnsworth #define VIP_COL_ACC_OFFSET_MASK		0x01ffffff
637*fc2873aaSDale Farnsworth #define VIP_COL_ACC_OFFSET_SHFT		0
638*fc2873aaSDale Farnsworth 
639*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC13			0x0334
640*fc2873aaSDale Farnsworth #define VIP_SC_FACTOR_RAV_MASK		0x03ff
641*fc2873aaSDale Farnsworth #define VIP_SC_FACTOR_RAV_SHFT		0
642*fc2873aaSDale Farnsworth #define VIP_CHROMA_INTP_THR_MASK	0x03ff
643*fc2873aaSDale Farnsworth #define VIP_CHROMA_INTP_THR_SHFT	12
644*fc2873aaSDale Farnsworth #define VIP_DELTA_CHROMA_THR_MASK	0x0f
645*fc2873aaSDale Farnsworth #define VIP_DELTA_CHROMA_THR_SHFT	24
646*fc2873aaSDale Farnsworth 
647*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC17			0x0344
648*fc2873aaSDale Farnsworth #define VIP_EV_THR_MASK			0x03ff
649*fc2873aaSDale Farnsworth #define VIP_EV_THR_SHFT			12
650*fc2873aaSDale Farnsworth #define VIP_DELTA_LUMA_THR_MASK		0x0f
651*fc2873aaSDale Farnsworth #define VIP_DELTA_LUMA_THR_SHFT		24
652*fc2873aaSDale Farnsworth #define VIP_DELTA_EV_THR_MASK		0x0f
653*fc2873aaSDale Farnsworth #define VIP_DELTA_EV_THR_SHFT		28
654*fc2873aaSDale Farnsworth 
655*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC18			0x0348
656*fc2873aaSDale Farnsworth #define VIP_HS_FACTOR_MASK		0x03ff
657*fc2873aaSDale Farnsworth #define VIP_HS_FACTOR_SHFT		0
658*fc2873aaSDale Farnsworth #define VIP_CONF_DEFAULT_MASK		0x01ff
659*fc2873aaSDale Farnsworth #define VIP_CONF_DEFAULT_SHFT		16
660*fc2873aaSDale Farnsworth 
661*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC19			0x034c
662*fc2873aaSDale Farnsworth #define VIP_HPF_COEFF0_MASK		0xff
663*fc2873aaSDale Farnsworth #define VIP_HPF_COEFF0_SHFT		0
664*fc2873aaSDale Farnsworth #define VIP_HPF_COEFF1_MASK		0xff
665*fc2873aaSDale Farnsworth #define VIP_HPF_COEFF1_SHFT		8
666*fc2873aaSDale Farnsworth #define VIP_HPF_COEFF2_MASK		0xff
667*fc2873aaSDale Farnsworth #define VIP_HPF_COEFF2_SHFT		16
668*fc2873aaSDale Farnsworth #define VIP_HPF_COEFF3_MASK		0xff
669*fc2873aaSDale Farnsworth #define VIP_HPF_COEFF3_SHFT		23
670*fc2873aaSDale Farnsworth 
671*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC20			0x0350
672*fc2873aaSDale Farnsworth #define VIP_HPF_COEFF4_MASK		0xff
673*fc2873aaSDale Farnsworth #define VIP_HPF_COEFF4_SHFT		0
674*fc2873aaSDale Farnsworth #define VIP_HPF_COEFF5_MASK		0xff
675*fc2873aaSDale Farnsworth #define VIP_HPF_COEFF5_SHFT		8
676*fc2873aaSDale Farnsworth #define VIP_HPF_NORM_SHFT_MASK		0x07
677*fc2873aaSDale Farnsworth #define VIP_HPF_NORM_SHFT_SHFT		16
678*fc2873aaSDale Farnsworth #define VIP_NL_LIMIT_MASK		0x1ff
679*fc2873aaSDale Farnsworth #define VIP_NL_LIMIT_SHFT		20
680*fc2873aaSDale Farnsworth 
681*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC21			0x0354
682*fc2873aaSDale Farnsworth #define VIP_NL_LO_THR_MASK		0x01ff
683*fc2873aaSDale Farnsworth #define VIP_NL_LO_THR_SHFT		0
684*fc2873aaSDale Farnsworth #define VIP_NL_LO_SLOPE_MASK		0xff
685*fc2873aaSDale Farnsworth #define VIP_NL_LO_SLOPE_SHFT		16
686*fc2873aaSDale Farnsworth 
687*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC22			0x0358
688*fc2873aaSDale Farnsworth #define VIP_NL_HI_THR_MASK		0x01ff
689*fc2873aaSDale Farnsworth #define VIP_NL_HI_THR_SHFT		0
690*fc2873aaSDale Farnsworth #define VIP_NL_HI_SLOPE_SH_MASK		0x07
691*fc2873aaSDale Farnsworth #define VIP_NL_HI_SLOPE_SH_SHFT		16
692*fc2873aaSDale Farnsworth 
693*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC23			0x035c
694*fc2873aaSDale Farnsworth #define VIP_GRADIENT_THR_MASK		0x07ff
695*fc2873aaSDale Farnsworth #define VIP_GRADIENT_THR_SHFT		0
696*fc2873aaSDale Farnsworth #define VIP_GRADIENT_THR_RANGE_MASK	0x0f
697*fc2873aaSDale Farnsworth #define VIP_GRADIENT_THR_RANGE_SHFT	12
698*fc2873aaSDale Farnsworth #define VIP_MIN_GY_THR_MASK		0xff
699*fc2873aaSDale Farnsworth #define VIP_MIN_GY_THR_SHFT		16
700*fc2873aaSDale Farnsworth #define VIP_MIN_GY_THR_RANGE_MASK	0x0f
701*fc2873aaSDale Farnsworth #define VIP_MIN_GY_THR_RANGE_SHFT	28
702*fc2873aaSDale Farnsworth 
703*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC24			0x0360
704*fc2873aaSDale Farnsworth #define VIP_ORG_H_MASK			0x07ff
705*fc2873aaSDale Farnsworth #define VIP_ORG_H_SHFT			0
706*fc2873aaSDale Farnsworth #define VIP_ORG_W_MASK			0x07ff
707*fc2873aaSDale Farnsworth #define VIP_ORG_W_SHFT			16
708*fc2873aaSDale Farnsworth 
709*fc2873aaSDale Farnsworth #define VIP_SC_MP_SC25			0x0364
710*fc2873aaSDale Farnsworth #define VIP_OFF_H_MASK			0x07ff
711*fc2873aaSDale Farnsworth #define VIP_OFF_H_SHFT			0
712*fc2873aaSDale Farnsworth #define VIP_OFF_W_MASK			0x07ff
713*fc2873aaSDale Farnsworth #define VIP_OFF_W_SHFT			16
714*fc2873aaSDale Farnsworth 
715*fc2873aaSDale Farnsworth #define VIP_VPDMA_BASE			0xd000
716*fc2873aaSDale Farnsworth 
717*fc2873aaSDale Farnsworth #endif
718