]> Pileus Git - ~andy/linux/blob - drivers/media/common/tuners/mt2063.h
[media] add driver for mt2063
[~andy/linux] / drivers / media / common / tuners / mt2063.h
1 #ifndef __MT2063_H__\r
2 #define __MT2063_H__\r
3 \r
4 #include <linux/dvb/frontend.h>
5 #include "dvb_frontend.h"\r
6 \r
7 //context of mt2063_errordef.h  <Henry> ======================================\r
8 //#################################################################\r
9 //=================================================================\r
10 \r
11 /*\r
12 ** Note to users:  DO NOT EDIT THIS FILE  \r
13 **\r
14 ** If you wish to rename any of the "user defined" bits,\r
15 ** it should be done in the user file that includes this\r
16 ** source file (e.g. mt_userdef.h)\r
17 **\r
18 */\r
19 \r
20 \r
21 \r
22 #define MT2063_ERROR (1 << 31)\r
23 #define MT2063_USER_ERROR (1 << 30)\r
24 \r
25 /*  Macro to be used to check for errors  */\r
26 #define MT2063_IS_ERROR(s) (((s) >> 30) != 0)\r
27 #define MT2063_NO_ERROR(s) (((s) >> 30) == 0)\r
28 \r
29 \r
30 #define MT2063_OK                           (0x00000000)\r
31 \r
32 /*  Unknown error  */\r
33 #define MT2063_UNKNOWN                      (0x80000001)\r
34 \r
35 /*  Error:  Upconverter PLL is not locked  */\r
36 #define MT2063_UPC_UNLOCK                   (0x80000002)\r
37 \r
38 /*  Error:  Downconverter PLL is not locked  */\r
39 #define MT2063_DNC_UNLOCK                   (0x80000004)\r
40 \r
41 /*  Error:  Two-wire serial bus communications error  */\r
42 #define MT2063_COMM_ERR                     (0x80000008)\r
43 \r
44 /*  Error:  Tuner handle passed to function was invalid  */\r
45 #define MT2063_INV_HANDLE                   (0x80000010)\r
46 \r
47 /*  Error:  Function argument is invalid (out of range)  */\r
48 #define MT2063_ARG_RANGE                    (0x80000020)\r
49 \r
50 /*  Error:  Function argument (ptr to return value) was NULL  */\r
51 #define MT2063_ARG_NULL                     (0x80000040)\r
52 \r
53 /*  Error: Attempt to open more than MT_TUNER_CNT tuners  */\r
54 #define MT2063_TUNER_CNT_ERR                (0x80000080)\r
55 \r
56 /*  Error: Tuner Part Code / Rev Code mismatches expected value  */\r
57 #define MT2063_TUNER_ID_ERR                 (0x80000100)\r
58 \r
59 /*  Error: Tuner Initialization failure  */\r
60 #define MT2063_TUNER_INIT_ERR               (0x80000200)\r
61 \r
62 #define MT2063_TUNER_OPEN_ERR               (0x80000400)\r
63 \r
64 /*  User-definable fields (see mt_userdef.h)  */\r
65 #define MT2063_USER_DEFINED1                (0x00001000)\r
66 #define MT2063_USER_DEFINED2                (0x00002000)\r
67 #define MT2063_USER_DEFINED3                (0x00004000)\r
68 #define MT2063_USER_DEFINED4                (0x00008000)\r
69 #define MT2063_USER_MASK                    (0x4000f000)\r
70 #define MT2063_USER_SHIFT                   (12)\r
71 \r
72 /*  Info: Mask of bits used for # of LO-related spurs that were avoided during tuning  */\r
73 #define MT2063_SPUR_CNT_MASK                (0x001f0000)\r
74 #define MT2063_SPUR_SHIFT                   (16)\r
75 \r
76 /*  Info: Tuner timeout waiting for condition  */\r
77 #define MT2063_TUNER_TIMEOUT                (0x00400000)\r
78 \r
79 /*  Info: Unavoidable LO-related spur may be present in the output  */\r
80 #define MT2063_SPUR_PRESENT_ERR                 (0x00800000)\r
81 \r
82 /*  Info: Tuner input frequency is out of range */\r
83 #define MT2063_FIN_RANGE                    (0x01000000)\r
84 \r
85 /*  Info: Tuner output frequency is out of range */\r
86 #define MT2063_FOUT_RANGE                   (0x02000000)\r
87 \r
88 /*  Info: Upconverter frequency is out of range (may be reason for MT_UPC_UNLOCK) */\r
89 #define MT2063_UPC_RANGE                    (0x04000000)\r
90 \r
91 /*  Info: Downconverter frequency is out of range (may be reason for MT_DPC_UNLOCK) */\r
92 #define MT2063_DNC_RANGE                    (0x08000000)\r
93 \r
94 //end of mt2063_errordef.h      \r
95 //=================================================================\r
96 //#################################################################\r
97 //=================================================================\r
98 \r
99 //context of mt2063_userdef.h   <Henry> ======================================\r
100 //#################################################################\r
101 //=================================================================\r
102 /*\r
103 **  Data Types\r
104 */\r
105 #define MT2060_CNT 10\r
106 \r
107 typedef unsigned char   U8Data;         /*  type corresponds to 8 bits      */\r
108 typedef unsigned int    UData_t;        /*  type must be at least 32 bits   */\r
109 typedef int             SData_t;        /*  type must be at least 32 bits   */\r
110 typedef void *          Handle_t;       /*  memory pointer type             */\r
111 //typedef double          FData_t;        /*  floating point data type        */\r
112 \r
113 #define MAX_UDATA         (4294967295)  /*  max value storable in UData_t   */\r
114 \r
115 /*\r
116 ** Define an MTxxxx_CNT macro for each type of tuner that will be built\r
117 ** into your application (e.g., MT2121, MT2060). MT_TUNER_CNT\r
118 ** must be set to the SUM of all of the MTxxxx_CNT macros.\r
119 **\r
120 ** #define MT2050_CNT  (1)\r
121 ** #define MT2060_CNT  (1)\r
122 ** #define MT2111_CNT  (1)\r
123 ** #define MT2121_CNT  (3)\r
124 */\r
125 \r
126 #define MT2063_CNT (1)\r
127 \r
128 #if !defined( MT2063_TUNER_CNT )\r
129 #define MT2063_TUNER_CNT               (1)  /*  total num of MicroTuner tuners  */\r
130 #endif\r
131 #define MT2063_I2C (0xC0)\r
132 \r
133 UData_t MT2063_WriteSub(Handle_t hUserData, \r
134                     UData_t addr, \r
135                     U8Data subAddress, \r
136                     U8Data *pData, \r
137                     UData_t cnt);\r
138 \r
139 \r
140 UData_t MT2063_ReadSub(Handle_t hUserData, \r
141                    UData_t addr, \r
142                    U8Data subAddress, \r
143                    U8Data *pData, \r
144                    UData_t cnt);\r
145 \r
146 \r
147 void MT2063_Sleep(Handle_t hUserData,\r
148               UData_t nMinDelayTime);\r
149 \r
150 \r
151 #if defined(MT2060_CNT)\r
152 #if MT2060_CNT > 0\r
153 UData_t MT2060_TunerGain(Handle_t hUserData,\r
154                      SData_t* pMeas);\r
155 #endif\r
156 #endif\r
157 //end of mt2063_userdef.h\r
158 //=================================================================\r
159 //#################################################################\r
160 //=================================================================\r
161 \r
162 \r
163 //context of mt2063_spruavoid.h <Henry> ======================================\r
164 //#################################################################\r
165 //=================================================================\r
166 /*\r
167 **  Constant defining the version of the following structure\r
168 **  and therefore the API for this code.\r
169 **\r
170 **  When compiling the tuner driver, the preprocessor will\r
171 **  check against this version number to make sure that\r
172 **  it matches the version that the tuner driver knows about.\r
173 */\r
174 /* Version 010201 => 1.21 */\r
175 #define MT2063_AVOID_SPURS_INFO_VERSION 010201\r
176 \r
177 \r
178 /* DECT Frequency Avoidance */\r
179 #define MT2063_DECT_AVOID_US_FREQS      0x00000001\r
180 \r
181 #define MT2063_DECT_AVOID_EURO_FREQS    0x00000002\r
182 \r
183 #define MT2063_EXCLUDE_US_DECT_FREQUENCIES(s) (((s) & MT2063_DECT_AVOID_US_FREQS) != 0)\r
184 \r
185 #define MT2063_EXCLUDE_EURO_DECT_FREQUENCIES(s) (((s) & MT2063_DECT_AVOID_EURO_FREQS) != 0)\r
186 \r
187 \r
188 enum MT2063_DECT_Avoid_Type\r
189 {\r
190     MT2063_NO_DECT_AVOIDANCE = 0,                          /* Do not create DECT exclusion zones.     */\r
191     MT2063_AVOID_US_DECT     = MT2063_DECT_AVOID_US_FREQS,     /* Avoid US DECT frequencies.              */\r
192     MT2063_AVOID_EURO_DECT   = MT2063_DECT_AVOID_EURO_FREQS,   /* Avoid European DECT frequencies.        */\r
193     MT2063_AVOID_BOTH                                      /* Avoid both regions. Not typically used. */\r
194 \r
195 } ;\r
196 \r
197 \r
198 #define MT2063_MAX_ZONES 48\r
199 \r
200 struct MT2063_ExclZone_t;\r
201 \r
202 struct MT2063_ExclZone_t\r
203 {\r
204     UData_t         min_;\r
205     UData_t         max_;\r
206     struct MT2063_ExclZone_t*  next_;\r
207 };\r
208 \r
209 /*\r
210 **  Structure of data needed for Spur Avoidance\r
211 */\r
212 struct MT2063_AvoidSpursData_t\r
213 {\r
214     UData_t nAS_Algorithm;\r
215     UData_t f_ref;\r
216     UData_t f_in;\r
217     UData_t f_LO1;\r
218     UData_t f_if1_Center;\r
219     UData_t f_if1_Request;\r
220     UData_t f_if1_bw;\r
221     UData_t f_LO2;\r
222     UData_t f_out;\r
223     UData_t f_out_bw;\r
224     UData_t f_LO1_Step;\r
225     UData_t f_LO2_Step;\r
226     UData_t f_LO1_FracN_Avoid;\r
227     UData_t f_LO2_FracN_Avoid;\r
228     UData_t f_zif_bw;\r
229     UData_t f_min_LO_Separation;\r
230     UData_t maxH1;\r
231     UData_t maxH2;\r
232     enum MT2063_DECT_Avoid_Type  avoidDECT;\r
233     UData_t bSpurPresent;\r
234     UData_t bSpurAvoided;\r
235     UData_t nSpursFound;\r
236     UData_t nZones;\r
237     struct MT2063_ExclZone_t* freeZones;\r
238     struct MT2063_ExclZone_t* usedZones;\r
239     struct MT2063_ExclZone_t MT2063_ExclZones[MT2063_MAX_ZONES];\r
240 };\r
241 \r
242 UData_t MT2063_RegisterTuner(struct MT2063_AvoidSpursData_t* pAS_Info);\r
243 \r
244 void MT2063_UnRegisterTuner(struct MT2063_AvoidSpursData_t* pAS_Info);\r
245 \r
246 void MT2063_ResetExclZones(struct MT2063_AvoidSpursData_t* pAS_Info);\r
247 \r
248 void MT2063_AddExclZone(struct MT2063_AvoidSpursData_t* pAS_Info,\r
249                     UData_t f_min,\r
250                     UData_t f_max);\r
251 \r
252 UData_t MT2063_ChooseFirstIF(struct MT2063_AvoidSpursData_t* pAS_Info);\r
253 \r
254 UData_t MT2063_AvoidSpurs(Handle_t h,\r
255                      struct MT2063_AvoidSpursData_t* pAS_Info);\r
256 \r
257 UData_t MT2063_AvoidSpursVersion(void);\r
258 \r
259 //end of mt2063_spuravoid.h\r
260 //=================================================================\r
261 //#################################################################\r
262 //=================================================================\r
263 \r
264 \r
265 /*\r
266 **  Values returned by the MT2063's on-chip temperature sensor\r
267 **  to be read/written.\r
268 */\r
269 enum MT2063_Temperature\r
270 {\r
271     MT2063_T_0C = 0,                    /*  Temperature approx 0C           */\r
272     MT2063_T_10C,                       /*  Temperature approx 10C          */\r
273     MT2063_T_20C,                       /*  Temperature approx 20C          */\r
274     MT2063_T_30C,                       /*  Temperature approx 30C          */\r
275     MT2063_T_40C,                       /*  Temperature approx 40C          */\r
276     MT2063_T_50C,                       /*  Temperature approx 50C          */\r
277     MT2063_T_60C,                       /*  Temperature approx 60C          */\r
278     MT2063_T_70C,                       /*  Temperature approx 70C          */\r
279     MT2063_T_80C,                       /*  Temperature approx 80C          */\r
280     MT2063_T_90C,                       /*  Temperature approx 90C          */\r
281     MT2063_T_100C,                      /*  Temperature approx 100C         */\r
282     MT2063_T_110C,                      /*  Temperature approx 110C         */\r
283     MT2063_T_120C,                      /*  Temperature approx 120C         */\r
284     MT2063_T_130C,                      /*  Temperature approx 130C         */\r
285     MT2063_T_140C,                      /*  Temperature approx 140C         */\r
286     MT2063_T_150C,                      /*  Temperature approx 150C         */\r
287 };\r
288 \r
289 \r
290 /*\r
291 ** Parameters for selecting GPIO bits\r
292 */\r
293 enum MT2063_GPIO_Attr\r
294 {\r
295     MT2063_GPIO_IN,\r
296     MT2063_GPIO_DIR,\r
297     MT2063_GPIO_OUT,\r
298 };\r
299 \r
300 enum MT2063_GPIO_ID\r
301 {\r
302     MT2063_GPIO0,\r
303     MT2063_GPIO1,\r
304     MT2063_GPIO2,\r
305 };\r
306 \r
307 \r
308 /*\r
309 **  Parameter for function MT2063_SetExtSRO that specifies the external\r
310 **  SRO drive frequency.\r
311 **\r
312 **  MT2063_EXT_SRO_OFF is the power-up default value.\r
313 */\r
314 enum MT2063_Ext_SRO\r
315 {\r
316     MT2063_EXT_SRO_OFF,                 /*  External SRO drive off          */\r
317     MT2063_EXT_SRO_BY_4,                /*  External SRO drive divide by 4  */\r
318     MT2063_EXT_SRO_BY_2,                /*  External SRO drive divide by 2  */\r
319     MT2063_EXT_SRO_BY_1                 /*  External SRO drive divide by 1  */\r
320 };\r
321 \r
322 \r
323 /*\r
324 **  Parameter for function MT2063_SetPowerMask that specifies the power down\r
325 **  of various sections of the MT2063.\r
326 */\r
327 enum MT2063_Mask_Bits\r
328 {\r
329     MT2063_REG_SD   = 0x0040,   /* Shutdown regulator                 */\r
330     MT2063_SRO_SD   = 0x0020,   /* Shutdown SRO                       */\r
331     MT2063_AFC_SD   = 0x0010,   /* Shutdown AFC A/D                   */\r
332     MT2063_PD_SD    = 0x0002,   /* Enable power detector shutdown     */\r
333     MT2063_PDADC_SD = 0x0001,   /* Enable power detector A/D shutdown */\r
334     MT2063_VCO_SD   = 0x8000,   /* Enable VCO shutdown                */\r
335     MT2063_LTX_SD   = 0x4000,   /* Enable LTX shutdown                */\r
336     MT2063_LT1_SD   = 0x2000,   /* Enable LT1 shutdown                */\r
337     MT2063_LNA_SD   = 0x1000,   /* Enable LNA shutdown                */\r
338     MT2063_UPC_SD   = 0x0800,   /* Enable upconverter shutdown        */\r
339     MT2063_DNC_SD   = 0x0400,   /* Enable downconverter shutdown      */\r
340     MT2063_VGA_SD   = 0x0200,   /* Enable VGA shutdown                */\r
341     MT2063_AMP_SD   = 0x0100,   /* Enable AMP shutdown                */\r
342     MT2063_ALL_SD   = 0xFF73,   /* All shutdown bits for this tuner   */\r
343     MT2063_NONE_SD  = 0x0000    /* No shutdown bits                   */\r
344 };\r
345 \r
346 \r
347 /*\r
348 **  Parameter for function MT2063_GetParam & MT2063_SetParam that\r
349 **  specifies the tuning algorithm parameter to be read/written.\r
350 */\r
351 enum MT2063_Param\r
352 {\r
353     /*  tuner address                                  set by MT2063_Open() */\r
354     MT2063_IC_ADDR,\r
355 \r
356     /*  max number of MT2063 tuners     set by MT_TUNER_CNT in mt_userdef.h */\r
357     MT2063_MAX_OPEN,\r
358 \r
359     /*  current number of open MT2063 tuners           set by MT2063_Open() */\r
360     MT2063_NUM_OPEN,\r
361 \r
362     /*  crystal frequency                            (default: 16000000 Hz) */\r
363     MT2063_SRO_FREQ,\r
364 \r
365     /*  min tuning step size                            (default: 50000 Hz) */\r
366     MT2063_STEPSIZE,\r
367 \r
368     /*  input center frequency                         set by MT2063_Tune() */\r
369     MT2063_INPUT_FREQ,\r
370 \r
371     /*  LO1 Frequency                                  set by MT2063_Tune() */\r
372     MT2063_LO1_FREQ,\r
373 \r
374     /*  LO1 minimum step size                          (default: 250000 Hz) */\r
375     MT2063_LO1_STEPSIZE,\r
376 \r
377     /*  LO1 FracN keep-out region                      (default: 999999 Hz) */\r
378     MT2063_LO1_FRACN_AVOID_PARAM,\r
379 \r
380     /*  Current 1st IF in use                          set by MT2063_Tune() */\r
381     MT2063_IF1_ACTUAL,\r
382 \r
383     /*  Requested 1st IF                               set by MT2063_Tune() */\r
384     MT2063_IF1_REQUEST,\r
385 \r
386     /*  Center of 1st IF SAW filter                (default: 1218000000 Hz) */\r
387     MT2063_IF1_CENTER,\r
388 \r
389     /*  Bandwidth of 1st IF SAW filter               (default: 20000000 Hz) */\r
390     MT2063_IF1_BW,\r
391 \r
392     /*  zero-IF bandwidth                             (default: 2000000 Hz) */\r
393     MT2063_ZIF_BW,\r
394 \r
395     /*  LO2 Frequency                                  set by MT2063_Tune() */\r
396     MT2063_LO2_FREQ,\r
397 \r
398     /*  LO2 minimum step size                           (default: 50000 Hz) */\r
399     MT2063_LO2_STEPSIZE,\r
400 \r
401     /*  LO2 FracN keep-out region                      (default: 374999 Hz) */\r
402     MT2063_LO2_FRACN_AVOID,\r
403 \r
404     /*  output center frequency                        set by MT2063_Tune() */\r
405     MT2063_OUTPUT_FREQ,\r
406 \r
407     /*  output bandwidth                               set by MT2063_Tune() */\r
408     MT2063_OUTPUT_BW,\r
409 \r
410     /*  min inter-tuner LO separation                 (default: 1000000 Hz) */\r
411     MT2063_LO_SEPARATION,\r
412 \r
413     /*  ID of avoid-spurs algorithm in use            compile-time constant */\r
414     MT2063_AS_ALG,\r
415 \r
416     /*  max # of intra-tuner harmonics                       (default: 15)  */\r
417     MT2063_MAX_HARM1,\r
418 \r
419     /*  max # of inter-tuner harmonics                        (default: 7)  */\r
420     MT2063_MAX_HARM2,\r
421 \r
422     /*  # of 1st IF exclusion zones used               set by MT2063_Tune() */\r
423     MT2063_EXCL_ZONES,\r
424 \r
425     /*  # of spurs found/avoided                       set by MT2063_Tune() */\r
426     MT2063_NUM_SPURS,\r
427 \r
428     /*  >0 spurs avoided                               set by MT2063_Tune() */\r
429     MT2063_SPUR_AVOIDED,\r
430 \r
431     /*  >0 spurs in output (mathematically)            set by MT2063_Tune() */\r
432     MT2063_SPUR_PRESENT,\r
433 \r
434     /* Receiver Mode for some parameters. 1 is DVB-T                        */\r
435     MT2063_RCVR_MODE,\r
436 \r
437     /* directly set LNA attenuation, parameter is value to set              */\r
438     MT2063_ACLNA,\r
439 \r
440     /* maximum LNA attenuation, parameter is value to set                   */\r
441     MT2063_ACLNA_MAX,\r
442 \r
443     /* directly set ATN attenuation.  Paremeter is value to set.            */\r
444     MT2063_ACRF,\r
445 \r
446     /* maxium ATN attenuation.  Paremeter is value to set.                  */\r
447     MT2063_ACRF_MAX,\r
448 \r
449     /* directly set FIF attenuation.  Paremeter is value to set.            */\r
450     MT2063_ACFIF,\r
451 \r
452     /* maxium FIF attenuation.  Paremeter is value to set.                  */\r
453     MT2063_ACFIF_MAX,\r
454 \r
455     /*  LNA Rin                                                             */\r
456     MT2063_LNA_RIN,\r
457 \r
458     /*  Power Detector LNA level target                                     */\r
459     MT2063_LNA_TGT,\r
460 \r
461     /*  Power Detector 1 level                                              */\r
462     MT2063_PD1,\r
463 \r
464     /*  Power Detector 1 level target                                       */\r
465     MT2063_PD1_TGT,\r
466 \r
467     /*  Power Detector 2 level                                              */\r
468     MT2063_PD2,\r
469 \r
470     /*  Power Detector 2 level target                                       */\r
471     MT2063_PD2_TGT,\r
472 \r
473     /*  Selects, which DNC is activ                                         */\r
474     MT2063_DNC_OUTPUT_ENABLE,\r
475 \r
476     /*  VGA gain code                                                       */\r
477     MT2063_VGAGC,\r
478 \r
479     /*  VGA bias current                                                    */\r
480     MT2063_VGAOI,\r
481 \r
482     /*  TAGC, determins the speed of the AGC                                */\r
483     MT2063_TAGC,\r
484 \r
485     /*  AMP gain code                                                       */\r
486     MT2063_AMPGC,\r
487 \r
488     /* Control setting to avoid DECT freqs         (default: MT_AVOID_BOTH) */\r
489     MT2063_AVOID_DECT,\r
490 \r
491     /* Cleartune filter selection: 0 - by IC (default), 1 - by software     */\r
492     MT2063_CTFILT_SW,\r
493 \r
494     MT2063_EOP                    /*  last entry in enumerated list         */\r
495 \r
496 };\r
497 \r
498 \r
499 /*\r
500 **  Parameter for selecting tuner mode\r
501 */\r
502 enum MT2063_RCVR_MODES\r
503 {\r
504     MT2063_CABLE_QAM = 0,            /* Digital cable              */\r
505     MT2063_CABLE_ANALOG,             /* Analog cable               */\r
506     MT2063_OFFAIR_COFDM,             /* Digital offair             */\r
507     MT2063_OFFAIR_COFDM_SAWLESS,     /* Digital offair without SAW */\r
508     MT2063_OFFAIR_ANALOG,            /* Analog offair              */\r
509     MT2063_OFFAIR_8VSB,              /* Analog offair              */\r
510     MT2063_NUM_RCVR_MODES\r
511 };\r
512 \r
513 \r
514 /*\r
515 **  Possible values for MT2063_DNC_OUTPUT\r
516 */\r
517 enum MT2063_DNC_Output_Enable{\r
518     MT2063_DNC_NONE = 0,\r
519     MT2063_DNC_1,\r
520     MT2063_DNC_2,\r
521     MT2063_DNC_BOTH\r
522 };\r
523 \r
524 /*\r
525 **  Two-wire serial bus subaddresses of the tuner registers.\r
526 **  Also known as the tuner's register addresses.\r
527 */\r
528 enum MT2063_Register_Offsets\r
529 {\r
530     MT2063_REG_PART_REV = 0,   /*  0x00: Part/Rev Code         */\r
531     MT2063_REG_LO1CQ_1,        /*  0x01: LO1C Queued Byte 1    */\r
532     MT2063_REG_LO1CQ_2,        /*  0x02: LO1C Queued Byte 2    */\r
533     MT2063_REG_LO2CQ_1,        /*  0x03: LO2C Queued Byte 1    */\r
534     MT2063_REG_LO2CQ_2,        /*  0x04: LO2C Queued Byte 2    */\r
535     MT2063_REG_LO2CQ_3,        /*  0x05: LO2C Queued Byte 3    */\r
536     MT2063_REG_RSVD_06,        /*  0x06: Reserved              */\r
537     MT2063_REG_LO_STATUS,      /*  0x07: LO Status             */\r
538     MT2063_REG_FIFFC,          /*  0x08: FIFF Center           */\r
539     MT2063_REG_CLEARTUNE,      /*  0x09: ClearTune Filter      */\r
540     MT2063_REG_ADC_OUT,        /*  0x0A: ADC_OUT               */\r
541     MT2063_REG_LO1C_1,         /*  0x0B: LO1C Byte 1           */\r
542     MT2063_REG_LO1C_2,         /*  0x0C: LO1C Byte 2           */\r
543     MT2063_REG_LO2C_1,         /*  0x0D: LO2C Byte 1           */\r
544     MT2063_REG_LO2C_2,         /*  0x0E: LO2C Byte 2           */\r
545     MT2063_REG_LO2C_3,         /*  0x0F: LO2C Byte 3           */\r
546     MT2063_REG_RSVD_10,        /*  0x10: Reserved              */\r
547     MT2063_REG_PWR_1,          /*  0x11: PWR Byte 1            */\r
548     MT2063_REG_PWR_2,          /*  0x12: PWR Byte 2            */\r
549     MT2063_REG_TEMP_STATUS,    /*  0x13: Temp Status           */\r
550     MT2063_REG_XO_STATUS,      /*  0x14: Crystal Status        */\r
551     MT2063_REG_RF_STATUS,      /*  0x15: RF Attn Status        */\r
552     MT2063_REG_FIF_STATUS,     /*  0x16: FIF Attn Status       */\r
553     MT2063_REG_LNA_OV,         /*  0x17: LNA Attn Override     */\r
554     MT2063_REG_RF_OV,          /*  0x18: RF Attn Override      */\r
555     MT2063_REG_FIF_OV,         /*  0x19: FIF Attn Override     */\r
556     MT2063_REG_LNA_TGT,        /*  0x1A: Reserved              */\r
557     MT2063_REG_PD1_TGT,        /*  0x1B: Pwr Det 1 Target      */\r
558     MT2063_REG_PD2_TGT,        /*  0x1C: Pwr Det 2 Target      */\r
559     MT2063_REG_RSVD_1D,        /*  0x1D: Reserved              */\r
560     MT2063_REG_RSVD_1E,        /*  0x1E: Reserved              */\r
561     MT2063_REG_RSVD_1F,        /*  0x1F: Reserved              */\r
562     MT2063_REG_RSVD_20,        /*  0x20: Reserved              */\r
563     MT2063_REG_BYP_CTRL,       /*  0x21: Bypass Control        */\r
564     MT2063_REG_RSVD_22,        /*  0x22: Reserved              */\r
565     MT2063_REG_RSVD_23,        /*  0x23: Reserved              */\r
566     MT2063_REG_RSVD_24,        /*  0x24: Reserved              */\r
567     MT2063_REG_RSVD_25,        /*  0x25: Reserved              */\r
568     MT2063_REG_RSVD_26,        /*  0x26: Reserved              */\r
569     MT2063_REG_RSVD_27,        /*  0x27: Reserved              */\r
570     MT2063_REG_FIFF_CTRL,      /*  0x28: FIFF Control          */\r
571     MT2063_REG_FIFF_OFFSET,    /*  0x29: FIFF Offset           */\r
572     MT2063_REG_CTUNE_CTRL,     /*  0x2A: Reserved              */\r
573     MT2063_REG_CTUNE_OV,       /*  0x2B: Reserved              */\r
574     MT2063_REG_CTRL_2C,        /*  0x2C: Reserved              */\r
575     MT2063_REG_FIFF_CTRL2,     /*  0x2D: Fiff Control          */\r
576     MT2063_REG_RSVD_2E,        /*  0x2E: Reserved              */\r
577     MT2063_REG_DNC_GAIN,       /*  0x2F: DNC Control           */\r
578     MT2063_REG_VGA_GAIN,       /*  0x30: VGA Gain Ctrl         */\r
579     MT2063_REG_RSVD_31,        /*  0x31: Reserved              */\r
580     MT2063_REG_TEMP_SEL,       /*  0x32: Temperature Selection */\r
581     MT2063_REG_RSVD_33,        /*  0x33: Reserved              */\r
582     MT2063_REG_RSVD_34,        /*  0x34: Reserved              */\r
583     MT2063_REG_RSVD_35,        /*  0x35: Reserved              */\r
584     MT2063_REG_RSVD_36,        /*  0x36: Reserved              */\r
585     MT2063_REG_RSVD_37,        /*  0x37: Reserved              */\r
586     MT2063_REG_RSVD_38,        /*  0x38: Reserved              */\r
587     MT2063_REG_RSVD_39,        /*  0x39: Reserved              */\r
588     MT2063_REG_RSVD_3A,        /*  0x3A: Reserved              */\r
589     MT2063_REG_RSVD_3B,        /*  0x3B: Reserved              */\r
590     MT2063_REG_RSVD_3C,        /*  0x3C: Reserved              */\r
591     MT2063_REG_END_REGS\r
592 };\r
593 \r
594 struct MT2063_Info_t\r
595 {\r
596     Handle_t    handle;\r
597     Handle_t    hUserData;\r
598     UData_t     address;\r
599     UData_t     version;\r
600     UData_t     tuner_id;\r
601     struct MT2063_AvoidSpursData_t AS_Data;\r
602     UData_t     f_IF1_actual;\r
603     UData_t     rcvr_mode;\r
604     UData_t     ctfilt_sw;\r
605     UData_t     CTFiltMax[31];\r
606     UData_t     num_regs;\r
607     U8Data      reg[MT2063_REG_END_REGS];\r
608 } ;\r
609 typedef struct MT2063_Info_t* pMT2063_Info_t;\r
610 \r
611 enum MTTune_atv_standard{\r
612         MTTUNEA_UNKNOWN = 0,\r
613         MTTUNEA_PAL_B,\r
614         MTTUNEA_PAL_G,\r
615         MTTUNEA_PAL_I,\r
616         MTTUNEA_PAL_L,\r
617         MTTUNEA_PAL_MN,\r
618         MTTUNEA_PAL_DK,\r
619         MTTUNEA_DIGITAL,\r
620         MTTUNEA_FMRADIO,\r
621         MTTUNEA_DVBC,\r
622         MTTUNEA_DVBT\r
623 };\r
624 \r
625 /* ====== Functions which are declared in MT2063.c File ======= */\r
626 \r
627 UData_t MT2063_Open(UData_t MT2063_Addr,\r
628                     Handle_t* hMT2063,\r
629                     Handle_t hUserData);\r
630 \r
631 \r
632 UData_t MT2063_Close(Handle_t hMT2063);\r
633 \r
634 UData_t MT2063_Tune(Handle_t h,\r
635                     UData_t f_in);    /* RF input center frequency   */\r
636 \r
637 UData_t MT2063_GetGPIO(Handle_t h, enum MT2063_GPIO_ID gpio_id, enum MT2063_GPIO_Attr attr, UData_t* value);\r
638 \r
639 \r
640 UData_t MT2063_GetLocked(Handle_t h);\r
641 \r
642 \r
643 UData_t MT2063_GetParam(Handle_t     h,\r
644                         enum MT2063_Param param,\r
645                         UData_t*     pValue);\r
646 \r
647 \r
648 UData_t MT2063_GetReg(Handle_t h,\r
649                       U8Data   reg,\r
650                       U8Data*  val);\r
651 \r
652 \r
653 UData_t MT2063_GetTemp(Handle_t h, enum MT2063_Temperature* value);\r
654 \r
655 \r
656 UData_t MT2063_GetUserData(Handle_t h,\r
657                            Handle_t* hUserData);\r
658 \r
659 UData_t MT2063_ReInit(Handle_t h);\r
660 \r
661 \r
662 UData_t MT2063_SetGPIO(Handle_t h, enum MT2063_GPIO_ID gpio_id, enum MT2063_GPIO_Attr attr, UData_t value);\r
663 \r
664 UData_t MT2063_SetParam(Handle_t     h,\r
665                         enum MT2063_Param param,\r
666                         UData_t      nValue);\r
667 \r
668 \r
669 UData_t MT2063_SetPowerMaskBits(Handle_t h, enum MT2063_Mask_Bits Bits);\r
670 \r
671 UData_t MT2063_ClearPowerMaskBits(Handle_t h, enum MT2063_Mask_Bits Bits);\r
672 \r
673 UData_t MT2063_GetPowerMaskBits(Handle_t h, enum MT2063_Mask_Bits *Bits);\r
674 \r
675 UData_t MT2063_EnableExternalShutdown(Handle_t h, U8Data Enabled);\r
676 \r
677 UData_t MT2063_SoftwareShutdown(Handle_t h, U8Data Shutdown);\r
678 \r
679 UData_t MT2063_SetExtSRO(Handle_t h, enum MT2063_Ext_SRO Ext_SRO_Setting);\r
680 \r
681 UData_t MT2063_SetReg(Handle_t h,\r
682                       U8Data   reg,\r
683                       U8Data   val);\r
684 \r
685 UData_t MT_Tune_atv(Handle_t h, UData_t f_in,UData_t bw_in, enum MTTune_atv_standard tv_type); \r
686 \r
687 \r
688 \r
689 struct mt2063_config {\r
690         u8      tuner_address;
691         u32     refclock;
692 };
693
694 struct mt2063_state {\r
695         struct i2c_adapter *i2c;
696
697         const struct mt2063_config      *config;\r
698         struct dvb_tuner_ops            ops;
699         struct dvb_frontend             *frontend;
700         struct tuner_state              status;
701         const struct MT2063_Info_t      *MT2063_ht;\r
702         enum Bool_t                     MT2063_init;\r
703         \r
704         enum MTTune_atv_standard tv_type;\r
705         u32 frequency;
706         u32 srate;
707         u32 bandwidth;
708         u32 reference;
709 };\r
710 \r
711 #if defined(CONFIG_DVB_MT2063) || (defined(CONFIG_DVB_MT2063_MODULE) && defined(MODULE))\r
712
713 extern struct dvb_frontend *mt2063_attach(struct dvb_frontend *fe,\r
714                                            struct mt2063_config *config,\r
715                                            struct i2c_adapter *i2c);
716
717 #else
718
719 static inline struct dvb_frontend *mt2063_attach(struct dvb_frontend *fe,\r
720                                                   struct mt2063_config *config,\r
721                                                   struct i2c_adapter *i2c)
722 {
723         printk(KERN_WARNING "%s: Driver disabled by Kconfig\n", __func__);
724         return NULL;
725 }
726
727 #endif //CONFIG_DVB_MT2063\r
728 \r
729 #endif  //__MT2063_H__\r