source: svn/newcon3bcm2_21bu/magnum/portinginterface/tnr/7552ob/btnr_ob_tune.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: 16.9 KB
Line 
1
2/***************************************************************************
3 *     (c)2005-2011 Broadcom Corporation
4 *
5 *  This program is the proprietary software of Broadcom Corporation and/or its licensors,
6 *  and may only be used, duplicated, modified or distributed pursuant to the terms and
7 *  conditions of a separate, written license agreement executed between you and Broadcom
8 *  (an "Authorized License").  Except as set forth in an Authorized License, Broadcom grants
9 *  no license (express or implied), right to use, or waiver of any kind with respect to the
10 *  Software, and Broadcom expressly reserves all rights in and to the Software and all
11 *  intellectual property rights therein.  IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU
12 *  HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY
13 *  NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE SOFTWARE.
14 *
15 *  Except as expressly set forth in the Authorized License,
16 *
17 *  1.     This program, including its structure, sequence and organization, constitutes the valuable trade
18 *  secrets of Broadcom, and you shall use all reasonable efforts to protect the confidentiality thereof,
19 *  and to use this information only in connection with your use of Broadcom integrated circuit products.
20 *
21 *  2.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
22 *  AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR
23 *  WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
24 *  THE SOFTWARE.  BROADCOM SPECIFICALLY DISCLAIMS ANY AND ALL IMPLIED WARRANTIES
25 *  OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE,
26 *  LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION
27 *  OR CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF
28 *  USE OR PERFORMANCE OF THE SOFTWARE.
29 *
30 *  3.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR ITS
31 *  LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT, OR
32 *  EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY RELATING TO YOUR
33 *  USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF BROADCOM HAS BEEN ADVISED OF
34 *  THE POSSIBILITY OF SUCH DAMAGES; OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT
35 *  ACTUALLY PAID FOR THE SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE
36 *  LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF
37 *  ANY LIMITED REMEDY.
38 *
39 * $brcm_Workfile: btnr_ob_tune.c $
40 * $brcm_Revision: Hydra_Software_Devel/4 $
41 * $brcm_Date: 12/14/11 2:49p $
42 *
43 * [File Description:]
44 *
45 * Revision History:
46 *
47 * $brcm_Log: /magnum/portinginterface/tnr/7552ob/btnr_ob_tune.c $
48 *
49 * Hydra_Software_Devel/4   12/14/11 2:49p farshidf
50 * SW7552-170: remove the tuner power hard code values
51 *
52 * Hydra_Software_Devel/3   12/13/11 5:49p farshidf
53 * SW7552-170: temp code to get it working
54 *
55 * Hydra_Software_Devel/2   12/9/11 3:17p farshidf
56 * SW7552-170: update the Tuner code
57 *
58 * Hydra_Software_Devel/1   12/8/11 11:27p farshidf
59 * SW7552-170: first version of OOB tuner for B0 verification
60 *
61 ***************************************************************************/
62#include "bstd.h"
63#include "bkni.h"
64#include "btmr.h"
65#include "btnr.h"
66#include "bdbg.h"
67#include "btnr_priv.h"
68#include "btnr_ob_3x7x_priv.h"
69#include "btnr_ob_tune.h"
70#include "bmth.h"
71#include "bchp_ufe_afe.h"
72#include "bchp_sdadc.h"
73#include "bchp_ufe.h"
74
75#define abs(x) ((x)<0?-(x):(x))
76
77BDBG_MODULE(btnr_ob_tune);
78/******************************************************************************
79 BTNR_Ob_P_CalFlashSDADC() - calibrate SD ADC flash
80******************************************************************************/
81void BTNR_Ob_P_CalFlashSDADC(BTNR_Ob_3x7x_Handle h)
82{
83        uint8_t idx;
84        uint32_t ICalOffset, QCalOffset;
85        uint8_t statusIch, statusQch=0;
86
87                        BDBG_MSG(("BTNR_Ob_P_CalFlashSDADC\n"));
88        /*I Channel Calibration*/
89        BREG_WriteField(h->hRegister, SDADC_CTRL_ICH, i_Ich_flash_resetCal, 0x1);
90        BREG_WriteField(h->hRegister, SDADC_CTRL_RESET, i_Ich_reset, 0x1);
91        BREG_WriteField(h->hRegister, SDADC_CTRL_ICH, i_Ich_flash_resetCal, 0x0);
92        BREG_WriteField(h->hRegister, SDADC_CTRL_ICH, i_Ich_flash_cal_on, 0x1);
93
94        /*Q Channel Calibration*/
95    BREG_WriteField(h->hRegister, SDADC_CTRL_QCH, i_Qch_flash_resetCal, 0x1);
96        BREG_WriteField(h->hRegister, SDADC_CTRL_RESET, i_Qch_reset, 0x1);
97    BREG_WriteField(h->hRegister, SDADC_CTRL_QCH, i_Qch_flash_resetCal, 0x0);
98    BREG_WriteField(h->hRegister, SDADC_CTRL_QCH, i_Qch_flash_cal_on, 0x1);
99
100        for (statusIch=0, idx =0; (idx<2) && ( !(statusIch) || !(statusQch) ) ;idx++){
101                BKNI_Sleep(1);
102                statusIch = BREG_ReadField(h->hRegister,SDADC_STATUS_ICH, o_Ich_flash_cal_done);
103                statusQch = BREG_ReadField(h->hRegister,SDADC_STATUS_QCH, o_Qch_flash_cal_done);
104        }
105       
106        switch (statusIch)
107        {
108        case 0 : BDBG_MSG(("SDADC I channel calibration NOT done"));
109                         if (idx>99){
110                                 BDBG_ERR(("SDADC I channel calibration timeout"));
111                                 }
112                         break;
113        case 1 : BDBG_MSG(("SDADC I channel calibrationis done")); break;
114        default :BDBG_ERR(("ERROR!!! INVALID SDADC I Channel Calibration Value: value is %d",statusIch)); break;
115        }
116
117        ICalOffset = BREG_ReadField(h->hRegister,SDADC_STATUS_ICH, o_Ich_flash_caldata);
118        BREG_WriteField(h->hRegister, SDADC_CTRL_ICH, i_ctl_Ich_flash_offset, ICalOffset);
119        BREG_WriteField(h->hRegister, SDADC_CTRL_ICH, i_Ich_flash_cal_on, 0);
120
121        switch (statusQch)
122        {
123        case 0 : BDBG_MSG(("SDADC Q channel calibration NOT done"));
124                         if (idx>99){
125                                 BDBG_ERR(("SDADC Q channel calibration timeout"));
126                                 }
127                         break;
128        case 1 : BDBG_MSG(("SDADC Q channel calibrationis done")); break;
129        default :BDBG_ERR(("ERROR!!! INVALID SDADC Q Channel Calibration Value: value is %d",statusQch)); break;
130        }
131
132        QCalOffset = BREG_ReadField(h->hRegister,SDADC_STATUS_QCH, o_Qch_flash_caldata);
133        BREG_WriteField(h->hRegister, SDADC_CTRL_QCH, i_ctl_Qch_flash_offset, QCalOffset);
134        BREG_WriteField(h->hRegister, SDADC_CTRL_QCH, i_Qch_flash_cal_on, 0);
135
136        BREG_WriteField(h->hRegister, SDADC_CTRL_RESET, i_Ich_reset, 0x0);
137        BREG_WriteField(h->hRegister, SDADC_CTRL_RESET, i_Qch_reset, 0x0);
138}
139
140
141/*******************************************************************************************************************
142 * BTNR_Ob_P_TunerSetRFAGC()  This routine sets the tuner RF AGC
143 ******************************************************************************************************************/
144void BTNR_Ob_P_TunerSetRFAGC(BTNR_Ob_3x7x_Handle h)
145{
146        uint32_t ReadReg;
147
148                BDBG_MSG(("BTNR_Ob_P_TunerSetRFAGC\n"));
149
150        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_RFAGC_CLK_sel, 0x0);
151        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_dsm_sigdel_en, 1);
152        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESET_01, RFAGC_DSM_intg_reset, 1);
153        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESETB_01, RFAGC_DSM_resetb, 0);
154        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESET_01, RFAGC_reset, 1);
155        BKNI_Sleep(1);
156        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESET_01, RFAGC_DSM_intg_reset, 0);
157        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESETB_01, RFAGC_DSM_resetb, 1);
158        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESET_01, RFAGC_reset, 0);
159
160        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_03, RF_Ios_PRG, 0x7);
161        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_03, RF_delay, 0x2);
162        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_03, RF_clk_extend, 0x2);
163        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_03, BB2_sel_IQ, 0x1);
164        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_03, BB2_Ios_PRG, 0x5);
165        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_03, BB2_delay, 0x2);
166        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_03, BB2_clk_extend, 0x2);
167        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_03, BB1_sel_IQ, 0x1);
168        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_03, BB1_Ios_PRG, 0x5);
169        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_03, BB1_delay, 0x2);
170        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_03, BB1_clk_extend, 0x2);
171
172        /*RF AGC initial gain settings*/
173        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_01, i_waddr, 0x4);
174        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_04, i_wdata, 0x10);
175        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x0);
176        BKNI_Sleep(1);
177        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x1);
178        BKNI_Sleep(1);
179        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x0);     
180        BKNI_Sleep(1);
181
182
183        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_01, i_waddr, 0x2);
184        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_04, i_wdata, 0x4E2);
185        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x0);
186        BKNI_Sleep(1);
187        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x1);
188        BKNI_Sleep(1);
189        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x0);     
190        BKNI_Sleep(1);
191
192        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_01, i_waddr, 0x1);
193        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_04, i_wdata, 0x31BD31BD);
194        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x0);
195        BKNI_Sleep(1);
196        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x1);
197        BKNI_Sleep(1);
198        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x0);     
199        BKNI_Sleep(1);
200
201
202        /*RF AGC close loop settings*/
203        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_01, i_raddr, 0x0);
204        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_rload, 0x0);
205        BKNI_Sleep(1);
206        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_rload, 0x1);
207        BKNI_Sleep(1);
208        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_rload, 0x0);
209        BKNI_Sleep(1);
210
211        ReadReg = BREG_ReadField(h->hRegister, UFE_AFE_TNR0_RFAGC_05, o_rdata);
212
213        ReadReg = ReadReg & 0xFFF3BDC0;
214        ReadReg = ReadReg | 0x0000401B;
215
216        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_01, i_waddr, 0x0);
217        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_04, i_wdata, ReadReg);
218
219        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x0);
220        BKNI_Sleep(1);
221        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x1);
222        BKNI_Sleep(1);
223        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x0);
224        BKNI_Sleep(1);
225
226                /*RF AGC initial gain settings*/
227        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_freeze_gain, 0x1);
228        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_01, i_waddr, 0x5);
229        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_04, i_wdata, 0x0);
230        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x0);
231        BKNI_Sleep(1);
232        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x1);
233        BKNI_Sleep(1);
234        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_wload, 0x0);     
235        BKNI_Sleep(1);
236        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RFAGC_02, i_freeze_gain, 0x0);       
237
238        BDBG_MSG(("BTNR_Ob_P_TunerSetRFAGC() Complete\n"));
239
240}
241
242/*******************************************************************************************************************
243 * BTNR_Ob_P_TunerSetLNAAGC()  This routine sets the tuner LNA AGC
244 ******************************************************************************************************************/
245void BTNR_Ob_P_TunerSetLNAAGC(BTNR_Ob_3x7x_Handle h)
246{
247
248        /* negative edge */
249        /* De-assert reset/resetb for LNA AGC */
250
251                BDBG_MSG(("BTNR_Ob_P_TunerSetLNAAGC\n"));
252        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESETB_01, LNAAGC_resetb, 0);
253        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESETB_01, LNAAGC_resetb, 1);
254        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESET_01, i_LNAAGC_dsm_srst, 1);
255        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESET_01, i_LNAAGC_dsm_srst, 0);
256        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESET_01, i_LNAAGC_agc_srst, 1);
257        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESET_01, i_LNAAGC_agc_srst, 0);
258
259                /* freeze LNA AGC */ 
260        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_03, AGC_frz, 1);
261        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_01, LNA_Kbw, 0x0);
262        /* peak detection  check with dave*/ 
263        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_02, negedge_sel, 1); 
264        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_00, peak_pwrb, 1);
265
266        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_00, pd_thresh, 0x7);
267        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_00, peak_pwr_set_pt, 46515);
268        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_01, hi_thresh, 24856);
269        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_00, win_len, 0xA);
270       
271        /*set initial gain*/
272        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_01, init_LNA_gain, 29);       
273       
274        /*unfreeze, un-bypass*/   
275    BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_03, AGC_byp, 0);
276    BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_03, AGC_frz, 0);
277        /*start LNA AGC*/ 
278        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_00, lna_start, 0x0);
279        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_LNAAGC_00, lna_start, 0x1);
280
281        BDBG_MSG(("BTNR_Ob_P_TunerSetLNAAGC() Complete\n"));
282
283}
284/*******************************************************************************************
285 * BTNR_Ob_P_Tuner_Power_Control()              This routine controls the power up/down of the tuner blocks
286 *******************************************************************************************/
287BERR_Code BTNR_Ob_P_Tuner_Power_Control(BTNR_Ob_3x7x_Handle h)
288{
289        BERR_Code retCode = BERR_SUCCESS;
290        uint32_t temp_UFE_AFE_TNR0_PWRUP_01 = 0;
291        uint32_t temp_UFE_AFE_TNR0_PWRUP_02 = 0;
292        uint32_t temp_UFE_AFE_TNR_PWRUP_01  = 0;
293        uint32_t temp_SDADC_CTRL_PWRUP      = 0;
294
295                BDBG_MSG(("BTNR_Ob_P_Tuner_Power_Control"));
296
297        temp_UFE_AFE_TNR0_PWRUP_01 = BREG_Read32(h->hRegister, BCHP_UFE_AFE_TNR0_PWRUP_01);
298        temp_UFE_AFE_TNR0_PWRUP_02 = BREG_Read32(h->hRegister, BCHP_UFE_AFE_TNR0_PWRUP_02);
299        temp_UFE_AFE_TNR_PWRUP_01 = BREG_Read32(h->hRegister, BCHP_UFE_AFE_TNR_PWRUP_01);
300        temp_SDADC_CTRL_PWRUP = BREG_Read32(h->hRegister, BCHP_SDADC_CTRL_PWRUP);
301
302        /* power up in VHF mode */
303        temp_UFE_AFE_TNR0_PWRUP_01 = (temp_UFE_AFE_TNR0_PWRUP_01 | 0x0FA383F7);
304        temp_UFE_AFE_TNR0_PWRUP_02 = (temp_UFE_AFE_TNR0_PWRUP_02 | 0x0029FAFF);
305        temp_UFE_AFE_TNR_PWRUP_01  = (temp_UFE_AFE_TNR_PWRUP_01  | 0x00006CFF);
306
307        /* power up Daisy in VHF mode */
308        temp_UFE_AFE_TNR0_PWRUP_01 = (temp_UFE_AFE_TNR0_PWRUP_01 | 0x0FA30817);
309        temp_UFE_AFE_TNR0_PWRUP_02 = (temp_UFE_AFE_TNR0_PWRUP_02 | 0x00218000);
310        temp_UFE_AFE_TNR_PWRUP_01  = (temp_UFE_AFE_TNR_PWRUP_01  | 0x00006CFF);
311        temp_SDADC_CTRL_PWRUP =  (temp_SDADC_CTRL_PWRUP  | 0x00000003);
312
313        BREG_Write32(h->hRegister, BCHP_UFE_AFE_TNR0_PWRUP_01, temp_UFE_AFE_TNR0_PWRUP_01);
314        BREG_Write32(h->hRegister, BCHP_UFE_AFE_TNR0_PWRUP_02, temp_UFE_AFE_TNR0_PWRUP_02);
315        BREG_Write32(h->hRegister, BCHP_UFE_AFE_TNR_PWRUP_01,  temp_UFE_AFE_TNR_PWRUP_01);
316        BREG_Write32(h->hRegister, BCHP_SDADC_CTRL_PWRUP,      temp_SDADC_CTRL_PWRUP);
317
318
319        /*TERR_PHYPLL1_FREQ=REF_FREQ*(ndiv_int+ndiv_frac/2^24)/p1div]/m1div, m1div is per channel*/
320        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_02, ndiv_frac, 0x0);/*ndiv_frac = 0*/
321        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_03, p1div, 0x01);   /*p1div = 1*/
322        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_03, ndiv_int, 0x32);/*ndiv_int = 50*/
323        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_04, m1div, 0x01);   /*m1div = 1*/
324        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_04, m2div, 0x02);   /*m2div = 2*/
325        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_04, m3div, 0x0C);   /*m3div = 12*/
326        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_04, m4div, 0x1B);   /*m4div = 27*/
327        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_05, m5div, 0x00);   /*m5div = 256*/
328        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_05, m6div, 0x05);   /*m6div = 5*/     
329        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_05, load_en_ch6_ch1, 0x3F); 
330
331        /*optimize PHYPLL*/
332        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_01, kvcox, 0x3);
333        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_01, Icpx, 0x1F);
334        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_PHYPLL_01, Rz, 0xF);
335
336                /* De-assert reset/resetb for REFPLL/PHYPLL */
337        BREG_Write32(h->hRegister, BCHP_UFE_AFE_TNR_RESETB_01, 0x00000003);
338        BREG_Write32(h->hRegister, BCHP_UFE_AFE_TNR_RESET_01, 0xFFFFFFF0);
339        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESET_01, PHYPLL_dreset, 0);
340        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESET_01, PHYPLL_areset, 0);
341
342        BKNI_Sleep(1);
343        /*PhyPLL Lock*/
344        if (BREG_ReadField(h->hRegister, UFE_AFE_TNR_REFPLL_04, o_PHYPLL_lock) == 1)
345                BDBG_MSG(("Phy PLL is lock\n"));
346        else
347                BDBG_MSG(("Phy PLL is not lock\n"));
348
349        /* De-assert reset/resetb for 6-bit ADC */
350        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESETB_01, ADC6B_resetb, 0);
351        BREG_WriteField(h->hRegister, UFE_AFE_TNR0_RESETB_01, ADC6B_resetb, 1);
352        BKNI_Sleep(1);
353
354        BREG_WriteField(h->hRegister, SDADC_CTRL_SYS0, i_adcclk_reset, 0x0);
355        BREG_WriteField(h->hRegister, SDADC_CTRL_RESET, i_Ich_reset, 0x0);
356        BREG_WriteField(h->hRegister, SDADC_CTRL_RESET, i_Qch_reset, 0x0);
357
358  return retCode;
359}
360
361
362
363/*******************************************************************************************
364 * BTNR_Ob_P_TunerInit()                This routine initializes the tuner and is only run once
365 *******************************************************************************************/
366BERR_Code BTNR_Ob_P_TunerInit(BTNR_Ob_3x7x_Handle h)
367{
368        BERR_Code retCode = BERR_SUCCESS;
369
370        BTNR_Ob_P_CalFlashSDADC(h);
371        BTNR_Ob_P_TunerSetLNAAGC(h);
372        BTNR_Ob_P_TunerSetRFAGC(h);
373
374        return retCode;
375}
376
377
378
Note: See TracBrowser for help on using the repository browser.