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
|
/**
* $Header:
* (C) Copyright 2001 Philips Semiconductors, All rights reserved
*
* This source code and any compilation or derivative thereof is the sole
* property of Philips Corporation and is provided pursuant to a Software
* License Agreement. This code is the proprietary information of Philips
* Corporation and is confidential in nature. Its use and dissemination by
* any party other than Philips Corporation is strictly limited by the
* confidential information provisions of the Agreement referenced above.
*
* FILE NAME: tmbsl18291local.h
*
* DESCRIPTION: define the object for the TDA18291
*
* DOCUMENT REF: DVP Software Coding Guidelines v1.14
* DVP Board Support Library Architecture Specification v0.5
*
* NOTES:
*/
#ifndef _TMBSL_TDA18291LOCAL_H
#define _TMBSL_TDA18291LOCAL_H
#include "type.h"
/**
* Standard include files:
*/
/* #include "hpi_basictypes.h"
#include "tmdlFe.h"
#include "tmhalFEtypes.h"
#include "dvp.h"
#include "tmbslTuner.h" */
/**
* Project include files:
*/
#ifdef __cplusplus
extern "C"
{
#endif
/**
* Types and defines:
*/
#define TDA18291_BSL_COMP_NUM 1
#define TDA18291_BSL_MAJOR_VER 1
#define TDA18291_BSL_MINOR_VER 0
/* #define AF901X_CAN_TUNER 0x1
#define AF901X_SILICON_TUNER 0x2 */
/**
* ERROR CODES
*
* ++from Max
*/
#define TMBSL_ERR_TUNER_BASE 0x80000000U
#define TM_ERR_BAD_UNIT_NUMBER 0x00000001U
#define TM_ERR_NOT_INITIALIZED 0x00000002U
#define TM_ERR_BAD_PARAMETER 0x00000003U
#define TM_ERR_NOT_SUPPORTED 0x00000004U
#define TM_ERR_IIC_ERR 0x00000005U
typedef enum _tmPowerState_t
{
tmPowerOn = 1,
tmPowerStandby,
tmPowerSuspend,
tmPowerOff
} tmPowerState_t;
/* Invalid unit id */
#define TMBSL_ERR_TUNER_BAD_UNIT_NUMBER \
(TMBSL_ERR_TUNER_BASE + TM_ERR_BAD_UNIT_NUMBER)
/* Component is not initialized */
#define TMBSL_ERR_TUNER_NOT_INITIALIZED \
(TMBSL_ERR_TUNER_BASE+ TM_ERR_NOT_INITIALIZED)
/* Invalid input parameter */
#define TMBSL_ERR_TUNER_BAD_PARAMETER \
(TMBSL_ERR_TUNER_BASE + TM_ERR_BAD_PARAMETER)
/* Function is not supported */
#define TMBSL_ERR_TUNER_NOT_SUPPORTED \
(TMBSL_ERR_TUNER_BASE + TM_ERR_NOT_SUPPORTED)
/* Function is not supported */
#define TMBSL_ERR_IIC_ERR \
(TMBSL_ERR_TUNER_BASE + TM_ERR_IIC_ERR)
#define TDA18291_MAX_UNITS 2
#define TDA18291_NB_REGISTERS 16
#define TDA18291_NB_AGC_RANGES 128
/* Indexes of TDA18291 registers */
#define TDA18291_REG_H00 0x00
#define TDA18291_REG_H01 0x01
#define TDA18291_REG_H02 0x02
#define TDA18291_REG_H03 0x03
#define TDA18291_REG_H04 0x04
#define TDA18291_REG_H05 0x05
#define TDA18291_REG_H06 0x06
#define TDA18291_REG_H07 0x07
#define TDA18291_REG_H08 0x08
#define TDA18291_REG_H09 0x09
#define TDA18291_REG_H0A 0x0A
#define TDA18291_REG_H0B 0x0B
#define TDA18291_REG_H0C 0x0C
#define TDA18291_REG_H0D 0x0D
#define TDA18291_REG_H0E 0x0E
#define TDA18291_REG_H0F 0x0F
#define OM5768_BOARD_DEF 0x57680000 /* 10047 + TDA18281 */
#define CUSTOM_BOARD_DEF 0x00000000 /* custom */
#define CUTOFF_FREQ_FOR_5MHZ 0
#define CUTOFF_FREQ_FOR_6MHZ 1
#define CUTOFF_FREQ_FOR_7MHZ 2
#define CUTOFF_FREQ_FOR_8MHZ 3
typedef float Float;
typedef unsigned long UInt32; /* 32 bit unsigned integer */
typedef unsigned short UInt16; /* 16 bit unsigned integer */
typedef unsigned char UInt8; /* 8 bit unsigned integer */
typedef UInt32 tmErrorCode_t;
typedef unsigned int Bool_; /* Boolean (True/False) */
typedef int tmUnitSelect_t, *ptmUnitSelect_t;
#define Null 0
#define TM_OK 0U /* Global success return status */
#define TM_FALSE 0
#define TM_TRUE 1
#define True TM_TRUE
#define False TM_FALSE
/* +++ from Max */
Bool_ SY_Read2(UInt32 uAddress,
UInt32 uSubAddress,
UInt32 uNbData,
UInt32* pDataBuff
);
Bool_ SY_Write2(UInt32 uAddress,
UInt32 uSubAddress,
UInt32 uNbData,
UInt32* pDataBuff
);
typedef struct _tmhalFEBslSystemFunc_t
{
Bool_ (*SY_Write) (UInt32 uAddress,
UInt32 uSubAddress,
UInt32 uNbData,
UInt32* pDataBuff);
Bool_ (*SY_Read) (UInt32 uAddress,
UInt32 uSubAddress,
UInt32 uNbData,
UInt32* pDataBuff);
} tmhalFEBslSystemFunc_t, *ptmhalFEBslSystemFunc_t;
typedef struct _tmbslTuParam_t
{
unsigned long uHwAddress;
tmhalFEBslSystemFunc_t systemFunc;
} tmbslTuParam_t, *ptmbslTuParam_t;
typedef struct tmSWVersion
{
UInt32 compatibilityNr; /* Interface compatibility number */
UInt32 majorVersionNr; /* Interface major version number */
UInt32 minorVersionNr; /* Interface minor version number */
} tmSWVersion_t, *ptmSWVersion_t;
#if 0
typedef enum _tmTDA18281StandardMode_t {
tmDigital_TV_ATSC_6MHz, /* Digital TV ATSC 6MHz */
tmDigital_TV_DVBT_7MHz, /* Digital TV DVB-T 7MHz */
tmDigital_TV_DVBT_8MHz, /* Digital TV DVB-T 8MHz */
tmAnalog_TV_MN, /* Analog TV M/N */
tmAnalog_TV_B, /* Analog TV B */
tmAnalog_TV_GH, /* Analog TV G/H */
tmAnalog_TV_I, /* Analog TV I */
tmAnalog_TV_DK, /* Analog TV D/K */
tmAnalog_TV_L, /* Analog TV L */
tmAnalog_TV_LL, /* Analog TV L' */
tmAnalog_FM_Radio, /* Analog FM Radio */
tmDigital_TV_QAM_6MHz, /* Digital TV QAM 6MHz */
tmDigital_TV_QAM_8MHz, /* Digital TV QAM 8MHz */
tmStandardNotSupported, /* Not supported standard */
} tmTDA18281StandardMode_t, *ptmTDA18281StandardMode_t;
#endif
typedef enum _tm18291cfgIndex_t {
BOARD = 0,
FEINIT = 100,
GETNBOFUNIT = 200,
AGC_BUS_ENABLE = 208,
AGC_EXT,
AGC_GAIN_INDEX,
AGC_GAIN_VALUE,
LO_XTAL_FREQ_INDEX,
LO_XTAL_FREQ_VALUE,
XTAL_MODE,
ENABLE_LNA,
CUT_OFF_IND,
BANDWIDTH = 300,
GETLEVEL = 301,
SET_CUTOFF_FREQ = 302
} tm18291cfgIndex_t;
typedef struct _tm18291agcMap_t {
UInt32 uGain; /* Actual value of Gain (equals (AGC1 + AGC2 + 6.5) * 10 ) */
UInt32 uAGC_BB; /* Digit of 9 bits to write in reg and */
/* corresponding to AGC1[2] to AGC1[0] AGC2[5] to AGC2[0] */
} tm18291agcMap_t, *ptm18291agcMap_t;
typedef struct _tm18291config_t {
UInt32 uBoard;
UInt32 Nb;
UInt32 Index;
tm18291agcMap_t Map[TDA18291_NB_AGC_RANGES];
} tm18291config_t, *ptm18291config_t;
typedef struct _tm18291I2CData_t {
UInt32 h00;
UInt32 h01;
UInt32 h02;
UInt32 h03;
UInt32 h04;
UInt32 h05;
UInt32 h06;
UInt32 h07;
UInt32 h08;
UInt32 h09;
UInt32 h0A;
UInt32 h0B;
UInt32 h0C;
UInt32 h0D;
UInt32 h0E;
UInt32 h0F;
} tm18291I2CData_t, *ptm18291I2CData_t;
typedef struct _tm18291UserData_t {
UInt8 FlagI2CWrite; /* FlagI2CWrite = 1; */
UInt8 FlagPLLCalculateNandK; /* FlagPLLCalculateNandK = 1; */
UInt32 AGCBB;
UInt8 AGCBusEn; /* AGCBusEn [*] AGC control via I2C bus */
UInt8 AGCext; /* AGCext [*] AGC control via dedicated pin */
UInt32 AGCGain; /* AGCGain [*] AGC gain [AGCGain = (AGCgain + 6.5) * 10] */
UInt8 FC; /* FC [*] Cutt off frequency */
UInt32 Flo_max08;
UInt32 Flo_max09;
UInt32 Flo_max10;
UInt32 Flo_max11;
UInt32 Flo_max12;
UInt32 Flo_max13;
UInt32 Flo_max14;
UInt32 Flo_max15;
UInt8 h03b5;
UInt8 h04b3tob0;
UInt8 h09b7tob6;
UInt8 h0Ab1tob0;
UInt8 h0Ab7;
UInt8 h0Bb7tob6;
UInt8 h0C;
UInt8 h0D;
UInt8 h0E;
UInt8 h0F;
UInt32 LO_Frac;
UInt32 LO_Int;
UInt8 LO_Postdiv;
UInt8 LO_Presc;
UInt32 LO_VCOFreq;
UInt32 LO_XTALFreq; /* 52MHz or 26 MHz or other values. See gTableXtalFreq */
UInt8 PDIC;
UInt8 PDIF;
UInt8 PDRefBuff;
UInt8 PDRF;
UInt8 PDSYNTH;
UInt8 PDVCO;
UInt8 PD_Xtout;
UInt8 Ref_Freq;
UInt8 Enable_LNA;
UInt8 CutOffIndex;
} tm18291UserData_t, *ptm18291UserData_t;
typedef struct _tmAFAInfo_t {
Demodulator* demodulator;
UInt8 chip;
} tmAFAInfo_t, *ptmAFAInfo_t;
typedef struct _tm18291object_t {
tmAFAInfo_t AFAInfo;
Bool_ init;
UInt32 uHwAddress;
tmhalFEBslSystemFunc_t systemFunc;
tmPowerState_t curPowerState;
tm18291config_t config;
UInt32 pTunerReg[TDA18291_NB_REGISTERS];
UInt32 LO_FreqProg;
UInt32 uTickEnd;
tm18291UserData_t UserData;
} tm18291object_t, *ptm18291object_t;
/**
* Global data:
*/
static UInt32 gTableXtalFreq[] =
{
52000,
19200,
26000,
38400
};
static UInt8 gTableCutOffVal[] =
{
3,
2,
1
};
#ifdef __cplusplus
}
#endif
#endif
|