xref: /OK3568_Linux_fs/kernel/drivers/media/dvb-frontends/rtl2832_priv.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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