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_ATSC.h"
106*53ee8cc1Swenshuai.xi
107*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
108*53ee8cc1Swenshuai.xi // Driver Compiler Options
109*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
110*53ee8cc1Swenshuai.xi
111*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_T3_T10 0x01
112*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_T7 0x02
113*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_T8_T9 0x03
114*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_A1 0x04
115*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_A3 0x05
116*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_A5 0x06
117*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_A7 0x07
118*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_A7P 0x08
119*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_AGATE 0x09
120*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_EDISON 0x0A
121*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_EINSTEIN 0x0B
122*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_EMERALD 0x0C
123*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_EIFFEL 0x0D
124*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_EDEN 0x0E
125*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_EINSTEIN3 0x0F
126*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_MONACO 0x10
127*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_MIAMI 0x11
128*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_MUJI 0x12
129*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_MUNICH 0x13
130*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_MAYA 0x14
131*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_MANHATTAN 0x15
132*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_WHISKY 0x16
133*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_MASERATI 0x17
134*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_MACAN 0x18
135*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_MUSTANG 0x19
136*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_MAXIM 0x1A
137*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_K3 0x80 //UTOF start from 0x80
138*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_KELTIC 0x81
139*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_KERES 0x82
140*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_KIRIN 0x83
141*53ee8cc1Swenshuai.xi
142*53ee8cc1Swenshuai.xi #if defined(CHIP_A1)
143*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_A1
144*53ee8cc1Swenshuai.xi #elif defined(CHIP_A3)
145*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_A3
146*53ee8cc1Swenshuai.xi #elif defined(CHIP_A5)
147*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_A5
148*53ee8cc1Swenshuai.xi #elif defined(CHIP_A7)
149*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_A7
150*53ee8cc1Swenshuai.xi #elif defined(CHIP_AMETHYST)
151*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_A7P
152*53ee8cc1Swenshuai.xi #elif defined(CHIP_AGATE)
153*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_AGATE
154*53ee8cc1Swenshuai.xi #elif defined(CHIP_EDISON)
155*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_EDISON
156*53ee8cc1Swenshuai.xi #elif defined(CHIP_EINSTEIN)
157*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_EINSTEIN
158*53ee8cc1Swenshuai.xi #elif defined(CHIP_EINSTEIN3)
159*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_EINSTEIN3
160*53ee8cc1Swenshuai.xi #elif defined(CHIP_MONACO)
161*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_MONACO
162*53ee8cc1Swenshuai.xi #elif defined(CHIP_EMERALD)
163*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_EMERALD
164*53ee8cc1Swenshuai.xi #elif defined(CHIP_EIFFEL)
165*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_EIFFEL
166*53ee8cc1Swenshuai.xi #elif defined(CHIP_KAISER)
167*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_K3
168*53ee8cc1Swenshuai.xi #elif defined(CHIP_KELTIC)
169*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_KELTIC
170*53ee8cc1Swenshuai.xi #elif defined(CHIP_EDEN)
171*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_EDEN
172*53ee8cc1Swenshuai.xi #elif defined(CHIP_MIAMI)
173*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_MIAMI
174*53ee8cc1Swenshuai.xi #elif defined(CHIP_KERES)
175*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_KERES
176*53ee8cc1Swenshuai.xi #elif defined(CHIP_MUJI)
177*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_MUJI
178*53ee8cc1Swenshuai.xi #elif defined(CHIP_MUNICH)
179*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_MUNICH
180*53ee8cc1Swenshuai.xi #elif defined(CHIP_KIRIN)
181*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_KIRIN
182*53ee8cc1Swenshuai.xi #elif defined(CHIP_MAYA)
183*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_MAYA
184*53ee8cc1Swenshuai.xi #elif defined(CHIP_MANHATTAN)
185*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_MANHATTAN
186*53ee8cc1Swenshuai.xi #elif defined(CHIP_WHISKY)
187*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_WHISKY
188*53ee8cc1Swenshuai.xi #elif defined(CHIP_MASERATI)
189*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_MASERATI
190*53ee8cc1Swenshuai.xi #elif defined(CHIP_MACAN)
191*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_MACAN
192*53ee8cc1Swenshuai.xi #elif defined(CHIP_MUSTANG)
193*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_MUSTANG
194*53ee8cc1Swenshuai.xi #elif defined(CHIP_MAXIM)
195*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_MAXIM
196*53ee8cc1Swenshuai.xi #else
197*53ee8cc1Swenshuai.xi #define DMD_ATSC_CHIP_VERSION DMD_ATSC_CHIP_MACAN
198*53ee8cc1Swenshuai.xi #endif
199*53ee8cc1Swenshuai.xi
200*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
201*53ee8cc1Swenshuai.xi // Local Defines
202*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
203*53ee8cc1Swenshuai.xi
204*53ee8cc1Swenshuai.xi #define _RIU_READ_BYTE(addr) ( READ_BYTE(psDMD_ATSC_ResData->sDMD_ATSC_PriData.virtDMDBaseAddr + (addr) ) )
205*53ee8cc1Swenshuai.xi #define _RIU_WRITE_BYTE(addr, val) ( WRITE_BYTE(psDMD_ATSC_ResData->sDMD_ATSC_PriData.virtDMDBaseAddr + (addr), val) )
206*53ee8cc1Swenshuai.xi
207*53ee8cc1Swenshuai.xi #define HAL_INTERN_ATSC_DBINFO(y) //y
208*53ee8cc1Swenshuai.xi
209*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_A1)
210*53ee8cc1Swenshuai.xi #ifndef MBRegBase
211*53ee8cc1Swenshuai.xi #define MBRegBase 0x112600UL
212*53ee8cc1Swenshuai.xi #endif
213*53ee8cc1Swenshuai.xi #ifndef MBRegBase_DMD1
214*53ee8cc1Swenshuai.xi #define MBRegBase_DMD1 0x112400UL
215*53ee8cc1Swenshuai.xi #endif
216*53ee8cc1Swenshuai.xi #else
217*53ee8cc1Swenshuai.xi #ifndef MBRegBase
218*53ee8cc1Swenshuai.xi #define MBRegBase 0x110500UL
219*53ee8cc1Swenshuai.xi #endif
220*53ee8cc1Swenshuai.xi #endif
221*53ee8cc1Swenshuai.xi
222*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_T3_T10)
223*53ee8cc1Swenshuai.xi #ifndef DMDMcuBase
224*53ee8cc1Swenshuai.xi #define DMDMcuBase 0x103460UL
225*53ee8cc1Swenshuai.xi #endif
226*53ee8cc1Swenshuai.xi #else
227*53ee8cc1Swenshuai.xi #ifndef DMDMcuBase
228*53ee8cc1Swenshuai.xi #define DMDMcuBase 0x103480UL
229*53ee8cc1Swenshuai.xi #endif
230*53ee8cc1Swenshuai.xi #endif
231*53ee8cc1Swenshuai.xi
232*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
233*53ee8cc1Swenshuai.xi #define INTERN_ATSC_OUTER_STATE 0xF0
234*53ee8cc1Swenshuai.xi #else
235*53ee8cc1Swenshuai.xi #define INTERN_ATSC_OUTER_STATE 0x80
236*53ee8cc1Swenshuai.xi #endif
237*53ee8cc1Swenshuai.xi #define INTERN_ATSC_VSB_TRAIN_SNR_LIMIT 0x05//0xBE//14.5dB
238*53ee8cc1Swenshuai.xi #define INTERN_ATSC_FEC_ENABLE 0x1F
239*53ee8cc1Swenshuai.xi
240*53ee8cc1Swenshuai.xi #define VSB_ATSC 0x04
241*53ee8cc1Swenshuai.xi #define QAM256_ATSC 0x02
242*53ee8cc1Swenshuai.xi
243*53ee8cc1Swenshuai.xi #define QAM16_J83ABC 0x00
244*53ee8cc1Swenshuai.xi #define QAM32_J83ABC 0x01
245*53ee8cc1Swenshuai.xi #define QAM64_J83ABC 0x02
246*53ee8cc1Swenshuai.xi #define QAM128_J83ABC 0x03
247*53ee8cc1Swenshuai.xi #define QAM256_J83ABC 0x04
248*53ee8cc1Swenshuai.xi
249*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
250*53ee8cc1Swenshuai.xi // Local Variables
251*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
252*53ee8cc1Swenshuai.xi
253*53ee8cc1Swenshuai.xi const MS_U8 INTERN_ATSC_table[] = {
254*53ee8cc1Swenshuai.xi #include "DMD_INTERN_ATSC.dat"
255*53ee8cc1Swenshuai.xi };
256*53ee8cc1Swenshuai.xi
257*53ee8cc1Swenshuai.xi static MS_U16 u16Lib_size = sizeof(INTERN_ATSC_table);
258*53ee8cc1Swenshuai.xi
259*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION < DMD_ATSC_CHIP_K3)
260*53ee8cc1Swenshuai.xi
261*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_T7)
262*53ee8cc1Swenshuai.xi static MS_U8 Demod_Flow_register[17] = {0x52, 0x72, 0x52, 0x72, 0x5C, 0x5C, 0xA3, 0xEC, 0xEA,
263*53ee8cc1Swenshuai.xi 0x05, 0x74, 0x1E, 0x38, 0x3A, 0x08, 0x70, 0x68};
264*53ee8cc1Swenshuai.xi #else
265*53ee8cc1Swenshuai.xi static MS_U8 Demod_Flow_register[21] = {0x52, 0x72, 0x52, 0x72, 0x5C, 0x5C, 0xA3, 0xEC, 0xEA,
266*53ee8cc1Swenshuai.xi 0x05, 0x74, 0x1E, 0x38, 0x3A, 0x00, 0x00, 0x00, 0x00,
267*53ee8cc1Swenshuai.xi 0x00, 0x00, 0x00};
268*53ee8cc1Swenshuai.xi #endif
269*53ee8cc1Swenshuai.xi
270*53ee8cc1Swenshuai.xi #endif
271*53ee8cc1Swenshuai.xi
272*53ee8cc1Swenshuai.xi #ifndef UTPA2
273*53ee8cc1Swenshuai.xi static const float _LogApproxTableX[80] =
274*53ee8cc1Swenshuai.xi { 1.00, 1.30, 1.69, 2.20, 2.86, 3.71, 4.83, 6.27, 8.16, 10.60, 13.79,
275*53ee8cc1Swenshuai.xi 17.92, 23.30, 30.29, 39.37, 51.19, 66.54, 86.50, 112.46, 146.19,
276*53ee8cc1Swenshuai.xi 190.05, 247.06, 321.18, 417.54, 542.80, 705.64, 917.33, 1192.53,
277*53ee8cc1Swenshuai.xi 1550.29, 2015.38, 2620.00, 3405.99, 4427.79, 5756.13, 7482.97,
278*53ee8cc1Swenshuai.xi 9727.86, 12646.22, 16440.08, 21372.11, 27783.74, 36118.86,
279*53ee8cc1Swenshuai.xi 46954.52, 61040.88, 79353.15, 103159.09, 134106.82, 174338.86,
280*53ee8cc1Swenshuai.xi 226640.52, 294632.68, 383022.48, 497929.22, 647307.99, 841500.39, 1093950.50,
281*53ee8cc1Swenshuai.xi 1422135.65, 1848776.35, 2403409.25, 3124432.03, 4061761.64, 5280290.13,
282*53ee8cc1Swenshuai.xi 6864377.17, 8923690.32, 11600797.42, 15081036.65, 19605347.64, 25486951.94,
283*53ee8cc1Swenshuai.xi 33133037.52, 43072948.77, 55994833.40, 72793283.42, 94631268.45,
284*53ee8cc1Swenshuai.xi 123020648.99, 159926843.68, 207904896.79, 270276365.82, 351359275.57,
285*53ee8cc1Swenshuai.xi 456767058.24, 593797175.72, 771936328.43, 1003517226.96
286*53ee8cc1Swenshuai.xi };
287*53ee8cc1Swenshuai.xi
288*53ee8cc1Swenshuai.xi static const float _LogApproxTableY[80] =
289*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,
290*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,
291*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,
292*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,
293*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,
294*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,
295*53ee8cc1Swenshuai.xi 7.86, 7.98, 8.09, 8.20, 8.32, 8.43, 8.55, 8.66
296*53ee8cc1Swenshuai.xi };
297*53ee8cc1Swenshuai.xi #endif
298*53ee8cc1Swenshuai.xi
299*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
300*53ee8cc1Swenshuai.xi // Global Variables
301*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
302*53ee8cc1Swenshuai.xi
303*53ee8cc1Swenshuai.xi extern MS_U8 u8DMD_ATSC_DMD_ID;
304*53ee8cc1Swenshuai.xi
305*53ee8cc1Swenshuai.xi extern DMD_ATSC_ResData *psDMD_ATSC_ResData;
306*53ee8cc1Swenshuai.xi
307*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
308*53ee8cc1Swenshuai.xi // Local Functions
309*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
310*53ee8cc1Swenshuai.xi #ifndef UTPA2
311*53ee8cc1Swenshuai.xi #ifndef MSOS_TYPE_LINUX
Log10Approx(float flt_x)312*53ee8cc1Swenshuai.xi static float Log10Approx(float flt_x)
313*53ee8cc1Swenshuai.xi {
314*53ee8cc1Swenshuai.xi MS_U8 indx = 0;
315*53ee8cc1Swenshuai.xi
316*53ee8cc1Swenshuai.xi do {
317*53ee8cc1Swenshuai.xi if (flt_x < _LogApproxTableX[indx])
318*53ee8cc1Swenshuai.xi break;
319*53ee8cc1Swenshuai.xi indx++;
320*53ee8cc1Swenshuai.xi }while (indx < 79); //stop at indx = 80
321*53ee8cc1Swenshuai.xi
322*53ee8cc1Swenshuai.xi return _LogApproxTableY[indx];
323*53ee8cc1Swenshuai.xi }
324*53ee8cc1Swenshuai.xi #endif
325*53ee8cc1Swenshuai.xi #endif
326*53ee8cc1Swenshuai.xi
_HAL_DMD_RIU_ReadByte(MS_U32 u32Addr)327*53ee8cc1Swenshuai.xi static MS_U8 _HAL_DMD_RIU_ReadByte(MS_U32 u32Addr)
328*53ee8cc1Swenshuai.xi {
329*53ee8cc1Swenshuai.xi return _RIU_READ_BYTE(((u32Addr) << 1) - ((u32Addr) & 1));
330*53ee8cc1Swenshuai.xi }
331*53ee8cc1Swenshuai.xi
_HAL_DMD_RIU_WriteByte(MS_U32 u32Addr,MS_U8 u8Value)332*53ee8cc1Swenshuai.xi static void _HAL_DMD_RIU_WriteByte(MS_U32 u32Addr, MS_U8 u8Value)
333*53ee8cc1Swenshuai.xi {
334*53ee8cc1Swenshuai.xi _RIU_WRITE_BYTE(((u32Addr) << 1) - ((u32Addr) & 1), u8Value);
335*53ee8cc1Swenshuai.xi }
336*53ee8cc1Swenshuai.xi
_HAL_DMD_RIU_WriteByteMask(MS_U32 u32Addr,MS_U8 u8Value,MS_U8 u8Mask)337*53ee8cc1Swenshuai.xi static void _HAL_DMD_RIU_WriteByteMask(MS_U32 u32Addr, MS_U8 u8Value, MS_U8 u8Mask)
338*53ee8cc1Swenshuai.xi {
339*53ee8cc1Swenshuai.xi _RIU_WRITE_BYTE((((u32Addr) <<1) - ((u32Addr) & 1)), (_RIU_READ_BYTE((((u32Addr) <<1) - ((u32Addr) & 1))) & ~(u8Mask)) | ((u8Value) & (u8Mask)));
340*53ee8cc1Swenshuai.xi }
_MBX_WriteReg(MS_U16 u16Addr,MS_U8 u8Data)341*53ee8cc1Swenshuai.xi static MS_BOOL _MBX_WriteReg(MS_U16 u16Addr, MS_U8 u8Data)
342*53ee8cc1Swenshuai.xi {
343*53ee8cc1Swenshuai.xi MS_U8 u8CheckCount;
344*53ee8cc1Swenshuai.xi MS_U8 u8CheckFlag = 0xFF;
345*53ee8cc1Swenshuai.xi MS_U32 u32MBRegBase = MBRegBase;
346*53ee8cc1Swenshuai.xi
347*53ee8cc1Swenshuai.xi if (u8DMD_ATSC_DMD_ID == 0)
348*53ee8cc1Swenshuai.xi u32MBRegBase = MBRegBase;
349*53ee8cc1Swenshuai.xi else if (u8DMD_ATSC_DMD_ID == 1)
350*53ee8cc1Swenshuai.xi u32MBRegBase = MBRegBase_DMD1;
351*53ee8cc1Swenshuai.xi
352*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x00, (u16Addr&0xff));
353*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x01, (u16Addr>>8));
354*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x10, u8Data);
355*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x1E, 0x01);
356*53ee8cc1Swenshuai.xi
357*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)|0x02); // assert interrupt to VD MCU51
358*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)&(~0x02)); // de-assert interrupt to VD MCU51
359*53ee8cc1Swenshuai.xi
360*53ee8cc1Swenshuai.xi for (u8CheckCount=0; u8CheckCount < 10; u8CheckCount++)
361*53ee8cc1Swenshuai.xi {
362*53ee8cc1Swenshuai.xi u8CheckFlag = _HAL_DMD_RIU_ReadByte(u32MBRegBase + 0x1E);
363*53ee8cc1Swenshuai.xi if ((u8CheckFlag&0x01)==0)
364*53ee8cc1Swenshuai.xi break;
365*53ee8cc1Swenshuai.xi MsOS_DelayTask(1);
366*53ee8cc1Swenshuai.xi }
367*53ee8cc1Swenshuai.xi
368*53ee8cc1Swenshuai.xi if (u8CheckFlag&0x01)
369*53ee8cc1Swenshuai.xi {
370*53ee8cc1Swenshuai.xi printf("ERROR: ATSC INTERN DEMOD MBX WRITE TIME OUT!\n");
371*53ee8cc1Swenshuai.xi return FALSE;
372*53ee8cc1Swenshuai.xi }
373*53ee8cc1Swenshuai.xi
374*53ee8cc1Swenshuai.xi return TRUE;
375*53ee8cc1Swenshuai.xi }
376*53ee8cc1Swenshuai.xi
_MBX_ReadReg(MS_U16 u16Addr,MS_U8 * u8Data)377*53ee8cc1Swenshuai.xi static MS_BOOL _MBX_ReadReg(MS_U16 u16Addr, MS_U8 *u8Data)
378*53ee8cc1Swenshuai.xi {
379*53ee8cc1Swenshuai.xi MS_U8 u8CheckCount;
380*53ee8cc1Swenshuai.xi MS_U8 u8CheckFlag = 0xFF;
381*53ee8cc1Swenshuai.xi MS_U32 u32MBRegBase = MBRegBase;
382*53ee8cc1Swenshuai.xi
383*53ee8cc1Swenshuai.xi if (u8DMD_ATSC_DMD_ID == 0)
384*53ee8cc1Swenshuai.xi u32MBRegBase = MBRegBase;
385*53ee8cc1Swenshuai.xi else if (u8DMD_ATSC_DMD_ID == 1)
386*53ee8cc1Swenshuai.xi u32MBRegBase = MBRegBase_DMD1;
387*53ee8cc1Swenshuai.xi
388*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x00, (u16Addr&0xff));
389*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x01, (u16Addr>>8));
390*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(u32MBRegBase + 0x1E, 0x02);
391*53ee8cc1Swenshuai.xi
392*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)|0x02); // assert interrupt to VD MCU51
393*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)&(~0x02)); // de-assert interrupt to VD MCU51
394*53ee8cc1Swenshuai.xi
395*53ee8cc1Swenshuai.xi for (u8CheckCount=0; u8CheckCount < 10; u8CheckCount++)
396*53ee8cc1Swenshuai.xi {
397*53ee8cc1Swenshuai.xi u8CheckFlag = _HAL_DMD_RIU_ReadByte(u32MBRegBase + 0x1E);
398*53ee8cc1Swenshuai.xi if ((u8CheckFlag&0x02)==0)
399*53ee8cc1Swenshuai.xi {
400*53ee8cc1Swenshuai.xi *u8Data = _HAL_DMD_RIU_ReadByte(u32MBRegBase + 0x10);
401*53ee8cc1Swenshuai.xi break;
402*53ee8cc1Swenshuai.xi }
403*53ee8cc1Swenshuai.xi MsOS_DelayTask(1);
404*53ee8cc1Swenshuai.xi }
405*53ee8cc1Swenshuai.xi
406*53ee8cc1Swenshuai.xi if (u8CheckFlag&0x02)
407*53ee8cc1Swenshuai.xi {
408*53ee8cc1Swenshuai.xi printf("ERROR: ATSC INTERN DEMOD MBX READ TIME OUT!\n");
409*53ee8cc1Swenshuai.xi return FALSE;
410*53ee8cc1Swenshuai.xi }
411*53ee8cc1Swenshuai.xi
412*53ee8cc1Swenshuai.xi return TRUE;
413*53ee8cc1Swenshuai.xi }
414*53ee8cc1Swenshuai.xi
415*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_K3)
_SEL_DMD(void)416*53ee8cc1Swenshuai.xi static MS_BOOL _SEL_DMD(void)
417*53ee8cc1Swenshuai.xi {
418*53ee8cc1Swenshuai.xi MS_U8 u8data = 0;
419*53ee8cc1Swenshuai.xi
420*53ee8cc1Swenshuai.xi u8data = _HAL_DMD_RIU_ReadByte(0x101e3c);
421*53ee8cc1Swenshuai.xi
422*53ee8cc1Swenshuai.xi if (u8DMD_ATSC_DMD_ID == 0) //select DMD0
423*53ee8cc1Swenshuai.xi u8data &= (~0x10);
424*53ee8cc1Swenshuai.xi else if (u8DMD_ATSC_DMD_ID == 1) //sel DMD1
425*53ee8cc1Swenshuai.xi u8data |= 0x10;
426*53ee8cc1Swenshuai.xi
427*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e3c, u8data);
428*53ee8cc1Swenshuai.xi
429*53ee8cc1Swenshuai.xi return TRUE;
430*53ee8cc1Swenshuai.xi }
431*53ee8cc1Swenshuai.xi #endif
432*53ee8cc1Swenshuai.xi
433*53ee8cc1Swenshuai.xi #if ((DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_A1) && (DMD_ATSC_CHIP_VERSION < DMD_ATSC_CHIP_K3))
_initTable(void)434*53ee8cc1Swenshuai.xi static void _initTable(void)
435*53ee8cc1Swenshuai.xi {
436*53ee8cc1Swenshuai.xi DMD_ATSC_ResData *pRes = psDMD_ATSC_ResData + u8DMD_ATSC_DMD_ID;
437*53ee8cc1Swenshuai.xi
438*53ee8cc1Swenshuai.xi if (pRes->sDMD_ATSC_InitData.bTunerGainInvert)
439*53ee8cc1Swenshuai.xi Demod_Flow_register[12]=1;
440*53ee8cc1Swenshuai.xi else Demod_Flow_register[12]=0;
441*53ee8cc1Swenshuai.xi
442*53ee8cc1Swenshuai.xi if (pRes->sDMD_ATSC_InitData.bIQSwap)
443*53ee8cc1Swenshuai.xi Demod_Flow_register[14] = 1;
444*53ee8cc1Swenshuai.xi else Demod_Flow_register[14] = 0;
445*53ee8cc1Swenshuai.xi
446*53ee8cc1Swenshuai.xi Demod_Flow_register[15] = pRes->sDMD_ATSC_InitData.u16IF_KHZ&0xFF;
447*53ee8cc1Swenshuai.xi Demod_Flow_register[16] = (pRes->sDMD_ATSC_InitData.u16IF_KHZ)>>8;
448*53ee8cc1Swenshuai.xi
449*53ee8cc1Swenshuai.xi printf("\n#### IF_KHz = [%d]\n", pRes->sDMD_ATSC_InitData.u16IF_KHZ);
450*53ee8cc1Swenshuai.xi printf("\n#### IQ_SWAP = [%d]\n", pRes->sDMD_ATSC_InitData.bIQSwap);
451*53ee8cc1Swenshuai.xi printf("\n#### Tuner Gain Invert = [%d]\n", pRes->sDMD_ATSC_InitData.bTunerGainInvert);
452*53ee8cc1Swenshuai.xi }
453*53ee8cc1Swenshuai.xi #endif
454*53ee8cc1Swenshuai.xi
455*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_T3_T10)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)456*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
457*53ee8cc1Swenshuai.xi {
458*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_T3_T10--------------\n"));
459*53ee8cc1Swenshuai.xi
460*53ee8cc1Swenshuai.xi // MailBox
461*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b44, 0x00); //clk mail box0 =xtal <<hk51 <--mail box 0--> aeon
462*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b45, 0x00); //clk mail box0 =xtal <<hk51 <--mail box 1--> aeon
463*53ee8cc1Swenshuai.xi
464*53ee8cc1Swenshuai.xi // Enable DMD MCU clock (108MHz)
465*53ee8cc1Swenshuai.xi if (_HAL_DMD_RIU_ReadByte(0x001ecf) == 0x00)
466*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b42, 0x10);
467*53ee8cc1Swenshuai.xi else //after t3_u02
468*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b42, 0x0D);
469*53ee8cc1Swenshuai.xi
470*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b43, 0x01); // Disable VD200 clock
471*53ee8cc1Swenshuai.xi
472*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x01); // Disable ADC clock
473*53ee8cc1Swenshuai.xi
474*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x01); // Disable DVB INNER clock
475*53ee8cc1Swenshuai.xi
476*53ee8cc1Swenshuai.xi // Enable ATSC clock
477*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
478*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103303, 0x00);
479*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103304, 0x00);
480*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103305, 0x00);
481*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103306, 0x00);
482*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103307, 0x00);
483*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10330a, 0x08);
484*53ee8cc1Swenshuai.xi
485*53ee8cc1Swenshuai.xi // Enable DVB INNERx1&2 clock
486*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10330c, 0x00);
487*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10330d, 0x00);
488*53ee8cc1Swenshuai.xi
489*53ee8cc1Swenshuai.xi // Enable DVB SRAM0~SRAM3 clock
490*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103318, 0x00);
491*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103319, 0x00);
492*53ee8cc1Swenshuai.xi
493*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00); // Enable ATSC TS clock
494*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x01); // Disable DVB TS clock
495*53ee8cc1Swenshuai.xi
496*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x18); // Set DMD clock div
497*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x04); // Enable DMD clock
498*53ee8cc1Swenshuai.xi
499*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(1);
500*53ee8cc1Swenshuai.xi
501*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00); // Enable ADC clock
502*53ee8cc1Swenshuai.xi
503*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e22, 0x02); // Set TS PAD
504*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e23, 0x00);
505*53ee8cc1Swenshuai.xi
506*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b50, 0x08); // Enable TS0&1 clock
507*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b51, 0x08);
508*53ee8cc1Swenshuai.xi
509*53ee8cc1Swenshuai.xi if (bRFAGCTristateEnable)
510*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e05, 0x20, 0x30); // Set IF&RF AGC output mode
511*53ee8cc1Swenshuai.xi else
512*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e05, 0x00, 0x30); // Set IF&RF AGC output mode
513*53ee8cc1Swenshuai.xi }
514*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_T7)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)515*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
516*53ee8cc1Swenshuai.xi {
517*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_T7--------------\n"));
518*53ee8cc1Swenshuai.xi
519*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10); // Enable DMD MCU clock (108MHz)
520*53ee8cc1Swenshuai.xi
521*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x01); // Disable ADC clock
522*53ee8cc1Swenshuai.xi
523*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x01); // Disable DVB INNER clock
524*53ee8cc1Swenshuai.xi
525*53ee8cc1Swenshuai.xi // Enable ATSC clock
526*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
527*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103303, 0x00);
528*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103304, 0x00);
529*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103305, 0x00);
530*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103306, 0x00);
531*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103307, 0x00);
532*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10330a, 0x08);
533*53ee8cc1Swenshuai.xi
534*53ee8cc1Swenshuai.xi // Enable DVB INNERx1&2&4 clock
535*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10330c, 0x00);
536*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10330d, 0x00);
537*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10330e, 0x00);
538*53ee8cc1Swenshuai.xi
539*53ee8cc1Swenshuai.xi // Enable DVB OUTERx1&2&2_c clock
540*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103310, 0x00);
541*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103311, 0x00);
542*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103312, 0x00);
543*53ee8cc1Swenshuai.xi
544*53ee8cc1Swenshuai.xi // Enable DVB EQx1&8c clock
545*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103316, 0x00);
546*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103317, 0x00);
547*53ee8cc1Swenshuai.xi
548*53ee8cc1Swenshuai.xi // Enable DVB SRAM0~SRAM3 clock
549*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103318, 0x00);
550*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103319, 0x00);
551*53ee8cc1Swenshuai.xi
552*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00); // Enable ATSC TS clock
553*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x01); // Disable DVB TS clock
554*53ee8cc1Swenshuai.xi
555*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x18); // Set DMD clock div
556*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x04); // Enable DMD clock
557*53ee8cc1Swenshuai.xi
558*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(1);
559*53ee8cc1Swenshuai.xi
560*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00); // Enable ADC clock
561*53ee8cc1Swenshuai.xi
562*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e22, 0x02); // Set TS PAD
563*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e23, 0x00);
564*53ee8cc1Swenshuai.xi
565*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b50, 0x08); // Enable TS0&1 clock
566*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b51, 0x08);
567*53ee8cc1Swenshuai.xi
568*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e9e, 0x00, 0xCF); // Set IF&RF AGC PAD and PWM AGC mode
569*53ee8cc1Swenshuai.xi
570*53ee8cc1Swenshuai.xi if (bRFAGCTristateEnable)
571*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e05, 0x20, 0x30); // Set IF&RF AGC output mode
572*53ee8cc1Swenshuai.xi else
573*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e05, 0x00, 0x30); // Set IF&RF AGC output mode
574*53ee8cc1Swenshuai.xi
575*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101ea1, 0x00, 0x80); // Set all pads (except SPI) as output
576*53ee8cc1Swenshuai.xi
577*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x01);
578*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x112003, 0x20, 0x20); // Release Ana misc resest
579*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x01, 0x01);
580*53ee8cc1Swenshuai.xi
581*53ee8cc1Swenshuai.xi // Set DMD ANA
582*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112864, 0x00); // Set VCO first and second div
583*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112865, 0x00);
584*53ee8cc1Swenshuai.xi
585*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11286C, 0x20); // Disable T&RF-AGC
586*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11286D, 0x00);
587*53ee8cc1Swenshuai.xi
588*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112868, 0x00);
589*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112869, 0x80);
590*53ee8cc1Swenshuai.xi
591*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112862, 0x00); // Set PLL first and second div
592*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112863, 0x00);
593*53ee8cc1Swenshuai.xi
594*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112818, 0x03); // ADC I&Q pown down
595*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112819, 0x00);
596*53ee8cc1Swenshuai.xi
597*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(2);
598*53ee8cc1Swenshuai.xi
599*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11286A, 0x86); // Initial MPLL procedure
600*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11286B, 0x1E);
601*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(2);
602*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11286A, 0x06);
603*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11286B, 0x1E);
604*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(2);
605*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11286A, 0x06);
606*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11286B, 0x06);
607*53ee8cc1Swenshuai.xi
608*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(2);
609*53ee8cc1Swenshuai.xi
610*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112866, 0x01); // Set MPLL first and second div
611*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112867, 0x1d);
612*53ee8cc1Swenshuai.xi
613*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112860, 0x00); // MPLL power up
614*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112861, 0x1c); // Set ADC output div
615*53ee8cc1Swenshuai.xi
616*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112802, 0x40); // Set ADC I&Q
617*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112803, 0x04);
618*53ee8cc1Swenshuai.xi
619*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112816, 0x05); // set PGA gain
620*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112817, 0x05);
621*53ee8cc1Swenshuai.xi
622*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112818, 0x00); // ADC I&Q pown up
623*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112819, 0x00);
624*53ee8cc1Swenshuai.xi
625*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112840, 0x00); // Disable SIF&VIF
626*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112841, 0x00);
627*53ee8cc1Swenshuai.xi }
628*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_T8_T9)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)629*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
630*53ee8cc1Swenshuai.xi {
631*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_T8_T9--------------\n"));
632*53ee8cc1Swenshuai.xi
633*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331E, 0x10); // Enable DMD MCU clock (108MHz)
634*53ee8cc1Swenshuai.xi
635*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x01); // Disable ADC clock
636*53ee8cc1Swenshuai.xi
637*53ee8cc1Swenshuai.xi // Enable ATSC clock
638*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x08);
639*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
640*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02, 0x00);
641*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03, 0x00);
642*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04, 0x00);
643*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05, 0x00);
644*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06, 0x00);
645*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07, 0x00);
646*53ee8cc1Swenshuai.xi
647*53ee8cc1Swenshuai.xi // Disable DVB INNERx1&2&4 clock
648*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c, 0x01);
649*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d, 0x01);
650*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e, 0x01);
651*53ee8cc1Swenshuai.xi
652*53ee8cc1Swenshuai.xi // Disable DVB OUTERx1&2&2_c clock
653*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10, 0x01);
654*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11, 0x01);
655*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x01);
656*53ee8cc1Swenshuai.xi
657*53ee8cc1Swenshuai.xi // Disable DVB INNER clock
658*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f15, 0x01);
659*53ee8cc1Swenshuai.xi
660*53ee8cc1Swenshuai.xi // Disable DVB EQx1&8c clock
661*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f16, 0x01);
662*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f17, 0x01);
663*53ee8cc1Swenshuai.xi
664*53ee8cc1Swenshuai.xi // Enable DVB SRAM0~SRAM3 clock
665*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
666*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
667*53ee8cc1Swenshuai.xi
668*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11); // Set DMD clock div
669*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05); // Enable DMD clock
670*53ee8cc1Swenshuai.xi
671*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00); // Enable ATSC TS clock
672*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x01); // Disable DVB TS clock
673*53ee8cc1Swenshuai.xi
674*53ee8cc1Swenshuai.xi // Disable VIF clock
675*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f1c, 0x01);
676*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f1d, 0x01);
677*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331a, 0x01);
678*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331b, 0x01);
679*53ee8cc1Swenshuai.xi
680*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(1);
681*53ee8cc1Swenshuai.xi
682*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00); // Enable ADC clock
683*53ee8cc1Swenshuai.xi
684*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101eaf, 0x10, 0x18); // Set TS PAD
685*53ee8cc1Swenshuai.xi
686*53ee8cc1Swenshuai.xi if (bRFAGCTristateEnable)
687*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e05, 0x20, 0x30); // Set IF&RF AGC output mode
688*53ee8cc1Swenshuai.xi else
689*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e05, 0x00, 0x30); // Set IF&RF AGC output mode
690*53ee8cc1Swenshuai.xi
691*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e9e, 0x00, 0xCF); // Set IF&RF AGC PAD and PWM AGC mode
692*53ee8cc1Swenshuai.xi
693*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101ea0, 0x00, 0x03); // PWM2 uses PAD_PWM2 and PWM3 uses PAD_PWM3
694*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101ea1, 0x00, 0x80); // Set all pads (except SPI) as output
695*53ee8cc1Swenshuai.xi
696*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
697*53ee8cc1Swenshuai.xi }
698*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_A1)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)699*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
700*53ee8cc1Swenshuai.xi {
701*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_A1--------------\n"));
702*53ee8cc1Swenshuai.xi
703*53ee8cc1Swenshuai.xi //Set register at CLKGEN1
704*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
705*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10); // Denny: change 0x10!! 108M
706*53ee8cc1Swenshuai.xi
707*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x01); // Disable ADC clock
708*53ee8cc1Swenshuai.xi
709*53ee8cc1Swenshuai.xi // set parallet ts clock
710*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05);
711*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
712*53ee8cc1Swenshuai.xi
713*53ee8cc1Swenshuai.xi // enable atsc, DVBTC ts clock
714*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
715*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
716*53ee8cc1Swenshuai.xi
717*53ee8cc1Swenshuai.xi // enable dvbc adc clock
718*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
719*53ee8cc1Swenshuai.xi
720*53ee8cc1Swenshuai.xi // enable vif DAC clock
721*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331b, 0x00);
722*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331a, 0x00);
723*53ee8cc1Swenshuai.xi
724*53ee8cc1Swenshuai.xi // Set register at CLKGEN_DMD
725*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03, 0x00);
726*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02, 0x00);
727*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05, 0x00);
728*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04, 0x00);
729*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07, 0x00);
730*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06, 0x00);
731*53ee8cc1Swenshuai.xi
732*53ee8cc1Swenshuai.xi // enable clk_atsc_adcd_sync
733*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
734*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x08);
735*53ee8cc1Swenshuai.xi
736*53ee8cc1Swenshuai.xi // enable dvbt inner clock
737*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
738*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
739*53ee8cc1Swenshuai.xi
740*53ee8cc1Swenshuai.xi // enable dvbt inner clock
741*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
742*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
743*53ee8cc1Swenshuai.xi
744*53ee8cc1Swenshuai.xi // enable dvbt inner clock
745*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
746*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
747*53ee8cc1Swenshuai.xi
748*53ee8cc1Swenshuai.xi // enable dvbc outer clock
749*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
750*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x08);
751*53ee8cc1Swenshuai.xi
752*53ee8cc1Swenshuai.xi // enable dvbc inner-c clock
753*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f15, 0x00);
754*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f14, 0x00);
755*53ee8cc1Swenshuai.xi
756*53ee8cc1Swenshuai.xi // enable dvbc eq clock
757*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
758*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
759*53ee8cc1Swenshuai.xi
760*53ee8cc1Swenshuai.xi // enable vif clock
761*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f1d, 0x00);
762*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f1c, 0x00);
763*53ee8cc1Swenshuai.xi
764*53ee8cc1Swenshuai.xi // For ADC DMA Dump
765*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f21, 0x00);
766*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f20, 0x00);
767*53ee8cc1Swenshuai.xi
768*53ee8cc1Swenshuai.xi // select clock
769*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23, 0x00);
770*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);
771*53ee8cc1Swenshuai.xi
772*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(1);
773*53ee8cc1Swenshuai.xi
774*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00); // Enable ADC clock
775*53ee8cc1Swenshuai.xi
776*53ee8cc1Swenshuai.xi // Turn TSP
777*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b55, 0x00);
778*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b54, 0x00);
779*53ee8cc1Swenshuai.xi
780*53ee8cc1Swenshuai.xi // set the ts0_clk from demod
781*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b51, 0x00);
782*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x100b50, 0x0C);
783*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e22, 0x02);
784*53ee8cc1Swenshuai.xi
785*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
786*53ee8cc1Swenshuai.xi }
787*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_A7)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)788*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
789*53ee8cc1Swenshuai.xi {
790*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_A7--------------\n"));
791*53ee8cc1Swenshuai.xi
792*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
793*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
794*53ee8cc1Swenshuai.xi
795*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x01); // Disable ADC clock
796*53ee8cc1Swenshuai.xi
797*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05);
798*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
799*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
800*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
801*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
802*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03, 0x00);
803*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02, 0x00);
804*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05, 0x00);
805*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04, 0x00);
806*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07, 0x00);
807*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06, 0x00);
808*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
809*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
810*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
811*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
812*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
813*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
814*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
815*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
816*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
817*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x08);
818*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
819*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
820*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f25, 0x00);
821*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f24, 0x00);
822*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23, 0x00);
823*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);
824*53ee8cc1Swenshuai.xi
825*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(1);
826*53ee8cc1Swenshuai.xi
827*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00); // Enable ADC clock
828*53ee8cc1Swenshuai.xi
829*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x000e13, 0x00, 0x04);
830*53ee8cc1Swenshuai.xi
831*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
832*53ee8cc1Swenshuai.xi }
833*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_K3)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)834*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
835*53ee8cc1Swenshuai.xi {
836*53ee8cc1Swenshuai.xi DMD_ATSC_ResData *pRes = psDMD_ATSC_ResData + u8DMD_ATSC_DMD_ID;
837*53ee8cc1Swenshuai.xi
838*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_K3--------------\n"));
839*53ee8cc1Swenshuai.xi
840*53ee8cc1Swenshuai.xi if (pRes->sDMD_ATSC_InitData.u8IS_DUAL)
841*53ee8cc1Swenshuai.xi {
842*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, 0x00);
843*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e3d, 0x00);
844*53ee8cc1Swenshuai.xi
845*53ee8cc1Swenshuai.xi /****************DMD0****************/
846*53ee8cc1Swenshuai.xi
847*53ee8cc1Swenshuai.xi //set CLK_DMDMCU as 108M Hz
848*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
849*53ee8cc1Swenshuai.xi
850*53ee8cc1Swenshuai.xi // set parallet ts clock
851*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x07);
852*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
853*53ee8cc1Swenshuai.xi
854*53ee8cc1Swenshuai.xi // enable DVBTC ts clock
855*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
856*53ee8cc1Swenshuai.xi
857*53ee8cc1Swenshuai.xi // enable dvbc adc clock
858*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
859*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
860*53ee8cc1Swenshuai.xi
861*53ee8cc1Swenshuai.xi // enable clk_atsc_adcd_sync
862*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
863*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x04);
864*53ee8cc1Swenshuai.xi
865*53ee8cc1Swenshuai.xi // enable dvbt inner clock
866*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
867*53ee8cc1Swenshuai.xi
868*53ee8cc1Swenshuai.xi // enable dvbt outer clock
869*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
870*53ee8cc1Swenshuai.xi
871*53ee8cc1Swenshuai.xi // enable dvbc outer clock
872*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
873*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
874*53ee8cc1Swenshuai.xi
875*53ee8cc1Swenshuai.xi // enable dvbc inner-c clock
876*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f15, 0x04);
877*53ee8cc1Swenshuai.xi
878*53ee8cc1Swenshuai.xi // enable dvbc eq clock
879*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f17, 0x00);
880*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f16, 0x00);
881*53ee8cc1Swenshuai.xi
882*53ee8cc1Swenshuai.xi // For ADC DMA Dump
883*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x04);
884*53ee8cc1Swenshuai.xi
885*53ee8cc1Swenshuai.xi // Turn TSP
886*53ee8cc1Swenshuai.xi //_HAL_DMD_RIU_WriteByte(0x000e13, 0x01);
887*53ee8cc1Swenshuai.xi
888*53ee8cc1Swenshuai.xi //set reg_allpad_in
889*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101ea1, 0x00);
890*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e04, 0x02);
891*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e76, 0x03);
892*53ee8cc1Swenshuai.xi
893*53ee8cc1Swenshuai.xi /****************DMD1****************/
894*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f, 0x10);
895*53ee8cc1Swenshuai.xi
896*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103321, 0x07);
897*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103320, 0x11);
898*53ee8cc1Swenshuai.xi
899*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103323, 0x00);
900*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103322, 0x00);
901*53ee8cc1Swenshuai.xi
902*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11220b, 0x00);
903*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11220a, 0x04);
904*53ee8cc1Swenshuai.xi
905*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11220c, 0x00);
906*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112211, 0x00);
907*53ee8cc1Swenshuai.xi
908*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112213, 0x00);
909*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112212, 0x00);
910*53ee8cc1Swenshuai.xi
911*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112215, 0x04);
912*53ee8cc1Swenshuai.xi
913*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112217, 0x00);
914*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112216, 0x00);
915*53ee8cc1Swenshuai.xi
916*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112222, 0x04);
917*53ee8cc1Swenshuai.xi
918*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, 0x03); //force ANA MISC controlled by DMD0
919*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e3d, 0x01);
920*53ee8cc1Swenshuai.xi }
921*53ee8cc1Swenshuai.xi else
922*53ee8cc1Swenshuai.xi {
923*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, 0x00);
924*53ee8cc1Swenshuai.xi
925*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
926*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
927*53ee8cc1Swenshuai.xi
928*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x07);
929*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
930*53ee8cc1Swenshuai.xi
931*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
932*53ee8cc1Swenshuai.xi
933*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
934*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
935*53ee8cc1Swenshuai.xi
936*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
937*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
938*53ee8cc1Swenshuai.xi
939*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
940*53ee8cc1Swenshuai.xi
941*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
942*53ee8cc1Swenshuai.xi
943*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
944*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
945*53ee8cc1Swenshuai.xi
946*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f15, 0x00);
947*53ee8cc1Swenshuai.xi
948*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f17, 0x00);
949*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f16, 0x00);
950*53ee8cc1Swenshuai.xi
951*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);
952*53ee8cc1Swenshuai.xi
953*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101ea1, 0x00);
954*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e04, 0x02);
955*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e76, 0x03);
956*53ee8cc1Swenshuai.xi
957*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, 0x03); //force ANA MISC controlled by DMD0
958*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e3d, 0x01);
959*53ee8cc1Swenshuai.xi }
960*53ee8cc1Swenshuai.xi }
961*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_KELTIC)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)962*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
963*53ee8cc1Swenshuai.xi {
964*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_KELTIC--------------\n"));
965*53ee8cc1Swenshuai.xi
966*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, 0x00);
967*53ee8cc1Swenshuai.xi
968*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
969*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
970*53ee8cc1Swenshuai.xi
971*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x07);
972*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
973*53ee8cc1Swenshuai.xi
974*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
975*53ee8cc1Swenshuai.xi
976*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
977*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
978*53ee8cc1Swenshuai.xi
979*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
980*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x00);
981*53ee8cc1Swenshuai.xi
982*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
983*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
984*53ee8cc1Swenshuai.xi
985*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f15, 0x00);
986*53ee8cc1Swenshuai.xi
987*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f17, 0x00);
988*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f16, 0x00);
989*53ee8cc1Swenshuai.xi
990*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);
991*53ee8cc1Swenshuai.xi
992*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x1120bc, 0x00);
993*53ee8cc1Swenshuai.xi
994*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101ea1, 0x00);
995*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e04, 0x02);
996*53ee8cc1Swenshuai.xi
997*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, 0x03);
998*53ee8cc1Swenshuai.xi }
999*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_KERES)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1000*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1001*53ee8cc1Swenshuai.xi {
1002*53ee8cc1Swenshuai.xi MS_U8 u8Val=0x00;
1003*53ee8cc1Swenshuai.xi
1004*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_KERES--------------\n"));
1005*53ee8cc1Swenshuai.xi
1006*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1007*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1008*53ee8cc1Swenshuai.xi
1009*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f,0x00);
1010*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e,0x10);
1011*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301,0x07);
1012*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300,0x11);
1013*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309,0x00);
1014*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315,0x00);
1015*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314,0x00);
1016*53ee8cc1Swenshuai.xi
1017*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b,0x00);
1018*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a,0x00);
1019*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c,0x00);
1020*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11,0x00);
1021*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13,0x00);
1022*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12,0x00);
1023*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f15,0x00);
1024*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f17,0x00);
1025*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f16,0x00);
1026*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22,0x00);
1027*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f2b,0x00); //enable clk_rs
1028*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f2a,0x10);
1029*53ee8cc1Swenshuai.xi //_HAL_DMD_RIU_WriteByte(0x000e13,0x01); // No need, it cause uart issue.
1030*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101ea1,0x00);
1031*53ee8cc1Swenshuai.xi
1032*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e04,0x02);
1033*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e76,0x03);
1034*53ee8cc1Swenshuai.xi
1035*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1036*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val|0x03);
1037*53ee8cc1Swenshuai.xi }
1038*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_EDEN)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1039*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1040*53ee8cc1Swenshuai.xi {
1041*53ee8cc1Swenshuai.xi MS_U8 u8Val = 0x00;
1042*53ee8cc1Swenshuai.xi
1043*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_EDEN--------------\n"));
1044*53ee8cc1Swenshuai.xi
1045*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1046*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1047*53ee8cc1Swenshuai.xi
1048*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e,0x10);
1049*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301,0x04);
1050*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300,0x0B);
1051*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309,0x00);
1052*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308,0x00);
1053*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315,0x00);
1054*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314,0x04);
1055*53ee8cc1Swenshuai.xi
1056*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03,0x00);
1057*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02,0x00);
1058*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05,0x00);
1059*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04,0x00);
1060*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07,0x00);
1061*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06,0x00);
1062*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b,0x00);
1063*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a,0x08);
1064*53ee8cc1Swenshuai.xi
1065*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d,0x00);
1066*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c,0x00);
1067*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f,0x00);
1068*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e,0x00);
1069*53ee8cc1Swenshuai.xi
1070*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11,0x00);
1071*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10,0x00);
1072*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13,0x00);
1073*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12,0x08);
1074*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19,0x00);
1075*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18,0x00);
1076*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23,0x40);
1077*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22,0x00);
1078*53ee8cc1Swenshuai.xi
1079*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1080*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, (u8Val|0x03));
1081*53ee8cc1Swenshuai.xi }
1082*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_EMERALD)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1083*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1084*53ee8cc1Swenshuai.xi {
1085*53ee8cc1Swenshuai.xi MS_U8 u8Val = 0x00;
1086*53ee8cc1Swenshuai.xi
1087*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_EMERALD--------------\n"));
1088*53ee8cc1Swenshuai.xi
1089*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1090*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1091*53ee8cc1Swenshuai.xi
1092*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f,0x00);//Different with EDEN!
1093*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e,0x10);
1094*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301,0x05);//Different with EDEN!
1095*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300,0x11);//Different with EDEN!
1096*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309,0x00);
1097*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308,0x00);
1098*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315,0x00);
1099*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314,0x00);//Different with EDEN!
1100*53ee8cc1Swenshuai.xi
1101*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03,0x00);
1102*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02,0x00);
1103*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05,0x00);
1104*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04,0x00);
1105*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07,0x00);
1106*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06,0x00);
1107*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b,0x00);
1108*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a,0x08);
1109*53ee8cc1Swenshuai.xi
1110*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d,0x00);
1111*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c,0x00);
1112*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f,0x00);
1113*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e,0x00);
1114*53ee8cc1Swenshuai.xi
1115*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11,0x00);
1116*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10,0x00);
1117*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13,0x00);
1118*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12,0x08);
1119*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19,0x00);
1120*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18,0x00);
1121*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23,0x00);//Different with EDEN!
1122*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22,0x00);
1123*53ee8cc1Swenshuai.xi
1124*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f25,0x00);//Different with EDEN!
1125*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f24,0x00);//Different with EDEN!
1126*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f1E,0x00);//Different with EDEN!
1127*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f09,0x00);//Different with EDEN!
1128*53ee8cc1Swenshuai.xi
1129*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x000e13);
1130*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x000e13, u8Val&0xFB);
1131*53ee8cc1Swenshuai.xi
1132*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1133*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val|0x03);
1134*53ee8cc1Swenshuai.xi }
1135*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_EINSTEIN)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1136*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1137*53ee8cc1Swenshuai.xi {
1138*53ee8cc1Swenshuai.xi MS_U8 u8Val = 0;
1139*53ee8cc1Swenshuai.xi
1140*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_EINSTEIN--------------\n"));
1141*53ee8cc1Swenshuai.xi
1142*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1143*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1144*53ee8cc1Swenshuai.xi
1145*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
1146*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10); //Denny: change 0x10!! 108M
1147*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05); //addy update 0809 MAdp_Demod_WriteReg(0x103301, 0x06);
1148*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11); //addy update 0809 MAdp_Demod_WriteReg(0x103300, 0x0B);
1149*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1150*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1151*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1152*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1153*53ee8cc1Swenshuai.xi
1154*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f28, 0x00); //dan add for nugget
1155*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03, 0x00);
1156*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02, 0x00);
1157*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05, 0x00);
1158*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04, 0x00);
1159*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07, 0x00);
1160*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06, 0x00);
1161*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1162*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x08); // note enable clk_atsc_adcd_sync=25.41
1163*53ee8cc1Swenshuai.xi
1164*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
1165*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
1166*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
1167*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
1168*53ee8cc1Swenshuai.xi
1169*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
1170*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
1171*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1172*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x08); //0406 update 0->8
1173*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
1174*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
1175*53ee8cc1Swenshuai.xi
1176*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f43, 0x00); //dan add for nugget
1177*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f42, 0x00); //dan add for nugget
1178*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f45, 0x00); //dan add for nugget
1179*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f44, 0x00); //dan add for nugget
1180*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f46, 0x01); //dan add for nugget
1181*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f49, 0x00); //dan add for nugget
1182*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f48, 0x00); //dan add for nugget
1183*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00); //dan add for nugget
1184*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00); //dan add for nugget
1185*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f4c, 0x00); //dan add for nugget
1186*53ee8cc1Swenshuai.xi
1187*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23, 0x00);
1188*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);//0x08); VT found some err.
1189*53ee8cc1Swenshuai.xi
1190*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1191*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val|0x03);
1192*53ee8cc1Swenshuai.xi }
1193*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_EINSTEIN3)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1194*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1195*53ee8cc1Swenshuai.xi {
1196*53ee8cc1Swenshuai.xi MS_U8 u8Val = 0;
1197*53ee8cc1Swenshuai.xi
1198*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_EINSTEIN3--------------\n"));
1199*53ee8cc1Swenshuai.xi
1200*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1201*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1202*53ee8cc1Swenshuai.xi
1203*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
1204*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);// Denny: change 0x10!! 108M
1205*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05);//addy update 0809 MAdp_Demod_WriteReg(0x103301, 0x06);
1206*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);//addy update 0809 MAdp_Demod_WriteReg(0x103300, 0x0B);
1207*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1208*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1209*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1210*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1211*53ee8cc1Swenshuai.xi
1212*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f28, 0x00); //dan add for nugget
1213*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03, 0x00);
1214*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02, 0x00);
1215*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05, 0x00);
1216*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04, 0x00);
1217*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07, 0x00);
1218*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06, 0x00);
1219*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1220*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x08); // note enable clk_atsc_adcd_sync=25.41
1221*53ee8cc1Swenshuai.xi
1222*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
1223*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
1224*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
1225*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
1226*53ee8cc1Swenshuai.xi
1227*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
1228*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
1229*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1230*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x08);//0406 update 0->8
1231*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
1232*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
1233*53ee8cc1Swenshuai.xi
1234*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f43, 0x00); //dan add for nugget
1235*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f42, 0x00); //dan add for nugget
1236*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f45, 0x00); //dan add for nugget
1237*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f44, 0x00); //dan add for nugget
1238*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f46, 0x01); //dan add for nugget
1239*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f49, 0x00); //dan add for nugget
1240*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f48, 0x00); //dan add for nugget
1241*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f4b, 0x00); //dan add for nugget
1242*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f4a, 0x00); //dan add for nugget
1243*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f4c, 0x00); //dan add for nugget
1244*53ee8cc1Swenshuai.xi
1245*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23, 0x00);
1246*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);//0x08); VT found some err.
1247*53ee8cc1Swenshuai.xi
1248*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1249*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val|0x03);
1250*53ee8cc1Swenshuai.xi }
1251*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MONACO)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1252*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1253*53ee8cc1Swenshuai.xi {
1254*53ee8cc1Swenshuai.xi MS_U8 u8Val = 0;
1255*53ee8cc1Swenshuai.xi
1256*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_MONACO--------------\n"));
1257*53ee8cc1Swenshuai.xi
1258*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1259*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1260*53ee8cc1Swenshuai.xi
1261*53ee8cc1Swenshuai.xi // DMDMCU 108M
1262*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1263*53ee8cc1Swenshuai.xi // Set parallel TS clock
1264*53ee8cc1Swenshuai.xi // [11] : reg_ckg_demod_test_in_en = 0
1265*53ee8cc1Swenshuai.xi // 0: select internal ADC CLK
1266*53ee8cc1Swenshuai.xi // 1: select external test-in clock
1267*53ee8cc1Swenshuai.xi // [10] : reg_ckg_dvbtm_ts_out_mode = 1
1268*53ee8cc1Swenshuai.xi // 0: select gated clock
1269*53ee8cc1Swenshuai.xi // 1: select free-run clock
1270*53ee8cc1Swenshuai.xi // [9] : reg_ckg_atsc_dvbtc_ts_inv = 0
1271*53ee8cc1Swenshuai.xi // 0: normal phase to pad
1272*53ee8cc1Swenshuai.xi // 1: invert phase to pad
1273*53ee8cc1Swenshuai.xi // [8] : reg_ckg_atsc_dvb_div_sel = 1
1274*53ee8cc1Swenshuai.xi // 0: select clk_dmplldiv5
1275*53ee8cc1Swenshuai.xi // 1: select clk_dmplldiv3
1276*53ee8cc1Swenshuai.xi // [4:0]: reg_ckg_dvbtm_ts_divnum = 17
1277*53ee8cc1Swenshuai.xi // => TS clock = (864/3)/(2*(17+1)) = 8MHz
1278*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN1>>1)+7'h00, 2'b11, 16'h0511);
1279*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN1>>1)+7'h00, 2'b11, 16'h0511);
1280*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05);
1281*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
1282*53ee8cc1Swenshuai.xi // Enable ATSC, DVBTC TS clock
1283*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1284*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1285*53ee8cc1Swenshuai.xi // Enable ADC clock in clkgen_demod
1286*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1287*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1288*53ee8cc1Swenshuai.xi // Enable VIF DAC clock in clkgen_demod
1289*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f29, 0x00);
1290*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f28, 0x00);
1291*53ee8cc1Swenshuai.xi // Enable ATSC clock
1292*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03, 0x00);
1293*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02, 0x00);
1294*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05, 0x00);
1295*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04, 0x00);
1296*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07, 0x00);
1297*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06, 0x00);
1298*53ee8cc1Swenshuai.xi // Enable clk_atsc_adcd_sync = 25.41
1299*53ee8cc1Swenshuai.xi // [3:0]: reg_ckg_atsc_adcd_sync
1300*53ee8cc1Swenshuai.xi // [0] : disable clock
1301*53ee8cc1Swenshuai.xi // [1] : invert clock
1302*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
1303*53ee8cc1Swenshuai.xi // 00: clk_dmdadc_sync
1304*53ee8cc1Swenshuai.xi // 01: clk_atsc50_p
1305*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^
1306*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7(49.7 MHz)
1307*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17(50.82 MHz)
1308*53ee8cc1Swenshuai.xi // 10: clk_atsc25_p
1309*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^
1310*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7_div2(24.85 MHz)
1311*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17_div2(25.41 MHz)
1312*53ee8cc1Swenshuai.xi // 11: 1'b0
1313*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h05, 2'b11, 16'h0008);
1314*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h05, 2'b11, 16'h0008);
1315*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1316*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x08);
1317*53ee8cc1Swenshuai.xi // Enable DVBT inner clock
1318*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
1319*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
1320*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
1321*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
1322*53ee8cc1Swenshuai.xi // Enable DVBT outer clock
1323*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
1324*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
1325*53ee8cc1Swenshuai.xi // Enable DVBC outer clock
1326*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1327*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x08);
1328*53ee8cc1Swenshuai.xi // Enable SRAM clock
1329*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
1330*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
1331*53ee8cc1Swenshuai.xi // Enable ISDBT SRAM share clock and symbol rate clock
1332*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f49, 0x44);
1333*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
1334*53ee8cc1Swenshuai.xi // select clock
1335*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23, 0x00);
1336*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);
1337*53ee8cc1Swenshuai.xi // [3:0] : reg_ckg_dtmb_eq2x_inner2x_12x
1338*53ee8cc1Swenshuai.xi // [0] : disable clock
1339*53ee8cc1Swenshuai.xi // [1] : invert clock
1340*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
1341*53ee8cc1Swenshuai.xi // 00: dtmb_clk288_buf(256 MHz)
1342*53ee8cc1Swenshuai.xi // 01: dtmb_eq_sram_clk36_buf(32 MHz)
1343*53ee8cc1Swenshuai.xi // 10: dtmb_eq_sram_clk216_buf(192 MHz)
1344*53ee8cc1Swenshuai.xi // 11: 1'b0
1345*53ee8cc1Swenshuai.xi // [7:4] : reg_ckg_dtmb_inner1x_dvbc_eq1x => CCI LMS 1x
1346*53ee8cc1Swenshuai.xi // ^^^^^^^^^^
1347*53ee8cc1Swenshuai.xi // [0] : disable clock
1348*53ee8cc1Swenshuai.xi // [1] : invert clock
1349*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
1350*53ee8cc1Swenshuai.xi // 00: dtmb_clk18_buf(16 MHz) => DTMB
1351*53ee8cc1Swenshuai.xi // 01: clk_dmplldiv3_div16(18 MHz) => DVBC,ISDBT(>= (24/2=12))
1352*53ee8cc1Swenshuai.xi // 10: clk_dmplldiv10_div8(10.8 MHz)=> DVBT
1353*53ee8cc1Swenshuai.xi // 11: clk_cci_lms_1x_atsc_p_buf => ATSC
1354*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^^^^^^
1355*53ee8cc1Swenshuai.xi // if(reg_atsc_eq_sel_mplldiv2) => clk_dmplldiv2_div2_inv_div8(21.75 MHz)
1356*53ee8cc1Swenshuai.xi // else => clk_dmplldiv5_inv_div8(21.6 MHz)
1357*53ee8cc1Swenshuai.xi // [11:8] : reg_ckg_dtmb_inner4x_dvbc_eq4x => CCI LMS 4x
1358*53ee8cc1Swenshuai.xi // ^^^^^^^^^^
1359*53ee8cc1Swenshuai.xi // [0] : disable clock
1360*53ee8cc1Swenshuai.xi // [1] : invert clock
1361*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
1362*53ee8cc1Swenshuai.xi // 00: dtmb_clk72_buf(64 MHz) => DTMB
1363*53ee8cc1Swenshuai.xi // 01: clk_dmplldiv3_div4(72 MHz) => DVBC,ISDBT(>= 48)
1364*53ee8cc1Swenshuai.xi // 10: clk_dmplldiv10_div2(43.2 MHz)=> DVBT
1365*53ee8cc1Swenshuai.xi // 11: clk_cci_lms_4x_atsc_p_buf => ATSC
1366*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^^^^^^
1367*53ee8cc1Swenshuai.xi // if(reg_atsc_eq_sel_mplldiv2) => clk_dmplldiv2_div2_inv_div2(87 MHz)
1368*53ee8cc1Swenshuai.xi // else => clk_dmplldiv5_inv_div2(86.4 MHz)
1369*53ee8cc1Swenshuai.xi // [15:12]: reg_ckg_dtmb_sram_dump
1370*53ee8cc1Swenshuai.xi // [0] : disable clock
1371*53ee8cc1Swenshuai.xi // [1] : invert clock
1372*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
1373*53ee8cc1Swenshuai.xi // 00: dtmb_clk18_buf(16 MHz)
1374*53ee8cc1Swenshuai.xi // 01: dtmb_sram_dump_clk144_buf(128 MHz)
1375*53ee8cc1Swenshuai.xi // 10: dtmb_sram_dump_clk216_buf(192 MHz)
1376*53ee8cc1Swenshuai.xi // 11: dtmb_sram_dump_dmplldiv5_buf(153.6 MHz)
1377*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h38, 2'b11, 16'h1cc1);
1378*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h38, 2'b11, 16'h1cc1);
1379*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f71, 0x1C);
1380*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f70, 0xC1);
1381*53ee8cc1Swenshuai.xi // [4:0] : reg_ckg_dtmb_inner4x_sr1x => symbol rate FFT 1x
1382*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^
1383*53ee8cc1Swenshuai.xi // [0] : disable clock
1384*53ee8cc1Swenshuai.xi // [1] : invert clock
1385*53ee8cc1Swenshuai.xi // [4:2]: Select clock source
1386*53ee8cc1Swenshuai.xi // 000: adc_clk_buf
1387*53ee8cc1Swenshuai.xi // 001: clk_atsc25_p
1388*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^
1389*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7_div2(24.85 MHz)
1390*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17_div2(25.41 MHz)
1391*53ee8cc1Swenshuai.xi // 010: clk_atsc_eq25_p
1392*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^
1393*53ee8cc1Swenshuai.xi // case({reg_eq25_sel_mplldiv3,reg_atsc_eq_sel_mplldiv2})
1394*53ee8cc1Swenshuai.xi // 2'b00: clk_dmplldiv5_inv_div8 (21.6 MHz)
1395*53ee8cc1Swenshuai.xi // 2'b01: clk_dmplldiv2_div2_inv_div8 (21.75 MHz)
1396*53ee8cc1Swenshuai.xi // 2'b10: clk_dmplldiv3_div16 (18 MHz)
1397*53ee8cc1Swenshuai.xi // 2'b11: 1'b0
1398*53ee8cc1Swenshuai.xi // endcase
1399*53ee8cc1Swenshuai.xi // 011: dtmb_clk72_buf(72 MHz)
1400*53ee8cc1Swenshuai.xi // 100: dtmb_clk18_buf(18 MHz)
1401*53ee8cc1Swenshuai.xi // 101: 1'b0
1402*53ee8cc1Swenshuai.xi // 110: 1'b0
1403*53ee8cc1Swenshuai.xi // 111: 1'b0
1404*53ee8cc1Swenshuai.xi // [12:8] : reg_ckg_dtmb_inner2x_sr0p5x => symbol rate FFT 0.5x
1405*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^
1406*53ee8cc1Swenshuai.xi // [0] : disable clock
1407*53ee8cc1Swenshuai.xi // [1] : invert clock
1408*53ee8cc1Swenshuai.xi // [4:2]: Select clock source
1409*53ee8cc1Swenshuai.xi // 000: clk_adc_div2_buf
1410*53ee8cc1Swenshuai.xi // 001: clk_frontend_d2_p0
1411*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^
1412*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7_div4(12.43 MHz)
1413*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17_div4(12.705 MHz)
1414*53ee8cc1Swenshuai.xi // 010: clk_atsc_eq25_div2_p
1415*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^
1416*53ee8cc1Swenshuai.xi // case({reg_eq25_sel_mplldiv3,reg_atsc_eq_sel_mplldiv2})
1417*53ee8cc1Swenshuai.xi // 2'b00: clk_dmplldiv5_inv_div8_div2 (10.8 MHz)
1418*53ee8cc1Swenshuai.xi // 2'b01: clk_dmplldiv2_div2_inv_div8_div2 (10.875 MHz)
1419*53ee8cc1Swenshuai.xi // 2'b10: clk_dmplldiv3_div32 (9 MHz)
1420*53ee8cc1Swenshuai.xi // 2'b11: 1'b0
1421*53ee8cc1Swenshuai.xi // endcase
1422*53ee8cc1Swenshuai.xi // 011: dtmb_clk36_buf(36 MHz)
1423*53ee8cc1Swenshuai.xi // 100: dtmb_clk9_buf(9 MHz)
1424*53ee8cc1Swenshuai.xi // 101: 1'b0
1425*53ee8cc1Swenshuai.xi // 110: 1'b0
1426*53ee8cc1Swenshuai.xi // 111: 1'b0
1427*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h3b, 2'b11, 16'h0404);
1428*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h3b, 2'b11, 16'h0404);
1429*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f77, 0x04);
1430*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f76, 0x04);
1431*53ee8cc1Swenshuai.xi
1432*53ee8cc1Swenshuai.xi //Enable SRAM power saving
1433*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112091, 0x44);
1434*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112090, 0x00);
1435*53ee8cc1Swenshuai.xi
1436*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1437*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val|0x03);
1438*53ee8cc1Swenshuai.xi }
1439*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_EDISON)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1440*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1441*53ee8cc1Swenshuai.xi {
1442*53ee8cc1Swenshuai.xi MS_U8 u8Val = 0x00;
1443*53ee8cc1Swenshuai.xi
1444*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_EDISON--------------\n"));
1445*53ee8cc1Swenshuai.xi
1446*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1447*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1448*53ee8cc1Swenshuai.xi
1449*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f,0x00);//Different with EDEN!
1450*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e,0x10);
1451*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301,0x06);//Different with EDEN!
1452*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300,0x0B);//Different with EDEN!
1453*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309,0x00);
1454*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308,0x00);
1455*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315,0x00);
1456*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314,0x00);//Different with EDEN!
1457*53ee8cc1Swenshuai.xi
1458*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03,0x00);
1459*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02,0x00);
1460*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05,0x00);
1461*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04,0x00);
1462*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07,0x00);
1463*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06,0x00);
1464*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b,0x00);
1465*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a,0x00);
1466*53ee8cc1Swenshuai.xi
1467*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d,0x00);
1468*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c,0x00);
1469*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f,0x00);
1470*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e,0x00);
1471*53ee8cc1Swenshuai.xi
1472*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11,0x00);
1473*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10,0x00);
1474*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13,0x00);
1475*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12,0x08);
1476*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19,0x00);
1477*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18,0x00);
1478*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23,0x00);//Different with EDEN!
1479*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22,0x00);
1480*53ee8cc1Swenshuai.xi
1481*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f25,0x00);
1482*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f24,0x00);
1483*53ee8cc1Swenshuai.xi
1484*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111F1E,0x00);
1485*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111F09,0x00);
1486*53ee8cc1Swenshuai.xi
1487*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x000e13);
1488*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x000e13, u8Val&0xFB);
1489*53ee8cc1Swenshuai.xi
1490*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1491*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val|0x03);
1492*53ee8cc1Swenshuai.xi }
1493*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_EIFFEL)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1494*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1495*53ee8cc1Swenshuai.xi {
1496*53ee8cc1Swenshuai.xi MS_U8 u8Val = 0x00;
1497*53ee8cc1Swenshuai.xi
1498*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_EIFFEL--------------\n"));
1499*53ee8cc1Swenshuai.xi
1500*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1501*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1502*53ee8cc1Swenshuai.xi
1503*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39 ,0x00);
1504*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f ,0x00);
1505*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e ,0x10);
1506*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301 ,0x05);
1507*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300 ,0x11);
1508*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309 ,0x00);
1509*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308 ,0x00);
1510*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315 ,0x00);
1511*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314 ,0x00);
1512*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f28 ,0x00);
1513*53ee8cc1Swenshuai.xi // _HAL_DMD_RIU_WriteByte(0x112028 ,0x03);
1514*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03 ,0x00);
1515*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02 ,0x00);
1516*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05 ,0x00);
1517*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04 ,0x00);
1518*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07 ,0x00);
1519*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06 ,0x00);
1520*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b ,0x00);
1521*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a ,0x08);
1522*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d ,0x00);
1523*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c ,0x00);
1524*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f ,0x00);
1525*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e ,0x00);
1526*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11 ,0x00);
1527*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10 ,0x00);
1528*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13 ,0x00);
1529*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12 ,0x08);
1530*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19 ,0x00);
1531*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18 ,0x00);
1532*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23 ,0x00);
1533*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22 ,0x00);
1534*53ee8cc1Swenshuai.xi
1535*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x000e61);
1536*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x000e61, u8Val&0xFE);
1537*53ee8cc1Swenshuai.xi
1538*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1539*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val|0x03);
1540*53ee8cc1Swenshuai.xi }
1541*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MIAMI)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1542*53ee8cc1Swenshuai.xi stativ void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1543*53ee8cc1Swenshuai.xi {
1544*53ee8cc1Swenshuai.xi MS_U8 u8Val = 0;
1545*53ee8cc1Swenshuai.xi
1546*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_MIAMI--------------\n"));
1547*53ee8cc1Swenshuai.xi
1548*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1549*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1550*53ee8cc1Swenshuai.xi
1551*53ee8cc1Swenshuai.xi // DMDMCU 108M
1552*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
1553*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1554*53ee8cc1Swenshuai.xi // Set parallel TS clock
1555*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05);
1556*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
1557*53ee8cc1Swenshuai.xi // Enable ATSC, DVBTC TS clock
1558*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1559*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1560*53ee8cc1Swenshuai.xi // Enable ADC clock in clkgen_demod
1561*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1562*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1563*53ee8cc1Swenshuai.xi // Select MPLLDIV17
1564*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f28, 0x00);
1565*53ee8cc1Swenshuai.xi // Enable ATSC clock
1566*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03, 0x00);
1567*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02, 0x00);
1568*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05, 0x00);
1569*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04, 0x00);
1570*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07, 0x00);
1571*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06, 0x00);
1572*53ee8cc1Swenshuai.xi // enable clk_atsc_adcd_sync
1573*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1574*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x08);
1575*53ee8cc1Swenshuai.xi // Enable DVBT inner clock
1576*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
1577*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
1578*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
1579*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
1580*53ee8cc1Swenshuai.xi // Enable DVBT outer clock
1581*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
1582*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
1583*53ee8cc1Swenshuai.xi // Enable DVBC outer clock
1584*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1585*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x08);
1586*53ee8cc1Swenshuai.xi // Enable SRAM clock
1587*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
1588*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
1589*53ee8cc1Swenshuai.xi // enable clk_dvbtc_sram4_isdbt_inner4x & clk_adc1x_eq1x clock
1590*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
1591*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
1592*53ee8cc1Swenshuai.xi // select clock
1593*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23, 0x00);
1594*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);
1595*53ee8cc1Swenshuai.xi // enable CCI LMS clock
1596*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f51, 0x00);
1597*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f50, 0xCC);
1598*53ee8cc1Swenshuai.xi
1599*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1600*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val|0x03);
1601*53ee8cc1Swenshuai.xi }
1602*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUJI)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1603*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1604*53ee8cc1Swenshuai.xi {
1605*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_MUJI--------------\n"));
1606*53ee8cc1Swenshuai.xi
1607*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
1608*53ee8cc1Swenshuai.xi
1609*53ee8cc1Swenshuai.xi // DMDMCU 108M
1610*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1611*53ee8cc1Swenshuai.xi // Set parallel TS clock
1612*53ee8cc1Swenshuai.xi // [11] : reg_ckg_demod_test_in_en = 0
1613*53ee8cc1Swenshuai.xi // 0: select internal ADC CLK
1614*53ee8cc1Swenshuai.xi // 1: select external test-in clock
1615*53ee8cc1Swenshuai.xi // [10] : reg_ckg_dvbtm_ts_out_mode = 1
1616*53ee8cc1Swenshuai.xi // 0: select gated clock
1617*53ee8cc1Swenshuai.xi // 1: select free-run clock
1618*53ee8cc1Swenshuai.xi // [9] : reg_ckg_atsc_dvbtc_ts_inv = 0
1619*53ee8cc1Swenshuai.xi // 0: normal phase to pad
1620*53ee8cc1Swenshuai.xi // 1: invert phase to pad
1621*53ee8cc1Swenshuai.xi // [8] : reg_ckg_atsc_dvb_div_sel = 1
1622*53ee8cc1Swenshuai.xi // 0: select clk_dmplldiv5
1623*53ee8cc1Swenshuai.xi // 1: select clk_dmplldiv3
1624*53ee8cc1Swenshuai.xi // [4:0]: reg_ckg_dvbtm_ts_divnum = 17
1625*53ee8cc1Swenshuai.xi // => TS clock = (864/3)/(2*(17+1)) = 8MHz
1626*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN1>>1)+7'h00, 2'b11, 16'h0511);
1627*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN1>>1)+7'h00, 2'b11, 16'h0511);
1628*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05);
1629*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
1630*53ee8cc1Swenshuai.xi // Enable ATSC, DVBTC TS clock
1631*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1632*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1633*53ee8cc1Swenshuai.xi // Enable ADC clock in clkgen_demod
1634*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1635*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1636*53ee8cc1Swenshuai.xi // Reset TS divider
1637*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
1638*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
1639*53ee8cc1Swenshuai.xi // Enable VIF DAC clock in clkgen_demod
1640*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f29, 0x00);
1641*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f28, 0x00);
1642*53ee8cc1Swenshuai.xi // Enable ATSC clock
1643*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03, 0x00);
1644*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02, 0x00);
1645*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05, 0x00);
1646*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04, 0x00);
1647*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07, 0x00);
1648*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06, 0x00);
1649*53ee8cc1Swenshuai.xi // Enable clk_atsc_adcd_sync = 25.41
1650*53ee8cc1Swenshuai.xi // [3:0]: reg_ckg_atsc_adcd_sync
1651*53ee8cc1Swenshuai.xi // [0] : disable clock
1652*53ee8cc1Swenshuai.xi // [1] : invert clock
1653*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
1654*53ee8cc1Swenshuai.xi // 00: clk_dmdadc_sync
1655*53ee8cc1Swenshuai.xi // 01: clk_atsc50_p
1656*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^
1657*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7(49.7 MHz)
1658*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17(50.82 MHz)
1659*53ee8cc1Swenshuai.xi // 10: clk_atsc25_p
1660*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^
1661*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7_div2(24.85 MHz)
1662*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17_div2(25.41 MHz)
1663*53ee8cc1Swenshuai.xi // 11: 1'b0
1664*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h05, 2'b11, 16'h0008);
1665*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h05, 2'b11, 16'h0008);
1666*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1667*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x08);
1668*53ee8cc1Swenshuai.xi // Enable DVBT inner clock
1669*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
1670*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
1671*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
1672*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
1673*53ee8cc1Swenshuai.xi // Enable DVBT outer clock
1674*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
1675*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
1676*53ee8cc1Swenshuai.xi // Enable DVBC outer clock
1677*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1678*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x08);
1679*53ee8cc1Swenshuai.xi // Enable SRAM clock
1680*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
1681*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
1682*53ee8cc1Swenshuai.xi // Enable ISDBT SRAM share clock and symbol rate clock
1683*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f49, 0x44);
1684*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
1685*53ee8cc1Swenshuai.xi // select clock
1686*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23, 0x00);
1687*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);
1688*53ee8cc1Swenshuai.xi // [3:0] : reg_ckg_dtmb_eq2x_inner2x_12x
1689*53ee8cc1Swenshuai.xi // [0] : disable clock
1690*53ee8cc1Swenshuai.xi // [1] : invert clock
1691*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
1692*53ee8cc1Swenshuai.xi // 00: dtmb_clk288_buf(256 MHz)
1693*53ee8cc1Swenshuai.xi // 01: dtmb_eq_sram_clk36_buf(32 MHz)
1694*53ee8cc1Swenshuai.xi // 10: dtmb_eq_sram_clk216_buf(192 MHz)
1695*53ee8cc1Swenshuai.xi // 11: 1'b0
1696*53ee8cc1Swenshuai.xi // [7:4] : reg_ckg_dtmb_inner1x_dvbc_eq1x => CCI LMS 1x
1697*53ee8cc1Swenshuai.xi // ^^^^^^^^^^
1698*53ee8cc1Swenshuai.xi // [0] : disable clock
1699*53ee8cc1Swenshuai.xi // [1] : invert clock
1700*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
1701*53ee8cc1Swenshuai.xi // 00: dtmb_clk18_buf(16 MHz) => DTMB
1702*53ee8cc1Swenshuai.xi // 01: clk_dmplldiv3_div16(18 MHz) => DVBC,ISDBT(>= (24/2=12))
1703*53ee8cc1Swenshuai.xi // 10: clk_dmplldiv10_div8(10.8 MHz)=> DVBT
1704*53ee8cc1Swenshuai.xi // 11: clk_cci_lms_1x_atsc_p_buf => ATSC
1705*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^^^^^^
1706*53ee8cc1Swenshuai.xi // if(reg_atsc_eq_sel_mplldiv2) => clk_dmplldiv2_div2_inv_div8(21.75 MHz)
1707*53ee8cc1Swenshuai.xi // else => clk_dmplldiv5_inv_div8(21.6 MHz)
1708*53ee8cc1Swenshuai.xi // [11:8] : reg_ckg_dtmb_inner4x_dvbc_eq4x => CCI LMS 4x
1709*53ee8cc1Swenshuai.xi // ^^^^^^^^^^
1710*53ee8cc1Swenshuai.xi // [0] : disable clock
1711*53ee8cc1Swenshuai.xi // [1] : invert clock
1712*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
1713*53ee8cc1Swenshuai.xi // 00: dtmb_clk72_buf(64 MHz) => DTMB
1714*53ee8cc1Swenshuai.xi // 01: clk_dmplldiv3_div4(72 MHz) => DVBC,ISDBT(>= 48)
1715*53ee8cc1Swenshuai.xi // 10: clk_dmplldiv10_div2(43.2 MHz)=> DVBT
1716*53ee8cc1Swenshuai.xi // 11: clk_cci_lms_4x_atsc_p_buf => ATSC
1717*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^^^^^^
1718*53ee8cc1Swenshuai.xi // if(reg_atsc_eq_sel_mplldiv2) => clk_dmplldiv2_div2_inv_div2(87 MHz)
1719*53ee8cc1Swenshuai.xi // else => clk_dmplldiv5_inv_div2(86.4 MHz)
1720*53ee8cc1Swenshuai.xi // [15:12]: reg_ckg_dtmb_sram_dump
1721*53ee8cc1Swenshuai.xi // [0] : disable clock
1722*53ee8cc1Swenshuai.xi // [1] : invert clock
1723*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
1724*53ee8cc1Swenshuai.xi // 00: dtmb_clk18_buf(16 MHz)
1725*53ee8cc1Swenshuai.xi // 01: dtmb_sram_dump_clk144_buf(128 MHz)
1726*53ee8cc1Swenshuai.xi // 10: dtmb_sram_dump_clk216_buf(192 MHz)
1727*53ee8cc1Swenshuai.xi // 11: dtmb_sram_dump_dmplldiv5_buf(153.6 MHz)
1728*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h38, 2'b11, 16'h1cc1);
1729*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h38, 2'b11, 16'h1cc1);
1730*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f71, 0x1C);
1731*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f70, 0xC1);
1732*53ee8cc1Swenshuai.xi // [4:0] : reg_ckg_dtmb_inner4x_sr1x => symbol rate FFT 1x
1733*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^
1734*53ee8cc1Swenshuai.xi // [0] : disable clock
1735*53ee8cc1Swenshuai.xi // [1] : invert clock
1736*53ee8cc1Swenshuai.xi // [4:2]: Select clock source
1737*53ee8cc1Swenshuai.xi // 000: adc_clk_buf
1738*53ee8cc1Swenshuai.xi // 001: clk_atsc25_p
1739*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^
1740*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7_div2(24.85 MHz)
1741*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17_div2(25.41 MHz)
1742*53ee8cc1Swenshuai.xi // 010: clk_atsc_eq25_p
1743*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^
1744*53ee8cc1Swenshuai.xi // case({reg_eq25_sel_mplldiv3,reg_atsc_eq_sel_mplldiv2})
1745*53ee8cc1Swenshuai.xi // 2'b00: clk_dmplldiv5_inv_div8 (21.6 MHz)
1746*53ee8cc1Swenshuai.xi // 2'b01: clk_dmplldiv2_div2_inv_div8 (21.75 MHz)
1747*53ee8cc1Swenshuai.xi // 2'b10: clk_dmplldiv3_div16 (18 MHz)
1748*53ee8cc1Swenshuai.xi // 2'b11: 1'b0
1749*53ee8cc1Swenshuai.xi // endcase
1750*53ee8cc1Swenshuai.xi // 011: dtmb_clk72_buf(72 MHz)
1751*53ee8cc1Swenshuai.xi // 100: dtmb_clk18_buf(18 MHz)
1752*53ee8cc1Swenshuai.xi // 101: 1'b0
1753*53ee8cc1Swenshuai.xi // 110: 1'b0
1754*53ee8cc1Swenshuai.xi // 111: 1'b0
1755*53ee8cc1Swenshuai.xi // [12:8] : reg_ckg_dtmb_inner2x_sr0p5x => symbol rate FFT 0.5x
1756*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^
1757*53ee8cc1Swenshuai.xi // [0] : disable clock
1758*53ee8cc1Swenshuai.xi // [1] : invert clock
1759*53ee8cc1Swenshuai.xi // [4:2]: Select clock source
1760*53ee8cc1Swenshuai.xi // 000: clk_adc_div2_buf
1761*53ee8cc1Swenshuai.xi // 001: clk_frontend_d2_p0
1762*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^
1763*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7_div4(12.43 MHz)
1764*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17_div4(12.705 MHz)
1765*53ee8cc1Swenshuai.xi // 010: clk_atsc_eq25_div2_p
1766*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^
1767*53ee8cc1Swenshuai.xi // case({reg_eq25_sel_mplldiv3,reg_atsc_eq_sel_mplldiv2})
1768*53ee8cc1Swenshuai.xi // 2'b00: clk_dmplldiv5_inv_div8_div2 (10.8 MHz)
1769*53ee8cc1Swenshuai.xi // 2'b01: clk_dmplldiv2_div2_inv_div8_div2 (10.875 MHz)
1770*53ee8cc1Swenshuai.xi // 2'b10: clk_dmplldiv3_div32 (9 MHz)
1771*53ee8cc1Swenshuai.xi // 2'b11: 1'b0
1772*53ee8cc1Swenshuai.xi // endcase
1773*53ee8cc1Swenshuai.xi // 011: dtmb_clk36_buf(36 MHz)
1774*53ee8cc1Swenshuai.xi // 100: dtmb_clk9_buf(9 MHz)
1775*53ee8cc1Swenshuai.xi // 101: 1'b0
1776*53ee8cc1Swenshuai.xi // 110: 1'b0
1777*53ee8cc1Swenshuai.xi // 111: 1'b0
1778*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h3b, 2'b11, 16'h0404);
1779*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h3b, 2'b11, 16'h0404);
1780*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f77, 0x04);
1781*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f76, 0x04);
1782*53ee8cc1Swenshuai.xi
1783*53ee8cc1Swenshuai.xi // Muji
1784*53ee8cc1Swenshuai.xi // [1:0] : reg_ckg_isdbt_outer1x_dvbt_outer1x
1785*53ee8cc1Swenshuai.xi // [0] : disable clock
1786*53ee8cc1Swenshuai.xi // [1] : invert clock
1787*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
1788*53ee8cc1Swenshuai.xi // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
1789*53ee8cc1Swenshuai.xi // sel[0]= (reg_demod_isdbt_on & reg_ckg_isdbt_outer1x[2])
1790*53ee8cc1Swenshuai.xi // sel[1]= (~reg_demod_isdbt_on)
1791*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1792*53ee8cc1Swenshuai.xi // 00: isdbt_clk6_lat(6 MHz)
1793*53ee8cc1Swenshuai.xi // 01: isdbt_clk8_lat(8 MHz)
1794*53ee8cc1Swenshuai.xi // 10: clk_dmplldiv10_div2(43.2 MHz)
1795*53ee8cc1Swenshuai.xi // 11: 1'b0
1796*53ee8cc1Swenshuai.xi // [6:4] : reg_ckg_miu_dvbtc_outer2x
1797*53ee8cc1Swenshuai.xi // [0] : disable clock
1798*53ee8cc1Swenshuai.xi // [1] : invert clock
1799*53ee8cc1Swenshuai.xi // [2] : Select clock source
1800*53ee8cc1Swenshuai.xi // 0: clk_miu_p
1801*53ee8cc1Swenshuai.xi // 1: clk_dmplldiv10(86.4 MHz)
1802*53ee8cc1Swenshuai.xi // [12:8] : reg_ckg_dvbtc_rs
1803*53ee8cc1Swenshuai.xi // [0] : disable clock
1804*53ee8cc1Swenshuai.xi // [1] : invert clock
1805*53ee8cc1Swenshuai.xi // [4:2]: Select clock source
1806*53ee8cc1Swenshuai.xi // 000: clk_dmplldiv10(86.4 MHz)
1807*53ee8cc1Swenshuai.xi // 001: clk_dmplldiv10_div2(43.2 MHz)
1808*53ee8cc1Swenshuai.xi // 010: clk_atsc50_p
1809*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^
1810*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7(49.7 MHz)
1811*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17(50.82 MHz)
1812*53ee8cc1Swenshuai.xi // 011: clk_dvbtc_rs_216_buf(216 MHz)
1813*53ee8cc1Swenshuai.xi // 100: clk_dvbtc_rs_172_buf(172 MHz)
1814*53ee8cc1Swenshuai.xi // 101: clk_dvbtc_rs_144_buf(144 MHz)
1815*53ee8cc1Swenshuai.xi // 110: 1'b0
1816*53ee8cc1Swenshuai.xi // 111: 1'b0
1817*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h27, 2'b10, 16'h0800);
1818*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h27, 2'b10, 16'h0800);
1819*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f4f, 0x08);
1820*53ee8cc1Swenshuai.xi
1821*53ee8cc1Swenshuai.xi //Enable SRAM power saving
1822*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112091, 0x44);
1823*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x112090, 0x00);
1824*53ee8cc1Swenshuai.xi
1825*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
1826*53ee8cc1Swenshuai.xi }
1827*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUNICH)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1828*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1829*53ee8cc1Swenshuai.xi {
1830*53ee8cc1Swenshuai.xi MS_U8 u8Val = 0;
1831*53ee8cc1Swenshuai.xi
1832*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_MUNICH--------------\n"));
1833*53ee8cc1Swenshuai.xi
1834*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1835*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1836*53ee8cc1Swenshuai.xi
1837*53ee8cc1Swenshuai.xi // DMDMCU 108M
1838*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f, 0x00);
1839*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1840*53ee8cc1Swenshuai.xi // Set parallel TS clock
1841*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05);
1842*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
1843*53ee8cc1Swenshuai.xi // Enable ATSC, DVBTC TS clock
1844*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1845*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1846*53ee8cc1Swenshuai.xi // Enable ADC clock in clkgen_demod
1847*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1848*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1849*53ee8cc1Swenshuai.xi // Select MPLLDIV17
1850*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f28, 0x00);
1851*53ee8cc1Swenshuai.xi // Enable ATSC clock
1852*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03, 0x00);
1853*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02, 0x00);
1854*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05, 0x00);
1855*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04, 0x00);
1856*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07, 0x00);
1857*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06, 0x00);
1858*53ee8cc1Swenshuai.xi // enable clk_atsc_adcd_sync
1859*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1860*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x08);
1861*53ee8cc1Swenshuai.xi // Enable DVBT inner clock
1862*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
1863*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
1864*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
1865*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
1866*53ee8cc1Swenshuai.xi // Enable DVBT outer clock
1867*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
1868*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
1869*53ee8cc1Swenshuai.xi // Enable DVBC outer clock
1870*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
1871*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x08);
1872*53ee8cc1Swenshuai.xi // Enable SRAM clock
1873*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
1874*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
1875*53ee8cc1Swenshuai.xi // enable clk_dvbtc_sram4_isdbt_inner4x & clk_adc1x_eq1x clock
1876*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f49, 0x00);
1877*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
1878*53ee8cc1Swenshuai.xi // select clock
1879*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23, 0x00);
1880*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);
1881*53ee8cc1Swenshuai.xi // enable CCI LMS clock
1882*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f51, 0x00);
1883*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f50, 0xCC);
1884*53ee8cc1Swenshuai.xi
1885*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1886*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val|0x03);
1887*53ee8cc1Swenshuai.xi }
1888*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_KIRIN)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1889*53ee8cc1Swenshuai.xi void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1890*53ee8cc1Swenshuai.xi {
1891*53ee8cc1Swenshuai.xi MS_U8 u8Val=0x00;
1892*53ee8cc1Swenshuai.xi
1893*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_KIRIN--------------\n"));
1894*53ee8cc1Swenshuai.xi
1895*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1896*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1897*53ee8cc1Swenshuai.xi
1898*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331f,0x00);
1899*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e,0x10);
1900*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301,0x07);
1901*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300,0x11);
1902*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309,0x00);
1903*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315,0x00);
1904*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314,0x00);
1905*53ee8cc1Swenshuai.xi
1906*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b,0x00);
1907*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a,0x00);
1908*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c,0x00);
1909*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11,0x00);
1910*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13,0x00);
1911*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12,0x00);
1912*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f15,0x00);
1913*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f17,0x00);
1914*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f16,0x00);
1915*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22,0x00);
1916*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f2b,0x00);
1917*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f2a,0x10);
1918*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101ea1,0x00);
1919*53ee8cc1Swenshuai.xi
1920*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e04,0x02);
1921*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e76,0x03);
1922*53ee8cc1Swenshuai.xi
1923*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1924*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39,(u8Val| 0x03));
1925*53ee8cc1Swenshuai.xi }
1926*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAYA)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1927*53ee8cc1Swenshuai.xi void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1928*53ee8cc1Swenshuai.xi {
1929*53ee8cc1Swenshuai.xi MS_U8 u8Val=0x00;
1930*53ee8cc1Swenshuai.xi
1931*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_MAYA--------------\n"));
1932*53ee8cc1Swenshuai.xi
1933*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1934*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1935*53ee8cc1Swenshuai.xi
1936*53ee8cc1Swenshuai.xi // DMDMCU 108M
1937*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1938*53ee8cc1Swenshuai.xi // Set parallel TS clock
1939*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05);
1940*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
1941*53ee8cc1Swenshuai.xi // Enable ATSC, DVBTC TS clock
1942*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
1943*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
1944*53ee8cc1Swenshuai.xi // Enable ADC clock in clkgen_demod
1945*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
1946*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
1947*53ee8cc1Swenshuai.xi // Reset TS divider
1948*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
1949*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
1950*53ee8cc1Swenshuai.xi // ADC select MPLLDIV17 & EQ select MPLLDIV5
1951*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
1952*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
1953*53ee8cc1Swenshuai.xi // Enable ATSC clock
1954*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03, 0x00);
1955*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02, 0x00);
1956*53ee8cc1Swenshuai.xi // configure reg_ckg_atsc50, reg_ckg_atsc25, reg_ckg_atsc_eq25 and reg_ckg_atsc_ce25
1957*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04, 0x00);
1958*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07, 0x00);
1959*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06, 0x00);
1960*53ee8cc1Swenshuai.xi // enable clk_atsc_adcd_sync
1961*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
1962*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x08);
1963*53ee8cc1Swenshuai.xi // Enable DVBC outer clock
1964*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
1965*53ee8cc1Swenshuai.xi // Enable SRAM clock
1966*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
1967*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
1968*53ee8cc1Swenshuai.xi // select clock
1969*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23, 0x00);
1970*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);
1971*53ee8cc1Swenshuai.xi // enable CCI LMS clock
1972*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f71, 0x00);
1973*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f70, 0x00);
1974*53ee8cc1Swenshuai.xi // set symbol rate
1975*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f77, 0x04);
1976*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f76, 0x04);
1977*53ee8cc1Swenshuai.xi // reg_ckg_adc1x_eq1x
1978*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f49, 0x04);
1979*53ee8cc1Swenshuai.xi
1980*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1981*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39,(u8Val| 0x03));
1982*53ee8cc1Swenshuai.xi }
1983*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MANHATTAN)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)1984*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
1985*53ee8cc1Swenshuai.xi {
1986*53ee8cc1Swenshuai.xi MS_U8 u8Val = 0;
1987*53ee8cc1Swenshuai.xi
1988*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_MANHATTAN--------------\n"));
1989*53ee8cc1Swenshuai.xi
1990*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
1991*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
1992*53ee8cc1Swenshuai.xi
1993*53ee8cc1Swenshuai.xi // DMDMCU 108M
1994*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
1995*53ee8cc1Swenshuai.xi // Set parallel TS clock
1996*53ee8cc1Swenshuai.xi // [11] : reg_ckg_demod_test_in_en = 0
1997*53ee8cc1Swenshuai.xi // 0: select internal ADC CLK
1998*53ee8cc1Swenshuai.xi // 1: select external test-in clock
1999*53ee8cc1Swenshuai.xi // [10] : reg_ckg_dvbtm_ts_out_mode = 1
2000*53ee8cc1Swenshuai.xi // 0: select gated clock
2001*53ee8cc1Swenshuai.xi // 1: select free-run clock
2002*53ee8cc1Swenshuai.xi // [9] : reg_ckg_atsc_dvbtc_ts_inv = 0
2003*53ee8cc1Swenshuai.xi // 0: normal phase to pad
2004*53ee8cc1Swenshuai.xi // 1: invert phase to pad
2005*53ee8cc1Swenshuai.xi // [8] : reg_ckg_atsc_dvb_div_sel = 1
2006*53ee8cc1Swenshuai.xi // 0: select clk_dmplldiv5
2007*53ee8cc1Swenshuai.xi // 1: select clk_dmplldiv3
2008*53ee8cc1Swenshuai.xi // [4:0]: reg_ckg_dvbtm_ts_divnum = 17
2009*53ee8cc1Swenshuai.xi // => TS clock = (864/3)/(2*(17+1)) = 8MHz
2010*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN1>>1)+7'h00, 2'b11, 16'h0511);
2011*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN1>>1)+7'h00, 2'b11, 16'h0511);
2012*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05);
2013*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
2014*53ee8cc1Swenshuai.xi // Enable ATSC, DVBTC TS clock
2015*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
2016*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
2017*53ee8cc1Swenshuai.xi // Enable ADC clock in clkgen_demod
2018*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
2019*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
2020*53ee8cc1Swenshuai.xi // Reset TS divider
2021*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
2022*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
2023*53ee8cc1Swenshuai.xi // Enable VIF DAC clock in clkgen_demod
2024*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f29, 0x00);
2025*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f28, 0x00);
2026*53ee8cc1Swenshuai.xi // Enable ATSC clock
2027*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03, 0x00);
2028*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02, 0x00);
2029*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f05, 0x00);
2030*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04, 0x00);
2031*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07, 0x00);
2032*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06, 0x00);
2033*53ee8cc1Swenshuai.xi // Enable clk_atsc_adcd_sync = 25.41
2034*53ee8cc1Swenshuai.xi // [3:0]: reg_ckg_atsc_adcd_sync
2035*53ee8cc1Swenshuai.xi // [0] : disable clock
2036*53ee8cc1Swenshuai.xi // [1] : invert clock
2037*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
2038*53ee8cc1Swenshuai.xi // 00: clk_dmdadc_sync
2039*53ee8cc1Swenshuai.xi // 01: clk_atsc50_p
2040*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^
2041*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7(49.7 MHz)
2042*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17(50.82 MHz)
2043*53ee8cc1Swenshuai.xi // 10: clk_atsc25_p
2044*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^
2045*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7_div2(24.85 MHz)
2046*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17_div2(25.41 MHz)
2047*53ee8cc1Swenshuai.xi // 11: 1'b0
2048*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h05, 2'b11, 16'h0008);
2049*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h05, 2'b11, 16'h0008);
2050*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
2051*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x08);
2052*53ee8cc1Swenshuai.xi // Enable DVBT inner clock
2053*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0d, 0x00);
2054*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0c, 0x00);
2055*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0f, 0x00);
2056*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0e, 0x00);
2057*53ee8cc1Swenshuai.xi // Enable DVBT outer clock
2058*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f11, 0x00);
2059*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f10, 0x00);
2060*53ee8cc1Swenshuai.xi // Enable DVBC outer clock
2061*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f13, 0x00);
2062*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x08);
2063*53ee8cc1Swenshuai.xi // Enable SRAM clock
2064*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
2065*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
2066*53ee8cc1Swenshuai.xi // Enable ISDBT SRAM share clock and symbol rate clock
2067*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f49, 0x44);
2068*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f48, 0x00);
2069*53ee8cc1Swenshuai.xi // select clock
2070*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23, 0x00);
2071*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);
2072*53ee8cc1Swenshuai.xi // [3:0] : reg_ckg_dtmb_eq2x_inner2x_12x
2073*53ee8cc1Swenshuai.xi // [0] : disable clock
2074*53ee8cc1Swenshuai.xi // [1] : invert clock
2075*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
2076*53ee8cc1Swenshuai.xi // 00: dtmb_clk288_buf(256 MHz)
2077*53ee8cc1Swenshuai.xi // 01: dtmb_eq_sram_clk36_buf(32 MHz)
2078*53ee8cc1Swenshuai.xi // 10: dtmb_eq_sram_clk216_buf(192 MHz)
2079*53ee8cc1Swenshuai.xi // 11: 1'b0
2080*53ee8cc1Swenshuai.xi // [7:4] : reg_ckg_dtmb_inner1x_dvbc_eq1x => CCI LMS 1x
2081*53ee8cc1Swenshuai.xi // ^^^^^^^^^^
2082*53ee8cc1Swenshuai.xi // [0] : disable clock
2083*53ee8cc1Swenshuai.xi // [1] : invert clock
2084*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
2085*53ee8cc1Swenshuai.xi // 00: dtmb_clk18_buf(16 MHz) => DTMB
2086*53ee8cc1Swenshuai.xi // 01: clk_dmplldiv3_div16(18 MHz) => DVBC,ISDBT(>= (24/2=12))
2087*53ee8cc1Swenshuai.xi // 10: clk_dmplldiv10_div8(10.8 MHz)=> DVBT
2088*53ee8cc1Swenshuai.xi // 11: clk_cci_lms_1x_atsc_p_buf => ATSC
2089*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^^^^^^
2090*53ee8cc1Swenshuai.xi // if(reg_atsc_eq_sel_mplldiv2) => clk_dmplldiv2_div2_inv_div8(21.75 MHz)
2091*53ee8cc1Swenshuai.xi // else => clk_dmplldiv5_inv_div8(21.6 MHz)
2092*53ee8cc1Swenshuai.xi // [11:8] : reg_ckg_dtmb_inner4x_dvbc_eq4x => CCI LMS 4x
2093*53ee8cc1Swenshuai.xi // ^^^^^^^^^^
2094*53ee8cc1Swenshuai.xi // [0] : disable clock
2095*53ee8cc1Swenshuai.xi // [1] : invert clock
2096*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
2097*53ee8cc1Swenshuai.xi // 00: dtmb_clk72_buf(64 MHz) => DTMB
2098*53ee8cc1Swenshuai.xi // 01: clk_dmplldiv3_div4(72 MHz) => DVBC,ISDBT(>= 48)
2099*53ee8cc1Swenshuai.xi // 10: clk_dmplldiv10_div2(43.2 MHz)=> DVBT
2100*53ee8cc1Swenshuai.xi // 11: clk_cci_lms_4x_atsc_p_buf => ATSC
2101*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^^^^^^
2102*53ee8cc1Swenshuai.xi // if(reg_atsc_eq_sel_mplldiv2) => clk_dmplldiv2_div2_inv_div2(87 MHz)
2103*53ee8cc1Swenshuai.xi // else => clk_dmplldiv5_inv_div2(86.4 MHz)
2104*53ee8cc1Swenshuai.xi // [15:12]: reg_ckg_dtmb_sram_dump
2105*53ee8cc1Swenshuai.xi // [0] : disable clock
2106*53ee8cc1Swenshuai.xi // [1] : invert clock
2107*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
2108*53ee8cc1Swenshuai.xi // 00: dtmb_clk18_buf(16 MHz)
2109*53ee8cc1Swenshuai.xi // 01: dtmb_sram_dump_clk144_buf(128 MHz)
2110*53ee8cc1Swenshuai.xi // 10: dtmb_sram_dump_clk216_buf(192 MHz)
2111*53ee8cc1Swenshuai.xi // 11: dtmb_sram_dump_dmplldiv5_buf(153.6 MHz)
2112*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h38, 2'b11, 16'h1cc1);
2113*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h38, 2'b11, 16'h1cc1);
2114*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f71, 0x1C);
2115*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f70, 0xC1);
2116*53ee8cc1Swenshuai.xi // [4:0] : reg_ckg_dtmb_inner4x_sr1x => symbol rate FFT 1x
2117*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^
2118*53ee8cc1Swenshuai.xi // [0] : disable clock
2119*53ee8cc1Swenshuai.xi // [1] : invert clock
2120*53ee8cc1Swenshuai.xi // [4:2]: Select clock source
2121*53ee8cc1Swenshuai.xi // 000: adc_clk_buf
2122*53ee8cc1Swenshuai.xi // 001: clk_atsc25_p
2123*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^
2124*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7_div2(24.85 MHz)
2125*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17_div2(25.41 MHz)
2126*53ee8cc1Swenshuai.xi // 010: clk_atsc_eq25_p
2127*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^
2128*53ee8cc1Swenshuai.xi // case({reg_eq25_sel_mplldiv3,reg_atsc_eq_sel_mplldiv2})
2129*53ee8cc1Swenshuai.xi // 2'b00: clk_dmplldiv5_inv_div8 (21.6 MHz)
2130*53ee8cc1Swenshuai.xi // 2'b01: clk_dmplldiv2_div2_inv_div8 (21.75 MHz)
2131*53ee8cc1Swenshuai.xi // 2'b10: clk_dmplldiv3_div16 (18 MHz)
2132*53ee8cc1Swenshuai.xi // 2'b11: 1'b0
2133*53ee8cc1Swenshuai.xi // endcase
2134*53ee8cc1Swenshuai.xi // 011: dtmb_clk72_buf(72 MHz)
2135*53ee8cc1Swenshuai.xi // 100: dtmb_clk18_buf(18 MHz)
2136*53ee8cc1Swenshuai.xi // 101: 1'b0
2137*53ee8cc1Swenshuai.xi // 110: 1'b0
2138*53ee8cc1Swenshuai.xi // 111: 1'b0
2139*53ee8cc1Swenshuai.xi // [12:8] : reg_ckg_dtmb_inner2x_sr0p5x => symbol rate FFT 0.5x
2140*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^
2141*53ee8cc1Swenshuai.xi // [0] : disable clock
2142*53ee8cc1Swenshuai.xi // [1] : invert clock
2143*53ee8cc1Swenshuai.xi // [4:2]: Select clock source
2144*53ee8cc1Swenshuai.xi // 000: clk_adc_div2_buf
2145*53ee8cc1Swenshuai.xi // 001: clk_frontend_d2_p0
2146*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^
2147*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7_div4(12.43 MHz)
2148*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17_div4(12.705 MHz)
2149*53ee8cc1Swenshuai.xi // 010: clk_atsc_eq25_div2_p
2150*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^
2151*53ee8cc1Swenshuai.xi // case({reg_eq25_sel_mplldiv3,reg_atsc_eq_sel_mplldiv2})
2152*53ee8cc1Swenshuai.xi // 2'b00: clk_dmplldiv5_inv_div8_div2 (10.8 MHz)
2153*53ee8cc1Swenshuai.xi // 2'b01: clk_dmplldiv2_div2_inv_div8_div2 (10.875 MHz)
2154*53ee8cc1Swenshuai.xi // 2'b10: clk_dmplldiv3_div32 (9 MHz)
2155*53ee8cc1Swenshuai.xi // 2'b11: 1'b0
2156*53ee8cc1Swenshuai.xi // endcase
2157*53ee8cc1Swenshuai.xi // 011: dtmb_clk36_buf(36 MHz)
2158*53ee8cc1Swenshuai.xi // 100: dtmb_clk9_buf(9 MHz)
2159*53ee8cc1Swenshuai.xi // 101: 1'b0
2160*53ee8cc1Swenshuai.xi // 110: 1'b0
2161*53ee8cc1Swenshuai.xi // 111: 1'b0
2162*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h3b, 2'b11, 16'h0404);
2163*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h3b, 2'b11, 16'h0404);
2164*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f77, 0x04);
2165*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f76, 0x04);
2166*53ee8cc1Swenshuai.xi
2167*53ee8cc1Swenshuai.xi // Muji
2168*53ee8cc1Swenshuai.xi // [1:0] : reg_ckg_isdbt_outer1x_dvbt_outer1x
2169*53ee8cc1Swenshuai.xi // [0] : disable clock
2170*53ee8cc1Swenshuai.xi // [1] : invert clock
2171*53ee8cc1Swenshuai.xi // [3:2]: Select clock source
2172*53ee8cc1Swenshuai.xi // vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
2173*53ee8cc1Swenshuai.xi // sel[0]= (reg_demod_isdbt_on & reg_ckg_isdbt_outer1x[2])
2174*53ee8cc1Swenshuai.xi // sel[1]= (~reg_demod_isdbt_on)
2175*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2176*53ee8cc1Swenshuai.xi // 00: isdbt_clk6_lat(6 MHz)
2177*53ee8cc1Swenshuai.xi // 01: isdbt_clk8_lat(8 MHz)
2178*53ee8cc1Swenshuai.xi // 10: clk_dmplldiv10_div2(43.2 MHz)
2179*53ee8cc1Swenshuai.xi // 11: 1'b0
2180*53ee8cc1Swenshuai.xi // [6:4] : reg_ckg_miu_dvbtc_outer2x
2181*53ee8cc1Swenshuai.xi // [0] : disable clock
2182*53ee8cc1Swenshuai.xi // [1] : invert clock
2183*53ee8cc1Swenshuai.xi // [2] : Select clock source
2184*53ee8cc1Swenshuai.xi // 0: clk_miu_p
2185*53ee8cc1Swenshuai.xi // 1: clk_dmplldiv10(86.4 MHz)
2186*53ee8cc1Swenshuai.xi // [12:8] : reg_ckg_dvbtc_rs
2187*53ee8cc1Swenshuai.xi // [0] : disable clock
2188*53ee8cc1Swenshuai.xi // [1] : invert clock
2189*53ee8cc1Swenshuai.xi // [4:2]: Select clock source
2190*53ee8cc1Swenshuai.xi // 000: clk_dmplldiv10(86.4 MHz)
2191*53ee8cc1Swenshuai.xi // 001: clk_dmplldiv10_div2(43.2 MHz)
2192*53ee8cc1Swenshuai.xi // 010: clk_atsc50_p
2193*53ee8cc1Swenshuai.xi // ^^^^^^^^^^^^
2194*53ee8cc1Swenshuai.xi // if(reg_atsc_adc_sel_mplldiv2) => clk_dmplldiv2_div7(49.7 MHz)
2195*53ee8cc1Swenshuai.xi // else => clk_dmplldiv17(50.82 MHz)
2196*53ee8cc1Swenshuai.xi // 011: clk_dvbtc_rs_216_buf(216 MHz)
2197*53ee8cc1Swenshuai.xi // 100: clk_dvbtc_rs_172_buf(172 MHz)
2198*53ee8cc1Swenshuai.xi // 101: clk_dvbtc_rs_144_buf(144 MHz)
2199*53ee8cc1Swenshuai.xi // 110: 1'b0
2200*53ee8cc1Swenshuai.xi // 111: 1'b0
2201*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h27, 2'b10, 16'h0800);
2202*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h27, 2'b10, 16'h0800);
2203*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f4f, 0x08);
2204*53ee8cc1Swenshuai.xi
2205*53ee8cc1Swenshuai.xi // ================================================================
2206*53ee8cc1Swenshuai.xi // ISDBT SRAM pool clock enable
2207*53ee8cc1Swenshuai.xi // ================================================================
2208*53ee8cc1Swenshuai.xi // [3:0] : reg_ckg_share_dtmb_inner12x_isdbt_inner2x
2209*53ee8cc1Swenshuai.xi // [0] : disable clock
2210*53ee8cc1Swenshuai.xi // [1] : invert clock
2211*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dmplldiv10_div2 \_________________> clk_isdbt_inner2x_dvbt_inner2x, *sel[0] = (reg_demod_isdbt_on) | TEST_CLK_EN
2212*53ee8cc1Swenshuai.xi // 1 : clk_isdbt_inner2x_p /
2213*53ee8cc1Swenshuai.xi // 2 : clk_dtmb_inner12x_4x_dvbtc_rs_mux --------> clk_dtmb_inner12x_4x_dvbtc_rs
2214*53ee8cc1Swenshuai.xi // 3 : 1'b0
2215*53ee8cc1Swenshuai.xi // [7:4] : reg_ckg_share_dtmb_inner8x_rs_isdbt_inner2x
2216*53ee8cc1Swenshuai.xi // [0] : disable clock
2217*53ee8cc1Swenshuai.xi // [1] : invert clock
2218*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dmplldiv10_div2 \_________________> clk_isdbt_inner2x_dvbt_inner2x, *sel[0] = (reg_demod_isdbt_on) | TEST_CLK_EN
2219*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner2x_p /
2220*53ee8cc1Swenshuai.xi // : 2 : dtmb_clk144_buf \_________________> clk_dtmb_inner8x_dvbtc_rs, *sel[0] = reg_ckg_dtmb_inner8x_dvbtc_rs[2] | TEST_CLK_EN
2221*53ee8cc1Swenshuai.xi // : 3 : clk_dvbtc_rs_mux /
2222*53ee8cc1Swenshuai.xi // [11:8] : reg_ckg_share_dtmb_inner8x_isdbt_inner2x
2223*53ee8cc1Swenshuai.xi // [0] : disable clock
2224*53ee8cc1Swenshuai.xi // [1] : invert clock
2225*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dmplldiv10_div2 \_________________> clk_isdbt_inner2x_dvbt_inner2x, *sel[0] = (reg_demod_isdbt_on) | TEST_CLK_EN
2226*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner2x_p /
2227*53ee8cc1Swenshuai.xi // : 2 : dtmb_clk144_buf ------------------> clk_dtmb_inner8x
2228*53ee8cc1Swenshuai.xi // : 3 : 1'b0
2229*53ee8cc1Swenshuai.xi // [15:12] : reg_ckg_share_dtmb_outer2x_isdbt_inner2x
2230*53ee8cc1Swenshuai.xi // [0] : disable clock
2231*53ee8cc1Swenshuai.xi // [1] : invert clock
2232*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dmplldiv10_div2 \_________________> clk_isdbt_inner2x_dvbt_inner2x, *sel[0] = (reg_demod_isdbt_on) | TEST_CLK_EN
2233*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner2x_p /
2234*53ee8cc1Swenshuai.xi // : 2 : dtmb_eq_clk36_buf ------------------> clk_dtmb_outer2x
2235*53ee8cc1Swenshuai.xi // : 3 : 1'b0
2236*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h40, 2'b11, 16'h0000);
2237*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h40, 2'b11, 16'h0000);
2238*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f81, 0x00);
2239*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f80, 0x00);
2240*53ee8cc1Swenshuai.xi
2241*53ee8cc1Swenshuai.xi
2242*53ee8cc1Swenshuai.xi // [3:0] : reg_ckg_share_dtmb_inner2x_isdbt_inner2x
2243*53ee8cc1Swenshuai.xi // [0] : disable clock
2244*53ee8cc1Swenshuai.xi // [1] : invert clock
2245*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dmplldiv10_div2 \_________________> clk_isdbt_inner2x_dvbt_inner2x, *sel[0] = (reg_demod_isdbt_on) | TEST_CLK_EN
2246*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner2x_p /
2247*53ee8cc1Swenshuai.xi // : 2 : dtmb_clk36_buf ------------------> clk_dtmb_inner2x
2248*53ee8cc1Swenshuai.xi // : 3 : 1'b0
2249*53ee8cc1Swenshuai.xi // [7:4] : reg_ckg_share_dtmb_inner12x_isdbt_inner4x
2250*53ee8cc1Swenshuai.xi // [0] : disable clock
2251*53ee8cc1Swenshuai.xi // [1] : invert clock
2252*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dvbtc_sram4_p \_________________> clk_dvbtc_sram4_isdbt_inner4x, *sel[0] = reg_demod_isdbt_on | TEST_CLK_EN;
2253*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner4x_p /
2254*53ee8cc1Swenshuai.xi // : 2 : clk_dtmb_inner12x_4x_dvbtc_rs_mux --------> clk_dtmb_inner12x_4x_dvbtc_rs,
2255*53ee8cc1Swenshuai.xi // : 3 : 1'b0
2256*53ee8cc1Swenshuai.xi // [11:8] : reg_ckg_share_dtmb_eq2x_isdbt_outer6x
2257*53ee8cc1Swenshuai.xi // [0] : disable clock
2258*53ee8cc1Swenshuai.xi // [1] : invert clock
2259*53ee8cc1Swenshuai.xi // [3:2] : 0 : isdbt_clk36_lat \_________________> clk_isdbt_outer6x, *sel[0] = reg_ckg_isdbt_outer6x[2] | TEST_CLK_EN
2260*53ee8cc1Swenshuai.xi // : 1 : isdbt_clk48_lat /
2261*53ee8cc1Swenshuai.xi // : 2 : clk_dtmb_eq2x_inner12x_mux ---------------> clk_dtmb_eq2x_inner12x
2262*53ee8cc1Swenshuai.xi // : 3 : 1'b0
2263*53ee8cc1Swenshuai.xi // [15:12] : reg_ckg_share_dtmb_eq0p5x_isdbt_sram0
2264*53ee8cc1Swenshuai.xi // [0] : disable clock
2265*53ee8cc1Swenshuai.xi // [1] : invert clock
2266*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dvbtc_sram0_p \_________________> clk_sram0, *sel[0] = reg_demod_isdbt_on | TEST_CLK_EN
2267*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner4x_p /
2268*53ee8cc1Swenshuai.xi // : 2 : dtmb_eq_clk72_buf \_________________> clk_dtmb_eq0p5x_inner4x *sel[0] = reg_ckg_dtmb_eq0p5x_inner4x[2] | extmd
2269*53ee8cc1Swenshuai.xi // : 3 : dtmb_clk72_buf /
2270*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h41, 2'b11, 16'h0000);
2271*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h41, 2'b11, 16'h0000);
2272*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f83, 0x00);
2273*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f82, 0x00);
2274*53ee8cc1Swenshuai.xi
2275*53ee8cc1Swenshuai.xi
2276*53ee8cc1Swenshuai.xi // [3:0] : reg_ckg_share_dtmb_eq2x_isdbt_sram1
2277*53ee8cc1Swenshuai.xi // [0] : disable clock
2278*53ee8cc1Swenshuai.xi // [1] : invert clock
2279*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dvbtc_sram1_p \_________________> clk_sram1, *sel[0] = reg_demod_isdbt_on | TEST_CLK_EN
2280*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner4x_p /
2281*53ee8cc1Swenshuai.xi // : 2 : clk_dtmb_eq2x_inner2x_12x_mux ------------> clk_dtmb_eq2x_inner2x_12x
2282*53ee8cc1Swenshuai.xi // : 3 : 1'b0
2283*53ee8cc1Swenshuai.xi // [7:4] : reg_ckg_share_dtmb_inner6x_isdbt_sram3
2284*53ee8cc1Swenshuai.xi // [0] : disable clock
2285*53ee8cc1Swenshuai.xi // [1] : invert clock
2286*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dvbtc_sram3_p \_________________> clk_sram3, *sel[0] = ((~reg_fed_srd_on) & reg_demod_isdbt_on) | TEST_CLK_EN
2287*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner2x_p /
2288*53ee8cc1Swenshuai.xi // : 2 : dtmb_clk108_buf ------------------> clk_dtmb_inner6x
2289*53ee8cc1Swenshuai.xi // : 3 : 1'b0
2290*53ee8cc1Swenshuai.xi // [11:8] : reg_ckg_share_dtmb_eq2x_isdbt_sram3
2291*53ee8cc1Swenshuai.xi // [0] : disable clock
2292*53ee8cc1Swenshuai.xi // [1] : invert clock
2293*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dvbtc_sram3_p \_________________> clk_sram3, *sel[0] = ((~reg_fed_srd_on) & reg_demod_isdbt_on) | TEST_CLK_EN
2294*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner2x_p /
2295*53ee8cc1Swenshuai.xi // : 2 : clk_dtmb_eq2x_inner12x_mux ---------------> clk_dtmb_eq2x_inner12x
2296*53ee8cc1Swenshuai.xi // : 3 : 1'b0
2297*53ee8cc1Swenshuai.xi // [15:12] : reg_ckg_share_dtmb_inner12x_isdbt_sram4
2298*53ee8cc1Swenshuai.xi // [0] : disable clock
2299*53ee8cc1Swenshuai.xi // [1] : invert clock
2300*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dvbtc_sram4_p \_________________> clk_sram4, *sel[0] = ((~reg_fed_srd_on) & reg_demod_isdbt_on) | TEST_CLK_EN
2301*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner2x_p /
2302*53ee8cc1Swenshuai.xi // : 2 : dtmb_clk216_buf ------------------> clk_dtmb_inner12x
2303*53ee8cc1Swenshuai.xi // : 3 : 1'b0
2304*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h42, 2'b11, 16'h0000);
2305*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h42, 2'b11, 16'h0000);
2306*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f85, 0x00);
2307*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f84, 0x00);
2308*53ee8cc1Swenshuai.xi
2309*53ee8cc1Swenshuai.xi
2310*53ee8cc1Swenshuai.xi // [3:0] : reg_ckg_share_dtmb_inner12x_eq0p5x_isdbt_sram4
2311*53ee8cc1Swenshuai.xi // [0] : disable clock
2312*53ee8cc1Swenshuai.xi // [1] : invert clock
2313*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dvbtc_sram4_p \_________________> clk_sram4, *sel[0] = ((~reg_fed_srd_on) & reg_demod_isdbt_on) | TEST_CLK_EN
2314*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner2x_p /
2315*53ee8cc1Swenshuai.xi // : 2 : dtmb_clk216_buf \_________________> clk_dtmb_inner12x_eq0p5x, *sel[0] = reg_ckg_dtmb_inner12x_eq0p5x[2] | extmd
2316*53ee8cc1Swenshuai.xi // : 3 : dtmb_eq_clk72_buf /
2317*53ee8cc1Swenshuai.xi // [7:4] : reg_ckg_share_dtmb_eq0p25x_isdbt_sram4
2318*53ee8cc1Swenshuai.xi // [0] : disable clock
2319*53ee8cc1Swenshuai.xi // [1] : invert clock
2320*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dvbtc_sram4_p \_________________> clk_sram4, *sel[0] = ((~reg_fed_srd_on) & reg_demod_isdbt_on) | TEST_CLK_EN
2321*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner2x_p /
2322*53ee8cc1Swenshuai.xi // : 2 : dtmb_eq_clk36_buf ------------------> clk_dtmb_eq0p25x
2323*53ee8cc1Swenshuai.xi // : 3 : 1'b0
2324*53ee8cc1Swenshuai.xi // [11:8] : reg_ckg_share_dtmb_inner2x_isdbt_sram4
2325*53ee8cc1Swenshuai.xi // [0] : disable clock
2326*53ee8cc1Swenshuai.xi // [1] : invert clock
2327*53ee8cc1Swenshuai.xi // [3:2] : 0 : clk_dvbtc_sram4_p \_________________> clk_sram4, *sel[0] = ((~reg_fed_srd_on) & reg_demod_isdbt_on) | TEST_CLK_EN
2328*53ee8cc1Swenshuai.xi // : 1 : clk_isdbt_inner2x_p /
2329*53ee8cc1Swenshuai.xi // : 2 : dtmb_clk36_buf \_________________> clk_dtmb_inner2x_dvbtc_rs, *sel[0] = reg_ckg_dtmb_inner2x_dvbtc_rs[2] | TEST_CLK_EN
2330*53ee8cc1Swenshuai.xi // : 3 : clk_dvbtc_rs_mux /
2331*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h43, 2'b11, 16'h0000);
2332*53ee8cc1Swenshuai.xi // `RIU_W((`RIUBASE_CLKGEN_DMD>>1)+7'h43, 2'b11, 16'h0000);
2333*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f87, 0x00);
2334*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f86, 0x00);
2335*53ee8cc1Swenshuai.xi
2336*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
2337*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val|0x03);
2338*53ee8cc1Swenshuai.xi }
2339*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_WHISKY)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)2340*53ee8cc1Swenshuai.xi void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
2341*53ee8cc1Swenshuai.xi {
2342*53ee8cc1Swenshuai.xi MS_U8 u8Val=0x00;
2343*53ee8cc1Swenshuai.xi
2344*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_WHISKY--------------\n"));
2345*53ee8cc1Swenshuai.xi
2346*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
2347*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
2348*53ee8cc1Swenshuai.xi
2349*53ee8cc1Swenshuai.xi // DMDMCU 108M
2350*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
2351*53ee8cc1Swenshuai.xi // Set parallel TS clock
2352*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05);
2353*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
2354*53ee8cc1Swenshuai.xi // Enable ATSC, DVBTC TS clock
2355*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
2356*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
2357*53ee8cc1Swenshuai.xi // Enable ADC clock in clkgen_demod
2358*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
2359*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x00);
2360*53ee8cc1Swenshuai.xi // Reset TS divider
2361*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
2362*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
2363*53ee8cc1Swenshuai.xi // ADC select MPLLDIV17 & EQ select MPLLDIV5
2364*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f43, 0x00);
2365*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f42, 0x00);
2366*53ee8cc1Swenshuai.xi // Enable ATSC clock
2367*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f03, 0x00);
2368*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f02, 0x00);
2369*53ee8cc1Swenshuai.xi // configure reg_ckg_atsc50, reg_ckg_atsc25, reg_ckg_atsc_eq25 and reg_ckg_atsc_ce25
2370*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f04, 0x00);
2371*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f07, 0x00);
2372*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f06, 0x00);
2373*53ee8cc1Swenshuai.xi // enable clk_atsc_adcd_sync
2374*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
2375*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x08);
2376*53ee8cc1Swenshuai.xi // Enable DVBC outer clock
2377*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f12, 0x00);
2378*53ee8cc1Swenshuai.xi // Enable SRAM clock
2379*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f19, 0x00);
2380*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f18, 0x00);
2381*53ee8cc1Swenshuai.xi // select clock
2382*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23, 0x00);
2383*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x00);
2384*53ee8cc1Swenshuai.xi // enable CCI LMS clock
2385*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f71, 0x00);
2386*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f70, 0x00);
2387*53ee8cc1Swenshuai.xi // set symbol rate
2388*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f77, 0x04);
2389*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f76, 0x04);
2390*53ee8cc1Swenshuai.xi // reg_ckg_adc1x_eq1x
2391*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f49, 0x04);
2392*53ee8cc1Swenshuai.xi
2393*53ee8cc1Swenshuai.xi u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
2394*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39,(u8Val| 0x03));
2395*53ee8cc1Swenshuai.xi }
2396*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN)
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)2397*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
2398*53ee8cc1Swenshuai.xi {
2399*53ee8cc1Swenshuai.xi //MS_U8 u8Val = 0;
2400*53ee8cc1Swenshuai.xi
2401*53ee8cc1Swenshuai.xi #if DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI
2402*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_MASERATI--------------\n"));
2403*53ee8cc1Swenshuai.xi #else
2404*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_MACAN--------------\n"));
2405*53ee8cc1Swenshuai.xi #endif
2406*53ee8cc1Swenshuai.xi
2407*53ee8cc1Swenshuai.xi //u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
2408*53ee8cc1Swenshuai.xi //_HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
2409*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
2410*53ee8cc1Swenshuai.xi
2411*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x1128d0, 0x01);
2412*53ee8cc1Swenshuai.xi
2413*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e, 0x10);
2414*53ee8cc1Swenshuai.xi
2415*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301, 0x05);
2416*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300, 0x11);
2417*53ee8cc1Swenshuai.xi
2418*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309, 0x00);
2419*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308, 0x00);
2420*53ee8cc1Swenshuai.xi
2421*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302, 0x01);
2422*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302, 0x00);
2423*53ee8cc1Swenshuai.xi
2424*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b, 0x00);
2425*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a, 0x08);
2426*53ee8cc1Swenshuai.xi
2427*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315, 0x00);
2428*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314, 0x08);
2429*53ee8cc1Swenshuai.xi
2430*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x1128d0, 0x00);
2431*53ee8cc1Swenshuai.xi
2432*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152928, 0x00);
2433*53ee8cc1Swenshuai.xi
2434*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152903, 0x00);
2435*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152902, 0x00);
2436*53ee8cc1Swenshuai.xi
2437*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152905, 0x00);
2438*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152904, 0x00);
2439*53ee8cc1Swenshuai.xi
2440*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152907, 0x00);
2441*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152906, 0x00);
2442*53ee8cc1Swenshuai.xi
2443*53ee8cc1Swenshuai.xi
2444*53ee8cc1Swenshuai.xi
2445*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f21, 0x44);
2446*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f20, 0x40);
2447*53ee8cc1Swenshuai.xi
2448*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23, 0x10);
2449*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22, 0x44);
2450*53ee8cc1Swenshuai.xi
2451*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f3b, 0x08);
2452*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f3a, 0x08);
2453*53ee8cc1Swenshuai.xi
2454*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f71, 0x00);
2455*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f70, 0x00);
2456*53ee8cc1Swenshuai.xi
2457*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f73, 0x00);
2458*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f72, 0x00);
2459*53ee8cc1Swenshuai.xi
2460*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f79, 0x11);
2461*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f78, 0x18);
2462*53ee8cc1Swenshuai.xi
2463*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152991, 0x88);
2464*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152990, 0x88);
2465*53ee8cc1Swenshuai.xi
2466*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f69, 0x44);
2467*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f68, 0x00);
2468*53ee8cc1Swenshuai.xi
2469*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f75, 0x81);
2470*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f74, 0x11);
2471*53ee8cc1Swenshuai.xi
2472*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f77, 0x81);
2473*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f76, 0x88);
2474*53ee8cc1Swenshuai.xi
2475*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x15298f, 0x11);
2476*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x15298e, 0x88);
2477*53ee8cc1Swenshuai.xi
2478*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152923, 0x00);
2479*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152922, 0x00);
2480*53ee8cc1Swenshuai.xi
2481*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f25, 0x10);
2482*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f24, 0x11);
2483*53ee8cc1Swenshuai.xi
2484*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152971, 0x1c);
2485*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152970, 0xc1);
2486*53ee8cc1Swenshuai.xi
2487*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152977, 0x04);
2488*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152976, 0x04);
2489*53ee8cc1Swenshuai.xi
2490*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f6f, 0x11);
2491*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f6e, 0x00);
2492*53ee8cc1Swenshuai.xi
2493*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111feb, 0x18);
2494*53ee8cc1Swenshuai.xi
2495*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f7f, 0x10);
2496*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f7e, 0x11);
2497*53ee8cc1Swenshuai.xi
2498*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f31, 0x14);
2499*53ee8cc1Swenshuai.xi
2500*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152981, 0x00);
2501*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152980, 0x00);
2502*53ee8cc1Swenshuai.xi
2503*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152983, 0x00);
2504*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152982, 0x00);
2505*53ee8cc1Swenshuai.xi
2506*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152985, 0x00);
2507*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152984, 0x00);
2508*53ee8cc1Swenshuai.xi
2509*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152987, 0x00);
2510*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152986, 0x00);
2511*53ee8cc1Swenshuai.xi
2512*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152979, 0x11);
2513*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152978, 0x14);
2514*53ee8cc1Swenshuai.xi
2515*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x15298d, 0x81);
2516*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x15298c, 0x44);
2517*53ee8cc1Swenshuai.xi
2518*53ee8cc1Swenshuai.xi //u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
2519*53ee8cc1Swenshuai.xi //_HAL_DMD_RIU_WriteByte(0x101e39, u8Val|0x03);
2520*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
2521*53ee8cc1Swenshuai.xi }
2522*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG )
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)2523*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
2524*53ee8cc1Swenshuai.xi {
2525*53ee8cc1Swenshuai.xi //MS_U8 u8Val = 0;
2526*53ee8cc1Swenshuai.xi
2527*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_MUSTANG--------------\n"));
2528*53ee8cc1Swenshuai.xi
2529*53ee8cc1Swenshuai.xi //u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
2530*53ee8cc1Swenshuai.xi //_HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
2531*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
2532*53ee8cc1Swenshuai.xi
2533*53ee8cc1Swenshuai.xi
2534*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101e39,0x00);
2535*53ee8cc1Swenshuai.xi
2536*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e,0x10);
2537*53ee8cc1Swenshuai.xi
2538*53ee8cc1Swenshuai.xi
2539*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301,0x05);
2540*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300,0x11);
2541*53ee8cc1Swenshuai.xi
2542*53ee8cc1Swenshuai.xi
2543*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309,0x00);
2544*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308,0x00);
2545*53ee8cc1Swenshuai.xi
2546*53ee8cc1Swenshuai.xi
2547*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315,0x00);
2548*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314,0x08);
2549*53ee8cc1Swenshuai.xi
2550*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302,0x01);
2551*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302,0x00);
2552*53ee8cc1Swenshuai.xi
2553*53ee8cc1Swenshuai.xi
2554*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152928,0x00);
2555*53ee8cc1Swenshuai.xi
2556*53ee8cc1Swenshuai.xi
2557*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152903,0x00);
2558*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152902,0x00);
2559*53ee8cc1Swenshuai.xi
2560*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152905,0x00);
2561*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152904,0x00);
2562*53ee8cc1Swenshuai.xi
2563*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152907,0x00);
2564*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152906,0x00);
2565*53ee8cc1Swenshuai.xi
2566*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b,0x00);
2567*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a,0x08);
2568*53ee8cc1Swenshuai.xi
2569*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f21,0x44);
2570*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f20,0x40);
2571*53ee8cc1Swenshuai.xi
2572*53ee8cc1Swenshuai.xi
2573*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23,0x10);
2574*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22,0x44);
2575*53ee8cc1Swenshuai.xi
2576*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f3b,0x08);
2577*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f3a,0x08);
2578*53ee8cc1Swenshuai.xi
2579*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f71,0x00);
2580*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f70,0x00);
2581*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f73,0x00);
2582*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f72,0x00);
2583*53ee8cc1Swenshuai.xi
2584*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f79,0x11);
2585*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f78,0x18);
2586*53ee8cc1Swenshuai.xi
2587*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152991,0x88);
2588*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152990,0x88);
2589*53ee8cc1Swenshuai.xi
2590*53ee8cc1Swenshuai.xi
2591*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f69,0x44);
2592*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f68,0x00);
2593*53ee8cc1Swenshuai.xi
2594*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f75,0x81);
2595*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f74,0x11);
2596*53ee8cc1Swenshuai.xi
2597*53ee8cc1Swenshuai.xi
2598*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f77,0x81);
2599*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f76,0x88);
2600*53ee8cc1Swenshuai.xi
2601*53ee8cc1Swenshuai.xi
2602*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x15298f,0x11);
2603*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x15298e,0x88);
2604*53ee8cc1Swenshuai.xi
2605*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152923,0x00);
2606*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152922,0x00);
2607*53ee8cc1Swenshuai.xi
2608*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f25,0x10);
2609*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f24,0x11);
2610*53ee8cc1Swenshuai.xi
2611*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152971,0x1c);
2612*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152970,0xc1);
2613*53ee8cc1Swenshuai.xi
2614*53ee8cc1Swenshuai.xi
2615*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152977,0x04);
2616*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152976,0x04);
2617*53ee8cc1Swenshuai.xi
2618*53ee8cc1Swenshuai.xi
2619*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f6f,0x11);
2620*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f6e,0x00);
2621*53ee8cc1Swenshuai.xi
2622*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111feb,0x18);
2623*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f7f,0x10);
2624*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f7e,0x11);
2625*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f31,0x14);
2626*53ee8cc1Swenshuai.xi
2627*53ee8cc1Swenshuai.xi
2628*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152981,0x00);
2629*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152980,0x00);
2630*53ee8cc1Swenshuai.xi
2631*53ee8cc1Swenshuai.xi
2632*53ee8cc1Swenshuai.xi
2633*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152983,0x00);
2634*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152982,0x00);
2635*53ee8cc1Swenshuai.xi
2636*53ee8cc1Swenshuai.xi
2637*53ee8cc1Swenshuai.xi
2638*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152985,0x00);
2639*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152984,0x00);
2640*53ee8cc1Swenshuai.xi
2641*53ee8cc1Swenshuai.xi
2642*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152987,0x00);
2643*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152986,0x00);
2644*53ee8cc1Swenshuai.xi
2645*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152979,0x11);
2646*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152978,0x14);
2647*53ee8cc1Swenshuai.xi
2648*53ee8cc1Swenshuai.xi
2649*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x15298d,0x81);
2650*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x15298c,0x44);
2651*53ee8cc1Swenshuai.xi
2652*53ee8cc1Swenshuai.xi
2653*53ee8cc1Swenshuai.xi
2654*53ee8cc1Swenshuai.xi
2655*53ee8cc1Swenshuai.xi //u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
2656*53ee8cc1Swenshuai.xi //_HAL_DMD_RIU_WriteByte(0x101e39, u8Val|0x03);
2657*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
2658*53ee8cc1Swenshuai.xi }
2659*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM )
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)2660*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
2661*53ee8cc1Swenshuai.xi {
2662*53ee8cc1Swenshuai.xi //MS_U8 u8Val = 0;
2663*53ee8cc1Swenshuai.xi
2664*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("--------------DMD_ATSC_CHIP_MAXIM--------------\n"));
2665*53ee8cc1Swenshuai.xi
2666*53ee8cc1Swenshuai.xi //u8Val = _HAL_DMD_RIU_ReadByte(0x101e39);
2667*53ee8cc1Swenshuai.xi //_HAL_DMD_RIU_WriteByte(0x101e39, u8Val&(~0x03));
2668*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x00, 0x03);
2669*53ee8cc1Swenshuai.xi
2670*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x10331e,0x10);
2671*53ee8cc1Swenshuai.xi
2672*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103301,0x05);
2673*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103300,0x11);
2674*53ee8cc1Swenshuai.xi
2675*53ee8cc1Swenshuai.xi
2676*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103309,0x00);
2677*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103308,0x00);
2678*53ee8cc1Swenshuai.xi
2679*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103315,0x00);
2680*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103314,0x08);
2681*53ee8cc1Swenshuai.xi
2682*53ee8cc1Swenshuai.xi
2683*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302,0x01);
2684*53ee8cc1Swenshuai.xi
2685*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103302,0x00);
2686*53ee8cc1Swenshuai.xi
2687*53ee8cc1Swenshuai.xi
2688*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103321,0x00);
2689*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x103320,0x08);
2690*53ee8cc1Swenshuai.xi
2691*53ee8cc1Swenshuai.xi
2692*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152928,0x00);
2693*53ee8cc1Swenshuai.xi
2694*53ee8cc1Swenshuai.xi
2695*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152903,0x00);
2696*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152902,0x00);
2697*53ee8cc1Swenshuai.xi
2698*53ee8cc1Swenshuai.xi
2699*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152905,0x00);
2700*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152904,0x00);
2701*53ee8cc1Swenshuai.xi
2702*53ee8cc1Swenshuai.xi
2703*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152907,0x00);
2704*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152906,0x00);
2705*53ee8cc1Swenshuai.xi
2706*53ee8cc1Swenshuai.xi
2707*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0b,0x00);
2708*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f0a,0x08);
2709*53ee8cc1Swenshuai.xi
2710*53ee8cc1Swenshuai.xi
2711*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f21,0x44);
2712*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f20,0x40);
2713*53ee8cc1Swenshuai.xi
2714*53ee8cc1Swenshuai.xi
2715*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f23,0x10);
2716*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f22,0x44);
2717*53ee8cc1Swenshuai.xi
2718*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f3b,0x08);
2719*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f3a,0x08);
2720*53ee8cc1Swenshuai.xi
2721*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f71,0x00);
2722*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f70,0x00);
2723*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f73,0x00);
2724*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f72,0x00);
2725*53ee8cc1Swenshuai.xi
2726*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f79,0x11);
2727*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f78,0x18);
2728*53ee8cc1Swenshuai.xi
2729*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152991,0x88);
2730*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152990,0x88);
2731*53ee8cc1Swenshuai.xi
2732*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f69,0x44);
2733*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f68,0x00);
2734*53ee8cc1Swenshuai.xi
2735*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f75,0x81);
2736*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f74,0x11);
2737*53ee8cc1Swenshuai.xi
2738*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f77,0x81);
2739*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f76,0x88);
2740*53ee8cc1Swenshuai.xi
2741*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x15298f,0x11);
2742*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x15298e,0x88);
2743*53ee8cc1Swenshuai.xi
2744*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152923,0x00);
2745*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152922,0x00);
2746*53ee8cc1Swenshuai.xi
2747*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f25,0x10);
2748*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f24,0x11);
2749*53ee8cc1Swenshuai.xi
2750*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152971,0x1c);
2751*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152970,0xc1);
2752*53ee8cc1Swenshuai.xi
2753*53ee8cc1Swenshuai.xi
2754*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152977,0x04);
2755*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152976,0x04);
2756*53ee8cc1Swenshuai.xi
2757*53ee8cc1Swenshuai.xi
2758*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f6f,0x11);
2759*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f6e,0x00);
2760*53ee8cc1Swenshuai.xi
2761*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111feb,0x18);
2762*53ee8cc1Swenshuai.xi
2763*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f7f,0x10);
2764*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f7e,0x11);
2765*53ee8cc1Swenshuai.xi
2766*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x111f31,0x14);
2767*53ee8cc1Swenshuai.xi
2768*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152981,0x00);
2769*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152980,0x00);
2770*53ee8cc1Swenshuai.xi
2771*53ee8cc1Swenshuai.xi
2772*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152983,0x00);
2773*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152982,0x00);
2774*53ee8cc1Swenshuai.xi
2775*53ee8cc1Swenshuai.xi
2776*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152985,0x00);
2777*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152984,0x00);
2778*53ee8cc1Swenshuai.xi
2779*53ee8cc1Swenshuai.xi
2780*53ee8cc1Swenshuai.xi
2781*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152987,0x00);
2782*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152986,0x00);
2783*53ee8cc1Swenshuai.xi
2784*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152979,0x11);
2785*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x152978,0x14);
2786*53ee8cc1Swenshuai.xi
2787*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x15298d,0x81);
2788*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x15298c,0x44);
2789*53ee8cc1Swenshuai.xi
2790*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByteMask(0x101e39, 0x03, 0x03);
2791*53ee8cc1Swenshuai.xi }
2792*53ee8cc1Swenshuai.xi
2793*53ee8cc1Swenshuai.xi #else
_HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)2794*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_InitClk(MS_BOOL bRFAGCTristateEnable)
2795*53ee8cc1Swenshuai.xi {
2796*53ee8cc1Swenshuai.xi printf("--------------DMD_ATSC_CHIP_NONE--------------\n");
2797*53ee8cc1Swenshuai.xi }
2798*53ee8cc1Swenshuai.xi #endif
2799*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_Download(void)2800*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_Download(void)
2801*53ee8cc1Swenshuai.xi {
2802*53ee8cc1Swenshuai.xi DMD_ATSC_ResData *pRes = psDMD_ATSC_ResData + u8DMD_ATSC_DMD_ID;
2803*53ee8cc1Swenshuai.xi
2804*53ee8cc1Swenshuai.xi MS_U8 udata = 0x00;
2805*53ee8cc1Swenshuai.xi MS_U16 i=0;
2806*53ee8cc1Swenshuai.xi MS_U16 fail_cnt=0;
2807*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
2808*53ee8cc1Swenshuai.xi MS_U8 u8TmpData;
2809*53ee8cc1Swenshuai.xi MS_U16 u16AddressOffset;
2810*53ee8cc1Swenshuai.xi #endif
2811*53ee8cc1Swenshuai.xi
2812*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_T3_T10)
2813*53ee8cc1Swenshuai.xi if (_HAL_DMD_RIU_ReadByte(0x101E3E) != 0x08) HAL_PWS_Stop_VDMCU();
2814*53ee8cc1Swenshuai.xi else
2815*53ee8cc1Swenshuai.xi {
2816*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, 0x01); // reset VD_MCU
2817*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, 0x00);
2818*53ee8cc1Swenshuai.xi MsOS_DelayTask(20);
2819*53ee8cc1Swenshuai.xi return TRUE;
2820*53ee8cc1Swenshuai.xi }
2821*53ee8cc1Swenshuai.xi #else
2822*53ee8cc1Swenshuai.xi if (pRes->sDMD_ATSC_PriData.bDownloaded)
2823*53ee8cc1Swenshuai.xi {
2824*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG)
2825*53ee8cc1Swenshuai.xi udata=_HAL_DMD_RIU_ReadByte(DMDMcuBase+0x00);
2826*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, (udata|0x02)); // reset RIU remapping reset
2827*53ee8cc1Swenshuai.xi udata=_HAL_DMD_RIU_ReadByte(DMDMcuBase+0x00);
2828*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, (udata|0x01)); // reset VD_MCU
2829*53ee8cc1Swenshuai.xi #else
2830*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, 0x01); // reset MCU, madison patch
2831*53ee8cc1Swenshuai.xi #endif
2832*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, 0x00);
2833*53ee8cc1Swenshuai.xi MsOS_DelayTask(20);
2834*53ee8cc1Swenshuai.xi return TRUE;
2835*53ee8cc1Swenshuai.xi }
2836*53ee8cc1Swenshuai.xi #endif
2837*53ee8cc1Swenshuai.xi
2838*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG)
2839*53ee8cc1Swenshuai.xi udata=_HAL_DMD_RIU_ReadByte(DMDMcuBase+0x00);
2840*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, (udata|0x02)); // reset RIU remapping reset
2841*53ee8cc1Swenshuai.xi udata=_HAL_DMD_RIU_ReadByte(DMDMcuBase+0x00);
2842*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, (udata|0x01)); // reset VD_MCU
2843*53ee8cc1Swenshuai.xi #else
2844*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, 0x01); // reset MCU, madison patch
2845*53ee8cc1Swenshuai.xi #endif
2846*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x01, 0x00); // disable SRAM
2847*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG)
2848*53ee8cc1Swenshuai.xi udata=_HAL_DMD_RIU_ReadByte(DMDMcuBase+0x00);
2849*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, (udata&(~0x01))); // release MCU, madison patch
2850*53ee8cc1Swenshuai.xi #else
2851*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, 0x00);// release MCU, madison patchs
2852*53ee8cc1Swenshuai.xi #endif
2853*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x03, 0x50); // enable "vdmcu51_if"
2854*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x03, 0x51); // enable auto-increase
2855*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x04, 0x00); // sram address low byte
2856*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x05, 0x00); // sram address high byte
2857*53ee8cc1Swenshuai.xi
2858*53ee8cc1Swenshuai.xi //// Load code thru VDMCU_IF ////
2859*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf(">Load Code...\n"));
2860*53ee8cc1Swenshuai.xi
2861*53ee8cc1Swenshuai.xi for (i = 0; i < u16Lib_size; i++)
2862*53ee8cc1Swenshuai.xi {
2863*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, INTERN_ATSC_table[i]); // write data to VD MCU 51 code sram
2864*53ee8cc1Swenshuai.xi }
2865*53ee8cc1Swenshuai.xi
2866*53ee8cc1Swenshuai.xi //// Content verification ////
2867*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf(">Verify Code...\n"));
2868*53ee8cc1Swenshuai.xi
2869*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x04, 0x00); // sram address low byte
2870*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x05, 0x00); // sram address high byte
2871*53ee8cc1Swenshuai.xi
2872*53ee8cc1Swenshuai.xi for (i = 0; i < u16Lib_size; i++)
2873*53ee8cc1Swenshuai.xi {
2874*53ee8cc1Swenshuai.xi udata = _HAL_DMD_RIU_ReadByte(DMDMcuBase+0x10); // read sram data
2875*53ee8cc1Swenshuai.xi
2876*53ee8cc1Swenshuai.xi if (udata != INTERN_ATSC_table[i])
2877*53ee8cc1Swenshuai.xi {
2878*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf(">fail add = 0x%x\n", i));
2879*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf(">code = 0x%x\n", INTERN_ATSC_table[i]));
2880*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf(">data = 0x%x\n", udata));
2881*53ee8cc1Swenshuai.xi
2882*53ee8cc1Swenshuai.xi if (fail_cnt++ > 10)
2883*53ee8cc1Swenshuai.xi {
2884*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf(">DSP Loadcode fail!"));
2885*53ee8cc1Swenshuai.xi return FALSE;
2886*53ee8cc1Swenshuai.xi }
2887*53ee8cc1Swenshuai.xi }
2888*53ee8cc1Swenshuai.xi }
2889*53ee8cc1Swenshuai.xi
2890*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION < DMD_ATSC_CHIP_K3)
2891*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_A1)
2892*53ee8cc1Swenshuai.xi _initTable();
2893*53ee8cc1Swenshuai.xi #endif
2894*53ee8cc1Swenshuai.xi
2895*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x04, 0x80); // sram address low byte
2896*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_T8_T9 || DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_A1)
2897*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x05, 0x6B); // sram address high byte
2898*53ee8cc1Swenshuai.xi #else
2899*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x05, 0x5B); // sram address high byte
2900*53ee8cc1Swenshuai.xi #endif
2901*53ee8cc1Swenshuai.xi
2902*53ee8cc1Swenshuai.xi for (i = 0; i < sizeof(Demod_Flow_register); i++)
2903*53ee8cc1Swenshuai.xi {
2904*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, Demod_Flow_register[i]);
2905*53ee8cc1Swenshuai.xi }
2906*53ee8cc1Swenshuai.xi #else // #if (DMD_ATSC_CHIP_VERSION < DMD_ATSC_CHIP_K3)
2907*53ee8cc1Swenshuai.xi u16AddressOffset = (INTERN_ATSC_table[0x400] << 8)|INTERN_ATSC_table[0x401];
2908*53ee8cc1Swenshuai.xi
2909*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x04, (u16AddressOffset&0xFF)); // sram address low byte
2910*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x05, (u16AddressOffset>>8)); // sram address high byte
2911*53ee8cc1Swenshuai.xi
2912*53ee8cc1Swenshuai.xi u8TmpData = (MS_U8)pRes->sDMD_ATSC_InitData.u16IF_KHZ;
2913*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
2914*53ee8cc1Swenshuai.xi u8TmpData = (MS_U8)(pRes->sDMD_ATSC_InitData.u16IF_KHZ >> 8);
2915*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
2916*53ee8cc1Swenshuai.xi u8TmpData = (MS_U8)pRes->sDMD_ATSC_InitData.bIQSwap;
2917*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
2918*53ee8cc1Swenshuai.xi u8TmpData = (MS_U8)pRes->sDMD_ATSC_InitData.u16AGC_REFERENCE;
2919*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
2920*53ee8cc1Swenshuai.xi u8TmpData = (MS_U8)(pRes->sDMD_ATSC_InitData.u16AGC_REFERENCE >> 8);
2921*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
2922*53ee8cc1Swenshuai.xi u8TmpData = (MS_U8)pRes->sDMD_ATSC_InitData.u8IS_DUAL;
2923*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
2924*53ee8cc1Swenshuai.xi u8TmpData = (MS_U8)u8DMD_ATSC_DMD_ID;
2925*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x0C, u8TmpData); // write data to VD MCU 51 code sram
2926*53ee8cc1Swenshuai.xi #endif // #if (DMD_ATSC_CHIP_VERSION < DMD_ATSC_CHIP_K3)
2927*53ee8cc1Swenshuai.xi
2928*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x03, 0x50); // diable auto-increase
2929*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x03, 0x00); // disable "vdmcu51_if"
2930*53ee8cc1Swenshuai.xi
2931*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG)
2932*53ee8cc1Swenshuai.xi udata=_HAL_DMD_RIU_ReadByte(DMDMcuBase+0x00);
2933*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, (udata|0x01)); // reset VD_MCU
2934*53ee8cc1Swenshuai.xi #else
2935*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, 0x01); // reset MCU, madison patch
2936*53ee8cc1Swenshuai.xi #endif
2937*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x01, 0x01); // enable SRAM
2938*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase+0x00, 0x00); // release VD_MCU
2939*53ee8cc1Swenshuai.xi
2940*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_T3_T10)
2941*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x101E3E, 0x08); // ATSC = BIT3 -> 0x08
2942*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11051C, 0x00);
2943*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_T7)
2944*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(0x11261C, 0x00);
2945*53ee8cc1Swenshuai.xi pRes->sDMD_ATSC_PriData.bDownloaded = true;
2946*53ee8cc1Swenshuai.xi #else
2947*53ee8cc1Swenshuai.xi pRes->sDMD_ATSC_PriData.bDownloaded = true;
2948*53ee8cc1Swenshuai.xi #endif
2949*53ee8cc1Swenshuai.xi
2950*53ee8cc1Swenshuai.xi MsOS_DelayTask(20);
2951*53ee8cc1Swenshuai.xi
2952*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf(">DSP Loadcode done.\n"));
2953*53ee8cc1Swenshuai.xi
2954*53ee8cc1Swenshuai.xi return TRUE;
2955*53ee8cc1Swenshuai.xi }
2956*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_FWVERSION(void)2957*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_FWVERSION(void)
2958*53ee8cc1Swenshuai.xi {
2959*53ee8cc1Swenshuai.xi MS_U8 data1,data2,data3;
2960*53ee8cc1Swenshuai.xi
2961*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
2962*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C4, &data1);
2963*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C5, &data2);
2964*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C6, &data3);
2965*53ee8cc1Swenshuai.xi #else
2966*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C4, &data1);
2967*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20CF, &data2);
2968*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20D0, &data3);
2969*53ee8cc1Swenshuai.xi #endif
2970*53ee8cc1Swenshuai.xi
2971*53ee8cc1Swenshuai.xi printf("INTERN_ATSC_FW_VERSION:%x.%x.%x\n", data1, data2, data3);
2972*53ee8cc1Swenshuai.xi }
2973*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_Exit(void)2974*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_Exit(void)
2975*53ee8cc1Swenshuai.xi {
2976*53ee8cc1Swenshuai.xi MS_U8 u8CheckCount = 0;
2977*53ee8cc1Swenshuai.xi
2978*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(MBRegBase + 0x1C, 0x01);
2979*53ee8cc1Swenshuai.xi
2980*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)|0x02); // assert interrupt to VD MCU51
2981*53ee8cc1Swenshuai.xi _HAL_DMD_RIU_WriteByte(DMDMcuBase + 0x03, _HAL_DMD_RIU_ReadByte(DMDMcuBase + 0x03)&(~0x02)); // de-assert interrupt to VD MCU51
2982*53ee8cc1Swenshuai.xi
2983*53ee8cc1Swenshuai.xi while ((_HAL_DMD_RIU_ReadByte(MBRegBase + 0x1C)&0x02) != 0x02)
2984*53ee8cc1Swenshuai.xi {
2985*53ee8cc1Swenshuai.xi MsOS_DelayTaskUs(10);
2986*53ee8cc1Swenshuai.xi
2987*53ee8cc1Swenshuai.xi if (u8CheckCount++ == 0xFF)
2988*53ee8cc1Swenshuai.xi {
2989*53ee8cc1Swenshuai.xi printf(">> ATSC Exit Fail!\n");
2990*53ee8cc1Swenshuai.xi return FALSE;
2991*53ee8cc1Swenshuai.xi }
2992*53ee8cc1Swenshuai.xi }
2993*53ee8cc1Swenshuai.xi
2994*53ee8cc1Swenshuai.xi printf(">> ATSC Exit Ok!\n");
2995*53ee8cc1Swenshuai.xi
2996*53ee8cc1Swenshuai.xi return TRUE;
2997*53ee8cc1Swenshuai.xi }
2998*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_SoftReset(void)2999*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_SoftReset(void)
3000*53ee8cc1Swenshuai.xi {
3001*53ee8cc1Swenshuai.xi MS_U8 u8Data = 0xFF;
3002*53ee8cc1Swenshuai.xi
3003*53ee8cc1Swenshuai.xi //Reset FSM
3004*53ee8cc1Swenshuai.xi if (_MBX_WriteReg(0x20C0, 0x00)==FALSE) return FALSE;
3005*53ee8cc1Swenshuai.xi
3006*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
3007*53ee8cc1Swenshuai.xi while (u8Data != 0x02)
3008*53ee8cc1Swenshuai.xi #else
3009*53ee8cc1Swenshuai.xi while (u8Data != 0x00)
3010*53ee8cc1Swenshuai.xi #endif
3011*53ee8cc1Swenshuai.xi {
3012*53ee8cc1Swenshuai.xi if (_MBX_ReadReg(0x20C1, &u8Data)==FALSE) return FALSE;
3013*53ee8cc1Swenshuai.xi }
3014*53ee8cc1Swenshuai.xi
3015*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION < DMD_ATSC_CHIP_K3)
3016*53ee8cc1Swenshuai.xi //Execute demod top reset
3017*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2002, &u8Data);
3018*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x2002, (u8Data|0x10));
3019*53ee8cc1Swenshuai.xi return _MBX_WriteReg(0x2002, (u8Data&(~0x10)));
3020*53ee8cc1Swenshuai.xi #else
3021*53ee8cc1Swenshuai.xi return TRUE;
3022*53ee8cc1Swenshuai.xi #endif
3023*53ee8cc1Swenshuai.xi }
3024*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_SetVsbMode(void)3025*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_SetVsbMode(void)
3026*53ee8cc1Swenshuai.xi {
3027*53ee8cc1Swenshuai.xi return _MBX_WriteReg(0x20C0, 0x08);
3028*53ee8cc1Swenshuai.xi }
3029*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_Set64QamMode(void)3030*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_Set64QamMode(void)
3031*53ee8cc1Swenshuai.xi {
3032*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION < DMD_ATSC_CHIP_K3)
3033*53ee8cc1Swenshuai.xi if (_MBX_WriteReg(0x20C3, 0x00)==FALSE) return FALSE;
3034*53ee8cc1Swenshuai.xi #endif
3035*53ee8cc1Swenshuai.xi return _MBX_WriteReg(0x20C0, 0x04);
3036*53ee8cc1Swenshuai.xi }
3037*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_Set256QamMode(void)3038*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_Set256QamMode(void)
3039*53ee8cc1Swenshuai.xi {
3040*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION < DMD_ATSC_CHIP_K3)
3041*53ee8cc1Swenshuai.xi if (_MBX_WriteReg(0x20C3, 0x01)==FALSE) return FALSE;
3042*53ee8cc1Swenshuai.xi #endif
3043*53ee8cc1Swenshuai.xi return _MBX_WriteReg(0x20C0, 0x04);
3044*53ee8cc1Swenshuai.xi }
3045*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_SetModeClean(void)3046*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_SetModeClean(void)
3047*53ee8cc1Swenshuai.xi {
3048*53ee8cc1Swenshuai.xi return _MBX_WriteReg(0x20C0, 0x00);
3049*53ee8cc1Swenshuai.xi }
3050*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_Check8VSB64_256QAM(void)3051*53ee8cc1Swenshuai.xi static DMD_ATSC_DEMOD_TYPE _HAL_INTERN_ATSC_Check8VSB64_256QAM(void)
3052*53ee8cc1Swenshuai.xi {
3053*53ee8cc1Swenshuai.xi MS_U8 mode = 0;
3054*53ee8cc1Swenshuai.xi
3055*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
3056*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2A02, &mode); //EQ mode check
3057*53ee8cc1Swenshuai.xi
3058*53ee8cc1Swenshuai.xi mode &= 0x07;
3059*53ee8cc1Swenshuai.xi
3060*53ee8cc1Swenshuai.xi if (mode == QAM16_J83ABC) return DMD_ATSC_DEMOD_ATSC_16QAM;
3061*53ee8cc1Swenshuai.xi else if (mode == QAM32_J83ABC) return DMD_ATSC_DEMOD_ATSC_32QAM;
3062*53ee8cc1Swenshuai.xi else if (mode == QAM64_J83ABC) return DMD_ATSC_DEMOD_ATSC_64QAM;
3063*53ee8cc1Swenshuai.xi else if (mode == QAM128_J83ABC) return DMD_ATSC_DEMOD_ATSC_128QAM;
3064*53ee8cc1Swenshuai.xi else if (mode == QAM256_J83ABC) return DMD_ATSC_DEMOD_ATSC_256QAM;
3065*53ee8cc1Swenshuai.xi else return DMD_ATSC_DEMOD_ATSC_256QAM;
3066*53ee8cc1Swenshuai.xi #else
3067*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
3068*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
3069*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1700, &mode); //mode check
3070*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG)
3071*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x0400, &mode); //mode check (atsc_dmd)
3072*53ee8cc1Swenshuai.xi #else
3073*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2900, &mode); //mode check
3074*53ee8cc1Swenshuai.xi #endif
3075*53ee8cc1Swenshuai.xi
3076*53ee8cc1Swenshuai.xi if ((mode&VSB_ATSC) == VSB_ATSC) return DMD_ATSC_DEMOD_ATSC_VSB;
3077*53ee8cc1Swenshuai.xi else if ((mode & QAM256_ATSC) == QAM256_ATSC) return DMD_ATSC_DEMOD_ATSC_256QAM;
3078*53ee8cc1Swenshuai.xi else return DMD_ATSC_DEMOD_ATSC_64QAM;
3079*53ee8cc1Swenshuai.xi #endif
3080*53ee8cc1Swenshuai.xi }
3081*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_Vsb_QAM_AGCLock(void)3082*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_Vsb_QAM_AGCLock(void)
3083*53ee8cc1Swenshuai.xi {
3084*53ee8cc1Swenshuai.xi MS_U8 data1 = 0;
3085*53ee8cc1Swenshuai.xi
3086*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_A1)
3087*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
3088*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
3089*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2829, &data1); //AGC_LOCK
3090*53ee8cc1Swenshuai.xi #else
3091*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x271D, &data1); //AGC_LOCK
3092*53ee8cc1Swenshuai.xi #endif
3093*53ee8cc1Swenshuai.xi #else
3094*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x293A, &data1); //AGC_LOCK
3095*53ee8cc1Swenshuai.xi #endif
3096*53ee8cc1Swenshuai.xi
3097*53ee8cc1Swenshuai.xi if(data1&0x01)
3098*53ee8cc1Swenshuai.xi {
3099*53ee8cc1Swenshuai.xi return TRUE;
3100*53ee8cc1Swenshuai.xi }
3101*53ee8cc1Swenshuai.xi else
3102*53ee8cc1Swenshuai.xi {
3103*53ee8cc1Swenshuai.xi return FALSE;
3104*53ee8cc1Swenshuai.xi }
3105*53ee8cc1Swenshuai.xi }
3106*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_Vsb_PreLock(void)3107*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_Vsb_PreLock(void)
3108*53ee8cc1Swenshuai.xi {
3109*53ee8cc1Swenshuai.xi MS_U8 data1 = 0;
3110*53ee8cc1Swenshuai.xi MS_U8 data2 = 0;
3111*53ee8cc1Swenshuai.xi MS_U16 checkValue;
3112*53ee8cc1Swenshuai.xi
3113*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C2, &data1); //<0>TR_LOCK, <1>PTK_LOCK
3114*53ee8cc1Swenshuai.xi
3115*53ee8cc1Swenshuai.xi if ((data1&0x02) == 0x02)
3116*53ee8cc1Swenshuai.xi {
3117*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
3118*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
3119*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x18EA, &data1);
3120*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x18EB, &data2);
3121*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG)
3122*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x05EA, &data1); //atsc_dmdext
3123*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x05EB, &data2); //atsc_dmdext
3124*53ee8cc1Swenshuai.xi #else
3125*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2AEA, &data1);
3126*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2AEB, &data2);
3127*53ee8cc1Swenshuai.xi #endif
3128*53ee8cc1Swenshuai.xi
3129*53ee8cc1Swenshuai.xi checkValue = data1 << 8;
3130*53ee8cc1Swenshuai.xi checkValue |= data2;
3131*53ee8cc1Swenshuai.xi
3132*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("Internal Pre Locking time :[%d]ms\n",checkValue));
3133*53ee8cc1Swenshuai.xi
3134*53ee8cc1Swenshuai.xi return TRUE;
3135*53ee8cc1Swenshuai.xi }
3136*53ee8cc1Swenshuai.xi else
3137*53ee8cc1Swenshuai.xi {
3138*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("\nPreLock - FALSE"));
3139*53ee8cc1Swenshuai.xi
3140*53ee8cc1Swenshuai.xi return FALSE;
3141*53ee8cc1Swenshuai.xi }
3142*53ee8cc1Swenshuai.xi }
3143*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_Vsb_FSync_Lock(void)3144*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_Vsb_FSync_Lock(void)
3145*53ee8cc1Swenshuai.xi {
3146*53ee8cc1Swenshuai.xi MS_U8 data1 = 0;
3147*53ee8cc1Swenshuai.xi MS_U8 data2 = 0;
3148*53ee8cc1Swenshuai.xi MS_U16 checkValue;
3149*53ee8cc1Swenshuai.xi
3150*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
3151*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
3152*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1824, &data1); //<4>1:Field Sync lock = Fsync lock
3153*53ee8cc1Swenshuai.xi #else
3154*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2A24, &data1); //<4>1:Field Sync lock = Fsync lock
3155*53ee8cc1Swenshuai.xi #endif
3156*53ee8cc1Swenshuai.xi
3157*53ee8cc1Swenshuai.xi if ((data1&0x10) == 0x10)
3158*53ee8cc1Swenshuai.xi {
3159*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
3160*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
3161*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x18EE, &data1);
3162*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x18EF, &data2);
3163*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG)
3164*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x05EE, &data1); //atsc_dmdext
3165*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x05EF, &data2); //atsc_dmdext
3166*53ee8cc1Swenshuai.xi #else
3167*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2AEE, &data1);
3168*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2AEF, &data2);
3169*53ee8cc1Swenshuai.xi #endif
3170*53ee8cc1Swenshuai.xi
3171*53ee8cc1Swenshuai.xi checkValue = data1 << 8;
3172*53ee8cc1Swenshuai.xi checkValue |= data2;
3173*53ee8cc1Swenshuai.xi
3174*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("Internal Fsync Locking time :[%d]ms\n",checkValue));
3175*53ee8cc1Swenshuai.xi
3176*53ee8cc1Swenshuai.xi return TRUE;
3177*53ee8cc1Swenshuai.xi }
3178*53ee8cc1Swenshuai.xi else
3179*53ee8cc1Swenshuai.xi {
3180*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("\nFsync Lock - FALSE"));
3181*53ee8cc1Swenshuai.xi
3182*53ee8cc1Swenshuai.xi return FALSE;
3183*53ee8cc1Swenshuai.xi }
3184*53ee8cc1Swenshuai.xi }
3185*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_Vsb_CE_Lock(void)3186*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_Vsb_CE_Lock(void)
3187*53ee8cc1Swenshuai.xi {
3188*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_A1)
3189*53ee8cc1Swenshuai.xi return TRUE;
3190*53ee8cc1Swenshuai.xi #else
3191*53ee8cc1Swenshuai.xi MS_U8 data1 = 0;
3192*53ee8cc1Swenshuai.xi
3193*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C2, &data1); //<4>1:CE Search Fail
3194*53ee8cc1Swenshuai.xi
3195*53ee8cc1Swenshuai.xi if((data1&0x10) == 0)
3196*53ee8cc1Swenshuai.xi {
3197*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("\nCE Lock"));
3198*53ee8cc1Swenshuai.xi return TRUE;
3199*53ee8cc1Swenshuai.xi }
3200*53ee8cc1Swenshuai.xi else
3201*53ee8cc1Swenshuai.xi {
3202*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("\nCE unLock"));
3203*53ee8cc1Swenshuai.xi return FALSE;
3204*53ee8cc1Swenshuai.xi }
3205*53ee8cc1Swenshuai.xi #endif
3206*53ee8cc1Swenshuai.xi }
3207*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_Vsb_FEC_Lock(void)3208*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_Vsb_FEC_Lock(void)
3209*53ee8cc1Swenshuai.xi {
3210*53ee8cc1Swenshuai.xi MS_U8 data1=0, data2=0, data3=0, data4=0, data5=0;
3211*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_A1)
3212*53ee8cc1Swenshuai.xi MS_U8 data6 =0, data7 = 0;
3213*53ee8cc1Swenshuai.xi #endif
3214*53ee8cc1Swenshuai.xi
3215*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_A1)
3216*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C1, &data1);
3217*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
3218*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
3219*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1A17, &data2);//AD_NOISE_PWR_TRAIN1
3220*53ee8cc1Swenshuai.xi #else
3221*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2C17, &data2);//AD_NOISE_PWR_TRAIN1
3222*53ee8cc1Swenshuai.xi #endif
3223*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C2, &data3);//<0>TR_LOCK, <1>PTK_LOCK
3224*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
3225*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
3226*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1901, &data4);//FEC_EN_CTL
3227*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1C67, &data5);//addy
3228*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG)
3229*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x0601, &data4);//FEC_EN_CTL (atsc_fec)
3230*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2D67, &data5);//addy (atsc_eqext)
3231*53ee8cc1Swenshuai.xi #else
3232*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2B01, &data4);//FEC_EN_CTL
3233*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2D67, &data5);//addy
3234*53ee8cc1Swenshuai.xi #endif
3235*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F01, &data6);
3236*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F40, &data7);
3237*53ee8cc1Swenshuai.xi
3238*53ee8cc1Swenshuai.xi //Driver update 0426 :suggestion for field claim
3239*53ee8cc1Swenshuai.xi if (data1==INTERN_ATSC_OUTER_STATE &&
3240*53ee8cc1Swenshuai.xi ((data2<=INTERN_ATSC_VSB_TRAIN_SNR_LIMIT) || (data5 <= INTERN_ATSC_VSB_TRAIN_SNR_LIMIT)) &&
3241*53ee8cc1Swenshuai.xi ((data3&0x02)==0x02) &&
3242*53ee8cc1Swenshuai.xi ((data4&INTERN_ATSC_FEC_ENABLE)==INTERN_ATSC_FEC_ENABLE) &&
3243*53ee8cc1Swenshuai.xi ((data6&0x10) == 0x10) && ((data7&0x01) == 0x01))
3244*53ee8cc1Swenshuai.xi {
3245*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("\nFEC Lock"));
3246*53ee8cc1Swenshuai.xi return TRUE;
3247*53ee8cc1Swenshuai.xi }
3248*53ee8cc1Swenshuai.xi else
3249*53ee8cc1Swenshuai.xi {
3250*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("\nFEC unLock"));
3251*53ee8cc1Swenshuai.xi return FALSE;
3252*53ee8cc1Swenshuai.xi }
3253*53ee8cc1Swenshuai.xi #else
3254*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C1, &data1);
3255*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2C17, &data2); //AD_NOISE_PWR_TRAIN1 (DFS)
3256*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C2, &data3); //<0>TR_LOCK, <1>PTK_LOCK
3257*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2B01, &data4); //FEC_EN_CTL
3258*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2C15, &data5); //AD_NOISE_PWR_TRAIN1 (DSS)
3259*53ee8cc1Swenshuai.xi
3260*53ee8cc1Swenshuai.xi if ((data1 == INTERN_ATSC_OUTER_STATE) &&
3261*53ee8cc1Swenshuai.xi ((data2 <= INTERN_ATSC_VSB_TRAIN_SNR_LIMIT) || (data5 <= INTERN_ATSC_VSB_TRAIN_SNR_LIMIT)) &&
3262*53ee8cc1Swenshuai.xi ((data3&0x02)==0x02) &&
3263*53ee8cc1Swenshuai.xi ((data4&INTERN_ATSC_FEC_ENABLE) == INTERN_ATSC_FEC_ENABLE))
3264*53ee8cc1Swenshuai.xi {
3265*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("\nFEC Lock"));
3266*53ee8cc1Swenshuai.xi return TRUE;
3267*53ee8cc1Swenshuai.xi }
3268*53ee8cc1Swenshuai.xi else
3269*53ee8cc1Swenshuai.xi {
3270*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf("\nFEC unLock"));
3271*53ee8cc1Swenshuai.xi return FALSE;
3272*53ee8cc1Swenshuai.xi }
3273*53ee8cc1Swenshuai.xi #endif
3274*53ee8cc1Swenshuai.xi }
3275*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_QAM_PreLock(void)3276*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_QAM_PreLock(void)
3277*53ee8cc1Swenshuai.xi {
3278*53ee8cc1Swenshuai.xi MS_U8 data1 = 0;
3279*53ee8cc1Swenshuai.xi
3280*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
3281*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2950, &data1); //TR_LOCK
3282*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_A1)
3283*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
3284*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
3285*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1B15, &data1); //TR_LOCK
3286*53ee8cc1Swenshuai.xi #else
3287*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2615, &data1); //TR_LOCK
3288*53ee8cc1Swenshuai.xi #endif
3289*53ee8cc1Swenshuai.xi #else
3290*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2921, &data1); //TR_LOCK
3291*53ee8cc1Swenshuai.xi #endif
3292*53ee8cc1Swenshuai.xi
3293*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
3294*53ee8cc1Swenshuai.xi if (data1&0x01)
3295*53ee8cc1Swenshuai.xi {
3296*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf(" QAM preLock OK \n"));
3297*53ee8cc1Swenshuai.xi return TRUE;
3298*53ee8cc1Swenshuai.xi }
3299*53ee8cc1Swenshuai.xi else
3300*53ee8cc1Swenshuai.xi {
3301*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf(" QAM preLock NOT OK \n"));
3302*53ee8cc1Swenshuai.xi return FALSE;
3303*53ee8cc1Swenshuai.xi }
3304*53ee8cc1Swenshuai.xi #else
3305*53ee8cc1Swenshuai.xi if((data1&0x10) == 0x10)
3306*53ee8cc1Swenshuai.xi {
3307*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf(" QAM preLock OK \n"));
3308*53ee8cc1Swenshuai.xi return TRUE;
3309*53ee8cc1Swenshuai.xi }
3310*53ee8cc1Swenshuai.xi else
3311*53ee8cc1Swenshuai.xi {
3312*53ee8cc1Swenshuai.xi HAL_INTERN_ATSC_DBINFO(printf(" QAM preLock NOT OK \n"));
3313*53ee8cc1Swenshuai.xi return FALSE;
3314*53ee8cc1Swenshuai.xi }
3315*53ee8cc1Swenshuai.xi #endif
3316*53ee8cc1Swenshuai.xi }
3317*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_QAM_Main_Lock(void)3318*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_QAM_Main_Lock(void)
3319*53ee8cc1Swenshuai.xi {
3320*53ee8cc1Swenshuai.xi #if DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_A1
3321*53ee8cc1Swenshuai.xi MS_U8 data1=0, data2=0, data3=0, data4=0, data5=0, data6=0;
3322*53ee8cc1Swenshuai.xi #else
3323*53ee8cc1Swenshuai.xi MS_U8 data1=0, data4=0, data5=0, data6=0;
3324*53ee8cc1Swenshuai.xi #endif
3325*53ee8cc1Swenshuai.xi
3326*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
3327*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C1, &data1);
3328*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2B18, &data2); //boundary detected
3329*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2950, &data3); //TR_LOCK
3330*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2B01, &data4); //FEC_EN_CTL
3331*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2101, &data5); //RS_backend
3332*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2140, &data6); //RS_backend
3333*53ee8cc1Swenshuai.xi
3334*53ee8cc1Swenshuai.xi if (data1==INTERN_ATSC_OUTER_STATE && (data2&0x01)==0x01 &&
3335*53ee8cc1Swenshuai.xi data4==INTERN_ATSC_FEC_ENABLE && (data3&0x01) ==0x01 &&
3336*53ee8cc1Swenshuai.xi ((data5&0x10) == 0x10) && ((data6&0x01) == 0x01))
3337*53ee8cc1Swenshuai.xi {
3338*53ee8cc1Swenshuai.xi return TRUE;
3339*53ee8cc1Swenshuai.xi }
3340*53ee8cc1Swenshuai.xi else
3341*53ee8cc1Swenshuai.xi {
3342*53ee8cc1Swenshuai.xi return FALSE;
3343*53ee8cc1Swenshuai.xi }
3344*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_A1)
3345*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C1, &data1);
3346*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
3347*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
3348*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1918, &data2); //boundary detected
3349*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1B15, &data3); //TR_LOCK
3350*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1901, &data4); //FEC_EN_CTL
3351*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG)
3352*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x0618, &data2); //boundary detected (atsc_fec)
3353*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2615, &data3); //TR_LOCK (dmd_tr)
3354*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x0601, &data4); //FEC_EN_CTL (atsc_fec)
3355*53ee8cc1Swenshuai.xi #else
3356*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2B18, &data2); //boundary detected
3357*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2615, &data3); //TR_LOCK
3358*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2B01, &data4); //FEC_EN_CTL
3359*53ee8cc1Swenshuai.xi #endif
3360*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F01, &data5);
3361*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F40, &data6);
3362*53ee8cc1Swenshuai.xi
3363*53ee8cc1Swenshuai.xi if (data1==INTERN_ATSC_OUTER_STATE && (data2&0x01)==0x01 &&
3364*53ee8cc1Swenshuai.xi data4==INTERN_ATSC_FEC_ENABLE && (data3&0x10)==0x10 &&
3365*53ee8cc1Swenshuai.xi ((data5&0x10) == 0x10) && ((data6&0x01) == 0x01))
3366*53ee8cc1Swenshuai.xi {
3367*53ee8cc1Swenshuai.xi return TRUE;
3368*53ee8cc1Swenshuai.xi }
3369*53ee8cc1Swenshuai.xi else
3370*53ee8cc1Swenshuai.xi {
3371*53ee8cc1Swenshuai.xi return FALSE;
3372*53ee8cc1Swenshuai.xi }
3373*53ee8cc1Swenshuai.xi #else
3374*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2B18, &data4); //boundary detected
3375*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2B01, &data5); //FEC_EN_CTL
3376*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2921, &data6); //TR_LOCK
3377*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x20C1, &data1);
3378*53ee8cc1Swenshuai.xi
3379*53ee8cc1Swenshuai.xi if (data1==INTERN_ATSC_OUTER_STATE && (data4&0x01) == 0x01 &&
3380*53ee8cc1Swenshuai.xi (data5&INTERN_ATSC_FEC_ENABLE) == INTERN_ATSC_FEC_ENABLE &&
3381*53ee8cc1Swenshuai.xi (data6&0x10) == 0x10)
3382*53ee8cc1Swenshuai.xi {
3383*53ee8cc1Swenshuai.xi return TRUE;
3384*53ee8cc1Swenshuai.xi }
3385*53ee8cc1Swenshuai.xi else
3386*53ee8cc1Swenshuai.xi {
3387*53ee8cc1Swenshuai.xi return FALSE;
3388*53ee8cc1Swenshuai.xi }
3389*53ee8cc1Swenshuai.xi #endif
3390*53ee8cc1Swenshuai.xi }
3391*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_ReadIFAGC(void)3392*53ee8cc1Swenshuai.xi static MS_U8 _HAL_INTERN_ATSC_ReadIFAGC(void)
3393*53ee8cc1Swenshuai.xi {
3394*53ee8cc1Swenshuai.xi MS_U16 data = 0;
3395*53ee8cc1Swenshuai.xi
3396*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
3397*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2726, ((MS_U8*)(&data))+1); //reg_frontend
3398*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2727, (MS_U8*)(&data));
3399*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_A1)
3400*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
3401*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG|| DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
3402*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x280E, ((MS_U8*)(&data))+1);
3403*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x280F, (MS_U8*)(&data));
3404*53ee8cc1Swenshuai.xi #else
3405*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2944, ((MS_U8*)(&data))+1);
3406*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2945, (MS_U8*)(&data));
3407*53ee8cc1Swenshuai.xi #endif
3408*53ee8cc1Swenshuai.xi #endif
3409*53ee8cc1Swenshuai.xi
3410*53ee8cc1Swenshuai.xi return data;
3411*53ee8cc1Swenshuai.xi }
3412*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_CheckSignalCondition(DMD_ATSC_SIGNAL_CONDITION * pstatus)3413*53ee8cc1Swenshuai.xi static void _HAL_INTERN_ATSC_CheckSignalCondition(DMD_ATSC_SIGNAL_CONDITION* pstatus)
3414*53ee8cc1Swenshuai.xi {
3415*53ee8cc1Swenshuai.xi DMD_ATSC_DEMOD_TYPE eMode;
3416*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
3417*53ee8cc1Swenshuai.xi MS_U8 u8NoisePowerH = 0, u8NoisePowerL = 0;
3418*53ee8cc1Swenshuai.xi static MS_U8 u8NoisePowerL_Last = 0xff;
3419*53ee8cc1Swenshuai.xi #else
3420*53ee8cc1Swenshuai.xi MS_U8 u8NoisePowerH=0;
3421*53ee8cc1Swenshuai.xi #endif
3422*53ee8cc1Swenshuai.xi static MS_U8 u8NoisePowerH_Last = 0xff;
3423*53ee8cc1Swenshuai.xi
3424*53ee8cc1Swenshuai.xi eMode = _HAL_INTERN_ATSC_Check8VSB64_256QAM();
3425*53ee8cc1Swenshuai.xi
3426*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
3427*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2ABE, &u8NoisePowerL); //DVBC_EQ
3428*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2ABF, &u8NoisePowerH);
3429*53ee8cc1Swenshuai.xi #else
3430*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
3431*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
3432*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1A15, &u8NoisePowerH);
3433*53ee8cc1Swenshuai.xi #else
3434*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2C15, &u8NoisePowerH); //(atsc_eq)
3435*53ee8cc1Swenshuai.xi #endif
3436*53ee8cc1Swenshuai.xi #endif
3437*53ee8cc1Swenshuai.xi
3438*53ee8cc1Swenshuai.xi if (eMode == DMD_ATSC_DEMOD_ATSC_VSB) //VSB mode//SNR=10*log10((1344<<10)/noisepower)
3439*53ee8cc1Swenshuai.xi {
3440*53ee8cc1Swenshuai.xi if (!_HAL_INTERN_ATSC_Vsb_FEC_Lock()) u8NoisePowerH=0xFF;
3441*53ee8cc1Swenshuai.xi else if (abs(u8NoisePowerH_Last-u8NoisePowerH) > 5)
3442*53ee8cc1Swenshuai.xi u8NoisePowerH_Last = u8NoisePowerH;
3443*53ee8cc1Swenshuai.xi else u8NoisePowerH = u8NoisePowerH_Last;
3444*53ee8cc1Swenshuai.xi
3445*53ee8cc1Swenshuai.xi if (u8NoisePowerH > 0xBE) //SNR<14.5
3446*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_NO;
3447*53ee8cc1Swenshuai.xi else if (u8NoisePowerH > 0x4D) //SNR<18.4
3448*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_WEAK;
3449*53ee8cc1Swenshuai.xi else if (u8NoisePowerH > 0x23) //SNR<21.8
3450*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_MODERATE;
3451*53ee8cc1Swenshuai.xi else if (u8NoisePowerH > 0x0A) //SNR<26.9
3452*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_STRONG;
3453*53ee8cc1Swenshuai.xi else
3454*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_VERY_STRONG;
3455*53ee8cc1Swenshuai.xi }
3456*53ee8cc1Swenshuai.xi else //QAM MODE
3457*53ee8cc1Swenshuai.xi {
3458*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
3459*53ee8cc1Swenshuai.xi if (!_HAL_INTERN_ATSC_QAM_Main_Lock() || u8NoisePowerH) u8NoisePowerL=0xFF;
3460*53ee8cc1Swenshuai.xi else if (abs(u8NoisePowerL_Last-u8NoisePowerL) > 5)
3461*53ee8cc1Swenshuai.xi u8NoisePowerL_Last = u8NoisePowerL;
3462*53ee8cc1Swenshuai.xi else u8NoisePowerL = u8NoisePowerL_Last;
3463*53ee8cc1Swenshuai.xi
3464*53ee8cc1Swenshuai.xi //SNR=10*log10(65536/noisepower)
3465*53ee8cc1Swenshuai.xi if (eMode == DMD_ATSC_DEMOD_ATSC_256QAM)
3466*53ee8cc1Swenshuai.xi {
3467*53ee8cc1Swenshuai.xi if (u8NoisePowerL > 0x71) //SNR<27.6
3468*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_NO;
3469*53ee8cc1Swenshuai.xi else if (u8NoisePowerL > 0x31) //SNR<31.2
3470*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_WEAK;
3471*53ee8cc1Swenshuai.xi else if (u8NoisePowerL > 0x25) //SNR<32.4
3472*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_MODERATE;
3473*53ee8cc1Swenshuai.xi else if (u8NoisePowerL > 0x17) //SNR<34.4
3474*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_STRONG;
3475*53ee8cc1Swenshuai.xi else
3476*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_VERY_STRONG;
3477*53ee8cc1Swenshuai.xi }
3478*53ee8cc1Swenshuai.xi else
3479*53ee8cc1Swenshuai.xi {
3480*53ee8cc1Swenshuai.xi if (u8NoisePowerL > 0x1D) //SNR<21.5
3481*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_NO;
3482*53ee8cc1Swenshuai.xi else if (u8NoisePowerL > 0x14) //SNR<25.4
3483*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_WEAK;
3484*53ee8cc1Swenshuai.xi else if (u8NoisePowerL > 0x0F) //SNR<27.8
3485*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_MODERATE;
3486*53ee8cc1Swenshuai.xi else if (u8NoisePowerL > 0x0B) //SNR<31.4
3487*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_STRONG;
3488*53ee8cc1Swenshuai.xi else
3489*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_VERY_STRONG;
3490*53ee8cc1Swenshuai.xi }
3491*53ee8cc1Swenshuai.xi #else
3492*53ee8cc1Swenshuai.xi if (!_HAL_INTERN_ATSC_QAM_Main_Lock()) u8NoisePowerH=0xFF;
3493*53ee8cc1Swenshuai.xi else if (abs(u8NoisePowerH_Last-u8NoisePowerH) > 5)
3494*53ee8cc1Swenshuai.xi u8NoisePowerH_Last = u8NoisePowerH;
3495*53ee8cc1Swenshuai.xi else u8NoisePowerH = u8NoisePowerH_Last;
3496*53ee8cc1Swenshuai.xi
3497*53ee8cc1Swenshuai.xi if (eMode == DMD_ATSC_DEMOD_ATSC_256QAM) //256QAM//SNR=10*log10((2720<<10)/noisepower)
3498*53ee8cc1Swenshuai.xi {
3499*53ee8cc1Swenshuai.xi if (u8NoisePowerH > 0x13) //SNR<27.5
3500*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_NO;
3501*53ee8cc1Swenshuai.xi else if (u8NoisePowerH > 0x08) //SNR<31.2
3502*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_WEAK;
3503*53ee8cc1Swenshuai.xi else if (u8NoisePowerH > 0x06) //SNR<32.4
3504*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_MODERATE;
3505*53ee8cc1Swenshuai.xi else if (u8NoisePowerH > 0x04) //SNR<34.2
3506*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_STRONG;
3507*53ee8cc1Swenshuai.xi else
3508*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_VERY_STRONG;
3509*53ee8cc1Swenshuai.xi }
3510*53ee8cc1Swenshuai.xi else //64QAM//SNR=10*log10((2688<<10)/noisepower)
3511*53ee8cc1Swenshuai.xi {
3512*53ee8cc1Swenshuai.xi if (u8NoisePowerH > 0x4C) //SNR<21.5
3513*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_NO;
3514*53ee8cc1Swenshuai.xi else if (u8NoisePowerH > 0x1F) //SNR<25.4
3515*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_WEAK;
3516*53ee8cc1Swenshuai.xi else if (u8NoisePowerH > 0x11) //SNR<27.8
3517*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_MODERATE;
3518*53ee8cc1Swenshuai.xi else if (u8NoisePowerH > 0x07) //SNR<31.4
3519*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_STRONG;
3520*53ee8cc1Swenshuai.xi else
3521*53ee8cc1Swenshuai.xi *pstatus=DMD_ATSC_SIGNAL_VERY_STRONG;
3522*53ee8cc1Swenshuai.xi }
3523*53ee8cc1Swenshuai.xi #endif
3524*53ee8cc1Swenshuai.xi }
3525*53ee8cc1Swenshuai.xi }
3526*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_ReadSNRPercentage(void)3527*53ee8cc1Swenshuai.xi static MS_U8 _HAL_INTERN_ATSC_ReadSNRPercentage(void)
3528*53ee8cc1Swenshuai.xi {
3529*53ee8cc1Swenshuai.xi DMD_ATSC_DEMOD_TYPE eMode;
3530*53ee8cc1Swenshuai.xi MS_U8 u8NoisePowerH = 0, u8NoisePowerL = 0;
3531*53ee8cc1Swenshuai.xi MS_U16 u16NoisePower;
3532*53ee8cc1Swenshuai.xi
3533*53ee8cc1Swenshuai.xi eMode = _HAL_INTERN_ATSC_Check8VSB64_256QAM();
3534*53ee8cc1Swenshuai.xi
3535*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
3536*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2ABE, &u8NoisePowerL); //DVBC_EQ
3537*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2ABF, &u8NoisePowerH);
3538*53ee8cc1Swenshuai.xi #else
3539*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
3540*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
3541*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1A14, &u8NoisePowerL);
3542*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1A15, &u8NoisePowerH);
3543*53ee8cc1Swenshuai.xi #else
3544*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2C14, &u8NoisePowerL); //atsc_eq
3545*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2C15, &u8NoisePowerH);
3546*53ee8cc1Swenshuai.xi #endif
3547*53ee8cc1Swenshuai.xi #endif
3548*53ee8cc1Swenshuai.xi
3549*53ee8cc1Swenshuai.xi u16NoisePower = (u8NoisePowerH<<8) | u8NoisePowerL;
3550*53ee8cc1Swenshuai.xi
3551*53ee8cc1Swenshuai.xi if (eMode == DMD_ATSC_DEMOD_ATSC_VSB) //VSB mode//SNR=10*log10((1344<<10)/noisepower)
3552*53ee8cc1Swenshuai.xi {
3553*53ee8cc1Swenshuai.xi if (!_HAL_INTERN_ATSC_Vsb_FEC_Lock())
3554*53ee8cc1Swenshuai.xi return 0;//SNR=0;
3555*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x008A)//SNR>=40dB
3556*53ee8cc1Swenshuai.xi return 100;//SNR=MAX_SNR;
3557*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0097)//SNR>=39.6dB
3558*53ee8cc1Swenshuai.xi return 99;//
3559*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x00A5)//SNR>=39.2dB
3560*53ee8cc1Swenshuai.xi return 98;//
3561*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x00B5)//SNR>=38.8dB
3562*53ee8cc1Swenshuai.xi return 97;//
3563*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x00C7)//SNR>=38.4dB
3564*53ee8cc1Swenshuai.xi return 96;//
3565*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x00DA)//SNR>=38.0dB
3566*53ee8cc1Swenshuai.xi return 95;//
3567*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x00EF)//SNR>=37.6dB
3568*53ee8cc1Swenshuai.xi return 94;//
3569*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0106)//SNR>=37.2dB
3570*53ee8cc1Swenshuai.xi return 93;//
3571*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0120)//SNR>=36.8dB
3572*53ee8cc1Swenshuai.xi return 92;//
3573*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x013B)//SNR>=36.4dB
3574*53ee8cc1Swenshuai.xi return 91;//
3575*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x015A)//SNR>=36.0dB
3576*53ee8cc1Swenshuai.xi return 90;//
3577*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x017B)//SNR>=35.6dB
3578*53ee8cc1Swenshuai.xi return 89;//
3579*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x01A0)//SNR>=35.2dB
3580*53ee8cc1Swenshuai.xi return 88;//
3581*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x01C8)//SNR>=34.8dB
3582*53ee8cc1Swenshuai.xi return 87;//
3583*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x01F4)//SNR>=34.4dB
3584*53ee8cc1Swenshuai.xi return 86;//
3585*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0224)//SNR>=34.0dB
3586*53ee8cc1Swenshuai.xi return 85;//
3587*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0259)//SNR>=33.6dB
3588*53ee8cc1Swenshuai.xi return 84;//
3589*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0293)//SNR>=33.2dB
3590*53ee8cc1Swenshuai.xi return 83;//
3591*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x02D2)//SNR>=32.8dB
3592*53ee8cc1Swenshuai.xi return 82;//
3593*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0318)//SNR>=32.4dB
3594*53ee8cc1Swenshuai.xi return 81;//
3595*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0364)//SNR>=32.0dB
3596*53ee8cc1Swenshuai.xi return 80;//
3597*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x03B8)//SNR>=31.6dB
3598*53ee8cc1Swenshuai.xi return 79;//
3599*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0414)//SNR>=31.2dB
3600*53ee8cc1Swenshuai.xi return 78;//
3601*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0479)//SNR>=30.8dB
3602*53ee8cc1Swenshuai.xi return 77;//
3603*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x04E7)//SNR>=30.4dB
3604*53ee8cc1Swenshuai.xi return 76;//
3605*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0560)//SNR>=30.0dB
3606*53ee8cc1Swenshuai.xi return 75;//
3607*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x05E5)//SNR>=29.6dB
3608*53ee8cc1Swenshuai.xi return 74;//
3609*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0677)//SNR>=29.2dB
3610*53ee8cc1Swenshuai.xi return 73;//
3611*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0716)//SNR>=28.8dB
3612*53ee8cc1Swenshuai.xi return 72;//
3613*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x07C5)//SNR>=28.4dB
3614*53ee8cc1Swenshuai.xi return 71;//
3615*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0885)//SNR>=28.0dB
3616*53ee8cc1Swenshuai.xi return 70;//
3617*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0958)//SNR>=27.6dB
3618*53ee8cc1Swenshuai.xi return 69;//
3619*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0A3E)//SNR>=27.2dB
3620*53ee8cc1Swenshuai.xi return 68;//
3621*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0B3B)//SNR>=26.8dB
3622*53ee8cc1Swenshuai.xi return 67;//
3623*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0C51)//SNR>=26.4dB
3624*53ee8cc1Swenshuai.xi return 66;//
3625*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0D81)//SNR>=26.0dB
3626*53ee8cc1Swenshuai.xi return 65;//
3627*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0ECF)//SNR>=25.6dB
3628*53ee8cc1Swenshuai.xi return 64;//
3629*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x103C)//SNR>=25.2dB
3630*53ee8cc1Swenshuai.xi return 63;//
3631*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x11CD)//SNR>=24.8dB
3632*53ee8cc1Swenshuai.xi return 62;//
3633*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x1385)//SNR>=24.4dB
3634*53ee8cc1Swenshuai.xi return 61;//
3635*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x1567)//SNR>=24.0dB
3636*53ee8cc1Swenshuai.xi return 60;//
3637*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x1778)//SNR>=23.6dB
3638*53ee8cc1Swenshuai.xi return 59;//
3639*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x19BB)//SNR>=23.2dB
3640*53ee8cc1Swenshuai.xi return 58;//
3641*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x1C37)//SNR>=22.8dB
3642*53ee8cc1Swenshuai.xi return 57;//
3643*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x1EF0)//SNR>=22.4dB
3644*53ee8cc1Swenshuai.xi return 56;//
3645*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x21EC)//SNR>=22.0dB
3646*53ee8cc1Swenshuai.xi return 55;//
3647*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x2531)//SNR>=21.6dB
3648*53ee8cc1Swenshuai.xi return 54;//
3649*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x28C8)//SNR>=21.2dB
3650*53ee8cc1Swenshuai.xi return 53;//
3651*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x2CB7)//SNR>=20.8dB
3652*53ee8cc1Swenshuai.xi return 52;//
3653*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x3108)//SNR>=20.4dB
3654*53ee8cc1Swenshuai.xi return 51;//
3655*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x35C3)//SNR>=20.0dB
3656*53ee8cc1Swenshuai.xi return 50;//
3657*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x3AF2)//SNR>=19.6dB
3658*53ee8cc1Swenshuai.xi return 49;//
3659*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x40A2)//SNR>=19.2dB
3660*53ee8cc1Swenshuai.xi return 48;//
3661*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x46DF)//SNR>=18.8dB
3662*53ee8cc1Swenshuai.xi return 47;//
3663*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x4DB5)//SNR>=18.4dB
3664*53ee8cc1Swenshuai.xi return 46;//
3665*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x5534)//SNR>=18.0dB
3666*53ee8cc1Swenshuai.xi return 45;//
3667*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x5D6D)//SNR>=17.6dB
3668*53ee8cc1Swenshuai.xi return 44;//
3669*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x6670)//SNR>=17.2dB
3670*53ee8cc1Swenshuai.xi return 43;//
3671*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x7052)//SNR>=16.8dB
3672*53ee8cc1Swenshuai.xi return 42;//
3673*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x7B28)//SNR>=16.4dB
3674*53ee8cc1Swenshuai.xi return 41;//
3675*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x870A)//SNR>=16.0dB
3676*53ee8cc1Swenshuai.xi return 40;//
3677*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x9411)//SNR>=15.6dB
3678*53ee8cc1Swenshuai.xi return 39;//
3679*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xA25A)//SNR>=15.2dB
3680*53ee8cc1Swenshuai.xi return 38;//
3681*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xB204)//SNR>=14.8dB
3682*53ee8cc1Swenshuai.xi return 37;//
3683*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xC331)//SNR>=14.4dB
3684*53ee8cc1Swenshuai.xi return 36;//
3685*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xD606)//SNR>=14.0dB
3686*53ee8cc1Swenshuai.xi return 35;//
3687*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xEAAC)//SNR>=13.6dB
3688*53ee8cc1Swenshuai.xi return 34;//
3689*53ee8cc1Swenshuai.xi else// if (u16NoisePower>=0xEAAC)//SNR<13.6dB
3690*53ee8cc1Swenshuai.xi return 33;//
3691*53ee8cc1Swenshuai.xi }
3692*53ee8cc1Swenshuai.xi else //QAM MODE
3693*53ee8cc1Swenshuai.xi {
3694*53ee8cc1Swenshuai.xi if( eMode == DMD_ATSC_DEMOD_ATSC_256QAM ) //256QAM//SNR=10*log10((2720<<10)/noisepower)
3695*53ee8cc1Swenshuai.xi {
3696*53ee8cc1Swenshuai.xi if (!_HAL_INTERN_ATSC_QAM_Main_Lock())
3697*53ee8cc1Swenshuai.xi return 0;//SNR=0;
3698*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0117)//SNR>=40dB
3699*53ee8cc1Swenshuai.xi return 100;//
3700*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0131)//SNR>=39.6dB
3701*53ee8cc1Swenshuai.xi return 99;//
3702*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x014F)//SNR>=39.2dB
3703*53ee8cc1Swenshuai.xi return 98;//
3704*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x016F)//SNR>=38.8dB
3705*53ee8cc1Swenshuai.xi return 97;//
3706*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0193)//SNR>=38.4dB
3707*53ee8cc1Swenshuai.xi return 96;//
3708*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x01B9)//SNR>=38.0dB
3709*53ee8cc1Swenshuai.xi return 95;//
3710*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x01E4)//SNR>=37.6dB
3711*53ee8cc1Swenshuai.xi return 94;//
3712*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0213)//SNR>=37.2dB
3713*53ee8cc1Swenshuai.xi return 93;//
3714*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0246)//SNR>=36.8dB
3715*53ee8cc1Swenshuai.xi return 92;//
3716*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x027E)//SNR>=36.4dB
3717*53ee8cc1Swenshuai.xi return 91;//
3718*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x02BC)//SNR>=36.0dB
3719*53ee8cc1Swenshuai.xi return 90;//
3720*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x02FF)//SNR>=35.6dB
3721*53ee8cc1Swenshuai.xi return 89;//
3722*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0349)//SNR>=35.2dB
3723*53ee8cc1Swenshuai.xi return 88;//
3724*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x039A)//SNR>=34.8dB
3725*53ee8cc1Swenshuai.xi return 87;//
3726*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x03F3)//SNR>=34.4dB
3727*53ee8cc1Swenshuai.xi return 86;//
3728*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0455)//SNR>=34.0dB
3729*53ee8cc1Swenshuai.xi return 85;//
3730*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x04C0)//SNR>=33.6dB
3731*53ee8cc1Swenshuai.xi return 84;//
3732*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0535)//SNR>=33.2dB
3733*53ee8cc1Swenshuai.xi return 83;//
3734*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x05B6)//SNR>=32.8dB
3735*53ee8cc1Swenshuai.xi return 82;//
3736*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0643)//SNR>=32.4dB
3737*53ee8cc1Swenshuai.xi return 81;//
3738*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x06DD)//SNR>=32.0dB
3739*53ee8cc1Swenshuai.xi return 80;//
3740*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0787)//SNR>=31.6dB
3741*53ee8cc1Swenshuai.xi return 79;//
3742*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0841)//SNR>=31.2dB
3743*53ee8cc1Swenshuai.xi return 78;//
3744*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x090D)//SNR>=30.8dB
3745*53ee8cc1Swenshuai.xi return 77;//
3746*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x09EC)//SNR>=30.4dB
3747*53ee8cc1Swenshuai.xi return 76;//
3748*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0AE1)//SNR>=30.0dB
3749*53ee8cc1Swenshuai.xi return 75;//
3750*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0BEE)//SNR>=29.6dB
3751*53ee8cc1Swenshuai.xi return 74;//
3752*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0D15)//SNR>=29.2dB
3753*53ee8cc1Swenshuai.xi return 73;//
3754*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0E58)//SNR>=28.8dB
3755*53ee8cc1Swenshuai.xi return 72;//
3756*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0FBA)//SNR>=28.4dB
3757*53ee8cc1Swenshuai.xi return 71;//
3758*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x113E)//SNR>=28.0dB
3759*53ee8cc1Swenshuai.xi return 70;//
3760*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x12E8)//SNR>=27.6dB
3761*53ee8cc1Swenshuai.xi return 69;//
3762*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x14BB)//SNR>=27.2dB
3763*53ee8cc1Swenshuai.xi return 68;//
3764*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x16BB)//SNR>=26.8dB
3765*53ee8cc1Swenshuai.xi return 67;//
3766*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x18ED)//SNR>=26.4dB
3767*53ee8cc1Swenshuai.xi return 66;//
3768*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x1B54)//SNR>=26.0dB
3769*53ee8cc1Swenshuai.xi return 65;//
3770*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x1DF7)//SNR>=25.6dB
3771*53ee8cc1Swenshuai.xi return 64;//
3772*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x20DB)//SNR>=25.2dB
3773*53ee8cc1Swenshuai.xi return 63;//
3774*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x2407)//SNR>=24.8dB
3775*53ee8cc1Swenshuai.xi return 62;//
3776*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x2781)//SNR>=24.4dB
3777*53ee8cc1Swenshuai.xi return 61;//
3778*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x2B50)//SNR>=24.0dB
3779*53ee8cc1Swenshuai.xi return 60;//
3780*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x2F7E)//SNR>=23.6dB
3781*53ee8cc1Swenshuai.xi return 59;//
3782*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x3413)//SNR>=23.2dB
3783*53ee8cc1Swenshuai.xi return 58;//
3784*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x3919)//SNR>=22.8dB
3785*53ee8cc1Swenshuai.xi return 57;//
3786*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x3E9C)//SNR>=22.4dB
3787*53ee8cc1Swenshuai.xi return 56;//
3788*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x44A6)//SNR>=22.0dB
3789*53ee8cc1Swenshuai.xi return 55;//
3790*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x4B45)//SNR>=21.6dB
3791*53ee8cc1Swenshuai.xi return 54;//
3792*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x5289)//SNR>=21.2dB
3793*53ee8cc1Swenshuai.xi return 53;//
3794*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x5A7F)//SNR>=20.8dB
3795*53ee8cc1Swenshuai.xi return 52;//
3796*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x633A)//SNR>=20.4dB
3797*53ee8cc1Swenshuai.xi return 51;//
3798*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x6CCD)//SNR>=20.0dB
3799*53ee8cc1Swenshuai.xi return 50;//
3800*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x774C)//SNR>=19.6dB
3801*53ee8cc1Swenshuai.xi return 49;//
3802*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x82CE)//SNR>=19.2dB
3803*53ee8cc1Swenshuai.xi return 48;//
3804*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x8F6D)//SNR>=18.8dB
3805*53ee8cc1Swenshuai.xi return 47;//
3806*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x9D44)//SNR>=18.4dB
3807*53ee8cc1Swenshuai.xi return 46;//
3808*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xAC70)//SNR>=18.0dB
3809*53ee8cc1Swenshuai.xi return 45;//
3810*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xBD13)//SNR>=17.6dB
3811*53ee8cc1Swenshuai.xi return 44;//
3812*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xCF50)//SNR>=17.2dB
3813*53ee8cc1Swenshuai.xi return 43;//
3814*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xE351)//SNR>=16.8dB
3815*53ee8cc1Swenshuai.xi return 42;//
3816*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xF93F)//SNR>=16.4dB
3817*53ee8cc1Swenshuai.xi return 41;//
3818*53ee8cc1Swenshuai.xi else// if (u16NoisePower>=0xF93F)//SNR<16.4dB
3819*53ee8cc1Swenshuai.xi return 40;//
3820*53ee8cc1Swenshuai.xi }
3821*53ee8cc1Swenshuai.xi else //64QAM//SNR=10*log10((2688<<10)/noisepower)
3822*53ee8cc1Swenshuai.xi {
3823*53ee8cc1Swenshuai.xi if (!_HAL_INTERN_ATSC_QAM_Main_Lock())
3824*53ee8cc1Swenshuai.xi return 0;//SNR=0;
3825*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0113)//SNR>=40dB
3826*53ee8cc1Swenshuai.xi return 100;//
3827*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x012E)//SNR>=39.6dB
3828*53ee8cc1Swenshuai.xi return 99;//
3829*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x014B)//SNR>=39.2dB
3830*53ee8cc1Swenshuai.xi return 98;//
3831*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x016B)//SNR>=38.8dB
3832*53ee8cc1Swenshuai.xi return 97;//
3833*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x018E)//SNR>=38.4dB
3834*53ee8cc1Swenshuai.xi return 96;//
3835*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x01B4)//SNR>=38.0dB
3836*53ee8cc1Swenshuai.xi return 95;//
3837*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x01DE)//SNR>=37.6dB
3838*53ee8cc1Swenshuai.xi return 94;//
3839*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x020C)//SNR>=37.2dB
3840*53ee8cc1Swenshuai.xi return 93;//
3841*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x023F)//SNR>=36.8dB
3842*53ee8cc1Swenshuai.xi return 92;//
3843*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0277)//SNR>=36.4dB
3844*53ee8cc1Swenshuai.xi return 91;//
3845*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x02B3)//SNR>=36.0dB
3846*53ee8cc1Swenshuai.xi return 90;//
3847*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x02F6)//SNR>=35.6dB
3848*53ee8cc1Swenshuai.xi return 89;//
3849*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x033F)//SNR>=35.2dB
3850*53ee8cc1Swenshuai.xi return 88;//
3851*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x038F)//SNR>=34.8dB
3852*53ee8cc1Swenshuai.xi return 87;//
3853*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x03E7)//SNR>=34.4dB
3854*53ee8cc1Swenshuai.xi return 86;//
3855*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0448)//SNR>=34.0dB
3856*53ee8cc1Swenshuai.xi return 85;//
3857*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x04B2)//SNR>=33.6dB
3858*53ee8cc1Swenshuai.xi return 84;//
3859*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0525)//SNR>=33.2dB
3860*53ee8cc1Swenshuai.xi return 83;//
3861*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x05A5)//SNR>=32.8dB
3862*53ee8cc1Swenshuai.xi return 82;//
3863*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0630)//SNR>=32.4dB
3864*53ee8cc1Swenshuai.xi return 81;//
3865*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x06C9)//SNR>=32.0dB
3866*53ee8cc1Swenshuai.xi return 80;//
3867*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0770)//SNR>=31.6dB
3868*53ee8cc1Swenshuai.xi return 79;//
3869*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0828)//SNR>=31.2dB
3870*53ee8cc1Swenshuai.xi return 78;//
3871*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x08F1)//SNR>=30.8dB
3872*53ee8cc1Swenshuai.xi return 77;//
3873*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x09CE)//SNR>=30.4dB
3874*53ee8cc1Swenshuai.xi return 76;//
3875*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0AC1)//SNR>=30.0dB
3876*53ee8cc1Swenshuai.xi return 75;//
3877*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0BCA)//SNR>=29.6dB
3878*53ee8cc1Swenshuai.xi return 74;//
3879*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0CED)//SNR>=29.2dB
3880*53ee8cc1Swenshuai.xi return 73;//
3881*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0E2D)//SNR>=28.8dB
3882*53ee8cc1Swenshuai.xi return 72;//
3883*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x0F8B)//SNR>=28.4dB
3884*53ee8cc1Swenshuai.xi return 71;//
3885*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x110A)//SNR>=28.0dB
3886*53ee8cc1Swenshuai.xi return 70;//
3887*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x12AF)//SNR>=27.6dB
3888*53ee8cc1Swenshuai.xi return 69;//
3889*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x147D)//SNR>=27.2dB
3890*53ee8cc1Swenshuai.xi return 68;//
3891*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x1677)//SNR>=26.8dB
3892*53ee8cc1Swenshuai.xi return 67;//
3893*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x18A2)//SNR>=26.4dB
3894*53ee8cc1Swenshuai.xi return 66;//
3895*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x1B02)//SNR>=26.0dB
3896*53ee8cc1Swenshuai.xi return 65;//
3897*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x1D9D)//SNR>=25.6dB
3898*53ee8cc1Swenshuai.xi return 64;//
3899*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x2078)//SNR>=25.2dB
3900*53ee8cc1Swenshuai.xi return 63;//
3901*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x239A)//SNR>=24.8dB
3902*53ee8cc1Swenshuai.xi return 62;//
3903*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x270A)//SNR>=24.4dB
3904*53ee8cc1Swenshuai.xi return 61;//
3905*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x2ACE)//SNR>=24.0dB
3906*53ee8cc1Swenshuai.xi return 60;//
3907*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x2EEF)//SNR>=23.6dB
3908*53ee8cc1Swenshuai.xi return 59;//
3909*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x3376)//SNR>=23.2dB
3910*53ee8cc1Swenshuai.xi return 58;//
3911*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x386D)//SNR>=22.8dB
3912*53ee8cc1Swenshuai.xi return 57;//
3913*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x3DDF)//SNR>=22.4dB
3914*53ee8cc1Swenshuai.xi return 56;//
3915*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x43D7)//SNR>=22.0dB
3916*53ee8cc1Swenshuai.xi return 55;//
3917*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x4A63)//SNR>=21.6dB
3918*53ee8cc1Swenshuai.xi return 54;//
3919*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x5190)//SNR>=21.2dB
3920*53ee8cc1Swenshuai.xi return 53;//
3921*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x596E)//SNR>=20.8dB
3922*53ee8cc1Swenshuai.xi return 52;//
3923*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x620F)//SNR>=20.4dB
3924*53ee8cc1Swenshuai.xi return 51;//
3925*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x6B85)//SNR>=20.0dB
3926*53ee8cc1Swenshuai.xi return 50;//
3927*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x75E5)//SNR>=19.6dB
3928*53ee8cc1Swenshuai.xi return 49;//
3929*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x8144)//SNR>=19.2dB
3930*53ee8cc1Swenshuai.xi return 48;//
3931*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x8DBD)//SNR>=18.8dB
3932*53ee8cc1Swenshuai.xi return 47;//
3933*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0x9B6A)//SNR>=18.4dB
3934*53ee8cc1Swenshuai.xi return 46;//
3935*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xAA68)//SNR>=18.0dB
3936*53ee8cc1Swenshuai.xi return 45;//
3937*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xBAD9)//SNR>=17.6dB
3938*53ee8cc1Swenshuai.xi return 44;//
3939*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xCCE0)//SNR>=17.2dB
3940*53ee8cc1Swenshuai.xi return 43;//
3941*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xE0A4)//SNR>=16.8dB
3942*53ee8cc1Swenshuai.xi return 42;//
3943*53ee8cc1Swenshuai.xi else if (u16NoisePower<=0xF650)//SNR>=16.4dB
3944*53ee8cc1Swenshuai.xi return 41;//
3945*53ee8cc1Swenshuai.xi else// if (u16NoisePower>=0xF650)//SNR<16.4dB
3946*53ee8cc1Swenshuai.xi return 40;//
3947*53ee8cc1Swenshuai.xi }
3948*53ee8cc1Swenshuai.xi }
3949*53ee8cc1Swenshuai.xi }
3950*53ee8cc1Swenshuai.xi
3951*53ee8cc1Swenshuai.xi #ifdef UTPA2
_HAL_INTERN_ATSC_GET_QAM_SNR(MS_U16 * pNoisepower,MS_U32 * pSym_num)3952*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_GET_QAM_SNR(MS_U16 *pNoisepower, MS_U32 *pSym_num)
3953*53ee8cc1Swenshuai.xi #else
3954*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_GET_QAM_SNR(float *f_snr)
3955*53ee8cc1Swenshuai.xi #endif
3956*53ee8cc1Swenshuai.xi {
3957*53ee8cc1Swenshuai.xi MS_U8 u8Data = 0;
3958*53ee8cc1Swenshuai.xi MS_U16 noisepower = 0;
3959*53ee8cc1Swenshuai.xi
3960*53ee8cc1Swenshuai.xi if (_HAL_INTERN_ATSC_QAM_Main_Lock())
3961*53ee8cc1Swenshuai.xi {
3962*53ee8cc1Swenshuai.xi // latch
3963*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x2905, 0x80);
3964*53ee8cc1Swenshuai.xi // read noise power
3965*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2A45, &u8Data);
3966*53ee8cc1Swenshuai.xi noisepower = u8Data;
3967*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2A44, &u8Data);
3968*53ee8cc1Swenshuai.xi noisepower = (noisepower<<8)|u8Data;
3969*53ee8cc1Swenshuai.xi // unlatch
3970*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x2905, 0x00);
3971*53ee8cc1Swenshuai.xi
3972*53ee8cc1Swenshuai.xi if (noisepower == 0x0000)
3973*53ee8cc1Swenshuai.xi noisepower = 0x0001;
3974*53ee8cc1Swenshuai.xi
3975*53ee8cc1Swenshuai.xi #ifdef UTPA2
3976*53ee8cc1Swenshuai.xi *pNoisepower = noisepower;
3977*53ee8cc1Swenshuai.xi *pSym_num = 65536;
3978*53ee8cc1Swenshuai.xi #else
3979*53ee8cc1Swenshuai.xi #ifdef MSOS_TYPE_LINUX
3980*53ee8cc1Swenshuai.xi *f_snr = 10.0f*log10f(65536.0f/(float)noisepower);
3981*53ee8cc1Swenshuai.xi #else
3982*53ee8cc1Swenshuai.xi *f_snr = 10.0f*Log10Approx(65536.0f/(float)noisepower);
3983*53ee8cc1Swenshuai.xi #endif
3984*53ee8cc1Swenshuai.xi #endif
3985*53ee8cc1Swenshuai.xi }
3986*53ee8cc1Swenshuai.xi else
3987*53ee8cc1Swenshuai.xi {
3988*53ee8cc1Swenshuai.xi #ifdef UTPA2
3989*53ee8cc1Swenshuai.xi *pNoisepower = 0;
3990*53ee8cc1Swenshuai.xi *pSym_num = 0;
3991*53ee8cc1Swenshuai.xi #else
3992*53ee8cc1Swenshuai.xi *f_snr = 0.0f;
3993*53ee8cc1Swenshuai.xi #endif
3994*53ee8cc1Swenshuai.xi }
3995*53ee8cc1Swenshuai.xi
3996*53ee8cc1Swenshuai.xi return TRUE;
3997*53ee8cc1Swenshuai.xi }
3998*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_ReadPKTERR(void)3999*53ee8cc1Swenshuai.xi static MS_U16 _HAL_INTERN_ATSC_ReadPKTERR(void)
4000*53ee8cc1Swenshuai.xi {
4001*53ee8cc1Swenshuai.xi MS_U16 data = 0;
4002*53ee8cc1Swenshuai.xi MS_U8 reg = 0;
4003*53ee8cc1Swenshuai.xi DMD_ATSC_DEMOD_TYPE eMode;
4004*53ee8cc1Swenshuai.xi
4005*53ee8cc1Swenshuai.xi eMode = _HAL_INTERN_ATSC_Check8VSB64_256QAM();
4006*53ee8cc1Swenshuai.xi
4007*53ee8cc1Swenshuai.xi if (eMode == DMD_ATSC_DEMOD_ATSC_VSB)
4008*53ee8cc1Swenshuai.xi {
4009*53ee8cc1Swenshuai.xi if (!_HAL_INTERN_ATSC_Vsb_FEC_Lock()) data = 0;
4010*53ee8cc1Swenshuai.xi else
4011*53ee8cc1Swenshuai.xi {
4012*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION < DMD_ATSC_CHIP_A1)
4013*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2B20, ®);
4014*53ee8cc1Swenshuai.xi data = reg;
4015*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2B21, ®);
4016*53ee8cc1Swenshuai.xi data = (data << 8)|reg;
4017*53ee8cc1Swenshuai.xi #else
4018*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F67, ®);
4019*53ee8cc1Swenshuai.xi data = reg;
4020*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F66, ®);
4021*53ee8cc1Swenshuai.xi data = (data << 8)|reg;
4022*53ee8cc1Swenshuai.xi #endif
4023*53ee8cc1Swenshuai.xi }
4024*53ee8cc1Swenshuai.xi }
4025*53ee8cc1Swenshuai.xi else
4026*53ee8cc1Swenshuai.xi {
4027*53ee8cc1Swenshuai.xi if (!_HAL_INTERN_ATSC_QAM_Main_Lock()) data = 0;
4028*53ee8cc1Swenshuai.xi else
4029*53ee8cc1Swenshuai.xi {
4030*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
4031*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2166, ®);
4032*53ee8cc1Swenshuai.xi data = reg;
4033*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2167, ®);
4034*53ee8cc1Swenshuai.xi data = (data << 8)|reg;
4035*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION < DMD_ATSC_CHIP_A1)
4036*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2B20, ®);
4037*53ee8cc1Swenshuai.xi data = reg;
4038*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2B21, ®);
4039*53ee8cc1Swenshuai.xi data = (data << 8)|reg;
4040*53ee8cc1Swenshuai.xi #else
4041*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F66, ®);
4042*53ee8cc1Swenshuai.xi data = reg;
4043*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F67, ®);
4044*53ee8cc1Swenshuai.xi data = (data << 8)|reg;
4045*53ee8cc1Swenshuai.xi #endif
4046*53ee8cc1Swenshuai.xi }
4047*53ee8cc1Swenshuai.xi }
4048*53ee8cc1Swenshuai.xi
4049*53ee8cc1Swenshuai.xi return data;
4050*53ee8cc1Swenshuai.xi }
4051*53ee8cc1Swenshuai.xi
4052*53ee8cc1Swenshuai.xi #ifdef UTPA2
_HAL_INTERN_ATSC_ReadBER(MS_U32 * pBitErr,MS_U16 * pError_window,MS_U32 * pWin_unit)4053*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_ReadBER(MS_U32 *pBitErr, MS_U16 *pError_window, MS_U32 *pWin_unit)
4054*53ee8cc1Swenshuai.xi #else
4055*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_ReadBER(float *pBer)
4056*53ee8cc1Swenshuai.xi #endif
4057*53ee8cc1Swenshuai.xi {
4058*53ee8cc1Swenshuai.xi MS_BOOL status = true;
4059*53ee8cc1Swenshuai.xi MS_U8 reg = 0, reg_frz = 0;
4060*53ee8cc1Swenshuai.xi MS_U16 BitErrPeriod;
4061*53ee8cc1Swenshuai.xi MS_U32 BitErr;
4062*53ee8cc1Swenshuai.xi DMD_ATSC_DEMOD_TYPE eMode;
4063*53ee8cc1Swenshuai.xi
4064*53ee8cc1Swenshuai.xi eMode = _HAL_INTERN_ATSC_Check8VSB64_256QAM();
4065*53ee8cc1Swenshuai.xi
4066*53ee8cc1Swenshuai.xi if (eMode == DMD_ATSC_DEMOD_ATSC_VSB)
4067*53ee8cc1Swenshuai.xi {
4068*53ee8cc1Swenshuai.xi if (!_HAL_INTERN_ATSC_Vsb_FEC_Lock())
4069*53ee8cc1Swenshuai.xi {
4070*53ee8cc1Swenshuai.xi #ifdef UTPA2
4071*53ee8cc1Swenshuai.xi *pBitErr = 0;
4072*53ee8cc1Swenshuai.xi *pError_window = 0;
4073*53ee8cc1Swenshuai.xi *pWin_unit = 0;
4074*53ee8cc1Swenshuai.xi #else
4075*53ee8cc1Swenshuai.xi *pBer = 0;
4076*53ee8cc1Swenshuai.xi #endif
4077*53ee8cc1Swenshuai.xi }
4078*53ee8cc1Swenshuai.xi else
4079*53ee8cc1Swenshuai.xi {
4080*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F03, ®_frz);
4081*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x1F03, reg_frz|0x03);
4082*53ee8cc1Swenshuai.xi
4083*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F47, ®);
4084*53ee8cc1Swenshuai.xi BitErrPeriod = reg;
4085*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F46, ®);
4086*53ee8cc1Swenshuai.xi BitErrPeriod = (BitErrPeriod << 8)|reg;
4087*53ee8cc1Swenshuai.xi
4088*53ee8cc1Swenshuai.xi status &= _MBX_ReadReg(0x1F6d, ®);
4089*53ee8cc1Swenshuai.xi BitErr = reg;
4090*53ee8cc1Swenshuai.xi status &= _MBX_ReadReg(0x1F6c, ®);
4091*53ee8cc1Swenshuai.xi BitErr = (BitErr << 8)|reg;
4092*53ee8cc1Swenshuai.xi status &= _MBX_ReadReg(0x1F6b, ®);
4093*53ee8cc1Swenshuai.xi BitErr = (BitErr << 8)|reg;
4094*53ee8cc1Swenshuai.xi status &= _MBX_ReadReg(0x1F6a, ®);
4095*53ee8cc1Swenshuai.xi BitErr = (BitErr << 8)|reg;
4096*53ee8cc1Swenshuai.xi
4097*53ee8cc1Swenshuai.xi reg_frz=reg_frz&(~0x03);
4098*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x1F03, reg_frz);
4099*53ee8cc1Swenshuai.xi
4100*53ee8cc1Swenshuai.xi if (BitErrPeriod == 0 ) //protect 0
4101*53ee8cc1Swenshuai.xi BitErrPeriod = 1;
4102*53ee8cc1Swenshuai.xi
4103*53ee8cc1Swenshuai.xi #ifdef UTPA2
4104*53ee8cc1Swenshuai.xi *pBitErr = BitErr;
4105*53ee8cc1Swenshuai.xi *pError_window = BitErrPeriod;
4106*53ee8cc1Swenshuai.xi *pWin_unit = 8*187*128;
4107*53ee8cc1Swenshuai.xi #else
4108*53ee8cc1Swenshuai.xi if (BitErr <=0 )
4109*53ee8cc1Swenshuai.xi *pBer = 0.5f / ((float)BitErrPeriod*8*187*128);
4110*53ee8cc1Swenshuai.xi else
4111*53ee8cc1Swenshuai.xi *pBer = (float)BitErr / ((float)BitErrPeriod*8*187*128);
4112*53ee8cc1Swenshuai.xi #endif
4113*53ee8cc1Swenshuai.xi }
4114*53ee8cc1Swenshuai.xi }
4115*53ee8cc1Swenshuai.xi else
4116*53ee8cc1Swenshuai.xi {
4117*53ee8cc1Swenshuai.xi if (!_HAL_INTERN_ATSC_QAM_Main_Lock())
4118*53ee8cc1Swenshuai.xi {
4119*53ee8cc1Swenshuai.xi #ifdef UTPA2
4120*53ee8cc1Swenshuai.xi *pBitErr = 0;
4121*53ee8cc1Swenshuai.xi *pError_window = 0;
4122*53ee8cc1Swenshuai.xi *pWin_unit = 0;
4123*53ee8cc1Swenshuai.xi #else
4124*53ee8cc1Swenshuai.xi *pBer = 0;
4125*53ee8cc1Swenshuai.xi #endif
4126*53ee8cc1Swenshuai.xi }
4127*53ee8cc1Swenshuai.xi else
4128*53ee8cc1Swenshuai.xi {
4129*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
4130*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2103, ®_frz);
4131*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x2103, reg_frz|0x03);
4132*53ee8cc1Swenshuai.xi
4133*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2147, ®);
4134*53ee8cc1Swenshuai.xi BitErrPeriod = reg;
4135*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2146, ®);
4136*53ee8cc1Swenshuai.xi BitErrPeriod = (BitErrPeriod << 8)|reg;
4137*53ee8cc1Swenshuai.xi
4138*53ee8cc1Swenshuai.xi status &= _MBX_ReadReg(0x216d, ®);
4139*53ee8cc1Swenshuai.xi BitErr = reg;
4140*53ee8cc1Swenshuai.xi status &= _MBX_ReadReg(0x216c, ®);
4141*53ee8cc1Swenshuai.xi BitErr = (BitErr << 8)|reg;
4142*53ee8cc1Swenshuai.xi status &= _MBX_ReadReg(0x216b, ®);
4143*53ee8cc1Swenshuai.xi BitErr = (BitErr << 8)|reg;
4144*53ee8cc1Swenshuai.xi status &= _MBX_ReadReg(0x216a, ®);
4145*53ee8cc1Swenshuai.xi BitErr = (BitErr << 8)|reg;
4146*53ee8cc1Swenshuai.xi
4147*53ee8cc1Swenshuai.xi reg_frz=reg_frz&(~0x03);
4148*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x2103, reg_frz);
4149*53ee8cc1Swenshuai.xi
4150*53ee8cc1Swenshuai.xi if (BitErrPeriod == 0) //protect 0
4151*53ee8cc1Swenshuai.xi BitErrPeriod = 1;
4152*53ee8cc1Swenshuai.xi
4153*53ee8cc1Swenshuai.xi #ifdef UTPA2
4154*53ee8cc1Swenshuai.xi *pBitErr = BitErr;
4155*53ee8cc1Swenshuai.xi *pError_window = BitErrPeriod;
4156*53ee8cc1Swenshuai.xi *pWin_unit = 8*188*128;
4157*53ee8cc1Swenshuai.xi #else
4158*53ee8cc1Swenshuai.xi if (BitErr <=0)
4159*53ee8cc1Swenshuai.xi *pBer = 0.5f / ((float)BitErrPeriod*8*188*128);
4160*53ee8cc1Swenshuai.xi else
4161*53ee8cc1Swenshuai.xi *pBer = (float)BitErr / ((float)BitErrPeriod*8*188*128);
4162*53ee8cc1Swenshuai.xi #endif
4163*53ee8cc1Swenshuai.xi #else // #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
4164*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F03, ®_frz);
4165*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x1F03, reg_frz|0x03);
4166*53ee8cc1Swenshuai.xi
4167*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F47, ®);
4168*53ee8cc1Swenshuai.xi BitErrPeriod = reg;
4169*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1F46, ®);
4170*53ee8cc1Swenshuai.xi BitErrPeriod = (BitErrPeriod << 8)|reg;
4171*53ee8cc1Swenshuai.xi
4172*53ee8cc1Swenshuai.xi BitErr = reg;
4173*53ee8cc1Swenshuai.xi status &= _MBX_ReadReg(0x1F6c, ®);
4174*53ee8cc1Swenshuai.xi BitErr = (BitErr << 8)|reg;
4175*53ee8cc1Swenshuai.xi status &= _MBX_ReadReg(0x1F6b, ®);
4176*53ee8cc1Swenshuai.xi BitErr = (BitErr << 8)|reg;
4177*53ee8cc1Swenshuai.xi status &= _MBX_ReadReg(0x1F6a, ®);
4178*53ee8cc1Swenshuai.xi BitErr = (BitErr << 8)|reg;
4179*53ee8cc1Swenshuai.xi
4180*53ee8cc1Swenshuai.xi reg_frz=reg_frz&(~0x03);
4181*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x1F03, reg_frz);
4182*53ee8cc1Swenshuai.xi
4183*53ee8cc1Swenshuai.xi if (BitErrPeriod == 0 ) //protect 0
4184*53ee8cc1Swenshuai.xi BitErrPeriod = 1;
4185*53ee8cc1Swenshuai.xi
4186*53ee8cc1Swenshuai.xi #ifdef UTPA2
4187*53ee8cc1Swenshuai.xi *pBitErr = BitErr;
4188*53ee8cc1Swenshuai.xi *pError_window = BitErrPeriod;
4189*53ee8cc1Swenshuai.xi *pWin_unit = 7*122*128;
4190*53ee8cc1Swenshuai.xi #else
4191*53ee8cc1Swenshuai.xi if (BitErr <=0 )
4192*53ee8cc1Swenshuai.xi *pBer = 0.5f / ((float)BitErrPeriod*7*122*128);
4193*53ee8cc1Swenshuai.xi else
4194*53ee8cc1Swenshuai.xi *pBer = (float)BitErr / ((float)BitErrPeriod*7*122*128);
4195*53ee8cc1Swenshuai.xi #endif
4196*53ee8cc1Swenshuai.xi #endif // #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
4197*53ee8cc1Swenshuai.xi }
4198*53ee8cc1Swenshuai.xi }
4199*53ee8cc1Swenshuai.xi
4200*53ee8cc1Swenshuai.xi return status;
4201*53ee8cc1Swenshuai.xi }
4202*53ee8cc1Swenshuai.xi
4203*53ee8cc1Swenshuai.xi #ifdef UTPA2
_HAL_INTERN_ATSC_ReadFrequencyOffset(MS_U8 * pMode,MS_S16 * pFF,MS_S16 * pRate)4204*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_ReadFrequencyOffset(MS_U8 *pMode, MS_S16 *pFF, MS_S16 *pRate)
4205*53ee8cc1Swenshuai.xi #else
4206*53ee8cc1Swenshuai.xi static MS_S16 _HAL_INTERN_ATSC_ReadFrequencyOffset(void)
4207*53ee8cc1Swenshuai.xi #endif
4208*53ee8cc1Swenshuai.xi {
4209*53ee8cc1Swenshuai.xi DMD_ATSC_DEMOD_TYPE eMode;
4210*53ee8cc1Swenshuai.xi MS_U8 u8PTK_LOOP_FF_R3=0, u8PTK_LOOP_FF_R2=0;
4211*53ee8cc1Swenshuai.xi MS_U8 u8PTK_RATE_2=0;
4212*53ee8cc1Swenshuai.xi MS_U8 u8AD_CRL_LOOP_VALUE0=0, u8AD_CRL_LOOP_VALUE1=0;
4213*53ee8cc1Swenshuai.xi MS_U8 u8MIX_RATE_0=0, u8MIX_RATE_1=0, u8MIX_RATE_2=0;
4214*53ee8cc1Swenshuai.xi MS_S16 PTK_LOOP_FF;
4215*53ee8cc1Swenshuai.xi MS_S16 AD_CRL_LOOP_VALUE;
4216*53ee8cc1Swenshuai.xi MS_S16 MIX_RATE;
4217*53ee8cc1Swenshuai.xi #ifndef UTPA2
4218*53ee8cc1Swenshuai.xi MS_S16 FreqOffset = 0; //kHz
4219*53ee8cc1Swenshuai.xi #endif
4220*53ee8cc1Swenshuai.xi
4221*53ee8cc1Swenshuai.xi eMode = _HAL_INTERN_ATSC_Check8VSB64_256QAM();
4222*53ee8cc1Swenshuai.xi
4223*53ee8cc1Swenshuai.xi #ifdef UTPA2
4224*53ee8cc1Swenshuai.xi *pMode = eMode;
4225*53ee8cc1Swenshuai.xi #endif
4226*53ee8cc1Swenshuai.xi
4227*53ee8cc1Swenshuai.xi if (eMode == DMD_ATSC_DEMOD_ATSC_VSB) //VSB mode//
4228*53ee8cc1Swenshuai.xi {
4229*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
4230*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
4231*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x177E, 0x01);
4232*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x17E6, 0xff);
4233*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x177C, &u8PTK_LOOP_FF_R2);
4234*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x177D, &u8PTK_LOOP_FF_R3);
4235*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x177E, 0x00);
4236*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x17E6, 0xff);
4237*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG)
4238*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x047E, 0x01); //atsc_dmd
4239*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x04E6, 0xff);
4240*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x047C, &u8PTK_LOOP_FF_R2);
4241*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x047D, &u8PTK_LOOP_FF_R3);
4242*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x047E, 0x00);
4243*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x04E6, 0xff);
4244*53ee8cc1Swenshuai.xi #else
4245*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x297E, 0x01);
4246*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x29E6, 0xff);
4247*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x297C, &u8PTK_LOOP_FF_R2);
4248*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x297D, &u8PTK_LOOP_FF_R3);
4249*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x297E, 0x00);
4250*53ee8cc1Swenshuai.xi _MBX_WriteReg(0x29E6, 0xff);
4251*53ee8cc1Swenshuai.xi #endif
4252*53ee8cc1Swenshuai.xi
4253*53ee8cc1Swenshuai.xi PTK_LOOP_FF = (u8PTK_LOOP_FF_R3<<8) | u8PTK_LOOP_FF_R2;
4254*53ee8cc1Swenshuai.xi #ifdef UTPA2
4255*53ee8cc1Swenshuai.xi *pFF = PTK_LOOP_FF;
4256*53ee8cc1Swenshuai.xi #else
4257*53ee8cc1Swenshuai.xi FreqOffset = (float)(-PTK_LOOP_FF*0.04768);
4258*53ee8cc1Swenshuai.xi #endif
4259*53ee8cc1Swenshuai.xi
4260*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
4261*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
4262*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1782, &u8PTK_RATE_2);
4263*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG)
4264*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x0482, &u8PTK_RATE_2); //atsc_dmd
4265*53ee8cc1Swenshuai.xi #else
4266*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2982, &u8PTK_RATE_2);
4267*53ee8cc1Swenshuai.xi #endif
4268*53ee8cc1Swenshuai.xi
4269*53ee8cc1Swenshuai.xi #ifdef UTPA2
4270*53ee8cc1Swenshuai.xi *pRate = u8PTK_RATE_2;
4271*53ee8cc1Swenshuai.xi #else
4272*53ee8cc1Swenshuai.xi if (u8PTK_RATE_2 == 0x07)
4273*53ee8cc1Swenshuai.xi FreqOffset = FreqOffset-100;
4274*53ee8cc1Swenshuai.xi else if (u8PTK_RATE_2 == 0x08)
4275*53ee8cc1Swenshuai.xi FreqOffset = FreqOffset-500;
4276*53ee8cc1Swenshuai.xi #endif
4277*53ee8cc1Swenshuai.xi }
4278*53ee8cc1Swenshuai.xi else //QAM MODE
4279*53ee8cc1Swenshuai.xi {
4280*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
4281*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2A40, &u8AD_CRL_LOOP_VALUE0);
4282*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2A41, &u8AD_CRL_LOOP_VALUE1);
4283*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2758, &u8MIX_RATE_0);
4284*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2759, &u8MIX_RATE_1);
4285*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x275A, &u8MIX_RATE_2);
4286*53ee8cc1Swenshuai.xi
4287*53ee8cc1Swenshuai.xi AD_CRL_LOOP_VALUE = (u8AD_CRL_LOOP_VALUE1 << 8) | u8AD_CRL_LOOP_VALUE0;
4288*53ee8cc1Swenshuai.xi MIX_RATE = ((u8MIX_RATE_2 << 16) | (u8MIX_RATE_1 << 8) | u8MIX_RATE_0) >> 4;
4289*53ee8cc1Swenshuai.xi
4290*53ee8cc1Swenshuai.xi #ifdef UTPA2
4291*53ee8cc1Swenshuai.xi *pMode |= 0x80;
4292*53ee8cc1Swenshuai.xi *pFF = AD_CRL_LOOP_VALUE;
4293*53ee8cc1Swenshuai.xi *pRate = MIX_RATE;
4294*53ee8cc1Swenshuai.xi #else
4295*53ee8cc1Swenshuai.xi if (eMode == DMD_ATSC_DEMOD_ATSC_256QAM) //256QAM//
4296*53ee8cc1Swenshuai.xi {
4297*53ee8cc1Swenshuai.xi FreqOffset = (float)(AD_CRL_LOOP_VALUE*0.0000199); //5.360537E6/2^28*1000
4298*53ee8cc1Swenshuai.xi }
4299*53ee8cc1Swenshuai.xi else if (eMode == DMD_ATSC_DEMOD_ATSC_64QAM)//64QAM//
4300*53ee8cc1Swenshuai.xi {
4301*53ee8cc1Swenshuai.xi FreqOffset = (float)(AD_CRL_LOOP_VALUE*0.0000188); //5.056941E6/2^21*1000
4302*53ee8cc1Swenshuai.xi }
4303*53ee8cc1Swenshuai.xi
4304*53ee8cc1Swenshuai.xi FreqOffset = FreqOffset+(float)(MIX_RATE-0x3A07)/330.13018; //(0.001/25.41*2^27/16)???
4305*53ee8cc1Swenshuai.xi #endif
4306*53ee8cc1Swenshuai.xi #else // #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
4307*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
4308*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
4309*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1A04, &u8AD_CRL_LOOP_VALUE0);
4310*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1A05, &u8AD_CRL_LOOP_VALUE1);
4311*53ee8cc1Swenshuai.xi #else
4312*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2C04, &u8AD_CRL_LOOP_VALUE0);
4313*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2C05, &u8AD_CRL_LOOP_VALUE1);
4314*53ee8cc1Swenshuai.xi #endif
4315*53ee8cc1Swenshuai.xi
4316*53ee8cc1Swenshuai.xi AD_CRL_LOOP_VALUE = (u8AD_CRL_LOOP_VALUE1<<8) | u8AD_CRL_LOOP_VALUE0;
4317*53ee8cc1Swenshuai.xi
4318*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MASERATI || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MACAN \
4319*53ee8cc1Swenshuai.xi || DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MAXIM)
4320*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1704, &u8MIX_RATE_0);
4321*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1705, &u8MIX_RATE_1);
4322*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x1706, &u8MIX_RATE_2);
4323*53ee8cc1Swenshuai.xi #elif (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_MUSTANG)
4324*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x0404, &u8MIX_RATE_0); //atsc_dmd
4325*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x0405, &u8MIX_RATE_1);
4326*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x0406, &u8MIX_RATE_2);
4327*53ee8cc1Swenshuai.xi #else
4328*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2904, &u8MIX_RATE_0);
4329*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2905, &u8MIX_RATE_1);
4330*53ee8cc1Swenshuai.xi _MBX_ReadReg(0x2906, &u8MIX_RATE_2);
4331*53ee8cc1Swenshuai.xi #endif
4332*53ee8cc1Swenshuai.xi
4333*53ee8cc1Swenshuai.xi MIX_RATE = (u8MIX_RATE_2<<12)|(u8MIX_RATE_1<<4)|(u8MIX_RATE_0>>4);
4334*53ee8cc1Swenshuai.xi
4335*53ee8cc1Swenshuai.xi #ifdef UTPA2
4336*53ee8cc1Swenshuai.xi *pFF = AD_CRL_LOOP_VALUE;
4337*53ee8cc1Swenshuai.xi *pRate = MIX_RATE;
4338*53ee8cc1Swenshuai.xi #else
4339*53ee8cc1Swenshuai.xi if (eMode == DMD_ATSC_DEMOD_ATSC_256QAM) //256QAM//
4340*53ee8cc1Swenshuai.xi {
4341*53ee8cc1Swenshuai.xi FreqOffset = (float)(AD_CRL_LOOP_VALUE*0.0025561); //5.360537E6/2^21*1000
4342*53ee8cc1Swenshuai.xi }
4343*53ee8cc1Swenshuai.xi else if (eMode == DMD_ATSC_DEMOD_ATSC_64QAM)//64QAM//
4344*53ee8cc1Swenshuai.xi {
4345*53ee8cc1Swenshuai.xi FreqOffset = (float)(AD_CRL_LOOP_VALUE*0.00241134); //5.056941E6/2^21*1000
4346*53ee8cc1Swenshuai.xi }
4347*53ee8cc1Swenshuai.xi
4348*53ee8cc1Swenshuai.xi FreqOffset = FreqOffset+(float)(MIX_RATE-0x3D70)/2.62144; //(0.001/25*2^20/16)
4349*53ee8cc1Swenshuai.xi #endif
4350*53ee8cc1Swenshuai.xi #endif // #if (DMD_ATSC_CHIP_VERSION >= DMD_ATSC_CHIP_K3)
4351*53ee8cc1Swenshuai.xi }
4352*53ee8cc1Swenshuai.xi
4353*53ee8cc1Swenshuai.xi #ifdef UTPA2
4354*53ee8cc1Swenshuai.xi return TRUE;
4355*53ee8cc1Swenshuai.xi #else
4356*53ee8cc1Swenshuai.xi return FreqOffset;
4357*53ee8cc1Swenshuai.xi #endif
4358*53ee8cc1Swenshuai.xi }
4359*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_GetReg(MS_U16 u16Addr,MS_U8 * pu8Data)4360*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_GetReg(MS_U16 u16Addr, MS_U8 *pu8Data)
4361*53ee8cc1Swenshuai.xi {
4362*53ee8cc1Swenshuai.xi return _MBX_ReadReg(u16Addr, pu8Data);
4363*53ee8cc1Swenshuai.xi }
4364*53ee8cc1Swenshuai.xi
_HAL_INTERN_ATSC_SetReg(MS_U16 u16Addr,MS_U8 u8Data)4365*53ee8cc1Swenshuai.xi static MS_BOOL _HAL_INTERN_ATSC_SetReg(MS_U16 u16Addr, MS_U8 u8Data)
4366*53ee8cc1Swenshuai.xi {
4367*53ee8cc1Swenshuai.xi return _MBX_WriteReg(u16Addr, u8Data);
4368*53ee8cc1Swenshuai.xi }
4369*53ee8cc1Swenshuai.xi
4370*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
4371*53ee8cc1Swenshuai.xi // Global Functions
4372*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
HAL_INTERN_ATSC_IOCTL_CMD(DMD_ATSC_HAL_COMMAND eCmd,void * pArgs)4373*53ee8cc1Swenshuai.xi MS_BOOL HAL_INTERN_ATSC_IOCTL_CMD(DMD_ATSC_HAL_COMMAND eCmd, void *pArgs)
4374*53ee8cc1Swenshuai.xi {
4375*53ee8cc1Swenshuai.xi MS_BOOL bResult = TRUE;
4376*53ee8cc1Swenshuai.xi
4377*53ee8cc1Swenshuai.xi #if (DMD_ATSC_CHIP_VERSION == DMD_ATSC_CHIP_K3)
4378*53ee8cc1Swenshuai.xi _SEL_DMD();
4379*53ee8cc1Swenshuai.xi #endif
4380*53ee8cc1Swenshuai.xi
4381*53ee8cc1Swenshuai.xi switch(eCmd)
4382*53ee8cc1Swenshuai.xi {
4383*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_Exit:
4384*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_Exit();
4385*53ee8cc1Swenshuai.xi break;
4386*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_InitClk:
4387*53ee8cc1Swenshuai.xi _HAL_INTERN_ATSC_InitClk(false);
4388*53ee8cc1Swenshuai.xi break;
4389*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_Download:
4390*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_Download();
4391*53ee8cc1Swenshuai.xi break;
4392*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_FWVERSION:
4393*53ee8cc1Swenshuai.xi _HAL_INTERN_ATSC_FWVERSION();
4394*53ee8cc1Swenshuai.xi break;
4395*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_SoftReset:
4396*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_SoftReset();
4397*53ee8cc1Swenshuai.xi break;
4398*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_SetVsbMode:
4399*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_SetVsbMode();
4400*53ee8cc1Swenshuai.xi break;
4401*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_Set64QamMode:
4402*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_Set64QamMode();
4403*53ee8cc1Swenshuai.xi break;
4404*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_Set256QamMode:
4405*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_Set256QamMode();
4406*53ee8cc1Swenshuai.xi break;
4407*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_SetModeClean:
4408*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_SetModeClean();
4409*53ee8cc1Swenshuai.xi break;
4410*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_Set_QAM_SR:
4411*53ee8cc1Swenshuai.xi break;
4412*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_Active:
4413*53ee8cc1Swenshuai.xi break;
4414*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_Check8VSB64_256QAM:
4415*53ee8cc1Swenshuai.xi *((DMD_ATSC_DEMOD_TYPE *)pArgs) = _HAL_INTERN_ATSC_Check8VSB64_256QAM();
4416*53ee8cc1Swenshuai.xi break;
4417*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_AGCLock:
4418*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_Vsb_QAM_AGCLock();
4419*53ee8cc1Swenshuai.xi break;
4420*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_Vsb_PreLock:
4421*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_Vsb_PreLock();
4422*53ee8cc1Swenshuai.xi break;
4423*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_Vsb_FSync_Lock:
4424*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_Vsb_FSync_Lock();
4425*53ee8cc1Swenshuai.xi break;
4426*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_Vsb_CE_Lock:
4427*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_Vsb_CE_Lock();
4428*53ee8cc1Swenshuai.xi break;
4429*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_Vsb_FEC_Lock:
4430*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_Vsb_FEC_Lock();
4431*53ee8cc1Swenshuai.xi break;
4432*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_QAM_PreLock:
4433*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_QAM_PreLock();
4434*53ee8cc1Swenshuai.xi break;
4435*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_QAM_Main_Lock:
4436*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_QAM_Main_Lock();
4437*53ee8cc1Swenshuai.xi break;
4438*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_ReadIFAGC:
4439*53ee8cc1Swenshuai.xi *((MS_U16 *)pArgs) = _HAL_INTERN_ATSC_ReadIFAGC();
4440*53ee8cc1Swenshuai.xi break;
4441*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_CheckSignalCondition:
4442*53ee8cc1Swenshuai.xi _HAL_INTERN_ATSC_CheckSignalCondition((DMD_ATSC_SIGNAL_CONDITION *)pArgs);
4443*53ee8cc1Swenshuai.xi break;
4444*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_ReadSNRPercentage:
4445*53ee8cc1Swenshuai.xi *((MS_U8 *)pArgs) = _HAL_INTERN_ATSC_ReadSNRPercentage();
4446*53ee8cc1Swenshuai.xi break;
4447*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_GET_QAM_SNR:
4448*53ee8cc1Swenshuai.xi #ifdef UTPA2
4449*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_GET_QAM_SNR(&((*((DMD_ATSC_SNR_DATA *)pArgs)).noisepower), &((*((DMD_ATSC_SNR_DATA *)pArgs)).sym_num));
4450*53ee8cc1Swenshuai.xi #else
4451*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_GET_QAM_SNR((float *)pArgs);
4452*53ee8cc1Swenshuai.xi #endif
4453*53ee8cc1Swenshuai.xi break;
4454*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_ReadPKTERR:
4455*53ee8cc1Swenshuai.xi *((MS_U16 *)pArgs) = _HAL_INTERN_ATSC_ReadPKTERR();
4456*53ee8cc1Swenshuai.xi break;
4457*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_GetPreViterbiBer:
4458*53ee8cc1Swenshuai.xi break;
4459*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_GetPostViterbiBer:
4460*53ee8cc1Swenshuai.xi #ifdef UTPA2
4461*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_ReadBER(&((*((DMD_ATSC_BER_DATA *)pArgs)).BitErr), &((*((DMD_ATSC_BER_DATA *)pArgs)).Error_window), &((*((DMD_ATSC_BER_DATA *)pArgs)).Win_unit));
4462*53ee8cc1Swenshuai.xi #else
4463*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_ReadBER((float *)pArgs);
4464*53ee8cc1Swenshuai.xi #endif
4465*53ee8cc1Swenshuai.xi break;
4466*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_ReadFrequencyOffset:
4467*53ee8cc1Swenshuai.xi #ifdef UTPA2
4468*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_ReadFrequencyOffset(&((*((DMD_ATSC_CFO_DATA *)pArgs)).Mode), &((*((DMD_ATSC_CFO_DATA *)pArgs)).FF), &((*((DMD_ATSC_CFO_DATA *)pArgs)).Rate));
4469*53ee8cc1Swenshuai.xi #else
4470*53ee8cc1Swenshuai.xi *((MS_S16 *)pArgs) = _HAL_INTERN_ATSC_ReadFrequencyOffset();
4471*53ee8cc1Swenshuai.xi #endif
4472*53ee8cc1Swenshuai.xi break;
4473*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_TS_INTERFACE_CONFIG:
4474*53ee8cc1Swenshuai.xi break;
4475*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_IIC_Bypass_Mode:
4476*53ee8cc1Swenshuai.xi break;
4477*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_SSPI_TO_GPIO:
4478*53ee8cc1Swenshuai.xi break;
4479*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_GPIO_GET_LEVEL:
4480*53ee8cc1Swenshuai.xi break;
4481*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_GPIO_SET_LEVEL:
4482*53ee8cc1Swenshuai.xi break;
4483*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_GPIO_OUT_ENABLE:
4484*53ee8cc1Swenshuai.xi break;
4485*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_GET_REG:
4486*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_GetReg((*((DMD_ATSC_REG_DATA *)pArgs)).u16Addr, &((*((DMD_ATSC_REG_DATA *)pArgs)).u8Data));
4487*53ee8cc1Swenshuai.xi break;
4488*53ee8cc1Swenshuai.xi case DMD_ATSC_HAL_CMD_SET_REG:
4489*53ee8cc1Swenshuai.xi bResult = _HAL_INTERN_ATSC_SetReg((*((DMD_ATSC_REG_DATA *)pArgs)).u16Addr, (*((DMD_ATSC_REG_DATA *)pArgs)).u8Data);
4490*53ee8cc1Swenshuai.xi break;
4491*53ee8cc1Swenshuai.xi default:
4492*53ee8cc1Swenshuai.xi break;
4493*53ee8cc1Swenshuai.xi }
4494*53ee8cc1Swenshuai.xi
4495*53ee8cc1Swenshuai.xi return bResult;
4496*53ee8cc1Swenshuai.xi }
4497*53ee8cc1Swenshuai.xi
MDrv_DMD_ATSC_Initial_Hal_Interface(void)4498*53ee8cc1Swenshuai.xi MS_BOOL MDrv_DMD_ATSC_Initial_Hal_Interface(void)
4499*53ee8cc1Swenshuai.xi {
4500*53ee8cc1Swenshuai.xi return TRUE;
4501*53ee8cc1Swenshuai.xi }
4502