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