xref: /utopia/UTPA2-700.0.x/modules/demodulator/hal/mainz/demod/halDMD_INTERN_ISDBT.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi //<MStar Software>
2*53ee8cc1Swenshuai.xi //******************************************************************************
3*53ee8cc1Swenshuai.xi // MStar Software
4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are
6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties.
8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all
9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written
10*53ee8cc1Swenshuai.xi // permission has been granted by MStar.
11*53ee8cc1Swenshuai.xi //
12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you
13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to
14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations:
15*53ee8cc1Swenshuai.xi //
16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar
17*53ee8cc1Swenshuai.xi //    Software and any modification/derivatives thereof.
18*53ee8cc1Swenshuai.xi //    No right, ownership, or interest to MStar Software and any
19*53ee8cc1Swenshuai.xi //    modification/derivatives thereof is transferred to you under Terms.
20*53ee8cc1Swenshuai.xi //
21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be
22*53ee8cc1Swenshuai.xi //    supplied together with third party`s software and the use of MStar
23*53ee8cc1Swenshuai.xi //    Software may require additional licenses from third parties.
24*53ee8cc1Swenshuai.xi //    Therefore, you hereby agree it is your sole responsibility to separately
25*53ee8cc1Swenshuai.xi //    obtain any and all third party right and license necessary for your use of
26*53ee8cc1Swenshuai.xi //    such third party`s software.
27*53ee8cc1Swenshuai.xi //
28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29*53ee8cc1Swenshuai.xi //    MStar`s confidential information and you agree to keep MStar`s
30*53ee8cc1Swenshuai.xi //    confidential information in strictest confidence and not disclose to any
31*53ee8cc1Swenshuai.xi //    third party.
32*53ee8cc1Swenshuai.xi //
33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34*53ee8cc1Swenshuai.xi //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35*53ee8cc1Swenshuai.xi //    without limitation, any warranties of merchantability, non-infringement of
36*53ee8cc1Swenshuai.xi //    intellectual property rights, fitness for a particular purpose, error free
37*53ee8cc1Swenshuai.xi //    and in conformity with any international standard.  You agree to waive any
38*53ee8cc1Swenshuai.xi //    claim against MStar for any loss, damage, cost or expense that you may
39*53ee8cc1Swenshuai.xi //    incur related to your use of MStar Software.
40*53ee8cc1Swenshuai.xi //    In no event shall MStar be liable for any direct, indirect, incidental or
41*53ee8cc1Swenshuai.xi //    consequential damages, including without limitation, lost of profit or
42*53ee8cc1Swenshuai.xi //    revenues, lost or damage of data, and unauthorized system use.
43*53ee8cc1Swenshuai.xi //    You agree that this Section 4 shall still apply without being affected
44*53ee8cc1Swenshuai.xi //    even if MStar Software has been modified by MStar in accordance with your
45*53ee8cc1Swenshuai.xi //    request or instruction for your use, except otherwise agreed by both
46*53ee8cc1Swenshuai.xi //    parties in writing.
47*53ee8cc1Swenshuai.xi //
48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or
49*53ee8cc1Swenshuai.xi //    services in relation with MStar Software to you for your use of
50*53ee8cc1Swenshuai.xi //    MStar Software in conjunction with your or your customer`s product
51*53ee8cc1Swenshuai.xi //    ("Services").
52*53ee8cc1Swenshuai.xi //    You understand and agree that, except otherwise agreed by both parties in
53*53ee8cc1Swenshuai.xi //    writing, Services are provided on an "AS IS" basis and the warranty
54*53ee8cc1Swenshuai.xi //    disclaimer set forth in Section 4 above shall apply.
55*53ee8cc1Swenshuai.xi //
56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels
57*53ee8cc1Swenshuai.xi //    or otherwise:
58*53ee8cc1Swenshuai.xi //    (a) conferring any license or right to use MStar name, trademark, service
59*53ee8cc1Swenshuai.xi //        mark, symbol or any other identification;
60*53ee8cc1Swenshuai.xi //    (b) obligating MStar or any of its affiliates to furnish any person,
61*53ee8cc1Swenshuai.xi //        including without limitation, you and your customers, any assistance
62*53ee8cc1Swenshuai.xi //        of any kind whatsoever, or any information; or
63*53ee8cc1Swenshuai.xi //    (c) conferring any license or right under any intellectual property right.
64*53ee8cc1Swenshuai.xi //
65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws
66*53ee8cc1Swenshuai.xi //    of Taiwan, R.O.C., excluding its conflict of law rules.
67*53ee8cc1Swenshuai.xi //    Any and all dispute arising out hereof or related hereto shall be finally
68*53ee8cc1Swenshuai.xi //    settled by arbitration referred to the Chinese Arbitration Association,
69*53ee8cc1Swenshuai.xi //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70*53ee8cc1Swenshuai.xi //    Rules of the Association by three (3) arbitrators appointed in accordance
71*53ee8cc1Swenshuai.xi //    with the said Rules.
72*53ee8cc1Swenshuai.xi //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73*53ee8cc1Swenshuai.xi //    be English.
74*53ee8cc1Swenshuai.xi //    The arbitration award shall be final and binding to both parties.
75*53ee8cc1Swenshuai.xi //
76*53ee8cc1Swenshuai.xi //******************************************************************************
77*53ee8cc1Swenshuai.xi //<MStar Software>
78*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
79*53ee8cc1Swenshuai.xi //
80*53ee8cc1Swenshuai.xi // Copyright (c) 2006-2009 MStar Semiconductor, Inc.
81*53ee8cc1Swenshuai.xi // All rights reserved.
82*53ee8cc1Swenshuai.xi //
83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained
84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of
85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence
86*53ee8cc1Swenshuai.xi // (!��MStar Confidential Information!�L) by the recipient.
87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure,
88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling,
89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential
90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the
91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom.
92*53ee8cc1Swenshuai.xi //
93*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////////////////////////////////
94*53ee8cc1Swenshuai.xi 
95*53ee8cc1Swenshuai.xi 
96*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
97*53ee8cc1Swenshuai.xi //  Include Files
98*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
99*53ee8cc1Swenshuai.xi 
100*53ee8cc1Swenshuai.xi #ifndef MSOS_TYPE_LINUX_KERNEL
101*53ee8cc1Swenshuai.xi #include <stdio.h>
102*53ee8cc1Swenshuai.xi #include <math.h>
103*53ee8cc1Swenshuai.xi #endif
104*53ee8cc1Swenshuai.xi 
105*53ee8cc1Swenshuai.xi #include "drvDMD_ISDBT.h"
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
108*53ee8cc1Swenshuai.xi //  Driver Compiler Options
109*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
110*53ee8cc1Swenshuai.xi 
111*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_EULER        0x00
112*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_NUGGET       0x01
113*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_KAPPA        0x02
114*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_EINSTEIN     0x03
115*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_NAPOLI       0x04
116*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MONACO       0x05
117*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MIAMI        0x06
118*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MUJI         0x07
119*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MUNICH       0x08
120*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MANHATTAN    0x09
121*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MULAN        0x0A
122*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MESSI        0x0B
123*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MASERATI     0x0C
124*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_KIWI         0x0D
125*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MACAN        0x0E
126*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MUSTANG      0x0F
127*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MAXIM        0x10
128*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MARLON       0x11
129*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_KENTUCKY     0x12
130*53ee8cc1Swenshuai.xi #define DMD_ISDBT_CHIP_MAINZ        0x13
131*53ee8cc1Swenshuai.xi #if defined(CHIP_EULER)
132*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_EULER
133*53ee8cc1Swenshuai.xi #elif defined(CHIP_NUGGET)
134*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_NUGGET
135*53ee8cc1Swenshuai.xi #elif defined(CHIP_KAPPA)
136*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_KAPPA
137*53ee8cc1Swenshuai.xi #elif defined(CHIP_EINSTEIN)
138*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_EINSTEIN
139*53ee8cc1Swenshuai.xi #elif defined(CHIP_NAPOLI)
140*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_NAPOLI
141*53ee8cc1Swenshuai.xi #elif defined(CHIP_MIAMI)
142*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_MIAMI
143*53ee8cc1Swenshuai.xi #elif defined(CHIP_MUJI)
144*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_MUJI
145*53ee8cc1Swenshuai.xi #elif defined(CHIP_MUNICH)
146*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_MUNICH
147*53ee8cc1Swenshuai.xi #elif defined(CHIP_MANHATTAN)
148*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_MANHATTAN
149*53ee8cc1Swenshuai.xi #elif defined(CHIP_MULAN)
150*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_MULAN
151*53ee8cc1Swenshuai.xi #elif defined(CHIP_MESSI)
152*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_MESSI
153*53ee8cc1Swenshuai.xi #elif defined(CHIP_MASERATI)
154*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_MASERATI
155*53ee8cc1Swenshuai.xi #elif defined(CHIP_KIWI)
156*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_KIWI
157*53ee8cc1Swenshuai.xi #elif defined(CHIP_MACAN)
158*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_MACAN
159*53ee8cc1Swenshuai.xi #elif defined(CHIP_MUSTANG)
160*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_MUSTANG
161*53ee8cc1Swenshuai.xi #elif defined(CHIP_MAXIM)
162*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_MAXIM
163*53ee8cc1Swenshuai.xi #elif defined(CHIP_MARLON)
164*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_MARLON
165*53ee8cc1Swenshuai.xi #elif defined(CHIP_K5TN)
166*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_KENTUCKY
167*53ee8cc1Swenshuai.xi #elif defined(CHIP_MAINZ)
168*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_MAINZ
169*53ee8cc1Swenshuai.xi #else
170*53ee8cc1Swenshuai.xi  #define DMD_ISDBT_CHIP_VERSION     DMD_ISDBT_CHIP_EULER
171*53ee8cc1Swenshuai.xi #endif
172*53ee8cc1Swenshuai.xi 
173*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
174*53ee8cc1Swenshuai.xi //  Local Defines
175*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
176*53ee8cc1Swenshuai.xi #if (DMD_ISDBT_CHIP_VERSION >= DMD_ISDBT_CHIP_MULAN)
177*53ee8cc1Swenshuai.xi #define DMD_ISDBT_TBVA_EN		1
178*53ee8cc1Swenshuai.xi #else
179*53ee8cc1Swenshuai.xi #define DMD_ISDBT_TBVA_EN		0
180*53ee8cc1Swenshuai.xi #endif
181*53ee8cc1Swenshuai.xi #define _RIU_READ_BYTE(addr)        ( READ_BYTE(psDMD_ISDBT_ResData->sDMD_ISDBT_PriData.virtDMDBaseAddr + (addr) ) )
182*53ee8cc1Swenshuai.xi #define _RIU_WRITE_BYTE(addr, val)  ( WRITE_BYTE(psDMD_ISDBT_ResData->sDMD_ISDBT_PriData.virtDMDBaseAddr + (addr), val) )
183*53ee8cc1Swenshuai.xi 
184*53ee8cc1Swenshuai.xi #define HAL_INTERN_ISDBT_DBINFO(y)   //y
185*53ee8cc1Swenshuai.xi #ifndef MBRegBase
186*53ee8cc1Swenshuai.xi #define MBRegBase               0x112600UL
187*53ee8cc1Swenshuai.xi #endif
188*53ee8cc1Swenshuai.xi #ifndef MBRegBase_DMD1
189*53ee8cc1Swenshuai.xi #define MBRegBase_DMD1          0x112400UL
190*53ee8cc1Swenshuai.xi #endif
191*53ee8cc1Swenshuai.xi #ifndef DMDMcuBase
192*53ee8cc1Swenshuai.xi #define DMDMcuBase              0x103480UL
193*53ee8cc1Swenshuai.xi #endif
194*53ee8cc1Swenshuai.xi 
195*53ee8cc1Swenshuai.xi #if (DMD_ISDBT_CHIP_VERSION >= DMD_ISDBT_CHIP_MULAN) && (DMD_ISDBT_CHIP_VERSION != DMD_ISDBT_CHIP_MESSI) && (DMD_ISDBT_CHIP_VERSION != DMD_ISDBT_CHIP_MAINZ) && (DMD_ISDBT_CHIP_VERSION != DMD_ISDBT_CHIP_KIWI)
196*53ee8cc1Swenshuai.xi #define REG_ISDBT_LOCK_STATUS   0x11F5
197*53ee8cc1Swenshuai.xi #define ISDBT_TDP_REG_BASE      0x1400
198*53ee8cc1Swenshuai.xi #define ISDBT_FDP_REG_BASE      0x1500
199*53ee8cc1Swenshuai.xi #define ISDBT_FDPEXT_REG_BASE   0x1600
200*53ee8cc1Swenshuai.xi #define ISDBT_OUTER_REG_BASE    0x1700
201*53ee8cc1Swenshuai.xi #else
202*53ee8cc1Swenshuai.xi #define REG_ISDBT_LOCK_STATUS   0x36F5
203*53ee8cc1Swenshuai.xi #define ISDBT_TDP_REG_BASE      0x3700
204*53ee8cc1Swenshuai.xi #define ISDBT_FDP_REG_BASE      0x3800
205*53ee8cc1Swenshuai.xi #define ISDBT_FDPEXT_REG_BASE   0x3900
206*53ee8cc1Swenshuai.xi #define ISDBT_OUTER_REG_BASE    0x3A00
207*53ee8cc1Swenshuai.xi #endif
208*53ee8cc1Swenshuai.xi 
209*53ee8cc1Swenshuai.xi #if (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_EULER) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_NUGGET) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MUNICH)
210*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTW_ADDR      0xF5
211*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTR_ADDR      0xF5
212*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTW_MASK      0x87
213*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTR_MASK      0x87
214*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTW_BIT_MASK  0x01
215*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTR_BIT_MASK  0x02
216*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_EINSTEIN) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_NAPOLI) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MONACO) || \
217*53ee8cc1Swenshuai.xi       (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MIAMI) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MUJI) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MANHATTAN) || \
218*53ee8cc1Swenshuai.xi       (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MESSI)
219*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTW_ADDR      0xF2
220*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTR_ADDR      0xF2
221*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTW_MASK      0x66
222*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTR_MASK      0x66
223*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTW_BIT_MASK  0x02
224*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTR_BIT_MASK  0x04
225*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_KAPPA)
226*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTW_ADDR      0xF1
227*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTR_ADDR      0xF0
228*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTW_MASK      0x47
229*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTR_MASK      0x46
230*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTW_BIT_MASK  0x02
231*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTR_BIT_MASK  0x20
232*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_KIWI)
233*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTW_ADDR      0xF1
234*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTR_ADDR      0xF0
235*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTW_MASK      0x47
236*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTR_MASK      0x46
237*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTW_BIT_MASK  0x04
238*53ee8cc1Swenshuai.xi #define ISDBT_MIU_CLIENTR_BIT_MASK  0x20
239*53ee8cc1Swenshuai.xi #endif
240*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
241*53ee8cc1Swenshuai.xi //  Local Variables
242*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
243*53ee8cc1Swenshuai.xi 
244*53ee8cc1Swenshuai.xi const MS_U8 INTERN_ISDBT_table[] = {
245*53ee8cc1Swenshuai.xi     #include "DMD_INTERN_ISDBT.dat"
246*53ee8cc1Swenshuai.xi };
247*53ee8cc1Swenshuai.xi 
248*53ee8cc1Swenshuai.xi #ifndef UTPA2
249*53ee8cc1Swenshuai.xi static const float _LogApproxTableX[80] =
250*53ee8cc1Swenshuai.xi { 1.00, 1.30, 1.69, 2.20, 2.86, 3.71, 4.83, 6.27, 8.16, 10.60, 13.79,
251*53ee8cc1Swenshuai.xi   17.92, 23.30, 30.29, 39.37, 51.19, 66.54, 86.50, 112.46, 146.19,
252*53ee8cc1Swenshuai.xi   190.05, 247.06, 321.18, 417.54, 542.80, 705.64, 917.33, 1192.53,
253*53ee8cc1Swenshuai.xi   1550.29, 2015.38, 2620.00, 3405.99, 4427.79, 5756.13, 7482.97,
254*53ee8cc1Swenshuai.xi   9727.86, 12646.22, 16440.08, 21372.11, 27783.74, 36118.86,
255*53ee8cc1Swenshuai.xi   46954.52, 61040.88, 79353.15, 103159.09, 134106.82, 174338.86,
256*53ee8cc1Swenshuai.xi   226640.52, 294632.68, 383022.48, 497929.22, 647307.99, 841500.39, 1093950.50,
257*53ee8cc1Swenshuai.xi   1422135.65, 1848776.35, 2403409.25, 3124432.03, 4061761.64, 5280290.13,
258*53ee8cc1Swenshuai.xi   6864377.17, 8923690.32, 11600797.42, 15081036.65, 19605347.64, 25486951.94,
259*53ee8cc1Swenshuai.xi   33133037.52, 43072948.77, 55994833.40, 72793283.42, 94631268.45,
260*53ee8cc1Swenshuai.xi   123020648.99, 159926843.68, 207904896.79, 270276365.82, 351359275.57,
261*53ee8cc1Swenshuai.xi   456767058.24, 593797175.72, 771936328.43, 1003517226.96
262*53ee8cc1Swenshuai.xi };
263*53ee8cc1Swenshuai.xi 
264*53ee8cc1Swenshuai.xi static const float _LogApproxTableY[80] =
265*53ee8cc1Swenshuai.xi { 0.00, 0.11, 0.23, 0.34, 0.46, 0.57, 0.68, 0.80, 0.91, 1.03, 1.14, 1.25,
266*53ee8cc1Swenshuai.xi   1.37, 1.48, 1.60, 1.71, 1.82, 1.94, 2.05, 2.16, 2.28, 2.39, 2.51, 2.62,
267*53ee8cc1Swenshuai.xi   2.73, 2.85, 2.96, 3.08, 3.19, 3.30, 3.42, 3.53, 3.65, 3.76, 3.87, 3.99,
268*53ee8cc1Swenshuai.xi   4.10, 4.22, 4.33, 4.44, 4.56, 4.67, 4.79, 4.90, 5.01, 5.13, 5.24, 5.36,
269*53ee8cc1Swenshuai.xi   5.47, 5.58, 5.70, 5.81, 5.93, 6.04, 6.15, 6.27, 6.04, 6.15, 6.27, 6.38,
270*53ee8cc1Swenshuai.xi   6.49, 6.61, 6.72, 6.84, 6.95, 7.06, 7.18, 7.29, 7.41, 7.52, 7.63, 7.75,
271*53ee8cc1Swenshuai.xi   7.86, 7.98, 8.09, 8.20, 8.32, 8.43, 8.55, 8.66
272*53ee8cc1Swenshuai.xi };
273*53ee8cc1Swenshuai.xi #endif
274*53ee8cc1Swenshuai.xi 
275*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
276*53ee8cc1Swenshuai.xi //  Global Variables
277*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
278*53ee8cc1Swenshuai.xi 
279*53ee8cc1Swenshuai.xi extern MS_U8 u8DMD_ISDBT_DMD_ID;
280*53ee8cc1Swenshuai.xi 
281*53ee8cc1Swenshuai.xi extern DMD_ISDBT_ResData *psDMD_ISDBT_ResData;
282*53ee8cc1Swenshuai.xi 
283*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
284*53ee8cc1Swenshuai.xi //  Local Functions
285*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
286*53ee8cc1Swenshuai.xi #ifndef UTPA2
287*53ee8cc1Swenshuai.xi 
288*53ee8cc1Swenshuai.xi #ifndef MSOS_TYPE_LINUX
Log10Approx(float flt_x)289*53ee8cc1Swenshuai.xi static float Log10Approx(float flt_x)
290*53ee8cc1Swenshuai.xi {
291*53ee8cc1Swenshuai.xi     MS_U8  indx = 0;
292*53ee8cc1Swenshuai.xi 
293*53ee8cc1Swenshuai.xi     do {
294*53ee8cc1Swenshuai.xi         if (flt_x < _LogApproxTableX[indx])
295*53ee8cc1Swenshuai.xi             break;
296*53ee8cc1Swenshuai.xi         indx++;
297*53ee8cc1Swenshuai.xi     }while (indx < 79);   //stop at indx = 80
298*53ee8cc1Swenshuai.xi 
299*53ee8cc1Swenshuai.xi     return _LogApproxTableY[indx];
300*53ee8cc1Swenshuai.xi }
301*53ee8cc1Swenshuai.xi #endif
302*53ee8cc1Swenshuai.xi 
_CALCULATE_SQI(float fber)303*53ee8cc1Swenshuai.xi static MS_U16 _CALCULATE_SQI(float fber)
304*53ee8cc1Swenshuai.xi {
305*53ee8cc1Swenshuai.xi     float flog_ber;
306*53ee8cc1Swenshuai.xi     MS_U16 u16SQI;
307*53ee8cc1Swenshuai.xi 
308*53ee8cc1Swenshuai.xi     #ifdef MSOS_TYPE_LINUX
309*53ee8cc1Swenshuai.xi     flog_ber = (float)log10((double)fber);
310*53ee8cc1Swenshuai.xi     #else
311*53ee8cc1Swenshuai.xi     if (fber != 0.0)
312*53ee8cc1Swenshuai.xi         flog_ber = (float)(-1.0*Log10Approx((double)(1.0 / fber)));
313*53ee8cc1Swenshuai.xi     else
314*53ee8cc1Swenshuai.xi         flog_ber = -8.0;//when fber=0 means u16SQI=100
315*53ee8cc1Swenshuai.xi     #endif
316*53ee8cc1Swenshuai.xi 
317*53ee8cc1Swenshuai.xi     //printf("dan fber = %f\n", fber);
318*53ee8cc1Swenshuai.xi     //printf("dan flog_ber = %f\n", flog_ber);
319*53ee8cc1Swenshuai.xi     // Part 2: transfer ber value to u16SQI value.
320*53ee8cc1Swenshuai.xi     if (flog_ber <= ( - 7.0))
321*53ee8cc1Swenshuai.xi     {
322*53ee8cc1Swenshuai.xi         u16SQI = 100;    //*quality = 100;
323*53ee8cc1Swenshuai.xi     }
324*53ee8cc1Swenshuai.xi     else if (flog_ber < -6.0)
325*53ee8cc1Swenshuai.xi     {
326*53ee8cc1Swenshuai.xi         u16SQI = (90+((( - 6.0) - flog_ber) / (( - 6.0) - ( - 7.0))*(100-90)));
327*53ee8cc1Swenshuai.xi     }
328*53ee8cc1Swenshuai.xi     else if (flog_ber < -5.5)
329*53ee8cc1Swenshuai.xi     {
330*53ee8cc1Swenshuai.xi         u16SQI = (80+((( - 5.5) - flog_ber) / (( - 5.5) - ( - 6.0))*(90-80)));
331*53ee8cc1Swenshuai.xi     }
332*53ee8cc1Swenshuai.xi     else if (flog_ber < -5.0)
333*53ee8cc1Swenshuai.xi     {
334*53ee8cc1Swenshuai.xi         u16SQI = (70+((( - 5.0) - flog_ber) / (( - 5.0) - ( - 5.5))*(80-70)));
335*53ee8cc1Swenshuai.xi     }
336*53ee8cc1Swenshuai.xi     else if (flog_ber < -4.5)
337*53ee8cc1Swenshuai.xi     {
338*53ee8cc1Swenshuai.xi         u16SQI = (60+((( - 4.5) - flog_ber) / (( -4.5) - ( - 5.0))*(70-50)));
339*53ee8cc1Swenshuai.xi     }
340*53ee8cc1Swenshuai.xi     else if (flog_ber < -4.0)
341*53ee8cc1Swenshuai.xi     {
342*53ee8cc1Swenshuai.xi         u16SQI = (50+((( - 4.0) - flog_ber) / (( - 4.0) - ( - 45))*(60-50)));
343*53ee8cc1Swenshuai.xi     }
344*53ee8cc1Swenshuai.xi     else if (flog_ber < -3.5)
345*53ee8cc1Swenshuai.xi     {
346*53ee8cc1Swenshuai.xi         u16SQI = (40+((( - 3.5) - flog_ber) / (( - 3.5) - ( - 4.0))*(50-40)));
347*53ee8cc1Swenshuai.xi     }
348*53ee8cc1Swenshuai.xi     else if (flog_ber < -3.0)
349*53ee8cc1Swenshuai.xi     {
350*53ee8cc1Swenshuai.xi         u16SQI = (30+((( - 3.0) - flog_ber) / (( - 3.0) - ( - 3.5))*(40-30)));
351*53ee8cc1Swenshuai.xi     }
352*53ee8cc1Swenshuai.xi     else if (flog_ber < -2.5)
353*53ee8cc1Swenshuai.xi     {
354*53ee8cc1Swenshuai.xi         u16SQI = (20+((( - 2.5) - flog_ber) / (( - 2.5) - ( -3.0))*(30-20)));
355*53ee8cc1Swenshuai.xi     }
356*53ee8cc1Swenshuai.xi     else if (flog_ber < -2.0)
357*53ee8cc1Swenshuai.xi     {
358*53ee8cc1Swenshuai.xi         u16SQI = (0+((( - 2.0) - flog_ber) / (( - 2.0) - ( - 2.5))*(20-0)));
359*53ee8cc1Swenshuai.xi     }
360*53ee8cc1Swenshuai.xi     else
361*53ee8cc1Swenshuai.xi     {
362*53ee8cc1Swenshuai.xi         u16SQI = 0;
363*53ee8cc1Swenshuai.xi     }
364*53ee8cc1Swenshuai.xi 
365*53ee8cc1Swenshuai.xi     return u16SQI;
366*53ee8cc1Swenshuai.xi }
367*53ee8cc1Swenshuai.xi #endif
368*53ee8cc1Swenshuai.xi 
_HAL_DMD_RIU_ReadByte(MS_U32 u32Addr)369*53ee8cc1Swenshuai.xi static MS_U8 _HAL_DMD_RIU_ReadByte(MS_U32 u32Addr)
370*53ee8cc1Swenshuai.xi {
371*53ee8cc1Swenshuai.xi     return _RIU_READ_BYTE(((u32Addr) << 1) - ((u32Addr) & 1));
372*53ee8cc1Swenshuai.xi }
373*53ee8cc1Swenshuai.xi 
_HAL_DMD_RIU_WriteByte(MS_U32 u32Addr,MS_U8 u8Value)374*53ee8cc1Swenshuai.xi static void _HAL_DMD_RIU_WriteByte(MS_U32 u32Addr, MS_U8 u8Value)
375*53ee8cc1Swenshuai.xi {
376*53ee8cc1Swenshuai.xi     _RIU_WRITE_BYTE(((u32Addr) << 1) - ((u32Addr) & 1), u8Value);
377*53ee8cc1Swenshuai.xi }
378*53ee8cc1Swenshuai.xi 
_HAL_DMD_RIU_WriteByteMask(MS_U32 u32Addr,MS_U8 u8Value,MS_U8 u8Mask)379*53ee8cc1Swenshuai.xi static void _HAL_DMD_RIU_WriteByteMask(MS_U32 u32Addr, MS_U8 u8Value, MS_U8 u8Mask)
380*53ee8cc1Swenshuai.xi {
381*53ee8cc1Swenshuai.xi     _RIU_WRITE_BYTE((((u32Addr) <<1) - ((u32Addr) & 1)), (_RIU_READ_BYTE((((u32Addr) <<1) - ((u32Addr) & 1))) & ~(u8Mask)) | ((u8Value) & (u8Mask)));
382*53ee8cc1Swenshuai.xi }
383*53ee8cc1Swenshuai.xi 
_MBX_WriteReg(MS_U16 u16Addr,MS_U8 u8Data)384*53ee8cc1Swenshuai.xi static MS_BOOL _MBX_WriteReg(MS_U16 u16Addr, MS_U8 u8Data)
385*53ee8cc1Swenshuai.xi {
386*53ee8cc1Swenshuai.xi     MS_U8 u8CheckCount;
387*53ee8cc1Swenshuai.xi     MS_U8 u8CheckFlag = 0xFF;
388*53ee8cc1Swenshuai.xi     MS_U32 u32MBRegBase = MBRegBase;
389*53ee8cc1Swenshuai.xi 
390*53ee8cc1Swenshuai.xi     if (u8DMD_ISDBT_DMD_ID == 0)
391*53ee8cc1Swenshuai.xi         u32MBRegBase = MBRegBase;
392*53ee8cc1Swenshuai.xi     else if (u8DMD_ISDBT_DMD_ID == 1)
393*53ee8cc1Swenshuai.xi         u32MBRegBase = MBRegBase_DMD1;
394*53ee8cc1Swenshuai.xi 
395*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x00, (u16Addr&0xff));
396*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x01, (u16Addr>>8));
397*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x10, u8Data);
398*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x1E, 0x01);
399*53ee8cc1Swenshuai.xi 
400*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)|0x02);    // assert interrupt to VD MCU51
401*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)&(~0x02)); // de-assert interrupt to VD MCU51
402*53ee8cc1Swenshuai.xi 
403*53ee8cc1Swenshuai.xi     for (u8CheckCount=0; u8CheckCount < 10; u8CheckCount++)
404*53ee8cc1Swenshuai.xi     {
405*53ee8cc1Swenshuai.xi         u8CheckFlag = _HAL_DMD_RIU_ReadByte(u32MBRegBase + 0x1E);
406*53ee8cc1Swenshuai.xi         if ((u8CheckFlag&0x01)==0)
407*53ee8cc1Swenshuai.xi             break;
408*53ee8cc1Swenshuai.xi         MsOS_DelayTask(1);
409*53ee8cc1Swenshuai.xi     }
410*53ee8cc1Swenshuai.xi 
411*53ee8cc1Swenshuai.xi     if (u8CheckFlag&0x01)
412*53ee8cc1Swenshuai.xi     {
413*53ee8cc1Swenshuai.xi         printf("ERROR: ATSC INTERN DEMOD MBX WRITE TIME OUT!\n");
414*53ee8cc1Swenshuai.xi         return FALSE;
415*53ee8cc1Swenshuai.xi     }
416*53ee8cc1Swenshuai.xi 
417*53ee8cc1Swenshuai.xi     return TRUE;
418*53ee8cc1Swenshuai.xi }
419*53ee8cc1Swenshuai.xi 
_MBX_ReadReg(MS_U16 u16Addr,MS_U8 * u8Data)420*53ee8cc1Swenshuai.xi static MS_BOOL _MBX_ReadReg(MS_U16 u16Addr, MS_U8 *u8Data)
421*53ee8cc1Swenshuai.xi {
422*53ee8cc1Swenshuai.xi     MS_U8 u8CheckCount;
423*53ee8cc1Swenshuai.xi     MS_U8 u8CheckFlag = 0xFF;
424*53ee8cc1Swenshuai.xi     MS_U32 u32MBRegBase = MBRegBase;
425*53ee8cc1Swenshuai.xi 
426*53ee8cc1Swenshuai.xi     if (u8DMD_ISDBT_DMD_ID == 0)
427*53ee8cc1Swenshuai.xi         u32MBRegBase = MBRegBase;
428*53ee8cc1Swenshuai.xi     else if (u8DMD_ISDBT_DMD_ID == 1)
429*53ee8cc1Swenshuai.xi         u32MBRegBase = MBRegBase_DMD1;
430*53ee8cc1Swenshuai.xi 
431*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x00, (u16Addr&0xff));
432*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x01, (u16Addr>>8));
433*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x1E, 0x02);
434*53ee8cc1Swenshuai.xi 
435*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)|0x02);    // assert interrupt to VD MCU51
436*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)&(~0x02)); // de-assert interrupt to VD MCU51
437*53ee8cc1Swenshuai.xi 
438*53ee8cc1Swenshuai.xi     for (u8CheckCount=0; u8CheckCount < 10; u8CheckCount++)
439*53ee8cc1Swenshuai.xi     {
440*53ee8cc1Swenshuai.xi         u8CheckFlag = _HAL_DMD_RIU_ReadByte(u32MBRegBase + 0x1E);
441*53ee8cc1Swenshuai.xi         if ((u8CheckFlag&0x02)==0)
442*53ee8cc1Swenshuai.xi         {
443*53ee8cc1Swenshuai.xi            *u8Data = _HAL_DMD_RIU_ReadByte(u32MBRegBase + 0x10);
444*53ee8cc1Swenshuai.xi             break;
445*53ee8cc1Swenshuai.xi         }
446*53ee8cc1Swenshuai.xi         MsOS_DelayTask(1);
447*53ee8cc1Swenshuai.xi     }
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi     if (u8CheckFlag&0x02)
450*53ee8cc1Swenshuai.xi     {
451*53ee8cc1Swenshuai.xi         printf("ERROR: ATSC INTERN DEMOD MBX READ TIME OUT!\n");
452*53ee8cc1Swenshuai.xi         return FALSE;
453*53ee8cc1Swenshuai.xi     }
454*53ee8cc1Swenshuai.xi 
455*53ee8cc1Swenshuai.xi     return TRUE;
456*53ee8cc1Swenshuai.xi }
457*53ee8cc1Swenshuai.xi 
458*53ee8cc1Swenshuai.xi 
459*53ee8cc1Swenshuai.xi 
460*53ee8cc1Swenshuai.xi #if (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_EULER)
_HAL_INTERN_ISDBT_InitClk(void)461*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
462*53ee8cc1Swenshuai.xi {
463*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_EULER--------------\n"));
464*53ee8cc1Swenshuai.xi 
465*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
466*53ee8cc1Swenshuai.xi 
467*53ee8cc1Swenshuai.xi     // Init by HKMCU
468*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
469*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06);
470*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
471*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
472*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
473*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
474*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
475*53ee8cc1Swenshuai.xi 
476*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
477*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
478*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
479*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
480*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
481*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
482*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
483*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
484*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
485*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
486*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
487*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
488*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
489*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
490*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x00);
491*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x00);
492*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
493*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
494*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00);
495*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00);
496*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4c, 0x00);
497*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f23, 0x04);
498*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f22, 0x44);
499*53ee8cc1Swenshuai.xi 
500*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
501*53ee8cc1Swenshuai.xi }
502*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_NUGGET)
_HAL_INTERN_ISDBT_InitClk(void)503*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
504*53ee8cc1Swenshuai.xi {
505*53ee8cc1Swenshuai.xi     MS_U8 u8Val = 0;
506*53ee8cc1Swenshuai.xi 
507*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_NUGGET--------------\n"));
508*53ee8cc1Swenshuai.xi 
509*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
510*53ee8cc1Swenshuai.xi 
511*53ee8cc1Swenshuai.xi     // Init by HKMCU
512*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
513*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
514*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06);
515*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
516*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
517*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
518*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
519*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
520*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f28, 0x03);
521*53ee8cc1Swenshuai.xi 
522*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
523*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
524*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
525*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
526*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
527*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
528*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
529*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
530*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
531*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
532*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
533*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
534*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
535*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
536*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x00);
537*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x00);
538*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f46, 0x01);
539*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
540*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
541*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00);
542*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00);
543*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4c, 0x00);
544*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f23, 0x04);
545*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f22, 0x44);
546*53ee8cc1Swenshuai.xi 
547*53ee8cc1Swenshuai.xi     u8Val = _HAL_DMD_RIU_ReadByte(0x1006F5);
548*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1006F5, (u8Val & ~0x03));
549*53ee8cc1Swenshuai.xi 
550*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
551*53ee8cc1Swenshuai.xi }
552*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_KAPPA)
_HAL_INTERN_ISDBT_InitClk(void)553*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
554*53ee8cc1Swenshuai.xi {
555*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_KAPPA--------------\n"));
556*53ee8cc1Swenshuai.xi 
557*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
558*53ee8cc1Swenshuai.xi 
559*53ee8cc1Swenshuai.xi     // Init by HKMCU
560*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
561*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06);
562*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
563*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
564*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
565*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
566*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
567*53ee8cc1Swenshuai.xi 
568*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
569*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
570*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
571*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
572*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
573*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
574*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
575*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
576*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
577*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
578*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
579*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
580*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
581*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
582*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x00);
583*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x00);
584*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
585*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
586*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00);
587*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00);
588*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4c, 0x00);
589*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f23, 0x04);
590*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f22, 0x44);
591*53ee8cc1Swenshuai.xi 
592*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
593*53ee8cc1Swenshuai.xi }
594*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_EINSTEIN)
_HAL_INTERN_ISDBT_InitClk(void)595*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
596*53ee8cc1Swenshuai.xi {
597*53ee8cc1Swenshuai.xi     MS_U8 u8Val = 0;
598*53ee8cc1Swenshuai.xi 
599*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_EINSTEIN--------------\n"));
600*53ee8cc1Swenshuai.xi 
601*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
602*53ee8cc1Swenshuai.xi 
603*53ee8cc1Swenshuai.xi     // Init by HKMCU
604*53ee8cc1Swenshuai.xi     u8Val = _HAL_DMD_RIU_ReadByte(0x11208E);    //dan add to clear bit 0
605*53ee8cc1Swenshuai.xi     u8Val &= ~0x01;
606*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x11208E, u8Val);
607*53ee8cc1Swenshuai.xi 
608*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
609*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
610*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06);
611*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
612*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
613*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
614*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
615*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
616*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f28, 0x03);
617*53ee8cc1Swenshuai.xi 
618*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
619*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
620*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
621*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
622*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
623*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
624*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
625*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
626*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
627*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
628*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
629*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
630*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
631*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
632*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x00);
633*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x00);
634*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f46, 0x01);
635*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
636*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
637*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00);
638*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00);
639*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4c, 0x00);
640*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f23, 0x04);
641*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f22, 0x44);
642*53ee8cc1Swenshuai.xi 
643*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
644*53ee8cc1Swenshuai.xi }
645*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_NAPOLI)
_HAL_INTERN_ISDBT_InitClk(void)646*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_InitClk(void) /* Ok */
647*53ee8cc1Swenshuai.xi {
648*53ee8cc1Swenshuai.xi     MS_U8 u8Val = 0;
649*53ee8cc1Swenshuai.xi 
650*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_NAPOLI--------------\n"));
651*53ee8cc1Swenshuai.xi 
652*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
653*53ee8cc1Swenshuai.xi 
654*53ee8cc1Swenshuai.xi     // Init by HKMCU
655*53ee8cc1Swenshuai.xi     u8Val = _HAL_DMD_RIU_ReadByte(0x11208E);    //dan add to clear bit 0
656*53ee8cc1Swenshuai.xi     u8Val &= ~0x01;
657*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x11208E, u8Val);
658*53ee8cc1Swenshuai.xi 
659*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
660*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
661*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06); //ts clock = 7.2M
662*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
663*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
664*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
665*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
666*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
667*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f28, 0x03);
668*53ee8cc1Swenshuai.xi 
669*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
670*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
671*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
672*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
673*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
674*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
675*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
676*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
677*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
678*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
679*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
680*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
681*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
682*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
683*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x00);
684*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x00);
685*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f46, 0x01);
686*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
687*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
688*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00);
689*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00);
690*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4c, 0x00);
691*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f23, 0x04);
692*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f22, 0x44);
693*53ee8cc1Swenshuai.xi 
694*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
695*53ee8cc1Swenshuai.xi }
696*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MONACO)
_HAL_INTERN_ISDBT_InitClk(void)697*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
698*53ee8cc1Swenshuai.xi {
699*53ee8cc1Swenshuai.xi     MS_U8 u8Val = 0;
700*53ee8cc1Swenshuai.xi 
701*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_MONACO--------------\n"));
702*53ee8cc1Swenshuai.xi 
703*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
704*53ee8cc1Swenshuai.xi 
705*53ee8cc1Swenshuai.xi     // Init by HKMCU
706*53ee8cc1Swenshuai.xi     u8Val = _HAL_DMD_RIU_ReadByte(0x11208E);    //dan add to clear bit 0
707*53ee8cc1Swenshuai.xi     u8Val &= ~0x01;
708*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x11208E, u8Val);
709*53ee8cc1Swenshuai.xi 
710*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
711*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
712*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06); //ts clock = 7.2M
713*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
714*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
715*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
716*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
717*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
718*53ee8cc1Swenshuai.xi 
719*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
720*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
721*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
722*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
723*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
724*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
725*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
726*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
727*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
728*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
729*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
730*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
731*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
732*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
733*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x00);
734*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x00);
735*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f46, 0x01);
736*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
737*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
738*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00);
739*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00);
740*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4c, 0x00);
741*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f23, 0x04);
742*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f22, 0x44);
743*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f71, 0x14);
744*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f70, 0x41);
745*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f77, 0x00);
746*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f76, 0x00);
747*53ee8cc1Swenshuai.xi 
748*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
749*53ee8cc1Swenshuai.xi }
750*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MIAMI)
_HAL_INTERN_ISDBT_InitClk(void)751*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
752*53ee8cc1Swenshuai.xi {
753*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_MIAMI--------------\n"));
754*53ee8cc1Swenshuai.xi 
755*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
756*53ee8cc1Swenshuai.xi 
757*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
758*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
759*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06); //ts clock = 7.2M
760*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
761*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
762*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
763*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
764*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
765*53ee8cc1Swenshuai.xi 
766*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
767*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
768*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
769*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
770*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
771*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
772*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
773*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
774*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
775*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
776*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
777*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
778*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
779*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
780*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x00);
781*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x00);
782*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f46, 0x01);
783*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
784*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
785*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00);
786*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00);
787*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4d, 0x00); //inner clock
788*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4c, 0x00);
789*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4e, 0x00); //outer clock
790*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f23, 0x04);
791*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f22, 0x44);
792*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f51, 0x00); //cci lms clock
793*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f50, 0x88); //cci lms clock
794*53ee8cc1Swenshuai.xi 
795*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
796*53ee8cc1Swenshuai.xi }
797*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MUJI)
_HAL_INTERN_ISDBT_InitClk(void)798*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
799*53ee8cc1Swenshuai.xi {
800*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_MUJI--------------\n"));
801*53ee8cc1Swenshuai.xi 
802*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
803*53ee8cc1Swenshuai.xi 
804*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
805*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06); //ts clock = 7.2M
806*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
807*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
808*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
809*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
810*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
811*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
812*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
813*53ee8cc1Swenshuai.xi 
814*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f29, 0x00);
815*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f28, 0x10);
816*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
817*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
818*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
819*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
820*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
821*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
822*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
823*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
824*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
825*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
826*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
827*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
828*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
829*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
830*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x44);
831*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x44);
832*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f46, 0x01);
833*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
834*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
835*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00);
836*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00);
837*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4d, 0x00); //inner clock
838*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4c, 0x40);
839*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f23, 0x04);
840*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f22, 0x44);
841*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f71, 0x14);
842*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f70, 0x41);
843*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f77, 0x00);
844*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f76, 0x00);
845*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4f, 0x01);
846*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4e, 0x00);
847*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x112091, 0x46);
848*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x112090, 0x00);
849*53ee8cc1Swenshuai.xi 
850*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
851*53ee8cc1Swenshuai.xi }
852*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MUNICH)
_HAL_INTERN_ISDBT_InitClk(void)853*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
854*53ee8cc1Swenshuai.xi {
855*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_MUNICH--------------\n"));
856*53ee8cc1Swenshuai.xi 
857*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
858*53ee8cc1Swenshuai.xi 
859*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
860*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
861*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06); //ts clock = 7.2M
862*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
863*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
864*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
865*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
866*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
867*53ee8cc1Swenshuai.xi 
868*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
869*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
870*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
871*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
872*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
873*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
874*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
875*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
876*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
877*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
878*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
879*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
880*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
881*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
882*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x00);
883*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x00);
884*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f46, 0x01);
885*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
886*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
887*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00);
888*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00);
889*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4d, 0x00); //inner clock
890*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4c, 0x00);
891*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4e, 0x00); //outer clock
892*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f23, 0x04);
893*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f22, 0x44);
894*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f51, 0x00); //cci lms clock
895*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f50, 0x88); //cci lms clock
896*53ee8cc1Swenshuai.xi 
897*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
898*53ee8cc1Swenshuai.xi }
899*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MANHATTAN)
_HAL_INTERN_ISDBT_InitClk(void)900*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
901*53ee8cc1Swenshuai.xi {
902*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_MANHATTAN--------------\n"));
903*53ee8cc1Swenshuai.xi 
904*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
905*53ee8cc1Swenshuai.xi 
906*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
907*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06); //ts clock = 7.2M
908*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
909*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
910*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
911*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
912*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
913*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
914*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
915*53ee8cc1Swenshuai.xi 
916*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f29, 0x00);
917*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f28, 0x10);
918*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
919*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
920*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
921*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
922*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
923*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
924*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
925*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
926*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
927*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
928*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
929*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
930*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
931*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
932*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x44);
933*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x44);
934*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f46, 0x01);
935*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
936*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
937*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00);
938*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00);
939*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4d, 0x00); //inner clock
940*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4c, 0x40);
941*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f23, 0x04);
942*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f22, 0x44);
943*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f71, 0x14);
944*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f70, 0x41);
945*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f77, 0x00);
946*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f76, 0x00);
947*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4f, 0x01);
948*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4e, 0x00);
949*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f81, 0x44);
950*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f80, 0x44);
951*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f83, 0x44);
952*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f82, 0x44);
953*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f85, 0x44);
954*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f84, 0x44);
955*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f87, 0x44);
956*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f86, 0x44);
957*53ee8cc1Swenshuai.xi 
958*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
959*53ee8cc1Swenshuai.xi }
960*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MULAN)
_HAL_INTERN_ISDBT_InitClk(void)961*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
962*53ee8cc1Swenshuai.xi {
963*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_MULAN--------------\n"));
964*53ee8cc1Swenshuai.xi 
965*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
966*53ee8cc1Swenshuai.xi 
967*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
968*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
969*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06); //ts clock = 7.2M
970*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
971*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
972*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
973*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
974*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
975*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x01); //reset ts divider
976*53ee8cc1Swenshuai.xi 
977*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f28, 0x10);
978*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
979*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
980*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
981*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
982*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f25, 0x04);
983*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f31, 0x00);
984*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f30, 0x01);
985*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x80);
986*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x08);
987*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f24, 0x05);
988*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x00);
989*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x00);
990*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f63, 0x00);
991*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f62, 0x00);
992*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f65, 0x44);
993*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f64, 0x44);
994*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f66, 0x01);
995*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f69, 0x00);
996*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f68, 0x00);
997*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6b, 0x00);
998*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6a, 0x00);
999*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6d, 0x00);
1000*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6c, 0x40);
1001*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6f, 0x01);
1002*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6e, 0x00);
1003*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f71, 0x44);
1004*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f70, 0x44);
1005*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f73, 0x00);
1006*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f72, 0x04);
1007*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f75, 0x44);
1008*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f74, 0x44);
1009*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f77, 0x44);
1010*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f76, 0x44);
1011*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f79, 0x44);
1012*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f78, 0x44);
1013*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7b, 0x44);
1014*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7a, 0x44);
1015*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7d, 0x44);
1016*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7c, 0x44);
1017*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7f, 0x44);
1018*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7e, 0x44);
1019*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe1, 0x01);
1020*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe0, 0x88);
1021*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe3, 0x08);
1022*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe2, 0x10);
1023*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111feb, 0x11);
1024*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fea, 0x00);
1025*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fef, 0x00);
1026*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fee, 0x88);
1027*53ee8cc1Swenshuai.xi 
1028*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x00); //reset ts divider
1029*53ee8cc1Swenshuai.xi 
1030*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
1031*53ee8cc1Swenshuai.xi }
1032*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MESSI) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MAINZ)
_HAL_INTERN_ISDBT_InitClk(void)1033*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
1034*53ee8cc1Swenshuai.xi {
1035*53ee8cc1Swenshuai.xi     #if (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MESSI)
1036*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_MESSI--------------\n"));
1037*53ee8cc1Swenshuai.xi     #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MAINZ)
1038*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_MAINZ--------------\n"));
1039*53ee8cc1Swenshuai.xi     #endif
1040*53ee8cc1Swenshuai.xi 
1041*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
1042*53ee8cc1Swenshuai.xi 
1043*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1044*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06); //ts clock = 7.2M
1045*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
1046*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1047*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1048*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1049*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1050*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
1051*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
1052*53ee8cc1Swenshuai.xi 
1053*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f29, 0x00);
1054*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f28, 0x10);
1055*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1056*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
1057*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
1058*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
1059*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
1060*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
1061*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
1062*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
1063*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1064*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
1065*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
1066*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
1067*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
1068*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
1069*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x44);
1070*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x44);
1071*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f46, 0x01);
1072*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
1073*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
1074*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00);
1075*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00);
1076*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4d, 0x00); //inner clock
1077*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4c, 0x40);
1078*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f23, 0x04);
1079*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f22, 0x44);
1080*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f71, 0x14);
1081*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f70, 0x41);
1082*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f77, 0x00);
1083*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f76, 0x00);
1084*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4f, 0x0C);
1085*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f4e, 0x00);
1086*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f51, 0x48);
1087*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f50, 0x44);
1088*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f81, 0x44);
1089*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f80, 0x44);
1090*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f83, 0x44);
1091*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f82, 0x44);
1092*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f85, 0x44);
1093*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f84, 0x44);
1094*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f87, 0x44);
1095*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f86, 0x44);
1096*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f89, 0x44);
1097*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f88, 0x44);
1098*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f8b, 0x00);
1099*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f8a, 0x44);
1100*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f8d, 0x18);
1101*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f8c, 0x44);
1102*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f8f, 0x00);
1103*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f8e, 0x44);
1104*53ee8cc1Swenshuai.xi 
1105*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
1106*53ee8cc1Swenshuai.xi }
1107*53ee8cc1Swenshuai.xi 
1108*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MASERATI)
_HAL_INTERN_ISDBT_InitClk(void)1109*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
1110*53ee8cc1Swenshuai.xi {
1111*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_MASERATI--------------\n"));
1112*53ee8cc1Swenshuai.xi 
1113*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
1114*53ee8cc1Swenshuai.xi 
1115*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1128d0, 0x01);
1116*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
1117*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1118*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06); //ts clock = 7.2M
1119*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
1120*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1121*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1122*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
1123*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
1124*53ee8cc1Swenshuai.xi 
1125*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1126*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
1127*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1128*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1129*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1128d0, 0x00);
1130*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1131*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
1132*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f25, 0x04);
1133*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f31, 0x00);
1134*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f30, 0x01);
1135*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f3b, 0x00);
1136*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f3a, 0x00);
1137*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x80);
1138*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x08);
1139*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x04);
1140*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x44);
1141*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f63, 0x00);
1142*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f62, 0x00);
1143*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f65, 0x44);
1144*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f64, 0x44);
1145*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f66, 0x01);
1146*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f69, 0x00);
1147*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f68, 0x00);
1148*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6b, 0x00);
1149*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6a, 0x00);
1150*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6d, 0x00);
1151*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6c, 0x40);
1152*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6f, 0x01);
1153*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6e, 0x00);
1154*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f71, 0x44);
1155*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f70, 0x44);
1156*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f73, 0x00);
1157*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f72, 0x04);
1158*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f75, 0x44);
1159*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f74, 0x44);
1160*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f77, 0x44);
1161*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f76, 0x44);
1162*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f79, 0x44);
1163*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f78, 0x44);
1164*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7b, 0x44);
1165*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7a, 0x44);
1166*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7d, 0x44);
1167*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7c, 0x44);
1168*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7f, 0x44);
1169*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7e, 0x44);
1170*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe1, 0x01);
1171*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe0, 0x08);
1172*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111ff0, 0x08);
1173*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe3, 0x08);
1174*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe2, 0x10);
1175*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111feb, 0x11);
1176*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fea, 0x00);
1177*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fef, 0x00);
1178*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fee, 0x88);
1179*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x15298f, 0x44);
1180*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x15298e, 0x44);
1181*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152991, 0x44);
1182*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152990, 0x44);
1183*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152992, 0x04);
1184*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1529e5, 0x00);
1185*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1529e4, 0x04);
1186*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152971, 0x10);
1187*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152970, 0x01);
1188*53ee8cc1Swenshuai.xi 
1189*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
1190*53ee8cc1Swenshuai.xi }
1191*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MACAN)
_HAL_INTERN_ISDBT_InitClk(void)1192*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
1193*53ee8cc1Swenshuai.xi {
1194*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_MACAN--------------\n"));
1195*53ee8cc1Swenshuai.xi 
1196*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
1197*53ee8cc1Swenshuai.xi 
1198*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1128d0, 0x01);
1199*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
1200*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1201*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06); //ts clock = 7.2M
1202*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
1203*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1204*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1205*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
1206*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
1207*53ee8cc1Swenshuai.xi 
1208*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1209*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
1210*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1211*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1212*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1128d0, 0x00);
1213*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1214*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
1215*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f25, 0x04);
1216*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f31, 0x00);
1217*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f30, 0x01);
1218*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f3b, 0x00);
1219*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f3a, 0x00);
1220*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x80);
1221*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x08);
1222*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x04);
1223*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x44);
1224*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f63, 0x00);
1225*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f62, 0x00);
1226*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f65, 0x44);
1227*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f64, 0x44);
1228*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f66, 0x01);
1229*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f69, 0x00);
1230*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f68, 0x00);
1231*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6b, 0x00);
1232*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6a, 0x00);
1233*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6d, 0x00);
1234*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6c, 0x40);
1235*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6f, 0x01);
1236*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6e, 0x00);
1237*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f71, 0x44);
1238*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f70, 0x44);
1239*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f73, 0x00);
1240*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f72, 0x04);
1241*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f75, 0x44);
1242*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f74, 0x44);
1243*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f77, 0x44);
1244*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f76, 0x44);
1245*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f79, 0x44);
1246*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f78, 0x44);
1247*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7b, 0x44);
1248*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7a, 0x44);
1249*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7d, 0x44);
1250*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7c, 0x44);
1251*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7f, 0x44);
1252*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7e, 0x44);
1253*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe1, 0x01);
1254*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe0, 0x08);
1255*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111ff0, 0x08);
1256*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe3, 0x08);
1257*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe2, 0x10);
1258*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111feb, 0x11);
1259*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fea, 0x00);
1260*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fef, 0x00);
1261*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fee, 0x88);
1262*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x15298f, 0x44);
1263*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x15298e, 0x44);
1264*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152991, 0x44);
1265*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152990, 0x44);
1266*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152992, 0x04);
1267*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1529e5, 0x00);
1268*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1529e4, 0x04);
1269*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152971, 0x10);
1270*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152970, 0x01);
1271*53ee8cc1Swenshuai.xi 
1272*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
1273*53ee8cc1Swenshuai.xi }
1274*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MUSTANG)
_HAL_INTERN_ISDBT_InitClk(void)1275*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
1276*53ee8cc1Swenshuai.xi {
1277*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_MUSTANG--------------\n"));
1278*53ee8cc1Swenshuai.xi 
1279*53ee8cc1Swenshuai.xi     // SRAM End Address
1280*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111707,0xff);
1281*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111706,0xff);
1282*53ee8cc1Swenshuai.xi 
1283*53ee8cc1Swenshuai.xi     // DRAM Disable
1284*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111718,_HAL_DMD_RIU_ReadByte(0x111718)&(~0x04));
1285*53ee8cc1Swenshuai.xi 
1286*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
1287*53ee8cc1Swenshuai.xi 
1288*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1128d0, 0x01);
1289*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
1290*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1291*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06); //ts clock = 7.2M
1292*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
1293*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1294*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1295*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
1296*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
1297*53ee8cc1Swenshuai.xi 
1298*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1299*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
1300*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1301*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1302*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1128d0, 0x00);
1303*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1304*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
1305*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f25, 0x04);
1306*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f31, 0x00);
1307*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f30, 0x01);
1308*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f3b, 0x00);
1309*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f3a, 0x00);
1310*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x80);
1311*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x08);
1312*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x04);
1313*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x44);
1314*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f63, 0x00);
1315*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f62, 0x00);
1316*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f65, 0x44);
1317*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f64, 0x44);
1318*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f66, 0x01);
1319*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f69, 0x00);
1320*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f68, 0x00);
1321*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6b, 0x00);
1322*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6a, 0x00);
1323*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6d, 0x00);
1324*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6c, 0x40);
1325*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6f, 0x01);
1326*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6e, 0x00);
1327*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f71, 0x44);
1328*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f70, 0x44);
1329*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f73, 0x00);
1330*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f72, 0x04);
1331*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f75, 0x44);
1332*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f74, 0x44);
1333*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f77, 0x44);
1334*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f76, 0x44);
1335*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f79, 0x44);
1336*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f78, 0x44);
1337*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7b, 0x44);
1338*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7a, 0x44);
1339*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7d, 0x44);
1340*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7c, 0x44);
1341*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7f, 0x44);
1342*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7e, 0x44);
1343*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe1, 0x01);
1344*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe0, 0x08);
1345*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111ff0, 0x08);
1346*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe3, 0x08);
1347*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe2, 0x10);
1348*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111feb, 0x11);
1349*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fea, 0x00);
1350*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fef, 0x00);
1351*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fee, 0x88);
1352*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x15298f, 0x44);
1353*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x15298e, 0x44);
1354*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152991, 0x44);
1355*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152990, 0x44);
1356*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152992, 0x04);
1357*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1529e5, 0x00);
1358*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1529e4, 0x04);
1359*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152971, 0x10);
1360*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152970, 0x01);
1361*53ee8cc1Swenshuai.xi 
1362*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
1363*53ee8cc1Swenshuai.xi }
1364*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MAXIM)
_HAL_INTERN_ISDBT_InitClk(void)1365*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
1366*53ee8cc1Swenshuai.xi {
1367*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_MAXIM--------------\n"));
1368*53ee8cc1Swenshuai.xi 
1369*53ee8cc1Swenshuai.xi     // SRAM End Address
1370*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111707,0xff);
1371*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111706,0xff);
1372*53ee8cc1Swenshuai.xi 
1373*53ee8cc1Swenshuai.xi     // DRAM Disable
1374*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111718,_HAL_DMD_RIU_ReadByte(0x111718)&(~0x04));
1375*53ee8cc1Swenshuai.xi 
1376*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
1377*53ee8cc1Swenshuai.xi 
1378*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1128e5, 0x01); // DMD_ANA_ADC_SYNC CLK_W
1379*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1128e4, 0x01); // DMD_ANA_ADC_SYNC CLK_W
1380*53ee8cc1Swenshuai.xi 
1381*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
1382*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1383*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x06); //ts clock = 7.2M
1384*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
1385*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1386*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1387*53ee8cc1Swenshuai.xi     //_HAL_DMD_RIU_WriteByte(0x103315, 0x00); //ADC SYNC FLOW
1388*53ee8cc1Swenshuai.xi     //_HAL_DMD_RIU_WriteByte(0x103314, 0x00); //ADC SYNC FLOW
1389*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
1390*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
1391*53ee8cc1Swenshuai.xi 
1392*53ee8cc1Swenshuai.xi     //_HAL_DMD_RIU_WriteByte(0x103321, 0x00); //Add in MAXIM //ADC SYNC FLOW
1393*53ee8cc1Swenshuai.xi     //_HAL_DMD_RIU_WriteByte(0x103320, 0x00); //Add in MAXIM //ADC SYNC FLOW
1394*53ee8cc1Swenshuai.xi 
1395*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1396*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
1397*53ee8cc1Swenshuai.xi 
1398*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103321, 0x00); //ADC_SYNC CLK_W / DMD_ANA_ADC_SYNC CLK_R
1399*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103320, 0x00); //ADC_SYNC CLK_W / DMD_ANA_ADC_SYNC CLK_R
1400*53ee8cc1Swenshuai.xi 
1401*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1128e4, 0x00); // DMD_ANA_ADC_SYNC CLK_W
1402*53ee8cc1Swenshuai.xi 
1403*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1404*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
1405*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f25, 0x04);
1406*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f31, 0x00);
1407*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f30, 0x01);
1408*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f3b, 0x00);
1409*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f3a, 0x00);
1410*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x80);
1411*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x08);
1412*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x04);
1413*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x44);
1414*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f63, 0x00);
1415*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f62, 0x00);
1416*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f65, 0x44);
1417*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f64, 0x44);
1418*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f66, 0x01);
1419*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f69, 0x00);
1420*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f68, 0x00);
1421*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6b, 0x00);
1422*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6a, 0x00);
1423*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6d, 0x00);
1424*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6c, 0x40);
1425*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6f, 0x01);
1426*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6e, 0x00);
1427*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f71, 0x44);
1428*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f70, 0x44);
1429*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f73, 0x00);
1430*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f72, 0x04);
1431*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f75, 0x44);
1432*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f74, 0x44);
1433*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f77, 0x44);
1434*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f76, 0x44);
1435*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f79, 0x44);
1436*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f78, 0x44);
1437*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7b, 0x44);
1438*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7a, 0x44);
1439*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7d, 0x44);
1440*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7c, 0x44);
1441*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7f, 0x44);
1442*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7e, 0x44);
1443*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe1, 0x01);
1444*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe0, 0x08);
1445*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111ff0, 0x08);
1446*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe3, 0x08);
1447*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe2, 0x10);
1448*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111feb, 0x11);
1449*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fea, 0x00);
1450*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fef, 0x00);
1451*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fee, 0x88);
1452*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x15298f, 0x44);
1453*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x15298e, 0x44);
1454*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152991, 0x44);
1455*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152990, 0x44);
1456*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152992, 0x04);
1457*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1529e5, 0x00);
1458*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1529e4, 0x04);
1459*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152971, 0x10);
1460*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152970, 0x01);
1461*53ee8cc1Swenshuai.xi 
1462*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
1463*53ee8cc1Swenshuai.xi     //_HAL_DMD_RIU_WriteByteMask(0x103480, 0x00, 0x02);
1464*53ee8cc1Swenshuai.xi }
1465*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MARLON)
_HAL_INTERN_ISDBT_InitClk(void)1466*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
1467*53ee8cc1Swenshuai.xi {
1468*53ee8cc1Swenshuai.xi     printf("--------------DMD_ISDBT_CHIP_MARLON--------------\n");
1469*53ee8cc1Swenshuai.xi 
1470*53ee8cc1Swenshuai.xi     // SRAM End Address
1471*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111707,0xff);
1472*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111706,0xff);
1473*53ee8cc1Swenshuai.xi 
1474*53ee8cc1Swenshuai.xi     // DRAM Disable
1475*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111718,_HAL_DMD_RIU_ReadByte(0x111718)&(~0x04));
1476*53ee8cc1Swenshuai.xi 
1477*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
1478*53ee8cc1Swenshuai.xi 
1479*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
1480*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1481*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x26); //ts clock = 7.2M
1482*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x13);
1483*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1484*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1485*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1486*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1487*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
1488*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
1489*53ee8cc1Swenshuai.xi 
1490*53ee8cc1Swenshuai.xi     //_HAL_DMD_RIU_WriteByte(0x103321, 0x00); //Add in MAXIM
1491*53ee8cc1Swenshuai.xi     //_HAL_DMD_RIU_WriteByte(0x103320, 0x00); //Add in MAXIM
1492*53ee8cc1Swenshuai.xi 
1493*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1494*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
1495*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1496*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
1497*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f25, 0x04);
1498*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f31, 0x00);
1499*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f30, 0x01);
1500*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f3b, 0x00);
1501*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f3a, 0x00);
1502*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x80);
1503*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x08);
1504*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x04);
1505*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x44);
1506*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f63, 0x00);
1507*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f62, 0x00);
1508*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f65, 0x44);
1509*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f64, 0x44);
1510*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f66, 0x01);
1511*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f69, 0x00);
1512*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f68, 0x00);
1513*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6b, 0x00);
1514*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6a, 0x00);
1515*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6d, 0x00);
1516*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6c, 0x40);
1517*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6f, 0x01);
1518*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6e, 0x00);
1519*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f71, 0x44);
1520*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f70, 0x44);
1521*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f73, 0x00);
1522*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f72, 0x04);
1523*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f75, 0x44);
1524*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f74, 0x44);
1525*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f77, 0x44);
1526*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f76, 0x44);
1527*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f79, 0x44);
1528*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f78, 0x44);
1529*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7b, 0x44);
1530*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7a, 0x44);
1531*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7d, 0x44);
1532*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7c, 0x44);
1533*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7f, 0x44);
1534*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7e, 0x44);
1535*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe1, 0x01);
1536*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe0, 0x08);
1537*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111ff0, 0x08);
1538*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe3, 0x08);
1539*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe2, 0x10);
1540*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111feb, 0x11);
1541*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fea, 0x00);
1542*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fef, 0x00);
1543*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fee, 0x88);
1544*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x15298f, 0x44);
1545*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x15298e, 0x44);
1546*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152991, 0x44);
1547*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152990, 0x44);
1548*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152992, 0x04);
1549*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1529e5, 0x00);
1550*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1529e4, 0x04);
1551*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152971, 0x10);
1552*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152970, 0x01);
1553*53ee8cc1Swenshuai.xi 
1554*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
1555*53ee8cc1Swenshuai.xi      //_HAL_DMD_RIU_WriteByteMask(0x103480, 0x00, 0x02);
1556*53ee8cc1Swenshuai.xi }
1557*53ee8cc1Swenshuai.xi #elif (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_KENTUCKY)
_HAL_INTERN_ISDBT_InitClk(void)1558*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
1559*53ee8cc1Swenshuai.xi {
1560*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("--------------DMD_ISDBT_CHIP_KENTUCKY--------------\n"));
1561*53ee8cc1Swenshuai.xi 
1562*53ee8cc1Swenshuai.xi     // SRAM End Address
1563*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x163407,0xff);
1564*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x163406,0xff);
1565*53ee8cc1Swenshuai.xi 
1566*53ee8cc1Swenshuai.xi     // DRAM Disable
1567*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x163418,_HAL_DMD_RIU_ReadByte(0x163418)&(~0x04));
1568*53ee8cc1Swenshuai.xi 
1569*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
1570*53ee8cc1Swenshuai.xi 
1571*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
1572*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1573*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103301, 0x30); //ts clock = 7.2M
1574*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103300, 0x0b);
1575*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1576*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1577*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1578*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1579*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
1580*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
1581*53ee8cc1Swenshuai.xi 
1582*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1583*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
1584*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1585*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
1586*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f25, 0x04);
1587*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f31, 0x00);
1588*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f30, 0x01);
1589*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f3b, 0x00);
1590*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f3a, 0x00);
1591*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f43, 0x80);
1592*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f42, 0x08);
1593*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f45, 0x04);
1594*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f44, 0x44);
1595*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f63, 0x00);
1596*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f62, 0x00);
1597*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f65, 0x44);
1598*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f64, 0x44);
1599*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f66, 0x01);
1600*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f69, 0x00);
1601*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f68, 0x00);
1602*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6b, 0x00);
1603*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6a, 0x00);
1604*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6d, 0x00);
1605*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6c, 0x40);
1606*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6f, 0x01);
1607*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f6e, 0x00);
1608*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f71, 0x44);
1609*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f70, 0x44);
1610*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f73, 0x00);
1611*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f72, 0x44);
1612*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f75, 0x44);
1613*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f74, 0x44);
1614*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f77, 0x44);
1615*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f76, 0x44);
1616*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f79, 0x44);
1617*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f78, 0x44);
1618*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7b, 0x44);
1619*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7a, 0x44);
1620*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7d, 0x44);
1621*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7c, 0x44);
1622*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7f, 0x44);
1623*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111f7e, 0x44);
1624*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe1, 0x01);
1625*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe0, 0x08);
1626*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111ff0, 0x08);
1627*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe3, 0x08);
1628*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fe2, 0x10);
1629*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111feb, 0x11);
1630*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fea, 0x00);
1631*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fef, 0x00);
1632*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x111fee, 0x88);
1633*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x15298f, 0x44);
1634*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x15298e, 0x44);
1635*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152991, 0x44);
1636*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152990, 0x44);
1637*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152992, 0x04);
1638*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1529e5, 0x00);
1639*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x1529e4, 0x04);
1640*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152971, 0x10);
1641*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(0x152970, 0x01);
1642*53ee8cc1Swenshuai.xi 
1643*53ee8cc1Swenshuai.xi     if ((_HAL_DMD_RIU_ReadByte(0x0e00+2*0x64) & 0x03) == 2)
1644*53ee8cc1Swenshuai.xi     {
1645*53ee8cc1Swenshuai.xi         _HAL_DMD_RIU_WriteByte(0x112830,0x01);
1646*53ee8cc1Swenshuai.xi         _HAL_DMD_RIU_WriteByte(0x112831,0x00);
1647*53ee8cc1Swenshuai.xi         _HAL_DMD_RIU_WriteByte(0x1128b2,0x11);
1648*53ee8cc1Swenshuai.xi     }
1649*53ee8cc1Swenshuai.xi     else
1650*53ee8cc1Swenshuai.xi     {
1651*53ee8cc1Swenshuai.xi         _HAL_DMD_RIU_WriteByte(0x112830,0x00);
1652*53ee8cc1Swenshuai.xi         _HAL_DMD_RIU_WriteByte(0x112831,0x01);
1653*53ee8cc1Swenshuai.xi         _HAL_DMD_RIU_WriteByte(0x1128b2,0x21);
1654*53ee8cc1Swenshuai.xi     }
1655*53ee8cc1Swenshuai.xi 
1656*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
1657*53ee8cc1Swenshuai.xi }
1658*53ee8cc1Swenshuai.xi 
1659*53ee8cc1Swenshuai.xi #else
_HAL_INTERN_ISDBT_InitClk(void)1660*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_InitClk(void)
1661*53ee8cc1Swenshuai.xi {
1662*53ee8cc1Swenshuai.xi     printf("--------------DMD_ISDBT_CHIP_NONE--------------\n");
1663*53ee8cc1Swenshuai.xi }
1664*53ee8cc1Swenshuai.xi #endif
1665*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_Ready(void)1666*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_Ready(void)
1667*53ee8cc1Swenshuai.xi {
1668*53ee8cc1Swenshuai.xi     MS_U8 udata = 0x00;
1669*53ee8cc1Swenshuai.xi 
1670*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(MBRegBase + 0x1E, 0x02);
1671*53ee8cc1Swenshuai.xi 
1672*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)|0x02);    // assert interrupt to VD MCU51
1673*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)&(~0x02)); // de-assert interrupt to VD MCU51
1674*53ee8cc1Swenshuai.xi 
1675*53ee8cc1Swenshuai.xi     MsOS_DelayTask(1);
1676*53ee8cc1Swenshuai.xi 
1677*53ee8cc1Swenshuai.xi     udata = _HAL_DMD_RIU_ReadByte(MBRegBase + 0x1E);
1678*53ee8cc1Swenshuai.xi 
1679*53ee8cc1Swenshuai.xi     if (udata) return FALSE;
1680*53ee8cc1Swenshuai.xi 
1681*53ee8cc1Swenshuai.xi     return TRUE;
1682*53ee8cc1Swenshuai.xi }
1683*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_Download(void)1684*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_Download(void)
1685*53ee8cc1Swenshuai.xi {
1686*53ee8cc1Swenshuai.xi     DMD_ISDBT_ResData *pRes = psDMD_ISDBT_ResData + u8DMD_ISDBT_DMD_ID;
1687*53ee8cc1Swenshuai.xi 
1688*53ee8cc1Swenshuai.xi     MS_U8  udata = 0x00;
1689*53ee8cc1Swenshuai.xi     MS_U16 i = 0;
1690*53ee8cc1Swenshuai.xi     MS_U16 fail_cnt = 0;
1691*53ee8cc1Swenshuai.xi     MS_U8  u8TmpData;
1692*53ee8cc1Swenshuai.xi     MS_U16 u16AddressOffset;
1693*53ee8cc1Swenshuai.xi     const MS_U8 *ISDBT_table;
1694*53ee8cc1Swenshuai.xi     MS_U16 u16Lib_size;
1695*53ee8cc1Swenshuai.xi 
1696*53ee8cc1Swenshuai.xi     if (pRes->sDMD_ISDBT_PriData.bDownloaded)
1697*53ee8cc1Swenshuai.xi     {
1698*53ee8cc1Swenshuai.xi         if (_HAL_INTERN_ISDBT_Ready())
1699*53ee8cc1Swenshuai.xi         {
1700*53ee8cc1Swenshuai.xi             #if DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MUSTANG
1701*53ee8cc1Swenshuai.xi             _HAL_DMD_RIU_WriteByteMask(DMDMcuBase+0x00, 0x02, 0x02); // reset RIU remapping
1702*53ee8cc1Swenshuai.xi             #endif
1703*53ee8cc1Swenshuai.xi             _HAL_DMD_RIU_WriteByteMask(DMDMcuBase+0x00, 0x01, 0x01); // reset VD_MCU
1704*53ee8cc1Swenshuai.xi             _HAL_DMD_RIU_WriteByteMask(DMDMcuBase+0x00, 0x00, 0x03);
1705*53ee8cc1Swenshuai.xi 
1706*53ee8cc1Swenshuai.xi             MsOS_DelayTask(20);
1707*53ee8cc1Swenshuai.xi             return TRUE;
1708*53ee8cc1Swenshuai.xi         }
1709*53ee8cc1Swenshuai.xi     }
1710*53ee8cc1Swenshuai.xi 
1711*53ee8cc1Swenshuai.xi     ISDBT_table = &INTERN_ISDBT_table[0];
1712*53ee8cc1Swenshuai.xi     u16Lib_size = sizeof(INTERN_ISDBT_table);
1713*53ee8cc1Swenshuai.xi 
1714*53ee8cc1Swenshuai.xi     #if DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MUSTANG
1715*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(DMDMcuBase+0x00, 0x02, 0x02); // reset RIU remapping
1716*53ee8cc1Swenshuai.xi     #endif
1717*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(DMDMcuBase+0x00, 0x01, 0x01); // reset VD_MCU
1718*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x01, 0x00); // disable SRAM
1719*53ee8cc1Swenshuai.xi 
1720*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(DMDMcuBase+0x00, 0x00, 0x01); // release MCU, madison patch
1721*53ee8cc1Swenshuai.xi 
1722*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x03, 0x50); // enable "vdmcu51_if"
1723*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x03, 0x51); // enable auto-increase
1724*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x04, 0x00); // sram address low byte
1725*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x05, 0x00); // sram address high byte
1726*53ee8cc1Swenshuai.xi 
1727*53ee8cc1Swenshuai.xi     ////  Load code thru VDMCU_IF ////
1728*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf(">Load Code...\n"));
1729*53ee8cc1Swenshuai.xi 
1730*53ee8cc1Swenshuai.xi     for (i = 0; i < u16Lib_size; i++)
1731*53ee8cc1Swenshuai.xi     {
1732*53ee8cc1Swenshuai.xi         _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, ISDBT_table[i]); // write data to VD MCU 51 code sram
1733*53ee8cc1Swenshuai.xi     }
1734*53ee8cc1Swenshuai.xi 
1735*53ee8cc1Swenshuai.xi     ////  Content verification ////
1736*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf(">Verify Code...\n"));
1737*53ee8cc1Swenshuai.xi 
1738*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x04, 0x00); // sram address low byte
1739*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x05, 0x00); // sram address high byte
1740*53ee8cc1Swenshuai.xi 
1741*53ee8cc1Swenshuai.xi     for (i = 0; i < u16Lib_size; i++)
1742*53ee8cc1Swenshuai.xi     {
1743*53ee8cc1Swenshuai.xi         udata = _HAL_DMD_RIU_ReadByte(DMDMcuBase+0x10); // read sram data
1744*53ee8cc1Swenshuai.xi 
1745*53ee8cc1Swenshuai.xi         if (udata != ISDBT_table[i])
1746*53ee8cc1Swenshuai.xi         {
1747*53ee8cc1Swenshuai.xi             HAL_INTERN_ISDBT_DBINFO(printf(">fail add = 0x%x\n", i));
1748*53ee8cc1Swenshuai.xi             HAL_INTERN_ISDBT_DBINFO(printf(">code = 0x%x\n", INTERN_ISDBT_table[i]));
1749*53ee8cc1Swenshuai.xi             HAL_INTERN_ISDBT_DBINFO(printf(">data = 0x%x\n", udata));
1750*53ee8cc1Swenshuai.xi 
1751*53ee8cc1Swenshuai.xi             if (fail_cnt++ > 10)
1752*53ee8cc1Swenshuai.xi             {
1753*53ee8cc1Swenshuai.xi                 HAL_INTERN_ISDBT_DBINFO(printf(">DSP Loadcode fail!"));
1754*53ee8cc1Swenshuai.xi                 return FALSE;
1755*53ee8cc1Swenshuai.xi             }
1756*53ee8cc1Swenshuai.xi         }
1757*53ee8cc1Swenshuai.xi     }
1758*53ee8cc1Swenshuai.xi 
1759*53ee8cc1Swenshuai.xi     u16AddressOffset = (ISDBT_table[0x400] << 8)|ISDBT_table[0x401];
1760*53ee8cc1Swenshuai.xi 
1761*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x04, (u16AddressOffset&0xFF)); // sram address low byte
1762*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x05, (u16AddressOffset>>8));   // sram address high byte
1763*53ee8cc1Swenshuai.xi 
1764*53ee8cc1Swenshuai.xi     u8TmpData = (MS_U8)pRes->sDMD_ISDBT_InitData.u16IF_KHZ;
1765*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
1766*53ee8cc1Swenshuai.xi     u8TmpData = (MS_U8)(pRes->sDMD_ISDBT_InitData.u16IF_KHZ >> 8);
1767*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
1768*53ee8cc1Swenshuai.xi     u8TmpData = (MS_U8)pRes->sDMD_ISDBT_InitData.bIQSwap;
1769*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
1770*53ee8cc1Swenshuai.xi     u8TmpData = (MS_U8)pRes->sDMD_ISDBT_InitData.u16AgcReferenceValue;
1771*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
1772*53ee8cc1Swenshuai.xi     u8TmpData = (MS_U8)(pRes->sDMD_ISDBT_InitData.u16AgcReferenceValue >> 8);
1773*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
1774*53ee8cc1Swenshuai.xi     u8TmpData = (MS_U8)pRes->sDMD_ISDBT_InitData.u32TdiStartAddr;
1775*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
1776*53ee8cc1Swenshuai.xi     u8TmpData = (MS_U8)(pRes->sDMD_ISDBT_InitData.u32TdiStartAddr >> 8);
1777*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
1778*53ee8cc1Swenshuai.xi     u8TmpData = (MS_U8)(pRes->sDMD_ISDBT_InitData.u32TdiStartAddr >> 16);
1779*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
1780*53ee8cc1Swenshuai.xi     u8TmpData = (MS_U8)(pRes->sDMD_ISDBT_InitData.u32TdiStartAddr >> 24);
1781*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
1782*53ee8cc1Swenshuai.xi 
1783*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x03, 0x50); // diable auto-increase
1784*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x03, 0x00); // disable "vdmcu51_if"
1785*53ee8cc1Swenshuai.xi 
1786*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(DMDMcuBase+0x00, 0x01, 0x01); // reset MCU, madison patch
1787*53ee8cc1Swenshuai.xi 
1788*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x01, 0x01); // enable SRAM
1789*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByteMask(DMDMcuBase+0x00, 0x00, 0x03); // release VD_MCU
1790*53ee8cc1Swenshuai.xi 
1791*53ee8cc1Swenshuai.xi     pRes->sDMD_ISDBT_PriData.bDownloaded = true;
1792*53ee8cc1Swenshuai.xi 
1793*53ee8cc1Swenshuai.xi     MsOS_DelayTask(20);
1794*53ee8cc1Swenshuai.xi 
1795*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf(">DSP Loadcode done."));
1796*53ee8cc1Swenshuai.xi 
1797*53ee8cc1Swenshuai.xi     return TRUE;
1798*53ee8cc1Swenshuai.xi }
1799*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_FWVERSION(void)1800*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ISDBT_FWVERSION(void)
1801*53ee8cc1Swenshuai.xi {
1802*53ee8cc1Swenshuai.xi     MS_U8 data1 = 0;
1803*53ee8cc1Swenshuai.xi     MS_U8 data2 = 0;
1804*53ee8cc1Swenshuai.xi     MS_U8 data3 = 0;
1805*53ee8cc1Swenshuai.xi 
1806*53ee8cc1Swenshuai.xi     _MBX_ReadReg(0x20C4, &data1);
1807*53ee8cc1Swenshuai.xi     _MBX_ReadReg(0x20C5, &data2);
1808*53ee8cc1Swenshuai.xi     _MBX_ReadReg(0x20C6, &data3);
1809*53ee8cc1Swenshuai.xi 
1810*53ee8cc1Swenshuai.xi     printf("INTERN_ISDBT_FW_VERSION:%x.%x.%x\n", data1, data2, data3);
1811*53ee8cc1Swenshuai.xi }
1812*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_Exit(void)1813*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_Exit(void)
1814*53ee8cc1Swenshuai.xi {
1815*53ee8cc1Swenshuai.xi     MS_U8 u8CheckCount = 0;
1816*53ee8cc1Swenshuai.xi     #if (DMD_ISDBT_CHIP_VERSION < DMD_ISDBT_CHIP_MULAN) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MESSI) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_KIWI)
1817*53ee8cc1Swenshuai.xi     MS_U8 u8RegValTmp = 0;
1818*53ee8cc1Swenshuai.xi 
1819*53ee8cc1Swenshuai.xi     u8RegValTmp = _HAL_DMD_RIU_ReadByte(0x101200+ISDBT_MIU_CLIENTW_ADDR);
1820*53ee8cc1Swenshuai.xi     if (u8RegValTmp & ISDBT_MIU_CLIENTW_BIT_MASK)
1821*53ee8cc1Swenshuai.xi     {
1822*53ee8cc1Swenshuai.xi        _HAL_DMD_RIU_WriteByteMask(0x100600+ISDBT_MIU_CLIENTW_MASK, ISDBT_MIU_CLIENTW_BIT_MASK, ISDBT_MIU_CLIENTW_BIT_MASK);
1823*53ee8cc1Swenshuai.xi        _HAL_DMD_RIU_WriteByteMask(0x100600+ISDBT_MIU_CLIENTR_MASK, ISDBT_MIU_CLIENTR_BIT_MASK, ISDBT_MIU_CLIENTR_BIT_MASK);
1824*53ee8cc1Swenshuai.xi     }
1825*53ee8cc1Swenshuai.xi     else
1826*53ee8cc1Swenshuai.xi     {
1827*53ee8cc1Swenshuai.xi        _HAL_DMD_RIU_WriteByteMask(0x101200+ISDBT_MIU_CLIENTW_MASK, ISDBT_MIU_CLIENTW_BIT_MASK, ISDBT_MIU_CLIENTW_BIT_MASK);
1828*53ee8cc1Swenshuai.xi        _HAL_DMD_RIU_WriteByteMask(0x101200+ISDBT_MIU_CLIENTR_MASK, ISDBT_MIU_CLIENTR_BIT_MASK, ISDBT_MIU_CLIENTR_BIT_MASK);
1829*53ee8cc1Swenshuai.xi     }
1830*53ee8cc1Swenshuai.xi     #endif
1831*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(MBRegBase + 0x1C, 0x01);
1832*53ee8cc1Swenshuai.xi 
1833*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)|0x02);    // assert interrupt to VD MCU51
1834*53ee8cc1Swenshuai.xi     _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)&(~0x02)); // de-assert interrupt to VD MCU51
1835*53ee8cc1Swenshuai.xi 
1836*53ee8cc1Swenshuai.xi     while ((_HAL_DMD_RIU_ReadByte(MBRegBase + 0x1C)&0x02) != 0x02)
1837*53ee8cc1Swenshuai.xi     {
1838*53ee8cc1Swenshuai.xi         MsOS_DelayTaskUs(10);
1839*53ee8cc1Swenshuai.xi 
1840*53ee8cc1Swenshuai.xi         if (u8CheckCount++ == 0xFF)
1841*53ee8cc1Swenshuai.xi         {
1842*53ee8cc1Swenshuai.xi             printf(">> ISDBT Exit Fail!\n");
1843*53ee8cc1Swenshuai.xi             return FALSE;
1844*53ee8cc1Swenshuai.xi         }
1845*53ee8cc1Swenshuai.xi     }
1846*53ee8cc1Swenshuai.xi 
1847*53ee8cc1Swenshuai.xi     printf(">> ISDBT Exit Ok!\n");
1848*53ee8cc1Swenshuai.xi 
1849*53ee8cc1Swenshuai.xi     return TRUE;
1850*53ee8cc1Swenshuai.xi }
1851*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_SoftReset(void)1852*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_SoftReset(void)
1853*53ee8cc1Swenshuai.xi {
1854*53ee8cc1Swenshuai.xi     MS_U8 u8Data = 0;
1855*53ee8cc1Swenshuai.xi 
1856*53ee8cc1Swenshuai.xi     #if (DMD_ISDBT_CHIP_VERSION < DMD_ISDBT_CHIP_MULAN) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MESSI) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_KIWI)
1857*53ee8cc1Swenshuai.xi     MS_U8 u8RegValTmp = 0;
1858*53ee8cc1Swenshuai.xi 
1859*53ee8cc1Swenshuai.xi     u8RegValTmp = _HAL_DMD_RIU_ReadByte(0x101200+ISDBT_MIU_CLIENTW_ADDR);
1860*53ee8cc1Swenshuai.xi     if (u8RegValTmp & ISDBT_MIU_CLIENTW_BIT_MASK)
1861*53ee8cc1Swenshuai.xi     {
1862*53ee8cc1Swenshuai.xi        _HAL_DMD_RIU_WriteByteMask(0x100600+ISDBT_MIU_CLIENTW_MASK, ISDBT_MIU_CLIENTW_BIT_MASK, ISDBT_MIU_CLIENTW_BIT_MASK);
1863*53ee8cc1Swenshuai.xi        _HAL_DMD_RIU_WriteByteMask(0x100600+ISDBT_MIU_CLIENTR_MASK, ISDBT_MIU_CLIENTR_BIT_MASK, ISDBT_MIU_CLIENTR_BIT_MASK);
1864*53ee8cc1Swenshuai.xi     }
1865*53ee8cc1Swenshuai.xi     else
1866*53ee8cc1Swenshuai.xi     {
1867*53ee8cc1Swenshuai.xi        _HAL_DMD_RIU_WriteByteMask(0x101200+ISDBT_MIU_CLIENTW_MASK, ISDBT_MIU_CLIENTW_BIT_MASK, ISDBT_MIU_CLIENTW_BIT_MASK);
1868*53ee8cc1Swenshuai.xi        _HAL_DMD_RIU_WriteByteMask(0x101200+ISDBT_MIU_CLIENTR_MASK, ISDBT_MIU_CLIENTR_BIT_MASK, ISDBT_MIU_CLIENTR_BIT_MASK);
1869*53ee8cc1Swenshuai.xi     }
1870*53ee8cc1Swenshuai.xi     #endif
1871*53ee8cc1Swenshuai.xi 
1872*53ee8cc1Swenshuai.xi     //Reset FSM
1873*53ee8cc1Swenshuai.xi     if (_MBX_WriteReg(0x20C0, 0x00)==FALSE) return FALSE;
1874*53ee8cc1Swenshuai.xi 
1875*53ee8cc1Swenshuai.xi     while (u8Data!=0x02)
1876*53ee8cc1Swenshuai.xi     {
1877*53ee8cc1Swenshuai.xi         if (_MBX_ReadReg(0x20C1, &u8Data)==FALSE) return FALSE;
1878*53ee8cc1Swenshuai.xi     }
1879*53ee8cc1Swenshuai.xi 
1880*53ee8cc1Swenshuai.xi     return TRUE;
1881*53ee8cc1Swenshuai.xi }
1882*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_SetACICoef(void)1883*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_SetACICoef(void)
1884*53ee8cc1Swenshuai.xi {
1885*53ee8cc1Swenshuai.xi     return TRUE;
1886*53ee8cc1Swenshuai.xi }
1887*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_SetIsdbtMode(void)1888*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_SetIsdbtMode(void)
1889*53ee8cc1Swenshuai.xi {
1890*53ee8cc1Swenshuai.xi     #if (DMD_ISDBT_CHIP_VERSION < DMD_ISDBT_CHIP_MULAN) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_MESSI) || (DMD_ISDBT_CHIP_VERSION == DMD_ISDBT_CHIP_KIWI)
1891*53ee8cc1Swenshuai.xi     MS_U8 u8RegValTmp = 0;
1892*53ee8cc1Swenshuai.xi 
1893*53ee8cc1Swenshuai.xi     u8RegValTmp = _HAL_DMD_RIU_ReadByte(0x101200+ISDBT_MIU_CLIENTW_ADDR);
1894*53ee8cc1Swenshuai.xi     if (u8RegValTmp & ISDBT_MIU_CLIENTW_BIT_MASK)
1895*53ee8cc1Swenshuai.xi     {
1896*53ee8cc1Swenshuai.xi        _HAL_DMD_RIU_WriteByteMask(0x100600+ISDBT_MIU_CLIENTW_MASK, 0, ISDBT_MIU_CLIENTW_BIT_MASK);
1897*53ee8cc1Swenshuai.xi        _HAL_DMD_RIU_WriteByteMask(0x100600+ISDBT_MIU_CLIENTR_MASK, 0, ISDBT_MIU_CLIENTR_BIT_MASK);
1898*53ee8cc1Swenshuai.xi     }
1899*53ee8cc1Swenshuai.xi     else
1900*53ee8cc1Swenshuai.xi     {
1901*53ee8cc1Swenshuai.xi        _HAL_DMD_RIU_WriteByteMask(0x101200+ISDBT_MIU_CLIENTW_MASK, 0, ISDBT_MIU_CLIENTW_BIT_MASK);
1902*53ee8cc1Swenshuai.xi        _HAL_DMD_RIU_WriteByteMask(0x101200+ISDBT_MIU_CLIENTR_MASK, 0, ISDBT_MIU_CLIENTR_BIT_MASK);
1903*53ee8cc1Swenshuai.xi     }
1904*53ee8cc1Swenshuai.xi     #endif
1905*53ee8cc1Swenshuai.xi 
1906*53ee8cc1Swenshuai.xi     if (_MBX_WriteReg(0x20C2, 0x04)==FALSE) return FALSE;
1907*53ee8cc1Swenshuai.xi     return _MBX_WriteReg(0x20C0, 0x04);
1908*53ee8cc1Swenshuai.xi }
1909*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_SetModeClean(void)1910*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_SetModeClean(void)
1911*53ee8cc1Swenshuai.xi {
1912*53ee8cc1Swenshuai.xi     if (_MBX_WriteReg(0x20C2, 0x07)==FALSE) return FALSE;
1913*53ee8cc1Swenshuai.xi     return _MBX_WriteReg(0x20C0, 0x00);
1914*53ee8cc1Swenshuai.xi }
1915*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_Check_FEC_Lock(void)1916*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_Check_FEC_Lock(void)
1917*53ee8cc1Swenshuai.xi {
1918*53ee8cc1Swenshuai.xi     MS_BOOL bCheckPass = FALSE;
1919*53ee8cc1Swenshuai.xi     MS_U8   u8Data = 0;
1920*53ee8cc1Swenshuai.xi 
1921*53ee8cc1Swenshuai.xi     _MBX_ReadReg(REG_ISDBT_LOCK_STATUS, &u8Data);
1922*53ee8cc1Swenshuai.xi 
1923*53ee8cc1Swenshuai.xi     if ((u8Data & 0x02) != 0x00) // Check FEC Lock Flag
1924*53ee8cc1Swenshuai.xi         bCheckPass = TRUE;
1925*53ee8cc1Swenshuai.xi 
1926*53ee8cc1Swenshuai.xi     return bCheckPass;
1927*53ee8cc1Swenshuai.xi }
1928*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_Check_FSA_TRACK_Lock(void)1929*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_Check_FSA_TRACK_Lock(void)
1930*53ee8cc1Swenshuai.xi {
1931*53ee8cc1Swenshuai.xi     MS_BOOL bCheckPass = FALSE;
1932*53ee8cc1Swenshuai.xi     MS_U8   u8Data = 0;
1933*53ee8cc1Swenshuai.xi 
1934*53ee8cc1Swenshuai.xi     _MBX_ReadReg(REG_ISDBT_LOCK_STATUS, &u8Data);
1935*53ee8cc1Swenshuai.xi 
1936*53ee8cc1Swenshuai.xi     if ((u8Data & 0x01) != 0x00) // Check FSA Track Lock Flag
1937*53ee8cc1Swenshuai.xi         bCheckPass = TRUE;
1938*53ee8cc1Swenshuai.xi 
1939*53ee8cc1Swenshuai.xi     return bCheckPass;
1940*53ee8cc1Swenshuai.xi }
1941*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_Check_PSYNC_Lock(void)1942*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_Check_PSYNC_Lock(void)
1943*53ee8cc1Swenshuai.xi {
1944*53ee8cc1Swenshuai.xi     MS_BOOL bCheckPass = FALSE;
1945*53ee8cc1Swenshuai.xi     MS_U8   u8Data = 0;
1946*53ee8cc1Swenshuai.xi 
1947*53ee8cc1Swenshuai.xi     _MBX_ReadReg(REG_ISDBT_LOCK_STATUS, &u8Data);
1948*53ee8cc1Swenshuai.xi 
1949*53ee8cc1Swenshuai.xi     if ((u8Data & 0x04) != 0x00) // Check Psync Lock Flag
1950*53ee8cc1Swenshuai.xi         bCheckPass = TRUE;
1951*53ee8cc1Swenshuai.xi 
1952*53ee8cc1Swenshuai.xi     return bCheckPass;
1953*53ee8cc1Swenshuai.xi }
1954*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_Check_ICFO_CH_EXIST_Lock(void)1955*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_Check_ICFO_CH_EXIST_Lock(void)
1956*53ee8cc1Swenshuai.xi {
1957*53ee8cc1Swenshuai.xi     MS_BOOL bCheckPass = FALSE;
1958*53ee8cc1Swenshuai.xi     MS_U8   u8Data = 0;
1959*53ee8cc1Swenshuai.xi 
1960*53ee8cc1Swenshuai.xi     _MBX_ReadReg(REG_ISDBT_LOCK_STATUS, &u8Data);
1961*53ee8cc1Swenshuai.xi 
1962*53ee8cc1Swenshuai.xi     if ((u8Data & 0x80) != 0x00) // Check Psync Lock Flag
1963*53ee8cc1Swenshuai.xi         bCheckPass = TRUE;
1964*53ee8cc1Swenshuai.xi 
1965*53ee8cc1Swenshuai.xi     return bCheckPass;
1966*53ee8cc1Swenshuai.xi }
1967*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_GetSignalCodeRate(EN_ISDBT_Layer eLayerIndex,EN_ISDBT_CODE_RATE * peIsdbtCodeRate)1968*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetSignalCodeRate(EN_ISDBT_Layer eLayerIndex, EN_ISDBT_CODE_RATE *peIsdbtCodeRate)
1969*53ee8cc1Swenshuai.xi {
1970*53ee8cc1Swenshuai.xi     MS_BOOL bRet = TRUE;
1971*53ee8cc1Swenshuai.xi     MS_U8 u8Data = 0;
1972*53ee8cc1Swenshuai.xi     MS_U8 u8CodeRate = 0;
1973*53ee8cc1Swenshuai.xi 
1974*53ee8cc1Swenshuai.xi     switch (eLayerIndex)
1975*53ee8cc1Swenshuai.xi     {
1976*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_A:
1977*53ee8cc1Swenshuai.xi             // [10:8] reg_tmcc_cur_convolution_code_rate_a
1978*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE+0x04*2+1, &u8Data);
1979*53ee8cc1Swenshuai.xi             u8CodeRate = u8Data & 0x07;
1980*53ee8cc1Swenshuai.xi             break;
1981*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_B:
1982*53ee8cc1Swenshuai.xi             // [10:8] reg_tmcc_cur_convolution_code_rate_b
1983*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE+0x05*2+1, &u8Data);
1984*53ee8cc1Swenshuai.xi             u8CodeRate = u8Data & 0x07;
1985*53ee8cc1Swenshuai.xi             break;
1986*53ee8cc1Swenshuai.xi        case E_ISDBT_Layer_C:
1987*53ee8cc1Swenshuai.xi             // [10:8] reg_tmcc_cur_convolution_code_rate_c
1988*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE+0x06*2+1, &u8Data);
1989*53ee8cc1Swenshuai.xi             u8CodeRate = u8Data & 0x07;
1990*53ee8cc1Swenshuai.xi             break;
1991*53ee8cc1Swenshuai.xi        default:
1992*53ee8cc1Swenshuai.xi             u8CodeRate = 15;
1993*53ee8cc1Swenshuai.xi             break;
1994*53ee8cc1Swenshuai.xi     }
1995*53ee8cc1Swenshuai.xi 
1996*53ee8cc1Swenshuai.xi     switch (u8CodeRate)
1997*53ee8cc1Swenshuai.xi     {
1998*53ee8cc1Swenshuai.xi         case 0:
1999*53ee8cc1Swenshuai.xi             *peIsdbtCodeRate = E_ISDBT_CODERATE_1_2;
2000*53ee8cc1Swenshuai.xi             break;
2001*53ee8cc1Swenshuai.xi         case 1:
2002*53ee8cc1Swenshuai.xi             *peIsdbtCodeRate = E_ISDBT_CODERATE_2_3;
2003*53ee8cc1Swenshuai.xi             break;
2004*53ee8cc1Swenshuai.xi         case 2:
2005*53ee8cc1Swenshuai.xi             *peIsdbtCodeRate = E_ISDBT_CODERATE_3_4;
2006*53ee8cc1Swenshuai.xi             break;
2007*53ee8cc1Swenshuai.xi         case 3:
2008*53ee8cc1Swenshuai.xi             *peIsdbtCodeRate = E_ISDBT_CODERATE_5_6;
2009*53ee8cc1Swenshuai.xi             break;
2010*53ee8cc1Swenshuai.xi         case 4:
2011*53ee8cc1Swenshuai.xi             *peIsdbtCodeRate = E_ISDBT_CODERATE_7_8;
2012*53ee8cc1Swenshuai.xi             break;
2013*53ee8cc1Swenshuai.xi         default:
2014*53ee8cc1Swenshuai.xi             *peIsdbtCodeRate = E_ISDBT_CODERATE_INVALID;
2015*53ee8cc1Swenshuai.xi             break;
2016*53ee8cc1Swenshuai.xi     }
2017*53ee8cc1Swenshuai.xi 
2018*53ee8cc1Swenshuai.xi     return bRet;
2019*53ee8cc1Swenshuai.xi }
2020*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_GetSignalGuardInterval(EN_ISDBT_GUARD_INTERVAL * peIsdbtGI)2021*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetSignalGuardInterval(EN_ISDBT_GUARD_INTERVAL *peIsdbtGI)
2022*53ee8cc1Swenshuai.xi {
2023*53ee8cc1Swenshuai.xi     MS_BOOL bRet = TRUE;
2024*53ee8cc1Swenshuai.xi     MS_U8 u8Data = 0;
2025*53ee8cc1Swenshuai.xi     MS_U8 u8CP = 0;
2026*53ee8cc1Swenshuai.xi 
2027*53ee8cc1Swenshuai.xi     // [7:6] reg_mcd_out_cp
2028*53ee8cc1Swenshuai.xi     // output cp -> 00: 1/4
2029*53ee8cc1Swenshuai.xi     //                    01: 1/8
2030*53ee8cc1Swenshuai.xi     //                    10: 1/16
2031*53ee8cc1Swenshuai.xi     //                    11: 1/32
2032*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_TDP_REG_BASE+0x34*2, &u8Data);
2033*53ee8cc1Swenshuai.xi 
2034*53ee8cc1Swenshuai.xi     u8CP  = (u8Data >> 6) & 0x03;
2035*53ee8cc1Swenshuai.xi 
2036*53ee8cc1Swenshuai.xi     switch (u8CP)
2037*53ee8cc1Swenshuai.xi     {
2038*53ee8cc1Swenshuai.xi         case 0:
2039*53ee8cc1Swenshuai.xi             *peIsdbtGI = E_ISDBT_GUARD_INTERVAL_1_4;
2040*53ee8cc1Swenshuai.xi             break;
2041*53ee8cc1Swenshuai.xi         case 1:
2042*53ee8cc1Swenshuai.xi             *peIsdbtGI = E_ISDBT_GUARD_INTERVAL_1_8;
2043*53ee8cc1Swenshuai.xi             break;
2044*53ee8cc1Swenshuai.xi         case 2:
2045*53ee8cc1Swenshuai.xi             *peIsdbtGI = E_ISDBT_GUARD_INTERVAL_1_16;
2046*53ee8cc1Swenshuai.xi             break;
2047*53ee8cc1Swenshuai.xi         case 3:
2048*53ee8cc1Swenshuai.xi             *peIsdbtGI = E_ISDBT_GUARD_INTERVAL_1_32;
2049*53ee8cc1Swenshuai.xi             break;
2050*53ee8cc1Swenshuai.xi     }
2051*53ee8cc1Swenshuai.xi 
2052*53ee8cc1Swenshuai.xi     return bRet;
2053*53ee8cc1Swenshuai.xi }
2054*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_GetSignalTimeInterleaving(EN_ISDBT_Layer eLayerIndex,EN_ISDBT_TIME_INTERLEAVING * peIsdbtTDI)2055*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetSignalTimeInterleaving(EN_ISDBT_Layer eLayerIndex, EN_ISDBT_TIME_INTERLEAVING *peIsdbtTDI)
2056*53ee8cc1Swenshuai.xi {
2057*53ee8cc1Swenshuai.xi     MS_BOOL bRet = TRUE;
2058*53ee8cc1Swenshuai.xi     MS_U8 u8Data = 0;
2059*53ee8cc1Swenshuai.xi     MS_U8 u8Mode = 0;
2060*53ee8cc1Swenshuai.xi     MS_U8 u8Tdi = 0;
2061*53ee8cc1Swenshuai.xi 
2062*53ee8cc1Swenshuai.xi     // [5:4] reg_mcd_out_mode
2063*53ee8cc1Swenshuai.xi     // output mode  -> 00: 2k
2064*53ee8cc1Swenshuai.xi     //                         01: 4k
2065*53ee8cc1Swenshuai.xi     //                         10: 8k
2066*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_TDP_REG_BASE+0x34*2, &u8Data);
2067*53ee8cc1Swenshuai.xi 
2068*53ee8cc1Swenshuai.xi     u8Mode  = (u8Data >> 4) & 0x03;
2069*53ee8cc1Swenshuai.xi 
2070*53ee8cc1Swenshuai.xi     switch (eLayerIndex)
2071*53ee8cc1Swenshuai.xi     {
2072*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_A:
2073*53ee8cc1Swenshuai.xi             // [14:12] reg_tmcc_cur_interleaving_length_a
2074*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE+0x04*2+1, &u8Data);
2075*53ee8cc1Swenshuai.xi             u8Tdi = (u8Data >> 4) & 0x07;
2076*53ee8cc1Swenshuai.xi             break;
2077*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_B:
2078*53ee8cc1Swenshuai.xi             // [14:12] reg_tmcc_cur_interleaving_length_b
2079*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE+0x05*2+1, &u8Data);
2080*53ee8cc1Swenshuai.xi             u8Tdi = (u8Data >> 4) & 0x07;
2081*53ee8cc1Swenshuai.xi             break;
2082*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_C:
2083*53ee8cc1Swenshuai.xi             // [14:12] reg_tmcc_cur_interleaving_length_c
2084*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE+0x06*2+1, &u8Data);
2085*53ee8cc1Swenshuai.xi             u8Tdi = (u8Data >> 4) & 0x07;
2086*53ee8cc1Swenshuai.xi             break;
2087*53ee8cc1Swenshuai.xi        default:
2088*53ee8cc1Swenshuai.xi             u8Tdi = 15;
2089*53ee8cc1Swenshuai.xi             break;
2090*53ee8cc1Swenshuai.xi     }
2091*53ee8cc1Swenshuai.xi 
2092*53ee8cc1Swenshuai.xi     // u8Tdi+u8Mode*4
2093*53ee8cc1Swenshuai.xi     // => 0~3: 2K
2094*53ee8cc1Swenshuai.xi     // => 4~7: 4K
2095*53ee8cc1Swenshuai.xi     // => 8~11:8K
2096*53ee8cc1Swenshuai.xi     switch (u8Tdi+u8Mode*4)
2097*53ee8cc1Swenshuai.xi     {
2098*53ee8cc1Swenshuai.xi         case 0:
2099*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_2K_TDI_0;
2100*53ee8cc1Swenshuai.xi             break;
2101*53ee8cc1Swenshuai.xi         case 1:
2102*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_2K_TDI_4;
2103*53ee8cc1Swenshuai.xi             break;
2104*53ee8cc1Swenshuai.xi         case 2:
2105*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_2K_TDI_8;
2106*53ee8cc1Swenshuai.xi             break;
2107*53ee8cc1Swenshuai.xi         case 3:
2108*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_2K_TDI_16;
2109*53ee8cc1Swenshuai.xi             break;
2110*53ee8cc1Swenshuai.xi         case 4:
2111*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_4K_TDI_0;
2112*53ee8cc1Swenshuai.xi             break;
2113*53ee8cc1Swenshuai.xi         case 5:
2114*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_4K_TDI_2;
2115*53ee8cc1Swenshuai.xi             break;
2116*53ee8cc1Swenshuai.xi         case 6:
2117*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_4K_TDI_4;
2118*53ee8cc1Swenshuai.xi             break;
2119*53ee8cc1Swenshuai.xi         case 7:
2120*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_4K_TDI_8;
2121*53ee8cc1Swenshuai.xi             break;
2122*53ee8cc1Swenshuai.xi         case 8:
2123*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_8K_TDI_0;
2124*53ee8cc1Swenshuai.xi             break;
2125*53ee8cc1Swenshuai.xi         case 9:
2126*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_8K_TDI_1;
2127*53ee8cc1Swenshuai.xi             break;
2128*53ee8cc1Swenshuai.xi         case 10:
2129*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_8K_TDI_2;
2130*53ee8cc1Swenshuai.xi             break;
2131*53ee8cc1Swenshuai.xi         case 11:
2132*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_8K_TDI_4;
2133*53ee8cc1Swenshuai.xi             break;
2134*53ee8cc1Swenshuai.xi         default:
2135*53ee8cc1Swenshuai.xi             *peIsdbtTDI = E_ISDBT_TDI_INVALID;
2136*53ee8cc1Swenshuai.xi             break;
2137*53ee8cc1Swenshuai.xi     }
2138*53ee8cc1Swenshuai.xi 
2139*53ee8cc1Swenshuai.xi     return bRet;
2140*53ee8cc1Swenshuai.xi }
2141*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_GetSignalFFTValue(EN_ISDBT_FFT_VAL * peIsdbtFFT)2142*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetSignalFFTValue(EN_ISDBT_FFT_VAL *peIsdbtFFT)
2143*53ee8cc1Swenshuai.xi {
2144*53ee8cc1Swenshuai.xi     MS_BOOL bRet = TRUE;
2145*53ee8cc1Swenshuai.xi     MS_U8 u8Data = 0;
2146*53ee8cc1Swenshuai.xi     MS_U8 u8Mode = 0;
2147*53ee8cc1Swenshuai.xi 
2148*53ee8cc1Swenshuai.xi     // [5:4]  reg_mcd_out_mode
2149*53ee8cc1Swenshuai.xi     // output mode  -> 00: 2k
2150*53ee8cc1Swenshuai.xi     //                         01: 4k
2151*53ee8cc1Swenshuai.xi     //                         10: 8k
2152*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_TDP_REG_BASE+0x34*2, &u8Data);
2153*53ee8cc1Swenshuai.xi 
2154*53ee8cc1Swenshuai.xi     u8Mode  = (u8Data >> 4) & 0x03;
2155*53ee8cc1Swenshuai.xi 
2156*53ee8cc1Swenshuai.xi     switch (u8Mode)
2157*53ee8cc1Swenshuai.xi     {
2158*53ee8cc1Swenshuai.xi         case 0:
2159*53ee8cc1Swenshuai.xi             *peIsdbtFFT = E_ISDBT_FFT_2K;
2160*53ee8cc1Swenshuai.xi             break;
2161*53ee8cc1Swenshuai.xi         case 1:
2162*53ee8cc1Swenshuai.xi             *peIsdbtFFT = E_ISDBT_FFT_4K;
2163*53ee8cc1Swenshuai.xi             break;
2164*53ee8cc1Swenshuai.xi         case 2:
2165*53ee8cc1Swenshuai.xi             *peIsdbtFFT = E_ISDBT_FFT_8K;
2166*53ee8cc1Swenshuai.xi             break;
2167*53ee8cc1Swenshuai.xi         default:
2168*53ee8cc1Swenshuai.xi             *peIsdbtFFT = E_ISDBT_FFT_INVALID;
2169*53ee8cc1Swenshuai.xi             break;
2170*53ee8cc1Swenshuai.xi     }
2171*53ee8cc1Swenshuai.xi 
2172*53ee8cc1Swenshuai.xi     return bRet;
2173*53ee8cc1Swenshuai.xi }
2174*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_GetSignalModulation(EN_ISDBT_Layer eLayerIndex,EN_ISDBT_CONSTEL_TYPE * peIsdbtConstellation)2175*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetSignalModulation(EN_ISDBT_Layer eLayerIndex, EN_ISDBT_CONSTEL_TYPE *peIsdbtConstellation)
2176*53ee8cc1Swenshuai.xi {
2177*53ee8cc1Swenshuai.xi     MS_BOOL bRet = TRUE;
2178*53ee8cc1Swenshuai.xi     MS_U8 u8Data = 0;
2179*53ee8cc1Swenshuai.xi     MS_U8 u8QAM = 0;
2180*53ee8cc1Swenshuai.xi 
2181*53ee8cc1Swenshuai.xi     switch(eLayerIndex)
2182*53ee8cc1Swenshuai.xi     {
2183*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_A:
2184*53ee8cc1Swenshuai.xi             // [6:4] reg_tmcc_cur_carrier_modulation_a
2185*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE+0x04*2, &u8Data);
2186*53ee8cc1Swenshuai.xi             u8QAM = (u8Data >> 4) & 0x07;
2187*53ee8cc1Swenshuai.xi             break;
2188*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_B:
2189*53ee8cc1Swenshuai.xi             // [6:4] reg_tmcc_cur_carrier_modulation_b
2190*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE+0x05*2, &u8Data);
2191*53ee8cc1Swenshuai.xi             u8QAM = (u8Data >> 4) & 0x07;
2192*53ee8cc1Swenshuai.xi             break;
2193*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_C:
2194*53ee8cc1Swenshuai.xi             // [6:4] reg_tmcc_cur_carrier_modulation_c
2195*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE+0x06*2, &u8Data);
2196*53ee8cc1Swenshuai.xi             u8QAM = (u8Data >> 4) & 0x07;
2197*53ee8cc1Swenshuai.xi             break;
2198*53ee8cc1Swenshuai.xi         default:
2199*53ee8cc1Swenshuai.xi             u8QAM = 15;
2200*53ee8cc1Swenshuai.xi             break;
2201*53ee8cc1Swenshuai.xi     }
2202*53ee8cc1Swenshuai.xi 
2203*53ee8cc1Swenshuai.xi     switch(u8QAM)
2204*53ee8cc1Swenshuai.xi     {
2205*53ee8cc1Swenshuai.xi         case 0:
2206*53ee8cc1Swenshuai.xi             *peIsdbtConstellation = E_ISDBT_DQPSK;
2207*53ee8cc1Swenshuai.xi             break;
2208*53ee8cc1Swenshuai.xi         case 1:
2209*53ee8cc1Swenshuai.xi             *peIsdbtConstellation = E_ISDBT_QPSK;
2210*53ee8cc1Swenshuai.xi             break;
2211*53ee8cc1Swenshuai.xi         case 2:
2212*53ee8cc1Swenshuai.xi             *peIsdbtConstellation = E_ISDBT_16QAM;
2213*53ee8cc1Swenshuai.xi             break;
2214*53ee8cc1Swenshuai.xi         case 3:
2215*53ee8cc1Swenshuai.xi             *peIsdbtConstellation = E_ISDBT_64QAM;
2216*53ee8cc1Swenshuai.xi             break;
2217*53ee8cc1Swenshuai.xi         default:
2218*53ee8cc1Swenshuai.xi             *peIsdbtConstellation = E_ISDBT_QAM_INVALID;
2219*53ee8cc1Swenshuai.xi             break;
2220*53ee8cc1Swenshuai.xi     }
2221*53ee8cc1Swenshuai.xi 
2222*53ee8cc1Swenshuai.xi     return bRet;
2223*53ee8cc1Swenshuai.xi }
2224*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_ReadIFAGC(void)2225*53ee8cc1Swenshuai.xi static MS_U8 _HAL_INTERN_ISDBT_ReadIFAGC(void)
2226*53ee8cc1Swenshuai.xi {
2227*53ee8cc1Swenshuai.xi     MS_U8 data = 0;
2228*53ee8cc1Swenshuai.xi 
2229*53ee8cc1Swenshuai.xi     _MBX_ReadReg(0x28FD, &data);
2230*53ee8cc1Swenshuai.xi 
2231*53ee8cc1Swenshuai.xi     return data;
2232*53ee8cc1Swenshuai.xi }
2233*53ee8cc1Swenshuai.xi 
2234*53ee8cc1Swenshuai.xi #ifdef UTPA2
_HAL_INTERN_ISDBT_GetFreqOffset(MS_U8 * pFFT_Mode,MS_S32 * pTdCfoRegValue,MS_S32 * pFdCfoRegValue,MS_S16 * pIcfoRegValue)2235*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetFreqOffset(MS_U8 *pFFT_Mode, MS_S32 *pTdCfoRegValue, MS_S32 *pFdCfoRegValue, MS_S16 *pIcfoRegValue)
2236*53ee8cc1Swenshuai.xi #else
2237*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetFreqOffset(float *pFreqOff)
2238*53ee8cc1Swenshuai.xi #endif
2239*53ee8cc1Swenshuai.xi {
2240*53ee8cc1Swenshuai.xi     MS_BOOL bRet = TRUE;
2241*53ee8cc1Swenshuai.xi     MS_U8   u8Data = 0;
2242*53ee8cc1Swenshuai.xi     MS_S32  s32TdCfoRegValue = 0;
2243*53ee8cc1Swenshuai.xi     MS_S32  s32FdCfoRegValue = 0;
2244*53ee8cc1Swenshuai.xi     MS_S16  s16IcfoRegValue = 0;
2245*53ee8cc1Swenshuai.xi     #ifndef UTPA2
2246*53ee8cc1Swenshuai.xi     float   fTdCfoFreq = 0.0;
2247*53ee8cc1Swenshuai.xi     float   fICfoFreq = 0.0;
2248*53ee8cc1Swenshuai.xi     float   fFdCfoFreq = 0.0;
2249*53ee8cc1Swenshuai.xi     #endif
2250*53ee8cc1Swenshuai.xi 
2251*53ee8cc1Swenshuai.xi     //Get TD CFO
2252*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_TDP_REG_BASE + 0x04, &u8Data);   //0x02 * 2
2253*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_TDP_REG_BASE + 0x04, (u8Data|0x01));
2254*53ee8cc1Swenshuai.xi 
2255*53ee8cc1Swenshuai.xi     //read td_freq_error
2256*53ee8cc1Swenshuai.xi     //Read <29,38>
2257*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_TDP_REG_BASE + 0x8A, &u8Data);   //0x45 * 2
2258*53ee8cc1Swenshuai.xi     s32TdCfoRegValue = u8Data;
2259*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_TDP_REG_BASE + 0x8B, &u8Data);   //0x45 * 2 + 1
2260*53ee8cc1Swenshuai.xi     s32TdCfoRegValue |= u8Data << 8;
2261*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_TDP_REG_BASE + 0x8C, &u8Data);   //0x46 * 2
2262*53ee8cc1Swenshuai.xi     s32TdCfoRegValue = u8Data << 16;
2263*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_TDP_REG_BASE + 0x8D, &u8Data);   //0x46 * 2 + 1
2264*53ee8cc1Swenshuai.xi     s32TdCfoRegValue |= u8Data << 24;
2265*53ee8cc1Swenshuai.xi 
2266*53ee8cc1Swenshuai.xi     if (u8Data >= 0x10)
2267*53ee8cc1Swenshuai.xi         s32TdCfoRegValue = 0xE0000000 | s32TdCfoRegValue;
2268*53ee8cc1Swenshuai.xi 
2269*53ee8cc1Swenshuai.xi     s32TdCfoRegValue >>=4;
2270*53ee8cc1Swenshuai.xi 
2271*53ee8cc1Swenshuai.xi     //TD_cfo_Hz = RegCfoTd * fb
2272*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_TDP_REG_BASE + 0x04, &u8Data);   //0x02 * 2
2273*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_TDP_REG_BASE + 0x04, (u8Data&~0x01));
2274*53ee8cc1Swenshuai.xi 
2275*53ee8cc1Swenshuai.xi     #ifndef UTPA2
2276*53ee8cc1Swenshuai.xi     fTdCfoFreq = ((float)s32TdCfoRegValue) / 17179869184.0; //<25,34>
2277*53ee8cc1Swenshuai.xi     fTdCfoFreq = fTdCfoFreq * 8126980.0;
2278*53ee8cc1Swenshuai.xi     #endif
2279*53ee8cc1Swenshuai.xi 
2280*53ee8cc1Swenshuai.xi     //Get FD CFO
2281*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0xFE, &u8Data);   //0x7f * 2
2282*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_FDP_REG_BASE + 0xFE, (u8Data|0x01));
2283*53ee8cc1Swenshuai.xi     //load
2284*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0xFF, &u8Data);   //0x7f * 2 + 1
2285*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_FDP_REG_BASE + 0xFF, (u8Data|0x01));
2286*53ee8cc1Swenshuai.xi 
2287*53ee8cc1Swenshuai.xi     //read CFO_KI
2288*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0x5E, &u8Data);   //0x2F * 2
2289*53ee8cc1Swenshuai.xi     s32FdCfoRegValue = u8Data;
2290*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0x5F, &u8Data);   //0x2F * 2 + 1
2291*53ee8cc1Swenshuai.xi     s32FdCfoRegValue |= u8Data << 8;
2292*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0x60, &u8Data);   //0x30 * 2
2293*53ee8cc1Swenshuai.xi     s32FdCfoRegValue |= u8Data << 16;
2294*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0x61, &u8Data);   //0x30 * 2
2295*53ee8cc1Swenshuai.xi     s32FdCfoRegValue |= u8Data << 24;
2296*53ee8cc1Swenshuai.xi 
2297*53ee8cc1Swenshuai.xi     if(u8Data >= 0x01)
2298*53ee8cc1Swenshuai.xi         s32FdCfoRegValue = 0xFE000000 | s32FdCfoRegValue;
2299*53ee8cc1Swenshuai.xi 
2300*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0xFE, &u8Data);   //0x7f * 2
2301*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_FDP_REG_BASE + 0xFE, (u8Data&~0x01));
2302*53ee8cc1Swenshuai.xi     //load
2303*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0xFF, &u8Data);   //0x7f * 2 + 1
2304*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_FDP_REG_BASE + 0xFF, (u8Data|0x01));
2305*53ee8cc1Swenshuai.xi 
2306*53ee8cc1Swenshuai.xi     #ifndef UTPA2
2307*53ee8cc1Swenshuai.xi     fFdCfoFreq = ((float)s32FdCfoRegValue) / 17179869184.0;
2308*53ee8cc1Swenshuai.xi     fFdCfoFreq = fFdCfoFreq * 8126980.0;
2309*53ee8cc1Swenshuai.xi     #endif
2310*53ee8cc1Swenshuai.xi 
2311*53ee8cc1Swenshuai.xi     //Get ICFO
2312*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0x5C, &u8Data);   //0x2E * 2
2313*53ee8cc1Swenshuai.xi     s16IcfoRegValue = u8Data;
2314*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0x5D, &u8Data);   //0x2E * 2 + 1
2315*53ee8cc1Swenshuai.xi     s16IcfoRegValue |= u8Data << 8;
2316*53ee8cc1Swenshuai.xi     s16IcfoRegValue = (s16IcfoRegValue >> 4) & 0x07FF;
2317*53ee8cc1Swenshuai.xi 
2318*53ee8cc1Swenshuai.xi     if(s16IcfoRegValue >= 0x400)
2319*53ee8cc1Swenshuai.xi         s16IcfoRegValue = s16IcfoRegValue | 0xFFFFF800;
2320*53ee8cc1Swenshuai.xi 
2321*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_TDP_REG_BASE + 0x68, &u8Data);   //0x34 * 2
2322*53ee8cc1Swenshuai.xi 
2323*53ee8cc1Swenshuai.xi     #ifdef UTPA2
2324*53ee8cc1Swenshuai.xi     *pFFT_Mode = u8Data;
2325*53ee8cc1Swenshuai.xi     *pTdCfoRegValue = s32TdCfoRegValue;
2326*53ee8cc1Swenshuai.xi     *pFdCfoRegValue = s32TdCfoRegValue;
2327*53ee8cc1Swenshuai.xi     *pIcfoRegValue = s16IcfoRegValue;
2328*53ee8cc1Swenshuai.xi     #else
2329*53ee8cc1Swenshuai.xi     if((u8Data & 0x30) == 0x0000) // 2k
2330*53ee8cc1Swenshuai.xi         fICfoFreq = (float)s16IcfoRegValue*250000.0/63.0;
2331*53ee8cc1Swenshuai.xi     else if((u8Data & 0x0030) == 0x0010)	// 4k
2332*53ee8cc1Swenshuai.xi         fICfoFreq = (float)s16IcfoRegValue*125000.0/63.0;
2333*53ee8cc1Swenshuai.xi     else //if(u16data & 0x0030 == 0x0020) // 8k
2334*53ee8cc1Swenshuai.xi         fICfoFreq = (float)s16IcfoRegValue*125000.0/126.0;
2335*53ee8cc1Swenshuai.xi 
2336*53ee8cc1Swenshuai.xi     *pFreqOff = fTdCfoFreq + fFdCfoFreq + fICfoFreq;
2337*53ee8cc1Swenshuai.xi 
2338*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("Total CFO value = %f\n", *pFreqOff));
2339*53ee8cc1Swenshuai.xi     #endif
2340*53ee8cc1Swenshuai.xi 
2341*53ee8cc1Swenshuai.xi     return bRet;
2342*53ee8cc1Swenshuai.xi }
2343*53ee8cc1Swenshuai.xi 
2344*53ee8cc1Swenshuai.xi #ifdef UTPA2
_HAL_INTERN_ISDBT_GetPreViterbiBer(EN_ISDBT_Layer eLayerIndex,MS_U32 * pBerValue,MS_U16 * pBerPeriod)2345*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetPreViterbiBer(EN_ISDBT_Layer eLayerIndex, MS_U32 *pBerValue, MS_U16 *pBerPeriod )
2346*53ee8cc1Swenshuai.xi #else
2347*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetPreViterbiBer(EN_ISDBT_Layer eLayerIndex, float *pfber)
2348*53ee8cc1Swenshuai.xi #endif
2349*53ee8cc1Swenshuai.xi {
2350*53ee8cc1Swenshuai.xi     MS_BOOL bRet = TRUE;
2351*53ee8cc1Swenshuai.xi     MS_U8   u8Data = 0;
2352*53ee8cc1Swenshuai.xi     MS_U16  u16BerValue = 0;
2353*53ee8cc1Swenshuai.xi     MS_U32  u32BerPeriod = 0;
2354*53ee8cc1Swenshuai.xi 
2355*53ee8cc1Swenshuai.xi     // reg_rd_freezeber
2356*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x60, &u8Data);
2357*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_OUTER_REG_BASE + 0x60, u8Data|0x08);
2358*53ee8cc1Swenshuai.xi 
2359*53ee8cc1Swenshuai.xi     if (eLayerIndex == E_ISDBT_Layer_A)
2360*53ee8cc1Swenshuai.xi     {
2361*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x90, &u8Data);  //0x48 * 2
2362*53ee8cc1Swenshuai.xi         u16BerValue=u8Data;
2363*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x91, &u8Data);  //0x48 * 2+1
2364*53ee8cc1Swenshuai.xi         u16BerValue |= (u8Data << 8);
2365*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x76, &u8Data); //0x3b * 2
2366*53ee8cc1Swenshuai.xi         u32BerPeriod = (u8Data&0x3F);
2367*53ee8cc1Swenshuai.xi         u32BerPeriod <<= 16;
2368*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x70, &u8Data); //0x38 * 2
2369*53ee8cc1Swenshuai.xi         u32BerPeriod |= u8Data;
2370*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x70, &u8Data); //0x38 * 2 +1
2371*53ee8cc1Swenshuai.xi         u32BerPeriod |= (u8Data << 8);
2372*53ee8cc1Swenshuai.xi     }
2373*53ee8cc1Swenshuai.xi     else if (eLayerIndex == E_ISDBT_Layer_B)
2374*53ee8cc1Swenshuai.xi     {
2375*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x92, &u8Data);  //0x49 * 2
2376*53ee8cc1Swenshuai.xi         u16BerValue=u8Data;
2377*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x93, &u8Data);  //0x49 * 2+1
2378*53ee8cc1Swenshuai.xi         u16BerValue |= (u8Data << 8);
2379*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x77, &u8Data); //0x3b * 2 + 1
2380*53ee8cc1Swenshuai.xi         u32BerPeriod = (u8Data&0x3F);
2381*53ee8cc1Swenshuai.xi         u32BerPeriod <<= 16;
2382*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x72, &u8Data); //0x39 * 2
2383*53ee8cc1Swenshuai.xi         u32BerPeriod |= u8Data;
2384*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x73, &u8Data); //0x39 * 2 +1
2385*53ee8cc1Swenshuai.xi         u32BerPeriod |= (u8Data << 8);
2386*53ee8cc1Swenshuai.xi     }
2387*53ee8cc1Swenshuai.xi     else if (eLayerIndex == E_ISDBT_Layer_C)
2388*53ee8cc1Swenshuai.xi     {
2389*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x94, &u8Data);  //0x4A * 2
2390*53ee8cc1Swenshuai.xi         u16BerValue=u8Data;
2391*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x95, &u8Data);  //0x4A * 2+1
2392*53ee8cc1Swenshuai.xi         u16BerValue |= (u8Data << 8);
2393*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x78, &u8Data); //0x3C
2394*53ee8cc1Swenshuai.xi         u32BerPeriod = (u8Data&0x003F);
2395*53ee8cc1Swenshuai.xi         u32BerPeriod <<= 16;
2396*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x74, &u8Data); //0x3A * 2
2397*53ee8cc1Swenshuai.xi         u32BerPeriod |= u8Data;
2398*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x75, &u8Data); //0x3A * 2 +1
2399*53ee8cc1Swenshuai.xi         u32BerPeriod |= (u8Data << 8);
2400*53ee8cc1Swenshuai.xi     }
2401*53ee8cc1Swenshuai.xi     else
2402*53ee8cc1Swenshuai.xi     {
2403*53ee8cc1Swenshuai.xi         HAL_INTERN_ISDBT_DBINFO(printf("Please select correct Layer\n"));
2404*53ee8cc1Swenshuai.xi         bRet = FALSE;
2405*53ee8cc1Swenshuai.xi     }
2406*53ee8cc1Swenshuai.xi 
2407*53ee8cc1Swenshuai.xi     // reg_rd_freezeber
2408*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x60, &u8Data);
2409*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_OUTER_REG_BASE + 0x60, (u8Data&~0x08));
2410*53ee8cc1Swenshuai.xi 
2411*53ee8cc1Swenshuai.xi     u32BerPeriod <<= 8; // *256
2412*53ee8cc1Swenshuai.xi 
2413*53ee8cc1Swenshuai.xi     if(u32BerPeriod == 0) u32BerPeriod = 1;
2414*53ee8cc1Swenshuai.xi 
2415*53ee8cc1Swenshuai.xi     #ifdef UTPA2
2416*53ee8cc1Swenshuai.xi     *pBerPeriod = u32BerPeriod;
2417*53ee8cc1Swenshuai.xi     *pBerValue = u16BerValue;
2418*53ee8cc1Swenshuai.xi     #else
2419*53ee8cc1Swenshuai.xi     *pfber = (float)u16BerValue/u32BerPeriod;
2420*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("Layer: 0x%x, Pre-Ber = %e\n", eLayerIndex, *pfber));
2421*53ee8cc1Swenshuai.xi     #endif
2422*53ee8cc1Swenshuai.xi 
2423*53ee8cc1Swenshuai.xi     return bRet;
2424*53ee8cc1Swenshuai.xi }
2425*53ee8cc1Swenshuai.xi 
2426*53ee8cc1Swenshuai.xi #ifdef UTPA2
_HAL_INTERN_ISDBT_GetPostViterbiBer(EN_ISDBT_Layer eLayerIndex,MS_U32 * pBerValue,MS_U16 * pBerPeriod)2427*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetPostViterbiBer(EN_ISDBT_Layer eLayerIndex, MS_U32 *pBerValue, MS_U16 *pBerPeriod )
2428*53ee8cc1Swenshuai.xi #else
2429*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetPostViterbiBer(EN_ISDBT_Layer eLayerIndex, float *pfber)
2430*53ee8cc1Swenshuai.xi #endif
2431*53ee8cc1Swenshuai.xi {
2432*53ee8cc1Swenshuai.xi     MS_BOOL bRet = TRUE;
2433*53ee8cc1Swenshuai.xi     MS_U8   u8Data = 0;
2434*53ee8cc1Swenshuai.xi     MS_U8   u8FrzData = 0;
2435*53ee8cc1Swenshuai.xi     MS_U32  u32BerValue = 0;
2436*53ee8cc1Swenshuai.xi     MS_U16  u16BerPeriod = 0;
2437*53ee8cc1Swenshuai.xi 
2438*53ee8cc1Swenshuai.xi     // reg_rd_freezeber
2439*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x01*2+1, &u8FrzData);
2440*53ee8cc1Swenshuai.xi     u8Data = u8FrzData | 0x01;
2441*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_OUTER_REG_BASE+0x01*2+1, u8Data);
2442*53ee8cc1Swenshuai.xi 
2443*53ee8cc1Swenshuai.xi     if (eLayerIndex == E_ISDBT_Layer_A)
2444*53ee8cc1Swenshuai.xi     {
2445*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x14, &u8Data);  //0x0A * 2
2446*53ee8cc1Swenshuai.xi         u32BerValue = u8Data;
2447*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x15, &u8Data);  //0x0A * 2+1
2448*53ee8cc1Swenshuai.xi         u32BerValue |= u8Data << 8;
2449*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x16, &u8Data);  //0x0B * 2
2450*53ee8cc1Swenshuai.xi         u32BerValue |= u8Data << 16;
2451*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x17, &u8Data);  //0x0B * 2+1
2452*53ee8cc1Swenshuai.xi         u32BerValue |= u8Data << 24;
2453*53ee8cc1Swenshuai.xi 
2454*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x0A, &u8Data);  //0x05 * 2
2455*53ee8cc1Swenshuai.xi         u16BerPeriod = u8Data;
2456*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x0B, &u8Data);  //0x05 * 2+1
2457*53ee8cc1Swenshuai.xi         u16BerPeriod |= u8Data << 8;
2458*53ee8cc1Swenshuai.xi     }
2459*53ee8cc1Swenshuai.xi     else if (eLayerIndex == E_ISDBT_Layer_B)
2460*53ee8cc1Swenshuai.xi     {
2461*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x46, &u8Data);  //0x23 * 2
2462*53ee8cc1Swenshuai.xi         u32BerValue = u8Data;
2463*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x47, &u8Data);  //0x23 * 2+1
2464*53ee8cc1Swenshuai.xi         u32BerValue |= u8Data << 8;
2465*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x48, &u8Data);  //0x24 * 2
2466*53ee8cc1Swenshuai.xi         u32BerValue |= u8Data << 16;
2467*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x49, &u8Data);  //0x24 * 2+1
2468*53ee8cc1Swenshuai.xi         u32BerValue |= u8Data << 24;
2469*53ee8cc1Swenshuai.xi 
2470*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x3A, &u8Data);  //0x1d * 2
2471*53ee8cc1Swenshuai.xi         u16BerPeriod = u8Data;
2472*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x3B, &u8Data);  //0x1d * 2+1
2473*53ee8cc1Swenshuai.xi         u16BerPeriod |= u8Data << 8;
2474*53ee8cc1Swenshuai.xi     }
2475*53ee8cc1Swenshuai.xi     else if (eLayerIndex == E_ISDBT_Layer_C)
2476*53ee8cc1Swenshuai.xi     {
2477*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x88, &u8Data);  //0x44 * 2
2478*53ee8cc1Swenshuai.xi         u32BerValue = u8Data;
2479*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x89, &u8Data);  //0x44 * 2+1
2480*53ee8cc1Swenshuai.xi         u32BerValue |= u8Data << 8;
2481*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x8A, &u8Data);  //0x45 * 2
2482*53ee8cc1Swenshuai.xi         u32BerValue |= u8Data << 16;
2483*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x8B, &u8Data);  //0x45 * 2+1
2484*53ee8cc1Swenshuai.xi         u32BerValue |= u8Data << 24;
2485*53ee8cc1Swenshuai.xi 
2486*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x3E, &u8Data);  //0x1f * 2
2487*53ee8cc1Swenshuai.xi         u16BerPeriod = u8Data;
2488*53ee8cc1Swenshuai.xi         bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE + 0x3F, &u8Data);  //0x1d * 2+1
2489*53ee8cc1Swenshuai.xi         u16BerPeriod |= u8Data << 8;
2490*53ee8cc1Swenshuai.xi     }
2491*53ee8cc1Swenshuai.xi     else
2492*53ee8cc1Swenshuai.xi     {
2493*53ee8cc1Swenshuai.xi         HAL_INTERN_ISDBT_DBINFO(printf("Please select correct Layer\n"));
2494*53ee8cc1Swenshuai.xi         bRet = FALSE;
2495*53ee8cc1Swenshuai.xi     }
2496*53ee8cc1Swenshuai.xi 
2497*53ee8cc1Swenshuai.xi     // reg_rd_freezeber
2498*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_OUTER_REG_BASE+0x01*2+1, u8FrzData);
2499*53ee8cc1Swenshuai.xi 
2500*53ee8cc1Swenshuai.xi     if(u16BerPeriod == 0) u16BerPeriod = 1;
2501*53ee8cc1Swenshuai.xi 
2502*53ee8cc1Swenshuai.xi     #ifdef UTPA2
2503*53ee8cc1Swenshuai.xi     *pBerPeriod = u16BerPeriod;
2504*53ee8cc1Swenshuai.xi     *pBerValue = u32BerValue;
2505*53ee8cc1Swenshuai.xi     #else
2506*53ee8cc1Swenshuai.xi     *pfber = (float)u32BerValue/u16BerPeriod/(128.0*188.0*8.0);
2507*53ee8cc1Swenshuai.xi     HAL_INTERN_ISDBT_DBINFO(printf("Layer: 0x%x, Post-Ber = %e\n", eLayerIndex, *pfber));
2508*53ee8cc1Swenshuai.xi     #endif
2509*53ee8cc1Swenshuai.xi     return bRet;
2510*53ee8cc1Swenshuai.xi }
2511*53ee8cc1Swenshuai.xi 
2512*53ee8cc1Swenshuai.xi #ifndef UTPA2
_HAL_INTERN_ISDBT_GetSignalQualityOfLayerA(void)2513*53ee8cc1Swenshuai.xi static MS_U16 _HAL_INTERN_ISDBT_GetSignalQualityOfLayerA(void)
2514*53ee8cc1Swenshuai.xi {
2515*53ee8cc1Swenshuai.xi     float fber;
2516*53ee8cc1Swenshuai.xi     MS_BOOL bRet = TRUE;
2517*53ee8cc1Swenshuai.xi     EN_ISDBT_Layer eLayerIndex;
2518*53ee8cc1Swenshuai.xi     MS_U16 u16SQI;
2519*53ee8cc1Swenshuai.xi 
2520*53ee8cc1Swenshuai.xi     // Tmp solution
2521*53ee8cc1Swenshuai.xi     eLayerIndex = E_ISDBT_Layer_A;
2522*53ee8cc1Swenshuai.xi 
2523*53ee8cc1Swenshuai.xi     if(_HAL_INTERN_ISDBT_Check_FEC_Lock() == FALSE)
2524*53ee8cc1Swenshuai.xi     {
2525*53ee8cc1Swenshuai.xi         //printf("Dan Demod unlock!!!\n");
2526*53ee8cc1Swenshuai.xi         u16SQI = 0;
2527*53ee8cc1Swenshuai.xi     }
2528*53ee8cc1Swenshuai.xi     else
2529*53ee8cc1Swenshuai.xi     {
2530*53ee8cc1Swenshuai.xi         // Part 1: get ber value from demod.
2531*53ee8cc1Swenshuai.xi         bRet &= _HAL_INTERN_ISDBT_GetPostViterbiBer(eLayerIndex, &fber);
2532*53ee8cc1Swenshuai.xi 
2533*53ee8cc1Swenshuai.xi         u16SQI = _CALCULATE_SQI(fber);
2534*53ee8cc1Swenshuai.xi     }
2535*53ee8cc1Swenshuai.xi 
2536*53ee8cc1Swenshuai.xi     //printf("dan SQI = %d\n", SQI);
2537*53ee8cc1Swenshuai.xi     return u16SQI;
2538*53ee8cc1Swenshuai.xi }
2539*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_GetSignalQualityOfLayerB(void)2540*53ee8cc1Swenshuai.xi static MS_U16 _HAL_INTERN_ISDBT_GetSignalQualityOfLayerB(void)
2541*53ee8cc1Swenshuai.xi {
2542*53ee8cc1Swenshuai.xi     float fber;
2543*53ee8cc1Swenshuai.xi     MS_BOOL bRet = TRUE;
2544*53ee8cc1Swenshuai.xi     EN_ISDBT_Layer eLayerIndex;
2545*53ee8cc1Swenshuai.xi     MS_U16 u16SQI;
2546*53ee8cc1Swenshuai.xi 
2547*53ee8cc1Swenshuai.xi     // Tmp solution
2548*53ee8cc1Swenshuai.xi     eLayerIndex = E_ISDBT_Layer_B;
2549*53ee8cc1Swenshuai.xi 
2550*53ee8cc1Swenshuai.xi     if(_HAL_INTERN_ISDBT_Check_FEC_Lock() == FALSE)
2551*53ee8cc1Swenshuai.xi     {
2552*53ee8cc1Swenshuai.xi         //printf("Dan Demod unlock!!!\n");
2553*53ee8cc1Swenshuai.xi         u16SQI = 0;
2554*53ee8cc1Swenshuai.xi     }
2555*53ee8cc1Swenshuai.xi     else
2556*53ee8cc1Swenshuai.xi     {
2557*53ee8cc1Swenshuai.xi         // Part 1: get ber value from demod.
2558*53ee8cc1Swenshuai.xi         bRet &= _HAL_INTERN_ISDBT_GetPostViterbiBer(eLayerIndex, &fber);
2559*53ee8cc1Swenshuai.xi 
2560*53ee8cc1Swenshuai.xi         u16SQI = _CALCULATE_SQI(fber);
2561*53ee8cc1Swenshuai.xi     }
2562*53ee8cc1Swenshuai.xi 
2563*53ee8cc1Swenshuai.xi     //printf("dan SQI = %d\n", SQI);
2564*53ee8cc1Swenshuai.xi     return u16SQI;
2565*53ee8cc1Swenshuai.xi }
2566*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_GetSignalQualityOfLayerC(void)2567*53ee8cc1Swenshuai.xi static MS_U16 _HAL_INTERN_ISDBT_GetSignalQualityOfLayerC(void)
2568*53ee8cc1Swenshuai.xi {
2569*53ee8cc1Swenshuai.xi     float fber;
2570*53ee8cc1Swenshuai.xi     MS_BOOL bRet = TRUE;
2571*53ee8cc1Swenshuai.xi     EN_ISDBT_Layer eLayerIndex;
2572*53ee8cc1Swenshuai.xi     MS_U16 u16SQI;
2573*53ee8cc1Swenshuai.xi 
2574*53ee8cc1Swenshuai.xi     // Tmp solution
2575*53ee8cc1Swenshuai.xi     eLayerIndex = E_ISDBT_Layer_C;
2576*53ee8cc1Swenshuai.xi 
2577*53ee8cc1Swenshuai.xi     if(_HAL_INTERN_ISDBT_Check_FEC_Lock() == FALSE)
2578*53ee8cc1Swenshuai.xi     {
2579*53ee8cc1Swenshuai.xi         //printf("Dan Demod unlock!!!\n");
2580*53ee8cc1Swenshuai.xi         u16SQI = 0;
2581*53ee8cc1Swenshuai.xi     }
2582*53ee8cc1Swenshuai.xi     else
2583*53ee8cc1Swenshuai.xi     {
2584*53ee8cc1Swenshuai.xi         // Part 1: get ber value from demod.
2585*53ee8cc1Swenshuai.xi         bRet &= _HAL_INTERN_ISDBT_GetPostViterbiBer(eLayerIndex, &fber);
2586*53ee8cc1Swenshuai.xi 
2587*53ee8cc1Swenshuai.xi         u16SQI = _CALCULATE_SQI(fber);
2588*53ee8cc1Swenshuai.xi     }
2589*53ee8cc1Swenshuai.xi 
2590*53ee8cc1Swenshuai.xi     //printf("dan SQI = %d\n", SQI);
2591*53ee8cc1Swenshuai.xi     return u16SQI;
2592*53ee8cc1Swenshuai.xi }
2593*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_GetSignalQualityOfLayerCombine(void)2594*53ee8cc1Swenshuai.xi static MS_U16 _HAL_INTERN_ISDBT_GetSignalQualityOfLayerCombine(void)
2595*53ee8cc1Swenshuai.xi {
2596*53ee8cc1Swenshuai.xi     MS_S8  s8LayerAValue = 0, s8LayerBValue = 0, s8LayerCValue = 0;
2597*53ee8cc1Swenshuai.xi     MS_U16 u16SQI;
2598*53ee8cc1Swenshuai.xi     EN_ISDBT_Layer eLayerIndex;
2599*53ee8cc1Swenshuai.xi     EN_ISDBT_CONSTEL_TYPE eIsdbtConstellationA, eIsdbtConstellationB, eIsdbtConstellationC;
2600*53ee8cc1Swenshuai.xi 
2601*53ee8cc1Swenshuai.xi     //Get modulation of each layer
2602*53ee8cc1Swenshuai.xi     eLayerIndex = E_ISDBT_Layer_A;
2603*53ee8cc1Swenshuai.xi     _HAL_INTERN_ISDBT_GetSignalModulation(eLayerIndex, &eIsdbtConstellationA);
2604*53ee8cc1Swenshuai.xi     eLayerIndex = E_ISDBT_Layer_B;
2605*53ee8cc1Swenshuai.xi     _HAL_INTERN_ISDBT_GetSignalModulation(eLayerIndex, &eIsdbtConstellationB);
2606*53ee8cc1Swenshuai.xi     eLayerIndex = E_ISDBT_Layer_C;
2607*53ee8cc1Swenshuai.xi     _HAL_INTERN_ISDBT_GetSignalModulation(eLayerIndex, &eIsdbtConstellationC);
2608*53ee8cc1Swenshuai.xi 
2609*53ee8cc1Swenshuai.xi     if (eIsdbtConstellationA != E_ISDBT_QAM_INVALID)
2610*53ee8cc1Swenshuai.xi         s8LayerAValue = (MS_S8)eIsdbtConstellationA;
2611*53ee8cc1Swenshuai.xi     else
2612*53ee8cc1Swenshuai.xi         s8LayerAValue = -1;
2613*53ee8cc1Swenshuai.xi 
2614*53ee8cc1Swenshuai.xi     if (eIsdbtConstellationB != E_ISDBT_QAM_INVALID)
2615*53ee8cc1Swenshuai.xi         s8LayerBValue = (MS_S8)eIsdbtConstellationB;
2616*53ee8cc1Swenshuai.xi     else
2617*53ee8cc1Swenshuai.xi         s8LayerBValue = -1;
2618*53ee8cc1Swenshuai.xi 
2619*53ee8cc1Swenshuai.xi     if (eIsdbtConstellationC != E_ISDBT_QAM_INVALID)
2620*53ee8cc1Swenshuai.xi         s8LayerCValue = (MS_S8)eIsdbtConstellationC;
2621*53ee8cc1Swenshuai.xi     else
2622*53ee8cc1Swenshuai.xi         s8LayerCValue = -1;
2623*53ee8cc1Swenshuai.xi 
2624*53ee8cc1Swenshuai.xi     //printf("Layer info A:%d, B:%d, C:%d\n", s8LayerAValue, s8LayerBValue, s8LayerCValue);
2625*53ee8cc1Swenshuai.xi     if (s8LayerAValue >= s8LayerBValue)
2626*53ee8cc1Swenshuai.xi     {
2627*53ee8cc1Swenshuai.xi         if (s8LayerCValue >= s8LayerAValue)
2628*53ee8cc1Swenshuai.xi         {
2629*53ee8cc1Swenshuai.xi             //Get Layer C u16SQI
2630*53ee8cc1Swenshuai.xi             u16SQI = _HAL_INTERN_ISDBT_GetSignalQualityOfLayerC();
2631*53ee8cc1Swenshuai.xi             //printf("dan u16SQI Layer C1: %d\n", u16SQI);
2632*53ee8cc1Swenshuai.xi         }
2633*53ee8cc1Swenshuai.xi         else  //A>C
2634*53ee8cc1Swenshuai.xi         {
2635*53ee8cc1Swenshuai.xi             //Get Layer A u16SQI
2636*53ee8cc1Swenshuai.xi             u16SQI = _HAL_INTERN_ISDBT_GetSignalQualityOfLayerA();
2637*53ee8cc1Swenshuai.xi             //printf("dan u16SQI Layer A: %d\n", u16SQI);
2638*53ee8cc1Swenshuai.xi         }
2639*53ee8cc1Swenshuai.xi     }
2640*53ee8cc1Swenshuai.xi     else  // B >= A
2641*53ee8cc1Swenshuai.xi     {
2642*53ee8cc1Swenshuai.xi         if (s8LayerCValue >= s8LayerBValue)
2643*53ee8cc1Swenshuai.xi         {
2644*53ee8cc1Swenshuai.xi             //Get Layer C u16SQI
2645*53ee8cc1Swenshuai.xi             u16SQI = _HAL_INTERN_ISDBT_GetSignalQualityOfLayerC();
2646*53ee8cc1Swenshuai.xi             //printf("dan u16SQI Layer C2: %d\n", u16SQI);
2647*53ee8cc1Swenshuai.xi         }
2648*53ee8cc1Swenshuai.xi         else  //B>C
2649*53ee8cc1Swenshuai.xi         {
2650*53ee8cc1Swenshuai.xi             //Get Layer B u16SQI
2651*53ee8cc1Swenshuai.xi             u16SQI = _HAL_INTERN_ISDBT_GetSignalQualityOfLayerB();
2652*53ee8cc1Swenshuai.xi             //printf("dan u16SQI Layer B: %d\n", u16SQI);
2653*53ee8cc1Swenshuai.xi         }
2654*53ee8cc1Swenshuai.xi     }
2655*53ee8cc1Swenshuai.xi 
2656*53ee8cc1Swenshuai.xi     return u16SQI;
2657*53ee8cc1Swenshuai.xi }
2658*53ee8cc1Swenshuai.xi #endif
2659*53ee8cc1Swenshuai.xi 
2660*53ee8cc1Swenshuai.xi #ifdef UTPA2
_HAL_INTERN_ISDBT_GetSNR(MS_U32 * pRegSNR,MS_U16 * pRegSnrObsNum)2661*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetSNR(MS_U32 *pRegSNR, MS_U16 *pRegSnrObsNum)
2662*53ee8cc1Swenshuai.xi #else
2663*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetSNR(float *pf_snr)
2664*53ee8cc1Swenshuai.xi #endif
2665*53ee8cc1Swenshuai.xi {
2666*53ee8cc1Swenshuai.xi     MS_BOOL bRet = TRUE;
2667*53ee8cc1Swenshuai.xi     MS_U8   u8Data = 0;
2668*53ee8cc1Swenshuai.xi     MS_U32  u32RegSNR = 0;
2669*53ee8cc1Swenshuai.xi     MS_U16  u16RegSnrObsNum = 0;
2670*53ee8cc1Swenshuai.xi     #ifndef UTPA2
2671*53ee8cc1Swenshuai.xi     float   fSNRAvg = 0.0;
2672*53ee8cc1Swenshuai.xi     #endif
2673*53ee8cc1Swenshuai.xi 
2674*53ee8cc1Swenshuai.xi     //set freeze
2675*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0xFE, &u8Data);   //0x7f * 2
2676*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_FDP_REG_BASE + 0xFE, (u8Data|0x01));
2677*53ee8cc1Swenshuai.xi     //load
2678*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0xFF, &u8Data);   //0x7f * 2 + 1
2679*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_FDP_REG_BASE + 0xFF, (u8Data|0x01));
2680*53ee8cc1Swenshuai.xi 
2681*53ee8cc1Swenshuai.xi     // ==============Average SNR===============//
2682*53ee8cc1Swenshuai.xi     // [26:0] reg_snr_accu
2683*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDPEXT_REG_BASE+0x2d*2+1, &u8Data);
2684*53ee8cc1Swenshuai.xi     u32RegSNR = u8Data&0x07;
2685*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDPEXT_REG_BASE+0x2d*2, &u8Data);
2686*53ee8cc1Swenshuai.xi     u32RegSNR = (u32RegSNR<<8) | u8Data;
2687*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDPEXT_REG_BASE+0x2c*2+1, &u8Data);
2688*53ee8cc1Swenshuai.xi     u32RegSNR = (u32RegSNR<<8) | u8Data;
2689*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDPEXT_REG_BASE+0x2c*2, &u8Data);
2690*53ee8cc1Swenshuai.xi     u32RegSNR = (u32RegSNR<<8) | u8Data;
2691*53ee8cc1Swenshuai.xi 
2692*53ee8cc1Swenshuai.xi     // [12:0] reg_snr_observe_sum_num
2693*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDPEXT_REG_BASE+0x2a*2+1, &u8Data);
2694*53ee8cc1Swenshuai.xi     u16RegSnrObsNum = u8Data&0x1f;
2695*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDPEXT_REG_BASE+0x2a*2, &u8Data);
2696*53ee8cc1Swenshuai.xi     u16RegSnrObsNum = (u16RegSnrObsNum<<8) | u8Data;
2697*53ee8cc1Swenshuai.xi 
2698*53ee8cc1Swenshuai.xi     //release freeze
2699*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0xFE, &u8Data);   //0x7f * 2
2700*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_FDP_REG_BASE + 0xFE, (u8Data&~0x01));
2701*53ee8cc1Swenshuai.xi     //load
2702*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_FDP_REG_BASE + 0xFF, &u8Data);   //0x7f * 2 + 1
2703*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_FDP_REG_BASE + 0xFF, (u8Data|0x01));
2704*53ee8cc1Swenshuai.xi 
2705*53ee8cc1Swenshuai.xi     if (u16RegSnrObsNum == 0)
2706*53ee8cc1Swenshuai.xi         u16RegSnrObsNum = 1;
2707*53ee8cc1Swenshuai.xi 
2708*53ee8cc1Swenshuai.xi 
2709*53ee8cc1Swenshuai.xi     #ifdef UTPA2
2710*53ee8cc1Swenshuai.xi      *pRegSNR = u32RegSNR;
2711*53ee8cc1Swenshuai.xi      *pRegSnrObsNum = u16RegSnrObsNum;
2712*53ee8cc1Swenshuai.xi     #else
2713*53ee8cc1Swenshuai.xi      fSNRAvg = (float)u32RegSNR/u16RegSnrObsNum;
2714*53ee8cc1Swenshuai.xi      if (fSNRAvg == 0)                 //protect value 0
2715*53ee8cc1Swenshuai.xi          fSNRAvg = 0.01;
2716*53ee8cc1Swenshuai.xi 
2717*53ee8cc1Swenshuai.xi      #ifdef MSOS_TYPE_LINUX
2718*53ee8cc1Swenshuai.xi      *pf_snr = 10.0f*(float)log10f((double)fSNRAvg/2);
2719*53ee8cc1Swenshuai.xi      #else
2720*53ee8cc1Swenshuai.xi      *pf_snr = 10.0f*(float)Log10Approx((double)fSNRAvg/2);
2721*53ee8cc1Swenshuai.xi      #endif
2722*53ee8cc1Swenshuai.xi      HAL_INTERN_ISDBT_DBINFO(printf("SNR value = %f\n", *pf_snr));
2723*53ee8cc1Swenshuai.xi     #endif
2724*53ee8cc1Swenshuai.xi 
2725*53ee8cc1Swenshuai.xi     return bRet;
2726*53ee8cc1Swenshuai.xi }
2727*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_Read_PKT_ERR(EN_ISDBT_Layer eLayerIndex,MS_U16 * pu16PacketErr)2728*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_Read_PKT_ERR(EN_ISDBT_Layer eLayerIndex, MS_U16 *pu16PacketErr)
2729*53ee8cc1Swenshuai.xi {
2730*53ee8cc1Swenshuai.xi     MS_U8 bRet = true;
2731*53ee8cc1Swenshuai.xi     MS_U8 u8Data = 0;
2732*53ee8cc1Swenshuai.xi     MS_U8 u8FrzData = 0;
2733*53ee8cc1Swenshuai.xi     MS_U16 u16PacketErrA = 0xFFFF, u16PacketErrB = 0xFFFF, u16PacketErrC = 0xFFFF;
2734*53ee8cc1Swenshuai.xi     #if DMD_ISDBT_TBVA_EN
2735*53ee8cc1Swenshuai.xi     MS_U8 bTbvaBypass = 0;
2736*53ee8cc1Swenshuai.xi     MS_U8 u8TbvaLayer = 0;
2737*53ee8cc1Swenshuai.xi     #endif
2738*53ee8cc1Swenshuai.xi     // Read packet errors of three layers
2739*53ee8cc1Swenshuai.xi     // OUTER_FUNCTION_ENABLE
2740*53ee8cc1Swenshuai.xi     // [8] reg_biterr_num_pcktprd_freeze
2741*53ee8cc1Swenshuai.xi     // Freeze Packet error
2742*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x01*2+1, &u8FrzData);
2743*53ee8cc1Swenshuai.xi     u8Data = u8FrzData | 0x01;
2744*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_OUTER_REG_BASE+0x01*2+1, u8Data);
2745*53ee8cc1Swenshuai.xi #if DMD_ISDBT_TBVA_EN
2746*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x10*2, &u8Data);
2747*53ee8cc1Swenshuai.xi     bTbvaBypass = u8Data & 0x01;
2748*53ee8cc1Swenshuai.xi     bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x11*2, &u8Data);
2749*53ee8cc1Swenshuai.xi     u8TbvaLayer = u8Data & 0x03;
2750*53ee8cc1Swenshuai.xi     switch(eLayerIndex)
2751*53ee8cc1Swenshuai.xi     {
2752*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_A:
2753*53ee8cc1Swenshuai.xi             // [15:0] OUTER_UNCRT_PKT_NUM_PCKTPRD_A
2754*53ee8cc1Swenshuai.xi             if (!bTbvaBypass && u8TbvaLayer == 0)
2755*53ee8cc1Swenshuai.xi             {
2756*53ee8cc1Swenshuai.xi                 bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x17*2+1, &u8Data);
2757*53ee8cc1Swenshuai.xi                 u16PacketErrA = u8Data << 8;
2758*53ee8cc1Swenshuai.xi                 bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x17*2, &u8Data);
2759*53ee8cc1Swenshuai.xi                 u16PacketErrA = u16PacketErrA | u8Data;
2760*53ee8cc1Swenshuai.xi                 *pu16PacketErr = u16PacketErrA;
2761*53ee8cc1Swenshuai.xi             }
2762*53ee8cc1Swenshuai.xi             else
2763*53ee8cc1Swenshuai.xi             {
2764*53ee8cc1Swenshuai.xi                 bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x08*2+1, &u8Data);
2765*53ee8cc1Swenshuai.xi                 u16PacketErrA = u8Data << 8;
2766*53ee8cc1Swenshuai.xi                 bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x08*2, &u8Data);
2767*53ee8cc1Swenshuai.xi                 u16PacketErrA = u16PacketErrA | u8Data;
2768*53ee8cc1Swenshuai.xi                 *pu16PacketErr = u16PacketErrA;
2769*53ee8cc1Swenshuai.xi             }
2770*53ee8cc1Swenshuai.xi             break;
2771*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_B:
2772*53ee8cc1Swenshuai.xi             // [15:0] OUTER_UNCRT_PKT_NUM_PCKTPRD_B
2773*53ee8cc1Swenshuai.xi             if (!bTbvaBypass && u8TbvaLayer == 1)
2774*53ee8cc1Swenshuai.xi             {
2775*53ee8cc1Swenshuai.xi                 bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x17*2+1, &u8Data);
2776*53ee8cc1Swenshuai.xi                 u16PacketErrB = u8Data << 8;
2777*53ee8cc1Swenshuai.xi                 bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x17*2, &u8Data);
2778*53ee8cc1Swenshuai.xi                 u16PacketErrB = u16PacketErrB | u8Data;
2779*53ee8cc1Swenshuai.xi                 *pu16PacketErr = u16PacketErrB;
2780*53ee8cc1Swenshuai.xi             }
2781*53ee8cc1Swenshuai.xi             else
2782*53ee8cc1Swenshuai.xi             {
2783*53ee8cc1Swenshuai.xi                 bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x21*2+1, &u8Data);
2784*53ee8cc1Swenshuai.xi                 u16PacketErrB = u8Data << 8;
2785*53ee8cc1Swenshuai.xi                 bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x21*2, &u8Data);
2786*53ee8cc1Swenshuai.xi                 u16PacketErrB = u16PacketErrB | u8Data;
2787*53ee8cc1Swenshuai.xi                 *pu16PacketErr = u16PacketErrB;
2788*53ee8cc1Swenshuai.xi             }
2789*53ee8cc1Swenshuai.xi             break;
2790*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_C:
2791*53ee8cc1Swenshuai.xi             // [15:0] OUTER_UNCRT_PKT_NUM_PCKTPRD_C
2792*53ee8cc1Swenshuai.xi             if (!bTbvaBypass && u8TbvaLayer == 2)
2793*53ee8cc1Swenshuai.xi             {
2794*53ee8cc1Swenshuai.xi                 bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x17*2+1, &u8Data);
2795*53ee8cc1Swenshuai.xi                 u16PacketErrC = u8Data << 8;
2796*53ee8cc1Swenshuai.xi                 bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x17*2, &u8Data);
2797*53ee8cc1Swenshuai.xi                 u16PacketErrC = u16PacketErrC | u8Data;
2798*53ee8cc1Swenshuai.xi                 *pu16PacketErr = u16PacketErrC;
2799*53ee8cc1Swenshuai.xi             }
2800*53ee8cc1Swenshuai.xi             else
2801*53ee8cc1Swenshuai.xi             {
2802*53ee8cc1Swenshuai.xi                 bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x42*2+1, &u8Data);
2803*53ee8cc1Swenshuai.xi                 u16PacketErrC = u8Data << 8;
2804*53ee8cc1Swenshuai.xi                 bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x42*2, &u8Data);
2805*53ee8cc1Swenshuai.xi                 u16PacketErrC = u16PacketErrC | u8Data;
2806*53ee8cc1Swenshuai.xi                 *pu16PacketErr = u16PacketErrC;
2807*53ee8cc1Swenshuai.xi             }
2808*53ee8cc1Swenshuai.xi             break;
2809*53ee8cc1Swenshuai.xi         default:
2810*53ee8cc1Swenshuai.xi             *pu16PacketErr = 0xFFFF;
2811*53ee8cc1Swenshuai.xi             break;
2812*53ee8cc1Swenshuai.xi     }
2813*53ee8cc1Swenshuai.xi #else
2814*53ee8cc1Swenshuai.xi     switch(eLayerIndex)
2815*53ee8cc1Swenshuai.xi     {
2816*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_A:
2817*53ee8cc1Swenshuai.xi             // [15:0] OUTER_UNCRT_PKT_NUM_PCKTPRD_A
2818*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x08*2+1, &u8Data);
2819*53ee8cc1Swenshuai.xi             u16PacketErrA = u8Data << 8;
2820*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x08*2, &u8Data);
2821*53ee8cc1Swenshuai.xi             u16PacketErrA = u16PacketErrA | u8Data;
2822*53ee8cc1Swenshuai.xi             *pu16PacketErr = u16PacketErrA;
2823*53ee8cc1Swenshuai.xi             break;
2824*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_B:
2825*53ee8cc1Swenshuai.xi             // [15:0] OUTER_UNCRT_PKT_NUM_PCKTPRD_B
2826*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x21*2+1, &u8Data);
2827*53ee8cc1Swenshuai.xi             u16PacketErrB = u8Data << 8;
2828*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x21*2, &u8Data);
2829*53ee8cc1Swenshuai.xi             u16PacketErrB = u16PacketErrB | u8Data;
2830*53ee8cc1Swenshuai.xi             *pu16PacketErr = u16PacketErrB;
2831*53ee8cc1Swenshuai.xi             break;
2832*53ee8cc1Swenshuai.xi         case E_ISDBT_Layer_C:
2833*53ee8cc1Swenshuai.xi             // [15:0] OUTER_UNCRT_PKT_NUM_PCKTPRD_C
2834*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x42*2+1, &u8Data);
2835*53ee8cc1Swenshuai.xi             u16PacketErrC = u8Data << 8;
2836*53ee8cc1Swenshuai.xi             bRet &= _MBX_ReadReg(ISDBT_OUTER_REG_BASE+0x42*2, &u8Data);
2837*53ee8cc1Swenshuai.xi             u16PacketErrC = u16PacketErrC | u8Data;
2838*53ee8cc1Swenshuai.xi             *pu16PacketErr = u16PacketErrC;
2839*53ee8cc1Swenshuai.xi             break;
2840*53ee8cc1Swenshuai.xi         default:
2841*53ee8cc1Swenshuai.xi             *pu16PacketErr = 0xFFFF;
2842*53ee8cc1Swenshuai.xi             break;
2843*53ee8cc1Swenshuai.xi     }
2844*53ee8cc1Swenshuai.xi #endif
2845*53ee8cc1Swenshuai.xi     // Unfreeze Packet error
2846*53ee8cc1Swenshuai.xi     bRet &= _MBX_WriteReg(ISDBT_OUTER_REG_BASE+0x01*2+1, u8FrzData);
2847*53ee8cc1Swenshuai.xi 
2848*53ee8cc1Swenshuai.xi     return bRet;
2849*53ee8cc1Swenshuai.xi }
2850*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_GetReg(MS_U16 u16Addr,MS_U8 * pu8Data)2851*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_GetReg(MS_U16 u16Addr, MS_U8 *pu8Data)
2852*53ee8cc1Swenshuai.xi {
2853*53ee8cc1Swenshuai.xi     return _MBX_ReadReg(u16Addr, pu8Data);
2854*53ee8cc1Swenshuai.xi }
2855*53ee8cc1Swenshuai.xi 
_HAL_INTERN_ISDBT_SetReg(MS_U16 u16Addr,MS_U8 u8Data)2856*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ISDBT_SetReg(MS_U16 u16Addr, MS_U8 u8Data)
2857*53ee8cc1Swenshuai.xi {
2858*53ee8cc1Swenshuai.xi     return _MBX_WriteReg(u16Addr, u8Data);
2859*53ee8cc1Swenshuai.xi }
2860*53ee8cc1Swenshuai.xi 
2861*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
2862*53ee8cc1Swenshuai.xi //  Global Functions
2863*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
HAL_INTERN_ISDBT_IOCTL_CMD(DMD_ISDBT_HAL_COMMAND eCmd,void * pArgs)2864*53ee8cc1Swenshuai.xi MS_BOOL HAL_INTERN_ISDBT_IOCTL_CMD(DMD_ISDBT_HAL_COMMAND eCmd, void *pArgs)
2865*53ee8cc1Swenshuai.xi {
2866*53ee8cc1Swenshuai.xi     MS_BOOL bResult = TRUE;
2867*53ee8cc1Swenshuai.xi 
2868*53ee8cc1Swenshuai.xi     switch(eCmd)
2869*53ee8cc1Swenshuai.xi     {
2870*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_Exit:
2871*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_Exit();
2872*53ee8cc1Swenshuai.xi         break;
2873*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_InitClk:
2874*53ee8cc1Swenshuai.xi         _HAL_INTERN_ISDBT_InitClk();
2875*53ee8cc1Swenshuai.xi         break;
2876*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_Download:
2877*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_Download();
2878*53ee8cc1Swenshuai.xi         break;
2879*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_FWVERSION:
2880*53ee8cc1Swenshuai.xi         _HAL_INTERN_ISDBT_FWVERSION();
2881*53ee8cc1Swenshuai.xi         break;
2882*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_SoftReset:
2883*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_SoftReset();
2884*53ee8cc1Swenshuai.xi         break;
2885*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_SetACICoef:
2886*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_SetACICoef();
2887*53ee8cc1Swenshuai.xi         break;
2888*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_SetISDBTMode:
2889*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_SetIsdbtMode();
2890*53ee8cc1Swenshuai.xi         break;
2891*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_SetModeClean:
2892*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_SetModeClean();
2893*53ee8cc1Swenshuai.xi         break;
2894*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_Active:
2895*53ee8cc1Swenshuai.xi         break;
2896*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_Check_FEC_Lock:
2897*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_Check_FEC_Lock();
2898*53ee8cc1Swenshuai.xi         break;
2899*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_Check_FSA_TRACK_Lock:
2900*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_Check_FSA_TRACK_Lock();
2901*53ee8cc1Swenshuai.xi         break;
2902*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_Check_PSYNC_Lock:
2903*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_Check_PSYNC_Lock();
2904*53ee8cc1Swenshuai.xi         break;
2905*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_Check_ICFO_CH_EXIST_Lock:
2906*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_Check_ICFO_CH_EXIST_Lock();
2907*53ee8cc1Swenshuai.xi         break;
2908*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetSignalCodeRate:
2909*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetSignalCodeRate((*((DMD_ISDBT_GET_CodeRate*)pArgs)).eIsdbtLayer, &((*((DMD_ISDBT_GET_CodeRate*)pArgs)).eCodeRate));
2910*53ee8cc1Swenshuai.xi         break;
2911*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetSignalGuardInterval:
2912*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetSignalGuardInterval((EN_ISDBT_GUARD_INTERVAL *)pArgs);
2913*53ee8cc1Swenshuai.xi         break;
2914*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetSignalTimeInterleaving:
2915*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetSignalTimeInterleaving((*((DMD_ISDBT_GET_TimeInterleaving*)pArgs)).eIsdbtLayer, &((*((DMD_ISDBT_GET_TimeInterleaving*)pArgs)).eTimeInterleaving));
2916*53ee8cc1Swenshuai.xi         break;
2917*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetSignalFFTValue:
2918*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetSignalFFTValue((EN_ISDBT_FFT_VAL *)pArgs);
2919*53ee8cc1Swenshuai.xi         break;
2920*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetSignalModulation:
2921*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetSignalModulation((*((DMD_ISDBT_GET_MODULATION*)pArgs)).eIsdbtLayer, &((*((DMD_ISDBT_GET_MODULATION*)pArgs)).eConstellation));
2922*53ee8cc1Swenshuai.xi         break;
2923*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_ReadIFAGC:
2924*53ee8cc1Swenshuai.xi         *((MS_U16 *)pArgs) = _HAL_INTERN_ISDBT_ReadIFAGC();
2925*53ee8cc1Swenshuai.xi         break;
2926*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetFreqOffset:
2927*53ee8cc1Swenshuai.xi         #ifdef UTPA2
2928*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetFreqOffset(&((*((DMD_ISDBT_CFO_DATA*)pArgs)).FFT_Mode), &((*((DMD_ISDBT_CFO_DATA*)pArgs)).TdCfoRegValue), &((*((DMD_ISDBT_CFO_DATA*)pArgs)).FdCfoRegValue), &((*((DMD_ISDBT_CFO_DATA*)pArgs)).IcfoRegValue));
2929*53ee8cc1Swenshuai.xi         #else
2930*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetFreqOffset((float *)pArgs);
2931*53ee8cc1Swenshuai.xi         #endif
2932*53ee8cc1Swenshuai.xi         break;
2933*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetSignalQuality:
2934*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetSignalQualityOfLayerA:
2935*53ee8cc1Swenshuai.xi         #ifndef UTPA2
2936*53ee8cc1Swenshuai.xi         *((MS_U16*)pArgs) = _HAL_INTERN_ISDBT_GetSignalQualityOfLayerA();
2937*53ee8cc1Swenshuai.xi         #endif
2938*53ee8cc1Swenshuai.xi         break;
2939*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetSignalQualityOfLayerB:
2940*53ee8cc1Swenshuai.xi         #ifndef UTPA2
2941*53ee8cc1Swenshuai.xi         *((MS_U16*)pArgs) = _HAL_INTERN_ISDBT_GetSignalQualityOfLayerB();
2942*53ee8cc1Swenshuai.xi         #endif
2943*53ee8cc1Swenshuai.xi         break;
2944*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetSignalQualityOfLayerC:
2945*53ee8cc1Swenshuai.xi         #ifndef UTPA2
2946*53ee8cc1Swenshuai.xi         *((MS_U16*)pArgs) = _HAL_INTERN_ISDBT_GetSignalQualityOfLayerC();
2947*53ee8cc1Swenshuai.xi         #endif
2948*53ee8cc1Swenshuai.xi         break;
2949*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetSignalQualityCombine:
2950*53ee8cc1Swenshuai.xi         #ifndef UTPA2
2951*53ee8cc1Swenshuai.xi         *((MS_U16*)pArgs) = _HAL_INTERN_ISDBT_GetSignalQualityOfLayerCombine();
2952*53ee8cc1Swenshuai.xi         #endif
2953*53ee8cc1Swenshuai.xi         break;
2954*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetSNR:
2955*53ee8cc1Swenshuai.xi         #ifdef UTPA2
2956*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetSNR(&((*((DMD_ISDBT_SNR_DATA*)pArgs)).RegSNR), &((*((DMD_ISDBT_SNR_DATA*)pArgs)).RegSnrObsNum));
2957*53ee8cc1Swenshuai.xi         #else
2958*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetSNR((float *)pArgs);
2959*53ee8cc1Swenshuai.xi         #endif
2960*53ee8cc1Swenshuai.xi         break;
2961*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetPreViterbiBer:
2962*53ee8cc1Swenshuai.xi         #ifdef UTPA2
2963*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetPreViterbiBer((*((DMD_ISDBT_GET_BER_VALUE*)pArgs)).eIsdbtLayer, &((*((DMD_ISDBT_GET_BER_VALUE*)pArgs)).BerValue), &((*((DMD_ISDBT_GET_BER_VALUE*)pArgs)).BerPeriod));
2964*53ee8cc1Swenshuai.xi         #else
2965*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetPreViterbiBer((*((DMD_ISDBT_GET_BER_VALUE*)pArgs)).eIsdbtLayer, &((*((DMD_ISDBT_GET_BER_VALUE*)pArgs)).fBerValue));
2966*53ee8cc1Swenshuai.xi         #endif
2967*53ee8cc1Swenshuai.xi         break;
2968*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GetPostViterbiBer:
2969*53ee8cc1Swenshuai.xi         #ifdef UTPA2
2970*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetPostViterbiBer((*((DMD_ISDBT_GET_BER_VALUE*)pArgs)).eIsdbtLayer, &((*((DMD_ISDBT_GET_BER_VALUE*)pArgs)).BerValue), &((*((DMD_ISDBT_GET_BER_VALUE*)pArgs)).BerPeriod));
2971*53ee8cc1Swenshuai.xi         #else
2972*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetPostViterbiBer((*((DMD_ISDBT_GET_BER_VALUE*)pArgs)).eIsdbtLayer, &((*((DMD_ISDBT_GET_BER_VALUE*)pArgs)).fBerValue));
2973*53ee8cc1Swenshuai.xi         #endif
2974*53ee8cc1Swenshuai.xi         break;
2975*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_Read_PKT_ERR:
2976*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_Read_PKT_ERR((*((DMD_ISDBT_GET_PKT_ERR*)pArgs)).eIsdbtLayer, &((*((DMD_ISDBT_GET_PKT_ERR*)pArgs)).u16PacketErr));
2977*53ee8cc1Swenshuai.xi         break;
2978*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_TS_INTERFACE_CONFIG:
2979*53ee8cc1Swenshuai.xi         break;
2980*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_IIC_Bypass_Mode:
2981*53ee8cc1Swenshuai.xi         break;
2982*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_SSPI_TO_GPIO:
2983*53ee8cc1Swenshuai.xi         break;
2984*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GPIO_GET_LEVEL:
2985*53ee8cc1Swenshuai.xi         break;
2986*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GPIO_SET_LEVEL:
2987*53ee8cc1Swenshuai.xi         break;
2988*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GPIO_OUT_ENABLE:
2989*53ee8cc1Swenshuai.xi         break;
2990*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_GET_REG:
2991*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_GetReg((*((DMD_ISDBT_REG_DATA *)pArgs)).u16Addr, &((*((DMD_ISDBT_REG_DATA *)pArgs)).u8Data));
2992*53ee8cc1Swenshuai.xi         break;
2993*53ee8cc1Swenshuai.xi     case DMD_ISDBT_HAL_CMD_SET_REG:
2994*53ee8cc1Swenshuai.xi         bResult = _HAL_INTERN_ISDBT_SetReg((*((DMD_ISDBT_REG_DATA *)pArgs)).u16Addr, (*((DMD_ISDBT_REG_DATA *)pArgs)).u8Data);
2995*53ee8cc1Swenshuai.xi         break;
2996*53ee8cc1Swenshuai.xi     default:
2997*53ee8cc1Swenshuai.xi         break;
2998*53ee8cc1Swenshuai.xi     }
2999*53ee8cc1Swenshuai.xi 
3000*53ee8cc1Swenshuai.xi     return bResult;
3001*53ee8cc1Swenshuai.xi }
3002*53ee8cc1Swenshuai.xi 
MDrv_DMD_ISDBT_Initial_Hal_Interface(void)3003*53ee8cc1Swenshuai.xi MS_BOOL MDrv_DMD_ISDBT_Initial_Hal_Interface(void)
3004*53ee8cc1Swenshuai.xi {
3005*53ee8cc1Swenshuai.xi     return TRUE;
3006*53ee8cc1Swenshuai.xi }
3007*53ee8cc1Swenshuai.xi 
3008