summaryrefslogtreecommitdiff
path: root/drivers/media/dvb-frontends/drx39xyj/bsp_tuner.h
blob: e5693d0d5e9b97879e57e76325ee98c37682c200 (plain)
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
/**
* \file $Id: bsp_tuner.h,v 1.5 2009/10/19 22:15:13 dingtao Exp $
*
* \brief Tuner dependable type definitions, macro's and functions
*
*/

/*
* $(c) 2004-2006,2008-2009 Trident Microsystems, Inc. - All rights reserved.
*
* This software and related documentation (the 'Software') are intellectual
* property owned by Trident and are copyright of Trident, unless specifically
* noted otherwise.
*
* Any use of the Software is permitted only pursuant to the terms of the
* license agreement, if any, which accompanies, is included with or applicable
* to the Software ('License Agreement') or upon express written consent of
* Trident. Any copying, reproduction or redistribution of the Software in
* whole or in part by any means not in accordance with the License Agreement
* or as agreed in writing by Trident is expressly prohibited.
*
* THE SOFTWARE IS WARRANTED, IF AT ALL, ONLY ACCORDING TO THE TERMS OF THE
* LICENSE AGREEMENT. EXCEPT AS WARRANTED IN THE LICENSE AGREEMENT THE SOFTWARE
* IS DELIVERED 'AS IS' AND TRIDENT HEREBY DISCLAIMS ALL WARRANTIES AND
* CONDITIONS WITH REGARD TO THE SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
* AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIT
* ENJOYMENT, TITLE AND NON-INFRINGEMENT OF ANY THIRD PARTY INTELLECTUAL
* PROPERTY OR OTHER RIGHTS WHICH MAY RESULT FROM THE USE OR THE INABILITY
* TO USE THE SOFTWARE.
*
* IN NO EVENT SHALL TRIDENT BE LIABLE FOR INDIRECT, INCIDENTAL, CONSEQUENTIAL,
* PUNITIVE, SPECIAL OR OTHER DAMAGES WHATSOEVER INCLUDING WITHOUT LIMITATION,
* DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
* INFORMATION, AND THE LIKE, ARISING OUT OF OR RELATING TO THE USE OF OR THE
* INABILITY TO USE THE SOFTWARE, EVEN IF TRIDENT HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES, EXCEPT PERSONAL INJURY OR DEATH RESULTING FROM
* TRIDENT'S NEGLIGENCE.                                                        $
*
*/

#ifndef __DRXBSP_TUNER_H__
#define __DRXBSP_TUNER_H__
/*------------------------------------------------------------------------------
INCLUDES
------------------------------------------------------------------------------*/
#include "bsp_types.h"
#include "bsp_i2c.h"

#ifdef __cplusplus
extern "C" {
#endif

/*------------------------------------------------------------------------------
DEFINES
------------------------------------------------------------------------------*/


   /* Sub-mode bits should be adjacent and incremental */
#define TUNER_MODE_SUB0    0x0001   /* for sub-mode (e.g. RF-AGC setting) */
#define TUNER_MODE_SUB1    0x0002   /* for sub-mode (e.g. RF-AGC setting) */
#define TUNER_MODE_SUB2    0x0004   /* for sub-mode (e.g. RF-AGC setting) */
#define TUNER_MODE_SUB3    0x0008   /* for sub-mode (e.g. RF-AGC setting) */
#define TUNER_MODE_SUB4    0x0010   /* for sub-mode (e.g. RF-AGC setting) */
#define TUNER_MODE_SUB5    0x0020   /* for sub-mode (e.g. RF-AGC setting) */
#define TUNER_MODE_SUB6    0x0040   /* for sub-mode (e.g. RF-AGC setting) */
#define TUNER_MODE_SUB7    0x0080   /* for sub-mode (e.g. RF-AGC setting) */

#define TUNER_MODE_DIGITAL 0x0100   /* for digital channel (e.g. DVB-T)   */
#define TUNER_MODE_ANALOG  0x0200   /* for analog channel  (e.g. PAL)     */
#define TUNER_MODE_SWITCH  0x0400   /* during channel switch & scanning   */
#define TUNER_MODE_LOCK    0x0800   /* after tuner has locked             */
#define TUNER_MODE_6MHZ    0x1000   /* for 6MHz bandwidth channels        */
#define TUNER_MODE_7MHZ    0x2000   /* for 7MHz bandwidth channels        */
#define TUNER_MODE_8MHZ    0x4000   /* for 8MHz bandwidth channels        */

#define TUNER_MODE_SUB_MAX 8
#define TUNER_MODE_SUBALL  (  TUNER_MODE_SUB0 | TUNER_MODE_SUB1 | \
			      TUNER_MODE_SUB2 | TUNER_MODE_SUB3 | \
			      TUNER_MODE_SUB4 | TUNER_MODE_SUB5 | \
			      TUNER_MODE_SUB6 | TUNER_MODE_SUB7 )

/*------------------------------------------------------------------------------
TYPEDEFS
------------------------------------------------------------------------------*/

