source: svn/newcon3bcm2_21bu/dst/dhl/src/DHL_FE_Platform_dtqs22ddp101b.c

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 6.5 KB
Line 
1
2/********************************************************************
3        DHL_FE_Platform_dtqs22ddp101b.c
4
5        write by kjkam
6       
7        DTQS22DDP101B µå¶óÀ̹ö¸¦ Áö¿øÇϱâ À§ÇÑ È®Àå¿ë API
8       
9********************************************************************/
10
11#include "DHL_OSAL.h"
12#include "DHL_DBG.h"
13#include "DHL_DEV_Priv.h"
14#include "SemcoMxL601.h"
15#include "LG3305.h"
16
17#include "DHL_FE_Priv.h"
18
19//#include <string.h>
20
21
22#define NUM_TUNER_MAX   1
23
24
25#if COMMENT
26____DBG____(){}
27#endif
28
29//DHL_MODULE("*fe", 0);
30
31
32
33#if COMMENT
34____Global____(){}
35#endif
36
37
38
39#define DTQS22DDP101B_VENDOR_NAME "SSB-"
40#define DTQS22DDP101B_MODEL_NAME "DTQS22DDP101B"
41
42
43static struct {
44        UINT8 tuner_id;
45        UINT8 i2c_id;
46        UINT8 i2c_addr;
47} p_tuner_attr[NUM_TUNER_MAX];
48
49
50#if COMMENT
51____API____(){}
52#endif
53
54
55/* ÃʱâÈ­ Driver API ÇÔ¼ö
56
57        ÀÎÀÚ : I2C Ch.No , Device Addr
58
59        Driver API ·Î ²À! FE_ID, I2C_ID, I2C_Addr À» ³Ñ°ÜÁØ´Ù..
60
61*/
62DHL_RESULT dhl_DTQS22DDP101B_init(tDHL_TunerID id, DHL_BOARD_REV rev, tDHL_DEV_I2C_ID hI2c, 
63        UINT8 i2cAddr)
64{
65        DHL_RESULT dhr = DHL_OK;       
66
67        if(id == 0)
68        {
69                dprint(1, "id : %d, Rev : 0x%04x, I2C_ID : %d, I2C_Addr : 0x%02x, DTQS22DDP101B \r\n",
70                                        id, rev, hI2c, i2cAddr);
71               
72                p_tuner_attr[id].tuner_id=id;
73                p_tuner_attr[id].i2c_id=hI2c;
74                p_tuner_attr[id].i2c_addr=i2cAddr;
75        }
76       
77        return dhr;
78}
79
80
81
82DHL_RESULT dhl_DTQS22DDP101B_open(tDHL_TunerID id, DHL_BOARD_REV rev)
83{
84
85        DHL_RESULT dhr = DHL_OK;
86
87
88        if(id == 0)
89        {
90        }
91       
92
93        return dhr;
94
95}
96
97
98
99DHL_RESULT dhl_DTQS22DDP101B_close(tDHL_TunerID id, DHL_BOARD_REV rev)
100{
101
102        DHL_RESULT dhr = DHL_OK;
103
104
105        if(id == 0)
106        {
107        }
108       
109
110        return dhr;
111
112}
113
114/*  tune start Driver API ÇÔ¼ö
115
116        ÁÖ¾îÁø Á֯ļö(KHz) ·Î Æ©´× µ¿ÀÛ ¼öÇà.
117       
118               
119*/
120DHL_RESULT dhl_DTQS22DDP101B_start(tDHL_TunerID id, DHL_BOARD_REV rev, 
121        UINT32 freqKHz, tDHL_Demod demod, tDHL_DemodExtSettings *settings)
122{
123
124        DHL_RESULT dhr = DHL_OK;
125       
126        if (freqKHz == 0) return DHL_FAIL;
127       
128        if(id == 0)
129        {
130                int mode = -1;
131                static int prev_mode = -1;  // -1 is not defined...
132                int bw = -1;
133               
134                if (demod == eDHL_DEMOD_64QAM || demod == eDHL_DEMOD_256QAM ||
135                    demod == eDHL_DEMOD_QAM_AUTO)
136                {
137                        mode = DIG_J83B;
138                        bw = ANA_TV_DIG_CABLE_BW_6MHz;
139                }
140                else
141                {
142                        mode = DIG_ISDBT_ATSC;
143                        bw = DIG_TERR_BW_6MHz;
144                }
145               
146                if (mode == prev_mode)
147                {
148               
149                        #if ( defined _FE_DTQS22DDP101A_LG ||defined _FE_DTQS22DDP101B_LG ||defined _FE_LGH952F_LG)
150                                LG3305_RepeaterI2C(p_tuner_attr[id].i2c_id, PASS_ON);
151
152                                SemcoMxL601_SetFrequency(0, freqKHz * 1000, bw);
153
154                                LG3305_RepeaterI2C(p_tuner_attr[id].i2c_id, PASS_OFF);
155
156                        #else
157                                Sec_1411xRepeaterEnable();
158
159                                SemcoMxL601_SetFrequency(0, freqKHz * 1000, bw);
160
161                                Sec_1411xRepeaterDisable();
162                                Sec_1411xSoftReset();                   //When a channel is changed  clear
163                        #endif
164                }
165                else
166                {
167                       
168                        #if ( defined _FE_DTQS22DDP101A_LG ||defined _FE_DTQS22DDP101B_LG ||defined _FE_LGH952F_LG)
169                                LG3305_RepeaterI2C(p_tuner_attr[id].i2c_id, PASS_ON);
170
171                                SemcoMxL601_Init(0, mode, 31, IF_44MHz, 11);
172
173                                SemcoMxL601_SetFrequency(0, freqKHz * 1000, bw);
174
175                                LG3305_RepeaterI2C(p_tuner_attr[id].i2c_id, PASS_OFF);
176
177                        #else
178                                Sec_1411xRepeaterEnable();
179                                SemcoMxL601_Init(0, mode, 31, IF_44MHz, 13);    //for default ->ATSC test
180                                Sec_1411xRepeaterDisable();
181                                Sec_1411xSoftReset();
182                               
183                                Sec_1411xRepeaterEnable();
184                                SemcoMxL601_SetFrequency(0, freqKHz * 1000, bw);
185                                Sec_1411xRepeaterDisable();
186                                Sec_1411xSoftReset();                   //When a channel is changed  clear
187                        #endif
188
189                       
190                       
191                       
192                        prev_mode = mode;
193                }
194        }
195//      DHL_OS_Delay(20);
196
197        return dhr;
198
199}
200
201
202/*      tune stop Driver API ÇÔ¼ö
203
204        FE ¿¡ Çѹø tune ¸í·ÉÀ» ³»·Á tune ÀÌ µÇ¸é tune »óŰ¡ À¯ÁöµÈ´Ù.
205        FE ¿¡¼­ Lock üũ¸¦ ÇÏ¿© snr, Lock »óŵîÀ» °¡Áö°í Decoder ´Ü¿¡¼­ È­¸é Ãâ·ÂÀ» ÆÇ´Ü...
206        µû¶ó¼­ stop À» À§ÇØ tune ¼³Á¤°ªÀ» ¹Ù²ÙÁö ¾Ê°í Lock üũ ºÎºÐÀ» disable ÇÏ¿© tune ¾ÈµÈ°Í ó·³
207        º¸À̰ÔÇÔ..
208        ÀÌÀü Lock »óŰªÀº ÃʱâÈ­ ½ÃÅ´..
209       
210       
211*/
212DHL_RESULT dhl_DTQS22DDP101B_stop(tDHL_TunerID id, DHL_BOARD_REV rev)
213{
214        DHL_RESULT dhr = DHL_OK;
215
216        if(id == 0)
217        {
218               
219        }
220
221        return dhr;
222}
223
224
225DHL_RESULT dhl_DTQS22DDP101B_get_sig_info(tDHL_TunerID id, DHL_BOARD_REV rev, 
226        tDHL_SignalStatus selector, UINT32 *pValue)
227{
228
229        DHL_RESULT dhr = DHL_OK;       
230
231        if(id == 0)
232        {
233               
234        } 
235
236        return dhr;
237}
238
239
240DHL_RESULT dhl_DTQS22DDP101B_control(tDHL_TunerID id, DHL_BOARD_REV rev,
241        tDHL_FeControlType selector, UINT32 arg)
242{
243        DHL_RESULT dhr = DHL_OK;
244
245        if(id == 0)
246        {
247                switch(selector) {
248               
249                        default :
250                                dhr = DHL_FAIL_NOT_IMPLEMENTED;
251                                break;
252                }
253        } 
254
255        return dhr;
256}
257
258
259/*
260
261        Device ÀÇ Vendor ¹× Partname ¹Ýȯ..
262
263*/
264DHL_RESULT dhl_DTQS22DDP101B_get_device_info(tDHL_TunerID id, DHL_BOARD_REV rev, 
265        tDHL_TunerDeviceInfo selector, void *pValue)
266{
267        DHL_RESULT dhr = DHL_OK;
268
269        if(id == 0)
270        {
271                if(selector==eDHL_FE_DEV_VENDOR_NAME) {
272                        strcpy((char *)pValue,DTQS22DDP101B_VENDOR_NAME);
273                }
274                else if(selector==eDHL_FE_DEV_MODEL_NAME) {
275                        strncpy((char *)pValue, DTQS22DDP101B_MODEL_NAME, FE_VENDOR_NAME_LEN);
276                        ((char *)pValue)[FE_VENDOR_NAME_LEN-1] = 0;
277                }               
278                else 
279                        return DHL_FAIL_INVALID_PARAM;
280        } // id : 0
281       
282        return dhr;
283}
284
285
286
287
288
289
290
291
292#if COMMENT
293____Test_Code____(){}
294#endif
295
296
297void set_ssb(UINT8 addr, UINT8 value)
298{
299        UINT8 ret;
300
301        #if ( defined _FE_DTQS22DDP101A_LG ||defined _FE_DTQS22DDP101B_LG ||defined _FE_LGH952F_LG)
302                LG3305_RepeaterI2C(p_tuner_attr[0].i2c_id, PASS_ON);
303        #else
304                Sec_1411xRepeaterEnable();
305        #endif
306               
307        Ctrl_WriteRegister(p_tuner_attr[0].i2c_addr / 2, addr, value);
308        Ctrl_ReadRegister(p_tuner_attr[0].i2c_addr / 2, addr, &ret);
309
310        #if ( defined _FE_DTQS22DDP101A_LG ||defined _FE_DTQS22DDP101B_LG ||defined _FE_LGH952F_LG)
311                LG3305_RepeaterI2C(p_tuner_attr[0].i2c_id, PASS_OFF);
312        #else
313                Sec_1411xRepeaterDisable();
314                Sec_1411xSoftReset();                   //When a channel is changed  clear
315        #endif
316       
317        DHL_OS_Printf("%#04x = %#04x\n", addr, ret);           
318}
319
320void get_ssb(UINT8 addr)
321{
322        UINT8 ret;
323       
324        #if ( defined _FE_DTQS22DDP101A_LG ||defined _FE_DTQS22DDP101B_LG ||defined _FE_LGH952F_LG)     
325                LG3305_RepeaterI2C(p_tuner_attr[0].i2c_id, PASS_ON);
326        #else
327                Sec_1411xRepeaterEnable();
328        #endif
329       
330        Ctrl_ReadRegister(p_tuner_attr[0].i2c_addr / 2, addr, &ret);
331       
332        #if ( defined _FE_DTQS22DDP101A_LG ||defined _FE_DTQS22DDP101B_LG ||defined _FE_LGH952F_LG)     
333                LG3305_RepeaterI2C(p_tuner_attr[0].i2c_id, PASS_OFF);
334        #else
335                Sec_1411xRepeaterDisable();
336                Sec_1411xSoftReset();                   //When a channel is changed  clear
337        #endif
338       
339        DHL_OS_Printf("%#04x = %#04x\n", addr, ret);   
340}
341
342
Note: See TracBrowser for help on using the repository browser.