116216333SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 29a0bf528SMauro Carvalho Chehab /* 39a0bf528SMauro Carvalho Chehab * Realtek RTL2832 DVB-T demodulator driver 49a0bf528SMauro Carvalho Chehab * 59a0bf528SMauro Carvalho Chehab * Copyright (C) 2012 Thomas Mair <thomas.mair86@gmail.com> 675c24005SAntti Palosaari * Copyright (C) 2012-2014 Antti Palosaari <crope@iki.fi> 79a0bf528SMauro Carvalho Chehab */ 89a0bf528SMauro Carvalho Chehab 99a0bf528SMauro Carvalho Chehab #ifndef RTL2832_PRIV_H 109a0bf528SMauro Carvalho Chehab #define RTL2832_PRIV_H 119a0bf528SMauro Carvalho Chehab 12d1016581SAntti Palosaari #include <linux/regmap.h> 13f7caf93fSAntti Palosaari #include <linux/math64.h> 14cd559e0bSAntti Palosaari #include <linux/bitops.h> 15cd559e0bSAntti Palosaari 16fada1935SMauro Carvalho Chehab #include <media/dvb_frontend.h> 17*f97fa3dcSAndy Shevchenko #include <linux/int_log.h> 18cd559e0bSAntti Palosaari #include "rtl2832.h" 199a0bf528SMauro Carvalho Chehab 20038c6f24SAntti Palosaari struct rtl2832_dev { 21e1174d78SAntti Palosaari struct rtl2832_platform_data *pdata; 22c2c8386fSAntti Palosaari struct i2c_client *client; 23b410dae4SAntti Palosaari struct regmap_config regmap_config; 24d1016581SAntti Palosaari struct regmap *regmap; 25cddcc40bSPeter Rosin struct i2c_mux_core *muxc; 269a0bf528SMauro Carvalho Chehab struct dvb_frontend fe; 270df289a2SMauro Carvalho Chehab enum fe_status fe_status; 28084330b7SAntti Palosaari u64 post_bit_error_prev; /* for old DVBv3 read_ber() calculation */ 296b4fd018SAntti Palosaari u64 post_bit_error; 306b4fd018SAntti Palosaari u64 post_bit_count; 319a0bf528SMauro Carvalho Chehab bool sleeping; 3292d20d9fSAntti Palosaari struct delayed_work i2c_gate_work; 334b01e01aSAntti Palosaari unsigned long filters; /* PID filter */ 34d10f89ccSMartin Blumenstingl bool slave_ts; 359a0bf528SMauro Carvalho Chehab }; 369a0bf528SMauro Carvalho Chehab 379a0bf528SMauro Carvalho Chehab struct rtl2832_reg_entry { 38eec21bebSAntti Palosaari u16 start_address; 399a0bf528SMauro Carvalho Chehab u8 msb; 409a0bf528SMauro Carvalho Chehab u8 lsb; 419a0bf528SMauro Carvalho Chehab }; 429a0bf528SMauro Carvalho Chehab 439a0bf528SMauro Carvalho Chehab struct rtl2832_reg_value { 449a0bf528SMauro Carvalho Chehab int reg; 459a0bf528SMauro Carvalho Chehab u32 value; 469a0bf528SMauro Carvalho Chehab }; 479a0bf528SMauro Carvalho Chehab 489a0bf528SMauro Carvalho Chehab /* Demod register bit names */ 499a0bf528SMauro Carvalho Chehab enum DVBT_REG_BIT_NAME { 509a0bf528SMauro Carvalho Chehab DVBT_SOFT_RST, 519a0bf528SMauro Carvalho Chehab DVBT_IIC_REPEAT, 529a0bf528SMauro Carvalho Chehab DVBT_TR_WAIT_MIN_8K, 539a0bf528SMauro Carvalho Chehab DVBT_RSD_BER_FAIL_VAL, 549a0bf528SMauro Carvalho Chehab DVBT_EN_BK_TRK, 559a0bf528SMauro Carvalho Chehab DVBT_REG_PI, 569a0bf528SMauro Carvalho Chehab DVBT_REG_PFREQ_1_0, 579a0bf528SMauro Carvalho Chehab DVBT_PD_DA8, 589a0bf528SMauro Carvalho Chehab DVBT_LOCK_TH, 599a0bf528SMauro Carvalho Chehab DVBT_BER_PASS_SCAL, 609a0bf528SMauro Carvalho Chehab DVBT_CE_FFSM_BYPASS, 619a0bf528SMauro Carvalho Chehab DVBT_ALPHAIIR_N, 629a0bf528SMauro Carvalho Chehab DVBT_ALPHAIIR_DIF, 639a0bf528SMauro Carvalho Chehab DVBT_EN_TRK_SPAN, 649a0bf528SMauro Carvalho Chehab DVBT_LOCK_TH_LEN, 659a0bf528SMauro Carvalho Chehab DVBT_CCI_THRE, 669a0bf528SMauro Carvalho Chehab DVBT_CCI_MON_SCAL, 679a0bf528SMauro Carvalho Chehab DVBT_CCI_M0, 689a0bf528SMauro Carvalho Chehab DVBT_CCI_M1, 699a0bf528SMauro Carvalho Chehab DVBT_CCI_M2, 709a0bf528SMauro Carvalho Chehab DVBT_CCI_M3, 719a0bf528SMauro Carvalho Chehab DVBT_SPEC_INIT_0, 729a0bf528SMauro Carvalho Chehab DVBT_SPEC_INIT_1, 739a0bf528SMauro Carvalho Chehab DVBT_SPEC_INIT_2, 749a0bf528SMauro Carvalho Chehab DVBT_AD_EN_REG, 759a0bf528SMauro Carvalho Chehab DVBT_AD_EN_REG1, 769a0bf528SMauro Carvalho Chehab DVBT_EN_BBIN, 779a0bf528SMauro Carvalho Chehab DVBT_MGD_THD0, 789a0bf528SMauro Carvalho Chehab DVBT_MGD_THD1, 799a0bf528SMauro Carvalho Chehab DVBT_MGD_THD2, 809a0bf528SMauro Carvalho Chehab DVBT_MGD_THD3, 819a0bf528SMauro Carvalho Chehab DVBT_MGD_THD4, 829a0bf528SMauro Carvalho Chehab DVBT_MGD_THD5, 839a0bf528SMauro Carvalho Chehab DVBT_MGD_THD6, 849a0bf528SMauro Carvalho Chehab DVBT_MGD_THD7, 859a0bf528SMauro Carvalho Chehab DVBT_EN_CACQ_NOTCH, 869a0bf528SMauro Carvalho Chehab DVBT_AD_AV_REF, 879a0bf528SMauro Carvalho Chehab DVBT_PIP_ON, 889a0bf528SMauro Carvalho Chehab DVBT_SCALE1_B92, 899a0bf528SMauro Carvalho Chehab DVBT_SCALE1_B93, 909a0bf528SMauro Carvalho Chehab DVBT_SCALE1_BA7, 919a0bf528SMauro Carvalho Chehab DVBT_SCALE1_BA9, 929a0bf528SMauro Carvalho Chehab DVBT_SCALE1_BAA, 939a0bf528SMauro Carvalho Chehab DVBT_SCALE1_BAB, 949a0bf528SMauro Carvalho Chehab DVBT_SCALE1_BAC, 959a0bf528SMauro Carvalho Chehab DVBT_SCALE1_BB0, 969a0bf528SMauro Carvalho Chehab DVBT_SCALE1_BB1, 979a0bf528SMauro Carvalho Chehab DVBT_KB_P1, 989a0bf528SMauro Carvalho Chehab DVBT_KB_P2, 999a0bf528SMauro Carvalho Chehab DVBT_KB_P3, 1009a0bf528SMauro Carvalho Chehab DVBT_OPT_ADC_IQ, 1019a0bf528SMauro Carvalho Chehab DVBT_AD_AVI, 1029a0bf528SMauro Carvalho Chehab DVBT_AD_AVQ, 1039a0bf528SMauro Carvalho Chehab DVBT_K1_CR_STEP12, 1049a0bf528SMauro Carvalho Chehab DVBT_TRK_KS_P2, 1059a0bf528SMauro Carvalho Chehab DVBT_TRK_KS_I2, 1069a0bf528SMauro Carvalho Chehab DVBT_TR_THD_SET2, 1079a0bf528SMauro Carvalho Chehab DVBT_TRK_KC_P2, 1089a0bf528SMauro Carvalho Chehab DVBT_TRK_KC_I2, 1099a0bf528SMauro Carvalho Chehab DVBT_CR_THD_SET2, 1109a0bf528SMauro Carvalho Chehab DVBT_PSET_IFFREQ, 1119a0bf528SMauro Carvalho Chehab DVBT_SPEC_INV, 1129a0bf528SMauro Carvalho Chehab DVBT_BW_INDEX, 1139a0bf528SMauro Carvalho Chehab DVBT_RSAMP_RATIO, 1149a0bf528SMauro Carvalho Chehab DVBT_CFREQ_OFF_RATIO, 1159a0bf528SMauro Carvalho Chehab DVBT_FSM_STAGE, 1169a0bf528SMauro Carvalho Chehab DVBT_RX_CONSTEL, 1179a0bf528SMauro Carvalho Chehab DVBT_RX_HIER, 1189a0bf528SMauro Carvalho Chehab DVBT_RX_C_RATE_LP, 1199a0bf528SMauro Carvalho Chehab DVBT_RX_C_RATE_HP, 1209a0bf528SMauro Carvalho Chehab DVBT_GI_IDX, 1219a0bf528SMauro Carvalho Chehab DVBT_FFT_MODE_IDX, 1229a0bf528SMauro Carvalho Chehab DVBT_RSD_BER_EST, 1239a0bf528SMauro Carvalho Chehab DVBT_CE_EST_EVM, 1249a0bf528SMauro Carvalho Chehab DVBT_RF_AGC_VAL, 1259a0bf528SMauro Carvalho Chehab DVBT_IF_AGC_VAL, 1269a0bf528SMauro Carvalho Chehab DVBT_DAGC_VAL, 1279a0bf528SMauro Carvalho Chehab DVBT_SFREQ_OFF, 1289a0bf528SMauro Carvalho Chehab DVBT_CFREQ_OFF, 1299a0bf528SMauro Carvalho Chehab DVBT_POLAR_RF_AGC, 1309a0bf528SMauro Carvalho Chehab DVBT_POLAR_IF_AGC, 1319a0bf528SMauro Carvalho Chehab DVBT_AAGC_HOLD, 1329a0bf528SMauro Carvalho Chehab DVBT_EN_RF_AGC, 1339a0bf528SMauro Carvalho Chehab DVBT_EN_IF_AGC, 1349a0bf528SMauro Carvalho Chehab DVBT_IF_AGC_MIN, 1359a0bf528SMauro Carvalho Chehab DVBT_IF_AGC_MAX, 1369a0bf528SMauro Carvalho Chehab DVBT_RF_AGC_MIN, 1379a0bf528SMauro Carvalho Chehab DVBT_RF_AGC_MAX, 1389a0bf528SMauro Carvalho Chehab DVBT_IF_AGC_MAN, 1399a0bf528SMauro Carvalho Chehab DVBT_IF_AGC_MAN_VAL, 1409a0bf528SMauro Carvalho Chehab DVBT_RF_AGC_MAN, 1419a0bf528SMauro Carvalho Chehab DVBT_RF_AGC_MAN_VAL, 1429a0bf528SMauro Carvalho Chehab DVBT_DAGC_TRG_VAL, 1439a0bf528SMauro Carvalho Chehab DVBT_AGC_TARG_VAL, 1449a0bf528SMauro Carvalho Chehab DVBT_LOOP_GAIN_3_0, 1459a0bf528SMauro Carvalho Chehab DVBT_LOOP_GAIN_4, 1469a0bf528SMauro Carvalho Chehab DVBT_VTOP, 1479a0bf528SMauro Carvalho Chehab DVBT_KRF, 1489a0bf528SMauro Carvalho Chehab DVBT_AGC_TARG_VAL_0, 1499a0bf528SMauro Carvalho Chehab DVBT_AGC_TARG_VAL_8_1, 1509a0bf528SMauro Carvalho Chehab DVBT_AAGC_LOOP_GAIN, 1519a0bf528SMauro Carvalho Chehab DVBT_LOOP_GAIN2_3_0, 1529a0bf528SMauro Carvalho Chehab DVBT_LOOP_GAIN2_4, 1539a0bf528SMauro Carvalho Chehab DVBT_LOOP_GAIN3, 1549a0bf528SMauro Carvalho Chehab DVBT_VTOP1, 1559a0bf528SMauro Carvalho Chehab DVBT_VTOP2, 1569a0bf528SMauro Carvalho Chehab DVBT_VTOP3, 1579a0bf528SMauro Carvalho Chehab DVBT_KRF1, 1589a0bf528SMauro Carvalho Chehab DVBT_KRF2, 1599a0bf528SMauro Carvalho Chehab DVBT_KRF3, 1609a0bf528SMauro Carvalho Chehab DVBT_KRF4, 1619a0bf528SMauro Carvalho Chehab DVBT_EN_GI_PGA, 1629a0bf528SMauro Carvalho Chehab DVBT_THD_LOCK_UP, 1639a0bf528SMauro Carvalho Chehab DVBT_THD_LOCK_DW, 1649a0bf528SMauro Carvalho Chehab DVBT_THD_UP1, 1659a0bf528SMauro Carvalho Chehab DVBT_THD_DW1, 1669a0bf528SMauro Carvalho Chehab DVBT_INTER_CNT_LEN, 1679a0bf528SMauro Carvalho Chehab DVBT_GI_PGA_STATE, 1689a0bf528SMauro Carvalho Chehab DVBT_EN_AGC_PGA, 1699a0bf528SMauro Carvalho Chehab DVBT_CKOUTPAR, 1709a0bf528SMauro Carvalho Chehab DVBT_CKOUT_PWR, 1719a0bf528SMauro Carvalho Chehab DVBT_SYNC_DUR, 1729a0bf528SMauro Carvalho Chehab DVBT_ERR_DUR, 1739a0bf528SMauro Carvalho Chehab DVBT_SYNC_LVL, 1749a0bf528SMauro Carvalho Chehab DVBT_ERR_LVL, 1759a0bf528SMauro Carvalho Chehab DVBT_VAL_LVL, 1769a0bf528SMauro Carvalho Chehab DVBT_SERIAL, 1779a0bf528SMauro Carvalho Chehab DVBT_SER_LSB, 1789a0bf528SMauro Carvalho Chehab DVBT_CDIV_PH0, 1799a0bf528SMauro Carvalho Chehab DVBT_CDIV_PH1, 1809a0bf528SMauro Carvalho Chehab DVBT_MPEG_IO_OPT_2_2, 1819a0bf528SMauro Carvalho Chehab DVBT_MPEG_IO_OPT_1_0, 1829a0bf528SMauro Carvalho Chehab DVBT_CKOUTPAR_PIP, 1839a0bf528SMauro Carvalho Chehab DVBT_CKOUT_PWR_PIP, 1849a0bf528SMauro Carvalho Chehab DVBT_SYNC_LVL_PIP, 1859a0bf528SMauro Carvalho Chehab DVBT_ERR_LVL_PIP, 1869a0bf528SMauro Carvalho Chehab DVBT_VAL_LVL_PIP, 1879a0bf528SMauro Carvalho Chehab DVBT_CKOUTPAR_PID, 1889a0bf528SMauro Carvalho Chehab DVBT_CKOUT_PWR_PID, 1899a0bf528SMauro Carvalho Chehab DVBT_SYNC_LVL_PID, 1909a0bf528SMauro Carvalho Chehab DVBT_ERR_LVL_PID, 1919a0bf528SMauro Carvalho Chehab DVBT_VAL_LVL_PID, 1929a0bf528SMauro Carvalho Chehab DVBT_SM_PASS, 1939a0bf528SMauro Carvalho Chehab DVBT_UPDATE_REG_2, 1949a0bf528SMauro Carvalho Chehab DVBT_BTHD_P3, 1959a0bf528SMauro Carvalho Chehab DVBT_BTHD_D3, 1969a0bf528SMauro Carvalho Chehab DVBT_FUNC4_REG0, 1979a0bf528SMauro Carvalho Chehab DVBT_FUNC4_REG1, 1989a0bf528SMauro Carvalho Chehab DVBT_FUNC4_REG2, 1999a0bf528SMauro Carvalho Chehab DVBT_FUNC4_REG3, 2009a0bf528SMauro Carvalho Chehab DVBT_FUNC4_REG4, 2019a0bf528SMauro Carvalho Chehab DVBT_FUNC4_REG5, 2029a0bf528SMauro Carvalho Chehab DVBT_FUNC4_REG6, 2039a0bf528SMauro Carvalho Chehab DVBT_FUNC4_REG7, 2049a0bf528SMauro Carvalho Chehab DVBT_FUNC4_REG8, 2059a0bf528SMauro Carvalho Chehab DVBT_FUNC4_REG9, 2069a0bf528SMauro Carvalho Chehab DVBT_FUNC4_REG10, 2079a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG0, 2089a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG1, 2099a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG2, 2109a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG3, 2119a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG4, 2129a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG5, 2139a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG6, 2149a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG7, 2159a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG8, 2169a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG9, 2179a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG10, 2189a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG11, 2199a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG12, 2209a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG13, 2219a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG14, 2229a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG15, 2239a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG16, 2249a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG17, 2259a0bf528SMauro Carvalho Chehab DVBT_FUNC5_REG18, 2269a0bf528SMauro Carvalho Chehab DVBT_AD7_SETTING, 2279a0bf528SMauro Carvalho Chehab DVBT_RSSI_R, 2289a0bf528SMauro Carvalho Chehab DVBT_ACI_DET_IND, 2299a0bf528SMauro Carvalho Chehab DVBT_REG_MON, 2309a0bf528SMauro Carvalho Chehab DVBT_REG_MONSEL, 2319a0bf528SMauro Carvalho Chehab DVBT_REG_GPE, 2329a0bf528SMauro Carvalho Chehab DVBT_REG_GPO, 2339a0bf528SMauro Carvalho Chehab DVBT_REG_4MSEL, 2349a0bf528SMauro Carvalho Chehab DVBT_TEST_REG_1, 2359a0bf528SMauro Carvalho Chehab DVBT_TEST_REG_2, 2369a0bf528SMauro Carvalho Chehab DVBT_TEST_REG_3, 2379a0bf528SMauro Carvalho Chehab DVBT_TEST_REG_4, 2389a0bf528SMauro Carvalho Chehab DVBT_REG_BIT_NAME_ITEM_TERMINATOR, 2399a0bf528SMauro Carvalho Chehab }; 2409a0bf528SMauro Carvalho Chehab 241f88aae9dSAntti Palosaari static const struct rtl2832_reg_value rtl2832_tuner_init_fc2580[] = { 242f88aae9dSAntti Palosaari {DVBT_DAGC_TRG_VAL, 0x39}, 243f88aae9dSAntti Palosaari {DVBT_AGC_TARG_VAL_0, 0x0}, 244f88aae9dSAntti Palosaari {DVBT_AGC_TARG_VAL_8_1, 0x5a}, 245f88aae9dSAntti Palosaari {DVBT_AAGC_LOOP_GAIN, 0x16}, 246f88aae9dSAntti Palosaari {DVBT_LOOP_GAIN2_3_0, 0x6}, 247f88aae9dSAntti Palosaari {DVBT_LOOP_GAIN2_4, 0x1}, 248f88aae9dSAntti Palosaari {DVBT_LOOP_GAIN3, 0x16}, 249f88aae9dSAntti Palosaari {DVBT_VTOP1, 0x35}, 250f88aae9dSAntti Palosaari {DVBT_VTOP2, 0x21}, 251f88aae9dSAntti Palosaari {DVBT_VTOP3, 0x21}, 252f88aae9dSAntti Palosaari {DVBT_KRF1, 0x0}, 253f88aae9dSAntti Palosaari {DVBT_KRF2, 0x40}, 254f88aae9dSAntti Palosaari {DVBT_KRF3, 0x10}, 255f88aae9dSAntti Palosaari {DVBT_KRF4, 0x10}, 256f88aae9dSAntti Palosaari {DVBT_IF_AGC_MIN, 0x80}, 257f88aae9dSAntti Palosaari {DVBT_IF_AGC_MAX, 0x7f}, 258f88aae9dSAntti Palosaari {DVBT_RF_AGC_MIN, 0x9c}, 259f88aae9dSAntti Palosaari {DVBT_RF_AGC_MAX, 0x7f}, 260f88aae9dSAntti Palosaari {DVBT_POLAR_RF_AGC, 0x0}, 261f88aae9dSAntti Palosaari {DVBT_POLAR_IF_AGC, 0x0}, 262f88aae9dSAntti Palosaari {DVBT_AD7_SETTING, 0xe9f4}, 263f88aae9dSAntti Palosaari }; 264f88aae9dSAntti Palosaari 2655db4187aSAntti Palosaari static const struct rtl2832_reg_value rtl2832_tuner_init_tua9001[] = { 2665db4187aSAntti Palosaari {DVBT_DAGC_TRG_VAL, 0x39}, 2675db4187aSAntti Palosaari {DVBT_AGC_TARG_VAL_0, 0x0}, 2685db4187aSAntti Palosaari {DVBT_AGC_TARG_VAL_8_1, 0x5a}, 2695db4187aSAntti Palosaari {DVBT_AAGC_LOOP_GAIN, 0x16}, 2705db4187aSAntti Palosaari {DVBT_LOOP_GAIN2_3_0, 0x6}, 2715db4187aSAntti Palosaari {DVBT_LOOP_GAIN2_4, 0x1}, 2725db4187aSAntti Palosaari {DVBT_LOOP_GAIN3, 0x16}, 2735db4187aSAntti Palosaari {DVBT_VTOP1, 0x35}, 2745db4187aSAntti Palosaari {DVBT_VTOP2, 0x21}, 2755db4187aSAntti Palosaari {DVBT_VTOP3, 0x21}, 2765db4187aSAntti Palosaari {DVBT_KRF1, 0x0}, 2775db4187aSAntti Palosaari {DVBT_KRF2, 0x40}, 2785db4187aSAntti Palosaari {DVBT_KRF3, 0x10}, 2795db4187aSAntti Palosaari {DVBT_KRF4, 0x10}, 2805db4187aSAntti Palosaari {DVBT_IF_AGC_MIN, 0x80}, 2815db4187aSAntti Palosaari {DVBT_IF_AGC_MAX, 0x7f}, 2825db4187aSAntti Palosaari {DVBT_RF_AGC_MIN, 0x9c}, 2835db4187aSAntti Palosaari {DVBT_RF_AGC_MAX, 0x7f}, 2845db4187aSAntti Palosaari {DVBT_POLAR_RF_AGC, 0x0}, 2855db4187aSAntti Palosaari {DVBT_POLAR_IF_AGC, 0x0}, 2865db4187aSAntti Palosaari {DVBT_AD7_SETTING, 0xe9f4}, 2875db4187aSAntti Palosaari {DVBT_OPT_ADC_IQ, 0x1}, 2885db4187aSAntti Palosaari {DVBT_AD_AVI, 0x0}, 2895db4187aSAntti Palosaari {DVBT_AD_AVQ, 0x0}, 290fa4bfd2bSMauro Carvalho Chehab {DVBT_SPEC_INV, 0x0}, 2915db4187aSAntti Palosaari }; 2925db4187aSAntti Palosaari 293832cc7cdSAntti Palosaari static const struct rtl2832_reg_value rtl2832_tuner_init_fc0012[] = { 294832cc7cdSAntti Palosaari {DVBT_DAGC_TRG_VAL, 0x5a}, 295832cc7cdSAntti Palosaari {DVBT_AGC_TARG_VAL_0, 0x0}, 296832cc7cdSAntti Palosaari {DVBT_AGC_TARG_VAL_8_1, 0x5a}, 297832cc7cdSAntti Palosaari {DVBT_AAGC_LOOP_GAIN, 0x16}, 298832cc7cdSAntti Palosaari {DVBT_LOOP_GAIN2_3_0, 0x6}, 299832cc7cdSAntti Palosaari {DVBT_LOOP_GAIN2_4, 0x1}, 300832cc7cdSAntti Palosaari {DVBT_LOOP_GAIN3, 0x16}, 301832cc7cdSAntti Palosaari {DVBT_VTOP1, 0x35}, 302832cc7cdSAntti Palosaari {DVBT_VTOP2, 0x21}, 303832cc7cdSAntti Palosaari {DVBT_VTOP3, 0x21}, 304832cc7cdSAntti Palosaari {DVBT_KRF1, 0x0}, 305832cc7cdSAntti Palosaari {DVBT_KRF2, 0x40}, 306832cc7cdSAntti Palosaari {DVBT_KRF3, 0x10}, 307832cc7cdSAntti Palosaari {DVBT_KRF4, 0x10}, 308832cc7cdSAntti Palosaari {DVBT_IF_AGC_MIN, 0x80}, 309832cc7cdSAntti Palosaari {DVBT_IF_AGC_MAX, 0x7f}, 310832cc7cdSAntti Palosaari {DVBT_RF_AGC_MIN, 0x80}, 311832cc7cdSAntti Palosaari {DVBT_RF_AGC_MAX, 0x7f}, 312832cc7cdSAntti Palosaari {DVBT_POLAR_RF_AGC, 0x0}, 313832cc7cdSAntti Palosaari {DVBT_POLAR_IF_AGC, 0x0}, 314832cc7cdSAntti Palosaari {DVBT_AD7_SETTING, 0xe9bf}, 315832cc7cdSAntti Palosaari {DVBT_EN_GI_PGA, 0x0}, 316832cc7cdSAntti Palosaari {DVBT_THD_LOCK_UP, 0x0}, 317832cc7cdSAntti Palosaari {DVBT_THD_LOCK_DW, 0x0}, 318832cc7cdSAntti Palosaari {DVBT_THD_UP1, 0x11}, 319832cc7cdSAntti Palosaari {DVBT_THD_DW1, 0xef}, 320832cc7cdSAntti Palosaari {DVBT_INTER_CNT_LEN, 0xc}, 321832cc7cdSAntti Palosaari {DVBT_GI_PGA_STATE, 0x0}, 322832cc7cdSAntti Palosaari {DVBT_EN_AGC_PGA, 0x1}, 323832cc7cdSAntti Palosaari {DVBT_IF_AGC_MAN, 0x0}, 324fa4bfd2bSMauro Carvalho Chehab {DVBT_SPEC_INV, 0x0}, 325832cc7cdSAntti Palosaari }; 326832cc7cdSAntti Palosaari 3277e688de0SAntti Palosaari static const struct rtl2832_reg_value rtl2832_tuner_init_e4000[] = { 3287e688de0SAntti Palosaari {DVBT_DAGC_TRG_VAL, 0x5a}, 3297e688de0SAntti Palosaari {DVBT_AGC_TARG_VAL_0, 0x0}, 3307e688de0SAntti Palosaari {DVBT_AGC_TARG_VAL_8_1, 0x5a}, 3317e688de0SAntti Palosaari {DVBT_AAGC_LOOP_GAIN, 0x18}, 3327e688de0SAntti Palosaari {DVBT_LOOP_GAIN2_3_0, 0x8}, 3337e688de0SAntti Palosaari {DVBT_LOOP_GAIN2_4, 0x1}, 3347e688de0SAntti Palosaari {DVBT_LOOP_GAIN3, 0x18}, 3357e688de0SAntti Palosaari {DVBT_VTOP1, 0x35}, 3367e688de0SAntti Palosaari {DVBT_VTOP2, 0x21}, 3377e688de0SAntti Palosaari {DVBT_VTOP3, 0x21}, 3387e688de0SAntti Palosaari {DVBT_KRF1, 0x0}, 3397e688de0SAntti Palosaari {DVBT_KRF2, 0x40}, 3407e688de0SAntti Palosaari {DVBT_KRF3, 0x10}, 3417e688de0SAntti Palosaari {DVBT_KRF4, 0x10}, 3427e688de0SAntti Palosaari {DVBT_IF_AGC_MIN, 0x80}, 3437e688de0SAntti Palosaari {DVBT_IF_AGC_MAX, 0x7f}, 3447e688de0SAntti Palosaari {DVBT_RF_AGC_MIN, 0x80}, 3457e688de0SAntti Palosaari {DVBT_RF_AGC_MAX, 0x7f}, 3467e688de0SAntti Palosaari {DVBT_POLAR_RF_AGC, 0x0}, 3477e688de0SAntti Palosaari {DVBT_POLAR_IF_AGC, 0x0}, 3487e688de0SAntti Palosaari {DVBT_AD7_SETTING, 0xe9d4}, 3497e688de0SAntti Palosaari {DVBT_EN_GI_PGA, 0x0}, 3507e688de0SAntti Palosaari {DVBT_THD_LOCK_UP, 0x0}, 3517e688de0SAntti Palosaari {DVBT_THD_LOCK_DW, 0x0}, 3527e688de0SAntti Palosaari {DVBT_THD_UP1, 0x14}, 3537e688de0SAntti Palosaari {DVBT_THD_DW1, 0xec}, 3547e688de0SAntti Palosaari {DVBT_INTER_CNT_LEN, 0xc}, 3557e688de0SAntti Palosaari {DVBT_GI_PGA_STATE, 0x0}, 3567e688de0SAntti Palosaari {DVBT_EN_AGC_PGA, 0x1}, 3577e688de0SAntti Palosaari {DVBT_REG_GPE, 0x1}, 3587e688de0SAntti Palosaari {DVBT_REG_GPO, 0x1}, 3597e688de0SAntti Palosaari {DVBT_REG_MONSEL, 0x1}, 3607e688de0SAntti Palosaari {DVBT_REG_MON, 0x1}, 3617e688de0SAntti Palosaari {DVBT_REG_4MSEL, 0x0}, 362fa4bfd2bSMauro Carvalho Chehab {DVBT_SPEC_INV, 0x0}, 363fa4bfd2bSMauro Carvalho Chehab }; 364fa4bfd2bSMauro Carvalho Chehab 365fa4bfd2bSMauro Carvalho Chehab static const struct rtl2832_reg_value rtl2832_tuner_init_r820t[] = { 366fa4bfd2bSMauro Carvalho Chehab {DVBT_DAGC_TRG_VAL, 0x39}, 367fa4bfd2bSMauro Carvalho Chehab {DVBT_AGC_TARG_VAL_0, 0x0}, 368fa4bfd2bSMauro Carvalho Chehab {DVBT_AGC_TARG_VAL_8_1, 0x40}, 369fa4bfd2bSMauro Carvalho Chehab {DVBT_AAGC_LOOP_GAIN, 0x16}, 370fa4bfd2bSMauro Carvalho Chehab {DVBT_LOOP_GAIN2_3_0, 0x8}, 371fa4bfd2bSMauro Carvalho Chehab {DVBT_LOOP_GAIN2_4, 0x1}, 372fa4bfd2bSMauro Carvalho Chehab {DVBT_LOOP_GAIN3, 0x18}, 373fa4bfd2bSMauro Carvalho Chehab {DVBT_VTOP1, 0x35}, 374fa4bfd2bSMauro Carvalho Chehab {DVBT_VTOP2, 0x21}, 375fa4bfd2bSMauro Carvalho Chehab {DVBT_VTOP3, 0x21}, 376fa4bfd2bSMauro Carvalho Chehab {DVBT_KRF1, 0x0}, 377fa4bfd2bSMauro Carvalho Chehab {DVBT_KRF2, 0x40}, 378fa4bfd2bSMauro Carvalho Chehab {DVBT_KRF3, 0x10}, 379fa4bfd2bSMauro Carvalho Chehab {DVBT_KRF4, 0x10}, 380fa4bfd2bSMauro Carvalho Chehab {DVBT_IF_AGC_MIN, 0x80}, 381fa4bfd2bSMauro Carvalho Chehab {DVBT_IF_AGC_MAX, 0x7f}, 382fa4bfd2bSMauro Carvalho Chehab {DVBT_RF_AGC_MIN, 0x80}, 383fa4bfd2bSMauro Carvalho Chehab {DVBT_RF_AGC_MAX, 0x7f}, 384fa4bfd2bSMauro Carvalho Chehab {DVBT_POLAR_RF_AGC, 0x0}, 385fa4bfd2bSMauro Carvalho Chehab {DVBT_POLAR_IF_AGC, 0x0}, 386fa4bfd2bSMauro Carvalho Chehab {DVBT_AD7_SETTING, 0xe9f4}, 387fa4bfd2bSMauro Carvalho Chehab {DVBT_SPEC_INV, 0x1}, 3887e688de0SAntti Palosaari }; 3897e688de0SAntti Palosaari 390699dcffcSOlli Salonen static const struct rtl2832_reg_value rtl2832_tuner_init_si2157[] = { 391699dcffcSOlli Salonen {DVBT_DAGC_TRG_VAL, 0x39}, 392699dcffcSOlli Salonen {DVBT_AGC_TARG_VAL_0, 0x0}, 393699dcffcSOlli Salonen {DVBT_AGC_TARG_VAL_8_1, 0x40}, 394699dcffcSOlli Salonen {DVBT_AAGC_LOOP_GAIN, 0x16}, 395699dcffcSOlli Salonen {DVBT_LOOP_GAIN2_3_0, 0x8}, 396699dcffcSOlli Salonen {DVBT_LOOP_GAIN2_4, 0x1}, 397699dcffcSOlli Salonen {DVBT_LOOP_GAIN3, 0x18}, 398699dcffcSOlli Salonen {DVBT_VTOP1, 0x35}, 399699dcffcSOlli Salonen {DVBT_VTOP2, 0x21}, 400699dcffcSOlli Salonen {DVBT_VTOP3, 0x21}, 401699dcffcSOlli Salonen {DVBT_KRF1, 0x0}, 402699dcffcSOlli Salonen {DVBT_KRF2, 0x40}, 403699dcffcSOlli Salonen {DVBT_KRF3, 0x10}, 404699dcffcSOlli Salonen {DVBT_KRF4, 0x10}, 405699dcffcSOlli Salonen {DVBT_IF_AGC_MIN, 0x80}, 406699dcffcSOlli Salonen {DVBT_IF_AGC_MAX, 0x7f}, 407699dcffcSOlli Salonen {DVBT_RF_AGC_MIN, 0x80}, 408699dcffcSOlli Salonen {DVBT_RF_AGC_MAX, 0x7f}, 409699dcffcSOlli Salonen {DVBT_POLAR_RF_AGC, 0x0}, 410699dcffcSOlli Salonen {DVBT_POLAR_IF_AGC, 0x0}, 411699dcffcSOlli Salonen {DVBT_AD7_SETTING, 0xe9f4}, 412699dcffcSOlli Salonen {DVBT_SPEC_INV, 0x0}, 413699dcffcSOlli Salonen }; 414699dcffcSOlli Salonen 4159a0bf528SMauro Carvalho Chehab #endif /* RTL2832_PRIV_H */ 416