1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Realtek RTL2832 DVB-T demodulator driver 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2012 Thomas Mair <thomas.mair86@gmail.com> 6*4882a593Smuzhiyun * Copyright (C) 2012-2014 Antti Palosaari <crope@iki.fi> 7*4882a593Smuzhiyun */ 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #ifndef RTL2832_PRIV_H 10*4882a593Smuzhiyun #define RTL2832_PRIV_H 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #include <linux/regmap.h> 13*4882a593Smuzhiyun #include <linux/math64.h> 14*4882a593Smuzhiyun #include <linux/bitops.h> 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun #include <media/dvb_frontend.h> 17*4882a593Smuzhiyun #include <media/dvb_math.h> 18*4882a593Smuzhiyun #include "rtl2832.h" 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun struct rtl2832_dev { 21*4882a593Smuzhiyun struct rtl2832_platform_data *pdata; 22*4882a593Smuzhiyun struct i2c_client *client; 23*4882a593Smuzhiyun struct regmap_config regmap_config; 24*4882a593Smuzhiyun struct regmap *regmap; 25*4882a593Smuzhiyun struct i2c_mux_core *muxc; 26*4882a593Smuzhiyun struct dvb_frontend fe; 27*4882a593Smuzhiyun enum fe_status fe_status; 28*4882a593Smuzhiyun u64 post_bit_error_prev; /* for old DVBv3 read_ber() calculation */ 29*4882a593Smuzhiyun u64 post_bit_error; 30*4882a593Smuzhiyun u64 post_bit_count; 31*4882a593Smuzhiyun bool sleeping; 32*4882a593Smuzhiyun struct delayed_work i2c_gate_work; 33*4882a593Smuzhiyun unsigned long filters; /* PID filter */ 34*4882a593Smuzhiyun bool slave_ts; 35*4882a593Smuzhiyun }; 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun struct rtl2832_reg_entry { 38*4882a593Smuzhiyun u16 start_address; 39*4882a593Smuzhiyun u8 msb; 40*4882a593Smuzhiyun u8 lsb; 41*4882a593Smuzhiyun }; 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun struct rtl2832_reg_value { 44*4882a593Smuzhiyun int reg; 45*4882a593Smuzhiyun u32 value; 46*4882a593Smuzhiyun }; 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun /* Demod register bit names */ 49*4882a593Smuzhiyun enum DVBT_REG_BIT_NAME { 50*4882a593Smuzhiyun DVBT_SOFT_RST, 51*4882a593Smuzhiyun DVBT_IIC_REPEAT, 52*4882a593Smuzhiyun DVBT_TR_WAIT_MIN_8K, 53*4882a593Smuzhiyun DVBT_RSD_BER_FAIL_VAL, 54*4882a593Smuzhiyun DVBT_EN_BK_TRK, 55*4882a593Smuzhiyun DVBT_REG_PI, 56*4882a593Smuzhiyun DVBT_REG_PFREQ_1_0, 57*4882a593Smuzhiyun DVBT_PD_DA8, 58*4882a593Smuzhiyun DVBT_LOCK_TH, 59*4882a593Smuzhiyun DVBT_BER_PASS_SCAL, 60*4882a593Smuzhiyun DVBT_CE_FFSM_BYPASS, 61*4882a593Smuzhiyun DVBT_ALPHAIIR_N, 62*4882a593Smuzhiyun DVBT_ALPHAIIR_DIF, 63*4882a593Smuzhiyun DVBT_EN_TRK_SPAN, 64*4882a593Smuzhiyun DVBT_LOCK_TH_LEN, 65*4882a593Smuzhiyun DVBT_CCI_THRE, 66*4882a593Smuzhiyun DVBT_CCI_MON_SCAL, 67*4882a593Smuzhiyun DVBT_CCI_M0, 68*4882a593Smuzhiyun DVBT_CCI_M1, 69*4882a593Smuzhiyun DVBT_CCI_M2, 70*4882a593Smuzhiyun DVBT_CCI_M3, 71*4882a593Smuzhiyun DVBT_SPEC_INIT_0, 72*4882a593Smuzhiyun DVBT_SPEC_INIT_1, 73*4882a593Smuzhiyun DVBT_SPEC_INIT_2, 74*4882a593Smuzhiyun DVBT_AD_EN_REG, 75*4882a593Smuzhiyun DVBT_AD_EN_REG1, 76*4882a593Smuzhiyun DVBT_EN_BBIN, 77*4882a593Smuzhiyun DVBT_MGD_THD0, 78*4882a593Smuzhiyun DVBT_MGD_THD1, 79*4882a593Smuzhiyun DVBT_MGD_THD2, 80*4882a593Smuzhiyun DVBT_MGD_THD3, 81*4882a593Smuzhiyun DVBT_MGD_THD4, 82*4882a593Smuzhiyun DVBT_MGD_THD5, 83*4882a593Smuzhiyun DVBT_MGD_THD6, 84*4882a593Smuzhiyun DVBT_MGD_THD7, 85*4882a593Smuzhiyun DVBT_EN_CACQ_NOTCH, 86*4882a593Smuzhiyun DVBT_AD_AV_REF, 87*4882a593Smuzhiyun DVBT_PIP_ON, 88*4882a593Smuzhiyun DVBT_SCALE1_B92, 89*4882a593Smuzhiyun DVBT_SCALE1_B93, 90*4882a593Smuzhiyun DVBT_SCALE1_BA7, 91*4882a593Smuzhiyun DVBT_SCALE1_BA9, 92*4882a593Smuzhiyun DVBT_SCALE1_BAA, 93*4882a593Smuzhiyun DVBT_SCALE1_BAB, 94*4882a593Smuzhiyun DVBT_SCALE1_BAC, 95*4882a593Smuzhiyun DVBT_SCALE1_BB0, 96*4882a593Smuzhiyun DVBT_SCALE1_BB1, 97*4882a593Smuzhiyun DVBT_KB_P1, 98*4882a593Smuzhiyun DVBT_KB_P2, 99*4882a593Smuzhiyun DVBT_KB_P3, 100*4882a593Smuzhiyun DVBT_OPT_ADC_IQ, 101*4882a593Smuzhiyun DVBT_AD_AVI, 102*4882a593Smuzhiyun DVBT_AD_AVQ, 103*4882a593Smuzhiyun DVBT_K1_CR_STEP12, 104*4882a593Smuzhiyun DVBT_TRK_KS_P2, 105*4882a593Smuzhiyun DVBT_TRK_KS_I2, 106*4882a593Smuzhiyun DVBT_TR_THD_SET2, 107*4882a593Smuzhiyun DVBT_TRK_KC_P2, 108*4882a593Smuzhiyun DVBT_TRK_KC_I2, 109*4882a593Smuzhiyun DVBT_CR_THD_SET2, 110*4882a593Smuzhiyun DVBT_PSET_IFFREQ, 111*4882a593Smuzhiyun DVBT_SPEC_INV, 112*4882a593Smuzhiyun DVBT_BW_INDEX, 113*4882a593Smuzhiyun DVBT_RSAMP_RATIO, 114*4882a593Smuzhiyun DVBT_CFREQ_OFF_RATIO, 115*4882a593Smuzhiyun DVBT_FSM_STAGE, 116*4882a593Smuzhiyun DVBT_RX_CONSTEL, 117*4882a593Smuzhiyun DVBT_RX_HIER, 118*4882a593Smuzhiyun DVBT_RX_C_RATE_LP, 119*4882a593Smuzhiyun DVBT_RX_C_RATE_HP, 120*4882a593Smuzhiyun DVBT_GI_IDX, 121*4882a593Smuzhiyun DVBT_FFT_MODE_IDX, 122*4882a593Smuzhiyun DVBT_RSD_BER_EST, 123*4882a593Smuzhiyun DVBT_CE_EST_EVM, 124*4882a593Smuzhiyun DVBT_RF_AGC_VAL, 125*4882a593Smuzhiyun DVBT_IF_AGC_VAL, 126*4882a593Smuzhiyun DVBT_DAGC_VAL, 127*4882a593Smuzhiyun DVBT_SFREQ_OFF, 128*4882a593Smuzhiyun DVBT_CFREQ_OFF, 129*4882a593Smuzhiyun DVBT_POLAR_RF_AGC, 130*4882a593Smuzhiyun DVBT_POLAR_IF_AGC, 131*4882a593Smuzhiyun DVBT_AAGC_HOLD, 132*4882a593Smuzhiyun DVBT_EN_RF_AGC, 133*4882a593Smuzhiyun DVBT_EN_IF_AGC, 134*4882a593Smuzhiyun DVBT_IF_AGC_MIN, 135*4882a593Smuzhiyun DVBT_IF_AGC_MAX, 136*4882a593Smuzhiyun DVBT_RF_AGC_MIN, 137*4882a593Smuzhiyun DVBT_RF_AGC_MAX, 138*4882a593Smuzhiyun DVBT_IF_AGC_MAN, 139*4882a593Smuzhiyun DVBT_IF_AGC_MAN_VAL, 140*4882a593Smuzhiyun DVBT_RF_AGC_MAN, 141*4882a593Smuzhiyun DVBT_RF_AGC_MAN_VAL, 142*4882a593Smuzhiyun DVBT_DAGC_TRG_VAL, 143*4882a593Smuzhiyun DVBT_AGC_TARG_VAL, 144*4882a593Smuzhiyun DVBT_LOOP_GAIN_3_0, 145*4882a593Smuzhiyun DVBT_LOOP_GAIN_4, 146*4882a593Smuzhiyun DVBT_VTOP, 147*4882a593Smuzhiyun DVBT_KRF, 148*4882a593Smuzhiyun DVBT_AGC_TARG_VAL_0, 149*4882a593Smuzhiyun DVBT_AGC_TARG_VAL_8_1, 150*4882a593Smuzhiyun DVBT_AAGC_LOOP_GAIN, 151*4882a593Smuzhiyun DVBT_LOOP_GAIN2_3_0, 152*4882a593Smuzhiyun DVBT_LOOP_GAIN2_4, 153*4882a593Smuzhiyun DVBT_LOOP_GAIN3, 154*4882a593Smuzhiyun DVBT_VTOP1, 155*4882a593Smuzhiyun DVBT_VTOP2, 156*4882a593Smuzhiyun DVBT_VTOP3, 157*4882a593Smuzhiyun DVBT_KRF1, 158*4882a593Smuzhiyun DVBT_KRF2, 159*4882a593Smuzhiyun DVBT_KRF3, 160*4882a593Smuzhiyun DVBT_KRF4, 161*4882a593Smuzhiyun DVBT_EN_GI_PGA, 162*4882a593Smuzhiyun DVBT_THD_LOCK_UP, 163*4882a593Smuzhiyun DVBT_THD_LOCK_DW, 164*4882a593Smuzhiyun DVBT_THD_UP1, 165*4882a593Smuzhiyun DVBT_THD_DW1, 166*4882a593Smuzhiyun DVBT_INTER_CNT_LEN, 167*4882a593Smuzhiyun DVBT_GI_PGA_STATE, 168*4882a593Smuzhiyun DVBT_EN_AGC_PGA, 169*4882a593Smuzhiyun DVBT_CKOUTPAR, 170*4882a593Smuzhiyun DVBT_CKOUT_PWR, 171*4882a593Smuzhiyun DVBT_SYNC_DUR, 172*4882a593Smuzhiyun DVBT_ERR_DUR, 173*4882a593Smuzhiyun DVBT_SYNC_LVL, 174*4882a593Smuzhiyun DVBT_ERR_LVL, 175*4882a593Smuzhiyun DVBT_VAL_LVL, 176*4882a593Smuzhiyun DVBT_SERIAL, 177*4882a593Smuzhiyun DVBT_SER_LSB, 178*4882a593Smuzhiyun DVBT_CDIV_PH0, 179*4882a593Smuzhiyun DVBT_CDIV_PH1, 180*4882a593Smuzhiyun DVBT_MPEG_IO_OPT_2_2, 181*4882a593Smuzhiyun DVBT_MPEG_IO_OPT_1_0, 182*4882a593Smuzhiyun DVBT_CKOUTPAR_PIP, 183*4882a593Smuzhiyun DVBT_CKOUT_PWR_PIP, 184*4882a593Smuzhiyun DVBT_SYNC_LVL_PIP, 185*4882a593Smuzhiyun DVBT_ERR_LVL_PIP, 186*4882a593Smuzhiyun DVBT_VAL_LVL_PIP, 187*4882a593Smuzhiyun DVBT_CKOUTPAR_PID, 188*4882a593Smuzhiyun DVBT_CKOUT_PWR_PID, 189*4882a593Smuzhiyun DVBT_SYNC_LVL_PID, 190*4882a593Smuzhiyun DVBT_ERR_LVL_PID, 191*4882a593Smuzhiyun DVBT_VAL_LVL_PID, 192*4882a593Smuzhiyun DVBT_SM_PASS, 193*4882a593Smuzhiyun DVBT_UPDATE_REG_2, 194*4882a593Smuzhiyun DVBT_BTHD_P3, 195*4882a593Smuzhiyun DVBT_BTHD_D3, 196*4882a593Smuzhiyun DVBT_FUNC4_REG0, 197*4882a593Smuzhiyun DVBT_FUNC4_REG1, 198*4882a593Smuzhiyun DVBT_FUNC4_REG2, 199*4882a593Smuzhiyun DVBT_FUNC4_REG3, 200*4882a593Smuzhiyun DVBT_FUNC4_REG4, 201*4882a593Smuzhiyun DVBT_FUNC4_REG5, 202*4882a593Smuzhiyun DVBT_FUNC4_REG6, 203*4882a593Smuzhiyun DVBT_FUNC4_REG7, 204*4882a593Smuzhiyun DVBT_FUNC4_REG8, 205*4882a593Smuzhiyun DVBT_FUNC4_REG9, 206*4882a593Smuzhiyun DVBT_FUNC4_REG10, 207*4882a593Smuzhiyun DVBT_FUNC5_REG0, 208*4882a593Smuzhiyun DVBT_FUNC5_REG1, 209*4882a593Smuzhiyun DVBT_FUNC5_REG2, 210*4882a593Smuzhiyun DVBT_FUNC5_REG3, 211*4882a593Smuzhiyun DVBT_FUNC5_REG4, 212*4882a593Smuzhiyun DVBT_FUNC5_REG5, 213*4882a593Smuzhiyun DVBT_FUNC5_REG6, 214*4882a593Smuzhiyun DVBT_FUNC5_REG7, 215*4882a593Smuzhiyun DVBT_FUNC5_REG8, 216*4882a593Smuzhiyun DVBT_FUNC5_REG9, 217*4882a593Smuzhiyun DVBT_FUNC5_REG10, 218*4882a593Smuzhiyun DVBT_FUNC5_REG11, 219*4882a593Smuzhiyun DVBT_FUNC5_REG12, 220*4882a593Smuzhiyun DVBT_FUNC5_REG13, 221*4882a593Smuzhiyun DVBT_FUNC5_REG14, 222*4882a593Smuzhiyun DVBT_FUNC5_REG15, 223*4882a593Smuzhiyun DVBT_FUNC5_REG16, 224*4882a593Smuzhiyun DVBT_FUNC5_REG17, 225*4882a593Smuzhiyun DVBT_FUNC5_REG18, 226*4882a593Smuzhiyun DVBT_AD7_SETTING, 227*4882a593Smuzhiyun DVBT_RSSI_R, 228*4882a593Smuzhiyun DVBT_ACI_DET_IND, 229*4882a593Smuzhiyun DVBT_REG_MON, 230*4882a593Smuzhiyun DVBT_REG_MONSEL, 231*4882a593Smuzhiyun DVBT_REG_GPE, 232*4882a593Smuzhiyun DVBT_REG_GPO, 233*4882a593Smuzhiyun DVBT_REG_4MSEL, 234*4882a593Smuzhiyun DVBT_TEST_REG_1, 235*4882a593Smuzhiyun DVBT_TEST_REG_2, 236*4882a593Smuzhiyun DVBT_TEST_REG_3, 237*4882a593Smuzhiyun DVBT_TEST_REG_4, 238*4882a593Smuzhiyun DVBT_REG_BIT_NAME_ITEM_TERMINATOR, 239*4882a593Smuzhiyun }; 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun static const struct rtl2832_reg_value rtl2832_tuner_init_fc2580[] = { 242*4882a593Smuzhiyun {DVBT_DAGC_TRG_VAL, 0x39}, 243*4882a593Smuzhiyun {DVBT_AGC_TARG_VAL_0, 0x0}, 244*4882a593Smuzhiyun {DVBT_AGC_TARG_VAL_8_1, 0x5a}, 245*4882a593Smuzhiyun {DVBT_AAGC_LOOP_GAIN, 0x16}, 246*4882a593Smuzhiyun {DVBT_LOOP_GAIN2_3_0, 0x6}, 247*4882a593Smuzhiyun {DVBT_LOOP_GAIN2_4, 0x1}, 248*4882a593Smuzhiyun {DVBT_LOOP_GAIN3, 0x16}, 249*4882a593Smuzhiyun {DVBT_VTOP1, 0x35}, 250*4882a593Smuzhiyun {DVBT_VTOP2, 0x21}, 251*4882a593Smuzhiyun {DVBT_VTOP3, 0x21}, 252*4882a593Smuzhiyun {DVBT_KRF1, 0x0}, 253*4882a593Smuzhiyun {DVBT_KRF2, 0x40}, 254*4882a593Smuzhiyun {DVBT_KRF3, 0x10}, 255*4882a593Smuzhiyun {DVBT_KRF4, 0x10}, 256*4882a593Smuzhiyun {DVBT_IF_AGC_MIN, 0x80}, 257*4882a593Smuzhiyun {DVBT_IF_AGC_MAX, 0x7f}, 258*4882a593Smuzhiyun {DVBT_RF_AGC_MIN, 0x9c}, 259*4882a593Smuzhiyun {DVBT_RF_AGC_MAX, 0x7f}, 260*4882a593Smuzhiyun {DVBT_POLAR_RF_AGC, 0x0}, 261*4882a593Smuzhiyun {DVBT_POLAR_IF_AGC, 0x0}, 262*4882a593Smuzhiyun {DVBT_AD7_SETTING, 0xe9f4}, 263*4882a593Smuzhiyun }; 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun static const struct rtl2832_reg_value rtl2832_tuner_init_tua9001[] = { 266*4882a593Smuzhiyun {DVBT_DAGC_TRG_VAL, 0x39}, 267*4882a593Smuzhiyun {DVBT_AGC_TARG_VAL_0, 0x0}, 268*4882a593Smuzhiyun {DVBT_AGC_TARG_VAL_8_1, 0x5a}, 269*4882a593Smuzhiyun {DVBT_AAGC_LOOP_GAIN, 0x16}, 270*4882a593Smuzhiyun {DVBT_LOOP_GAIN2_3_0, 0x6}, 271*4882a593Smuzhiyun {DVBT_LOOP_GAIN2_4, 0x1}, 272*4882a593Smuzhiyun {DVBT_LOOP_GAIN3, 0x16}, 273*4882a593Smuzhiyun {DVBT_VTOP1, 0x35}, 274*4882a593Smuzhiyun {DVBT_VTOP2, 0x21}, 275*4882a593Smuzhiyun {DVBT_VTOP3, 0x21}, 276*4882a593Smuzhiyun {DVBT_KRF1, 0x0}, 277*4882a593Smuzhiyun {DVBT_KRF2, 0x40}, 278*4882a593Smuzhiyun {DVBT_KRF3, 0x10}, 279*4882a593Smuzhiyun {DVBT_KRF4, 0x10}, 280*4882a593Smuzhiyun {DVBT_IF_AGC_MIN, 0x80}, 281*4882a593Smuzhiyun {DVBT_IF_AGC_MAX, 0x7f}, 282*4882a593Smuzhiyun {DVBT_RF_AGC_MIN, 0x9c}, 283*4882a593Smuzhiyun {DVBT_RF_AGC_MAX, 0x7f}, 284*4882a593Smuzhiyun {DVBT_POLAR_RF_AGC, 0x0}, 285*4882a593Smuzhiyun {DVBT_POLAR_IF_AGC, 0x0}, 286*4882a593Smuzhiyun {DVBT_AD7_SETTING, 0xe9f4}, 287*4882a593Smuzhiyun {DVBT_OPT_ADC_IQ, 0x1}, 288*4882a593Smuzhiyun {DVBT_AD_AVI, 0x0}, 289*4882a593Smuzhiyun {DVBT_AD_AVQ, 0x0}, 290*4882a593Smuzhiyun {DVBT_SPEC_INV, 0x0}, 291*4882a593Smuzhiyun }; 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun static const struct rtl2832_reg_value rtl2832_tuner_init_fc0012[] = { 294*4882a593Smuzhiyun {DVBT_DAGC_TRG_VAL, 0x5a}, 295*4882a593Smuzhiyun {DVBT_AGC_TARG_VAL_0, 0x0}, 296*4882a593Smuzhiyun {DVBT_AGC_TARG_VAL_8_1, 0x5a}, 297*4882a593Smuzhiyun {DVBT_AAGC_LOOP_GAIN, 0x16}, 298*4882a593Smuzhiyun {DVBT_LOOP_GAIN2_3_0, 0x6}, 299*4882a593Smuzhiyun {DVBT_LOOP_GAIN2_4, 0x1}, 300*4882a593Smuzhiyun {DVBT_LOOP_GAIN3, 0x16}, 301*4882a593Smuzhiyun {DVBT_VTOP1, 0x35}, 302*4882a593Smuzhiyun {DVBT_VTOP2, 0x21}, 303*4882a593Smuzhiyun {DVBT_VTOP3, 0x21}, 304*4882a593Smuzhiyun {DVBT_KRF1, 0x0}, 305*4882a593Smuzhiyun {DVBT_KRF2, 0x40}, 306*4882a593Smuzhiyun {DVBT_KRF3, 0x10}, 307*4882a593Smuzhiyun {DVBT_KRF4, 0x10}, 308*4882a593Smuzhiyun {DVBT_IF_AGC_MIN, 0x80}, 309*4882a593Smuzhiyun {DVBT_IF_AGC_MAX, 0x7f}, 310*4882a593Smuzhiyun {DVBT_RF_AGC_MIN, 0x80}, 311*4882a593Smuzhiyun {DVBT_RF_AGC_MAX, 0x7f}, 312*4882a593Smuzhiyun {DVBT_POLAR_RF_AGC, 0x0}, 313*4882a593Smuzhiyun {DVBT_POLAR_IF_AGC, 0x0}, 314*4882a593Smuzhiyun {DVBT_AD7_SETTING, 0xe9bf}, 315*4882a593Smuzhiyun {DVBT_EN_GI_PGA, 0x0}, 316*4882a593Smuzhiyun {DVBT_THD_LOCK_UP, 0x0}, 317*4882a593Smuzhiyun {DVBT_THD_LOCK_DW, 0x0}, 318*4882a593Smuzhiyun {DVBT_THD_UP1, 0x11}, 319*4882a593Smuzhiyun {DVBT_THD_DW1, 0xef}, 320*4882a593Smuzhiyun {DVBT_INTER_CNT_LEN, 0xc}, 321*4882a593Smuzhiyun {DVBT_GI_PGA_STATE, 0x0}, 322*4882a593Smuzhiyun {DVBT_EN_AGC_PGA, 0x1}, 323*4882a593Smuzhiyun {DVBT_IF_AGC_MAN, 0x0}, 324*4882a593Smuzhiyun {DVBT_SPEC_INV, 0x0}, 325*4882a593Smuzhiyun }; 326*4882a593Smuzhiyun 327*4882a593Smuzhiyun static const struct rtl2832_reg_value rtl2832_tuner_init_e4000[] = { 328*4882a593Smuzhiyun {DVBT_DAGC_TRG_VAL, 0x5a}, 329*4882a593Smuzhiyun {DVBT_AGC_TARG_VAL_0, 0x0}, 330*4882a593Smuzhiyun {DVBT_AGC_TARG_VAL_8_1, 0x5a}, 331*4882a593Smuzhiyun {DVBT_AAGC_LOOP_GAIN, 0x18}, 332*4882a593Smuzhiyun {DVBT_LOOP_GAIN2_3_0, 0x8}, 333*4882a593Smuzhiyun {DVBT_LOOP_GAIN2_4, 0x1}, 334*4882a593Smuzhiyun {DVBT_LOOP_GAIN3, 0x18}, 335*4882a593Smuzhiyun {DVBT_VTOP1, 0x35}, 336*4882a593Smuzhiyun {DVBT_VTOP2, 0x21}, 337*4882a593Smuzhiyun {DVBT_VTOP3, 0x21}, 338*4882a593Smuzhiyun {DVBT_KRF1, 0x0}, 339*4882a593Smuzhiyun {DVBT_KRF2, 0x40}, 340*4882a593Smuzhiyun {DVBT_KRF3, 0x10}, 341*4882a593Smuzhiyun {DVBT_KRF4, 0x10}, 342*4882a593Smuzhiyun {DVBT_IF_AGC_MIN, 0x80}, 343*4882a593Smuzhiyun {DVBT_IF_AGC_MAX, 0x7f}, 344*4882a593Smuzhiyun {DVBT_RF_AGC_MIN, 0x80}, 345*4882a593Smuzhiyun {DVBT_RF_AGC_MAX, 0x7f}, 346*4882a593Smuzhiyun {DVBT_POLAR_RF_AGC, 0x0}, 347*4882a593Smuzhiyun {DVBT_POLAR_IF_AGC, 0x0}, 348*4882a593Smuzhiyun {DVBT_AD7_SETTING, 0xe9d4}, 349*4882a593Smuzhiyun {DVBT_EN_GI_PGA, 0x0}, 350*4882a593Smuzhiyun {DVBT_THD_LOCK_UP, 0x0}, 351*4882a593Smuzhiyun {DVBT_THD_LOCK_DW, 0x0}, 352*4882a593Smuzhiyun {DVBT_THD_UP1, 0x14}, 353*4882a593Smuzhiyun {DVBT_THD_DW1, 0xec}, 354*4882a593Smuzhiyun {DVBT_INTER_CNT_LEN, 0xc}, 355*4882a593Smuzhiyun {DVBT_GI_PGA_STATE, 0x0}, 356*4882a593Smuzhiyun {DVBT_EN_AGC_PGA, 0x1}, 357*4882a593Smuzhiyun {DVBT_REG_GPE, 0x1}, 358*4882a593Smuzhiyun {DVBT_REG_GPO, 0x1}, 359*4882a593Smuzhiyun {DVBT_REG_MONSEL, 0x1}, 360*4882a593Smuzhiyun {DVBT_REG_MON, 0x1}, 361*4882a593Smuzhiyun {DVBT_REG_4MSEL, 0x0}, 362*4882a593Smuzhiyun {DVBT_SPEC_INV, 0x0}, 363*4882a593Smuzhiyun }; 364*4882a593Smuzhiyun 365*4882a593Smuzhiyun static const struct rtl2832_reg_value rtl2832_tuner_init_r820t[] = { 366*4882a593Smuzhiyun {DVBT_DAGC_TRG_VAL, 0x39}, 367*4882a593Smuzhiyun {DVBT_AGC_TARG_VAL_0, 0x0}, 368*4882a593Smuzhiyun {DVBT_AGC_TARG_VAL_8_1, 0x40}, 369*4882a593Smuzhiyun {DVBT_AAGC_LOOP_GAIN, 0x16}, 370*4882a593Smuzhiyun {DVBT_LOOP_GAIN2_3_0, 0x8}, 371*4882a593Smuzhiyun {DVBT_LOOP_GAIN2_4, 0x1}, 372*4882a593Smuzhiyun {DVBT_LOOP_GAIN3, 0x18}, 373*4882a593Smuzhiyun {DVBT_VTOP1, 0x35}, 374*4882a593Smuzhiyun {DVBT_VTOP2, 0x21}, 375*4882a593Smuzhiyun {DVBT_VTOP3, 0x21}, 376*4882a593Smuzhiyun {DVBT_KRF1, 0x0}, 377*4882a593Smuzhiyun {DVBT_KRF2, 0x40}, 378*4882a593Smuzhiyun {DVBT_KRF3, 0x10}, 379*4882a593Smuzhiyun {DVBT_KRF4, 0x10}, 380*4882a593Smuzhiyun {DVBT_IF_AGC_MIN, 0x80}, 381*4882a593Smuzhiyun {DVBT_IF_AGC_MAX, 0x7f}, 382*4882a593Smuzhiyun {DVBT_RF_AGC_MIN, 0x80}, 383*4882a593Smuzhiyun {DVBT_RF_AGC_MAX, 0x7f}, 384*4882a593Smuzhiyun {DVBT_POLAR_RF_AGC, 0x0}, 385*4882a593Smuzhiyun {DVBT_POLAR_IF_AGC, 0x0}, 386*4882a593Smuzhiyun {DVBT_AD7_SETTING, 0xe9f4}, 387*4882a593Smuzhiyun {DVBT_SPEC_INV, 0x1}, 388*4882a593Smuzhiyun }; 389*4882a593Smuzhiyun 390*4882a593Smuzhiyun static const struct rtl2832_reg_value rtl2832_tuner_init_si2157[] = { 391*4882a593Smuzhiyun {DVBT_DAGC_TRG_VAL, 0x39}, 392*4882a593Smuzhiyun {DVBT_AGC_TARG_VAL_0, 0x0}, 393*4882a593Smuzhiyun {DVBT_AGC_TARG_VAL_8_1, 0x40}, 394*4882a593Smuzhiyun {DVBT_AAGC_LOOP_GAIN, 0x16}, 395*4882a593Smuzhiyun {DVBT_LOOP_GAIN2_3_0, 0x8}, 396*4882a593Smuzhiyun {DVBT_LOOP_GAIN2_4, 0x1}, 397*4882a593Smuzhiyun {DVBT_LOOP_GAIN3, 0x18}, 398*4882a593Smuzhiyun {DVBT_VTOP1, 0x35}, 399*4882a593Smuzhiyun {DVBT_VTOP2, 0x21}, 400*4882a593Smuzhiyun {DVBT_VTOP3, 0x21}, 401*4882a593Smuzhiyun {DVBT_KRF1, 0x0}, 402*4882a593Smuzhiyun {DVBT_KRF2, 0x40}, 403*4882a593Smuzhiyun {DVBT_KRF3, 0x10}, 404*4882a593Smuzhiyun {DVBT_KRF4, 0x10}, 405*4882a593Smuzhiyun {DVBT_IF_AGC_MIN, 0x80}, 406*4882a593Smuzhiyun {DVBT_IF_AGC_MAX, 0x7f}, 407*4882a593Smuzhiyun {DVBT_RF_AGC_MIN, 0x80}, 408*4882a593Smuzhiyun {DVBT_RF_AGC_MAX, 0x7f}, 409*4882a593Smuzhiyun {DVBT_POLAR_RF_AGC, 0x0}, 410*4882a593Smuzhiyun {DVBT_POLAR_IF_AGC, 0x0}, 411*4882a593Smuzhiyun {DVBT_AD7_SETTING, 0xe9f4}, 412*4882a593Smuzhiyun {DVBT_SPEC_INV, 0x0}, 413*4882a593Smuzhiyun }; 414*4882a593Smuzhiyun 415*4882a593Smuzhiyun #endif /* RTL2832_PRIV_H */ 416