Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003     Auvitek AU8522 QAM/8VSB demodulator driver
0004 
0005     Copyright (C) 2008 Steven Toth <stoth@linuxtv.org>
0006     Copyright (C) 2008 Devin Heitmueller <dheitmueller@linuxtv.org>
0007     Copyright (C) 2005-2008 Auvitek International, Ltd.
0008 
0009 
0010 */
0011 
0012 #include <linux/kernel.h>
0013 #include <linux/init.h>
0014 #include <linux/module.h>
0015 #include <linux/string.h>
0016 #include <linux/slab.h>
0017 #include <linux/delay.h>
0018 #include <linux/videodev2.h>
0019 #include <media/v4l2-device.h>
0020 #include <media/v4l2-ctrls.h>
0021 #include <media/v4l2-mc.h>
0022 #include <linux/i2c.h>
0023 #include <media/dvb_frontend.h>
0024 #include "au8522.h"
0025 #include "tuner-i2c.h"
0026 
0027 #define AU8522_ANALOG_MODE 0
0028 #define AU8522_DIGITAL_MODE 1
0029 #define AU8522_SUSPEND_MODE 2
0030 
0031 enum au8522_pads {
0032     AU8522_PAD_IF_INPUT,
0033     AU8522_PAD_VID_OUT,
0034     AU8522_PAD_AUDIO_OUT,
0035     AU8522_NUM_PADS
0036 };
0037 
0038 struct au8522_state {
0039     struct i2c_client *c;
0040     struct i2c_adapter *i2c;
0041 
0042     u8 operational_mode;
0043 
0044     /* Used for sharing of the state between analog and digital mode */
0045     struct tuner_i2c_props i2c_props;
0046     struct list_head hybrid_tuner_instance_list;
0047 
0048     /* configuration settings */
0049     struct au8522_config config;
0050 
0051     struct dvb_frontend frontend;
0052 
0053     u32 current_frequency;
0054     enum fe_modulation current_modulation;
0055 
0056     u32 fe_status;
0057     unsigned int led_state;
0058 
0059     /* Analog settings */
0060     struct v4l2_subdev sd;
0061     v4l2_std_id std;
0062     int vid_input;
0063     int aud_input;
0064     u32 id;
0065     u32 rev;
0066     struct v4l2_ctrl_handler hdl;
0067 
0068 #ifdef CONFIG_MEDIA_CONTROLLER
0069     struct media_pad pads[AU8522_NUM_PADS];
0070 #endif
0071 };
0072 
0073 /* These are routines shared by both the VSB/QAM demodulator and the analog
0074    decoder */
0075 int au8522_writereg(struct au8522_state *state, u16 reg, u8 data);
0076 u8 au8522_readreg(struct au8522_state *state, u16 reg);
0077 int au8522_init(struct dvb_frontend *fe);
0078 int au8522_sleep(struct dvb_frontend *fe);
0079 
0080 int au8522_get_state(struct au8522_state **state, struct i2c_adapter *i2c,
0081              u8 client_address);
0082 void au8522_release_state(struct au8522_state *state);
0083 int au8522_i2c_gate_ctrl(struct dvb_frontend *fe, int enable);
0084 int au8522_analog_i2c_gate_ctrl(struct dvb_frontend *fe, int enable);
0085 int au8522_led_ctrl(struct au8522_state *state, int led);
0086 
0087 /* REGISTERS */
0088 #define AU8522_INPUT_CONTROL_REG081H            0x081
0089 #define AU8522_PGA_CONTROL_REG082H          0x082
0090 #define AU8522_CLAMPING_CONTROL_REG083H         0x083
0091 
0092 #define AU8522_MODULE_CLOCK_CONTROL_REG0A3H     0x0A3
0093 #define AU8522_SYSTEM_MODULE_CONTROL_0_REG0A4H      0x0A4
0094 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H      0x0A5
0095 #define AU8522_AGC_CONTROL_RANGE_REG0A6H        0x0A6
0096 #define AU8522_SYSTEM_GAIN_CONTROL_REG0A7H      0x0A7
0097 #define AU8522_TUNER_AGC_RF_STOP_REG0A8H        0x0A8
0098 #define AU8522_TUNER_AGC_RF_START_REG0A9H       0x0A9
0099 #define AU8522_TUNER_RF_AGC_DEFAULT_REG0AAH     0x0AA
0100 #define AU8522_TUNER_AGC_IF_STOP_REG0ABH        0x0AB
0101 #define AU8522_TUNER_AGC_IF_START_REG0ACH       0x0AC
0102 #define AU8522_TUNER_AGC_IF_DEFAULT_REG0ADH     0x0AD
0103 #define AU8522_TUNER_AGC_STEP_REG0AEH           0x0AE
0104 #define AU8522_TUNER_GAIN_STEP_REG0AFH          0x0AF
0105 
0106 /* Receiver registers */
0107 #define AU8522_FRMREGTHRD1_REG0B0H          0x0B0
0108 #define AU8522_FRMREGAGC1H_REG0B1H          0x0B1
0109 #define AU8522_FRMREGSHIFT1_REG0B2H         0x0B2
0110 #define AU8522_TOREGAGC1_REG0B3H            0x0B3
0111 #define AU8522_TOREGASHIFT1_REG0B4H         0x0B4
0112 #define AU8522_FRMREGBBH_REG0B5H            0x0B5
0113 #define AU8522_FRMREGBBM_REG0B6H            0x0B6
0114 #define AU8522_FRMREGBBL_REG0B7H            0x0B7
0115 /* 0xB8 TO 0xD7 are the filter coefficients */
0116 #define AU8522_FRMREGTHRD2_REG0D8H          0x0D8
0117 #define AU8522_FRMREGAGC2H_REG0D9H          0x0D9
0118 #define AU8522_TOREGAGC2_REG0DAH            0x0DA
0119 #define AU8522_TOREGSHIFT2_REG0DBH          0x0DB
0120 #define AU8522_FRMREGPILOTH_REG0DCH         0x0DC
0121 #define AU8522_FRMREGPILOTM_REG0DDH         0x0DD
0122 #define AU8522_FRMREGPILOTL_REG0DEH         0x0DE
0123 #define AU8522_TOREGFREQ_REG0DFH            0x0DF
0124 
0125 #define AU8522_RX_PGA_RFOUT_REG0EBH         0x0EB
0126 #define AU8522_RX_PGA_IFOUT_REG0ECH         0x0EC
0127 #define AU8522_RX_PGA_PGAOUT_REG0EDH            0x0ED
0128 
0129 #define AU8522_CHIP_MODE_REG0FEH            0x0FE
0130 
0131 /* I2C bus control registers */
0132 #define AU8522_I2C_CONTROL_REG0_REG090H         0x090
0133 #define AU8522_I2C_CONTROL_REG1_REG091H         0x091
0134 #define AU8522_I2C_STATUS_REG092H           0x092
0135 #define AU8522_I2C_WR_DATA0_REG093H         0x093
0136 #define AU8522_I2C_WR_DATA1_REG094H         0x094
0137 #define AU8522_I2C_WR_DATA2_REG095H         0x095
0138 #define AU8522_I2C_WR_DATA3_REG096H         0x096
0139 #define AU8522_I2C_WR_DATA4_REG097H         0x097
0140 #define AU8522_I2C_WR_DATA5_REG098H         0x098
0141 #define AU8522_I2C_WR_DATA6_REG099H         0x099
0142 #define AU8522_I2C_WR_DATA7_REG09AH         0x09A
0143 #define AU8522_I2C_RD_DATA0_REG09BH         0x09B
0144 #define AU8522_I2C_RD_DATA1_REG09CH         0x09C
0145 #define AU8522_I2C_RD_DATA2_REG09DH         0x09D
0146 #define AU8522_I2C_RD_DATA3_REG09EH         0x09E
0147 #define AU8522_I2C_RD_DATA4_REG09FH         0x09F
0148 #define AU8522_I2C_RD_DATA5_REG0A0H         0x0A0
0149 #define AU8522_I2C_RD_DATA6_REG0A1H         0x0A1
0150 #define AU8522_I2C_RD_DATA7_REG0A2H         0x0A2
0151 
0152 #define AU8522_ENA_USB_REG101H              0x101
0153 
0154 #define AU8522_I2S_CTRL_0_REG110H           0x110
0155 #define AU8522_I2S_CTRL_1_REG111H           0x111
0156 #define AU8522_I2S_CTRL_2_REG112H           0x112
0157 
0158 #define AU8522_FRMREGFFECONTROL_REG121H         0x121
0159 #define AU8522_FRMREGDFECONTROL_REG122H         0x122
0160 
0161 #define AU8522_CARRFREQOFFSET0_REG201H          0x201
0162 #define AU8522_CARRFREQOFFSET1_REG202H          0x202
0163 
0164 #define AU8522_DECIMATION_GAIN_REG21AH          0x21A
0165 #define AU8522_FRMREGIFSLP_REG21BH          0x21B
0166 #define AU8522_FRMREGTHRDL2_REG21CH         0x21C
0167 #define AU8522_FRMREGSTEP3DB_REG21DH            0x21D
0168 #define AU8522_DAGC_GAIN_ADJUSTMENT_REG21EH     0x21E
0169 #define AU8522_FRMREGPLLMODE_REG21FH            0x21F
0170 #define AU8522_FRMREGCSTHRD_REG220H         0x220
0171 #define AU8522_FRMREGCRLOCKDMAX_REG221H         0x221
0172 #define AU8522_FRMREGCRPERIODMASK_REG222H       0x222
0173 #define AU8522_FRMREGCRLOCK0THH_REG223H         0x223
0174 #define AU8522_FRMREGCRLOCK1THH_REG224H         0x224
0175 #define AU8522_FRMREGCRLOCK0THL_REG225H         0x225
0176 #define AU8522_FRMREGCRLOCK1THL_REG226H         0x226
0177 #define AU_FRMREGPLLACQPHASESCL_REG227H         0x227
0178 #define AU8522_FRMREGFREQFBCTRL_REG228H         0x228
0179 
0180 /* Analog TV Decoder */
0181 #define AU8522_TVDEC_STATUS_REG000H         0x000
0182 #define AU8522_TVDEC_INT_STATUS_REG001H         0x001
0183 #define AU8522_TVDEC_MACROVISION_STATUS_REG002H     0x002
0184 #define AU8522_TVDEC_SHARPNESSREG009H           0x009
0185 #define AU8522_TVDEC_BRIGHTNESS_REG00AH         0x00A
0186 #define AU8522_TVDEC_CONTRAST_REG00BH           0x00B
0187 #define AU8522_TVDEC_SATURATION_CB_REG00CH      0x00C
0188 #define AU8522_TVDEC_SATURATION_CR_REG00DH      0x00D
0189 #define AU8522_TVDEC_HUE_H_REG00EH          0x00E
0190 #define AU8522_TVDEC_HUE_L_REG00FH          0x00F
0191 #define AU8522_TVDEC_INT_MASK_REG010H           0x010
0192 #define AU8522_VIDEO_MODE_REG011H           0x011
0193 #define AU8522_TVDEC_PGA_REG012H            0x012
0194 #define AU8522_TVDEC_COMB_MODE_REG015H          0x015
0195 #define AU8522_REG016H                  0x016
0196 #define AU8522_TVDED_DBG_MODE_REG060H           0x060
0197 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H       0x061
0198 #define AU8522_TVDEC_FORMAT_CTRL2_REG062H       0x062
0199 #define AU8522_TVDEC_VCR_DET_LLIM_REG063H       0x063
0200 #define AU8522_TVDEC_VCR_DET_HLIM_REG064H       0x064
0201 #define AU8522_TVDEC_COMB_VDIF_THR1_REG065H     0x065
0202 #define AU8522_TVDEC_COMB_VDIF_THR2_REG066H     0x066
0203 #define AU8522_TVDEC_COMB_VDIF_THR3_REG067H     0x067
0204 #define AU8522_TVDEC_COMB_NOTCH_THR_REG068H     0x068
0205 #define AU8522_TVDEC_COMB_HDIF_THR1_REG069H     0x069
0206 #define AU8522_TVDEC_COMB_HDIF_THR2_REG06AH     0x06A
0207 #define AU8522_TVDEC_COMB_HDIF_THR3_REG06BH     0x06B
0208 #define AU8522_TVDEC_COMB_DCDIF_THR1_REG06CH        0x06C
0209 #define AU8522_TVDEC_COMB_DCDIF_THR2_REG06DH        0x06D
0210 #define AU8522_TVDEC_COMB_DCDIF_THR3_REG06EH        0x06E
0211 #define AU8522_TVDEC_UV_SEP_THR_REG06FH         0x06F
0212 #define AU8522_TVDEC_COMB_DC_THR1_NTSC_REG070H      0x070
0213 #define AU8522_TVDEC_COMB_DC_THR2_NTSC_REG073H      0x073
0214 #define AU8522_TVDEC_DCAGC_CTRL_REG077H         0x077
0215 #define AU8522_TVDEC_PIC_START_ADJ_REG078H      0x078
0216 #define AU8522_TVDEC_AGC_HIGH_LIMIT_REG079H     0x079
0217 #define AU8522_TVDEC_MACROVISION_SYNC_THR_REG07AH   0x07A
0218 #define AU8522_TVDEC_INTRP_CTRL_REG07BH         0x07B
0219 #define AU8522_TVDEC_PLL_STATUS_REG07EH         0x07E
0220 #define AU8522_TVDEC_FSC_FREQ_REG07FH           0x07F
0221 
0222 #define AU8522_TVDEC_AGC_LOW_LIMIT_REG0E4H      0x0E4
0223 #define AU8522_TOREGAAGC_REG0E5H            0x0E5
0224 
0225 #define AU8522_TVDEC_CHROMA_AGC_REG401H     0x401
0226 #define AU8522_TVDEC_CHROMA_SFT_REG402H     0x402
0227 #define AU8522_FILTER_COEF_R410         0x410
0228 #define AU8522_FILTER_COEF_R411         0x411
0229 #define AU8522_FILTER_COEF_R412         0x412
0230 #define AU8522_FILTER_COEF_R413         0x413
0231 #define AU8522_FILTER_COEF_R414         0x414
0232 #define AU8522_FILTER_COEF_R415         0x415
0233 #define AU8522_FILTER_COEF_R416         0x416
0234 #define AU8522_FILTER_COEF_R417         0x417
0235 #define AU8522_FILTER_COEF_R418         0x418
0236 #define AU8522_FILTER_COEF_R419         0x419
0237 #define AU8522_FILTER_COEF_R41A         0x41A
0238 #define AU8522_FILTER_COEF_R41B         0x41B
0239 #define AU8522_FILTER_COEF_R41C         0x41C
0240 #define AU8522_FILTER_COEF_R41D         0x41D
0241 #define AU8522_FILTER_COEF_R41E         0x41E
0242 #define AU8522_FILTER_COEF_R41F         0x41F
0243 #define AU8522_FILTER_COEF_R420         0x420
0244 #define AU8522_FILTER_COEF_R421         0x421
0245 #define AU8522_FILTER_COEF_R422         0x422
0246 #define AU8522_FILTER_COEF_R423         0x423
0247 #define AU8522_FILTER_COEF_R424         0x424
0248 #define AU8522_FILTER_COEF_R425         0x425
0249 #define AU8522_FILTER_COEF_R426         0x426
0250 #define AU8522_FILTER_COEF_R427         0x427
0251 #define AU8522_FILTER_COEF_R428         0x428
0252 #define AU8522_FILTER_COEF_R429         0x429
0253 #define AU8522_FILTER_COEF_R42A         0x42A
0254 #define AU8522_FILTER_COEF_R42B         0x42B
0255 #define AU8522_FILTER_COEF_R42C         0x42C
0256 #define AU8522_FILTER_COEF_R42D         0x42D
0257 
0258 /* VBI Control Registers */
0259 #define AU8522_TVDEC_VBI_RX_FIFO_CONTAIN_REG004H    0x004
0260 #define AU8522_TVDEC_VBI_TX_FIFO_CONTAIN_REG005H    0x005
0261 #define AU8522_TVDEC_VBI_RX_FIFO_READ_REG006H       0x006
0262 #define AU8522_TVDEC_VBI_FIFO_STATUS_REG007H        0x007
0263 #define AU8522_TVDEC_VBI_CTRL_H_REG017H         0x017
0264 #define AU8522_TVDEC_VBI_CTRL_L_REG018H         0x018
0265 #define AU8522_TVDEC_VBI_USER_TOTAL_BITS_REG019H    0x019
0266 #define AU8522_TVDEC_VBI_USER_TUNIT_H_REG01AH       0x01A
0267 #define AU8522_TVDEC_VBI_USER_TUNIT_L_REG01BH       0x01B
0268 #define AU8522_TVDEC_VBI_USER_THRESH1_REG01CH       0x01C
0269 #define AU8522_TVDEC_VBI_USER_FRAME_PAT2_REG01EH    0x01E
0270 #define AU8522_TVDEC_VBI_USER_FRAME_PAT1_REG01FH    0x01F
0271 #define AU8522_TVDEC_VBI_USER_FRAME_PAT0_REG020H    0x020
0272 #define AU8522_TVDEC_VBI_USER_FRAME_MASK2_REG021H   0x021
0273 #define AU8522_TVDEC_VBI_USER_FRAME_MASK1_REG022H   0x022
0274 #define AU8522_TVDEC_VBI_USER_FRAME_MASK0_REG023H   0x023
0275 
0276 #define AU8522_REG071H                  0x071
0277 #define AU8522_REG072H                  0x072
0278 #define AU8522_REG074H                  0x074
0279 #define AU8522_REG075H                  0x075
0280 
0281 /* Digital Demodulator Registers */
0282 #define AU8522_FRAME_COUNT0_REG084H         0x084
0283 #define AU8522_RS_STATUS_G0_REG085H         0x085
0284 #define AU8522_RS_STATUS_B0_REG086H         0x086
0285 #define AU8522_RS_STATUS_E_REG087H          0x087
0286 #define AU8522_DEMODULATION_STATUS_REG088H      0x088
0287 #define AU8522_TOREGTRESTATUS_REG0E6H           0x0E6
0288 #define AU8522_TSPORT_CONTROL_REG10BH           0x10B
0289 #define AU8522_TSTHES_REG10CH               0x10C
0290 #define AU8522_FRMREGDFEKEEP_REG301H            0x301
0291 #define AU8522_DFE_AVERAGE_REG302H          0x302
0292 #define AU8522_FRMREGEQLERRWIN_REG303H          0x303
0293 #define AU8522_FRMREGFFEKEEP_REG304H            0x304
0294 #define AU8522_FRMREGDFECONTROL1_REG305H        0x305
0295 #define AU8522_FRMREGEQLERRLOW_REG306H          0x306
0296 
0297 #define AU8522_REG42EH              0x42E
0298 #define AU8522_REG42FH              0x42F
0299 #define AU8522_REG430H              0x430
0300 #define AU8522_REG431H              0x431
0301 #define AU8522_REG432H              0x432
0302 #define AU8522_REG433H              0x433
0303 #define AU8522_REG434H              0x434
0304 #define AU8522_REG435H              0x435
0305 #define AU8522_REG436H              0x436
0306 
0307 /* GPIO Registers */
0308 #define AU8522_GPIO_CONTROL_REG0E0H         0x0E0
0309 #define AU8522_GPIO_STATUS_REG0E1H          0x0E1
0310 #define AU8522_GPIO_DATA_REG0E2H            0x0E2
0311 
0312 /* Audio Control Registers */
0313 #define AU8522_AUDIOAGC_REG0EEH             0x0EE
0314 #define AU8522_AUDIO_STATUS_REG0F0H         0x0F0
0315 #define AU8522_AUDIO_MODE_REG0F1H           0x0F1
0316 #define AU8522_AUDIO_VOLUME_L_REG0F2H           0x0F2
0317 #define AU8522_AUDIO_VOLUME_R_REG0F3H           0x0F3
0318 #define AU8522_AUDIO_VOLUME_REG0F4H         0x0F4
0319 #define AU8522_FRMREGAUPHASE_REG0F7H            0x0F7
0320 #define AU8522_REG0F9H                  0x0F9
0321 
0322 #define AU8522_AUDIOAGC2_REG605H            0x605
0323 #define AU8522_AUDIOFREQ_REG606H            0x606
0324 
0325 
0326 /**************************************************************/
0327 
0328 /* Format control 1 */
0329 
0330 /* VCR Mode 7-6 */
0331 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_VCR_MODE_YES      0x80
0332 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_VCR_MODE_NO       0x40
0333 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_VCR_MODE_AUTO     0x00
0334 /* Field len 5-4 */
0335 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_FIELD_LEN_625     0x20
0336 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_FIELD_LEN_525     0x10
0337 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_FIELD_LEN_AUTO    0x00
0338 /* Line len (us) 3-2 */
0339 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_LINE_LEN_64_000   0x0b
0340 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_LINE_LEN_63_492   0x08
0341 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_LINE_LEN_63_556   0x04
0342 /* Subcarrier freq 1-0 */
0343 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_SUBCARRIER_NTSC_AUTO  0x03
0344 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_SUBCARRIER_NTSC_443   0x02
0345 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_SUBCARRIER_NTSC_MN    0x01
0346 #define AU8522_TVDEC_FORMAT_CTRL1_REG061H_SUBCARRIER_NTSC_50    0x00
0347 
0348 /* Format control 2 */
0349 #define AU8522_TVDEC_FORMAT_CTRL2_REG062H_STD_AUTODETECT    0x00
0350 #define AU8522_TVDEC_FORMAT_CTRL2_REG062H_STD_NTSC      0x01
0351 #define AU8522_TVDEC_FORMAT_CTRL2_REG062H_STD_PAL_M     0x02
0352 
0353 
0354 #define AU8522_INPUT_CONTROL_REG081H_ATSC           0xC4
0355 #define AU8522_INPUT_CONTROL_REG081H_ATVRF          0xC4
0356 #define AU8522_INPUT_CONTROL_REG081H_ATVRF13            0xC4
0357 #define AU8522_INPUT_CONTROL_REG081H_J83B64         0xC4
0358 #define AU8522_INPUT_CONTROL_REG081H_J83B256            0xC4
0359 #define AU8522_INPUT_CONTROL_REG081H_CVBS           0x20
0360 #define AU8522_INPUT_CONTROL_REG081H_CVBS_CH1           0xA2
0361 #define AU8522_INPUT_CONTROL_REG081H_CVBS_CH2           0xA0
0362 #define AU8522_INPUT_CONTROL_REG081H_CVBS_CH3           0x69
0363 #define AU8522_INPUT_CONTROL_REG081H_CVBS_CH4           0x68
0364 #define AU8522_INPUT_CONTROL_REG081H_CVBS_CH4_SIF       0x28
0365 /* CH1 AS Y,CH3 AS C */
0366 #define AU8522_INPUT_CONTROL_REG081H_SVIDEO_CH13        0x23
0367 /* CH2 AS Y,CH4 AS C */
0368 #define AU8522_INPUT_CONTROL_REG081H_SVIDEO_CH24        0x20
0369 #define AU8522_MODULE_CLOCK_CONTROL_REG0A3H_ATSC        0x0C
0370 #define AU8522_MODULE_CLOCK_CONTROL_REG0A3H_J83B64      0x09
0371 #define AU8522_MODULE_CLOCK_CONTROL_REG0A3H_J83B256     0x09
0372 #define AU8522_MODULE_CLOCK_CONTROL_REG0A3H_CVBS        0x12
0373 #define AU8522_MODULE_CLOCK_CONTROL_REG0A3H_ATVRF       0x1A
0374 #define AU8522_MODULE_CLOCK_CONTROL_REG0A3H_ATVRF13     0x1A
0375 #define AU8522_MODULE_CLOCK_CONTROL_REG0A3H_SVIDEO      0x02
0376 
0377 #define AU8522_SYSTEM_MODULE_CONTROL_0_REG0A4H_CLEAR        0x00
0378 #define AU8522_SYSTEM_MODULE_CONTROL_0_REG0A4H_SVIDEO       0x9C
0379 #define AU8522_SYSTEM_MODULE_CONTROL_0_REG0A4H_CVBS     0x9D
0380 #define AU8522_SYSTEM_MODULE_CONTROL_0_REG0A4H_ATSC     0xE8
0381 #define AU8522_SYSTEM_MODULE_CONTROL_0_REG0A4H_J83B256      0xCA
0382 #define AU8522_SYSTEM_MODULE_CONTROL_0_REG0A4H_J83B64       0xCA
0383 #define AU8522_SYSTEM_MODULE_CONTROL_0_REG0A4H_ATVRF        0xDD
0384 #define AU8522_SYSTEM_MODULE_CONTROL_0_REG0A4H_ATVRF13      0xDD
0385 #define AU8522_SYSTEM_MODULE_CONTROL_0_REG0A4H_PAL      0xDD
0386 #define AU8522_SYSTEM_MODULE_CONTROL_0_REG0A4H_FM       0xDD
0387 
0388 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_ATSC     0x80
0389 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_J83B256      0x80
0390 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_J83B64       0x80
0391 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_DONGLE_ATSC  0x40
0392 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_DONGLE_J83B256   0x40
0393 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_DONGLE_J83B64    0x40
0394 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_DONGLE_CLEAR 0x00
0395 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_ATVRF        0x01
0396 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_ATVRF13      0x01
0397 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_SVIDEO       0x04
0398 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_CVBS     0x01
0399 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_PWM      0x03
0400 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_IIS      0x09
0401 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_PAL      0x01
0402 #define AU8522_SYSTEM_MODULE_CONTROL_1_REG0A5H_FM       0x01
0403 
0404 /* STILL NEED TO BE REFACTORED @@@@@@@@@@@@@@ */
0405 #define AU8522_TVDEC_CONTRAST_REG00BH_CVBS          0x79
0406 #define AU8522_TVDEC_SATURATION_CB_REG00CH_CVBS         0x80
0407 #define AU8522_TVDEC_SATURATION_CR_REG00DH_CVBS         0x80
0408 #define AU8522_TVDEC_HUE_H_REG00EH_CVBS             0x00
0409 #define AU8522_TVDEC_HUE_L_REG00FH_CVBS             0x00
0410 #define AU8522_TVDEC_PGA_REG012H_CVBS               0x0F
0411 #define AU8522_TVDEC_COMB_MODE_REG015H_CVBS         0x00
0412 #define AU8522_REG016H_CVBS                 0x00
0413 #define AU8522_TVDED_DBG_MODE_REG060H_CVBS          0x00
0414 #define AU8522_TVDEC_VCR_DET_LLIM_REG063H_CVBS          0x19
0415 #define AU8522_REG0F9H_AUDIO                    0x20
0416 #define AU8522_TVDEC_VCR_DET_HLIM_REG064H_CVBS          0xA7
0417 #define AU8522_TVDEC_COMB_VDIF_THR1_REG065H_CVBS        0x0A
0418 #define AU8522_TVDEC_COMB_VDIF_THR2_REG066H_CVBS        0x32
0419 #define AU8522_TVDEC_COMB_VDIF_THR3_REG067H_CVBS        0x19
0420 #define AU8522_TVDEC_COMB_NOTCH_THR_REG068H_CVBS        0x23
0421 #define AU8522_TVDEC_COMB_HDIF_THR1_REG069H_CVBS        0x41
0422 #define AU8522_TVDEC_COMB_HDIF_THR2_REG06AH_CVBS        0x0A
0423 #define AU8522_TVDEC_COMB_HDIF_THR3_REG06BH_CVBS        0x32
0424 #define AU8522_TVDEC_COMB_DCDIF_THR1_REG06CH_CVBS       0x34
0425 #define AU8522_TVDEC_COMB_DCDIF_THR1_REG06CH_SVIDEO     0x2a
0426 #define AU8522_TVDEC_COMB_DCDIF_THR2_REG06DH_CVBS       0x05
0427 #define AU8522_TVDEC_COMB_DCDIF_THR2_REG06DH_SVIDEO     0x15
0428 #define AU8522_TVDEC_COMB_DCDIF_THR3_REG06EH_CVBS       0x6E
0429 #define AU8522_TVDEC_UV_SEP_THR_REG06FH_CVBS            0x0F
0430 #define AU8522_TVDEC_COMB_DC_THR1_NTSC_REG070H_CVBS     0x80
0431 #define AU8522_REG071H_CVBS                 0x18
0432 #define AU8522_REG072H_CVBS                 0x30
0433 #define AU8522_TVDEC_COMB_DC_THR2_NTSC_REG073H_CVBS     0xF0
0434 #define AU8522_REG074H_CVBS                 0x80
0435 #define AU8522_REG075H_CVBS                 0xF0
0436 #define AU8522_TVDEC_DCAGC_CTRL_REG077H_CVBS            0xFB
0437 #define AU8522_TVDEC_PIC_START_ADJ_REG078H_CVBS         0x04
0438 #define AU8522_TVDEC_AGC_HIGH_LIMIT_REG079H_CVBS        0x00
0439 #define AU8522_TVDEC_MACROVISION_SYNC_THR_REG07AH_CVBS      0x00
0440 #define AU8522_TVDEC_INTRP_CTRL_REG07BH_CVBS            0xEE
0441 #define AU8522_TVDEC_AGC_LOW_LIMIT_REG0E4H_CVBS         0xFE
0442 #define AU8522_TOREGAAGC_REG0E5H_CVBS               0x00
0443 #define AU8522_TVDEC_VBI6A_REG035H_CVBS             0x40
0444 
0445 /* Enables Closed captioning */
0446 #define AU8522_TVDEC_VBI_CTRL_H_REG017H_CCON            0x21