1ffec4cb1Sshadow303 /****************************************************************************** 2ffec4cb1Sshadow303 / 3ffec4cb1Sshadow303 / File: Theater.cpp 4ffec4cb1Sshadow303 / 5ffec4cb1Sshadow303 / Description: ATI Rage Theater Video Decoder interface. 6ffec4cb1Sshadow303 / 7ffec4cb1Sshadow303 / Copyright 2001, Carlos Hasan 8ffec4cb1Sshadow303 / 9ffec4cb1Sshadow303 *******************************************************************************/ 10ffec4cb1Sshadow303 11ffec4cb1Sshadow303 #ifndef _THEATRE_REG_H 12ffec4cb1Sshadow303 #define _THEATRE_REG_H 13ffec4cb1Sshadow303 14ffec4cb1Sshadow303 enum theater_register { 15ffec4cb1Sshadow303 // TVOut Front End Datapath 16ffec4cb1Sshadow303 VIP_RGB_CNTL = 0x0048, 17ffec4cb1Sshadow303 RGB_IS_888_PACK = BITS(0:0), // Select 24/16 bit (888/565) RGB mode 18ffec4cb1Sshadow303 UV_DITHER_EN = BITS(3:2), // Select dithering mode for U/V data 19ffec4cb1Sshadow303 SWITCH_TO_BLUE = BITS(4:4), // Replace input video with blue screen 20ffec4cb1Sshadow303 21ffec4cb1Sshadow303 VIP_TVO_SYNC_PAT_ACCUM = 0x0108, 22ffec4cb1Sshadow303 H_PATTERN_ACCUM = BITS(10:0), 23ffec4cb1Sshadow303 SCAN_REF_OFFSET = BITS(15:11), 24ffec4cb1Sshadow303 BYTE0 = BITS(23:16), 25ffec4cb1Sshadow303 BYTE1 = BITS(31:24), 26ffec4cb1Sshadow303 27ffec4cb1Sshadow303 VIP_TV0_SYNC_THRESHOLD = 0x010c, 28ffec4cb1Sshadow303 MAX_H_PATTERNS = BITS(10:0), 29ffec4cb1Sshadow303 MIN_H_PATTERNS = BITS(27:16), 30ffec4cb1Sshadow303 31ffec4cb1Sshadow303 VIP_TVO_SYNC_PAT_EXPECT = 0x0110, 32ffec4cb1Sshadow303 SYNC_PAT_EXPECT_W0 = BITS(15:0), 33ffec4cb1Sshadow303 SYNC_PAT_EXPECT_W1 = BITS(23:16), 34ffec4cb1Sshadow303 35ffec4cb1Sshadow303 VIP_DELAY_ONE_MAP_A = 0x0114, 36ffec4cb1Sshadow303 DELAY_ONE_MAP_W0 = BITS(15:0), 37ffec4cb1Sshadow303 DELAY_ONE_MAP_W1 = BITS(31:16), 38ffec4cb1Sshadow303 39ffec4cb1Sshadow303 VIP_DELAY_ONE_MAP_B = 0x0118, 40ffec4cb1Sshadow303 DELAY_ONE_MAP_W2 = BITS(15:0), 41ffec4cb1Sshadow303 42ffec4cb1Sshadow303 VIP_DELAY_ZERO_MAP_A = 0x011c, 43ffec4cb1Sshadow303 DELAY_ZERO_MAP_W0 = BITS(15:0), 44ffec4cb1Sshadow303 DELAY_ZERO_MAP_W1 = BITS(31:16), 45ffec4cb1Sshadow303 46ffec4cb1Sshadow303 VIP_DELAY_ZERO_MAP_B = 0x0120, 47ffec4cb1Sshadow303 DELAY_ZERO_MAP_W2 = BITS(15:0), 48ffec4cb1Sshadow303 49ffec4cb1Sshadow303 VIP_TVO_DATA_DELAY_A = 0x0140, 50ffec4cb1Sshadow303 TVO_DATA0_DELAY = BITS(5:0), 51ffec4cb1Sshadow303 TVO_DATA1_DELAY = BITS(13:8), 52ffec4cb1Sshadow303 TVO_DATA2_DELAY = BITS(21:16), 53ffec4cb1Sshadow303 TVO_DATA3_DELAY = BITS(29:24), 54ffec4cb1Sshadow303 55ffec4cb1Sshadow303 VIP_TVO_DATA_DELAY_B = 0x0144, 56ffec4cb1Sshadow303 TVO_DATA4_DELAY = BITS(5:0), 57ffec4cb1Sshadow303 TVO_DATA5_DELAY = BITS(13:8), 58ffec4cb1Sshadow303 TVO_DATA6_DELAY = BITS(21:16), 59ffec4cb1Sshadow303 TVO_DATA7_DELAY = BITS(29:24), 60ffec4cb1Sshadow303 61ffec4cb1Sshadow303 VIP_VSCALER_CNTL1 = 0x01c0, 62ffec4cb1Sshadow303 UV_INC = BITS(15:0), // Vertical scaling of CRTC UV data 63ffec4cb1Sshadow303 UV_THINNER = BITS(22:16), // Number of lines in the UV data that 64ffec4cb1Sshadow303 // are not blended to create a line on TV 65ffec4cb1Sshadow303 Y_W_EN = BITS(24:24), 66ffec4cb1Sshadow303 Y_DEL_W_SIG = BITS(27:26), 67ffec4cb1Sshadow303 68ffec4cb1Sshadow303 VIP_VSCALER_CNTL2 = 0x01c8, 69ffec4cb1Sshadow303 DITHER_MODE = BITS(0:0), // Select dithering mode 70ffec4cb1Sshadow303 Y_OUTPUT_DITHER_EN = BITS(1:1), 71ffec4cb1Sshadow303 UV_OUTPUT_DITHER_EN = BITS(2:2), 72ffec4cb1Sshadow303 UV_TO_BUF_DITHER_EN = BITS(3:3), 73ffec4cb1Sshadow303 UV_ACCUM_INIT = BITS(31:24), 74ffec4cb1Sshadow303 75ffec4cb1Sshadow303 VIP_Y_FALL_CNTL = 0x01cc, 76ffec4cb1Sshadow303 Y_FALL_ACCUM_INIT = BITS(15:0), 77ffec4cb1Sshadow303 Y_FALL_PING_PONG = BITS(16:16), 78ffec4cb1Sshadow303 Y_COEF_EN = BITS(17:17), 79ffec4cb1Sshadow303 Y_COEF_VALUE = BITS(31:24), 80ffec4cb1Sshadow303 81ffec4cb1Sshadow303 VIP_Y_RISE_CNTL = 0x01d0, 82ffec4cb1Sshadow303 Y_RISE_ACCUM_INIT = BITS(15:0), 83ffec4cb1Sshadow303 Y_RISE_PING_PONG = BITS(16:16), 84ffec4cb1Sshadow303 85ffec4cb1Sshadow303 VIP_Y_SAW_TOOTH_CNTL = 0x01d4, 86ffec4cb1Sshadow303 Y_SAW_TOOTH_MAP = BITS(15:0), 87ffec4cb1Sshadow303 Y_SAW_TOOTH_SLOPE = BITS(31:16), 88ffec4cb1Sshadow303 89ffec4cb1Sshadow303 // TVOut Shadow CRTC 90ffec4cb1Sshadow303 VIP_HTOTAL = 0x0080, 91ffec4cb1Sshadow303 D_HTOTAL = BITS(10:0), // Number of clocks per line (-1) 92ffec4cb1Sshadow303 93ffec4cb1Sshadow303 VIP_HDISP = 0x0084, 94ffec4cb1Sshadow303 D_HDISP = BITS(9:0), // Number of active pixels per line (-1) 95ffec4cb1Sshadow303 96ffec4cb1Sshadow303 VIP_HSIZE = 0x0088, 97ffec4cb1Sshadow303 D_HSIZE = BITS(9:0), // Unused in Rage Theater A21 and later 98ffec4cb1Sshadow303 99ffec4cb1Sshadow303 VIP_HSTART = 0x008c, 100ffec4cb1Sshadow303 D_HSTART = BITS(10:0), 101ffec4cb1Sshadow303 102ffec4cb1Sshadow303 VIP_HCOUNT = 0x0090, // Current horizontal CRT pixel within 103ffec4cb1Sshadow303 D_HCOUNT = BITS(10:0), // a line being processed 104ffec4cb1Sshadow303 105ffec4cb1Sshadow303 VIP_VTOTAL = 0x0094, // Number of lines per frame (-1) 106ffec4cb1Sshadow303 D_VTOTAL = BITS(9:0), 107ffec4cb1Sshadow303 108ffec4cb1Sshadow303 VIP_VDISP = 0x0098, // Number of active lines (-1) 109ffec4cb1Sshadow303 D_VDISP = BITS(9:0), 110ffec4cb1Sshadow303 111ffec4cb1Sshadow303 VIP_VCOUNT = 0x009c, // Current vertical CRT line being processed 112ffec4cb1Sshadow303 D_VCOUNT = BITS(9:0), 113ffec4cb1Sshadow303 114ffec4cb1Sshadow303 VIP_VFTOTAL = 0x00a0, // Number of CRT frames that occur during 115ffec4cb1Sshadow303 D_FTOTAL = BITS(3:0), // one complete cycle of the TV timing (-1) 116ffec4cb1Sshadow303 117ffec4cb1Sshadow303 VIP_DFCOUNT = 0x00a4, // Current CRT frame count, equivalent to the 118ffec4cb1Sshadow303 D_FCOUNT = BITS(3:0), // field number in a complete TV cycle 119ffec4cb1Sshadow303 120ffec4cb1Sshadow303 VIP_DFRESTART = 0x00a8, // The frame/field during which a restart 121ffec4cb1Sshadow303 D_FRESTART = BITS(3:0), // will be generated when TV_MASTER is 0 122ffec4cb1Sshadow303 123ffec4cb1Sshadow303 VIP_DHRESTART = 0x00ac, // Horizontal pixel during which a restart 124ffec4cb1Sshadow303 D_HRESTART = BITS(10:0), // will be generated when TV_MASTER is 0 125ffec4cb1Sshadow303 126ffec4cb1Sshadow303 VIP_DVRESTART = 0x00b0, // Vertical line during which a restart 127ffec4cb1Sshadow303 D_VRESTART = BITS(9:0), // will be generated when TV_MASTER is 0 128ffec4cb1Sshadow303 129ffec4cb1Sshadow303 VIP_SYNC_SIZE = 0x00b4, // Number of pixels expected in the 130ffec4cb1Sshadow303 D_SYNC_SIZE = BITS(9:0), // synchronization line 131ffec4cb1Sshadow303 132ffec4cb1Sshadow303 VIP_FRAME_LOCK_CNTL = 0x0100, 133ffec4cb1Sshadow303 MAX_LOCK_STR = BITS(3:0), 134ffec4cb1Sshadow303 FIELD_SYNC_EN = BITS(4:4), 135ffec4cb1Sshadow303 FIELD_SYNC_TRIGGER = BITS(5:5), 136ffec4cb1Sshadow303 ACTUAL_LOCK_STR = BITS(11:8), 137ffec4cb1Sshadow303 AVG_MISSED_SYNC = BITS(15:12), 138ffec4cb1Sshadow303 139ffec4cb1Sshadow303 VIP_SYNC_LOCK_CNTL = 0x0104, 140ffec4cb1Sshadow303 PRI_TVO_DATA_LINE_SEL = BITS(2:0), 141ffec4cb1Sshadow303 SEC_SYNC_CHECK_DEL = BITS(13:8), 142ffec4cb1Sshadow303 MPP_ACTIVE_AS_MASK = BITS(14:14), 143ffec4cb1Sshadow303 MPP_ACTIVE_DS_MASK = BITS(15:15), 144ffec4cb1Sshadow303 SYNC_COMMAND = BITS(18:16), 145ffec4cb1Sshadow303 SYNC_LOCK_TRIGGER = BITS(21:21), 146ffec4cb1Sshadow303 DETECT_EN = BITS(24:24), 147ffec4cb1Sshadow303 SELF_LOCK_EN = BITS(25:25), 148ffec4cb1Sshadow303 MAN_LOCK_EN = BITS(26:26), 149ffec4cb1Sshadow303 MAX_REF_OFFSET = BITS(31:27), 150ffec4cb1Sshadow303 151ffec4cb1Sshadow303 // TVOut Up Sampling Filter 152ffec4cb1Sshadow303 VIP_UPSAMP_COEFF0_0 = 0x0340, 153ffec4cb1Sshadow303 COEFF0_0 = BITS(5:0), 154ffec4cb1Sshadow303 COEFF0_1 = BITS(14:8), 155ffec4cb1Sshadow303 COEFF0_2 = BITS(22:16), 156ffec4cb1Sshadow303 COEFF0_3 = BITS(29:24), 157ffec4cb1Sshadow303 158ffec4cb1Sshadow303 VIP_UPSAMP_COEFF0_1 = 0x0344, 159ffec4cb1Sshadow303 COEFF0_4 = BITS(7:0), 160ffec4cb1Sshadow303 COEFF0_5 = BITS(15:8), 161ffec4cb1Sshadow303 COEFF0_6 = BITS(21:16), 162ffec4cb1Sshadow303 COEFF0_7 = BITS(30:24), 163ffec4cb1Sshadow303 164ffec4cb1Sshadow303 VIP_UPSAMP_COEFF0_2 = 0x0348, 165ffec4cb1Sshadow303 COEFF0_8 = BITS(6:0), 166ffec4cb1Sshadow303 COEFF0_9 = BITS(13:8), 167ffec4cb1Sshadow303 168ffec4cb1Sshadow303 VIP_UPSAMP_COEFF1_0 = 0x034c, 169ffec4cb1Sshadow303 COEFF1_0 = BITS(5:0), 170ffec4cb1Sshadow303 COEFF1_1 = BITS(14:8), 171ffec4cb1Sshadow303 COEFF1_2 = BITS(22:16), 172ffec4cb1Sshadow303 COEFF1_3 = BITS(29:24), 173ffec4cb1Sshadow303 174ffec4cb1Sshadow303 VIP_UPSAMP_COEFF1_1 = 0x0350, 175ffec4cb1Sshadow303 COEFF1_4 = BITS(7:0), 176ffec4cb1Sshadow303 COEFF1_5 = BITS(15:8), 177ffec4cb1Sshadow303 COEFF1_6 = BITS(21:16), 178ffec4cb1Sshadow303 COEFF1_7 = BITS(30:24), 179ffec4cb1Sshadow303 180ffec4cb1Sshadow303 VIP_UPSAMP_COEFF1_2 = 0x0354, 181ffec4cb1Sshadow303 COEFF1_8 = BITS(6:0), 182ffec4cb1Sshadow303 COEFF1_9 = BITS(13:8), 183ffec4cb1Sshadow303 184ffec4cb1Sshadow303 VIP_UPSAMP_COEFF2_0 = 0x0358, 185ffec4cb1Sshadow303 COEFF2_0 = BITS(5:0), 186ffec4cb1Sshadow303 COEFF2_1 = BITS(14:8), 187ffec4cb1Sshadow303 COEFF2_2 = BITS(22:16), 188ffec4cb1Sshadow303 COEFF2_3 = BITS(29:24), 189ffec4cb1Sshadow303 190ffec4cb1Sshadow303 VIP_UPSAMP_COEFF2_1 = 0x035c, 191ffec4cb1Sshadow303 COEFF2_4 = BITS(7:0), 192ffec4cb1Sshadow303 COEFF2_5 = BITS(15:8), 193ffec4cb1Sshadow303 COEFF2_6 = BITS(21:16), 194ffec4cb1Sshadow303 COEFF2_7 = BITS(30:24), 195ffec4cb1Sshadow303 196ffec4cb1Sshadow303 VIP_UPSAMP_COEFF2_2 = 0x0360, 197ffec4cb1Sshadow303 COEFF2_8 = BITS(6:0), 198ffec4cb1Sshadow303 COEFF2_9 = BITS(13:8), 199ffec4cb1Sshadow303 200ffec4cb1Sshadow303 VIP_UPSAMP_COEFF3_0 = 0x0364, 201ffec4cb1Sshadow303 COEFF3_0 = BITS(5:0), 202ffec4cb1Sshadow303 COEFF3_1 = BITS(14:8), 203ffec4cb1Sshadow303 COEFF3_2 = BITS(22:16), 204ffec4cb1Sshadow303 COEFF3_3 = BITS(29:24), 205ffec4cb1Sshadow303 206ffec4cb1Sshadow303 VIP_UPSAMP_COEFF3_1 = 0x0368, 207ffec4cb1Sshadow303 COEFF3_4 = BITS(7:0), 208ffec4cb1Sshadow303 COEFF3_5 = BITS(15:8), 209ffec4cb1Sshadow303 COEFF3_6 = BITS(21:16), 210ffec4cb1Sshadow303 COEFF3_7 = BITS(30:24), 211ffec4cb1Sshadow303 212ffec4cb1Sshadow303 VIP_UPSAMP_COEFF3_2 = 0x036c, 213ffec4cb1Sshadow303 COEFF3_8 = BITS(6:0), 214ffec4cb1Sshadow303 COEFF3_9 = BITS(13:8), 215ffec4cb1Sshadow303 216ffec4cb1Sshadow303 VIP_UPSAMP_COEFF4_0 = 0x0370, 217ffec4cb1Sshadow303 COEFF4_0 = BITS(5:0), 218ffec4cb1Sshadow303 COEFF4_1 = BITS(14:8), 219ffec4cb1Sshadow303 COEFF4_2 = BITS(22:16), 220ffec4cb1Sshadow303 COEFF4_3 = BITS(29:24), 221ffec4cb1Sshadow303 222ffec4cb1Sshadow303 VIP_UPSAMP_COEFF4_1 = 0x0374, 223ffec4cb1Sshadow303 COEFF4_4 = BITS(7:0), 224ffec4cb1Sshadow303 COEFF4_5 = BITS(15:8), 225ffec4cb1Sshadow303 COEFF4_6 = BITS(21:16), 226ffec4cb1Sshadow303 COEFF4_7 = BITS(30:24), 227ffec4cb1Sshadow303 228ffec4cb1Sshadow303 VIP_UPSAMP_COEFF4_2 = 0x0378, 229ffec4cb1Sshadow303 COEFF4_8 = BITS(6:0), 230ffec4cb1Sshadow303 COEFF4_9 = BITS(13:8), 231ffec4cb1Sshadow303 232ffec4cb1Sshadow303 // TVOut Encoder 233ffec4cb1Sshadow303 VIP_SYNC_CNTL = 0x0050, 234ffec4cb1Sshadow303 SYNC_OE = BITS(0:0), // Sync output enable 235ffec4cb1Sshadow303 SYNC_OUT = BITS(1:1), // Sync output data 236ffec4cb1Sshadow303 SYNC_IN = BITS(2:2), // Sync input data 237ffec4cb1Sshadow303 SYNC_PUB = BITS(3:3), // Sync pull-up enable 238ffec4cb1Sshadow303 SYNC_PD = BITS(4:4), // Sync pull-down enable 239ffec4cb1Sshadow303 SYNC_DRV = BITS(5:5), // Sync drive select 240ffec4cb1Sshadow303 SYNC_MX = BITS(11:8), // Sync mux 241ffec4cb1Sshadow303 242ffec4cb1Sshadow303 VIP_HOST_READ_DATA = 0x0180, 243ffec4cb1Sshadow303 HOST_RD_DATA_W0 = BITS(15:0), 244ffec4cb1Sshadow303 HOST_RD_DATA_W1 = BITS(27:16), 245ffec4cb1Sshadow303 246ffec4cb1Sshadow303 VIP_HOST_WRITE_DATA = 0x0184, 247ffec4cb1Sshadow303 HOST_WR_DATA_W0 = BITS(15:0), 248ffec4cb1Sshadow303 HOST_WR_DATA_W1 = BITS(27:16), 249ffec4cb1Sshadow303 250ffec4cb1Sshadow303 VIP_HOST_RD_WT_CNTL = 0x0188, 251ffec4cb1Sshadow303 HOST_ADR = BITS(8:0), 252ffec4cb1Sshadow303 HOST_FIFO_RD = BITS(12:12), 253ffec4cb1Sshadow303 HOST_FIFO_RD_ACK = BITS(13:13), 254ffec4cb1Sshadow303 HOST_FIFO_WT = BITS(14:14), 255ffec4cb1Sshadow303 HOST_FIFO_WT_ACK = BITS(15:15), 256ffec4cb1Sshadow303 257ffec4cb1Sshadow303 VIP_TIMING_CNTL = 0x01c4, 258ffec4cb1Sshadow303 H_INC = BITS(11:0), // Horizontal scaling of the TV image 259ffec4cb1Sshadow303 REQ_DELAY = BITS(18:16), 260ffec4cb1Sshadow303 REQ_Y_FIRST = BITS(19:19), 261ffec4cb1Sshadow303 FORCE_BURST_ALWAYS = BITS(21:21), 262ffec4cb1Sshadow303 UV_POST_SCALE_BYPASS = BITS(23:23), 263ffec4cb1Sshadow303 UV_OUTPUT_POST_SCALE = BITS(31:24), 264ffec4cb1Sshadow303 265ffec4cb1Sshadow303 VIP_UPSAMP_AND_GAIN_CNTL = 0x01e0, 266ffec4cb1Sshadow303 YUPSAMP_EN = BITS(0:0), // Enable Y upsampling filter 267ffec4cb1Sshadow303 YUPSAMP_FLAT = BITS(1:1), // Force Y upsampling to use centre tap 268ffec4cb1Sshadow303 UVUPSAMP_EN = BITS(2:2), // Enable U/V upsampling filters 269ffec4cb1Sshadow303 UVUPSAMP_FLAT = BITS(3:3), // Force U/V upsampling to use centre tap 270ffec4cb1Sshadow303 Y_BREAK_EN = BITS(8:8), // Enable Y break point 271ffec4cb1Sshadow303 UV_BREAK_EN = BITS(10:10), // Enable U/V break point 272ffec4cb1Sshadow303 273ffec4cb1Sshadow303 VIP_GAIN_LIMIT_SETTINGS = 0x01e4, 274ffec4cb1Sshadow303 Y_GAIN_LIMIT = BITS(10:0), // Gain limit for the luminance (Y) 275ffec4cb1Sshadow303 UV_GAIN_LIMIT = BITS(24:16), // Gain limit for the chrominance (U/V) 276ffec4cb1Sshadow303 277ffec4cb1Sshadow303 VIP_LINEAR_GAIN_SETTINGS = 0x01e8, 278ffec4cb1Sshadow303 Y_GAIN = BITS(8:0), // Gain for the luminance (1.8 fixed point) 279ffec4cb1Sshadow303 UV_GAIN = BITS(24:16), // Gain for the chrominance (1.8 fixed point) 280ffec4cb1Sshadow303 281ffec4cb1Sshadow303 VIP_MODULATOR_CNTL1 = 0x0200, 282ffec4cb1Sshadow303 YFLT_EN = BITS(2:2), // Enable Composite/SVideo Y filter 283ffec4cb1Sshadow303 UVFLT_EN = BITS(3:3), // Enable U/V filters 284ffec4cb1Sshadow303 ALT_PHASE_EN = BITS(6:6), // Phase alternating line (0=NTSC, 1=PAL) 285ffec4cb1Sshadow303 SYNC_TIP_LEVEL = BITS(7:7), // Composite Y sync tip level 286ffec4cb1Sshadow303 SET_UP_LEVEL = BITS(14:8), // Video setup level 287ffec4cb1Sshadow303 BLANK_LEVEL = BITS(22:16), // Video blank level 288ffec4cb1Sshadow303 SLEW_RATE_LIMIT = BITS(23:23), 289ffec4cb1Sshadow303 FORCE_BLACK_WHITE = BITS(24:24), // Force B&W video 290ffec4cb1Sshadow303 Y_FILT_BLEND = BITS(31:28), // Sharpness of Y filters 291ffec4cb1Sshadow303 292ffec4cb1Sshadow303 VIP_MODULATOR_CNTL2 = 0x0204, 293ffec4cb1Sshadow303 U_BURST_LEVEL = BITS(8:0), 294ffec4cb1Sshadow303 V_BUST_LEVEL = BITS(24:16), 295ffec4cb1Sshadow303 296ffec4cb1Sshadow303 VIP_PRE_DAC_MUX_CNTL = 0x0240, 297ffec4cb1Sshadow303 Y_RED_EN = BITS(0:0), 298ffec4cb1Sshadow303 C_GRN_EN = BITS(1:1), 299ffec4cb1Sshadow303 CMP_BLU_EN = BITS(2:2), 300ffec4cb1Sshadow303 DAC_DITHER_EN = BITS(3:3), 301ffec4cb1Sshadow303 RED_MX = BITS(7:4), 302ffec4cb1Sshadow303 GRN_MX = BITS(11:8), 303ffec4cb1Sshadow303 BLU_MX = BITS(15:12), 304ffec4cb1Sshadow303 FORCE_DAC_DATA = BITS(25:16), 305ffec4cb1Sshadow303 YUPFILT_DISABLE = BITS(26:26), 306ffec4cb1Sshadow303 CVUPFILT_DISABLE = BITS(27:27), 307ffec4cb1Sshadow303 UUPFILT_DISABLE = BITS(28:28), 308ffec4cb1Sshadow303 309ffec4cb1Sshadow303 VIP_TV_DAC_CNTL = 0x0280, 310ffec4cb1Sshadow303 NBLANK = BITS(0:0), 311ffec4cb1Sshadow303 NHOLD = BITS(1:1), 312ffec4cb1Sshadow303 PEDESTAL = BITS(2:2), 313ffec4cb1Sshadow303 DASLEEP = BITS(3:3), 314ffec4cb1Sshadow303 DETECT = BITS(4:4), 315ffec4cb1Sshadow303 CMPOUT = BITS(5:5), 316ffec4cb1Sshadow303 BGSLEEP = BITS(6:6), 317ffec4cb1Sshadow303 STD = BITS(9:8), 318ffec4cb1Sshadow303 MON = BITS(15:12), 319ffec4cb1Sshadow303 320ffec4cb1Sshadow303 VIP_CRC_CNTL = 0x02c0, 321ffec4cb1Sshadow303 V_COMP_DATA_EN = BITS(1:0), 322ffec4cb1Sshadow303 V_COMP_GATE = BITS(2:2), 323ffec4cb1Sshadow303 V_COMP_EN = BITS(3:3), 324ffec4cb1Sshadow303 RST_SUBC_ONRSTRT = BITS(4:4), 325ffec4cb1Sshadow303 CRC_TV_RSTRT_SEL = BITS(5:5), 326ffec4cb1Sshadow303 327ffec4cb1Sshadow303 VIP_VIDEO_PORT_SIG = 0x02c4, 328ffec4cb1Sshadow303 CRC_SIG = BITS(29:0), 329ffec4cb1Sshadow303 330ffec4cb1Sshadow303 VIP_UV_ADR = 0x0300, 331ffec4cb1Sshadow303 MAX_UV_ADDR = BITS(7:0), 332ffec4cb1Sshadow303 TABLE1_BOT_ADR = BITS(15:8), 333ffec4cb1Sshadow303 TABLE3_TOP_ADR = BITS(23:16), 334ffec4cb1Sshadow303 HCODE_TABLE_SEL = BITS(26:25), 335ffec4cb1Sshadow303 VCODE_TABLE_SEL = BITS(28:27), 336ffec4cb1Sshadow303 SWITCH_TABLE_REQ = BITS(31:31), 337ffec4cb1Sshadow303 338ffec4cb1Sshadow303 // TVOut VBI Control 339ffec4cb1Sshadow303 VIP_VBI_CC_CNTL = 0x02c8, 340ffec4cb1Sshadow303 VBI_CC_DATA = BITS(15:0), // VBI data for CC 341ffec4cb1Sshadow303 VBI_CC_WT = BITS(24:24), // Initiates a write cycle using VBI_CC_DATA 342ffec4cb1Sshadow303 VBI_CC_WT_ACK = BITS(25:25), 343ffec4cb1Sshadow303 VBI_CC_HOLD = BITS(26:26), 344ffec4cb1Sshadow303 VBI_DECODE_EN = BITS(31:31), 345ffec4cb1Sshadow303 346ffec4cb1Sshadow303 VIP_VBI_EDS_CNTL = 0x02cc, 347ffec4cb1Sshadow303 VBI_EDS_DATA = BITS(15:0), 348ffec4cb1Sshadow303 VBI_EDS_WT = BITS(24:24), 349ffec4cb1Sshadow303 VBI_EDS_WT_ACK = BITS(25:25), 350ffec4cb1Sshadow303 VBI_EDS_HOLD = BITS(26:26), 351ffec4cb1Sshadow303 352ffec4cb1Sshadow303 VIP_VBI_20BIT_CNTL = 0x02d0, 353ffec4cb1Sshadow303 VBI_20BIT_DATA0 = BITS(15:0), 354ffec4cb1Sshadow303 VBI_20BIT_DATA1 = BITS(19:16), 355ffec4cb1Sshadow303 VBI_20BIT_WT = BITS(24:24), 356ffec4cb1Sshadow303 VBI_20BIT_WT_ACK = BITS(25:25), 357ffec4cb1Sshadow303 VBI_20BIT_HOLD = BITS(26:26), 358ffec4cb1Sshadow303 359ffec4cb1Sshadow303 VIP_VBI_DTO_CNTL = 0x02d4, 360ffec4cb1Sshadow303 VBI_CC_DTO_P = BITS(15:0), 361ffec4cb1Sshadow303 VBI_20BIT_DTO_P = BITS(31:16), 362ffec4cb1Sshadow303 363ffec4cb1Sshadow303 VIP_VBI_LEVEL_CNTL = 0x02d8, 364ffec4cb1Sshadow303 VBI_CC_LEVEL = BITS(6:0), 365ffec4cb1Sshadow303 VBI_20BIT_LEVEL = BITS(14:8), 366ffec4cb1Sshadow303 VBI_CLK_RUNIN_GAIN = BITS(24:16), 367ffec4cb1Sshadow303 368ffec4cb1Sshadow303 // Video Decoder Horizontal Sync PLL Control 369ffec4cb1Sshadow303 VIP_HS_PLINE = 0x0480, // Pixels per line (910) 370ffec4cb1Sshadow303 HS_LINE_TOTAL = BITS(10:0), 371ffec4cb1Sshadow303 372ffec4cb1Sshadow303 VIP_HS_DTOINC = 0x0484, // ??? 373ffec4cb1Sshadow303 HS_DTO_INC = BITS(19:0), 374ffec4cb1Sshadow303 375ffec4cb1Sshadow303 VIP_HS_PLLGAIN = 0x0488, 376ffec4cb1Sshadow303 HS_PLL_SGAIN = BITS(3:0), 377ffec4cb1Sshadow303 HS_PLL_FGAIN = BITS(7:4), 378ffec4cb1Sshadow303 379ffec4cb1Sshadow303 VIP_HS_MINMAXWIDTH = 0x048c, 380ffec4cb1Sshadow303 MIN_PULSE_WIDTH = BITS(7:0), 381ffec4cb1Sshadow303 MAX_PULSE_WIDTH = BITS(15:8), 382ffec4cb1Sshadow303 383ffec4cb1Sshadow303 VIP_HS_GENLOCKDELAY = 0x0490, 384ffec4cb1Sshadow303 GEN_LOCK_DELAY = BITS(7:0), 385ffec4cb1Sshadow303 386ffec4cb1Sshadow303 VIP_HS_WINDOW_LIMIT = 0x0494, 387ffec4cb1Sshadow303 WIN_CLOSE_LIMIT = BITS(10:0), 388ffec4cb1Sshadow303 WIN_OPEN_LIMIT = BITS(26:16), 389ffec4cb1Sshadow303 390ffec4cb1Sshadow303 VIP_HS_WINDOW_OC_SPEED = 0x0498, 391ffec4cb1Sshadow303 WIN_CLOSE_SPEED = BITS(3:0), 392ffec4cb1Sshadow303 WIN_OPEN_SPEED = BITS(7:4), 393ffec4cb1Sshadow303 394ffec4cb1Sshadow303 VIP_HS_PULSE_WIDTH = 0x049c, 395ffec4cb1Sshadow303 H_SYNC_PULSE_WIDTH = BITS(7:0), 396ffec4cb1Sshadow303 HS_GENLOCKED = BITS(8:8), // HPLL is locked? 397ffec4cb1Sshadow303 HS_SYNC_IN_WIN = BITS(9:9), // Sync in Hwindow? 398ffec4cb1Sshadow303 399ffec4cb1Sshadow303 VIP_HS_PLL_ERROR = 0x04a0, 400ffec4cb1Sshadow303 HS_PLL_ERROR = BITS(14:0), 401ffec4cb1Sshadow303 402ffec4cb1Sshadow303 VIP_HS_PLL_FS_PATH = 0x04a4, 403ffec4cb1Sshadow303 HS_PLL_FAST_PATH = BITS(14:0), 404ffec4cb1Sshadow303 HS_PLL_SLOW_PATH = BITS(30:16), 405ffec4cb1Sshadow303 406ffec4cb1Sshadow303 // Video Decoder Comb Filter 407ffec4cb1Sshadow303 VIP_COMB_CNTL0 = 0x0440, 408ffec4cb1Sshadow303 COMB_HCK = BITS(7:0), 409ffec4cb1Sshadow303 COMB_VCK = BITS(15:8), 410ffec4cb1Sshadow303 COMB_FILTER_EN = BITS(16:16), // 0=fast AGC, CLAMP, and Chroma AGC loops (A41 ASIC only) 411ffec4cb1Sshadow303 COMB_ADAPTIVE_EN = BITS(17:17), 412ffec4cb1Sshadow303 COMB_BPFMUXSEL = BITS(20:18), 413ffec4cb1Sshadow303 COMB_COUTSEL = BITS(22:21), 414ffec4cb1Sshadow303 COMB_SUMDIFF0SEL = BITS(23:23), 415ffec4cb1Sshadow303 COMB_SUMDIFF1SEL = BITS(25:24), 416ffec4cb1Sshadow303 COMB_YVLPFSEL = BITS(26:26), 417ffec4cb1Sshadow303 COMB_DLYLINESEL = BITS(28:27), 418ffec4cb1Sshadow303 COMB_YDLYINSEL = BITS(30:29), 419ffec4cb1Sshadow303 COMB_YSUBBW = BITS(31:31), 420ffec4cb1Sshadow303 421ffec4cb1Sshadow303 VIP_COMB_CNTL1 = 0x0444, 422ffec4cb1Sshadow303 COMB_YDLYOUTSEL = BITS(1:0), 423ffec4cb1Sshadow303 COMB_CORESIZE = BITS(3:2), 424ffec4cb1Sshadow303 COMB_YSUBEN = BITS(4:4), 425ffec4cb1Sshadow303 COMB_YOUTSEL = BITS(5:5), 426ffec4cb1Sshadow303 COMB_SYNCLPFSEL = BITS(7:6), 427ffec4cb1Sshadow303 COMB_SYNCLPFRST = BITS(8:8), 428ffec4cb1Sshadow303 COMB_DEBUG = BITS(9:9), 429ffec4cb1Sshadow303 430ffec4cb1Sshadow303 VIP_COMB_CNTL2 = 0x0448, 431ffec4cb1Sshadow303 COMB_HYK0 = BITS(7:0), 432ffec4cb1Sshadow303 COMB_VYK0 = BITS(15:8), 433ffec4cb1Sshadow303 COMB_HYK1 = BITS(23:16), 434ffec4cb1Sshadow303 COMB_VYK1 = BITS(31:24), 435ffec4cb1Sshadow303 436ffec4cb1Sshadow303 VIP_COMB_LINE_LENGTH = 0x044c, 437ffec4cb1Sshadow303 COMB_TAP0LENGTH = BITS(10:0), 438ffec4cb1Sshadow303 COMB_TAP1LENGTH = BITS(27:16), 439ffec4cb1Sshadow303 440ffec4cb1Sshadow303 VIP_NOISE_CNTL0 = 0x0450, 441ffec4cb1Sshadow303 NR_EN = BITS(0:0), 442ffec4cb1Sshadow303 NR_GAIN_CNTL = BITS(3:1), 443ffec4cb1Sshadow303 NR_BW_TRESH = BITS(9:4), 444ffec4cb1Sshadow303 NR_GC_TRESH = BITS(14:10), 445ffec4cb1Sshadow303 NR_COEF_DESPEC_IMODE = BITS(15:15), 446ffec4cb1Sshadow303 447ffec4cb1Sshadow303 // Video Decoder ADC Control 448ffec4cb1Sshadow303 VIP_ADC_CNTL = 0x0400, 449ffec4cb1Sshadow303 INPUT_SELECT = BITS(2:0), // Video input mux select 450ffec4cb1Sshadow303 INPUT_SELECT_COMP0 = 0 << 0, // Tuner 451ffec4cb1Sshadow303 INPUT_SELECT_COMP1 = 1 << 0, // Front Comp1 452ffec4cb1Sshadow303 INPUT_SELECT_COMP2 = 2 << 0, // Rear Comp1 453ffec4cb1Sshadow303 INPUT_SELECT_YF_COMP3 = 3 << 0, // Front Comp2 454ffec4cb1Sshadow303 INPUT_SELECT_YR_COMP4 = 4 << 0, // Rear Comp2 455ffec4cb1Sshadow303 INPUT_SELECT_YCF_COMP3 = 5 << 0, // Front YC 456ffec4cb1Sshadow303 INPUT_SELECT_YCR_COMP4 = 6 << 0, // Rear YC 457ffec4cb1Sshadow303 I_CLAMP_SEL = BITS(4:3), // Clamp charge-pump current select 458ffec4cb1Sshadow303 I_CLAMP_SEL_0_3 = 0 << 3, // 0.3 uA 459ffec4cb1Sshadow303 I_CLAMP_SEL_7 = 1 << 3, // 7.0 uA 460ffec4cb1Sshadow303 I_CLAMP_SEL_15 = 2 << 3, // 15.0 uA 461ffec4cb1Sshadow303 I_CLAMP_SEL_22 = 3 << 3, // 22.0 uA 462ffec4cb1Sshadow303 I_AGC_SEL = BITS(6:5), // AGC charge-pump current select 463ffec4cb1Sshadow303 I_AGC_SEL_0_3 = 0 << 5, // 0.3 uA 464ffec4cb1Sshadow303 I_AGC_SEL_7 = 1 << 5, // 7.0 uA 465ffec4cb1Sshadow303 I_AGC_SEL_15 = 2 << 5, // 15.0 uA 466ffec4cb1Sshadow303 I_AGC_SEL_22 = 3 << 5, // 22.0 uA 467ffec4cb1Sshadow303 ADC_PDWN = BITS(7:7), // AGC power-down select 468ffec4cb1Sshadow303 ADC_PDWN_UP = 0 << 7, // Power up (for capture mode) 469ffec4cb1Sshadow303 ADC_PDWN_DOWN = 1 << 7, // Power down 470ffec4cb1Sshadow303 EXT_CLAMP_CAP = BITS(8:8), // Clamp charge cap select 471ffec4cb1Sshadow303 EXT_CLAMP_CAP_INTERNAL = 0 << 8, // Use internal Clamp Cap. 472ffec4cb1Sshadow303 EXT_CLAMP_CAP_EXTERNAL = 1 << 8, // Use external Clamp Cap. 473ffec4cb1Sshadow303 EXT_AGC_CAP = BITS(9:9), // AGC charge Cap. select 474ffec4cb1Sshadow303 EXT_AGC_CAP_INTERNAL = 0 << 9, // Use internal AGC Cap. 475ffec4cb1Sshadow303 EXT_AGC_CAP_EXTERNAL = 1 << 9, // Use external AGC Cap. 476ffec4cb1Sshadow303 ADC_DECI_BYPASS = BITS(10:10), // ADC video data decimation filter select 477ffec4cb1Sshadow303 ADC_DECI_WITH_FILTER = 0 << 10, // Decimate ADC data with filtering 478ffec4cb1Sshadow303 ADC_DECI_WITHOUT_FILTER = 1 << 10, // Decimate ADC data with no filtering 479ffec4cb1Sshadow303 VBI_DECI_BYPASS = BITS(11:11), // ADC VBI data decimation filter select 480ffec4cb1Sshadow303 VBI_DECI_WITH_FILTER = 0 << 11, // Decimate VBI data from ADC with filtering 481ffec4cb1Sshadow303 VBI_DECI_WITHOUT_FILTER = 1 << 11, // Decimate VBI data from ADC with no filtering 482ffec4cb1Sshadow303 DECI_DITHER_EN = BITS(12:12), // Decimation filter output dither enable 483ffec4cb1Sshadow303 ADC_CLK_SEL = BITS(13:13), // ADC clock select 484ffec4cb1Sshadow303 ADC_CLK_SEL_4X = 0 << 13, // Run ADC at 4x Fsc 485ffec4cb1Sshadow303 ADC_CLK_SEL_8X = 1 << 13, // Run ADC at 8x Fsc 486ffec4cb1Sshadow303 ADC_BYPASS = BITS(15:14), // ADC data path select 487ffec4cb1Sshadow303 ADC_BYPASS_INTERNAL = 0 << 14, // Use internal ADC 488ffec4cb1Sshadow303 ADC_BYPASS_EXTERNAL = 1 << 14, // Use external ADC 489ffec4cb1Sshadow303 ADC_BYPASS_SINGLE = 2 << 14, // Use single step data 490ffec4cb1Sshadow303 ADC_CH_GAIN_SEL = BITS(17:16), // Analog Chroma gain select 491ffec4cb1Sshadow303 ADC_CH_GAIN_SEL_NTSC = 0 << 16, // Set chroma gain for NTSC 492ffec4cb1Sshadow303 ADC_CH_GAIN_SEL_PAL = 1 << 16, // Set chroma gain for PAL 493ffec4cb1Sshadow303 ADC_PAICM = BITS(19:18), // AMP common mode voltage select 494ffec4cb1Sshadow303 ADC_PDCBIAS = BITS(21:20), // DC 1.5V bias programmable select 495ffec4cb1Sshadow303 ADC_PREFHI = BITS(23:22), // ADC voltage reference high 496ffec4cb1Sshadow303 ADC_PREFHI_2_7 = 0 << 22, // 2.7V (recommended) 497ffec4cb1Sshadow303 ADC_PREFHI_2_6 = 1 << 22, // 2.6V 498ffec4cb1Sshadow303 ADC_PREFHI_2_5 = 2 << 22, // 2.5V 499ffec4cb1Sshadow303 ADC_PREFHI_2_4 = 3 << 22, // 2.4V 500ffec4cb1Sshadow303 ADC_PREFLO = BITS(25:24), // ADC voltage reference low 501ffec4cb1Sshadow303 ADC_PREFLO_1_8 = 0 << 24, // 1.8V 502ffec4cb1Sshadow303 ADC_PREFLO_1_7 = 1 << 24, // 1.7V 503ffec4cb1Sshadow303 ADC_PREFLO_1_6 = 2 << 24, // 1.6V 504ffec4cb1Sshadow303 ADC_PREFLO_1_5 = 3 << 24, // 1.5V (recommended) 505ffec4cb1Sshadow303 ADC_IMUXOFF = BITS(26:26), 506ffec4cb1Sshadow303 ADC_CPRESET = BITS(27:27), // AGC charge pump reset 507ffec4cb1Sshadow303 508ffec4cb1Sshadow303 VIP_ADC_DEBUG = 0x0404, 509ffec4cb1Sshadow303 ADC_PTST = BITS(0:0), // AGC test mode enable 510ffec4cb1Sshadow303 ADC_PYPDN = BITS(1:1), 511ffec4cb1Sshadow303 ADC_PCPDN = BITS(2:2), // Chroma AGC path power down mode 512ffec4cb1Sshadow303 ADC_PTSTA0 = BITS(3:3), // AGC test mux A select bit 0 513ffec4cb1Sshadow303 ADC_PTSTA1 = BITS(4:4), // AGC test mux A select bit 1 514ffec4cb1Sshadow303 ADC_PTSTB0 = BITS(5:5), // AGC test mux B select bit 0 515ffec4cb1Sshadow303 ADC_PTSTB1 = BITS(6:6), // AGC test mux B select bit 1 516ffec4cb1Sshadow303 ADC_TSTADC = BITS(7:7), // Luma & Chroma ADC test mode 517ffec4cb1Sshadow303 ADC_TSTPROBEY = BITS(8:8), // Luma AGC/ADC test mode 518ffec4cb1Sshadow303 ADC_TSTPROBEC = BITS(9:9), // Chroma AGC/ADC test mode 519ffec4cb1Sshadow303 ADC_TSTPROBEADC = BITS(10:10), // Chroma ADC test structure probe mode 520ffec4cb1Sshadow303 ADC_TSTADCBIAS = BITS(11:11), // Chroma ADC bias node probe mode 521ffec4cb1Sshadow303 ADC_TSTADCREFM = BITS(12:12), // Middle reference point for Luma & Chroma ADC probe 522ffec4cb1Sshadow303 ADC_TSTADCFBP = BITS(13:13), // Chroma ADC folding block positive output probe mode 523ffec4cb1Sshadow303 ADC_TSTADCFBN = BITS(14:14), // Chroma ADC folding block negative output probe mode 524ffec4cb1Sshadow303 ADC_TSTADCCMP1 = BITS(15:15), // Chroma ADC comparator #1 output probe mode 525ffec4cb1Sshadow303 ADC_TSTADCCMP9 = BITS(16:16), // Chroma ADC comparator #9 output probe mode 526ffec4cb1Sshadow303 ADC_TSTADCCMP17 = BITS(17:17), // Chroma ADC comparator #19 output probe mode 527ffec4cb1Sshadow303 ADC_TSTADCLATCH = BITS(18:18), // Dummy latch test mode 528ffec4cb1Sshadow303 ADC_TSTADCCOMP = BITS(19:19), // Dummy comparator test mode 529ffec4cb1Sshadow303 530ffec4cb1Sshadow303 VIP_THERMO2BIN_STATUS = 0x040c, 531ffec4cb1Sshadow303 YOVERFLOW = BITS(0:0), 532ffec4cb1Sshadow303 YUNDERFLOW = BITS(1:1), 533ffec4cb1Sshadow303 YMSB_LOW_BY_ONE = BITS(2:2), 534ffec4cb1Sshadow303 YMSB_HI_BY_ONE = BITS(3:3), 535ffec4cb1Sshadow303 COVERFLOW = BITS(4:4), 536ffec4cb1Sshadow303 CUNDERFLOW = BITS(5:5), 537ffec4cb1Sshadow303 CMSB_LOW_BY_ONE = BITS(6:6), 538ffec4cb1Sshadow303 CMSB_HI_BY_ONE = BITS(7:7), 539ffec4cb1Sshadow303 540ffec4cb1Sshadow303 // Video Decoder Sync Generator 541ffec4cb1Sshadow303 VIP_SG_BLACK_GATE = 0x04c0, // horizontal blank 542ffec4cb1Sshadow303 BLANK_INT_START = BITS(7:0), // start of horizontal blank (49) 543ffec4cb1Sshadow303 BLANK_INT_LENGTH = BITS(11:8), 544ffec4cb1Sshadow303 545ffec4cb1Sshadow303 VIP_SG_SYNCTIP_GATE = 0x04c4, // synctip pulse 546ffec4cb1Sshadow303 SYNC_TIP_START = BITS(10:0), // start of sync pulse (882) 547ffec4cb1Sshadow303 SYNC_TIP_LENGTH = BITS(15:12), 548ffec4cb1Sshadow303 549ffec4cb1Sshadow303 VIP_SG_UVGATE_GATE = 0x04c8, // chroma burst 550ffec4cb1Sshadow303 UV_INT_START = BITS(7:0), // start of chroma burst (59) 551ffec4cb1Sshadow303 U_INT_LENGTH = BITS(11:8), 552ffec4cb1Sshadow303 V_INT_LENGTH = BITS(15:12), 553ffec4cb1Sshadow303 554ffec4cb1Sshadow303 // Video Decoder Luminance Processor 555ffec4cb1Sshadow303 VIP_LP_AGC_CLAMP_CNTL0 = 0x0500, // Luma AGC Clamp control 556ffec4cb1Sshadow303 SYNCTIP_REF0 = BITS(7:0), // 40 IRE reference 557ffec4cb1Sshadow303 SYNCTIP_REF1 = BITS(15:8), 558ffec4cb1Sshadow303 CLAMP_REF = BITS(23:16), 559ffec4cb1Sshadow303 AGC_PEAKWHITE = BITS(31:24), 560ffec4cb1Sshadow303 561ffec4cb1Sshadow303 VIP_LP_AGC_CLAMP_CNTL1 = 0x0504, // Luma AGC Clamp control 562ffec4cb1Sshadow303 VBI_PEAKWHITE = BITS(7:0), // 563ffec4cb1Sshadow303 CLAMPLOOP_EN = BITS(24:24), // Run Clamp loop 564ffec4cb1Sshadow303 CLAMPLOOP_INV = BITS(25:25), // Negative Clamp Loop 565ffec4cb1Sshadow303 AGCLOOP_EN = BITS(26:26), // Run AGC loop 566ffec4cb1Sshadow303 AGCLOOP_INV = BITS(27:27), // Negative AGC loop 567ffec4cb1Sshadow303 568ffec4cb1Sshadow303 VIP_LP_BRIGHTNESS = 0x0508, // Luma Brightness control 569ffec4cb1Sshadow303 BRIGHTNESS = BITS(13:0), // Brightness level 570ffec4cb1Sshadow303 LUMAFLT_SEL = BITS(15:15), // Select flat filter 571ffec4cb1Sshadow303 572ffec4cb1Sshadow303 VIP_LP_CONTRAST = 0x050c, // Luma Contrast level 573ffec4cb1Sshadow303 CONTRAST = BITS(7:0), // Contrast level 574ffec4cb1Sshadow303 DITHER_SEL = BITS(9:8), // Dither selection 575ffec4cb1Sshadow303 DITHER_SEL_TRUNC = 0 << 8, // Truncation 576ffec4cb1Sshadow303 DITHER_SEL_ROUND = 1 << 8, // Round 577ffec4cb1Sshadow303 DITHER_SEL_4BIT = 2 << 8, // 4 bit error 578ffec4cb1Sshadow303 DITHER_SEL_9BIT = 3 << 9, // 9 bit error 579ffec4cb1Sshadow303 580ffec4cb1Sshadow303 VIP_LP_SLICE_LIMIT = 0x0510, 581ffec4cb1Sshadow303 SLICE_LIMIT_HI = BITS(7:0), 582ffec4cb1Sshadow303 SLICE_LIMIT_LO = BITS(15:8), 583ffec4cb1Sshadow303 SLICE_LIMIT = BITS(23:16), 584ffec4cb1Sshadow303 585ffec4cb1Sshadow303 VIP_LP_WPA_CNTL0 = 0x0514, 586ffec4cb1Sshadow303 WPA_THRESHOLD = BITS(10:0), 587ffec4cb1Sshadow303 588ffec4cb1Sshadow303 VIP_LP_WPA_CNTL1 = 0x0518, 589ffec4cb1Sshadow303 WPA_TRIGGER_LO = BITS(9:0), 590ffec4cb1Sshadow303 WPA_TRIGGER_HI = BITS(25:16), 591ffec4cb1Sshadow303 592ffec4cb1Sshadow303 VIP_LP_BLACK_LEVEL = 0x051c, 593ffec4cb1Sshadow303 BLACK_LEVEL = BITS(12:0), 594ffec4cb1Sshadow303 595ffec4cb1Sshadow303 VIP_LP_SLICE_LEVEL = 0x0520, 596ffec4cb1Sshadow303 SLICE_LEVEL = BITS(7:0), 597ffec4cb1Sshadow303 598ffec4cb1Sshadow303 VIP_LP_SYNCTIP_LEVEL = 0x0524, 599ffec4cb1Sshadow303 SYNCTIP_LEVEL = BITS(12:0), 600ffec4cb1Sshadow303 601ffec4cb1Sshadow303 VIP_LP_VERT_LOCKOUT = 0x0528, 602ffec4cb1Sshadow303 LP_LOCKOUT_START = BITS(9:0), 603ffec4cb1Sshadow303 LP_LOCKOUT_END = BITS(25:16), 604ffec4cb1Sshadow303 605ffec4cb1Sshadow303 // Video Decoder Vertical Sync Detector/Counter 606ffec4cb1Sshadow303 VIP_VS_DETECTOR_CNTL = 0x0540, 607ffec4cb1Sshadow303 VSYNC_INT_TRIGGER = BITS(10:0), 608ffec4cb1Sshadow303 VSYNC_INT_HOLD = BITS(26:16), 609ffec4cb1Sshadow303 610ffec4cb1Sshadow303 VIP_VS_BLANKING_CNTL = 0x0544, 611ffec4cb1Sshadow303 VS_FIELD_BLANK_START = BITS(9:0), 612ffec4cb1Sshadow303 VS_FIELD_BLANK_END = BITS(25:16), 613ffec4cb1Sshadow303 614ffec4cb1Sshadow303 VIP_VS_FIELD_ID_CNTL = 0x0548, 615ffec4cb1Sshadow303 VS_FIELD_ID_LOCATION = BITS(8:0), 616ffec4cb1Sshadow303 617ffec4cb1Sshadow303 VIP_VS_COUNTER_CNTL = 0x054c, // Vertical Sync Counter control 618ffec4cb1Sshadow303 FIELD_DETECT_MODE = BITS(1:0), // Field detection mode 619ffec4cb1Sshadow303 FIELD_DETECT_ARTIFICIAL = 0 << 0, // Use artificial field 620ffec4cb1Sshadow303 FIELD_DETECT_DETECTED = 1 << 0, // Use detected field 621ffec4cb1Sshadow303 FIELD_DETECT_AUTO = 2 << 0, // Auto switch to Artificial if interlace is lost 622ffec4cb1Sshadow303 FIELD_DETECT_FORCE = 3 << 0, // Use field force bit 623ffec4cb1Sshadow303 FIELD_FLIP_EN = BITS(2:2), // Flip the fields 624ffec4cb1Sshadow303 FIELD_FORCE_EN = BITS(3:3), // Force field number 625ffec4cb1Sshadow303 VSYNC_WINDOW_EN = BITS(4:4), // Enable VSYNC window 626ffec4cb1Sshadow303 627ffec4cb1Sshadow303 VIP_VS_FRAME_TOTAL = 0x0550, 628ffec4cb1Sshadow303 VS_FRAME_TOTAL = BITS(9:0), // number of lines per frame 629ffec4cb1Sshadow303 630ffec4cb1Sshadow303 VIP_VS_LINE_COUNT = 0x0554, 631ffec4cb1Sshadow303 VS_LINE_COUNT = BITS(9:0), // current line counter 632ffec4cb1Sshadow303 VS_ITU656_VB = BITS(13:13), 633ffec4cb1Sshadow303 VS_ITU656_FID = BITS(14:14), 634ffec4cb1Sshadow303 VS_INTERLACE_DETECTED = BITS(15:15), 635ffec4cb1Sshadow303 VS_DETECTED_LINES = BITS(25:16), // detected number of lines per frame 636ffec4cb1Sshadow303 CURRENT_FIELD = BITS(27:27), // current field number (odd or even) 637ffec4cb1Sshadow303 PREVIOUS_FIELD = BITS(28:28), // previous field number (odd or even) 638ffec4cb1Sshadow303 ARTIFICIAL_FIELD = BITS(29:29), 639ffec4cb1Sshadow303 VS_WINDOW_COUNT = BITS(31:30), 640ffec4cb1Sshadow303 641ffec4cb1Sshadow303 // Video Decoder Chroma Processor 642ffec4cb1Sshadow303 VIP_CP_PLL_CNTL0 = 0x0580, 643ffec4cb1Sshadow303 CH_DTO_INC = BITS(23:0), 644ffec4cb1Sshadow303 CH_PLL_SGAIN = BITS(27:24), 645ffec4cb1Sshadow303 CH_PLL_FGAIN = BITS(31:28), 646ffec4cb1Sshadow303 647ffec4cb1Sshadow303 VIP_CP_PLL_CNTL1 = 0x0584, 648ffec4cb1Sshadow303 VFIR = BITS(0:0), // 0=disable, 1=enable phase filter FIR 649ffec4cb1Sshadow303 PFLIP = BITS(1:1), // 0=Use PAL/SECAM Vswitch as detected 650ffec4cb1Sshadow303 // 1=Flip detected PAL/SECAM Vswitch 651ffec4cb1Sshadow303 PFILT = BITS(2:2), // 0=Use sign bit of phase error for PAL Vswitch 652ffec4cb1Sshadow303 // 1=Use PAL Vswitch filter 653ffec4cb1Sshadow303 654ffec4cb1Sshadow303 VIP_CP_HUE_CNTL = 0x0588, 655ffec4cb1Sshadow303 HUE_ADJ = BITS(7:0), // Hue adjustment 656ffec4cb1Sshadow303 657ffec4cb1Sshadow303 VIP_CP_BURST_GAIN = 0x058c, 658ffec4cb1Sshadow303 CR_BURST_GAIN = BITS(8:0), 659ffec4cb1Sshadow303 CB_BURST_GAIN = BITS(24:16), 660ffec4cb1Sshadow303 661ffec4cb1Sshadow303 VIP_CP_AGC_CNTL = 0x0590, 662ffec4cb1Sshadow303 CH_HEIGHT = BITS(7:0), 663ffec4cb1Sshadow303 CH_KILL_LEVEL = BITS(15:8), 664ffec4cb1Sshadow303 CH_AGC_ERROR_LIM = BITS(17:16), // Force error to 0, 1, 2 or 3 665ffec4cb1Sshadow303 CH_AGC_FILTER_EN = BITS(18:18), // 0=disable, 1=enable filter 666ffec4cb1Sshadow303 CH_AGC_LOOP_SPEED = BITS(19:19), // 0=slow, 1=fast 667ffec4cb1Sshadow303 668ffec4cb1Sshadow303 VIP_CP_ACTIVE_GAIN = 0x0594, 669ffec4cb1Sshadow303 CRDR_ACTIVE_GAIN = BITS(9:0), // Saturation adjustment 670ffec4cb1Sshadow303 CBDB_ACTIVE_GAIN = BITS(25:16), 671ffec4cb1Sshadow303 672ffec4cb1Sshadow303 VIP_CP_PLL_STATUS0 = 0x0598, 673ffec4cb1Sshadow303 CH_GAIN_ACC0 = BITS(13:0), 674ffec4cb1Sshadow303 CH_GAIN_ACC1 = BITS(29:16), 675ffec4cb1Sshadow303 676ffec4cb1Sshadow303 VIP_CP_PLL_STATUS1 = 0x059c, 677ffec4cb1Sshadow303 CH_VINT_OUT = BITS(18:0), 678ffec4cb1Sshadow303 679ffec4cb1Sshadow303 VIP_CP_PLL_STATUS2 = 0x05a0, 680ffec4cb1Sshadow303 CH_UINT_OUT = BITS(12:0), 681ffec4cb1Sshadow303 CH_VSWITCH = BITS(16:16), 682ffec4cb1Sshadow303 CH_SECAM_SWITCH = BITS(17:17), 683ffec4cb1Sshadow303 CH_PAL_SWITCH = BITS(18:18), 684ffec4cb1Sshadow303 CH_PAL_FLT_STAT = BITS(21:19), 685ffec4cb1Sshadow303 CH_COLOR_KILL = BITS(22:22), 686ffec4cb1Sshadow303 687ffec4cb1Sshadow303 VIP_CP_PLL_STATUS3 = 0x05a4, 688ffec4cb1Sshadow303 CH_ERROR_INT0 = BITS(20:0), 689ffec4cb1Sshadow303 690ffec4cb1Sshadow303 VIP_CP_PLL_STATUS4 = 0x05a8, 691ffec4cb1Sshadow303 CH_ERROR_INT1 = BITS(20:0), 692ffec4cb1Sshadow303 693ffec4cb1Sshadow303 VIP_CP_PLL_STATUS5 = 0x05ac, 694ffec4cb1Sshadow303 CH_FAST_PATH = BITS(24:0), 695ffec4cb1Sshadow303 696ffec4cb1Sshadow303 VIP_CP_PLL_STATUS6 = 0x05b0, 697ffec4cb1Sshadow303 CH_SLOW_PATH = BITS(24:0), 698ffec4cb1Sshadow303 699ffec4cb1Sshadow303 VIP_CP_PLL_STATUS7 = 0x05b4, 700ffec4cb1Sshadow303 FIELD_BPHASE_COUNT = BITS(5:0), 701ffec4cb1Sshadow303 BPHASE_BURST_COUNT = BITS(13:8), 702ffec4cb1Sshadow303 703ffec4cb1Sshadow303 VIP_CP_DEBUG_FORCE = 0x05b8, 704ffec4cb1Sshadow303 GAIN_FORCE_DATA = BITS(11:0), 705ffec4cb1Sshadow303 GAIN_FORCE_EN = BITS(12:12), // 0=disable, 1==enable force chroma gain 706ffec4cb1Sshadow303 707ffec4cb1Sshadow303 VIP_CP_VERT_LOCKOUT = 0x05bc, 708ffec4cb1Sshadow303 CP_LOCKOUT_START = BITS(9:0), 709ffec4cb1Sshadow303 CP_LOCKOUT_END = BITS(25:16), 710ffec4cb1Sshadow303 711ffec4cb1Sshadow303 // Video Decoder Clip Engine and VBI Control 712ffec4cb1Sshadow303 VIP_H_ACTIVE_WINDOW = 0x05c0, 713ffec4cb1Sshadow303 H_ACTIVE_START = BITS(10:0), // Horizotal active window 714ffec4cb1Sshadow303 H_ACTIVE_END = BITS(26:16), 715ffec4cb1Sshadow303 716ffec4cb1Sshadow303 VIP_V_ACTIVE_WINDOW = 0x05c4, 717ffec4cb1Sshadow303 V_ACTIVE_START = BITS(9:0), // Vertical active window 718ffec4cb1Sshadow303 V_ACTIVE_END = BITS(25:16), 719ffec4cb1Sshadow303 720ffec4cb1Sshadow303 VIP_H_VBI_WINDOW = 0x05c8, 721ffec4cb1Sshadow303 H_VBI_WIND_START = BITS(10:0), // Horizontal VBI window 722ffec4cb1Sshadow303 H_VBI_WIND_END = BITS(26:16), 723ffec4cb1Sshadow303 724ffec4cb1Sshadow303 VIP_V_VBI_WINDOW = 0x05cc, 725ffec4cb1Sshadow303 V_VBI_WIND_START = BITS(9:0), // Vertical VBI window 726ffec4cb1Sshadow303 V_VBI_WIND_END = BITS(25:16), 727ffec4cb1Sshadow303 728ffec4cb1Sshadow303 VIP_VBI_CONTROL = 0x05d0, 729ffec4cb1Sshadow303 VBI_CAPTURE_ENABLE = BITS(1:0), // Select VBI capture 730ffec4cb1Sshadow303 VBI_CAPTURE_DIS = 0 << 0, // Disable VBI capture 731ffec4cb1Sshadow303 VBI_CAPTURE_EN = 1 << 0, // Enable VBI capture 732ffec4cb1Sshadow303 VBI_CAPTURE_RAW = 2 << 0, // Enable Raw Video capture 733ffec4cb1Sshadow303 734ffec4cb1Sshadow303 735ffec4cb1Sshadow303 // Video Decoder Standard 736ffec4cb1Sshadow303 VIP_STANDARD_SELECT = 0x0408, 737ffec4cb1Sshadow303 STANDARD_SEL = BITS(1:0), // Select video standard 738ffec4cb1Sshadow303 STANDARD_NTSC = 0 << 0, // NTSC 739ffec4cb1Sshadow303 STANDARD_PAL = 1 << 0, // PAL 740ffec4cb1Sshadow303 STANDARD_SECAM = 2 << 0, // SECAM 741ffec4cb1Sshadow303 YC_MODE = BITS(2:2), // Select YC video mode 742ffec4cb1Sshadow303 YC_MODE_COMPOSITE = 0 << 2, // Composite 743ffec4cb1Sshadow303 YC_MODE_SVIDEO = 1 << 2, // SVideo 744ffec4cb1Sshadow303 745ffec4cb1Sshadow303 // Video In Scaler and DVS Port 746ffec4cb1Sshadow303 VIP_SCALER_IN_WINDOW = 0x0618, // Scaler In Window 747ffec4cb1Sshadow303 H_IN_WIND_START = BITS(10:0), // Horizontal start 748ffec4cb1Sshadow303 V_IN_WIND_START = BITS(25:16), // Vertical start 749ffec4cb1Sshadow303 750ffec4cb1Sshadow303 VIP_SCALER_OUT_WINDOW = 0x061c, // Scaler Out Window 751ffec4cb1Sshadow303 H_OUT_WIND_WIDTH = BITS(9:0), // Horizontal output window width 752ffec4cb1Sshadow303 V_OUT_WIND_HEIGHT = BITS(24:16), // Vertical output window height 753ffec4cb1Sshadow303 754ffec4cb1Sshadow303 VIP_H_SCALER_CONTROL = 0x0600, // Horizontal Scaler control 755ffec4cb1Sshadow303 H_SCALE_RATIO = BITS(20:0), // Horizontal scale ratio (5.16 fixed point) 756ffec4cb1Sshadow303 H_SHARPNESS = BITS(28:25), // Sharpness control (15=6dB high frequency boost) 757ffec4cb1Sshadow303 H_BYPASS = BITS(30:30), // Horizontal bypass enable 758ffec4cb1Sshadow303 759ffec4cb1Sshadow303 VIP_V_SCALER_CONTROL = 0x0604, // Vertical Scaler control 760ffec4cb1Sshadow303 V_SCALE_RATIO = BITS(11:0), // Vertical scaling ratio (1.11 fixed point) 761ffec4cb1Sshadow303 V_DEINTERLACE_ON = BITS(12:12), // Enable deinterlacing 762ffec4cb1Sshadow303 V_FIELD_FLIP = BITS(13:13), // Invert field flag 763ffec4cb1Sshadow303 V_BYPASS = BITS(14:14), // Enable vertical bypass 764ffec4cb1Sshadow303 V_DITHER_ON = BITS(15:15), // Vertical path dither enable 765ffec4cb1Sshadow303 766ffec4cb1Sshadow303 VIP_V_DEINTERLACE_CONTROL = 0x0608, // Deinterlace control 767ffec4cb1Sshadow303 EVENF_OFFSET = BITS(10:0), // Even Field offset 768ffec4cb1Sshadow303 ODDF_OFFSET = BITS(21:11), // Odd Field offset 769ffec4cb1Sshadow303 770ffec4cb1Sshadow303 VIP_VBI_SCALER_CONTROL = 0x060c, // VBI Scaler control 771ffec4cb1Sshadow303 VBI_SCALING_RATIO = BITS(16:0), // Scaling ratio for VBI data (1.16 fixed point) 772ffec4cb1Sshadow303 VBI_ALIGNER_ENABLE = BITS(17:17), // VBI/Raw data aligner enable 773ffec4cb1Sshadow303 774ffec4cb1Sshadow303 VIP_DVS_PORT_CTRL = 0x0610, // DVS Port control 775ffec4cb1Sshadow303 DVS_DIRECTION = BITS(0:0), // DVS direction 776ffec4cb1Sshadow303 DVS_DIRECTION_INPUT = 0 << 0, // Input mode 777ffec4cb1Sshadow303 DVS_DIRECTION_OUTPUT = 1 << 0, // Output mode 778ffec4cb1Sshadow303 DVS_VBI_BYTE_SWAP = BITS(1:1), // Output video stream type 779ffec4cb1Sshadow303 DVS_VBI_BYTE_SEQUENTIAL = 0 << 1, // Sequential 780ffec4cb1Sshadow303 DVS_VBI_BYTE_SWAPPED = 1 << 1, // Byte swapped 781ffec4cb1Sshadow303 DVS_CLK_SELECT = BITS(2:2), // DVS output clock select 782ffec4cb1Sshadow303 DVS_CLK_SELECT_8X = 0 << 2, // 8x Fsc 783ffec4cb1Sshadow303 DVS_CLK_SELECT_27MHz = 1 << 2, // 27 MHz 784ffec4cb1Sshadow303 CONTINUOUS_STREAM = BITS(3:3), // Enable continuous stream mode 785ffec4cb1Sshadow303 DVSOUT_CLK_DRV = BITS(4:4), // 0=high, 1=low DVS port output clock buffer drive strength 786ffec4cb1Sshadow303 DVSOUT_DATA_DRV = BITS(5:5), // 0=high, 1=low DVS port output data buffers driver strength 787ffec4cb1Sshadow303 788ffec4cb1Sshadow303 VIP_DVS_PORT_READBACK = 0x0614, // DVS Port readback 789ffec4cb1Sshadow303 DVS_OUTPUT_READBACK = BITS(7:0), // Data from DVS port fifo 790ffec4cb1Sshadow303 791ffec4cb1Sshadow303 // Clock and Reset Control 792ffec4cb1Sshadow303 VIP_CLKOUT_GPIO_CNTL = 0x0038, 793ffec4cb1Sshadow303 CLKOUT0_SEL = BITS(2:0), // Select output to CLKOUT0_GPIO0 pin 794ffec4cb1Sshadow303 CLKOUT0_SEL_REF_CLK = 0 << 0, // Reference Clock 795ffec4cb1Sshadow303 CLKOUT0_SEL_L54_CLK = 1 << 0, // Lockable 54 MHz Clock 796ffec4cb1Sshadow303 CLKOUT0_SEL_AUD_CLK = 2 << 0, // Audio Source Clock 797ffec4cb1Sshadow303 CLKOUT0_SEL_DIV_AUD_CLK = 3 << 0, // Divided Audio Source Clock 798ffec4cb1Sshadow303 CLKOUT0_SEL_BYTE_CLK = 4 << 0, // Byte Clock 799ffec4cb1Sshadow303 CLKOUT0_SEL_PIXEL_CLK = 5 << 0, // Pixel Clock 800ffec4cb1Sshadow303 CLKOUT0_SEL_TEST_MUX = 6 << 0, // Clock Test Mux Output 801ffec4cb1Sshadow303 CLKOUT0_SEL_GPIO0_OUT = 7 << 0, // GPIO0_OUT 802ffec4cb1Sshadow303 CLKOUT0_DRV = BITS(3:3), // Set drive strength for CLKOUT0_GPIO0 pin 803ffec4cb1Sshadow303 CLKOUT0_DRV_8mA = 0 << 3, // 8 mA 804ffec4cb1Sshadow303 CLKOUT0_DRV_4mA = 1 << 3, // 4 mA 805ffec4cb1Sshadow303 CLKOUT1_SEL = BITS(6:4), // Select output to CLKOUT1_GPIO1 pin 806ffec4cb1Sshadow303 CLKOUT1_SEL_REF_CLK = 0 << 4, // Reference Clock 807ffec4cb1Sshadow303 CLKOUT1_SEL_L54_CLK = 1 << 4, // Lockable 54 MHz Clock 808ffec4cb1Sshadow303 CLKOUT1_SEL_AUD_CLK = 2 << 4, // Audio Source Clock 809ffec4cb1Sshadow303 CLKOUT1_SEL_DIV_AUD_CLK = 3 << 4, // Divided Audio Source Clock 810ffec4cb1Sshadow303 CLKOUT1_SEL_PIXEL_CLK = 4 << 4, // Pixel Clock 811ffec4cb1Sshadow303 CLKOUT1_SEL_SPDIF_CLK = 5 << 4, // SPDIF Clock 812ffec4cb1Sshadow303 CLKOUT1_SEL_REG_CLK = 6 << 4, // Register Clock 813ffec4cb1Sshadow303 CLKOUT1_SEL_GPIO1_OUT = 7 << 4, // GPIO1_OUT 814ffec4cb1Sshadow303 CLKOUT1_DRV = BITS(7:7), // Set drive strength for CLKOUT1_GPIO1 pin 815ffec4cb1Sshadow303 CLKOUT1_DRV_8mA = 0 << 7, // 8 mA 816ffec4cb1Sshadow303 CLKOUT1_DRV_4mA = 1 << 7, // 4 mA 817ffec4cb1Sshadow303 CLKOUT2_SEL = BITS(10:8), // Select output to CLKOUT2_GPIO2 pin 818ffec4cb1Sshadow303 CLKOUT2_SEL_REF_CLK = 0 << 0, // Reference Clock 819ffec4cb1Sshadow303 CLKOUT2_SEL_L54_CLK = 1 << 0, // Lockable 54 MHz Clock 820ffec4cb1Sshadow303 CLKOUT2_SEL_AUD_CLK = 2 << 0, // Audio Source Clock 821ffec4cb1Sshadow303 CLKOUT2_SEL_DIV_AUD_CLK = 3 << 0, // Divided Audio Source Clock 822ffec4cb1Sshadow303 CLKOUT2_SEL_VIN_CLK = 4 << 0, // Video In Clock 823ffec4cb1Sshadow303 CLKOUT2_SEL_VIN_SC_CLK = 5 << 0, // Video In Scaler Clock 824ffec4cb1Sshadow303 CLKOUT2_SEL_TV_CLK = 6 << 0, // TV Clock 825ffec4cb1Sshadow303 CLKOUT2_SEL_GPIO2_OUT = 7 << 0, // GPIO2_OUT 826ffec4cb1Sshadow303 CLKOUT2_DRV = BITS(11:11), // Set drive strength for CLKOUT2_GPIO2 pin 827ffec4cb1Sshadow303 CLKOUT2_DRV_8mA = 0 << 11, // 8 mA 828ffec4cb1Sshadow303 CLKOUT2_DRV_4mA = 1 << 11, // 4 mA 829ffec4cb1Sshadow303 CLKOUT1_DIV = BITS(23:16), // Postdivider for CLKOUT1 830ffec4cb1Sshadow303 CLKOUT2_DIV = BITS(31:24), // Postdivider for CLKOUT2 831ffec4cb1Sshadow303 832ffec4cb1Sshadow303 VIP_MASTER_CNTL = 0x0040, // Master control 833ffec4cb1Sshadow303 TV_ASYNC_RST = BITS(0:0), // Reset several blocks that use the TV Clock 834ffec4cb1Sshadow303 CRT_ASYNC_RST = BITS(1:1), // Reset several blocks that use the CRT Clock 835ffec4cb1Sshadow303 RESTART_PHASE_FIX = BITS(3:3), // 836ffec4cb1Sshadow303 TV_FIFO_ASYNC_RST = BITS(4:4), // 837ffec4cb1Sshadow303 VIN_ASYNC_RST = BITS(5:5), // Reset several blocks that use the VIN, ADC or SIN Clock 838ffec4cb1Sshadow303 AUD_ASYNC_RST = BITS(6:6), // Reset several blocks that use the SPDIF or I2S Clock 839ffec4cb1Sshadow303 DVS_ASYNC_RST = BITS(7:7), // Reset several blocks that use the DVSOUT Clock 840ffec4cb1Sshadow303 CLKOUT_CLK_SEL = BITS(8:8), // External BYTE clock 841ffec4cb1Sshadow303 CRT_FIFO_CE_EN = BITS(9:9), // 842ffec4cb1Sshadow303 TV_FIFO_CE_EN = BITS(10:10), 843ffec4cb1Sshadow303 844ffec4cb1Sshadow303 VIP_CLKOUT_CNTL = 0x004c, 845ffec4cb1Sshadow303 CLKOUT_OE = BITS(0:0), 846ffec4cb1Sshadow303 CLKOUT_PUB = BITS(3:3), 847ffec4cb1Sshadow303 CLKOUT_PD = BITS(4:4), 848ffec4cb1Sshadow303 CLKOUT_DRV = BITS(5:5), 849ffec4cb1Sshadow303 850ffec4cb1Sshadow303 VIP_TV_PLL_CNTL = 0x00c0, 851ffec4cb1Sshadow303 TV_M0_LO = BITS(7:0), 852ffec4cb1Sshadow303 TV_N0_LO = BITS(16:8), 853ffec4cb1Sshadow303 TV_M0_HI = BITS(20:18), 854ffec4cb1Sshadow303 TV_N0_HI = BITS(22:21), 855ffec4cb1Sshadow303 TV_SLIP_EN = BITS(23:23), 856ffec4cb1Sshadow303 TV_P = BITS(27:24), 857ffec4cb1Sshadow303 TV_DTO_EN = BITS(28:28), 858ffec4cb1Sshadow303 TV_DTO_TYPE = BITS(29:29), 859ffec4cb1Sshadow303 TV_REF_CLK_SEL = BITS(31:30), 860ffec4cb1Sshadow303 861ffec4cb1Sshadow303 VIP_CRT_PLL_CNTL = 0x00c4, 862ffec4cb1Sshadow303 CRT_M0_LO = BITS(7:0), 863ffec4cb1Sshadow303 CRT_N0_LO = BITS(16:8), 864ffec4cb1Sshadow303 CRT_M0_HI = BITS(20:18), 865ffec4cb1Sshadow303 CRT_N0_HI = BITS(22:21), 866ffec4cb1Sshadow303 CRTCLK_USE_CLKBY2 = BITS(25:25), 867ffec4cb1Sshadow303 CRT_MNFLIP_EN = BITS(26:26), 868ffec4cb1Sshadow303 CRT_SLIP_EN = BITS(27:27), 869ffec4cb1Sshadow303 CRT_DTO_EN = BITS(28:28), 870ffec4cb1Sshadow303 CRT_DTO_TYPE = BITS(29:29), 871ffec4cb1Sshadow303 CRT_REF_CLK_SEL = BITS(31:30), 872ffec4cb1Sshadow303 873ffec4cb1Sshadow303 VIP_PLL_CNTL0 = 0x00c8, 874ffec4cb1Sshadow303 TVRST = BITS(1:1), 875ffec4cb1Sshadow303 CRTRST = BITS(2:2), 876ffec4cb1Sshadow303 TVSLEEPB = BITS(3:3), 877ffec4cb1Sshadow303 CRTSLEEPB = BITS(4:4), 878ffec4cb1Sshadow303 TVPCP = BITS(10:8), 879ffec4cb1Sshadow303 TVPVG = BITS(12:11), 880ffec4cb1Sshadow303 TVPDC = BITS(15:13), 881ffec4cb1Sshadow303 CRTPCP = BITS(18:16), 882ffec4cb1Sshadow303 CRTPVG = BITS(20:19), 883ffec4cb1Sshadow303 CRTPDC = BITS(23:21), 884ffec4cb1Sshadow303 CKMONEN = BITS(24:24), 885ffec4cb1Sshadow303 886ffec4cb1Sshadow303 VIP_PLL_TEST_CNTL = 0x00cc, 887ffec4cb1Sshadow303 PLL_TEST = BITS(0:0), 888ffec4cb1Sshadow303 PLL_TST_RST = BITS(1:1), 889ffec4cb1Sshadow303 PLL_TST_DIV = BITS(2:2), 890ffec4cb1Sshadow303 PLL_TST_CNT_RST = BITS(3:3), 891ffec4cb1Sshadow303 STOP_REF_CLK = BITS(7:7), 892ffec4cb1Sshadow303 PLL_TST_SEL = BITS(13:8), 893ffec4cb1Sshadow303 PLL_TEST_COUNT = BITS(31:16), 894ffec4cb1Sshadow303 895ffec4cb1Sshadow303 VIP_CLOCK_SEL_CNTL = 0x00d0, 896ffec4cb1Sshadow303 TV_CLK_SEL = BITS(0:0), 897ffec4cb1Sshadow303 CRT_CLK_SEL = BITS(1:1), 898ffec4cb1Sshadow303 BYT_CLK_SEL = BITS(3:2), 899ffec4cb1Sshadow303 PIX_CLK_SEL = BITS(4:4), 900ffec4cb1Sshadow303 REG_CLK_SEL = BITS(5:5), 901ffec4cb1Sshadow303 TST_CLK_SEL = BITS(6:6), 902ffec4cb1Sshadow303 VIN_CLK_SEL = BITS(7:7), // Select VIN clock 903ffec4cb1Sshadow303 VIN_CLK_SEL_REF_CLK = 0 << 7, // Select reference clock 904ffec4cb1Sshadow303 VIN_CLK_SEL_VIPLL_CLK = 1 << 7, // Select VIN PLL clock 905ffec4cb1Sshadow303 BYT_CLK_DEL = BITS(10:8), 906ffec4cb1Sshadow303 AUD_CLK_SEL = BITS(11:11), 907ffec4cb1Sshadow303 L54_CLK_SEL = BITS(12:12), 908ffec4cb1Sshadow303 MV_ZONE_1_PHASE = BITS(13:13), 909ffec4cb1Sshadow303 MV_ZONE_2_PHASE = BITS(14:14), 910ffec4cb1Sshadow303 MV_ZONE_3_PHASE = BITS(15:15), 911ffec4cb1Sshadow303 912ffec4cb1Sshadow303 VIP_VIN_PLL_CNTL = 0x00d4, // VIN PLL control 913ffec4cb1Sshadow303 VIN_M0 = BITS(10:0), // Reference divider 914ffec4cb1Sshadow303 VIN_N0 = BITS(21:11), // Feedback divider 915ffec4cb1Sshadow303 VIN_MNFLIP_EN = BITS(22:22), // M/N flip enable 916ffec4cb1Sshadow303 VIN_P = BITS(27:24), // Post divider 917ffec4cb1Sshadow303 VIN_REF_CLK_SEL = BITS(31:30), // VIN reference source select 918ffec4cb1Sshadow303 VIN_REF_CLK = 0 << 30, // Reference clock 919ffec4cb1Sshadow303 VIN_SEC_REF_CLK = 1 << 30, // Secondary Reference Clock 920ffec4cb1Sshadow303 VIN_L54_CLK = 2 << 30, // L54 PLL Clock 921ffec4cb1Sshadow303 VIN_SLIP_L54_CLK = 3 << 30, // Slippable L54 PLL Clock 922ffec4cb1Sshadow303 923ffec4cb1Sshadow303 VIP_VIN_PLL_FINE_CNTL = 0x00d8, 924ffec4cb1Sshadow303 VIN_M1 = BITS(10:0), 925ffec4cb1Sshadow303 VIN_N1 = BITS(21:11), 926ffec4cb1Sshadow303 VIN_DIVIDER_SEL = BITS(22:22), 927ffec4cb1Sshadow303 VIN_MNFLIP_REQ = BITS(23:23), 928ffec4cb1Sshadow303 VIN_MNFLIP_DONE = BITS(24:24), 929ffec4cb1Sshadow303 TV_LOCK_TO_VIN = BITS(27:27), 930ffec4cb1Sshadow303 TV_P_FOR_VINCLK = BITS(31:28), 931ffec4cb1Sshadow303 932ffec4cb1Sshadow303 VIP_AUD_PLL_CNTL = 0x00e0, 933ffec4cb1Sshadow303 AUD_M0 = BITS(10:0), 934ffec4cb1Sshadow303 AUD_N0 = BITS(21:11), 935ffec4cb1Sshadow303 AUD_MNFLIP_EN = BITS(22:22), 936ffec4cb1Sshadow303 AUD_SLIP_EN = BITS(23:23), 937ffec4cb1Sshadow303 AUD_P = BITS(27:24), 938ffec4cb1Sshadow303 AUD_DTO_EN = BITS(28:28), 939ffec4cb1Sshadow303 AUD_DTO_TYPE = BITS(29:29), 940ffec4cb1Sshadow303 AUD_REF_CLK_SEL = BITS(31:30), 941ffec4cb1Sshadow303 942ffec4cb1Sshadow303 VIP_AUD_PLL_FINE_CNTL = 0x00e4, 943ffec4cb1Sshadow303 AUD_M1 = BITS(10:0), 944ffec4cb1Sshadow303 AUD_N1 = BITS(21:11), 945ffec4cb1Sshadow303 AUD_DIVIDER_SEL = BITS(22:22), 946ffec4cb1Sshadow303 AUD_MNFLIP_REQ = BITS(23:23), 947ffec4cb1Sshadow303 AUD_MNFLIP_DONE = BITS(24:24), 948ffec4cb1Sshadow303 AUD_SLIP_REQ = BITS(25:25), 949ffec4cb1Sshadow303 AID_SLIP_DONE = BITS(26:26), 950ffec4cb1Sshadow303 AUD_SLIP_COUNT = BITS(31:28), 951ffec4cb1Sshadow303 952ffec4cb1Sshadow303 VIP_AUD_CLK_DIVIDERS = 0x00e8, 953ffec4cb1Sshadow303 SPDIF_P = BITS(3:0), 954ffec4cb1Sshadow303 I2S_P = BITS(7:4), 955ffec4cb1Sshadow303 DIV_AUD_P = BITS(11:8), 956ffec4cb1Sshadow303 957ffec4cb1Sshadow303 VIP_AUD_DTO_INCREMENTS = 0x00ec, 958ffec4cb1Sshadow303 AUD_DTO_INC0 = BITS(15:0), 959ffec4cb1Sshadow303 AUD_DTO_INC1 = BITS(31:16), 960ffec4cb1Sshadow303 961ffec4cb1Sshadow303 VIP_L54_PLL_CNTL = 0x00f0, 962ffec4cb1Sshadow303 L54_M0 = BITS(7:0), 963ffec4cb1Sshadow303 L54_N0 = BITS(21:11), 964ffec4cb1Sshadow303 L54_MNFLIP_EN = BITS(22:22), 965ffec4cb1Sshadow303 L54_SLIP_EN = BITS(23:23), 966ffec4cb1Sshadow303 L54_P = BITS(27:24), 967ffec4cb1Sshadow303 L54_DTO_EN = BITS(28:28), 968ffec4cb1Sshadow303 L54_DTO_TYPE = BITS(29:29), 969ffec4cb1Sshadow303 L54_REF_CLK_SEL = BITS(30:30), 970ffec4cb1Sshadow303 971ffec4cb1Sshadow303 VIP_L54_PLL_FINE_CNTL = 0x00f4, 972ffec4cb1Sshadow303 L54_M1 = BITS(7:0), 973ffec4cb1Sshadow303 L54_N1 = BITS(21:11), 974ffec4cb1Sshadow303 L54_DIVIDER_SEL = BITS(22:22), 975ffec4cb1Sshadow303 L54_MNFLIP_REQ = BITS(23:23), 976ffec4cb1Sshadow303 L54_MNFLIP_DONE = BITS(24:24), 977ffec4cb1Sshadow303 L54_SLIP_REQ = BITS(25:25), 978ffec4cb1Sshadow303 L54_SLIP_DONE = BITS(26:26), 979ffec4cb1Sshadow303 L54_SLIP_COUNT = BITS(31:28), 980ffec4cb1Sshadow303 981ffec4cb1Sshadow303 VIP_L54_DTO_INCREMENTS = 0x00f8, 982ffec4cb1Sshadow303 L54_DTO_INC0 = BITS(15:0), 983ffec4cb1Sshadow303 L54_DTO_INC1 = BITS(31:16), 984ffec4cb1Sshadow303 985ffec4cb1Sshadow303 VIP_PLL_CNTL1 = 0x00fc, 986ffec4cb1Sshadow303 VINRST = BITS(1:1), // 0=active, 1=reset 987ffec4cb1Sshadow303 AUDRST = BITS(2:2), 988ffec4cb1Sshadow303 L54RST = BITS(3:3), 989ffec4cb1Sshadow303 VINSLEEPB = BITS(4:4), 990ffec4cb1Sshadow303 AUDSLEEPB = BITS(5:5), 991ffec4cb1Sshadow303 L54SLEEPB = BITS(6:6), 992ffec4cb1Sshadow303 VINPCP = BITS(10:8), 993ffec4cb1Sshadow303 VINPVG = BITS(12:11), 994ffec4cb1Sshadow303 VINPDC = BITS(15:13), 995ffec4cb1Sshadow303 AUDPCP = BITS(18:16), 996ffec4cb1Sshadow303 AUDPVG = BITS(20:19), 997ffec4cb1Sshadow303 L54PCP = BITS(26:24), 998ffec4cb1Sshadow303 L54PVG = BITS(28:27), 999ffec4cb1Sshadow303 L54PDC = BITS(31:29), 1000ffec4cb1Sshadow303 1001ffec4cb1Sshadow303 // Audio Interfaces 1002ffec4cb1Sshadow303 VIP_FIFOA_CONFIG = 0x0800, 1003ffec4cb1Sshadow303 ENT_FIFOA = BITS(8:0), 1004ffec4cb1Sshadow303 START_FIFOA = BITS(17:16), 1005ffec4cb1Sshadow303 START_FIFOA_ADDR_0 = 0 << 16, 1006ffec4cb1Sshadow303 START_FIFOA_ADDR_64 = 1 << 16, 1007ffec4cb1Sshadow303 START_FIFOA_ADDR_128 = 2 << 16, 1008ffec4cb1Sshadow303 START_FIFOA_ADDR_192 = 3 << 16, 1009ffec4cb1Sshadow303 END_FIFOA = BITS(19:18), 1010ffec4cb1Sshadow303 END_FIFOA_ADDR_63 = 0 << 18, 1011ffec4cb1Sshadow303 END_FIFOA_ADDR_127 = 1 << 18, 1012ffec4cb1Sshadow303 END_FIFOA_ADDR_191 = 2 << 18, 1013ffec4cb1Sshadow303 END_FIFOA_ADDR_255 = 3 << 18, 1014ffec4cb1Sshadow303 TEST_EN_FIFOA = BITS(20:20), 1015ffec4cb1Sshadow303 RST_FIFOA = BITS(21:21), 1016ffec4cb1Sshadow303 WT_FIFOA_FULL = BITS(22:22), 1017ffec4cb1Sshadow303 EMPTY_FIFOA = BITS(23:23), 1018ffec4cb1Sshadow303 1019ffec4cb1Sshadow303 VIP_FIFOB_CONFIG = 0x0804, 1020ffec4cb1Sshadow303 ENT_FIFOB = BITS(8:0), 1021ffec4cb1Sshadow303 START_FIFOB = BITS(17:16), 1022ffec4cb1Sshadow303 END_FIFOB = BITS(19:18), 1023ffec4cb1Sshadow303 TEST_EN_FIFOB = BITS(20:20), 1024ffec4cb1Sshadow303 RST_FIFOB = BITS(21:21), 1025ffec4cb1Sshadow303 WT_FIFOB_FULL = BITS(22:22), 1026ffec4cb1Sshadow303 EMPTY_FIFOB = BITS(23:23), 1027ffec4cb1Sshadow303 1028ffec4cb1Sshadow303 VIP_FIFOC_CONFIG = 0x0808, 1029ffec4cb1Sshadow303 ENT_FIFOC = BITS(8:0), 1030ffec4cb1Sshadow303 START_FIFOC = BITS(17:16), 1031ffec4cb1Sshadow303 END_FIFOC = BITS(19:18), 1032ffec4cb1Sshadow303 TEST_EN_FIFOC = BITS(20:20), 1033ffec4cb1Sshadow303 RST_FIFOC = BITS(21:21), 1034ffec4cb1Sshadow303 WT_FIFOC_FULL = BITS(22:22), 1035ffec4cb1Sshadow303 EMPTY_FIFOC = BITS(23:23), 1036ffec4cb1Sshadow303 1037ffec4cb1Sshadow303 VIP_SPDIF_PORT_CNTL = 0x080c, 1038ffec4cb1Sshadow303 SPDIF_PORT_EN = BITS(0:0), 1039ffec4cb1Sshadow303 AC3_BURST_TRIGGER = BITS(1:1), 1040ffec4cb1Sshadow303 AC3_BURST_ACTIVE = BITS(2:2), 1041ffec4cb1Sshadow303 AC3_STREAM_MODE = BITS(3:3), 1042ffec4cb1Sshadow303 SWAP_AC3_ORDER = BITS(4:4), 1043ffec4cb1Sshadow303 TX_ON_NOT_EMPTY = BITS(5:5), 1044ffec4cb1Sshadow303 SPDIF_UNDERFLOW_CLEAR = BITS(6:6), 1045ffec4cb1Sshadow303 SPDIF_UNDERFLOW = BITS(7:7), 1046ffec4cb1Sshadow303 SPDIF_UNDERFLOW_CNT = BITS(15:8), 1047ffec4cb1Sshadow303 SPDIF_OE = BITS(16:16), 1048ffec4cb1Sshadow303 SPDIF_DRV = BITS(19:19), 1049ffec4cb1Sshadow303 PREAMBLE_AND_IDLE_SW = BITS(24:24), 1050ffec4cb1Sshadow303 1051ffec4cb1Sshadow303 VIP_SPDIF_CHANNEL_STAT = 0x0810, 1052ffec4cb1Sshadow303 SPDIF_STATUS_BLOCK = BITS(0:0), 1053ffec4cb1Sshadow303 SPDIF_DATA_TYPE = BITS(1:1), 1054ffec4cb1Sshadow303 SPDIF_DIGITAL_COPY = BITS(2:2), 1055ffec4cb1Sshadow303 SPDIF_PREEMPHASIS = BITS(5:3), 1056ffec4cb1Sshadow303 SPDIF_MODE = BITS(7:6), 1057ffec4cb1Sshadow303 SPDIF_CATEGORY = BITS(15:8), 1058ffec4cb1Sshadow303 SPDIF_SRC_NUM = BITS(19:16), 1059ffec4cb1Sshadow303 SPDIF_NUM_CHANNELS = BITS(23:20), 1060ffec4cb1Sshadow303 SPDIF_SAMP_FREQ = BITS(27:24), 1061ffec4cb1Sshadow303 SPDIF_CLOCK_ACC = BITS(29:28), 1062ffec4cb1Sshadow303 1063ffec4cb1Sshadow303 VIP_SPDIF_AC3_PREAMBLE = 0x0814, 1064ffec4cb1Sshadow303 AC3_DATA_TYPE = BITS(4:0), 1065ffec4cb1Sshadow303 AC3_ERR_FLAG = BITS(7:7), 1066ffec4cb1Sshadow303 AC3_DATA_DEPEN = BITS(12:8), 1067ffec4cb1Sshadow303 AC3_STREAM_NUM = BITS(15:13), 1068ffec4cb1Sshadow303 AC3_LENGTH_CODE = BITS(31:16), 1069ffec4cb1Sshadow303 1070ffec4cb1Sshadow303 VIP_I2S_TRANSMIT_CNTL = 0x0818, 1071ffec4cb1Sshadow303 IISTX_PORT_EN = BITS(0:0), 1072ffec4cb1Sshadow303 IISTX_UNDERFLOW_CLEAR = BITS(6:6), 1073ffec4cb1Sshadow303 IISTX_UNDERFLOW = BITS(7:7), 1074ffec4cb1Sshadow303 IISTX_UNDERFLOW_FRAMES = BITS(15:8), 1075ffec4cb1Sshadow303 IIS_BITS_PER_CHAN = BITS(21:16), 1076ffec4cb1Sshadow303 IIS_SLAVE_EN = BITS(24:24), 1077ffec4cb1Sshadow303 IIS_LOOPBACK_EN = BITS(25:25), 1078ffec4cb1Sshadow303 ADO_OE = BITS(26:26), 1079ffec4cb1Sshadow303 ADIO_OE = BITS(29:29), 1080ffec4cb1Sshadow303 WS_OE = BITS(30:30), 1081ffec4cb1Sshadow303 BITCLK_OE = BITS(31:31), 1082ffec4cb1Sshadow303 1083ffec4cb1Sshadow303 VIP_I2S_RECEIVE_CNTL = 0x081c, 1084ffec4cb1Sshadow303 IISRX_PORT_EN = BITS(0:0), 1085ffec4cb1Sshadow303 LOOPBACK_NO_UNDERFLOW = BITS(5:5), 1086ffec4cb1Sshadow303 IISRX_OVERFLOW_CLEAR = BITS(6:6), 1087ffec4cb1Sshadow303 IISRX_OVERFLOW = BITS(7:7), 1088ffec4cb1Sshadow303 IISRX_OVERFLOW_FRAMES = BITS(15:8), 1089ffec4cb1Sshadow303 1090ffec4cb1Sshadow303 VIP_SPDIF_TX_CNT_REG = 0x0820, 1091ffec4cb1Sshadow303 SPDIF_TX_CNT = BITS(23:0), 1092ffec4cb1Sshadow303 SPDIF_TX_CNT_CLR = BITS(24:24), 1093ffec4cb1Sshadow303 1094ffec4cb1Sshadow303 VIP_IIS_TX_CNT_REG = 0x0824, 1095ffec4cb1Sshadow303 IIS_TX_CNT = BITS(23:0), 1096ffec4cb1Sshadow303 IIS_TX_CNT_CLR = BITS(24:24), 1097ffec4cb1Sshadow303 1098ffec4cb1Sshadow303 // Miscellaneous Registers 1099ffec4cb1Sshadow303 VIP_HW_DEBUG = 0x0010, 1100ffec4cb1Sshadow303 HW_DEBUG_TBD = BITS(15:0), 1101ffec4cb1Sshadow303 1102ffec4cb1Sshadow303 VIP_SW_SCRATCH = 0x0014, 1103ffec4cb1Sshadow303 SW_SCRATCH_TBD = BITS(15:0), 1104ffec4cb1Sshadow303 1105ffec4cb1Sshadow303 VIP_I2C_CNTL_0 = 0x0020, 1106ffec4cb1Sshadow303 I2C_DONE = BITS(0:0), 1107ffec4cb1Sshadow303 I2C_NACK = BITS(1:1), 1108ffec4cb1Sshadow303 I2C_HALT = BITS(2:2), 1109ffec4cb1Sshadow303 I2C_SOFT_RST = BITS(5:5), 1110ffec4cb1Sshadow303 SDA_DRIVE_EN = BITS(6:6), 1111ffec4cb1Sshadow303 I2C_DRIVE_SEL = BITS(7:7), 1112ffec4cb1Sshadow303 I2C_START = BITS(8:8), 1113ffec4cb1Sshadow303 I2C_STOP = BITS(9:9), 1114ffec4cb1Sshadow303 I2C_RECEIVE = BITS(10:10), 1115ffec4cb1Sshadow303 I2C_ABORT = BITS(11:11), 1116ffec4cb1Sshadow303 I2C_GO = BITS(12:12), 1117ffec4cb1Sshadow303 I2C_PRESCALE = BITS(31:16), 1118ffec4cb1Sshadow303 1119ffec4cb1Sshadow303 VIP_I2C_CNTL_1 = 0x0024, 1120ffec4cb1Sshadow303 I2C_DATA_COUNT = BITS(3:0), 1121ffec4cb1Sshadow303 I2C_ADDR_COUNT = BITS(10:8), 1122ffec4cb1Sshadow303 SCL_DRIVE_EN = BITS(16:16), 1123ffec4cb1Sshadow303 I2C_SEL = BITS(17:17), 1124ffec4cb1Sshadow303 I2C_TIME_LIMIT = BITS(31:24), 1125ffec4cb1Sshadow303 1126ffec4cb1Sshadow303 VIP_I2C_DATA = 0x0028, 1127ffec4cb1Sshadow303 I2C_DATA = BITS(7:0), 1128ffec4cb1Sshadow303 1129ffec4cb1Sshadow303 VIP_INT_CNTL = 0x002c, 1130ffec4cb1Sshadow303 I2C_INT_EN = BITS(0:0), 1131ffec4cb1Sshadow303 SPDIF_UF_INT_EN = BITS(1:1), 1132ffec4cb1Sshadow303 IISTX_UF_INT_EN = BITS(2:2), 1133ffec4cb1Sshadow303 IISTX_OF_INT_EN = BITS(3:3), 1134ffec4cb1Sshadow303 VIN_VSYNC_INT_EN = BITS(4:4), 1135ffec4cb1Sshadow303 VIN_VACTIVE_END_INT_EN = BITS(5:5), 1136ffec4cb1Sshadow303 VSYNC_DIFF_OVER_LIMIT_INT_EN= BITS(6:6), 1137ffec4cb1Sshadow303 I2C_INT_AK = BITS(16:16), 1138ffec4cb1Sshadow303 I2C_INT = BITS(16:16), 1139ffec4cb1Sshadow303 SPDIF_UF_INT_AK = BITS(17:17), 1140ffec4cb1Sshadow303 SPDIF_UF_INT = BITS(17:17), 1141ffec4cb1Sshadow303 IISTX_UF_INT_AK = BITS(18:18), 1142ffec4cb1Sshadow303 IISTX_UF_INT = BITS(18:18), 1143ffec4cb1Sshadow303 IISRX_OF_INT_AK = BITS(19:19), 1144ffec4cb1Sshadow303 IISRX_OF_INT = BITS(19:19), 1145ffec4cb1Sshadow303 VIN_VSYNC_INT_AK = BITS(20:20), 1146ffec4cb1Sshadow303 VIN_VSYNC_INT = BITS(20:20), 1147ffec4cb1Sshadow303 VIN_VACTIVE_END_INT_AK = BITS(21:21), 1148ffec4cb1Sshadow303 VIN_VACTIVE_END_INT = BITS(21:21), 1149ffec4cb1Sshadow303 VSYNC_DIFF_OVER_LIMIT_INT_AK= BITS(22:22), 1150ffec4cb1Sshadow303 VSYNC_DIFF_OVER_LIMIT_INT = BITS(22:22), 1151ffec4cb1Sshadow303 1152ffec4cb1Sshadow303 VIP_GPIO_INOUT = 0x0030, 1153ffec4cb1Sshadow303 CLKOUT0_GPIO0_OUT = BITS(0:0), 1154ffec4cb1Sshadow303 CLKOUT0_GPIO1_OUT = BITS(1:1), 1155ffec4cb1Sshadow303 CLKOUT0_GPIO2_OUT = BITS(2:2), 1156ffec4cb1Sshadow303 GPIO_6TO3_OUT = BITS(6:3), 1157ffec4cb1Sshadow303 SPDIF_GPIO_OUT = BITS(7:7), 1158ffec4cb1Sshadow303 ADO_GPIO_OUT = BITS(8:8), 1159ffec4cb1Sshadow303 ADIO_GPIO_OUT = BITS(9:9), 1160ffec4cb1Sshadow303 WS_GPIO_OUT = BITS(10:10), 1161ffec4cb1Sshadow303 BITCLK_GPIO_OUT = BITS(11:11), 1162ffec4cb1Sshadow303 HAD_GPIO_OUT = BITS(13:12), 1163ffec4cb1Sshadow303 CLKOUT0_GPIO0_IN = BITS(16:16), 1164ffec4cb1Sshadow303 CLKOUT0_GPIO1_IN = BITS(17:17), 1165ffec4cb1Sshadow303 CLKOUT0_GPIO2_IN = BITS(18:18), 1166ffec4cb1Sshadow303 GPIO_6TO3_IN = BITS(22:19), 1167ffec4cb1Sshadow303 SPDIF_GPIO_IN = BITS(23:23), 1168ffec4cb1Sshadow303 ADO_GPIO_IN = BITS(24:24), 1169ffec4cb1Sshadow303 ADIO_GPIO_IN = BITS(25:25), 1170ffec4cb1Sshadow303 WS_GPIO_IN = BITS(26:26), 1171ffec4cb1Sshadow303 BITCLK_GPIO_IN = BITS(27:27), 1172ffec4cb1Sshadow303 HAD_GPIO_IN = BITS(29:28), 1173ffec4cb1Sshadow303 1174ffec4cb1Sshadow303 VIP_GPIO_CNTL = 0x0034, 1175ffec4cb1Sshadow303 CLKOUT0_GPIO0_OE = BITS(0:0), 1176ffec4cb1Sshadow303 CLKOUT1_GPIO1_OE = BITS(1:1), 1177ffec4cb1Sshadow303 CLKOUT2_GPIO2_OE = BITS(2:2), 1178ffec4cb1Sshadow303 GPIO_6TO3_OE = BITS(6:3), 1179ffec4cb1Sshadow303 SPDIF_GPIO_OE = BITS(7:7), 1180ffec4cb1Sshadow303 ADO_GPIO_OE = BITS(8:8), 1181ffec4cb1Sshadow303 ADIO_GPIO_OE = BITS(9:9), 1182ffec4cb1Sshadow303 WS_GPIO_OE = BITS(10:10), 1183ffec4cb1Sshadow303 BITCLK_GPIO_OE = BITS(11:11), 1184ffec4cb1Sshadow303 HAD_GPIO_OE = BITS(13:12), 1185ffec4cb1Sshadow303 GPIO_6TO1_STRAPS = BITS(22:17), 1186ffec4cb1Sshadow303 1187ffec4cb1Sshadow303 VIP_RIPINTF_PORT_CNTL = 0x003c, 1188ffec4cb1Sshadow303 MPP_DATA_DRV = BITS(2:2), 1189ffec4cb1Sshadow303 HAD_DRV = BITS(3:3), 1190ffec4cb1Sshadow303 HCTL_DRV = BITS(4:4), 1191ffec4cb1Sshadow303 SRDY_IRQb_DRV = BITS(5:5), 1192ffec4cb1Sshadow303 SUB_SYS_ID_EN = BITS(16:16), 1193ffec4cb1Sshadow303 1194ffec4cb1Sshadow303 VIP_DECODER_DEBUG_CNTL = 0x05d4, 1195ffec4cb1Sshadow303 CHIP_DEBUG_SEL = BITS(7:0), 1196ffec4cb1Sshadow303 CHIP_DEBUG_EN = BITS(8:8), 1197ffec4cb1Sshadow303 DECODER_DEBUG_SEL = BITS(15:12), 1198ffec4cb1Sshadow303 1199ffec4cb1Sshadow303 VIP_SINGLE_STEP_DATA = 0x05d8, 1200ffec4cb1Sshadow303 SS_C = BITS(7:0), 1201ffec4cb1Sshadow303 SS_Y = BITS(15:8), 1202ffec4cb1Sshadow303 1203ffec4cb1Sshadow303 VIP_I2C_CNTL = 0x0054, 1204ffec4cb1Sshadow303 I2C_CLK_OE = BITS(0:0), 1205ffec4cb1Sshadow303 I2C_CLK_OUT = BITS(1:1), 1206ffec4cb1Sshadow303 I2C_CLK_IN = BITS(2:2), 1207ffec4cb1Sshadow303 I2C_DAT_OE = BITS(4:4), 1208ffec4cb1Sshadow303 I2C_DAT_OUT = BITS(5:5), 1209ffec4cb1Sshadow303 I2C_DAT_IN = BITS(6:6), 1210ffec4cb1Sshadow303 I2C_CLK_PUB = BITS(8:8), 1211ffec4cb1Sshadow303 I2C_CLK_PD = BITS(9:9), 1212ffec4cb1Sshadow303 I2C_CLK_DRV = BITS(10:10), 1213ffec4cb1Sshadow303 I2C_DAT_PUB = BITS(12:12), 1214ffec4cb1Sshadow303 I2C_DAT_PD = BITS(13:13), 1215ffec4cb1Sshadow303 I2C_DAT_DRV = BITS(14:14), 1216ffec4cb1Sshadow303 I2C_CLK_MX = BITS(19:16), 1217ffec4cb1Sshadow303 I2C_DAT_MX = BITS(23:20), 1218ffec4cb1Sshadow303 DELAY_TEST_MODE = BITS(25:24), 1219ffec4cb1Sshadow303 1220ffec4cb1Sshadow303 // Undocumented Registers 1221ffec4cb1Sshadow303 VIP_TV_PLL_FINE_CNTL = 0x00b8, 1222ffec4cb1Sshadow303 VIP_CRT_PLL_FINE_CNTL = 0x00bc, 1223ffec4cb1Sshadow303 VIP_MV_MODE_CNTL = 0x0208, 1224ffec4cb1Sshadow303 VIP_MV_STRIPE_CNTL = 0x020c, 1225ffec4cb1Sshadow303 VIP_MV_LEVEL_CNTL1 = 0x0210, 1226ffec4cb1Sshadow303 VIP_MV_LEVEL_CNTL2 = 0x0214, 1227ffec4cb1Sshadow303 VIP_MV_STATUS = 0x0330, 1228ffec4cb1Sshadow303 VIP_TV_DTO_INCREMENTS = 0x0390, 1229ffec4cb1Sshadow303 VIP_CRT_DTO_INCREMENTS = 0x0394, 1230ffec4cb1Sshadow303 VIP_VSYNC_DIFF_CNTL = 0x03a0, 1231ffec4cb1Sshadow303 VIP_VSYNC_DIFF_LIMITS = 0x03a4, 1232*863634b8SAxel Dörfler VIP_VSYNC_DIFF_RD_DATA = 0x03a8, 1233*863634b8SAxel Dörfler 1234*863634b8SAxel Dörfler DSP_OK = 0x21, 1235*863634b8SAxel Dörfler DSP_INVALID_PARAMETER = 0x22, 1236*863634b8SAxel Dörfler DSP_MISSING_PARAMETER = 0x23, 1237*863634b8SAxel Dörfler DSP_UNKNOWN_COMMAND = 0x24, 1238*863634b8SAxel Dörfler DSP_UNSUCCESS = 0x25, 1239*863634b8SAxel Dörfler DSP_BUSY = 0x26, 1240*863634b8SAxel Dörfler DSP_RESET_REQUIRED = 0x27, 1241*863634b8SAxel Dörfler DSP_UNKNOWN_RESULT = 0x28, 1242*863634b8SAxel Dörfler DSP_CRC_ERROR = 0x29, 1243*863634b8SAxel Dörfler DSP_AUDIO_GAIN_ADJ_FAIL = 0x2a, 1244*863634b8SAxel Dörfler DSP_AUDIO_GAIN_CHK_ERROR = 0x2b, 1245*863634b8SAxel Dörfler DSP_WARNING = 0x2c, 1246*863634b8SAxel Dörfler DSP_POWERDOWN_MODE = 0x2d, 1247*863634b8SAxel Dörfler 1248*863634b8SAxel Dörfler RT200_NTSC_M = 0x01, 1249*863634b8SAxel Dörfler RT200_NTSC_433 = 0x03, 1250*863634b8SAxel Dörfler RT200_NTSC_J = 0x04, 1251*863634b8SAxel Dörfler RT200_PAL_B = 0x05, 1252*863634b8SAxel Dörfler RT200_PAL_D = 0x06, 1253*863634b8SAxel Dörfler RT200_PAL_G = 0x07, 1254*863634b8SAxel Dörfler RT200_PAL_H = 0x08, 1255*863634b8SAxel Dörfler RT200_PAL_I = 0x09, 1256*863634b8SAxel Dörfler RT200_PAL_N = 0x0a, 1257*863634b8SAxel Dörfler RT200_PAL_Ncomb = 0x0b, 1258*863634b8SAxel Dörfler RT200_PAL_M = 0x0c, 1259*863634b8SAxel Dörfler RT200_PAL_60 = 0x0d, 1260*863634b8SAxel Dörfler RT200_SECAM = 0x0e, 1261*863634b8SAxel Dörfler RT200_SECAM_B = 0x0f, 1262*863634b8SAxel Dörfler RT200_SECAM_D = 0x10, 1263*863634b8SAxel Dörfler RT200_SECAM_G = 0x11, 1264*863634b8SAxel Dörfler RT200_SECAM_H = 0x12, 1265*863634b8SAxel Dörfler RT200_SECAM_K = 0x13, 1266*863634b8SAxel Dörfler RT200_SECAM_K1 = 0x14, 1267*863634b8SAxel Dörfler RT200_SECAM_L = 0x15, 1268*863634b8SAxel Dörfler RT200_SECAM_L1 = 0x16, 1269*863634b8SAxel Dörfler RT200_480i = 0x17, 1270*863634b8SAxel Dörfler RT200_480p = 0x18, 1271*863634b8SAxel Dörfler RT200_576i = 0x19, 1272*863634b8SAxel Dörfler RT200_720p = 0x1a, 1273*863634b8SAxel Dörfler RT200_1080i = 0x1b 1274*863634b8SAxel Dörfler 1275*863634b8SAxel Dörfler }; 1276*863634b8SAxel Dörfler 1277*863634b8SAxel Dörfler 1278*863634b8SAxel Dörfler /* RT200 stuff there's no way I'm converting these to enums...*/ 1279*863634b8SAxel Dörfler /* RT200 */ 1280*863634b8SAxel Dörfler #define VIP_INT_CNTL__FB_INT0 0x02000000 1281*863634b8SAxel Dörfler #define VIP_INT_CNTL__FB_INT0_CLR 0x02000000 1282*863634b8SAxel Dörfler #define VIP_GPIO_INOUT 0x0030 1283*863634b8SAxel Dörfler #define VIP_GPIO_CNTL 0x0034 1284*863634b8SAxel Dörfler #define VIP_CLKOUT_GPIO_CNTL 0x0038 1285*863634b8SAxel Dörfler #define VIP_RIPINTF_PORT_CNTL 0x003c 1286*863634b8SAxel Dörfler 1287*863634b8SAxel Dörfler /* RT200 */ 1288*863634b8SAxel Dörfler #define VIP_GPIO_INOUT 0x0030 1289*863634b8SAxel Dörfler #define VIP_GPIO_CNTL 0x0034 1290*863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL 0x003c 1291*863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__HAD_HCTL_SDA_SN 0x00000008 1292*863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__HAD_HCTL_SDA_SP 0x00000080 1293*863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__HAD_HCTL_SDA_SR 0x00000100 1294*863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__SUB_SYS_ID_EN 0x00010000 1295*863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__FIFO_RW_MODE 0x00300000 1296*863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__FIFOA_ENDIAN_SWAP 0x00c00000 1297*863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__FIFOB_ENDIAN_SWAP 0x03000000 1298*863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__FIFOC_ENDIAN_SWAP 0x0c000000 1299*863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__FIFOD_ENDIAN_SWAP 0x30000000 1300*863634b8SAxel Dörfler #define VIP_HOSTINTF_PORT_CNTL__FIFOE_ENDIAN_SWAP 0xc0000000 1301*863634b8SAxel Dörfler 1302*863634b8SAxel Dörfler /* RT200 */ 1303*863634b8SAxel Dörfler #define VIP_DSP_PLL_CNTL 0x0bc 1304*863634b8SAxel Dörfler 1305*863634b8SAxel Dörfler /* RT200 */ 1306*863634b8SAxel Dörfler #define VIP_TC_SOURCE 0x300 1307*863634b8SAxel Dörfler #define VIP_TC_DESTINATION 0x304 1308*863634b8SAxel Dörfler #define VIP_TC_COMMAND 0x308 1309*863634b8SAxel Dörfler 1310*863634b8SAxel Dörfler /* RT200 */ 1311*863634b8SAxel Dörfler #define VIP_TC_STATUS 0x030c 1312*863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_CHAN_BUSY 0x00007fff 1313*863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_WRITE_PENDING 0x00008000 1314*863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_4_EMPTY 0x00040000 1315*863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_6_EMPTY 0x00080000 1316*863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_8_EMPTY 0x00100000 1317*863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_10_EMPTY 0x00200000 1318*863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_4_FULL 0x04000000 1319*863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_6_FULL 0x08080000 1320*863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_8_FULL 0x10080000 1321*863634b8SAxel Dörfler #define VIP_TC_STATUS__TC_FIFO_10_FULL 0x20080000 1322*863634b8SAxel Dörfler #define VIP_TC_STATUS__DSP_ILLEGAL_OP 0x80080000 1323*863634b8SAxel Dörfler 1324*863634b8SAxel Dörfler /* RT200 */ 1325*863634b8SAxel Dörfler #define VIP_TC_DOWNLOAD 0x0310 1326*863634b8SAxel Dörfler #define VIP_TC_DOWNLOAD__TC_DONE_MASK 0x00003fff 1327*863634b8SAxel Dörfler #define VIP_TC_DOWNLOAD__TC_RESET_MODE 0x00060000 1328*863634b8SAxel Dörfler 1329*863634b8SAxel Dörfler /* RT200 */ 1330*863634b8SAxel Dörfler #define VIP_FB_INT 0x0314 1331*863634b8SAxel Dörfler #define VIP_FB_INT__INT_7 0x00000080 1332*863634b8SAxel Dörfler #define VIP_FB_SCRATCH0 0x0318 1333*863634b8SAxel Dörfler #define VIP_FB_SCRATCH1 0x031c 1334*863634b8SAxel Dörfler 1335*863634b8SAxel Dörfler struct rt200_microc_head 1336*863634b8SAxel Dörfler { 1337*863634b8SAxel Dörfler unsigned int device_id; 1338*863634b8SAxel Dörfler unsigned int vendor_id; 1339*863634b8SAxel Dörfler unsigned int revision_id; 1340*863634b8SAxel Dörfler unsigned int num_seg; 1341*863634b8SAxel Dörfler }; 1342*863634b8SAxel Dörfler 1343*863634b8SAxel Dörfler struct rt200_microc_seg 1344*863634b8SAxel Dörfler { 1345*863634b8SAxel Dörfler unsigned int num_bytes; 1346*863634b8SAxel Dörfler unsigned int download_dst; 1347*863634b8SAxel Dörfler unsigned int crc_val; 1348*863634b8SAxel Dörfler 1349*863634b8SAxel Dörfler unsigned char* data; 1350*863634b8SAxel Dörfler struct rt200_microc_seg* next; 1351*863634b8SAxel Dörfler }; 1352*863634b8SAxel Dörfler 1353*863634b8SAxel Dörfler 1354*863634b8SAxel Dörfler struct rt200_microc_data 1355*863634b8SAxel Dörfler { 1356*863634b8SAxel Dörfler struct rt200_microc_head microc_head; 1357*863634b8SAxel Dörfler struct rt200_microc_seg* microc_seg_list; 1358ffec4cb1Sshadow303 }; 1359ffec4cb1Sshadow303 1360ffec4cb1Sshadow303 #endif 1361