xref: /linux/drivers/media/dvb-frontends/rtl2832_priv.h (revision a1c613ae4c322ddd58d5a8539dbfba2a0380a8c0)
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