typedef u32_t TUNERMode_t;
typedef pu32_t pTUNERMode_t;

typedef char*           TUNERSubMode_t;    /* description of submode */
typedef TUNERSubMode_t *pTUNERSubMode_t;


typedef enum {

   TUNER_LOCKED,
   TUNER_NOT_LOCKED

} TUNERLockStatus_t, *pTUNERLockStatus_t;


typedef struct {

   char           *name;         /* Tuner brand & type name */
   DRXFrequency_t minFreqRF;     /* Lowest  RF input frequency, in kHz */
   DRXFrequency_t maxFreqRF;     /* Highest RF input frequency, in kHz */

   u8_t            subMode;             /* Index to sub-mode in use */
   pTUNERSubMode_t subModeDescriptions; /* Pointer to description of sub-modes*/
   u8_t            subModes;            /* Number of available sub-modes      */

   /* The following fields will be either 0, NULL or FALSE and do not need
      initialisation */
   void           *selfCheck;     /* gives proof of initialization  */
   Bool_t         programmed;     /* only valid if selfCheck is OK  */
   DRXFrequency_t RFfrequency;    /* only valid if programmed       */
   DRXFrequency_t IFfrequency;    /* only valid if programmed       */

   void*          myUserData;     /* pointer to associated demod instance */
   u16_t          myCapabilities; /* value for storing application flags  */

} TUNERCommonAttr_t, *pTUNERCommonAttr_t;


/*
* Generic functions for DRX devices.
*/
typedef struct TUNERInstance_s *pTUNERInstance_t;

typedef DRXStatus_t (*TUNEROpenFunc_t)(         pTUNERInstance_t  tuner );
typedef DRXStatus_t (*TUNERCloseFunc_t)(        pTUNERInstance_t  tuner );

typedef DRXStatus_t (*TUNERSetFrequencyFunc_t)( pTUNERInstance_t  tuner,
						TUNERMode_t       mode,
						DRXFrequency_t    frequency );

typedef DRXStatus_t (*TUNERGetFrequencyFunc_t)( pTUNERInstance_t  tuner,
						TUNERMode_t       mode,
						pDRXFrequency_t   RFfrequency,
						pDRXFrequency_t   IFfrequency );

typedef DRXStatus_t (*TUNERLockStatusFunc_t)(   pTUNERInstance_t  tuner,
						pTUNERLockStatus_t lockStat );

typedef DRXStatus_t (*TUNERi2cWriteReadFunc_t)( pTUNERInstance_t  tuner,
						pI2CDeviceAddr_t  wDevAddr,
						u16_t             wCount,
						pu8_t             wData,
						pI2CDeviceAddr_t  rDevAddr,
						u16_t             rCount,
						pu8_t             rData );

typedef struct
{
   TUNEROpenFunc_t         openFunc;
   TUNERCloseFunc_t        closeFunc;
   TUNERSetFrequencyFunc_t setFrequencyFunc;
   TUNERGetFrequencyFunc_t getFrequencyFunc;
   TUNERLockStatusFunc_t   lockStatusFunc;
   TUNERi2cWriteReadFunc_t i2cWriteReadFunc;

} TUNERFunc_t, *pTUNERFunc_t;

typedef struct TUNERInstance_s {

   I2CDeviceAddr_t      myI2CDevAddr;
   pTUNERCommonAttr_t   myCommonAttr;
   void*                myExtAttr;
   pTUNERFunc_t         myFunct;

} TUNERInstance_t;


/*------------------------------------------------------------------------------
ENUM
------------------------------------------------------------------------------*/

/*------------------------------------------------------------------------------
STRUCTS
------------------------------------------------------------------------------*/


/*------------------------------------------------------------------------------
Exported FUNCTIONS
------------------------------------------------------------------------------*/

DRXStatus_t DRXBSP_TUNER_Open( pTUNERInstance_t tuner );

DRXStatus_t DRXBSP_TUNER_Close( pTUNERInstance_t tuner );

DRXStatus_t DRXBSP_TUNER_SetFrequency( pTUNERInstance_t tuner,
				       TUNERMode_t      mode,
				       DRXFrequency_t   frequency );

DRXStatus_t DRXBSP_TUNER_GetFrequency( pTUNERInstance_t tuner,
				       TUNERMode_t      mode,
				       pDRXFrequency_t  RFfrequency,
				       pDRXFrequency_t  IFfrequency );

DRXStatus_t DRXBSP_TUNER_LockStatus(   pTUNERInstance_t   tuner,
				       pTUNERLockStatus_t lockStat );

DRXStatus_t DRXBSP_TUNER_DefaultI2CWriteRead(   pTUNERInstance_t tuner,
						pI2CDeviceAddr_t wDevAddr,
						u16_t            wCount,
						pu8_t            wData,
						pI2CDeviceAddr_t rDevAddr,
						u16_t            rCount,
						pu8_t            rData);

/*------------------------------------------------------------------------------
THE END
------------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif   /* __DRXBSP_TUNER_H__ */

/* End of file */