mxl5005s.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718
  1. /*
  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. #ifndef __TUNER_MXL5005S_H
  25. #define __TUNER_MXL5005S_H
  26. // The following context is source code provided by MaxLinear.
  27. // MaxLinear source code - Common.h
  28. //#pragma once
  29. typedef unsigned char _u8; // At least 1 Byte
  30. typedef unsigned short _u16; // At least 2 Bytes
  31. typedef signed short _s16;
  32. typedef unsigned long _u32; // At least 4 Bytes
  33. typedef void * HANDLE; // Pointer to memory location
  34. #define TUNER_REGS_NUM 104
  35. #define INITCTRL_NUM 40
  36. #ifdef _MXL_PRODUCTION
  37. #define CHCTRL_NUM 39
  38. #else
  39. #define CHCTRL_NUM 36
  40. #endif
  41. #define MXLCTRL_NUM 189
  42. #define MASTER_CONTROL_ADDR 9
  43. // Enumeration of AGC Mode
  44. typedef enum
  45. {
  46. MXL_DUAL_AGC = 0 ,
  47. MXL_SINGLE_AGC
  48. } AGC_Mode ;
  49. //
  50. // Enumeration of Master Control Register State
  51. //
  52. typedef enum
  53. {
  54. MC_LOAD_START = 1 ,
  55. MC_POWER_DOWN ,
  56. MC_SYNTH_RESET ,
  57. MC_SEQ_OFF
  58. } Master_Control_State ;
  59. //
  60. // Enumeration of MXL5005 Tuner Mode
  61. //
  62. typedef enum
  63. {
  64. MXL_ANALOG_MODE = 0 ,
  65. MXL_DIGITAL_MODE
  66. } Tuner_Mode ;
  67. //
  68. // Enumeration of MXL5005 Tuner IF Mode
  69. //
  70. typedef enum
  71. {
  72. MXL_ZERO_IF = 0 ,
  73. MXL_LOW_IF
  74. } Tuner_IF_Mode ;
  75. //
  76. // Enumeration of MXL5005 Tuner Clock Out Mode
  77. //
  78. typedef enum
  79. {
  80. MXL_CLOCK_OUT_DISABLE = 0 ,
  81. MXL_CLOCK_OUT_ENABLE
  82. } Tuner_Clock_Out ;
  83. //
  84. // Enumeration of MXL5005 Tuner Div Out Mode
  85. //
  86. typedef enum
  87. {
  88. MXL_DIV_OUT_1 = 0 ,
  89. MXL_DIV_OUT_4
  90. } Tuner_Div_Out ;
  91. //
  92. // Enumeration of MXL5005 Tuner Pull-up Cap Select Mode
  93. //
  94. typedef enum
  95. {
  96. MXL_CAP_SEL_DISABLE = 0 ,
  97. MXL_CAP_SEL_ENABLE
  98. } Tuner_Cap_Select ;
  99. //
  100. // Enumeration of MXL5005 Tuner RSSI Mode
  101. //
  102. typedef enum
  103. {
  104. MXL_RSSI_DISABLE = 0 ,
  105. MXL_RSSI_ENABLE
  106. } Tuner_RSSI ;
  107. //
  108. // Enumeration of MXL5005 Tuner Modulation Type
  109. //
  110. typedef enum
  111. {
  112. MXL_DEFAULT_MODULATION = 0 ,
  113. MXL_DVBT,
  114. MXL_ATSC,
  115. MXL_QAM,
  116. MXL_ANALOG_CABLE,
  117. MXL_ANALOG_OTA
  118. } Tuner_Modu_Type ;
  119. //
  120. // Enumeration of MXL5005 Tuner Tracking Filter Type
  121. //
  122. typedef enum
  123. {
  124. MXL_TF_DEFAULT = 0 ,
  125. MXL_TF_OFF,
  126. MXL_TF_C,
  127. MXL_TF_C_H,
  128. MXL_TF_D,
  129. MXL_TF_D_L,
  130. MXL_TF_E,
  131. MXL_TF_F,
  132. MXL_TF_E_2,
  133. MXL_TF_E_NA,
  134. MXL_TF_G
  135. } Tuner_TF_Type ;
  136. //
  137. // MXL5005 Tuner Register Struct
  138. //
  139. typedef struct _TunerReg_struct
  140. {
  141. _u16 Reg_Num ; // Tuner Register Address
  142. _u16 Reg_Val ; // Current sofware programmed value waiting to be writen
  143. } TunerReg_struct ;
  144. //
  145. // MXL5005 Tuner Control Struct
  146. //
  147. typedef struct _TunerControl_struct {
  148. _u16 Ctrl_Num ; // Control Number
  149. _u16 size ; // Number of bits to represent Value
  150. _u16 addr[25] ; // Array of Tuner Register Address for each bit position
  151. _u16 bit[25] ; // Array of bit position in Register Address for each bit position
  152. _u16 val[25] ; // Binary representation of Value
  153. } TunerControl_struct ;
  154. //
  155. // MXL5005 Tuner Struct
  156. //
  157. typedef struct _Tuner_struct
  158. {
  159. _u8 Mode ; // 0: Analog Mode ; 1: Digital Mode
  160. _u8 IF_Mode ; // for Analog Mode, 0: zero IF; 1: low IF
  161. _u32 Chan_Bandwidth ; // filter channel bandwidth (6, 7, 8)
  162. _u32 IF_OUT ; // Desired IF Out Frequency
  163. _u16 IF_OUT_LOAD ; // IF Out Load Resistor (200/300 Ohms)
  164. _u32 RF_IN ; // RF Input Frequency
  165. _u32 Fxtal ; // XTAL Frequency
  166. _u8 AGC_Mode ; // AGC Mode 0: Dual AGC; 1: Single AGC
  167. _u16 TOP ; // Value: take over point
  168. _u8 CLOCK_OUT ; // 0: turn off clock out; 1: turn on clock out
  169. _u8 DIV_OUT ; // 4MHz or 16MHz
  170. _u8 CAPSELECT ; // 0: disable On-Chip pulling cap; 1: enable
  171. _u8 EN_RSSI ; // 0: disable RSSI; 1: enable RSSI
  172. _u8 Mod_Type ; // Modulation Type;
  173. // 0 - Default; 1 - DVB-T; 2 - ATSC; 3 - QAM; 4 - Analog Cable
  174. _u8 TF_Type ; // Tracking Filter Type
  175. // 0 - Default; 1 - Off; 2 - Type C; 3 - Type C-H
  176. // Calculated Settings
  177. _u32 RF_LO ; // Synth RF LO Frequency
  178. _u32 IF_LO ; // Synth IF LO Frequency
  179. _u32 TG_LO ; // Synth TG_LO Frequency
  180. // Pointers to ControlName Arrays
  181. _u16 Init_Ctrl_Num ; // Number of INIT Control Names
  182. TunerControl_struct Init_Ctrl[INITCTRL_NUM] ; // INIT Control Names Array Pointer
  183. _u16 CH_Ctrl_Num ; // Number of CH Control Names
  184. TunerControl_struct CH_Ctrl[CHCTRL_NUM] ; // CH Control Name Array Pointer
  185. _u16 MXL_Ctrl_Num ; // Number of MXL Control Names
  186. TunerControl_struct MXL_Ctrl[MXLCTRL_NUM] ; // MXL Control Name Array Pointer
  187. // Pointer to Tuner Register Array
  188. _u16 TunerRegs_Num ; // Number of Tuner Registers
  189. TunerReg_struct TunerRegs[TUNER_REGS_NUM] ; // Tuner Register Array Pointer
  190. } Tuner_struct ;
  191. typedef enum
  192. {
  193. //
  194. // Initialization Control Names
  195. //
  196. DN_IQTN_AMP_CUT = 1 , // 1
  197. BB_MODE , // 2
  198. BB_BUF , // 3
  199. BB_BUF_OA , // 4
  200. BB_ALPF_BANDSELECT , // 5
  201. BB_IQSWAP , // 6
  202. BB_DLPF_BANDSEL , // 7
  203. RFSYN_CHP_GAIN , // 8
  204. RFSYN_EN_CHP_HIGAIN , // 9
  205. AGC_IF , // 10
  206. AGC_RF , // 11
  207. IF_DIVVAL , // 12
  208. IF_VCO_BIAS , // 13
  209. CHCAL_INT_MOD_IF , // 14
  210. CHCAL_FRAC_MOD_IF , // 15
  211. DRV_RES_SEL , // 16
  212. I_DRIVER , // 17
  213. EN_AAF , // 18
  214. EN_3P , // 19
  215. EN_AUX_3P , // 20
  216. SEL_AAF_BAND , // 21
  217. SEQ_ENCLK16_CLK_OUT , // 22
  218. SEQ_SEL4_16B , // 23
  219. XTAL_CAPSELECT , // 24
  220. IF_SEL_DBL , // 25
  221. RFSYN_R_DIV , // 26
  222. SEQ_EXTSYNTHCALIF , // 27
  223. SEQ_EXTDCCAL , // 28
  224. AGC_EN_RSSI , // 29
  225. RFA_ENCLKRFAGC , // 30
  226. RFA_RSSI_REFH , // 31
  227. RFA_RSSI_REF , // 32
  228. RFA_RSSI_REFL , // 33
  229. RFA_FLR , // 34
  230. RFA_CEIL , // 35
  231. SEQ_EXTIQFSMPULSE , // 36
  232. OVERRIDE_1 , // 37
  233. BB_INITSTATE_DLPF_TUNE, // 38
  234. TG_R_DIV, // 39
  235. EN_CHP_LIN_B , // 40
  236. //
  237. // Channel Change Control Names
  238. //
  239. DN_POLY = 51 , // 51
  240. DN_RFGAIN , // 52
  241. DN_CAP_RFLPF , // 53
  242. DN_EN_VHFUHFBAR , // 54
  243. DN_GAIN_ADJUST , // 55
  244. DN_IQTNBUF_AMP , // 56
  245. DN_IQTNGNBFBIAS_BST , // 57
  246. RFSYN_EN_OUTMUX , // 58
  247. RFSYN_SEL_VCO_OUT , // 59
  248. RFSYN_SEL_VCO_HI , // 60
  249. RFSYN_SEL_DIVM , // 61
  250. RFSYN_RF_DIV_BIAS , // 62
  251. DN_SEL_FREQ , // 63
  252. RFSYN_VCO_BIAS , // 64
  253. CHCAL_INT_MOD_RF , // 65
  254. CHCAL_FRAC_MOD_RF , // 66
  255. RFSYN_LPF_R , // 67
  256. CHCAL_EN_INT_RF , // 68
  257. TG_LO_DIVVAL , // 69
  258. TG_LO_SELVAL , // 70
  259. TG_DIV_VAL , // 71
  260. TG_VCO_BIAS , // 72
  261. SEQ_EXTPOWERUP , // 73
  262. OVERRIDE_2 , // 74
  263. OVERRIDE_3 , // 75
  264. OVERRIDE_4 , // 76
  265. SEQ_FSM_PULSE , // 77
  266. GPIO_4B, // 78
  267. GPIO_3B, // 79
  268. GPIO_4, // 80
  269. GPIO_3, // 81
  270. GPIO_1B, // 82
  271. DAC_A_ENABLE , // 83
  272. DAC_B_ENABLE , // 84
  273. DAC_DIN_A , // 85
  274. DAC_DIN_B , // 86
  275. #ifdef _MXL_PRODUCTION
  276. RFSYN_EN_DIV, // 87
  277. RFSYN_DIVM, // 88
  278. DN_BYPASS_AGC_I2C // 89
  279. #endif
  280. } MXL5005_ControlName ;
  281. // MaxLinear source code - MXL5005_c.h
  282. // MXL5005.h : main header file for the MXL5005 DLL
  283. //
  284. //#pragma once
  285. //#include "Common.h"
  286. #ifdef _MXL_INTERNAL
  287. #include "Common_MXL.h"
  288. #endif
  289. void InitTunerControls( Tuner_struct *Tuner) ;
  290. _u16 MXL_BlockInit( Tuner_struct *Tuner ) ;
  291. _u16 MXL5005_RegisterInit (Tuner_struct * Tuner) ;
  292. _u16 MXL5005_ControlInit (Tuner_struct *Tuner) ;
  293. #ifdef _MXL_INTERNAL
  294. _u16 MXL5005_MXLControlInit(Tuner_struct *Tuner) ;
  295. #endif
  296. _u16 MXL5005_TunerConfig(Tuner_struct *Tuner,
  297. _u8 Mode, // 0: Analog Mode ; 1: Digital Mode
  298. _u8 IF_mode, // for Analog Mode, 0: zero IF; 1: low IF
  299. _u32 Bandwidth, // filter channel bandwidth (6, 7, 8)
  300. _u32 IF_out, // Desired IF Out Frequency
  301. _u32 Fxtal, // XTAL Frequency
  302. _u8 AGC_Mode, // AGC Mode - Dual AGC: 0, Single AGC: 1
  303. _u16 TOP, // 0: Dual AGC; Value: take over point
  304. _u16 IF_OUT_LOAD,// IF Out Load Resistor (200 / 300 Ohms)
  305. _u8 CLOCK_OUT, // 0: turn off clock out; 1: turn on clock out
  306. _u8 DIV_OUT, // 4MHz or 16MHz
  307. _u8 CAPSELECT, // 0: disable On-Chip pulling cap; 1: enable
  308. _u8 EN_RSSI, // 0: disable RSSI; 1: enable RSSI
  309. _u8 Mod_Type, // Modulation Type;
  310. // 0 - Default; 1 - DVB-T; 2 - ATSC; 3 - QAM; 4 - Analog Cable
  311. _u8 TF_Type // Tracking Filter Type
  312. // 0 - Default; 1 - Off; 2 - Type C; 3 - Type C-H
  313. ) ;
  314. void MXL_SynthIFLO_Calc(Tuner_struct *Tuner) ;
  315. void MXL_SynthRFTGLO_Calc(Tuner_struct *Tuner) ;
  316. _u16 MXL_RegWrite(Tuner_struct *Tuner, _u8 RegNum, _u8 RegVal) ;
  317. _u16 MXL_RegRead(Tuner_struct *Tuner, _u8 RegNum, _u8 *RegVal) ;
  318. _u16 MXL_ControlWrite(Tuner_struct *Tuner, _u16 ControlNum, _u32 value) ;
  319. _u16 MXL_ControlWrite_Group(Tuner_struct *Tuner, _u16 ControlNum, _u32 value, _u16 controlGroup) ;
  320. _u16 MXL_ControlRead(Tuner_struct *Tuner, _u16 ControlNum, _u32 * value) ;
  321. _u16 MXL_ControlRegRead(Tuner_struct *Tuner, _u16 ControlNum, _u8 *RegNum, int * count) ;
  322. void MXL_RegWriteBit(Tuner_struct *Tuner, _u8 address, _u8 bit, _u8 bitVal);
  323. _u16 MXL_IFSynthInit( Tuner_struct * Tuner ) ;
  324. _u16 MXL_TuneRF(Tuner_struct *Tuner, _u32 RF_Freq) ;
  325. _u16 MXL_OverwriteICDefault( Tuner_struct *Tuner) ;
  326. _u16 MXL_SetGPIO(Tuner_struct *Tuner, _u8 GPIO_Num, _u8 GPIO_Val) ;
  327. _u32 MXL_Ceiling( _u32 value, _u32 resolution ) ;
  328. _u32 MXL_GetXtalInt(_u32 Xtal_Freq) ;
  329. _u16 MXL_GetInitRegister(Tuner_struct *Tuner, _u8 * RegNum, _u8 *RegVal, int *count) ;
  330. _u16 MXL_GetCHRegister(Tuner_struct *Tuner, _u8 * RegNum, _u8 *RegVal, int *count) ;
  331. _u16 MXL_GetCHRegister_ZeroIF(Tuner_struct *Tuner, _u8 * RegNum, _u8 *RegVal, int *count) ;
  332. _u16 MXL_GetCHRegister_LowIF(Tuner_struct *Tuner, _u8 * RegNum, _u8 *RegVal, int *count) ;
  333. _u16 MXL_GetMasterControl(_u8 *MasterReg, int state) ;
  334. #ifdef _MXL_PRODUCTION
  335. _u16 MXL_VCORange_Test(Tuner_struct *Tuner, int VCO_Range) ;
  336. _u16 MXL_Hystersis_Test(Tuner_struct *Tuner, int Hystersis) ;
  337. #endif
  338. // The following context is MxL5005S tuner API source code
  339. /**
  340. @file
  341. @brief MxL5005S tuner module declaration
  342. One can manipulate MxL5005S tuner through MxL5005S module.
  343. MxL5005S module is derived from tuner module.
  344. */
  345. #include "tuner_base.h"
  346. // Definitions
  347. // Constants
  348. #define MXL5005S_REG_WRITING_TABLE_LEN_MAX 104
  349. #define MXL5005S_LATCH_BYTE 0xfe
  350. // Register address, MSB, and LSB
  351. #define MXL5005S_BB_IQSWAP_ADDR 59
  352. #define MXL5005S_BB_IQSWAP_MSB 0
  353. #define MXL5005S_BB_IQSWAP_LSB 0
  354. #define MXL5005S_BB_DLPF_BANDSEL_ADDR 53
  355. #define MXL5005S_BB_DLPF_BANDSEL_MSB 4
  356. #define MXL5005S_BB_DLPF_BANDSEL_LSB 3
  357. // Standard modes
  358. enum
  359. {
  360. MXL5005S_STANDARD_DVBT,
  361. MXL5005S_STANDARD_ATSC,
  362. };
  363. #define MXL5005S_STANDARD_MODE_NUM 2
  364. // Bandwidth modes
  365. enum
  366. {
  367. MXL5005S_BANDWIDTH_6MHZ = 6000000,
  368. MXL5005S_BANDWIDTH_7MHZ = 7000000,
  369. MXL5005S_BANDWIDTH_8MHZ = 8000000,
  370. };
  371. #define MXL5005S_BANDWIDTH_MODE_NUM 3
  372. // Top modes
  373. enum
  374. {
  375. MXL5005S_TOP_5P5 = 55,
  376. MXL5005S_TOP_7P2 = 72,
  377. MXL5005S_TOP_9P2 = 92,
  378. MXL5005S_TOP_11P0 = 110,
  379. MXL5005S_TOP_12P9 = 129,
  380. MXL5005S_TOP_14P7 = 147,
  381. MXL5005S_TOP_16P8 = 168,
  382. MXL5005S_TOP_19P4 = 194,
  383. MXL5005S_TOP_21P2 = 212,
  384. MXL5005S_TOP_23P2 = 232,
  385. MXL5005S_TOP_25P2 = 252,
  386. MXL5005S_TOP_27P1 = 271,
  387. MXL5005S_TOP_29P2 = 292,
  388. MXL5005S_TOP_31P7 = 317,
  389. MXL5005S_TOP_34P9 = 349,
  390. };
  391. // IF output load
  392. enum
  393. {
  394. MXL5005S_IF_OUTPUT_LOAD_200_OHM = 200,
  395. MXL5005S_IF_OUTPUT_LOAD_300_OHM = 300,
  396. };
  397. /// MxL5005S extra module alias
  398. typedef struct MXL5005S_EXTRA_MODULE_TAG MXL5005S_EXTRA_MODULE;
  399. // MxL5005S register setting function pointer
  400. typedef int
  401. (*MXL5005S_FP_SET_REGS_WITH_TABLE)(
  402. struct dvb_usb_device* dib,
  403. TUNER_MODULE *pTuner,
  404. unsigned char *pAddrTable,
  405. unsigned char *pByteTable,
  406. int TableLen
  407. );
  408. // MxL5005S register mask bits setting function pointer
  409. typedef int
  410. (*MXL5005S_FP_SET_REG_MASK_BITS)(
  411. struct dvb_usb_device* dib,
  412. TUNER_MODULE *pTuner,
  413. unsigned char RegAddr,
  414. unsigned char Msb,
  415. unsigned char Lsb,
  416. const unsigned char WritingValue
  417. );
  418. // MxL5005S spectrum mode setting function pointer
  419. typedef int
  420. (*MXL5005S_FP_SET_SPECTRUM_MODE)(
  421. struct dvb_usb_device* dib,
  422. TUNER_MODULE *pTuner,
  423. int SpectrumMode
  424. );
  425. // MxL5005S bandwidth setting function pointer
  426. typedef int
  427. (*MXL5005S_FP_SET_BANDWIDTH_HZ)(
  428. struct dvb_usb_device* dib,
  429. TUNER_MODULE *pTuner,
  430. unsigned long BandwidthHz
  431. );
  432. // MxL5005S extra module
  433. struct MXL5005S_EXTRA_MODULE_TAG
  434. {
  435. // MxL5005S function pointers
  436. MXL5005S_FP_SET_REGS_WITH_TABLE SetRegsWithTable;
  437. MXL5005S_FP_SET_REG_MASK_BITS SetRegMaskBits;
  438. MXL5005S_FP_SET_SPECTRUM_MODE SetSpectrumMode;
  439. MXL5005S_FP_SET_BANDWIDTH_HZ SetBandwidthHz;
  440. // MxL5005S extra data
  441. unsigned char AgcMasterByte; // Variable name in MaxLinear source code: AGC_MASTER_BYTE
  442. // MaxLinear defined struct
  443. Tuner_struct MxlDefinedTunerStructure;
  444. };
  445. // Builder
  446. void
  447. BuildMxl5005sModule(
  448. TUNER_MODULE **ppTuner,
  449. TUNER_MODULE *pTunerModuleMemory,
  450. MXL5005S_EXTRA_MODULE *pMxl5005sExtraModuleMemory,
  451. BASE_INTERFACE_MODULE *pBaseInterfaceModuleMemory,
  452. I2C_BRIDGE_MODULE *pI2cBridgeModuleMemory,
  453. unsigned char DeviceAddr,
  454. int StandardMode
  455. );
  456. // Manipulaing functions
  457. void
  458. mxl5005s_SetDeviceAddr(
  459. TUNER_MODULE *pTuner,
  460. unsigned char DeviceAddr
  461. );
  462. void
  463. mxl5005s_GetTunerType(
  464. TUNER_MODULE *pTuner,
  465. int *pTunerType
  466. );
  467. int
  468. mxl5005s_GetDeviceAddr(
  469. TUNER_MODULE *pTuner,
  470. unsigned char *pDeviceAddr
  471. );
  472. int
  473. mxl5005s_Initialize(
  474. struct dvb_usb_device* dib,
  475. TUNER_MODULE *pTuner
  476. );
  477. int
  478. mxl5005s_SetRfFreqHz(
  479. struct dvb_usb_device* dib,
  480. TUNER_MODULE *pTuner,
  481. unsigned long RfFreqHz
  482. );
  483. int
  484. mxl5005s_GetRfFreqHz(
  485. struct dvb_usb_device* dib,
  486. TUNER_MODULE *pTuner,
  487. unsigned long *pRfFreqHz
  488. );
  489. // Extra manipulaing functions
  490. int
  491. mxl5005s_SetRegsWithTable(
  492. struct dvb_usb_device* dib,
  493. TUNER_MODULE *pTuner,
  494. unsigned char *pAddrTable,
  495. unsigned char *pByteTable,
  496. int TableLen
  497. );
  498. int
  499. mxl5005s_SetRegMaskBits(
  500. struct dvb_usb_device* dib,
  501. TUNER_MODULE *pTuner,
  502. unsigned char RegAddr,
  503. unsigned char Msb,
  504. unsigned char Lsb,
  505. const unsigned char WritingValue
  506. );
  507. int
  508. mxl5005s_SetSpectrumMode(
  509. struct dvb_usb_device* dib,
  510. TUNER_MODULE *pTuner,
  511. int SpectrumMode
  512. );
  513. int
  514. mxl5005s_SetBandwidthHz(
  515. struct dvb_usb_device* dib,
  516. TUNER_MODULE *pTuner,
  517. unsigned long BandwidthHz
  518. );
  519. // I2C birdge module demod argument setting
  520. void
  521. mxl5005s_SetI2cBridgeModuleTunerArg(
  522. TUNER_MODULE *pTuner
  523. );
  524. #endif