blob: 1944d9e94427732786f9341df8bf9bcaa3690fe8 [file] [log] [blame]
Steven Toth52c99bd2008-05-01 04:57:01 -03001/*
2 * For the Realtek RTL chip RTL2831U
3 * Realtek Release Date: 2008-03-14, ver 080314
4 * Realtek version RTL2831 Linux driver version 080314
5 * ver 080314
6 *
7 * for linux kernel version 2.6.21.4 - 2.6.22-14
8 * support MXL5005s and MT2060 tuners (support tuner auto-detecting)
9 * support two IR types -- RC5 and NEC
10 *
11 * Known boards with Realtek RTL chip RTL2821U
12 * Freecom USB stick 14aa:0160 (version 4)
13 * Conceptronic CTVDIGRCU
14 *
15 * Copyright (c) 2008 Realtek
16 * Copyright (c) 2008 Jan Hoogenraad, Barnaby Shearer, Andy Hasper
17 * This code is placed under the terms of the GNU General Public License
18 *
19 * Released by Realtek under GPLv2.
20 * Thanks to Realtek for a lot of support we received !
21 *
22 * Revision: 080314 - original version
23 */
24
25
Steven Toth2637d5b2008-05-01 05:01:31 -030026#ifndef __MXL5005S_H
27#define __MXL5005S_H
Steven Toth52c99bd2008-05-01 04:57:01 -030028
Steven Toth2637d5b2008-05-01 05:01:31 -030029/*
30 * The following context is source code provided by MaxLinear.
31 * MaxLinear source code - Common.h
32 */
Steven Toth52c99bd2008-05-01 04:57:01 -030033
Steven Toth2637d5b2008-05-01 05:01:31 -030034typedef void *HANDLE; /* Pointer to memory location */
Steven Toth52c99bd2008-05-01 04:57:01 -030035
36#define TUNER_REGS_NUM 104
37#define INITCTRL_NUM 40
Steven Toth2637d5b2008-05-01 05:01:31 -030038
Steven Toth52c99bd2008-05-01 04:57:01 -030039#ifdef _MXL_PRODUCTION
Steven Toth2637d5b2008-05-01 05:01:31 -030040#define CHCTRL_NUM 39
Steven Toth52c99bd2008-05-01 04:57:01 -030041#else
Steven Toth2637d5b2008-05-01 05:01:31 -030042#define CHCTRL_NUM 36
Steven Toth52c99bd2008-05-01 04:57:01 -030043#endif
44
Steven Toth2637d5b2008-05-01 05:01:31 -030045#define MXLCTRL_NUM 189
46#define MASTER_CONTROL_ADDR 9
Steven Toth52c99bd2008-05-01 04:57:01 -030047
Steven Toth2637d5b2008-05-01 05:01:31 -030048/* Enumeration of AGC Mode */
Steven Toth52c99bd2008-05-01 04:57:01 -030049typedef enum
50{
Steven Toth2637d5b2008-05-01 05:01:31 -030051 MXL_DUAL_AGC = 0,
Steven Toth52c99bd2008-05-01 04:57:01 -030052 MXL_SINGLE_AGC
Steven Toth2637d5b2008-05-01 05:01:31 -030053} AGC_Mode;
Steven Toth52c99bd2008-05-01 04:57:01 -030054
Steven Toth2637d5b2008-05-01 05:01:31 -030055/* Enumeration of Master Control Register State */
Steven Toth52c99bd2008-05-01 04:57:01 -030056typedef enum
57{
Steven Toth2637d5b2008-05-01 05:01:31 -030058 MC_LOAD_START = 1,
59 MC_POWER_DOWN,
60 MC_SYNTH_RESET,
Steven Toth52c99bd2008-05-01 04:57:01 -030061 MC_SEQ_OFF
Steven Toth2637d5b2008-05-01 05:01:31 -030062} Master_Control_State;
Steven Toth52c99bd2008-05-01 04:57:01 -030063
Steven Toth2637d5b2008-05-01 05:01:31 -030064/* Enumeration of MXL5005 Tuner Mode */
Steven Toth52c99bd2008-05-01 04:57:01 -030065typedef enum
66{
Steven Toth2637d5b2008-05-01 05:01:31 -030067 MXL_ANALOG_MODE = 0,
Steven Toth52c99bd2008-05-01 04:57:01 -030068 MXL_DIGITAL_MODE
Steven Toth2637d5b2008-05-01 05:01:31 -030069} Tuner_Mode;
Steven Toth52c99bd2008-05-01 04:57:01 -030070
Steven Toth2637d5b2008-05-01 05:01:31 -030071/* Enumeration of MXL5005 Tuner IF Mode */
Steven Toth52c99bd2008-05-01 04:57:01 -030072typedef enum
73{
Steven Toth2637d5b2008-05-01 05:01:31 -030074 MXL_ZERO_IF = 0,
Steven Toth52c99bd2008-05-01 04:57:01 -030075 MXL_LOW_IF
Steven Toth2637d5b2008-05-01 05:01:31 -030076} Tuner_IF_Mode;
Steven Toth52c99bd2008-05-01 04:57:01 -030077
Steven Toth2637d5b2008-05-01 05:01:31 -030078/* Enumeration of MXL5005 Tuner Clock Out Mode */
Steven Toth52c99bd2008-05-01 04:57:01 -030079typedef enum
80{
Steven Toth2637d5b2008-05-01 05:01:31 -030081 MXL_CLOCK_OUT_DISABLE = 0,
Steven Toth52c99bd2008-05-01 04:57:01 -030082 MXL_CLOCK_OUT_ENABLE
Steven Toth2637d5b2008-05-01 05:01:31 -030083} Tuner_Clock_Out;
Steven Toth52c99bd2008-05-01 04:57:01 -030084
Steven Toth2637d5b2008-05-01 05:01:31 -030085/* Enumeration of MXL5005 Tuner Div Out Mode */
Steven Toth52c99bd2008-05-01 04:57:01 -030086typedef enum
87{
Steven Toth2637d5b2008-05-01 05:01:31 -030088 MXL_DIV_OUT_1 = 0,
Steven Toth52c99bd2008-05-01 04:57:01 -030089 MXL_DIV_OUT_4
90
Steven Toth2637d5b2008-05-01 05:01:31 -030091} Tuner_Div_Out;
Steven Toth52c99bd2008-05-01 04:57:01 -030092
Steven Toth2637d5b2008-05-01 05:01:31 -030093/* Enumeration of MXL5005 Tuner Pull-up Cap Select Mode */
Steven Toth52c99bd2008-05-01 04:57:01 -030094typedef enum
95{
Steven Toth2637d5b2008-05-01 05:01:31 -030096 MXL_CAP_SEL_DISABLE = 0,
Steven Toth52c99bd2008-05-01 04:57:01 -030097 MXL_CAP_SEL_ENABLE
98
Steven Toth2637d5b2008-05-01 05:01:31 -030099} Tuner_Cap_Select;
Steven Toth52c99bd2008-05-01 04:57:01 -0300100
Steven Toth2637d5b2008-05-01 05:01:31 -0300101/* Enumeration of MXL5005 Tuner RSSI Mode */
Steven Toth52c99bd2008-05-01 04:57:01 -0300102typedef enum
103{
Steven Toth2637d5b2008-05-01 05:01:31 -0300104 MXL_RSSI_DISABLE = 0,
Steven Toth52c99bd2008-05-01 04:57:01 -0300105 MXL_RSSI_ENABLE
106
Steven Toth2637d5b2008-05-01 05:01:31 -0300107} Tuner_RSSI;
Steven Toth52c99bd2008-05-01 04:57:01 -0300108
Steven Toth2637d5b2008-05-01 05:01:31 -0300109/* Enumeration of MXL5005 Tuner Modulation Type */
Steven Toth52c99bd2008-05-01 04:57:01 -0300110typedef enum
111{
Steven Toth2637d5b2008-05-01 05:01:31 -0300112 MXL_DEFAULT_MODULATION = 0,
Steven Toth52c99bd2008-05-01 04:57:01 -0300113 MXL_DVBT,
114 MXL_ATSC,
115 MXL_QAM,
116 MXL_ANALOG_CABLE,
117 MXL_ANALOG_OTA
Steven Toth2637d5b2008-05-01 05:01:31 -0300118} Tuner_Modu_Type;
Steven Toth52c99bd2008-05-01 04:57:01 -0300119
Steven Toth2637d5b2008-05-01 05:01:31 -0300120/* Enumeration of MXL5005 Tuner Tracking Filter Type */
Steven Toth52c99bd2008-05-01 04:57:01 -0300121typedef enum
122{
Steven Toth2637d5b2008-05-01 05:01:31 -0300123 MXL_TF_DEFAULT = 0,
Steven Toth52c99bd2008-05-01 04:57:01 -0300124 MXL_TF_OFF,
125 MXL_TF_C,
126 MXL_TF_C_H,
127 MXL_TF_D,
128 MXL_TF_D_L,
129 MXL_TF_E,
130 MXL_TF_F,
131 MXL_TF_E_2,
132 MXL_TF_E_NA,
133 MXL_TF_G
Steven Toth2637d5b2008-05-01 05:01:31 -0300134} Tuner_TF_Type;
Steven Toth52c99bd2008-05-01 04:57:01 -0300135
Steven Toth2637d5b2008-05-01 05:01:31 -0300136/* MXL5005 Tuner Register Struct */
Steven Toth52c99bd2008-05-01 04:57:01 -0300137typedef struct _TunerReg_struct
138{
Steven Toth2637d5b2008-05-01 05:01:31 -0300139 u16 Reg_Num; /* Tuner Register Address */
140 u16 Reg_Val; /* Current sofware programmed value waiting to be writen */
141} TunerReg_struct;
Steven Toth52c99bd2008-05-01 04:57:01 -0300142
Steven Toth2637d5b2008-05-01 05:01:31 -0300143/* MXL5005 Tuner Control Struct */
Steven Toth52c99bd2008-05-01 04:57:01 -0300144typedef struct _TunerControl_struct {
Steven Toth2637d5b2008-05-01 05:01:31 -0300145 u16 Ctrl_Num; /* Control Number */
146 u16 size; /* Number of bits to represent Value */
147 u16 addr[25]; /* Array of Tuner Register Address for each bit position */
148 u16 bit[25]; /* Array of bit position in Register Address for each bit position */
149 u16 val[25]; /* Binary representation of Value */
150} TunerControl_struct;
Steven Toth52c99bd2008-05-01 04:57:01 -0300151
Steven Toth2637d5b2008-05-01 05:01:31 -0300152/* MXL5005 Tuner Struct */
Steven Toth52c99bd2008-05-01 04:57:01 -0300153typedef struct _Tuner_struct
154{
Steven Toth2637d5b2008-05-01 05:01:31 -0300155 u8 Mode; /* 0: Analog Mode ; 1: Digital Mode */
156 u8 IF_Mode; /* for Analog Mode, 0: zero IF; 1: low IF */
157 u32 Chan_Bandwidth; /* filter channel bandwidth (6, 7, 8) */
158 u32 IF_OUT; /* Desired IF Out Frequency */
159 u16 IF_OUT_LOAD; /* IF Out Load Resistor (200/300 Ohms) */
160 u32 RF_IN; /* RF Input Frequency */
161 u32 Fxtal; /* XTAL Frequency */
162 u8 AGC_Mode; /* AGC Mode 0: Dual AGC; 1: Single AGC */
163 u16 TOP; /* Value: take over point */
164 u8 CLOCK_OUT; /* 0: turn off clock out; 1: turn on clock out */
165 u8 DIV_OUT; /* 4MHz or 16MHz */
166 u8 CAPSELECT; /* 0: disable On-Chip pulling cap; 1: enable */
167 u8 EN_RSSI; /* 0: disable RSSI; 1: enable RSSI */
168 u8 Mod_Type; /* Modulation Type; */
169 /* 0 - Default; 1 - DVB-T; 2 - ATSC; 3 - QAM; 4 - Analog Cable */
170 u8 TF_Type; /* Tracking Filter Type */
171 /* 0 - Default; 1 - Off; 2 - Type C; 3 - Type C-H */
Steven Toth52c99bd2008-05-01 04:57:01 -0300172
Steven Toth2637d5b2008-05-01 05:01:31 -0300173 /* Calculated Settings */
174 u32 RF_LO; /* Synth RF LO Frequency */
175 u32 IF_LO; /* Synth IF LO Frequency */
176 u32 TG_LO; /* Synth TG_LO Frequency */
Steven Toth52c99bd2008-05-01 04:57:01 -0300177
Steven Toth2637d5b2008-05-01 05:01:31 -0300178 /* Pointers to ControlName Arrays */
179 u16 Init_Ctrl_Num; /* Number of INIT Control Names */
180 TunerControl_struct
181 Init_Ctrl[INITCTRL_NUM]; /* INIT Control Names Array Pointer */
Steven Toth52c99bd2008-05-01 04:57:01 -0300182
Steven Toth2637d5b2008-05-01 05:01:31 -0300183 u16 CH_Ctrl_Num; /* Number of CH Control Names */
184 TunerControl_struct
185 CH_Ctrl[CHCTRL_NUM]; /* CH Control Name Array Pointer */
Steven Toth52c99bd2008-05-01 04:57:01 -0300186
Steven Toth2637d5b2008-05-01 05:01:31 -0300187 u16 MXL_Ctrl_Num; /* Number of MXL Control Names */
188 TunerControl_struct
189 MXL_Ctrl[MXLCTRL_NUM]; /* MXL Control Name Array Pointer */
Steven Toth52c99bd2008-05-01 04:57:01 -0300190
Steven Toth2637d5b2008-05-01 05:01:31 -0300191 /* Pointer to Tuner Register Array */
192 u16 TunerRegs_Num; /* Number of Tuner Registers */
193 TunerReg_struct
194 TunerRegs[TUNER_REGS_NUM]; /* Tuner Register Array Pointer */
195
196} Tuner_struct;
Steven Toth52c99bd2008-05-01 04:57:01 -0300197
198typedef enum
199{
Steven Toth2637d5b2008-05-01 05:01:31 -0300200 /* Initialization Control Names */
201 DN_IQTN_AMP_CUT = 1, /* 1 */
202 BB_MODE, /* 2 */
203 BB_BUF, /* 3 */
204 BB_BUF_OA, /* 4 */
205 BB_ALPF_BANDSELECT, /* 5 */
206 BB_IQSWAP, /* 6 */
207 BB_DLPF_BANDSEL, /* 7 */
208 RFSYN_CHP_GAIN, /* 8 */
209 RFSYN_EN_CHP_HIGAIN, /* 9 */
210 AGC_IF, /* 10 */
211 AGC_RF, /* 11 */
212 IF_DIVVAL, /* 12 */
213 IF_VCO_BIAS, /* 13 */
214 CHCAL_INT_MOD_IF, /* 14 */
215 CHCAL_FRAC_MOD_IF, /* 15 */
216 DRV_RES_SEL, /* 16 */
217 I_DRIVER, /* 17 */
218 EN_AAF, /* 18 */
219 EN_3P, /* 19 */
220 EN_AUX_3P, /* 20 */
221 SEL_AAF_BAND, /* 21 */
222 SEQ_ENCLK16_CLK_OUT, /* 22 */
223 SEQ_SEL4_16B, /* 23 */
224 XTAL_CAPSELECT, /* 24 */
225 IF_SEL_DBL, /* 25 */
226 RFSYN_R_DIV, /* 26 */
227 SEQ_EXTSYNTHCALIF, /* 27 */
228 SEQ_EXTDCCAL, /* 28 */
229 AGC_EN_RSSI, /* 29 */
230 RFA_ENCLKRFAGC, /* 30 */
231 RFA_RSSI_REFH, /* 31 */
232 RFA_RSSI_REF, /* 32 */
233 RFA_RSSI_REFL, /* 33 */
234 RFA_FLR, /* 34 */
235 RFA_CEIL, /* 35 */
236 SEQ_EXTIQFSMPULSE, /* 36 */
237 OVERRIDE_1, /* 37 */
238 BB_INITSTATE_DLPF_TUNE, /* 38 */
239 TG_R_DIV, /* 39 */
240 EN_CHP_LIN_B, /* 40 */
Steven Toth52c99bd2008-05-01 04:57:01 -0300241
Steven Toth2637d5b2008-05-01 05:01:31 -0300242 /* Channel Change Control Names */
243 DN_POLY = 51, /* 51 */
244 DN_RFGAIN, /* 52 */
245 DN_CAP_RFLPF, /* 53 */
246 DN_EN_VHFUHFBAR, /* 54 */
247 DN_GAIN_ADJUST, /* 55 */
248 DN_IQTNBUF_AMP, /* 56 */
249 DN_IQTNGNBFBIAS_BST, /* 57 */
250 RFSYN_EN_OUTMUX, /* 58 */
251 RFSYN_SEL_VCO_OUT, /* 59 */
252 RFSYN_SEL_VCO_HI, /* 60 */
253 RFSYN_SEL_DIVM, /* 61 */
254 RFSYN_RF_DIV_BIAS, /* 62 */
255 DN_SEL_FREQ, /* 63 */
256 RFSYN_VCO_BIAS, /* 64 */
257 CHCAL_INT_MOD_RF, /* 65 */
258 CHCAL_FRAC_MOD_RF, /* 66 */
259 RFSYN_LPF_R, /* 67 */
260 CHCAL_EN_INT_RF, /* 68 */
261 TG_LO_DIVVAL, /* 69 */
262 TG_LO_SELVAL, /* 70 */
263 TG_DIV_VAL, /* 71 */
264 TG_VCO_BIAS, /* 72 */
265 SEQ_EXTPOWERUP, /* 73 */
266 OVERRIDE_2, /* 74 */
267 OVERRIDE_3, /* 75 */
268 OVERRIDE_4, /* 76 */
269 SEQ_FSM_PULSE, /* 77 */
270 GPIO_4B, /* 78 */
271 GPIO_3B, /* 79 */
272 GPIO_4, /* 80 */
273 GPIO_3, /* 81 */
274 GPIO_1B, /* 82 */
275 DAC_A_ENABLE, /* 83 */
276 DAC_B_ENABLE, /* 84 */
277 DAC_DIN_A, /* 85 */
278 DAC_DIN_B, /* 86 */
Steven Toth52c99bd2008-05-01 04:57:01 -0300279#ifdef _MXL_PRODUCTION
Steven Toth2637d5b2008-05-01 05:01:31 -0300280 RFSYN_EN_DIV, /* 87 */
281 RFSYN_DIVM, /* 88 */
282 DN_BYPASS_AGC_I2C /* 89 */
Steven Toth52c99bd2008-05-01 04:57:01 -0300283#endif
Steven Toth2637d5b2008-05-01 05:01:31 -0300284} MXL5005_ControlName;
Steven Toth52c99bd2008-05-01 04:57:01 -0300285
Steven Toth2637d5b2008-05-01 05:01:31 -0300286/* End of common.h */
Steven Toth52c99bd2008-05-01 04:57:01 -0300287
Steven Toth2637d5b2008-05-01 05:01:31 -0300288/*
289 * The following context is source code provided by MaxLinear.
290 * MaxLinear source code - Common_MXL.h (?)
291 */
Steven Toth52c99bd2008-05-01 04:57:01 -0300292
Steven Toth2637d5b2008-05-01 05:01:31 -0300293void InitTunerControls(Tuner_struct *Tuner);
294u16 MXL_BlockInit(Tuner_struct *Tuner);
295u16 MXL5005_RegisterInit(Tuner_struct *Tuner);
296u16 MXL5005_ControlInit(Tuner_struct *Tuner);
Steven Toth52c99bd2008-05-01 04:57:01 -0300297#ifdef _MXL_INTERNAL
Steven Toth2637d5b2008-05-01 05:01:31 -0300298u16 MXL5005_MXLControlInit(Tuner_struct *Tuner);
Steven Toth52c99bd2008-05-01 04:57:01 -0300299#endif
300
Steven Toth2637d5b2008-05-01 05:01:31 -0300301u16 MXL5005_TunerConfig(Tuner_struct *Tuner,
302 u8 Mode, /* 0: Analog Mode ; 1: Digital Mode */
303 u8 IF_mode, /* for Analog Mode, 0: zero IF; 1: low IF */
304 u32 Bandwidth, /* filter channel bandwidth (6, 7, 8) */
305 u32 IF_out, /* Desired IF Out Frequency */
306 u32 Fxtal, /* XTAL Frequency */
307 u8 AGC_Mode, /* AGC Mode - Dual AGC: 0, Single AGC: 1 */
308 u16 TOP, /* 0: Dual AGC; Value: take over point */
309 u16 IF_OUT_LOAD, /* IF Out Load Resistor (200 / 300 Ohms) */
310 u8 CLOCK_OUT, /* 0: turn off clock out; 1: turn on clock out */
311 u8 DIV_OUT, /* 4MHz or 16MHz */
312 u8 CAPSELECT, /* 0: disable On-Chip pulling cap; 1: enable */
313 u8 EN_RSSI, /* 0: disable RSSI; 1: enable RSSI */
314 u8 Mod_Type, /* Modulation Type; */
315 /* 0 - Default; 1 - DVB-T; 2 - ATSC; 3 - QAM; 4 - Analog Cable */
316 u8 TF_Type /* Tracking Filter Type */
317 /* 0 - Default; 1 - Off; 2 - Type C; 3 - Type C-H */
318 );
Steven Toth52c99bd2008-05-01 04:57:01 -0300319
Steven Toth2637d5b2008-05-01 05:01:31 -0300320void MXL_SynthIFLO_Calc(Tuner_struct *Tuner);
321void MXL_SynthRFTGLO_Calc(Tuner_struct *Tuner);
322u16 MXL_RegWrite(Tuner_struct *Tuner, u8 RegNum, u8 RegVal);
323u16 MXL_RegRead(Tuner_struct *Tuner, u8 RegNum, u8 *RegVal);
324u16 MXL_ControlWrite(Tuner_struct *Tuner, u16 ControlNum, u32 value);
325u16 MXL_ControlWrite_Group(Tuner_struct *Tuner, u16 ControlNum, u32 value, u16 controlGroup);
326u16 MXL_ControlRead(Tuner_struct *Tuner, u16 ControlNum, u32 * value);
327u16 MXL_ControlRegRead(Tuner_struct *Tuner, u16 ControlNum, u8 *RegNum, int *count);
328void MXL_RegWriteBit(Tuner_struct *Tuner, u8 address, u8 bit, u8 bitVal);
329u16 MXL_IFSynthInit(Tuner_struct * Tuner );
330u16 MXL_TuneRF(Tuner_struct *Tuner, u32 RF_Freq);
331u16 MXL_OverwriteICDefault(Tuner_struct *Tuner);
332u16 MXL_SetGPIO(Tuner_struct *Tuner, u8 GPIO_Num, u8 GPIO_Val);
333u32 MXL_Ceiling(u32 value, u32 resolution);
334u32 MXL_GetXtalInt(u32 Xtal_Freq);
Steven Toth52c99bd2008-05-01 04:57:01 -0300335
Steven Toth2637d5b2008-05-01 05:01:31 -0300336u16 MXL_GetInitRegister(Tuner_struct *Tuner, u8 * RegNum, u8 *RegVal, int *count);
337u16 MXL_GetCHRegister(Tuner_struct *Tuner, u8 * RegNum, u8 *RegVal, int *count);
338u16 MXL_GetCHRegister_ZeroIF(Tuner_struct *Tuner, u8 * RegNum, u8 *RegVal, int *count);
339u16 MXL_GetCHRegister_LowIF(Tuner_struct *Tuner, u8 * RegNum, u8 *RegVal, int *count);
340u16 MXL_GetMasterControl(u8 *MasterReg, int state);
Steven Toth52c99bd2008-05-01 04:57:01 -0300341
342#ifdef _MXL_PRODUCTION
Steven Toth2637d5b2008-05-01 05:01:31 -0300343u16 MXL_VCORange_Test(Tuner_struct *Tuner, int VCO_Range);
344u16 MXL_Hystersis_Test(Tuner_struct *Tuner, int Hystersis);
Steven Toth52c99bd2008-05-01 04:57:01 -0300345#endif
346
Steven Toth2637d5b2008-05-01 05:01:31 -0300347/* Constants */
348#define MXL5005S_REG_WRITING_TABLE_LEN_MAX 104
349#define MXL5005S_LATCH_BYTE 0xfe
Steven Toth52c99bd2008-05-01 04:57:01 -0300350
Steven Toth2637d5b2008-05-01 05:01:31 -0300351/* Register address, MSB, and LSB */
352#define MXL5005S_BB_IQSWAP_ADDR 59
353#define MXL5005S_BB_IQSWAP_MSB 0
354#define MXL5005S_BB_IQSWAP_LSB 0
Steven Toth52c99bd2008-05-01 04:57:01 -0300355
356#define MXL5005S_BB_DLPF_BANDSEL_ADDR 53
357#define MXL5005S_BB_DLPF_BANDSEL_MSB 4
358#define MXL5005S_BB_DLPF_BANDSEL_LSB 3
359
Steven Toth2637d5b2008-05-01 05:01:31 -0300360/* Standard modes */
Steven Toth52c99bd2008-05-01 04:57:01 -0300361enum
362{
363 MXL5005S_STANDARD_DVBT,
364 MXL5005S_STANDARD_ATSC,
365};
366#define MXL5005S_STANDARD_MODE_NUM 2
367
Steven Toth2637d5b2008-05-01 05:01:31 -0300368/* Bandwidth modes */
Steven Toth52c99bd2008-05-01 04:57:01 -0300369enum
370{
371 MXL5005S_BANDWIDTH_6MHZ = 6000000,
372 MXL5005S_BANDWIDTH_7MHZ = 7000000,
373 MXL5005S_BANDWIDTH_8MHZ = 8000000,
374};
375#define MXL5005S_BANDWIDTH_MODE_NUM 3
376
Steven Toth2637d5b2008-05-01 05:01:31 -0300377/* Top modes */
Steven Toth52c99bd2008-05-01 04:57:01 -0300378enum
379{
380 MXL5005S_TOP_5P5 = 55,
381 MXL5005S_TOP_7P2 = 72,
382 MXL5005S_TOP_9P2 = 92,
383 MXL5005S_TOP_11P0 = 110,
384 MXL5005S_TOP_12P9 = 129,
385 MXL5005S_TOP_14P7 = 147,
386 MXL5005S_TOP_16P8 = 168,
387 MXL5005S_TOP_19P4 = 194,
388 MXL5005S_TOP_21P2 = 212,
389 MXL5005S_TOP_23P2 = 232,
390 MXL5005S_TOP_25P2 = 252,
391 MXL5005S_TOP_27P1 = 271,
392 MXL5005S_TOP_29P2 = 292,
393 MXL5005S_TOP_31P7 = 317,
394 MXL5005S_TOP_34P9 = 349,
395};
396
Steven Toth2637d5b2008-05-01 05:01:31 -0300397/* IF output load */
Steven Toth52c99bd2008-05-01 04:57:01 -0300398enum
399{
400 MXL5005S_IF_OUTPUT_LOAD_200_OHM = 200,
401 MXL5005S_IF_OUTPUT_LOAD_300_OHM = 300,
402};
403
Steven Toth2637d5b2008-05-01 05:01:31 -0300404/* MxL5005S extra module alias */
Steven Toth52c99bd2008-05-01 04:57:01 -0300405typedef struct MXL5005S_EXTRA_MODULE_TAG MXL5005S_EXTRA_MODULE;
406
Steven Toth2637d5b2008-05-01 05:01:31 -0300407/* MxL5005S register setting function pointer */
Steven Toth52c99bd2008-05-01 04:57:01 -0300408typedef int
409(*MXL5005S_FP_SET_REGS_WITH_TABLE)(
Steven Toth2637d5b2008-05-01 05:01:31 -0300410 struct dvb_usb_device* dib,
Steven Toth52c99bd2008-05-01 04:57:01 -0300411 TUNER_MODULE *pTuner,
412 unsigned char *pAddrTable,
413 unsigned char *pByteTable,
414 int TableLen
415 );
416
417
Steven Toth2637d5b2008-05-01 05:01:31 -0300418/* MxL5005S register mask bits setting function pointer */
Steven Toth52c99bd2008-05-01 04:57:01 -0300419typedef int
420(*MXL5005S_FP_SET_REG_MASK_BITS)(
Steven Toth2637d5b2008-05-01 05:01:31 -0300421 struct dvb_usb_device* dib,
Steven Toth52c99bd2008-05-01 04:57:01 -0300422 TUNER_MODULE *pTuner,
423 unsigned char RegAddr,
424 unsigned char Msb,
425 unsigned char Lsb,
426 const unsigned char WritingValue
427 );
428
Steven Toth2637d5b2008-05-01 05:01:31 -0300429/* MxL5005S spectrum mode setting function pointer */
Steven Toth52c99bd2008-05-01 04:57:01 -0300430typedef int
431(*MXL5005S_FP_SET_SPECTRUM_MODE)(
Steven Toth2637d5b2008-05-01 05:01:31 -0300432 struct dvb_usb_device* dib,
Steven Toth52c99bd2008-05-01 04:57:01 -0300433 TUNER_MODULE *pTuner,
434 int SpectrumMode
435 );
436
Steven Toth2637d5b2008-05-01 05:01:31 -0300437/* MxL5005S bandwidth setting function pointer */
Steven Toth52c99bd2008-05-01 04:57:01 -0300438typedef int
439(*MXL5005S_FP_SET_BANDWIDTH_HZ)(
440 struct dvb_usb_device* dib,
441 TUNER_MODULE *pTuner,
442 unsigned long BandwidthHz
443 );
444
Steven Toth2637d5b2008-05-01 05:01:31 -0300445/* MxL5005S extra module */
Steven Toth52c99bd2008-05-01 04:57:01 -0300446struct MXL5005S_EXTRA_MODULE_TAG
447{
Steven Toth2637d5b2008-05-01 05:01:31 -0300448 /* MxL5005S function pointers */
Steven Toth52c99bd2008-05-01 04:57:01 -0300449 MXL5005S_FP_SET_REGS_WITH_TABLE SetRegsWithTable;
450 MXL5005S_FP_SET_REG_MASK_BITS SetRegMaskBits;
451 MXL5005S_FP_SET_SPECTRUM_MODE SetSpectrumMode;
452 MXL5005S_FP_SET_BANDWIDTH_HZ SetBandwidthHz;
453
Steven Toth2637d5b2008-05-01 05:01:31 -0300454 /* MxL5005S extra data */
455 unsigned char AgcMasterByte; /* Variable name in MaxLinear source code: AGC_MASTER_BYTE */
Steven Toth52c99bd2008-05-01 04:57:01 -0300456
Steven Toth2637d5b2008-05-01 05:01:31 -0300457 /* MaxLinear defined struct */
Steven Toth52c99bd2008-05-01 04:57:01 -0300458 Tuner_struct MxlDefinedTunerStructure;
459};
Steven Toth2637d5b2008-05-01 05:01:31 -0300460/* End of common_mxl.h (?) */
Steven Toth52c99bd2008-05-01 04:57:01 -0300461
Steven Toth2637d5b2008-05-01 05:01:31 -0300462#endif /* __MXL5005S_H */
Steven Toth52c99bd2008-05-01 04:57:01 -0300463