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