source: svn/newcon3bcm2_21bu/dst/dhl/src/DHL_FE_Platform_dtqs22ddp101a.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.9 KB
Line 
1
2/********************************************************************
3        DHL_FE_Platform_dtqs22ddp101a.c
4
5        write by kjkam
6       
7        DTQS22DDP101A µå¶óÀ̹ö¸¦ Áö¿øÇϱâ À§ÇÑ È®Àå¿ë API
8       
9********************************************************************/
10
11#include "DHL_OSAL.h"
12#include "DHL_DBG.h"
13#include "DHL_DEV_Priv.h"
14#include "SemcoMXL201.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 DTQS22DDP101A_VENDOR_NAME "SSA-"
40#define DTQS22DDP101A_MODEL_NAME "DTQS22DDP101A"
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_DTQS22DDP101A_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, DTQS22DDP101A \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_DTQS22DDP101A_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_DTQS22DDP101A_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_DTQS22DDP101A_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                MxL201RF_Mode mode = 0;
131                static MxL201RF_Mode prev_mode = 0;  // 0 is not defined...
132                static MxL201RF_TunerConfigS myTuner; 
133               
134                if (demod == eDHL_DEMOD_64QAM || demod == eDHL_DEMOD_256QAM ||
135                    demod == eDHL_DEMOD_QAM_AUTO)
136                {
137                        mode = MxL_MODE_CAB_STD;
138                }
139                else
140                {
141                        mode = MxL_MODE_ATSC;
142                }
143               
144                if (mode == prev_mode)
145                {
146                        #if ( defined _FE_DTQS22DDP101A_LG || defined _FE_DTQS22DDP101B_LG || defined _FE_LGH952F_LG)
147                                LG3305_RepeaterI2C(p_tuner_attr[id].i2c_id, PASS_ON);
148                        #else
149                                Sec_1411xRepeaterEnable();
150                        #endif
151                       
152                        myTuner.RF_Freq_Hz = freqKHz * 1000;
153                        SemcoMxL201_RFTune(0, &myTuner, myTuner.RF_Freq_Hz, myTuner.BW_MHz);
154                       
155                        #if (defined _FE_DTQS22DDP101A_LG || defined _FE_DTQS22DDP101B_LG || defined _FE_LGH952F_LG)
156                                LG3305_RepeaterI2C(p_tuner_attr[id].i2c_id, PASS_OFF);
157                        #else
158                                Sec_1411xRepeaterDisable();
159                                Sec_1411xSoftReset();                   //When a channel is changed  clear
160                        #endif
161                }
162                else
163                {
164                        #if (defined _FE_DTQS22DDP101A_LG ||defined _FE_DTQS22DDP101B_LG ||defined _FE_LGH952F_LG)
165                                LG3305_RepeaterI2C(p_tuner_attr[id].i2c_id, PASS_ON);
166                        #else
167                                Sec_1411xRepeaterEnable();
168                        #endif
169                       
170                        myTuner.BW_MHz = MxL_BW_6MHz;
171                        myTuner.ClkOut_Amp = MxL_CLKOUT_AMP_11;
172                        myTuner.ClkOut_Setting = MxL_CLKOUT_DISABLE;
173                        myTuner.I2C_Addr = p_tuner_attr[id].i2c_addr / 2;  //C0
174                        myTuner.IF_Freq = MxL_IF_44_MHZ;
175                        myTuner.IF_Spectrum = MxL_INVERT_IF;
176                        myTuner.Mode = mode;
177                        myTuner.Xtal_Cap = MxL_XTAL_CAP_11_PF;
178                        myTuner.Xtal_Freq = MxL_XTAL_16_MHZ;
179                        myTuner.RF_Freq_Hz = freqKHz * 1000;
180                        SemcoMxL201_Init(0, &myTuner);
181                        SemcoMxL201_RFTune(0, &myTuner, myTuner.RF_Freq_Hz, myTuner.BW_MHz);
182                       
183                        #if (defined _FE_DTQS22DDP101A_LG ||defined _FE_DTQS22DDP101B_LG ||defined _FE_LGH952F_LG)
184                                LG3305_RepeaterI2C(p_tuner_attr[id].i2c_id, PASS_OFF);
185                        #else
186                                Sec_1411xRepeaterDisable();
187                                Sec_1411xSoftReset();                   //When a channel is changed  clear
188                        #endif
189                       
190                        prev_mode = mode;
191                }
192        }
193
194        return dhr;
195
196}
197
198
199/*      tune stop Driver API ÇÔ¼ö
200
201        FE ¿¡ Çѹø tune ¸í·ÉÀ» ³»·Á tune ÀÌ µÇ¸é tune »óŰ¡ À¯ÁöµÈ´Ù.
202        FE ¿¡¼­ Lock üũ¸¦ ÇÏ¿© snr, Lock »óŵîÀ» °¡Áö°í Decoder ´Ü¿¡¼­ È­¸é Ãâ·ÂÀ» ÆÇ´Ü...
203        µû¶ó¼­ stop À» À§ÇØ tune ¼³Á¤°ªÀ» ¹Ù²ÙÁö ¾Ê°í Lock üũ ºÎºÐÀ» disable ÇÏ¿© tune ¾ÈµÈ°Í ó·³
204        º¸À̰ÔÇÔ..
205        ÀÌÀü Lock »óŰªÀº ÃʱâÈ­ ½ÃÅ´..
206       
207       
208*/
209DHL_RESULT dhl_DTQS22DDP101A_stop(tDHL_TunerID id, DHL_BOARD_REV rev)
210{
211        DHL_RESULT dhr = DHL_OK;
212
213        if(id == 0)
214        {
215               
216        }
217
218        return dhr;
219}
220
221
222DHL_RESULT dhl_DTQS22DDP101A_get_sig_info(tDHL_TunerID id, DHL_BOARD_REV rev, 
223        tDHL_SignalStatus selector, UINT32 *pValue)
224{
225
226        DHL_RESULT dhr = DHL_OK;       
227
228        if(id == 0)
229        {
230               
231        } 
232
233        return dhr;
234}
235
236
237DHL_RESULT dhl_DTQS22DDP101A_control(tDHL_TunerID id, DHL_BOARD_REV rev,
238        tDHL_FeControlType selector, UINT32 arg)
239{
240        DHL_RESULT dhr = DHL_OK;
241
242        if(id == 0)
243        {
244                switch(selector) {
245               
246                        default :
247                                dhr = DHL_FAIL_NOT_IMPLEMENTED;
248                                break;
249                }
250        } 
251
252        return dhr;
253}
254
255
256/*
257
258        Device ÀÇ Vendor ¹× Partname ¹Ýȯ..
259
260*/
261DHL_RESULT dhl_DTQS22DDP101A_get_device_info(tDHL_TunerID id, DHL_BOARD_REV rev, 
262        tDHL_TunerDeviceInfo selector, void *pValue)
263{
264        DHL_RESULT dhr = DHL_OK;
265
266        if(id == 0)
267        {
268                if(selector==eDHL_FE_DEV_VENDOR_NAME) {
269                        strcpy((char *)pValue,DTQS22DDP101A_VENDOR_NAME);
270                }
271                else if(selector==eDHL_FE_DEV_MODEL_NAME) {
272                        strncpy((char *)pValue, DTQS22DDP101A_MODEL_NAME, FE_VENDOR_NAME_LEN);
273                        ((char *)pValue)[FE_VENDOR_NAME_LEN-1] = 0;
274                }               
275                else 
276                        return DHL_FAIL_INVALID_PARAM;
277        } // id : 0
278       
279        return dhr;
280}
281
282
283
284
285
286
287
288
289#if COMMENT
290____Test_Code____(){}
291#endif
292
293
294void set_ssa(UINT8 addr, UINT8 value)
295{
296        UINT8 temp[2];
297        UINT8 ret;
298       
299        #if (defined _FE_DTQS22DDP101A_LG ||defined _FE_DTQS22DDP101B_LG ||defined _FE_LGH952F_LG)     
300                LG3305_RepeaterI2C(p_tuner_attr[0].i2c_id, PASS_ON);
301        #else
302                Sec_1411xRepeaterEnable();
303        #endif
304       
305        temp[0] = addr;
306        temp[1] = value;
307        MxL_I2C_Write(p_tuner_attr[0].i2c_addr / 2, temp, 2);
308        MxL_I2C_Read(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_ssa(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        MxL_I2C_Read(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.