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) 2008-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") 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 #ifndef _HALVIF_C_
95*53ee8cc1Swenshuai.xi #define _HALVIF_C_
96*53ee8cc1Swenshuai.xi
97*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
98*53ee8cc1Swenshuai.xi // Include Files
99*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
100*53ee8cc1Swenshuai.xi // Common Definition
101*53ee8cc1Swenshuai.xi #include "MsCommon.h"
102*53ee8cc1Swenshuai.xi #include "MsIRQ.h"
103*53ee8cc1Swenshuai.xi #include "MsOS.h"
104*53ee8cc1Swenshuai.xi #include "MsTypes.h"
105*53ee8cc1Swenshuai.xi #include "drvMMIO.h"
106*53ee8cc1Swenshuai.xi
107*53ee8cc1Swenshuai.xi // Internal Definition
108*53ee8cc1Swenshuai.xi #include "regVIF.h"
109*53ee8cc1Swenshuai.xi #include "VIF.h"
110*53ee8cc1Swenshuai.xi #include "halVIF.h"
111*53ee8cc1Swenshuai.xi #include "halVIF_Customer.h"
112*53ee8cc1Swenshuai.xi #include "asmCPU.h"
113*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
114*53ee8cc1Swenshuai.xi // Driver Compiler Options
115*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
116*53ee8cc1Swenshuai.xi #define HALVIFDBG(x) //x
117*53ee8cc1Swenshuai.xi #define HALVIFDBG_BIT (DBB1_REG_BASE+0x06) // Bit 4~7
118*53ee8cc1Swenshuai.xi #define HALVIFDBG1_BIT (DBB1_REG_BASE+0x04) // Bit 1
119*53ee8cc1Swenshuai.xi #define HALVIFDBG2_BIT (DBB1_REG_BASE+0xF6) // Bit 0~1
120*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
121*53ee8cc1Swenshuai.xi // extern function
122*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
123*53ee8cc1Swenshuai.xi #define HAL_VIF_Delay1ms(x) MAsm_CPU_DelayMs(x)
124*53ee8cc1Swenshuai.xi #define HAL_VIF_Delay1us(x) MAsm_CPU_DelayUs(x)
125*53ee8cc1Swenshuai.xi #define HAL_VIF_GetSystemTime() MsOS_GetSystemTime()
126*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
127*53ee8cc1Swenshuai.xi // Local Defines
128*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
129*53ee8cc1Swenshuai.xi #define __CHIP_VERSION 0x1ECF
130*53ee8cc1Swenshuai.xi
131*53ee8cc1Swenshuai.xi #ifndef _END_OF_TBL_
132*53ee8cc1Swenshuai.xi #define _END_OF_TBL_ 0xFFFF
133*53ee8cc1Swenshuai.xi #endif
134*53ee8cc1Swenshuai.xi
135*53ee8cc1Swenshuai.xi #define msRead2Bytes(x) RIU_Read2Byte(x)
136*53ee8cc1Swenshuai.xi #define msReadByte(x) RIU_ReadByte(x)
137*53ee8cc1Swenshuai.xi
138*53ee8cc1Swenshuai.xi // Base address should be initial.
139*53ee8cc1Swenshuai.xi #if defined (__aeon__) // Non-OS
140*53ee8cc1Swenshuai.xi #define BASEADDR_RIU 0xA0000000UL
141*53ee8cc1Swenshuai.xi #else // ecos
142*53ee8cc1Swenshuai.xi #define BASEADDR_RIU 0xBF800000UL
143*53ee8cc1Swenshuai.xi #endif
144*53ee8cc1Swenshuai.xi
145*53ee8cc1Swenshuai.xi #define RIU_MACRO_START do {
146*53ee8cc1Swenshuai.xi #define RIU_MACRO_END } while (0)
147*53ee8cc1Swenshuai.xi
148*53ee8cc1Swenshuai.xi // Address bus of RIU is 16 bits.
149*53ee8cc1Swenshuai.xi #define RIU_READ_BYTE(addr) ( READ_BYTE( _hal_VIF.virtVIFBaseAddr + (addr) ) )
150*53ee8cc1Swenshuai.xi #define RIU_READ_2BYTE(addr) ( READ_WORD( _hal_VIF.virtVIFBaseAddr + (addr) ) )
151*53ee8cc1Swenshuai.xi #define RIU_WRITE_BYTE(addr, val) { WRITE_BYTE( _hal_VIF.virtVIFBaseAddr + (addr), val) }
152*53ee8cc1Swenshuai.xi #define RIU_WRITE_2BYTE(addr, val) { WRITE_WORD( _hal_VIF.virtVIFBaseAddr + (addr), val) }
153*53ee8cc1Swenshuai.xi
154*53ee8cc1Swenshuai.xi // Standard Form
155*53ee8cc1Swenshuai.xi
156*53ee8cc1Swenshuai.xi #define RIU_ReadByte( u32Reg ) RIU_READ_BYTE(((u32Reg) << 1) - ((u32Reg) & 1))
157*53ee8cc1Swenshuai.xi
158*53ee8cc1Swenshuai.xi #define RIU_Read2Byte( u32Reg ) (RIU_READ_2BYTE((u32Reg)<<1))
159*53ee8cc1Swenshuai.xi
160*53ee8cc1Swenshuai.xi #define RIU_ReadRegBit( u32Reg, u8Mask ) (RIU_READ_BYTE(((u32Reg)<<1) - ((u32Reg) & 1)) & (u8Mask))
161*53ee8cc1Swenshuai.xi
162*53ee8cc1Swenshuai.xi #define RIU_WriteRegBit( u32Reg, bEnable, u8Mask ) \
163*53ee8cc1Swenshuai.xi RIU_MACRO_START \
164*53ee8cc1Swenshuai.xi RIU_WRITE_BYTE( (((u32Reg) <<1) - ((u32Reg) & 1)) , (bEnable) ? (RIU_READ_BYTE( (((u32Reg) <<1) - ((u32Reg) & 1)) ) | (u8Mask)) : \
165*53ee8cc1Swenshuai.xi (RIU_READ_BYTE( (((u32Reg) <<1) - ((u32Reg) & 1)) ) & ~(u8Mask))); \
166*53ee8cc1Swenshuai.xi RIU_MACRO_END
167*53ee8cc1Swenshuai.xi
168*53ee8cc1Swenshuai.xi #define RIU_WriteByte( u32Reg, u8Val ) \
169*53ee8cc1Swenshuai.xi RIU_MACRO_START \
170*53ee8cc1Swenshuai.xi RIU_WRITE_BYTE(((u32Reg) << 1) - ((u32Reg) & 1), u8Val); \
171*53ee8cc1Swenshuai.xi RIU_MACRO_END
172*53ee8cc1Swenshuai.xi
173*53ee8cc1Swenshuai.xi #define RIU_Write2Byte( u32Reg, u16Val ) \
174*53ee8cc1Swenshuai.xi RIU_MACRO_START \
175*53ee8cc1Swenshuai.xi if ( ((u32Reg) & 0x01) ) \
176*53ee8cc1Swenshuai.xi { \
177*53ee8cc1Swenshuai.xi RIU_WRITE_BYTE(((u32Reg) << 1) - 1, (MS_U8)((u16Val))); \
178*53ee8cc1Swenshuai.xi RIU_WRITE_BYTE(((u32Reg) + 1) << 1, (MS_U8)((u16Val) >> 8)); \
179*53ee8cc1Swenshuai.xi } \
180*53ee8cc1Swenshuai.xi else \
181*53ee8cc1Swenshuai.xi { \
182*53ee8cc1Swenshuai.xi RIU_WRITE_2BYTE( ((u32Reg)<<1) , u16Val); \
183*53ee8cc1Swenshuai.xi } \
184*53ee8cc1Swenshuai.xi RIU_MACRO_END
185*53ee8cc1Swenshuai.xi
186*53ee8cc1Swenshuai.xi #define RIU_WriteByteMask( u32Reg, u8Val, u8Msk ) \
187*53ee8cc1Swenshuai.xi RIU_MACRO_START \
188*53ee8cc1Swenshuai.xi RIU_WRITE_BYTE( (((u32Reg) <<1) - ((u32Reg) & 1)), (RIU_READ_BYTE((((u32Reg) <<1) - ((u32Reg) & 1))) & ~(u8Msk)) | ((u8Val) & (u8Msk))); \
189*53ee8cc1Swenshuai.xi RIU_MACRO_END
190*53ee8cc1Swenshuai.xi
191*53ee8cc1Swenshuai.xi // Address bus of RIU is 16 bits for PM bank.
192*53ee8cc1Swenshuai.xi #define PM_RIU_READ_BYTE(addr) ( READ_BYTE(virtPMBank + (addr) ) )
193*53ee8cc1Swenshuai.xi #define PM_RIU_READ_2BYTE(addr) ( READ_WORD(virtPMBank+ (addr) ) )
194*53ee8cc1Swenshuai.xi #define PM_RIU_WRITE_BYTE(addr, val) { WRITE_BYTE(virtPMBank + (addr), val) }
195*53ee8cc1Swenshuai.xi #define PM_RIU_WRITE_2BYTE(addr, val) { WRITE_WORD(virtPMBank + (addr), val) }
196*53ee8cc1Swenshuai.xi
197*53ee8cc1Swenshuai.xi // Standard Form for PM bank
198*53ee8cc1Swenshuai.xi #define PM_RIU_ReadByte( u32Reg ) PM_RIU_READ_BYTE(((u32Reg) << 1) - ((u32Reg) & 1))
199*53ee8cc1Swenshuai.xi
200*53ee8cc1Swenshuai.xi #define PM_RIU_Read2Byte( u32Reg ) (PM_RIU_READ_2BYTE((u32Reg)<<1))
201*53ee8cc1Swenshuai.xi
202*53ee8cc1Swenshuai.xi #define PM_RIU_ReadRegBit( u32Reg, u8Mask ) (PM_RIU_READ_BYTE(((u32Reg)<<1) - ((u32Reg) & 1)) & (u8Mask))
203*53ee8cc1Swenshuai.xi
204*53ee8cc1Swenshuai.xi #define PM_RIU_WriteRegBit( u32Reg, bEnable, u8Mask ) \
205*53ee8cc1Swenshuai.xi RIU_MACRO_START \
206*53ee8cc1Swenshuai.xi PM_RIU_WRITE_BYTE( (((u32Reg) <<1) - ((u32Reg) & 1)) , (bEnable) ? (PM_RIU_READ_BYTE( (((u32Reg) <<1) - ((u32Reg) & 1)) ) | (u8Mask)) : \
207*53ee8cc1Swenshuai.xi (PM_RIU_READ_BYTE( (((u32Reg) <<1) - ((u32Reg) & 1)) ) & ~(u8Mask))); \
208*53ee8cc1Swenshuai.xi RIU_MACRO_END
209*53ee8cc1Swenshuai.xi
210*53ee8cc1Swenshuai.xi #define PM_RIU_WriteByte( u32Reg, u8Val ) \
211*53ee8cc1Swenshuai.xi RIU_MACRO_START \
212*53ee8cc1Swenshuai.xi PM_RIU_WRITE_BYTE(((u32Reg) << 1) - ((u32Reg) & 1), u8Val); \
213*53ee8cc1Swenshuai.xi RIU_MACRO_END
214*53ee8cc1Swenshuai.xi
215*53ee8cc1Swenshuai.xi #define PM_RIU_Write2Byte( u32Reg, u16Val ) \
216*53ee8cc1Swenshuai.xi RIU_MACRO_START \
217*53ee8cc1Swenshuai.xi if ( ((u32Reg) & 0x01) ) \
218*53ee8cc1Swenshuai.xi { \
219*53ee8cc1Swenshuai.xi PM_RIU_WRITE_BYTE(((u32Reg) << 1) - 1, (MS_U8)((u16Val))); \
220*53ee8cc1Swenshuai.xi PM_RIU_WRITE_BYTE(((u32Reg) + 1) << 1, (MS_U8)((u16Val) >> 8)); \
221*53ee8cc1Swenshuai.xi } \
222*53ee8cc1Swenshuai.xi else \
223*53ee8cc1Swenshuai.xi { \
224*53ee8cc1Swenshuai.xi PM_RIU_WRITE_2BYTE( ((u32Reg)<<1) , u16Val); \
225*53ee8cc1Swenshuai.xi } \
226*53ee8cc1Swenshuai.xi RIU_MACRO_END
227*53ee8cc1Swenshuai.xi
228*53ee8cc1Swenshuai.xi #define PM_RIU_WriteByteMask( u32Reg, u8Val, u8Msk ) \
229*53ee8cc1Swenshuai.xi RIU_MACRO_START \
230*53ee8cc1Swenshuai.xi PM_RIU_WRITE_BYTE( (((u32Reg) <<1) - ((u32Reg) & 1)), (PM_RIU_READ_BYTE((((u32Reg) <<1) - ((u32Reg) & 1))) & ~(u8Msk)) | ((u8Val) & (u8Msk))); \
231*53ee8cc1Swenshuai.xi RIU_MACRO_END
232*53ee8cc1Swenshuai.xi
233*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
234*53ee8cc1Swenshuai.xi // Local Structures
235*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
236*53ee8cc1Swenshuai.xi typedef struct
237*53ee8cc1Swenshuai.xi {
238*53ee8cc1Swenshuai.xi MS_VIRT virtVIFBaseAddr;
239*53ee8cc1Swenshuai.xi BOOL bBaseAddrInitialized;
240*53ee8cc1Swenshuai.xi } hal_VIF_t;
241*53ee8cc1Swenshuai.xi
242*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
243*53ee8cc1Swenshuai.xi // Local Variables
244*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
245*53ee8cc1Swenshuai.xi static hal_VIF_t _hal_VIF ={BASEADDR_RIU, 0};
246*53ee8cc1Swenshuai.xi extern VIFInitialIn VIFInitialIn_inst;
247*53ee8cc1Swenshuai.xi //extern VIFSOS33 sVIFSOS33;
248*53ee8cc1Swenshuai.xi extern BOOL bEnableUsrSteadyAgcK;
249*53ee8cc1Swenshuai.xi extern U8 u8UsrSteadyAgcK;
250*53ee8cc1Swenshuai.xi extern BOOL bEnableUsrNonSteadyAgcK;
251*53ee8cc1Swenshuai.xi extern U8 u8UsrNonSteadyAgcK;
252*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////
253*53ee8cc1Swenshuai.xi BOOL AGC_Change_Index; //for Serious ACI Parameter
254*53ee8cc1Swenshuai.xi U16 SeriousACI_Index = 0;
255*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////
256*53ee8cc1Swenshuai.xi BYTE g_ucVifStatusStep;
257*53ee8cc1Swenshuai.xi BOOL g_bCheckIFFreq; // 0: 38.9 MHz (PAL/SECAM L); 1: 33.9 MHz (SECAM L')
258*53ee8cc1Swenshuai.xi BOOL g_VifHWKpKiFlag;
259*53ee8cc1Swenshuai.xi BYTE g_VifCrKp;
260*53ee8cc1Swenshuai.xi BYTE g_VifCrKi;
261*53ee8cc1Swenshuai.xi BYTE g_VifCrKpKiAdjLoopCnt;
262*53ee8cc1Swenshuai.xi BOOL g_bCheckModulationType; // 0: negative; 1: positive
263*53ee8cc1Swenshuai.xi BYTE g_ucVifSoundSystemType;
264*53ee8cc1Swenshuai.xi ////////////////////////////////////////////////////
265*53ee8cc1Swenshuai.xi
266*53ee8cc1Swenshuai.xi #define VIF_IS_ADC_48MHz 1 // 0:144MHz ; 1:48MHz
267*53ee8cc1Swenshuai.xi #define VIF_IS_EQ_IIR 0 // 0:FIR ; 1:IIR
268*53ee8cc1Swenshuai.xi
269*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
270*53ee8cc1Swenshuai.xi // Local code data
271*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
272*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_PEAKING_1dB[]=
273*53ee8cc1Swenshuai.xi {
274*53ee8cc1Swenshuai.xi {SOS21_C0_L,0xc1}, // SOS21 peaking
275*53ee8cc1Swenshuai.xi {SOS21_C0_H,0x02},
276*53ee8cc1Swenshuai.xi {SOS21_C1_L,0x87},
277*53ee8cc1Swenshuai.xi {SOS21_C1_H,0x06},
278*53ee8cc1Swenshuai.xi {SOS21_C2_L,0x08},
279*53ee8cc1Swenshuai.xi {SOS21_C2_H,0x02},
280*53ee8cc1Swenshuai.xi {SOS21_C3_L,0x3f},
281*53ee8cc1Swenshuai.xi {SOS21_C3_H,0x05},
282*53ee8cc1Swenshuai.xi {SOS21_C4_L,0x70},
283*53ee8cc1Swenshuai.xi {SOS21_C4_H,0x01},
284*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
285*53ee8cc1Swenshuai.xi };
286*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_PEAKING_2dB[]=
287*53ee8cc1Swenshuai.xi {
288*53ee8cc1Swenshuai.xi {SOS21_C0_L,0xa4}, // SOS21 peaking
289*53ee8cc1Swenshuai.xi {SOS21_C0_H,0x02},
290*53ee8cc1Swenshuai.xi {SOS21_C1_L,0x8e},
291*53ee8cc1Swenshuai.xi {SOS21_C1_H,0x06},
292*53ee8cc1Swenshuai.xi {SOS21_C2_L,0x12},
293*53ee8cc1Swenshuai.xi {SOS21_C2_H,0x02},
294*53ee8cc1Swenshuai.xi {SOS21_C3_L,0x5c},
295*53ee8cc1Swenshuai.xi {SOS21_C3_H,0x05},
296*53ee8cc1Swenshuai.xi {SOS21_C4_L,0x60},
297*53ee8cc1Swenshuai.xi {SOS21_C4_H,0x01},
298*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
299*53ee8cc1Swenshuai.xi };
300*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_PEAKING_3dB[]=
301*53ee8cc1Swenshuai.xi {
302*53ee8cc1Swenshuai.xi {SOS21_C0_L,0xc1}, // SOS21 peaking
303*53ee8cc1Swenshuai.xi {SOS21_C0_H,0x02},
304*53ee8cc1Swenshuai.xi {SOS21_C1_L,0x87},
305*53ee8cc1Swenshuai.xi {SOS21_C1_H,0x06},
306*53ee8cc1Swenshuai.xi {SOS21_C2_L,0x1c},
307*53ee8cc1Swenshuai.xi {SOS21_C2_H,0x02},
308*53ee8cc1Swenshuai.xi {SOS21_C3_L,0x3f},
309*53ee8cc1Swenshuai.xi {SOS21_C3_H,0x05},
310*53ee8cc1Swenshuai.xi {SOS21_C4_L,0x5d},
311*53ee8cc1Swenshuai.xi {SOS21_C4_H,0x01},
312*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
313*53ee8cc1Swenshuai.xi };
314*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_PEAKING_4dB[]=
315*53ee8cc1Swenshuai.xi {
316*53ee8cc1Swenshuai.xi {SOS21_C0_L,0xc1}, // SOS21 peaking
317*53ee8cc1Swenshuai.xi {SOS21_C0_H,0x02},
318*53ee8cc1Swenshuai.xi {SOS21_C1_L,0x87},
319*53ee8cc1Swenshuai.xi {SOS21_C1_H,0x06},
320*53ee8cc1Swenshuai.xi {SOS21_C2_L,0x28},
321*53ee8cc1Swenshuai.xi {SOS21_C2_H,0x02},
322*53ee8cc1Swenshuai.xi {SOS21_C3_L,0x3f},
323*53ee8cc1Swenshuai.xi {SOS21_C3_H,0x05},
324*53ee8cc1Swenshuai.xi {SOS21_C4_L,0x51},
325*53ee8cc1Swenshuai.xi {SOS21_C4_H,0x01},
326*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
327*53ee8cc1Swenshuai.xi };
328*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_PEAKING_3dB_VSB[]=
329*53ee8cc1Swenshuai.xi {
330*53ee8cc1Swenshuai.xi {SOS21_C0_L,0xf5}, // SOS21 peaking
331*53ee8cc1Swenshuai.xi {SOS21_C0_H,0x02},
332*53ee8cc1Swenshuai.xi {SOS21_C1_L,0x23},
333*53ee8cc1Swenshuai.xi {SOS21_C1_H,0x06},
334*53ee8cc1Swenshuai.xi {SOS21_C2_L,0x07},
335*53ee8cc1Swenshuai.xi {SOS21_C2_H,0x02},
336*53ee8cc1Swenshuai.xi {SOS21_C3_L,0x0b},
337*53ee8cc1Swenshuai.xi {SOS21_C3_H,0x05},
338*53ee8cc1Swenshuai.xi {SOS21_C4_L,0xd5},
339*53ee8cc1Swenshuai.xi {SOS21_C4_H,0x01},
340*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
341*53ee8cc1Swenshuai.xi };
342*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_PEAKING_4dB_VSB[]=
343*53ee8cc1Swenshuai.xi {
344*53ee8cc1Swenshuai.xi {SOS21_C0_L,0xf5}, // SOS21 peaking
345*53ee8cc1Swenshuai.xi {SOS21_C0_H,0x02},
346*53ee8cc1Swenshuai.xi {SOS21_C1_L,0x23},
347*53ee8cc1Swenshuai.xi {SOS21_C1_H,0x06},
348*53ee8cc1Swenshuai.xi {SOS21_C2_L,0x0a},
349*53ee8cc1Swenshuai.xi {SOS21_C2_H,0x02},
350*53ee8cc1Swenshuai.xi {SOS21_C3_L,0x0b},
351*53ee8cc1Swenshuai.xi {SOS21_C3_H,0x05},
352*53ee8cc1Swenshuai.xi {SOS21_C4_L,0xd2},
353*53ee8cc1Swenshuai.xi {SOS21_C4_H,0x01},
354*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
355*53ee8cc1Swenshuai.xi };
356*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_PEAKING_5dB_VSB[]=
357*53ee8cc1Swenshuai.xi {
358*53ee8cc1Swenshuai.xi {SOS21_C0_L,0xf5}, // SOS21 peaking
359*53ee8cc1Swenshuai.xi {SOS21_C0_H,0x02},
360*53ee8cc1Swenshuai.xi {SOS21_C1_L,0x23},
361*53ee8cc1Swenshuai.xi {SOS21_C1_H,0x06},
362*53ee8cc1Swenshuai.xi {SOS21_C2_L,0x0e},
363*53ee8cc1Swenshuai.xi {SOS21_C2_H,0x02},
364*53ee8cc1Swenshuai.xi {SOS21_C3_L,0x0b},
365*53ee8cc1Swenshuai.xi {SOS21_C3_H,0x05},
366*53ee8cc1Swenshuai.xi {SOS21_C4_L,0xcf},
367*53ee8cc1Swenshuai.xi {SOS21_C4_H,0x01},
368*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
369*53ee8cc1Swenshuai.xi };
370*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_PEAKING_NULL[]=
371*53ee8cc1Swenshuai.xi {
372*53ee8cc1Swenshuai.xi {SOS21_C0_L,0x00}, // SOS21
373*53ee8cc1Swenshuai.xi {SOS21_C0_H,0x00},
374*53ee8cc1Swenshuai.xi {SOS21_C1_L,0x00},
375*53ee8cc1Swenshuai.xi {SOS21_C1_H,0x00},
376*53ee8cc1Swenshuai.xi {SOS21_C2_L,0x00},
377*53ee8cc1Swenshuai.xi {SOS21_C2_H,0x00},
378*53ee8cc1Swenshuai.xi {SOS21_C3_L,0x00},
379*53ee8cc1Swenshuai.xi {SOS21_C3_H,0x00},
380*53ee8cc1Swenshuai.xi {SOS21_C4_L,0x00},
381*53ee8cc1Swenshuai.xi {SOS21_C4_H,0x02},
382*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
383*53ee8cc1Swenshuai.xi };
384*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_YCDelay_VSB[]=
385*53ee8cc1Swenshuai.xi {
386*53ee8cc1Swenshuai.xi {SOS22_C0_L,0x15}, // SOS22 Y/C delay
387*53ee8cc1Swenshuai.xi {SOS22_C0_H,0x02},
388*53ee8cc1Swenshuai.xi {SOS22_C1_L,0x84},
389*53ee8cc1Swenshuai.xi {SOS22_C1_H,0x06},
390*53ee8cc1Swenshuai.xi {SOS22_C2_L,0x7c},
391*53ee8cc1Swenshuai.xi {SOS22_C2_H,0x01},
392*53ee8cc1Swenshuai.xi {SOS22_C3_L,0xeb},
393*53ee8cc1Swenshuai.xi {SOS22_C3_H,0x05},
394*53ee8cc1Swenshuai.xi {SOS22_C4_L,0x00},
395*53ee8cc1Swenshuai.xi {SOS22_C4_H,0x02},
396*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
397*53ee8cc1Swenshuai.xi };
398*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_YCDelay_NULL[]=
399*53ee8cc1Swenshuai.xi {
400*53ee8cc1Swenshuai.xi {SOS22_C0_L,0x00}, // SOS22
401*53ee8cc1Swenshuai.xi {SOS22_C0_H,0x00},
402*53ee8cc1Swenshuai.xi {SOS22_C1_L,0x00},
403*53ee8cc1Swenshuai.xi {SOS22_C1_H,0x00},
404*53ee8cc1Swenshuai.xi {SOS22_C2_L,0x00},
405*53ee8cc1Swenshuai.xi {SOS22_C2_H,0x00},
406*53ee8cc1Swenshuai.xi {SOS22_C3_L,0x00},
407*53ee8cc1Swenshuai.xi {SOS22_C3_H,0x00},
408*53ee8cc1Swenshuai.xi {SOS22_C4_L,0x00},
409*53ee8cc1Swenshuai.xi {SOS22_C4_H,0x02},
410*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
411*53ee8cc1Swenshuai.xi };
412*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_GroupDelay_Low_R[]=
413*53ee8cc1Swenshuai.xi {
414*53ee8cc1Swenshuai.xi {SOS31_C0_L,0xcc}, // SOS31
415*53ee8cc1Swenshuai.xi {SOS31_C0_H,0x00},
416*53ee8cc1Swenshuai.xi {SOS31_C1_L,0x6c},
417*53ee8cc1Swenshuai.xi {SOS31_C1_H,0x07},
418*53ee8cc1Swenshuai.xi {SOS31_C2_L,0x94},
419*53ee8cc1Swenshuai.xi {SOS31_C2_H,0x00},
420*53ee8cc1Swenshuai.xi {SOS31_C3_L,0x34},
421*53ee8cc1Swenshuai.xi {SOS31_C3_H,0x07},
422*53ee8cc1Swenshuai.xi {SOS31_C4_L,0x00},
423*53ee8cc1Swenshuai.xi {SOS31_C4_H,0x02},
424*53ee8cc1Swenshuai.xi {SOS32_C0_L,0xb4}, // SOS32
425*53ee8cc1Swenshuai.xi {SOS32_C0_H,0x02},
426*53ee8cc1Swenshuai.xi {SOS32_C1_L,0xf8},
427*53ee8cc1Swenshuai.xi {SOS32_C1_H,0x06},
428*53ee8cc1Swenshuai.xi {SOS32_C2_L,0x08},
429*53ee8cc1Swenshuai.xi {SOS32_C2_H,0x01},
430*53ee8cc1Swenshuai.xi {SOS32_C3_L,0x4c},
431*53ee8cc1Swenshuai.xi {SOS32_C3_H,0x05},
432*53ee8cc1Swenshuai.xi {SOS32_C4_L,0x00},
433*53ee8cc1Swenshuai.xi {SOS32_C4_H,0x02},
434*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
435*53ee8cc1Swenshuai.xi };
436*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_GroupDelay_Low_L[]=
437*53ee8cc1Swenshuai.xi {
438*53ee8cc1Swenshuai.xi {SOS31_C0_L,0x3c}, // SOS31
439*53ee8cc1Swenshuai.xi {SOS31_C0_H,0x02},
440*53ee8cc1Swenshuai.xi {SOS31_C1_L,0xb8},
441*53ee8cc1Swenshuai.xi {SOS31_C1_H,0x06},
442*53ee8cc1Swenshuai.xi {SOS31_C2_L,0x48},
443*53ee8cc1Swenshuai.xi {SOS31_C2_H,0x01},
444*53ee8cc1Swenshuai.xi {SOS31_C3_L,0xc4},
445*53ee8cc1Swenshuai.xi {SOS31_C3_H,0x05},
446*53ee8cc1Swenshuai.xi {SOS31_C4_L,0x00},
447*53ee8cc1Swenshuai.xi {SOS31_C4_H,0x02},
448*53ee8cc1Swenshuai.xi {SOS32_C0_L,0xd9}, // SOS32
449*53ee8cc1Swenshuai.xi {SOS32_C0_H,0x02},
450*53ee8cc1Swenshuai.xi {SOS32_C1_L,0xf7},
451*53ee8cc1Swenshuai.xi {SOS32_C1_H,0x06},
452*53ee8cc1Swenshuai.xi {SOS32_C2_L,0x0a},
453*53ee8cc1Swenshuai.xi {SOS32_C2_H,0x01},
454*53ee8cc1Swenshuai.xi {SOS32_C3_L,0x28},
455*53ee8cc1Swenshuai.xi {SOS32_C3_H,0x05},
456*53ee8cc1Swenshuai.xi {SOS32_C4_L,0x00},
457*53ee8cc1Swenshuai.xi {SOS32_C4_H,0x02},
458*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
459*53ee8cc1Swenshuai.xi };
460*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_GroupDelay_High_R[]=
461*53ee8cc1Swenshuai.xi {
462*53ee8cc1Swenshuai.xi {SOS31_C0_L,0xcc}, // SOS31
463*53ee8cc1Swenshuai.xi {SOS31_C0_H,0x00},
464*53ee8cc1Swenshuai.xi {SOS31_C1_L,0x6c},
465*53ee8cc1Swenshuai.xi {SOS31_C1_H,0x07},
466*53ee8cc1Swenshuai.xi {SOS31_C2_L,0x94},
467*53ee8cc1Swenshuai.xi {SOS31_C2_H,0x00},
468*53ee8cc1Swenshuai.xi {SOS31_C3_L,0x34},
469*53ee8cc1Swenshuai.xi {SOS31_C3_H,0x07},
470*53ee8cc1Swenshuai.xi {SOS31_C4_L,0x00},
471*53ee8cc1Swenshuai.xi {SOS31_C4_H,0x02},
472*53ee8cc1Swenshuai.xi {SOS32_C0_L,0xc7}, // SOS32
473*53ee8cc1Swenshuai.xi {SOS32_C0_H,0x02},
474*53ee8cc1Swenshuai.xi {SOS32_C1_L,0xd8},
475*53ee8cc1Swenshuai.xi {SOS32_C1_H,0x06},
476*53ee8cc1Swenshuai.xi {SOS32_C2_L,0x28},
477*53ee8cc1Swenshuai.xi {SOS32_C2_H,0x01},
478*53ee8cc1Swenshuai.xi {SOS32_C3_L,0x39},
479*53ee8cc1Swenshuai.xi {SOS32_C3_H,0x05},
480*53ee8cc1Swenshuai.xi {SOS32_C4_L,0x00},
481*53ee8cc1Swenshuai.xi {SOS32_C4_H,0x02},
482*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
483*53ee8cc1Swenshuai.xi };
484*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_GroupDelay_High_L[]=
485*53ee8cc1Swenshuai.xi {
486*53ee8cc1Swenshuai.xi {SOS31_C0_L,0xcc}, // SOS31
487*53ee8cc1Swenshuai.xi {SOS31_C0_H,0x00},
488*53ee8cc1Swenshuai.xi {SOS31_C1_L,0x6c},
489*53ee8cc1Swenshuai.xi {SOS31_C1_H,0x07},
490*53ee8cc1Swenshuai.xi {SOS31_C2_L,0x94},
491*53ee8cc1Swenshuai.xi {SOS31_C2_H,0x00},
492*53ee8cc1Swenshuai.xi {SOS31_C3_L,0x34},
493*53ee8cc1Swenshuai.xi {SOS31_C3_H,0x07},
494*53ee8cc1Swenshuai.xi {SOS31_C4_L,0x00},
495*53ee8cc1Swenshuai.xi {SOS31_C4_H,0x02},
496*53ee8cc1Swenshuai.xi {SOS32_C0_L,0xb0}, // SOS32
497*53ee8cc1Swenshuai.xi {SOS32_C0_H,0x02},
498*53ee8cc1Swenshuai.xi {SOS32_C1_L,0x13},
499*53ee8cc1Swenshuai.xi {SOS32_C1_H,0x07},
500*53ee8cc1Swenshuai.xi {SOS32_C2_L,0xed},
501*53ee8cc1Swenshuai.xi {SOS32_C2_H,0x00},
502*53ee8cc1Swenshuai.xi {SOS32_C3_L,0x50},
503*53ee8cc1Swenshuai.xi {SOS32_C3_H,0x05},
504*53ee8cc1Swenshuai.xi {SOS32_C4_L,0x00},
505*53ee8cc1Swenshuai.xi {SOS32_C4_H,0x02},
506*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
507*53ee8cc1Swenshuai.xi };
508*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_GroupDelay_VSB_LG[]=
509*53ee8cc1Swenshuai.xi {
510*53ee8cc1Swenshuai.xi {SOS31_C0_L,0xab}, // SOS31
511*53ee8cc1Swenshuai.xi {SOS31_C0_H,0x02},
512*53ee8cc1Swenshuai.xi {SOS31_C1_L,0x9b},
513*53ee8cc1Swenshuai.xi {SOS31_C1_H,0x06},
514*53ee8cc1Swenshuai.xi {SOS31_C2_L,0x65},
515*53ee8cc1Swenshuai.xi {SOS31_C2_H,0x01},
516*53ee8cc1Swenshuai.xi {SOS31_C3_L,0x55},
517*53ee8cc1Swenshuai.xi {SOS31_C3_H,0x05},
518*53ee8cc1Swenshuai.xi {SOS31_C4_L,0x00},
519*53ee8cc1Swenshuai.xi {SOS31_C4_H,0x02},
520*53ee8cc1Swenshuai.xi {SOS32_C0_L,0xe1}, // SOS32
521*53ee8cc1Swenshuai.xi {SOS32_C0_H,0x02},
522*53ee8cc1Swenshuai.xi {SOS32_C1_L,0xf7},
523*53ee8cc1Swenshuai.xi {SOS32_C1_H,0x06},
524*53ee8cc1Swenshuai.xi {SOS32_C2_L,0x0a},
525*53ee8cc1Swenshuai.xi {SOS32_C2_H,0x01},
526*53ee8cc1Swenshuai.xi {SOS32_C3_L,0x1f},
527*53ee8cc1Swenshuai.xi {SOS32_C3_H,0x05},
528*53ee8cc1Swenshuai.xi {SOS32_C4_L,0x00},
529*53ee8cc1Swenshuai.xi {SOS32_C4_H,0x02},
530*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
531*53ee8cc1Swenshuai.xi };
532*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_GroupDelay_VSB_Philips[]=
533*53ee8cc1Swenshuai.xi {
534*53ee8cc1Swenshuai.xi {SOS31_C0_L,0x9f}, // SOS31
535*53ee8cc1Swenshuai.xi {SOS31_C0_H,0x02},
536*53ee8cc1Swenshuai.xi {SOS31_C1_L,0xa8},
537*53ee8cc1Swenshuai.xi {SOS31_C1_H,0x06},
538*53ee8cc1Swenshuai.xi {SOS31_C2_L,0x58},
539*53ee8cc1Swenshuai.xi {SOS31_C2_H,0x01},
540*53ee8cc1Swenshuai.xi {SOS31_C3_L,0x62},
541*53ee8cc1Swenshuai.xi {SOS31_C3_H,0x05},
542*53ee8cc1Swenshuai.xi {SOS31_C4_L,0x00},
543*53ee8cc1Swenshuai.xi {SOS31_C4_H,0x02},
544*53ee8cc1Swenshuai.xi {SOS32_C0_L,0xcd}, // SOS32
545*53ee8cc1Swenshuai.xi {SOS32_C0_H,0x02},
546*53ee8cc1Swenshuai.xi {SOS32_C1_L,0x05},
547*53ee8cc1Swenshuai.xi {SOS32_C1_H,0x07},
548*53ee8cc1Swenshuai.xi {SOS32_C2_L,0xfb},
549*53ee8cc1Swenshuai.xi {SOS32_C2_H,0x00},
550*53ee8cc1Swenshuai.xi {SOS32_C3_L,0x33},
551*53ee8cc1Swenshuai.xi {SOS32_C3_H,0x05},
552*53ee8cc1Swenshuai.xi {SOS32_C4_L,0x00},
553*53ee8cc1Swenshuai.xi {SOS32_C4_H,0x02},
554*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
555*53ee8cc1Swenshuai.xi };
556*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_GroupDelay_NULL[]=
557*53ee8cc1Swenshuai.xi {
558*53ee8cc1Swenshuai.xi {SOS31_C0_L,0x00}, // SOS31
559*53ee8cc1Swenshuai.xi {SOS31_C0_H,0x00},
560*53ee8cc1Swenshuai.xi {SOS31_C1_L,0x00},
561*53ee8cc1Swenshuai.xi {SOS31_C1_H,0x00},
562*53ee8cc1Swenshuai.xi {SOS31_C2_L,0x00},
563*53ee8cc1Swenshuai.xi {SOS31_C2_H,0x00},
564*53ee8cc1Swenshuai.xi {SOS31_C3_L,0x00},
565*53ee8cc1Swenshuai.xi {SOS31_C3_H,0x00},
566*53ee8cc1Swenshuai.xi {SOS31_C4_L,0x00},
567*53ee8cc1Swenshuai.xi {SOS31_C4_H,0x02},
568*53ee8cc1Swenshuai.xi {SOS32_C0_L,0x00}, // SOS32
569*53ee8cc1Swenshuai.xi {SOS32_C0_H,0x00},
570*53ee8cc1Swenshuai.xi {SOS32_C1_L,0x00},
571*53ee8cc1Swenshuai.xi {SOS32_C1_H,0x00},
572*53ee8cc1Swenshuai.xi {SOS32_C2_L,0x00},
573*53ee8cc1Swenshuai.xi {SOS32_C2_H,0x00},
574*53ee8cc1Swenshuai.xi {SOS32_C3_L,0x00},
575*53ee8cc1Swenshuai.xi {SOS32_C3_H,0x00},
576*53ee8cc1Swenshuai.xi {SOS32_C4_L,0x00},
577*53ee8cc1Swenshuai.xi {SOS32_C4_H,0x02},
578*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
579*53ee8cc1Swenshuai.xi };
580*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_B_A2[]=
581*53ee8cc1Swenshuai.xi {
582*53ee8cc1Swenshuai.xi {N_A1_C0_L,0x9f}, // Notch_A1, R = 0.94
583*53ee8cc1Swenshuai.xi {N_A1_C0_H,0x02},
584*53ee8cc1Swenshuai.xi {N_A1_C1_L,0x3c},
585*53ee8cc1Swenshuai.xi {N_A1_C1_H,0x06},
586*53ee8cc1Swenshuai.xi {N_A1_C2_L,0x37},
587*53ee8cc1Swenshuai.xi {N_A1_C2_H,0x05},
588*53ee8cc1Swenshuai.xi {N_A2_C0_L,0x86}, // Notch_A2, R = 0.94
589*53ee8cc1Swenshuai.xi {N_A2_C0_H,0x02},
590*53ee8cc1Swenshuai.xi {N_A2_C1_L,0x3c},
591*53ee8cc1Swenshuai.xi {N_A2_C1_H,0x06},
592*53ee8cc1Swenshuai.xi {N_A2_C2_L,0x51},
593*53ee8cc1Swenshuai.xi {N_A2_C2_H,0x05},
594*53ee8cc1Swenshuai.xi {SOS12_C0_L,0x9f}, // SOS12, R = 0.94
595*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x02},
596*53ee8cc1Swenshuai.xi {SOS12_C1_L,0x3c},
597*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
598*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
599*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
600*53ee8cc1Swenshuai.xi {SOS12_C3_L,0x37},
601*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x05},
602*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
603*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
604*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL B/G A2
605*53ee8cc1Swenshuai.xi };
606*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_B_NICAM[]=
607*53ee8cc1Swenshuai.xi {
608*53ee8cc1Swenshuai.xi {N_A1_C0_L,0x9f}, // Notch_A1, R = 0.94
609*53ee8cc1Swenshuai.xi {N_A1_C0_H,0x02},
610*53ee8cc1Swenshuai.xi {N_A1_C1_L,0x3c},
611*53ee8cc1Swenshuai.xi {N_A1_C1_H,0x06},
612*53ee8cc1Swenshuai.xi {N_A1_C2_L,0x37},
613*53ee8cc1Swenshuai.xi {N_A1_C2_H,0x05},
614*53ee8cc1Swenshuai.xi {N_A2_C0_L,0x7b}, // Notch_A2, R = 0.94
615*53ee8cc1Swenshuai.xi {N_A2_C0_H,0x02},
616*53ee8cc1Swenshuai.xi {N_A2_C1_L,0x3c},
617*53ee8cc1Swenshuai.xi {N_A2_C1_H,0x06},
618*53ee8cc1Swenshuai.xi {N_A2_C2_L,0x5d},
619*53ee8cc1Swenshuai.xi {N_A2_C2_H,0x05},
620*53ee8cc1Swenshuai.xi {SOS12_C0_L,0x9f}, // SOS12, R = 0.94
621*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x02},
622*53ee8cc1Swenshuai.xi {SOS12_C1_L,0x3c},
623*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
624*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
625*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
626*53ee8cc1Swenshuai.xi {SOS12_C3_L,0x37},
627*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x05},
628*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
629*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
630*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL B/G NICAM
631*53ee8cc1Swenshuai.xi };
632*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_GH_A2[]=
633*53ee8cc1Swenshuai.xi {
634*53ee8cc1Swenshuai.xi {N_A1_C0_L,0x9f}, // Notch_A1, R = 0.94
635*53ee8cc1Swenshuai.xi {N_A1_C0_H,0x02},
636*53ee8cc1Swenshuai.xi {N_A1_C1_L,0x3c},
637*53ee8cc1Swenshuai.xi {N_A1_C1_H,0x06},
638*53ee8cc1Swenshuai.xi {N_A1_C2_L,0x37},
639*53ee8cc1Swenshuai.xi {N_A1_C2_H,0x05},
640*53ee8cc1Swenshuai.xi {N_A2_C0_L,0x86}, // Notch_A2, R = 0.94
641*53ee8cc1Swenshuai.xi {N_A2_C0_H,0x02},
642*53ee8cc1Swenshuai.xi {N_A2_C1_L,0x3c},
643*53ee8cc1Swenshuai.xi {N_A2_C1_H,0x06},
644*53ee8cc1Swenshuai.xi {N_A2_C2_L,0x51},
645*53ee8cc1Swenshuai.xi {N_A2_C2_H,0x05},
646*53ee8cc1Swenshuai.xi {SOS12_C0_L,0x9f}, // SOS12, R = 0.94
647*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x02},
648*53ee8cc1Swenshuai.xi {SOS12_C1_L,0x3c},
649*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
650*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
651*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
652*53ee8cc1Swenshuai.xi {SOS12_C3_L,0x37},
653*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x05},
654*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
655*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
656*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL B/G A2
657*53ee8cc1Swenshuai.xi };
658*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_GH_NICAM[]=
659*53ee8cc1Swenshuai.xi {
660*53ee8cc1Swenshuai.xi {N_A1_C0_L,0x9f}, // Notch_A1, R = 0.94
661*53ee8cc1Swenshuai.xi {N_A1_C0_H,0x02},
662*53ee8cc1Swenshuai.xi {N_A1_C1_L,0x3c},
663*53ee8cc1Swenshuai.xi {N_A1_C1_H,0x06},
664*53ee8cc1Swenshuai.xi {N_A1_C2_L,0x37},
665*53ee8cc1Swenshuai.xi {N_A1_C2_H,0x05},
666*53ee8cc1Swenshuai.xi {N_A2_C0_L,0x7b}, // Notch_A2, R = 0.94
667*53ee8cc1Swenshuai.xi {N_A2_C0_H,0x02},
668*53ee8cc1Swenshuai.xi {N_A2_C1_L,0x3c},
669*53ee8cc1Swenshuai.xi {N_A2_C1_H,0x06},
670*53ee8cc1Swenshuai.xi {N_A2_C2_L,0x5d},
671*53ee8cc1Swenshuai.xi {N_A2_C2_H,0x05},
672*53ee8cc1Swenshuai.xi {SOS12_C0_L,0x9f}, // SOS12, R = 0.94
673*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x02},
674*53ee8cc1Swenshuai.xi {SOS12_C1_L,0x3c},
675*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
676*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
677*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
678*53ee8cc1Swenshuai.xi {SOS12_C3_L,0x37},
679*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x05},
680*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
681*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
682*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL B/G NICAM
683*53ee8cc1Swenshuai.xi };
684*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_SECAM_L_NICAM[]=
685*53ee8cc1Swenshuai.xi {
686*53ee8cc1Swenshuai.xi {N_A1_C0_L,0x34}, // Notch_A1, R = 0.94
687*53ee8cc1Swenshuai.xi {N_A1_C0_H,0x02},
688*53ee8cc1Swenshuai.xi {N_A1_C1_L,0x3c},
689*53ee8cc1Swenshuai.xi {N_A1_C1_H,0x06},
690*53ee8cc1Swenshuai.xi {N_A1_C2_L,0xa9},
691*53ee8cc1Swenshuai.xi {N_A1_C2_H,0x05},
692*53ee8cc1Swenshuai.xi {N_A2_C0_L,0x7b}, // Notch_A2, R = 0.94
693*53ee8cc1Swenshuai.xi {N_A2_C0_H,0x02},
694*53ee8cc1Swenshuai.xi {N_A2_C1_L,0x3c},
695*53ee8cc1Swenshuai.xi {N_A2_C1_H,0x06},
696*53ee8cc1Swenshuai.xi {N_A2_C2_L,0x5d},
697*53ee8cc1Swenshuai.xi {N_A2_C2_H,0x05},
698*53ee8cc1Swenshuai.xi {SOS12_C0_L,0x34}, // SOS12, R = 0.94
699*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x02},
700*53ee8cc1Swenshuai.xi {SOS12_C1_L,0x3c},
701*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
702*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
703*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
704*53ee8cc1Swenshuai.xi {SOS12_C3_L,0xa9},
705*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x05},
706*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
707*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
708*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // SECAM L NICAM
709*53ee8cc1Swenshuai.xi };
710*53ee8cc1Swenshuai.xi
711*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_I_NICAM[]=
712*53ee8cc1Swenshuai.xi {
713*53ee8cc1Swenshuai.xi {N_A1_C0_L,0x6b}, // Notch_A1, R = 0.94
714*53ee8cc1Swenshuai.xi {N_A1_C0_H,0x02},
715*53ee8cc1Swenshuai.xi {N_A1_C1_L,0x3c},
716*53ee8cc1Swenshuai.xi {N_A1_C1_H,0x06},
717*53ee8cc1Swenshuai.xi {N_A1_C2_L,0x6e},
718*53ee8cc1Swenshuai.xi {N_A1_C2_H,0x05},
719*53ee8cc1Swenshuai.xi {N_A2_C0_L,0x2e}, // Notch_A2, R = 0.94
720*53ee8cc1Swenshuai.xi {N_A2_C0_H,0x02},
721*53ee8cc1Swenshuai.xi {N_A2_C1_L,0x3c},
722*53ee8cc1Swenshuai.xi {N_A2_C1_H,0x06},
723*53ee8cc1Swenshuai.xi {N_A2_C2_L,0xaf},
724*53ee8cc1Swenshuai.xi {N_A2_C2_H,0x05},
725*53ee8cc1Swenshuai.xi {SOS12_C0_L,0x6b}, // SOS12, R = 0.94
726*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x02},
727*53ee8cc1Swenshuai.xi {SOS12_C1_L,0x3c},
728*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
729*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
730*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
731*53ee8cc1Swenshuai.xi {SOS12_C3_L,0x6e},
732*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x05},
733*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
734*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
735*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL I NICAM
736*53ee8cc1Swenshuai.xi };
737*53ee8cc1Swenshuai.xi
738*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_SECAM_DK1_A2[]=
739*53ee8cc1Swenshuai.xi {
740*53ee8cc1Swenshuai.xi {N_A1_C0_L,0x34}, // Notch_A1, R = 0.94
741*53ee8cc1Swenshuai.xi {N_A1_C0_H,0x02},
742*53ee8cc1Swenshuai.xi {N_A1_C1_L,0x3c},
743*53ee8cc1Swenshuai.xi {N_A1_C1_H,0x06},
744*53ee8cc1Swenshuai.xi {N_A1_C2_L,0xa9},
745*53ee8cc1Swenshuai.xi {N_A1_C2_H,0x05},
746*53ee8cc1Swenshuai.xi {N_A2_C0_L,0x4f}, // Notch_A2, R = 0.94
747*53ee8cc1Swenshuai.xi {N_A2_C0_H,0x02},
748*53ee8cc1Swenshuai.xi {N_A2_C1_L,0x3c},
749*53ee8cc1Swenshuai.xi {N_A2_C1_H,0x06},
750*53ee8cc1Swenshuai.xi {N_A2_C2_L,0x8c},
751*53ee8cc1Swenshuai.xi {N_A2_C2_H,0x05},
752*53ee8cc1Swenshuai.xi {SOS12_C0_L,0x34}, // SOS12, R = 0.94
753*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x02},
754*53ee8cc1Swenshuai.xi {SOS12_C1_L,0x3c},
755*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
756*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
757*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
758*53ee8cc1Swenshuai.xi {SOS12_C3_L,0xa9},
759*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x05},
760*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
761*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
762*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL DK1 A2
763*53ee8cc1Swenshuai.xi };
764*53ee8cc1Swenshuai.xi
765*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_DK2_A2[]=
766*53ee8cc1Swenshuai.xi {
767*53ee8cc1Swenshuai.xi {N_A1_C0_L,0x34}, // Notch_A1, R = 0.94
768*53ee8cc1Swenshuai.xi {N_A1_C0_H,0x02},
769*53ee8cc1Swenshuai.xi {N_A1_C1_L,0x3c},
770*53ee8cc1Swenshuai.xi {N_A1_C1_H,0x06},
771*53ee8cc1Swenshuai.xi {N_A1_C2_L,0xa9},
772*53ee8cc1Swenshuai.xi {N_A1_C2_H,0x05},
773*53ee8cc1Swenshuai.xi {N_A2_C0_L,0x18}, // Notch_A2, R = 0.94
774*53ee8cc1Swenshuai.xi {N_A2_C0_H,0x02},
775*53ee8cc1Swenshuai.xi {N_A2_C1_L,0x3c},
776*53ee8cc1Swenshuai.xi {N_A2_C1_H,0x06},
777*53ee8cc1Swenshuai.xi {N_A2_C2_L,0xc6},
778*53ee8cc1Swenshuai.xi {N_A2_C2_H,0x05},
779*53ee8cc1Swenshuai.xi {SOS12_C0_L,0x34}, // SOS12, R = 0.96
780*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x02},
781*53ee8cc1Swenshuai.xi {SOS12_C1_L,0x3c},
782*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
783*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
784*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
785*53ee8cc1Swenshuai.xi {SOS12_C3_L,0xa9},
786*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x05},
787*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
788*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
789*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL DK2 A2
790*53ee8cc1Swenshuai.xi };
791*53ee8cc1Swenshuai.xi
792*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_DK2_NICAM[]=
793*53ee8cc1Swenshuai.xi {
794*53ee8cc1Swenshuai.xi {N_A1_C0_L,0x34}, // Notch_A1, R = 0.94
795*53ee8cc1Swenshuai.xi {N_A1_C0_H,0x02},
796*53ee8cc1Swenshuai.xi {N_A1_C1_L,0x3c},
797*53ee8cc1Swenshuai.xi {N_A1_C1_H,0x06},
798*53ee8cc1Swenshuai.xi {N_A1_C2_L,0xa9},
799*53ee8cc1Swenshuai.xi {N_A1_C2_H,0x05},
800*53ee8cc1Swenshuai.xi {N_A2_C0_L,0x7b}, // Notch_A2, R = 0.94
801*53ee8cc1Swenshuai.xi {N_A2_C0_H,0x02},
802*53ee8cc1Swenshuai.xi {N_A2_C1_L,0x3c},
803*53ee8cc1Swenshuai.xi {N_A2_C1_H,0x06},
804*53ee8cc1Swenshuai.xi {N_A2_C2_L,0x5d},
805*53ee8cc1Swenshuai.xi {N_A2_C2_H,0x05},
806*53ee8cc1Swenshuai.xi {SOS12_C0_L,0x34}, // SOS12, R = 0.94
807*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x02},
808*53ee8cc1Swenshuai.xi {SOS12_C1_L,0x3c},
809*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
810*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
811*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
812*53ee8cc1Swenshuai.xi {SOS12_C3_L,0xa9},
813*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x05},
814*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
815*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
816*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL DK NICAM
817*53ee8cc1Swenshuai.xi };
818*53ee8cc1Swenshuai.xi
819*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_SECAM_DK3_A2[]=
820*53ee8cc1Swenshuai.xi {
821*53ee8cc1Swenshuai.xi {N_A1_C0_L,0x34}, // Notch_A1, R = 0.94
822*53ee8cc1Swenshuai.xi {N_A1_C0_H,0x02},
823*53ee8cc1Swenshuai.xi {N_A1_C1_L,0x3c},
824*53ee8cc1Swenshuai.xi {N_A1_C1_H,0x06},
825*53ee8cc1Swenshuai.xi {N_A1_C2_L,0xa9},
826*53ee8cc1Swenshuai.xi {N_A1_C2_H,0x05},
827*53ee8cc1Swenshuai.xi {N_A2_C0_L,0x86}, // Notch_A2, R = 0.94
828*53ee8cc1Swenshuai.xi {N_A2_C0_H,0x02},
829*53ee8cc1Swenshuai.xi {N_A2_C1_L,0x3c},
830*53ee8cc1Swenshuai.xi {N_A2_C1_H,0x06},
831*53ee8cc1Swenshuai.xi {N_A2_C2_L,0x51},
832*53ee8cc1Swenshuai.xi {N_A2_C2_H,0x05},
833*53ee8cc1Swenshuai.xi {SOS12_C0_L,0x34}, // SOS12, R = 0.94
834*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x02},
835*53ee8cc1Swenshuai.xi {SOS12_C1_L,0x3c},
836*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
837*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
838*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
839*53ee8cc1Swenshuai.xi {SOS12_C3_L,0xa9},
840*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x05},
841*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
842*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
843*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL DK3 A2
844*53ee8cc1Swenshuai.xi };
845*53ee8cc1Swenshuai.xi
846*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_BG_A2_NOTCH[]=
847*53ee8cc1Swenshuai.xi {
848*53ee8cc1Swenshuai.xi {N_A3_C0_L,0x9f}, // Notch_A3, R = 0.94
849*53ee8cc1Swenshuai.xi {N_A3_C0_H,0x02},
850*53ee8cc1Swenshuai.xi {N_A3_C1_L,0x3c},
851*53ee8cc1Swenshuai.xi {N_A3_C1_H,0x06},
852*53ee8cc1Swenshuai.xi {N_A3_C2_L,0x37},
853*53ee8cc1Swenshuai.xi {N_A3_C2_H,0x05},
854*53ee8cc1Swenshuai.xi {N_A4_C0_L,0x86}, // Notch_A4, R = 0.94
855*53ee8cc1Swenshuai.xi {N_A4_C0_H,0x02},
856*53ee8cc1Swenshuai.xi {N_A4_C1_L,0x3c},
857*53ee8cc1Swenshuai.xi {N_A4_C1_H,0x06},
858*53ee8cc1Swenshuai.xi {N_A4_C2_L,0x51},
859*53ee8cc1Swenshuai.xi {N_A4_C2_H,0x05},
860*53ee8cc1Swenshuai.xi {N_A5_C0_L,0x02}, // Notch_A5 at 9MHz, image of audio 1 (bw 3.5, Apass 0.05)
861*53ee8cc1Swenshuai.xi {N_A5_C0_H,0x01},
862*53ee8cc1Swenshuai.xi {N_A5_C1_L,0x1c},
863*53ee8cc1Swenshuai.xi {N_A5_C1_H,0x06},
864*53ee8cc1Swenshuai.xi {N_A5_C2_L,0xf7},
865*53ee8cc1Swenshuai.xi {N_A5_C2_H,0x06},
866*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL B/G A2
867*53ee8cc1Swenshuai.xi };
868*53ee8cc1Swenshuai.xi
869*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_BG_NICAM_NOTCH[]=
870*53ee8cc1Swenshuai.xi {
871*53ee8cc1Swenshuai.xi {N_A3_C0_L,0x9f}, // Notch_A3, R = 0.94
872*53ee8cc1Swenshuai.xi {N_A3_C0_H,0x02},
873*53ee8cc1Swenshuai.xi {N_A3_C1_L,0x3c},
874*53ee8cc1Swenshuai.xi {N_A3_C1_H,0x06},
875*53ee8cc1Swenshuai.xi {N_A3_C2_L,0x37},
876*53ee8cc1Swenshuai.xi {N_A3_C2_H,0x05},
877*53ee8cc1Swenshuai.xi {N_A4_C0_L,0x7b}, // Notch_A4, R = 0.94
878*53ee8cc1Swenshuai.xi {N_A4_C0_H,0x02},
879*53ee8cc1Swenshuai.xi {N_A4_C1_L,0x3c},
880*53ee8cc1Swenshuai.xi {N_A4_C1_H,0x06},
881*53ee8cc1Swenshuai.xi {N_A4_C2_L,0x5d},
882*53ee8cc1Swenshuai.xi {N_A4_C2_H,0x05},
883*53ee8cc1Swenshuai.xi {N_A5_C0_L,0x02}, // Notch_A5 at 9MHz, image of audio 1 (bw 3.5, Apass 0.05)
884*53ee8cc1Swenshuai.xi {N_A5_C0_H,0x01},
885*53ee8cc1Swenshuai.xi {N_A5_C1_L,0x1c},
886*53ee8cc1Swenshuai.xi {N_A5_C1_H,0x06},
887*53ee8cc1Swenshuai.xi {N_A5_C2_L,0xf7},
888*53ee8cc1Swenshuai.xi {N_A5_C2_H,0x06},
889*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL B/G NICAM
890*53ee8cc1Swenshuai.xi };
891*53ee8cc1Swenshuai.xi
892*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_I_NOTCH[]=
893*53ee8cc1Swenshuai.xi {
894*53ee8cc1Swenshuai.xi {N_A3_C0_L,0x6b}, // Notch_A3, R = 0.94
895*53ee8cc1Swenshuai.xi {N_A3_C0_H,0x02},
896*53ee8cc1Swenshuai.xi {N_A3_C1_L,0x3c},
897*53ee8cc1Swenshuai.xi {N_A3_C1_H,0x06},
898*53ee8cc1Swenshuai.xi {N_A3_C2_L,0x6e},
899*53ee8cc1Swenshuai.xi {N_A3_C2_H,0x05},
900*53ee8cc1Swenshuai.xi {N_A4_C0_L,0x2e}, // Notch_A4, R = 0.94
901*53ee8cc1Swenshuai.xi {N_A4_C0_H,0x02},
902*53ee8cc1Swenshuai.xi {N_A4_C1_L,0x3c},
903*53ee8cc1Swenshuai.xi {N_A4_C1_H,0x06},
904*53ee8cc1Swenshuai.xi {N_A4_C2_L,0xaf},
905*53ee8cc1Swenshuai.xi {N_A4_C2_H,0x05},
906*53ee8cc1Swenshuai.xi {N_A5_C0_L,0xbb}, // Notch_A5 at 9.5MHz, image of audio 1 (bw 3.5, Apass 0.05)
907*53ee8cc1Swenshuai.xi {N_A5_C0_H,0x00},
908*53ee8cc1Swenshuai.xi {N_A5_C1_L,0x1c},
909*53ee8cc1Swenshuai.xi {N_A5_C1_H,0x06},
910*53ee8cc1Swenshuai.xi {N_A5_C2_L,0x40},
911*53ee8cc1Swenshuai.xi {N_A5_C2_H,0x07},
912*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL I NICAM
913*53ee8cc1Swenshuai.xi };
914*53ee8cc1Swenshuai.xi
915*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_DK1_NOTCH[]=
916*53ee8cc1Swenshuai.xi {
917*53ee8cc1Swenshuai.xi {N_A3_C0_L,0x34}, // Notch_A3, R = 0.94
918*53ee8cc1Swenshuai.xi {N_A3_C0_H,0x02},
919*53ee8cc1Swenshuai.xi {N_A3_C1_L,0x3c},
920*53ee8cc1Swenshuai.xi {N_A3_C1_H,0x06},
921*53ee8cc1Swenshuai.xi {N_A3_C2_L,0xa9},
922*53ee8cc1Swenshuai.xi {N_A3_C2_H,0x05},
923*53ee8cc1Swenshuai.xi {N_A4_C0_L,0x4f}, // Notch_A4, R = 0.94
924*53ee8cc1Swenshuai.xi {N_A4_C0_H,0x02},
925*53ee8cc1Swenshuai.xi {N_A4_C1_L,0x3c},
926*53ee8cc1Swenshuai.xi {N_A4_C1_H,0x06},
927*53ee8cc1Swenshuai.xi {N_A4_C2_L,0x8c},
928*53ee8cc1Swenshuai.xi {N_A4_C2_H,0x05},
929*53ee8cc1Swenshuai.xi {N_A5_C0_L,0x02}, // Notch_A5 at 9MHz, image of audio 1 (bw 3.5, Apass 0.05)
930*53ee8cc1Swenshuai.xi {N_A5_C0_H,0x01},
931*53ee8cc1Swenshuai.xi {N_A5_C1_L,0x1c},
932*53ee8cc1Swenshuai.xi {N_A5_C1_H,0x06},
933*53ee8cc1Swenshuai.xi {N_A5_C2_L,0xf7},
934*53ee8cc1Swenshuai.xi {N_A5_C2_H,0x06},
935*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL DK1 A2
936*53ee8cc1Swenshuai.xi };
937*53ee8cc1Swenshuai.xi
938*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_DK2_NOTCH[]=
939*53ee8cc1Swenshuai.xi {
940*53ee8cc1Swenshuai.xi {N_A3_C0_L,0x34}, // Notch_A3, R = 0.94
941*53ee8cc1Swenshuai.xi {N_A3_C0_H,0x02},
942*53ee8cc1Swenshuai.xi {N_A3_C1_L,0x3c},
943*53ee8cc1Swenshuai.xi {N_A3_C1_H,0x06},
944*53ee8cc1Swenshuai.xi {N_A3_C2_L,0xa9},
945*53ee8cc1Swenshuai.xi {N_A3_C2_H,0x05},
946*53ee8cc1Swenshuai.xi {N_A4_C0_L,0x18}, // Notch_A4, R = 0.94
947*53ee8cc1Swenshuai.xi {N_A4_C0_H,0x02},
948*53ee8cc1Swenshuai.xi {N_A4_C1_L,0x3c},
949*53ee8cc1Swenshuai.xi {N_A4_C1_H,0x06},
950*53ee8cc1Swenshuai.xi {N_A4_C2_L,0xc6},
951*53ee8cc1Swenshuai.xi {N_A4_C2_H,0x05},
952*53ee8cc1Swenshuai.xi {N_A5_C0_L,0x02}, // Notch_A5 at 9MHz, image of audio 1 (bw 3.5, Apass 0.05)
953*53ee8cc1Swenshuai.xi {N_A5_C0_H,0x01},
954*53ee8cc1Swenshuai.xi {N_A5_C1_L,0x1c},
955*53ee8cc1Swenshuai.xi {N_A5_C1_H,0x06},
956*53ee8cc1Swenshuai.xi {N_A5_C2_L,0xf7},
957*53ee8cc1Swenshuai.xi {N_A5_C2_H,0x06},
958*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL DK2 A2
959*53ee8cc1Swenshuai.xi };
960*53ee8cc1Swenshuai.xi
961*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_DK3_NOTCH[]=
962*53ee8cc1Swenshuai.xi {
963*53ee8cc1Swenshuai.xi {N_A3_C0_L,0x34}, // Notch_A3, R = 0.94
964*53ee8cc1Swenshuai.xi {N_A3_C0_H,0x02},
965*53ee8cc1Swenshuai.xi {N_A3_C1_L,0x3c},
966*53ee8cc1Swenshuai.xi {N_A3_C1_H,0x06},
967*53ee8cc1Swenshuai.xi {N_A3_C2_L,0xa9},
968*53ee8cc1Swenshuai.xi {N_A3_C2_H,0x05},
969*53ee8cc1Swenshuai.xi {N_A4_C0_L,0x86}, // Notch_A4, R = 0.94
970*53ee8cc1Swenshuai.xi {N_A4_C0_H,0x02},
971*53ee8cc1Swenshuai.xi {N_A4_C1_L,0x3c},
972*53ee8cc1Swenshuai.xi {N_A4_C1_H,0x06},
973*53ee8cc1Swenshuai.xi {N_A4_C2_L,0x51},
974*53ee8cc1Swenshuai.xi {N_A4_C2_H,0x05},
975*53ee8cc1Swenshuai.xi {N_A5_C0_L,0x02}, // Notch_A5 at 9MHz, image of audio 1 (bw 3.5, Apass 0.05)
976*53ee8cc1Swenshuai.xi {N_A5_C0_H,0x01},
977*53ee8cc1Swenshuai.xi {N_A5_C1_L,0x1c},
978*53ee8cc1Swenshuai.xi {N_A5_C1_H,0x06},
979*53ee8cc1Swenshuai.xi {N_A5_C2_L,0xf7},
980*53ee8cc1Swenshuai.xi {N_A5_C2_H,0x06},
981*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL DK3 A2
982*53ee8cc1Swenshuai.xi };
983*53ee8cc1Swenshuai.xi
984*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_DK_NICAM_NOTCH[]=
985*53ee8cc1Swenshuai.xi {
986*53ee8cc1Swenshuai.xi {N_A3_C0_L,0x34}, // Notch_A3, R = 0.94
987*53ee8cc1Swenshuai.xi {N_A3_C0_H,0x02},
988*53ee8cc1Swenshuai.xi {N_A3_C1_L,0x3c},
989*53ee8cc1Swenshuai.xi {N_A3_C1_H,0x06},
990*53ee8cc1Swenshuai.xi {N_A3_C2_L,0xa9},
991*53ee8cc1Swenshuai.xi {N_A3_C2_H,0x05},
992*53ee8cc1Swenshuai.xi {N_A4_C0_L,0x7b}, // Notch_A4, R = 0.94
993*53ee8cc1Swenshuai.xi {N_A4_C0_H,0x02},
994*53ee8cc1Swenshuai.xi {N_A4_C1_L,0x3c},
995*53ee8cc1Swenshuai.xi {N_A4_C1_H,0x06},
996*53ee8cc1Swenshuai.xi {N_A4_C2_L,0x5d},
997*53ee8cc1Swenshuai.xi {N_A4_C2_H,0x05},
998*53ee8cc1Swenshuai.xi {N_A5_C0_L,0x02}, // Notch_A5 at 9MHz, image of audio 1 (bw 3.5, Apass 0.05)
999*53ee8cc1Swenshuai.xi {N_A5_C0_H,0x01},
1000*53ee8cc1Swenshuai.xi {N_A5_C1_L,0x1c},
1001*53ee8cc1Swenshuai.xi {N_A5_C1_H,0x06},
1002*53ee8cc1Swenshuai.xi {N_A5_C2_L,0xf7},
1003*53ee8cc1Swenshuai.xi {N_A5_C2_H,0x06},
1004*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // PAL DK NICAM
1005*53ee8cc1Swenshuai.xi };
1006*53ee8cc1Swenshuai.xi
1007*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_L_NICAM_NOTCH[]=
1008*53ee8cc1Swenshuai.xi {
1009*53ee8cc1Swenshuai.xi {N_A3_C0_L,0x34}, // Notch_A3, R = 0.94
1010*53ee8cc1Swenshuai.xi {N_A3_C0_H,0x02},
1011*53ee8cc1Swenshuai.xi {N_A3_C1_L,0x3c},
1012*53ee8cc1Swenshuai.xi {N_A3_C1_H,0x06},
1013*53ee8cc1Swenshuai.xi {N_A3_C2_L,0xa9},
1014*53ee8cc1Swenshuai.xi {N_A3_C2_H,0x05},
1015*53ee8cc1Swenshuai.xi {N_A4_C0_L,0x7b}, // Notch_A4, R = 0.94
1016*53ee8cc1Swenshuai.xi {N_A4_C0_H,0x02},
1017*53ee8cc1Swenshuai.xi {N_A4_C1_L,0x3c},
1018*53ee8cc1Swenshuai.xi {N_A4_C1_H,0x06},
1019*53ee8cc1Swenshuai.xi {N_A4_C2_L,0x5d},
1020*53ee8cc1Swenshuai.xi {N_A4_C2_H,0x05},
1021*53ee8cc1Swenshuai.xi {N_A5_C0_L,0x02}, // Notch_A5 at 9MHz, image of audio 1 (bw 3.5, Apass 0.05)
1022*53ee8cc1Swenshuai.xi {N_A5_C0_H,0x01},
1023*53ee8cc1Swenshuai.xi {N_A5_C1_L,0x1c},
1024*53ee8cc1Swenshuai.xi {N_A5_C1_H,0x06},
1025*53ee8cc1Swenshuai.xi {N_A5_C2_L,0xf7},
1026*53ee8cc1Swenshuai.xi {N_A5_C2_H,0x06},
1027*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // SECAM L NICAM
1028*53ee8cc1Swenshuai.xi };
1029*53ee8cc1Swenshuai.xi
1030*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_GDE_MN_NOTCH[]=
1031*53ee8cc1Swenshuai.xi {
1032*53ee8cc1Swenshuai.xi {N_A3_C0_L,0x1c}, // Notch_A3 (0.98)
1033*53ee8cc1Swenshuai.xi {N_A3_C0_H,0x03},
1034*53ee8cc1Swenshuai.xi {N_A3_C1_L,0x14},
1035*53ee8cc1Swenshuai.xi {N_A3_C1_H,0x06},
1036*53ee8cc1Swenshuai.xi {N_A3_C2_L,0xd4},
1037*53ee8cc1Swenshuai.xi {N_A3_C2_H,0x04},
1038*53ee8cc1Swenshuai.xi {N_A4_C0_L,0xe8}, // Notch_A4, R = 0.94
1039*53ee8cc1Swenshuai.xi {N_A4_C0_H,0x02},
1040*53ee8cc1Swenshuai.xi {N_A4_C1_L,0x3c},
1041*53ee8cc1Swenshuai.xi {N_A4_C1_H,0x06},
1042*53ee8cc1Swenshuai.xi {N_A4_C2_L,0xe8},
1043*53ee8cc1Swenshuai.xi {N_A4_C2_H,0x04},
1044*53ee8cc1Swenshuai.xi {N_A5_C0_L,0x02}, // Notch_A5 at 9MHz, image of audio 1 (bw 3.5, Apass 0.05)
1045*53ee8cc1Swenshuai.xi {N_A5_C0_H,0x01},
1046*53ee8cc1Swenshuai.xi {N_A5_C1_L,0x1c},
1047*53ee8cc1Swenshuai.xi {N_A5_C1_H,0x06},
1048*53ee8cc1Swenshuai.xi {N_A5_C2_L,0xf7},
1049*53ee8cc1Swenshuai.xi {N_A5_C2_H,0x06},
1050*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // NTSC M/N
1051*53ee8cc1Swenshuai.xi };
1052*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_NTSC_MN_A2[]=
1053*53ee8cc1Swenshuai.xi {
1054*53ee8cc1Swenshuai.xi {N_A1_C0_L,0xfc}, // Notch_A1, R = 0.94
1055*53ee8cc1Swenshuai.xi {N_A1_C0_H,0x02},
1056*53ee8cc1Swenshuai.xi {N_A1_C1_L,0x3c},
1057*53ee8cc1Swenshuai.xi {N_A1_C1_H,0x06},
1058*53ee8cc1Swenshuai.xi {N_A1_C2_L,0xd4},
1059*53ee8cc1Swenshuai.xi {N_A1_C2_H,0x04},
1060*53ee8cc1Swenshuai.xi {N_A2_C0_L,0xe8}, // Notch_A2, R = 0.94
1061*53ee8cc1Swenshuai.xi {N_A2_C0_H,0x02},
1062*53ee8cc1Swenshuai.xi {N_A2_C1_L,0x3c},
1063*53ee8cc1Swenshuai.xi {N_A2_C1_H,0x06},
1064*53ee8cc1Swenshuai.xi {N_A2_C2_L,0xe8},
1065*53ee8cc1Swenshuai.xi {N_A2_C2_H,0x04},
1066*53ee8cc1Swenshuai.xi {SOS12_C0_L,0xfc}, // SOS12, R = 0.94
1067*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x02},
1068*53ee8cc1Swenshuai.xi {SOS12_C1_L,0x3c},
1069*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
1070*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
1071*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
1072*53ee8cc1Swenshuai.xi {SOS12_C3_L,0xd4},
1073*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x04},
1074*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
1075*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
1076*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00}, // NTSC M/N
1077*53ee8cc1Swenshuai.xi };
1078*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_DK_LOWER_ACI[]=
1079*53ee8cc1Swenshuai.xi {
1080*53ee8cc1Swenshuai.xi {SOS11_C0_L,0x3a}, // SOS11 notch at 16.5MHz (0.94)
1081*53ee8cc1Swenshuai.xi {SOS11_C0_H,0x05},
1082*53ee8cc1Swenshuai.xi {SOS11_C1_L,0x3c},
1083*53ee8cc1Swenshuai.xi {SOS11_C1_H,0x06},
1084*53ee8cc1Swenshuai.xi {SOS11_C2_L,0x00},
1085*53ee8cc1Swenshuai.xi {SOS11_C2_H,0x02},
1086*53ee8cc1Swenshuai.xi {SOS11_C3_L,0xf3},
1087*53ee8cc1Swenshuai.xi {SOS11_C3_H,0x02},
1088*53ee8cc1Swenshuai.xi {SOS11_C4_L,0x00},
1089*53ee8cc1Swenshuai.xi {SOS11_C4_H,0x02},
1090*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
1091*53ee8cc1Swenshuai.xi };
1092*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_I_LOWER_ACI[]=
1093*53ee8cc1Swenshuai.xi {
1094*53ee8cc1Swenshuai.xi {SOS11_C0_L,0x0d}, // SOS11 notch at 17MHz (0.94)
1095*53ee8cc1Swenshuai.xi {SOS11_C0_H,0x05},
1096*53ee8cc1Swenshuai.xi {SOS11_C1_L,0x3c},
1097*53ee8cc1Swenshuai.xi {SOS11_C1_H,0x06},
1098*53ee8cc1Swenshuai.xi {SOS11_C2_L,0x00},
1099*53ee8cc1Swenshuai.xi {SOS11_C2_H,0x02},
1100*53ee8cc1Swenshuai.xi {SOS11_C3_L,0x23},
1101*53ee8cc1Swenshuai.xi {SOS11_C3_H,0x03},
1102*53ee8cc1Swenshuai.xi {SOS11_C4_L,0x00},
1103*53ee8cc1Swenshuai.xi {SOS11_C4_H,0x02},
1104*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
1105*53ee8cc1Swenshuai.xi };
1106*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_GH_LOWER_ACI[]=
1107*53ee8cc1Swenshuai.xi {
1108*53ee8cc1Swenshuai.xi {SOS11_C0_L,0xe4}, // SOS11 notch at 17.5MHz (0.94)
1109*53ee8cc1Swenshuai.xi {SOS11_C0_H,0x04},
1110*53ee8cc1Swenshuai.xi {SOS11_C1_L,0x3c},
1111*53ee8cc1Swenshuai.xi {SOS11_C1_H,0x06},
1112*53ee8cc1Swenshuai.xi {SOS11_C2_L,0x00},
1113*53ee8cc1Swenshuai.xi {SOS11_C2_H,0x02},
1114*53ee8cc1Swenshuai.xi {SOS11_C3_L,0x4f},
1115*53ee8cc1Swenshuai.xi {SOS11_C3_H,0x03},
1116*53ee8cc1Swenshuai.xi {SOS11_C4_L,0x00},
1117*53ee8cc1Swenshuai.xi {SOS11_C4_H,0x02},
1118*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
1119*53ee8cc1Swenshuai.xi };
1120*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_B_LOWER_ACI[]=
1121*53ee8cc1Swenshuai.xi {
1122*53ee8cc1Swenshuai.xi {SOS11_C0_L,0x1C}, // SOS11 notch at 16.5MHz (0.98)
1123*53ee8cc1Swenshuai.xi {SOS11_C0_H,0x05},
1124*53ee8cc1Swenshuai.xi {SOS11_C1_L,0x14},
1125*53ee8cc1Swenshuai.xi {SOS11_C1_H,0x06},
1126*53ee8cc1Swenshuai.xi {SOS11_C2_L,0x00},
1127*53ee8cc1Swenshuai.xi {SOS11_C2_H,0x02},
1128*53ee8cc1Swenshuai.xi {SOS11_C3_L,0xF3},
1129*53ee8cc1Swenshuai.xi {SOS11_C3_H,0x02},
1130*53ee8cc1Swenshuai.xi {SOS11_C4_L,0x00},
1131*53ee8cc1Swenshuai.xi {SOS11_C4_H,0x02},
1132*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
1133*53ee8cc1Swenshuai.xi };
1134*53ee8cc1Swenshuai.xi
1135*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_NTSC_MN_LOWER_ACI[]=
1136*53ee8cc1Swenshuai.xi {
1137*53ee8cc1Swenshuai.xi {SOS11_C0_L,0x15}, // SOS11 notch at 16.5MHz
1138*53ee8cc1Swenshuai.xi {SOS11_C0_H,0x05},
1139*53ee8cc1Swenshuai.xi {SOS11_C1_L,0x0A},
1140*53ee8cc1Swenshuai.xi {SOS11_C1_H,0x06},
1141*53ee8cc1Swenshuai.xi {SOS11_C2_L,0x00},
1142*53ee8cc1Swenshuai.xi {SOS11_C2_H,0x02},
1143*53ee8cc1Swenshuai.xi {SOS11_C3_L,0xF3},
1144*53ee8cc1Swenshuai.xi {SOS11_C3_H,0x02},
1145*53ee8cc1Swenshuai.xi {SOS11_C4_L,0x00},
1146*53ee8cc1Swenshuai.xi {SOS11_C4_H,0x02},
1147*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
1148*53ee8cc1Swenshuai.xi };
1149*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_DK_Audio_SingleSAW[]=
1150*53ee8cc1Swenshuai.xi {
1151*53ee8cc1Swenshuai.xi {SOS12_C0_L,0x0D}, // SOS12 notch at 8.5MHz
1152*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x01},
1153*53ee8cc1Swenshuai.xi {SOS12_C1_L,0xB8},
1154*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
1155*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
1156*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
1157*53ee8cc1Swenshuai.xi {SOS12_C3_L,0xB0},
1158*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x06},
1159*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
1160*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
1161*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
1162*53ee8cc1Swenshuai.xi };
1163*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_GH_Audio_SingleSAW[]=
1164*53ee8cc1Swenshuai.xi {
1165*53ee8cc1Swenshuai.xi {SOS12_C0_L,0x9A}, // SOS12 notch at 9.5MHz
1166*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x00},
1167*53ee8cc1Swenshuai.xi {SOS12_C1_L,0xB8},
1168*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
1169*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
1170*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
1171*53ee8cc1Swenshuai.xi {SOS12_C3_L,0x40},
1172*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x07},
1173*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
1174*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
1175*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
1176*53ee8cc1Swenshuai.xi };
1177*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_PAL_I_Audio_SingleSAW[]=
1178*53ee8cc1Swenshuai.xi {
1179*53ee8cc1Swenshuai.xi {SOS12_C0_L,0xD4}, // SOS12 notch at 9MHz
1180*53ee8cc1Swenshuai.xi {SOS12_C0_H,0x00},
1181*53ee8cc1Swenshuai.xi {SOS12_C1_L,0xB8},
1182*53ee8cc1Swenshuai.xi {SOS12_C1_H,0x06},
1183*53ee8cc1Swenshuai.xi {SOS12_C2_L,0x00},
1184*53ee8cc1Swenshuai.xi {SOS12_C2_H,0x02},
1185*53ee8cc1Swenshuai.xi {SOS12_C3_L,0xF7},
1186*53ee8cc1Swenshuai.xi {SOS12_C3_H,0x06},
1187*53ee8cc1Swenshuai.xi {SOS12_C4_L,0x00},
1188*53ee8cc1Swenshuai.xi {SOS12_C4_H,0x02},
1189*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
1190*53ee8cc1Swenshuai.xi };
1191*53ee8cc1Swenshuai.xi
1192*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_NULL_LOWER_ACI[]=
1193*53ee8cc1Swenshuai.xi {
1194*53ee8cc1Swenshuai.xi {SOS11_C0_L,0x00}, // SOS11
1195*53ee8cc1Swenshuai.xi {SOS11_C0_H,0x00},
1196*53ee8cc1Swenshuai.xi {SOS11_C1_L,0x00},
1197*53ee8cc1Swenshuai.xi {SOS11_C1_H,0x00},
1198*53ee8cc1Swenshuai.xi {SOS11_C2_L,0x00},
1199*53ee8cc1Swenshuai.xi {SOS11_C2_H,0x00},
1200*53ee8cc1Swenshuai.xi {SOS11_C3_L,0x00},
1201*53ee8cc1Swenshuai.xi {SOS11_C3_H,0x00},
1202*53ee8cc1Swenshuai.xi {SOS11_C4_L,0x00},
1203*53ee8cc1Swenshuai.xi {SOS11_C4_H,0x02},
1204*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
1205*53ee8cc1Swenshuai.xi };
1206*53ee8cc1Swenshuai.xi
1207*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_CR_IIR_LPF1[]=
1208*53ee8cc1Swenshuai.xi {
1209*53ee8cc1Swenshuai.xi {CR_IIR_COEF_G,0x02},
1210*53ee8cc1Swenshuai.xi {CR_IIR_COEF_G+1,0x00},
1211*53ee8cc1Swenshuai.xi {CR_IIR_COEF_A1,0xfc},
1212*53ee8cc1Swenshuai.xi {CR_IIR_COEF_A1+1,0x01},
1213*53ee8cc1Swenshuai.xi {CR_IIR_COEF_A2,0x00},
1214*53ee8cc1Swenshuai.xi {CR_IIR_COEF_A2+1,0x00},
1215*53ee8cc1Swenshuai.xi {CR_IIR_COEF_B1,0x00},
1216*53ee8cc1Swenshuai.xi {CR_IIR_COEF_B1+1,0x02},
1217*53ee8cc1Swenshuai.xi {CR_IIR_COEF_B2,0x00},
1218*53ee8cc1Swenshuai.xi {CR_IIR_COEF_B2+1,0x00},
1219*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
1220*53ee8cc1Swenshuai.xi };
1221*53ee8cc1Swenshuai.xi MS_VIF_REG_TYPE VIF_CR_IIR_LPF2[]=
1222*53ee8cc1Swenshuai.xi {
1223*53ee8cc1Swenshuai.xi {CR_IIR_COEF_G,0x02},
1224*53ee8cc1Swenshuai.xi {CR_IIR_COEF_G+1,0x00},
1225*53ee8cc1Swenshuai.xi {CR_IIR_COEF_A1,0xd6},
1226*53ee8cc1Swenshuai.xi {CR_IIR_COEF_A1+1,0x03},
1227*53ee8cc1Swenshuai.xi {CR_IIR_COEF_A2,0x27},
1228*53ee8cc1Swenshuai.xi {CR_IIR_COEF_A2+1,0x06},
1229*53ee8cc1Swenshuai.xi {CR_IIR_COEF_B1,0x5b},
1230*53ee8cc1Swenshuai.xi {CR_IIR_COEF_B1+1,0x06},
1231*53ee8cc1Swenshuai.xi {CR_IIR_COEF_B2,0x00},
1232*53ee8cc1Swenshuai.xi {CR_IIR_COEF_B2+1,0x02},
1233*53ee8cc1Swenshuai.xi {_END_OF_TBL_,0x00},
1234*53ee8cc1Swenshuai.xi };
1235*53ee8cc1Swenshuai.xi
1236*53ee8cc1Swenshuai.xi
1237*53ee8cc1Swenshuai.xi U16 VIF_PAL_EQ_CO_A_REJ[]=
1238*53ee8cc1Swenshuai.xi {
1239*53ee8cc1Swenshuai.xi 0x0009,
1240*53ee8cc1Swenshuai.xi 0x0003,
1241*53ee8cc1Swenshuai.xi 0x000B,
1242*53ee8cc1Swenshuai.xi 0x1FE1,
1243*53ee8cc1Swenshuai.xi 0x002F,
1244*53ee8cc1Swenshuai.xi 0x1FD0,
1245*53ee8cc1Swenshuai.xi 0x001F,
1246*53ee8cc1Swenshuai.xi 0x1FF2,
1247*53ee8cc1Swenshuai.xi 0x001A,
1248*53ee8cc1Swenshuai.xi 0x1FB4,
1249*53ee8cc1Swenshuai.xi 0x008A,
1250*53ee8cc1Swenshuai.xi 0x1F5E,
1251*53ee8cc1Swenshuai.xi 0x0077,
1252*53ee8cc1Swenshuai.xi 0x1FDC,
1253*53ee8cc1Swenshuai.xi 0x1FFC,
1254*53ee8cc1Swenshuai.xi 0x1FBB,
1255*53ee8cc1Swenshuai.xi 0x00F1,
1256*53ee8cc1Swenshuai.xi 0x1E79,
1257*53ee8cc1Swenshuai.xi 0x0165,
1258*53ee8cc1Swenshuai.xi 0x1FC9,
1259*53ee8cc1Swenshuai.xi 0x1E4C,
1260*53ee8cc1Swenshuai.xi 0x037C,
1261*53ee8cc1Swenshuai.xi 0x0BCA,
1262*53ee8cc1Swenshuai.xi 0x037C,
1263*53ee8cc1Swenshuai.xi 0x1E4C,
1264*53ee8cc1Swenshuai.xi 0x1FC9,
1265*53ee8cc1Swenshuai.xi 0x0165,
1266*53ee8cc1Swenshuai.xi 0x1E79,
1267*53ee8cc1Swenshuai.xi 0x00F1,
1268*53ee8cc1Swenshuai.xi 0x1FBB,
1269*53ee8cc1Swenshuai.xi 0x1FFC,
1270*53ee8cc1Swenshuai.xi 0x1FDC,
1271*53ee8cc1Swenshuai.xi 0x0077,
1272*53ee8cc1Swenshuai.xi 0x1F5E,
1273*53ee8cc1Swenshuai.xi 0x008A,
1274*53ee8cc1Swenshuai.xi 0x1FB4,
1275*53ee8cc1Swenshuai.xi 0x001A,
1276*53ee8cc1Swenshuai.xi 0x1FF2,
1277*53ee8cc1Swenshuai.xi 0x001F,
1278*53ee8cc1Swenshuai.xi 0x1FD0,
1279*53ee8cc1Swenshuai.xi 0x002F,
1280*53ee8cc1Swenshuai.xi 0x1FE1,
1281*53ee8cc1Swenshuai.xi 0x000B,
1282*53ee8cc1Swenshuai.xi 0x0003,
1283*53ee8cc1Swenshuai.xi 0x0009,
1284*53ee8cc1Swenshuai.xi 0x0000,
1285*53ee8cc1Swenshuai.xi
1286*53ee8cc1Swenshuai.xi 0x0000,
1287*53ee8cc1Swenshuai.xi 0x0000,
1288*53ee8cc1Swenshuai.xi 0x0000,
1289*53ee8cc1Swenshuai.xi 0x0000,
1290*53ee8cc1Swenshuai.xi 0x0000,
1291*53ee8cc1Swenshuai.xi 0x0000,
1292*53ee8cc1Swenshuai.xi 0x0000,
1293*53ee8cc1Swenshuai.xi 0x0000,
1294*53ee8cc1Swenshuai.xi 0x0000,
1295*53ee8cc1Swenshuai.xi 0x0000
1296*53ee8cc1Swenshuai.xi };
1297*53ee8cc1Swenshuai.xi
1298*53ee8cc1Swenshuai.xi U16 VIF_NTSC_EQ_CO_A_REJ[]=
1299*53ee8cc1Swenshuai.xi {
1300*53ee8cc1Swenshuai.xi 0x001B,
1301*53ee8cc1Swenshuai.xi 0x1FEB,
1302*53ee8cc1Swenshuai.xi 0x0001,
1303*53ee8cc1Swenshuai.xi 0x0000,
1304*53ee8cc1Swenshuai.xi 0x0024,
1305*53ee8cc1Swenshuai.xi 0x1FBF,
1306*53ee8cc1Swenshuai.xi 0x0027,
1307*53ee8cc1Swenshuai.xi 0x1FFE,
1308*53ee8cc1Swenshuai.xi 0x0025,
1309*53ee8cc1Swenshuai.xi 0x1F87,
1310*53ee8cc1Swenshuai.xi 0x0083,
1311*53ee8cc1Swenshuai.xi 0x1FD6,
1312*53ee8cc1Swenshuai.xi 0x0009,
1313*53ee8cc1Swenshuai.xi 0x1F78,
1314*53ee8cc1Swenshuai.xi 0x0106,
1315*53ee8cc1Swenshuai.xi 0x1F5A,
1316*53ee8cc1Swenshuai.xi 0x1FD9,
1317*53ee8cc1Swenshuai.xi 0x1FEF,
1318*53ee8cc1Swenshuai.xi 0x017E,
1319*53ee8cc1Swenshuai.xi 0x1DF8,
1320*53ee8cc1Swenshuai.xi 0x1FB4,
1321*53ee8cc1Swenshuai.xi 0x044E,
1322*53ee8cc1Swenshuai.xi 0x09AF,
1323*53ee8cc1Swenshuai.xi 0x044E,
1324*53ee8cc1Swenshuai.xi 0x1FB4,
1325*53ee8cc1Swenshuai.xi 0x1DF8,
1326*53ee8cc1Swenshuai.xi 0x017E,
1327*53ee8cc1Swenshuai.xi 0x1FEF,
1328*53ee8cc1Swenshuai.xi 0x1FD9,
1329*53ee8cc1Swenshuai.xi 0x1F5A,
1330*53ee8cc1Swenshuai.xi 0x0106,
1331*53ee8cc1Swenshuai.xi 0x1F78,
1332*53ee8cc1Swenshuai.xi 0x0009,
1333*53ee8cc1Swenshuai.xi 0x1FD6,
1334*53ee8cc1Swenshuai.xi 0x0083,
1335*53ee8cc1Swenshuai.xi 0x1F87,
1336*53ee8cc1Swenshuai.xi 0x0025,
1337*53ee8cc1Swenshuai.xi 0x1FFE,
1338*53ee8cc1Swenshuai.xi 0x0027,
1339*53ee8cc1Swenshuai.xi 0x1FBF,
1340*53ee8cc1Swenshuai.xi 0x0024,
1341*53ee8cc1Swenshuai.xi 0x0000,
1342*53ee8cc1Swenshuai.xi 0x0001,
1343*53ee8cc1Swenshuai.xi 0x1FEB,
1344*53ee8cc1Swenshuai.xi 0x001B,
1345*53ee8cc1Swenshuai.xi 0x0000,
1346*53ee8cc1Swenshuai.xi
1347*53ee8cc1Swenshuai.xi 0x0000,
1348*53ee8cc1Swenshuai.xi 0x0000,
1349*53ee8cc1Swenshuai.xi 0x0000,
1350*53ee8cc1Swenshuai.xi 0x0000,
1351*53ee8cc1Swenshuai.xi 0x0000,
1352*53ee8cc1Swenshuai.xi 0x0000,
1353*53ee8cc1Swenshuai.xi 0x0000,
1354*53ee8cc1Swenshuai.xi 0x0000,
1355*53ee8cc1Swenshuai.xi 0x0000,
1356*53ee8cc1Swenshuai.xi 0x0000
1357*53ee8cc1Swenshuai.xi };
1358*53ee8cc1Swenshuai.xi
1359*53ee8cc1Swenshuai.xi U16 VIF_BG_EQ_IIR_BANDSTOP[]=
1360*53ee8cc1Swenshuai.xi {
1361*53ee8cc1Swenshuai.xi 0x070B,
1362*53ee8cc1Swenshuai.xi 0x0C15,
1363*53ee8cc1Swenshuai.xi 0x0BBB,
1364*53ee8cc1Swenshuai.xi 0x064E,
1365*53ee8cc1Swenshuai.xi 0x070B,
1366*53ee8cc1Swenshuai.xi 0x0B1A,
1367*53ee8cc1Swenshuai.xi 0x070B,
1368*53ee8cc1Swenshuai.xi 0x09F9,
1369*53ee8cc1Swenshuai.xi 0x05F9,
1370*53ee8cc1Swenshuai.xi
1371*53ee8cc1Swenshuai.xi 0x07AF,
1372*53ee8cc1Swenshuai.xi 0x0BB0,
1373*53ee8cc1Swenshuai.xi 0x0A66,
1374*53ee8cc1Swenshuai.xi 0x0765,
1375*53ee8cc1Swenshuai.xi 0x07AF,
1376*53ee8cc1Swenshuai.xi 0x0C6B,
1377*53ee8cc1Swenshuai.xi 0x07AF,
1378*53ee8cc1Swenshuai.xi 0x0D1B,
1379*53ee8cc1Swenshuai.xi 0x078D
1380*53ee8cc1Swenshuai.xi };
1381*53ee8cc1Swenshuai.xi
1382*53ee8cc1Swenshuai.xi U16 VIF_BG_NICAM_EQ_IIR_NOTCH[]=
1383*53ee8cc1Swenshuai.xi {
1384*53ee8cc1Swenshuai.xi 0x0764,
1385*53ee8cc1Swenshuai.xi 0x0BCC,
1386*53ee8cc1Swenshuai.xi 0x0AE6,
1387*53ee8cc1Swenshuai.xi 0x06C8,
1388*53ee8cc1Swenshuai.xi 0x0764,
1389*53ee8cc1Swenshuai.xi 0x0C4A,
1390*53ee8cc1Swenshuai.xi 0x0764,
1391*53ee8cc1Swenshuai.xi 0x0C4A,
1392*53ee8cc1Swenshuai.xi 0x06C8,
1393*53ee8cc1Swenshuai.xi
1394*53ee8cc1Swenshuai.xi 0x0764,
1395*53ee8cc1Swenshuai.xi 0x0BCC,
1396*53ee8cc1Swenshuai.xi 0x0AE6,
1397*53ee8cc1Swenshuai.xi 0x06C8,
1398*53ee8cc1Swenshuai.xi 0x0764,
1399*53ee8cc1Swenshuai.xi 0x0C4A,
1400*53ee8cc1Swenshuai.xi 0x0764,
1401*53ee8cc1Swenshuai.xi 0x0C4A,
1402*53ee8cc1Swenshuai.xi 0x06C8
1403*53ee8cc1Swenshuai.xi };
1404*53ee8cc1Swenshuai.xi
1405*53ee8cc1Swenshuai.xi U16 VIF_I_EQ_IIR_NOTCH[]=
1406*53ee8cc1Swenshuai.xi {
1407*53ee8cc1Swenshuai.xi 0x0764,
1408*53ee8cc1Swenshuai.xi 0x0DDB,
1409*53ee8cc1Swenshuai.xi 0x0CCD,
1410*53ee8cc1Swenshuai.xi 0x06C8,
1411*53ee8cc1Swenshuai.xi 0x0764,
1412*53ee8cc1Swenshuai.xi 0x0E30,
1413*53ee8cc1Swenshuai.xi 0x0764,
1414*53ee8cc1Swenshuai.xi 0x0E30,
1415*53ee8cc1Swenshuai.xi 0x06C8,
1416*53ee8cc1Swenshuai.xi
1417*53ee8cc1Swenshuai.xi 0x0764,
1418*53ee8cc1Swenshuai.xi 0x0DDB,
1419*53ee8cc1Swenshuai.xi 0x0CCD,
1420*53ee8cc1Swenshuai.xi 0x06C8,
1421*53ee8cc1Swenshuai.xi 0x0764,
1422*53ee8cc1Swenshuai.xi 0x0E30,
1423*53ee8cc1Swenshuai.xi 0x0764,
1424*53ee8cc1Swenshuai.xi 0x0E30,
1425*53ee8cc1Swenshuai.xi 0x06C8
1426*53ee8cc1Swenshuai.xi };
1427*53ee8cc1Swenshuai.xi
1428*53ee8cc1Swenshuai.xi U16 VIF_DK1_EQ_IIR_NOTCH[]=
1429*53ee8cc1Swenshuai.xi {
1430*53ee8cc1Swenshuai.xi 0x0764,
1431*53ee8cc1Swenshuai.xi 0x0F41,
1432*53ee8cc1Swenshuai.xi 0x0E18,
1433*53ee8cc1Swenshuai.xi 0x06C8,
1434*53ee8cc1Swenshuai.xi 0x0764,
1435*53ee8cc1Swenshuai.xi 0x0D87,
1436*53ee8cc1Swenshuai.xi 0x0764,
1437*53ee8cc1Swenshuai.xi 0x0D87,
1438*53ee8cc1Swenshuai.xi 0x06C8,
1439*53ee8cc1Swenshuai.xi
1440*53ee8cc1Swenshuai.xi 0x0764,
1441*53ee8cc1Swenshuai.xi 0x0F41,
1442*53ee8cc1Swenshuai.xi 0x0E18,
1443*53ee8cc1Swenshuai.xi 0x06C8,
1444*53ee8cc1Swenshuai.xi 0x0764,
1445*53ee8cc1Swenshuai.xi 0x0D87,
1446*53ee8cc1Swenshuai.xi 0x0764,
1447*53ee8cc1Swenshuai.xi 0x0D87,
1448*53ee8cc1Swenshuai.xi 0x06C8
1449*53ee8cc1Swenshuai.xi };
1450*53ee8cc1Swenshuai.xi
1451*53ee8cc1Swenshuai.xi U16 VIF_DK2_EQ_IIR_NOTCH[]=
1452*53ee8cc1Swenshuai.xi {
1453*53ee8cc1Swenshuai.xi 0x0764,
1454*53ee8cc1Swenshuai.xi 0x0F41,
1455*53ee8cc1Swenshuai.xi 0x0E18,
1456*53ee8cc1Swenshuai.xi 0x06C8,
1457*53ee8cc1Swenshuai.xi 0x0764,
1458*53ee8cc1Swenshuai.xi 0x0E7F,
1459*53ee8cc1Swenshuai.xi 0x0764,
1460*53ee8cc1Swenshuai.xi 0x0E7F,
1461*53ee8cc1Swenshuai.xi 0x06C8,
1462*53ee8cc1Swenshuai.xi
1463*53ee8cc1Swenshuai.xi 0x0764,
1464*53ee8cc1Swenshuai.xi 0x0F41,
1465*53ee8cc1Swenshuai.xi 0x0E18,
1466*53ee8cc1Swenshuai.xi 0x06C8,
1467*53ee8cc1Swenshuai.xi 0x0764,
1468*53ee8cc1Swenshuai.xi 0x0E7F,
1469*53ee8cc1Swenshuai.xi 0x0764,
1470*53ee8cc1Swenshuai.xi 0x0E7F,
1471*53ee8cc1Swenshuai.xi 0x06C8
1472*53ee8cc1Swenshuai.xi };
1473*53ee8cc1Swenshuai.xi
1474*53ee8cc1Swenshuai.xi U16 VIF_DK3_EQ_IIR_NOTCH[]=
1475*53ee8cc1Swenshuai.xi {
1476*53ee8cc1Swenshuai.xi 0x0764,
1477*53ee8cc1Swenshuai.xi 0x0F41,
1478*53ee8cc1Swenshuai.xi 0x0E18,
1479*53ee8cc1Swenshuai.xi 0x06C8,
1480*53ee8cc1Swenshuai.xi 0x0764,
1481*53ee8cc1Swenshuai.xi 0x0BEB,
1482*53ee8cc1Swenshuai.xi 0x0764,
1483*53ee8cc1Swenshuai.xi 0x0BEB,
1484*53ee8cc1Swenshuai.xi 0x06C8,
1485*53ee8cc1Swenshuai.xi
1486*53ee8cc1Swenshuai.xi 0x0764,
1487*53ee8cc1Swenshuai.xi 0x0F41,
1488*53ee8cc1Swenshuai.xi 0x0E18,
1489*53ee8cc1Swenshuai.xi 0x06C8,
1490*53ee8cc1Swenshuai.xi 0x0764,
1491*53ee8cc1Swenshuai.xi 0x0BEB,
1492*53ee8cc1Swenshuai.xi 0x0764,
1493*53ee8cc1Swenshuai.xi 0x0BEB,
1494*53ee8cc1Swenshuai.xi 0x06C8
1495*53ee8cc1Swenshuai.xi };
1496*53ee8cc1Swenshuai.xi
1497*53ee8cc1Swenshuai.xi U16 VIF_DK_NICAM_EQ_IIR_NOTCH[]=
1498*53ee8cc1Swenshuai.xi {
1499*53ee8cc1Swenshuai.xi 0x0764,
1500*53ee8cc1Swenshuai.xi 0x0F41,
1501*53ee8cc1Swenshuai.xi 0x0E18,
1502*53ee8cc1Swenshuai.xi 0x06C8,
1503*53ee8cc1Swenshuai.xi 0x0764,
1504*53ee8cc1Swenshuai.xi 0x0C4A,
1505*53ee8cc1Swenshuai.xi 0x0764,
1506*53ee8cc1Swenshuai.xi 0x0C4A,
1507*53ee8cc1Swenshuai.xi 0x06C8,
1508*53ee8cc1Swenshuai.xi
1509*53ee8cc1Swenshuai.xi 0x0764,
1510*53ee8cc1Swenshuai.xi 0x0F41,
1511*53ee8cc1Swenshuai.xi 0x0E18,
1512*53ee8cc1Swenshuai.xi 0x06C8,
1513*53ee8cc1Swenshuai.xi 0x0764,
1514*53ee8cc1Swenshuai.xi 0x0C4A,
1515*53ee8cc1Swenshuai.xi 0x0764,
1516*53ee8cc1Swenshuai.xi 0x0C4A,
1517*53ee8cc1Swenshuai.xi 0x06C8
1518*53ee8cc1Swenshuai.xi };
1519*53ee8cc1Swenshuai.xi
1520*53ee8cc1Swenshuai.xi U16 VIF_NTSC_MN_EQ_IIR_NOTCH[]=
1521*53ee8cc1Swenshuai.xi {
1522*53ee8cc1Swenshuai.xi 0x079E,
1523*53ee8cc1Swenshuai.xi 0x0620,
1524*53ee8cc1Swenshuai.xi 0x05D5,
1525*53ee8cc1Swenshuai.xi 0x073C,
1526*53ee8cc1Swenshuai.xi 0x079E,
1527*53ee8cc1Swenshuai.xi 0x072F,
1528*53ee8cc1Swenshuai.xi 0x079E,
1529*53ee8cc1Swenshuai.xi 0x072F,
1530*53ee8cc1Swenshuai.xi 0x073C,
1531*53ee8cc1Swenshuai.xi
1532*53ee8cc1Swenshuai.xi 0x079E,
1533*53ee8cc1Swenshuai.xi 0x0620,
1534*53ee8cc1Swenshuai.xi 0x05D5,
1535*53ee8cc1Swenshuai.xi 0x073C,
1536*53ee8cc1Swenshuai.xi 0x079E,
1537*53ee8cc1Swenshuai.xi 0x072F,
1538*53ee8cc1Swenshuai.xi 0x079E,
1539*53ee8cc1Swenshuai.xi 0x072F,
1540*53ee8cc1Swenshuai.xi 0x073C
1541*53ee8cc1Swenshuai.xi };
1542*53ee8cc1Swenshuai.xi
1543*53ee8cc1Swenshuai.xi
msWriteByteMask(U32 u32Reg,U8 u8Val,U8 u8Mask)1544*53ee8cc1Swenshuai.xi void msWriteByteMask(U32 u32Reg, U8 u8Val, U8 u8Mask)
1545*53ee8cc1Swenshuai.xi {
1546*53ee8cc1Swenshuai.xi RIU_WriteByteMask(u32Reg, u8Val, u8Mask);
1547*53ee8cc1Swenshuai.xi msVifLoad();
1548*53ee8cc1Swenshuai.xi }
1549*53ee8cc1Swenshuai.xi
msWriteBit(U32 u32Reg,BOOL bEnable,U8 u8Mask)1550*53ee8cc1Swenshuai.xi void msWriteBit(U32 u32Reg, BOOL bEnable, U8 u8Mask)
1551*53ee8cc1Swenshuai.xi {
1552*53ee8cc1Swenshuai.xi RIU_WriteRegBit(u32Reg, bEnable, u8Mask);
1553*53ee8cc1Swenshuai.xi msVifLoad();
1554*53ee8cc1Swenshuai.xi }
1555*53ee8cc1Swenshuai.xi
msWriteByte(U32 u32Reg,U8 u8Val)1556*53ee8cc1Swenshuai.xi void msWriteByte(U32 u32Reg, U8 u8Val )
1557*53ee8cc1Swenshuai.xi {
1558*53ee8cc1Swenshuai.xi RIU_WriteByte(u32Reg,u8Val);
1559*53ee8cc1Swenshuai.xi msVifLoad();
1560*53ee8cc1Swenshuai.xi }
1561*53ee8cc1Swenshuai.xi
HAL_VIF_WriteByteMask(U32 u32Reg,U8 u8Val,U8 u8Mask)1562*53ee8cc1Swenshuai.xi void HAL_VIF_WriteByteMask(U32 u32Reg, U8 u8Val, U8 u8Mask)
1563*53ee8cc1Swenshuai.xi {
1564*53ee8cc1Swenshuai.xi msWriteByteMask(u32Reg, u8Val, u8Mask);
1565*53ee8cc1Swenshuai.xi }
1566*53ee8cc1Swenshuai.xi
HAL_VIF_WriteBit(U32 u32Reg,BOOL bEnable,U8 u8Mask)1567*53ee8cc1Swenshuai.xi void HAL_VIF_WriteBit(U32 u32Reg, BOOL bEnable, U8 u8Mask)
1568*53ee8cc1Swenshuai.xi {
1569*53ee8cc1Swenshuai.xi msWriteBit(u32Reg, bEnable, u8Mask);
1570*53ee8cc1Swenshuai.xi }
1571*53ee8cc1Swenshuai.xi
HAL_VIF_WriteByte(U32 u32Reg,U8 u8Val)1572*53ee8cc1Swenshuai.xi void HAL_VIF_WriteByte(U32 u32Reg, U8 u8Val )
1573*53ee8cc1Swenshuai.xi {
1574*53ee8cc1Swenshuai.xi msWriteByte(u32Reg, u8Val);
1575*53ee8cc1Swenshuai.xi }
1576*53ee8cc1Swenshuai.xi
HAL_VIF_ReadByte(U32 u32Reg)1577*53ee8cc1Swenshuai.xi U8 HAL_VIF_ReadByte(U32 u32Reg )
1578*53ee8cc1Swenshuai.xi {
1579*53ee8cc1Swenshuai.xi return msReadByte(u32Reg);
1580*53ee8cc1Swenshuai.xi }
1581*53ee8cc1Swenshuai.xi
msWriteRegsTbl(MS_VIF_REG_TYPE * pRegTable)1582*53ee8cc1Swenshuai.xi void msWriteRegsTbl(MS_VIF_REG_TYPE *pRegTable)
1583*53ee8cc1Swenshuai.xi {
1584*53ee8cc1Swenshuai.xi U16 u16Dummy;
1585*53ee8cc1Swenshuai.xi U32 u32Address;
1586*53ee8cc1Swenshuai.xi U8 u8Value;
1587*53ee8cc1Swenshuai.xi
1588*53ee8cc1Swenshuai.xi u16Dummy = 2000;
1589*53ee8cc1Swenshuai.xi
1590*53ee8cc1Swenshuai.xi do
1591*53ee8cc1Swenshuai.xi {
1592*53ee8cc1Swenshuai.xi u32Address = pRegTable->u32Address;
1593*53ee8cc1Swenshuai.xi u8Value = pRegTable->u8Value;
1594*53ee8cc1Swenshuai.xi if (u32Address == 0xFFFF) // check end of table
1595*53ee8cc1Swenshuai.xi break;
1596*53ee8cc1Swenshuai.xi RIU_WriteByte(u32Address, u8Value);
1597*53ee8cc1Swenshuai.xi pRegTable++;
1598*53ee8cc1Swenshuai.xi } while (--u16Dummy > 0);
1599*53ee8cc1Swenshuai.xi msVifLoad();
1600*53ee8cc1Swenshuai.xi }
1601*53ee8cc1Swenshuai.xi
HAL_VIF_RegInit(void)1602*53ee8cc1Swenshuai.xi void HAL_VIF_RegInit (void)
1603*53ee8cc1Swenshuai.xi {
1604*53ee8cc1Swenshuai.xi MS_PHY phyNonPMBankSize, phyPMBankSize;
1605*53ee8cc1Swenshuai.xi MS_VIRT virtNonPMBank, virtPMBank;
1606*53ee8cc1Swenshuai.xi
1607*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nHAL_VIF_RegInit()"));
1608*53ee8cc1Swenshuai.xi if (!MDrv_MMIO_GetBASE( &virtNonPMBank, &phyNonPMBankSize, MS_MODULE_VIF))
1609*53ee8cc1Swenshuai.xi {
1610*53ee8cc1Swenshuai.xi printf("\r\nIOMap failure to get MAP_NONPM_BANK");
1611*53ee8cc1Swenshuai.xi virtNonPMBank = BASEADDR_RIU; // TODO what to do if failed??
1612*53ee8cc1Swenshuai.xi }
1613*53ee8cc1Swenshuai.xi else
1614*53ee8cc1Swenshuai.xi {
1615*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nMS_MODULE_VIF base = 0x%lX, length = %lu", virtNonPMBank, phyNonPMBankSize));
1616*53ee8cc1Swenshuai.xi }
1617*53ee8cc1Swenshuai.xi
1618*53ee8cc1Swenshuai.xi _hal_VIF.virtVIFBaseAddr = virtNonPMBank;
1619*53ee8cc1Swenshuai.xi _hal_VIF.bBaseAddrInitialized = 1;
1620*53ee8cc1Swenshuai.xi
1621*53ee8cc1Swenshuai.xi if (!MDrv_MMIO_GetBASE( &virtPMBank, &phyPMBankSize, MS_MODULE_PM))
1622*53ee8cc1Swenshuai.xi {
1623*53ee8cc1Swenshuai.xi printf("\r\nIOMap failure to get MAP_PM_BANK");
1624*53ee8cc1Swenshuai.xi virtPMBank = (VIRT)BASEADDR_RIU; // TODO what to do if failed??
1625*53ee8cc1Swenshuai.xi }
1626*53ee8cc1Swenshuai.xi else
1627*53ee8cc1Swenshuai.xi {
1628*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nMS_MODULE_PM base = 0x%lX, length = %lu", virtPMBank, phyPMBankSize));
1629*53ee8cc1Swenshuai.xi }
1630*53ee8cc1Swenshuai.xi }
1631*53ee8cc1Swenshuai.xi
1632*53ee8cc1Swenshuai.xi
HAL_VIF_SetClock(BOOL bEnable)1633*53ee8cc1Swenshuai.xi void HAL_VIF_SetClock(BOOL bEnable)
1634*53ee8cc1Swenshuai.xi {
1635*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nHAL_VIF_SetClock=%d",bEnable));
1636*53ee8cc1Swenshuai.xi
1637*53ee8cc1Swenshuai.xi //bEnable = (bEnable) ? 0:1; // 0 means enable
1638*53ee8cc1Swenshuai.xi }
1639*53ee8cc1Swenshuai.xi
msVifAdcInitial(void)1640*53ee8cc1Swenshuai.xi void msVifAdcInitial(void)
1641*53ee8cc1Swenshuai.xi {
1642*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nmsVifAdcInitial()"));
1643*53ee8cc1Swenshuai.xi
1644*53ee8cc1Swenshuai.xi if (!_hal_VIF.bBaseAddrInitialized) return ;
1645*53ee8cc1Swenshuai.xi
1646*53ee8cc1Swenshuai.xi RIU_WriteByteMask(0x1E39L, 0x00, 0x03); // DMDTOP/DMDANA_controlled by HK_MCU (0) or DMD_MCU (1)
1647*53ee8cc1Swenshuai.xi
1648*53ee8cc1Swenshuai.xi // enable vif DAC clock
1649*53ee8cc1Swenshuai.xi // enable atsc_adcd_sync clock
1650*53ee8cc1Swenshuai.xi RIU_WriteByte(0x331AL, 0x04);
1651*53ee8cc1Swenshuai.xi RIU_WriteByte(0x331BL, 0x00);
1652*53ee8cc1Swenshuai.xi
1653*53ee8cc1Swenshuai.xi // enable vif clock
1654*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F1CL, 0x00);
1655*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F1DL, 0x00);
1656*53ee8cc1Swenshuai.xi
1657*53ee8cc1Swenshuai.xi // SRAM share clock
1658*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11FE2L, 0x01); // ckg_dvbtm_sram_t14x_t24x_srd1x
1659*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11FE3L, 0x10);
1660*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F78L, 0x00); // ckg_dvbtm_sram_t14x_t24x_srd1x_vifssc_isdbt_inner4x
1661*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F79L, 0x00);
1662*53ee8cc1Swenshuai.xi
1663*53ee8cc1Swenshuai.xi // ACIFIR clock
1664*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F24L, 0x01);
1665*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F25L, 0x08);
1666*53ee8cc1Swenshuai.xi
1667*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F2AL, 0x00); // DAGC1/2 SRAM MUX
1668*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F2BL, 0x00);
1669*53ee8cc1Swenshuai.xi
1670*53ee8cc1Swenshuai.xi RIU_WriteByte(0x52990L, 0x00); // ckg_dvbtm_sram_t14x_t24x_t24x_srd1x_vifssc_isdbt_inner4x_dtmb_inner12x
1671*53ee8cc1Swenshuai.xi RIU_WriteByte(0x52991L, 0x01); // ckg_sram_t14x_t24x_s2inn_isdbt_inn2x_dtmb_eq2x
1672*53ee8cc1Swenshuai.xi
1673*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127C0L, 0x00); // mulan_dvbt2_sram_share_en
1674*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127C1L, 0x00);
1675*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127C2L, 0x00);
1676*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127C3L, 0x00);
1677*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127C4L, 0x00);
1678*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127C5L, 0x00);
1679*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127C6L, 0x00);
1680*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127C7L, 0x00);
1681*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127C8L, 0x00);
1682*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127C9L, 0x00);
1683*53ee8cc1Swenshuai.xi
1684*53ee8cc1Swenshuai.xi // SRAM Power Control
1685*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12090L, 0xB8);
1686*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12091L, 0xBB);
1687*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E0L, 0x70); // SRAM_PWR_CTRL_SEL
1688*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E1L, 0x00);
1689*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E2L, 0x00);
1690*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E3L, 0x00);
1691*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E4L, 0x00);
1692*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E5L, 0x00);
1693*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E6L, 0x00);
1694*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E7L, 0x00);
1695*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E8L, 0x00);
1696*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E9L, 0x00);
1697*53ee8cc1Swenshuai.xi
1698*53ee8cc1Swenshuai.xi // Enable VIF, DVBT, ATSC and VIF reset
1699*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12002L, 0x74);
1700*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12003L, 0x00);
1701*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12002L, 0x14); // Enable VIF
1702*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12003L, 0x00);
1703*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12004L, 0x22);
1704*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12005L, 0x00);
1705*53ee8cc1Swenshuai.xi
1706*53ee8cc1Swenshuai.xi // DMD_ANA_ADC_SYNC CLK_W
1707*53ee8cc1Swenshuai.xi // [0] : disable clock = 1'b1
1708*53ee8cc1Swenshuai.xi // [1] : invert clock
1709*53ee8cc1Swenshuai.xi RIU_WriteByte(0x128D0L, 0x01);
1710*53ee8cc1Swenshuai.xi
1711*53ee8cc1Swenshuai.xi // Disable ADC sign bit
1712*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12060L, 0x04);
1713*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12061L, 0x00);
1714*53ee8cc1Swenshuai.xi
1715*53ee8cc1Swenshuai.xi // ADC I channel offset
1716*53ee8cc1Swenshuai.xi // Change unsin into sin
1717*53ee8cc1Swenshuai.xi // [11:0] reg_adc_offset_i
1718*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12064L, 0x00);
1719*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12065L, 0x00);
1720*53ee8cc1Swenshuai.xi
1721*53ee8cc1Swenshuai.xi // ADC Q channel offset
1722*53ee8cc1Swenshuai.xi // Change unsin into sin
1723*53ee8cc1Swenshuai.xi // [11:0] reg_adc_offset_q
1724*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12066L, 0x00);
1725*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12067L, 0x00);
1726*53ee8cc1Swenshuai.xi
1727*53ee8cc1Swenshuai.xi // VIF use DVB SRAM and FIR
1728*53ee8cc1Swenshuai.xi RIU_WriteByte(0x120A0L, 0x01);
1729*53ee8cc1Swenshuai.xi
1730*53ee8cc1Swenshuai.xi // Enable LDOS
1731*53ee8cc1Swenshuai.xi RIU_WriteByte(0x128AEL, 0x00);
1732*53ee8cc1Swenshuai.xi RIU_WriteByte(0x128AFL, 0x00);
1733*53ee8cc1Swenshuai.xi RIU_WriteByte(0x128B0L, 0x00);
1734*53ee8cc1Swenshuai.xi RIU_WriteByte(0x128B1L, 0x00);
1735*53ee8cc1Swenshuai.xi RIU_WriteByte(0x128B2L, 0x11); // ana_setting_sel
1736*53ee8cc1Swenshuai.xi RIU_WriteByte(0x128B3L, 0x00);
1737*53ee8cc1Swenshuai.xi
1738*53ee8cc1Swenshuai.xi // PLL power up
1739*53ee8cc1Swenshuai.xi RIU_WriteByte(0x1286AL, 0x03);
1740*53ee8cc1Swenshuai.xi RIU_WriteByte(0x1286BL, 0x00);
1741*53ee8cc1Swenshuai.xi
1742*53ee8cc1Swenshuai.xi // VIF : 24*36/6 = 144 MHz
1743*53ee8cc1Swenshuai.xi // VIF : 24*36/18 = 48 MHz
1744*53ee8cc1Swenshuai.xi // Set MPLL_LOOP_DIV_FIRST and SECOND
1745*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12866L, 0x01); // loop divider
1746*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12867L, 0x12);
1747*53ee8cc1Swenshuai.xi
1748*53ee8cc1Swenshuai.xi // Set MPLL_ADC_DIV_SE
1749*53ee8cc1Swenshuai.xi if(VIF_IS_ADC_48MHz == 0)
1750*53ee8cc1Swenshuai.xi {
1751*53ee8cc1Swenshuai.xi // 144MHz case
1752*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12860L, 0x00); // DMPLL post divider
1753*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12861L, 0x06);
1754*53ee8cc1Swenshuai.xi }
1755*53ee8cc1Swenshuai.xi else
1756*53ee8cc1Swenshuai.xi {
1757*53ee8cc1Swenshuai.xi // 48MHz case
1758*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12860L, 0x00); // DMPLL post divider
1759*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12861L, 0x12);
1760*53ee8cc1Swenshuai.xi }
1761*53ee8cc1Swenshuai.xi
1762*53ee8cc1Swenshuai.xi // MPLL_output_div_second
1763*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12864L, 0x00);
1764*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12865L, 0x00);
1765*53ee8cc1Swenshuai.xi
1766*53ee8cc1Swenshuai.xi // SIF CLK select
1767*53ee8cc1Swenshuai.xi RIU_WriteByte(0x1287EL, 0x00);
1768*53ee8cc1Swenshuai.xi RIU_WriteByte(0x1287FL, 0x00);
1769*53ee8cc1Swenshuai.xi
1770*53ee8cc1Swenshuai.xi RIU_WriteRegBit(0x12834L, 1, _BIT4); // EN_VCO_DIG
1771*53ee8cc1Swenshuai.xi
1772*53ee8cc1Swenshuai.xi // Set IMUXS QMUXS
1773*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12802L, 0x40); // VIF path, Bypass PGA
1774*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12803L, 0x04); // Mux selection
1775*53ee8cc1Swenshuai.xi
1776*53ee8cc1Swenshuai.xi // Set enable ADC clock
1777*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12818L, 0x02); // ADC_Q power down
1778*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12819L, 0x00);
1779*53ee8cc1Swenshuai.xi
1780*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12840L, 0x00); // Ref Enable
1781*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12841L, 0x00);
1782*53ee8cc1Swenshuai.xi
1783*53ee8cc1Swenshuai.xi // Set ADC gain is 1
1784*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12816L, 0x05);
1785*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12817L, 0x05);
1786*53ee8cc1Swenshuai.xi
1787*53ee8cc1Swenshuai.xi // Calibration buffer
1788*53ee8cc1Swenshuai.xi RIU_WriteByte(0x1281EL, 0x80);
1789*53ee8cc1Swenshuai.xi RIU_WriteByte(0x1281FL, 0x00);
1790*53ee8cc1Swenshuai.xi
1791*53ee8cc1Swenshuai.xi // AGC control
1792*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12830L, 0x01); // AGC enable
1793*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12831L, 0x00);
1794*53ee8cc1Swenshuai.xi
1795*53ee8cc1Swenshuai.xi if(VIFInitialIn_inst.VifSawArch == NO_SAW_DIF)
1796*53ee8cc1Swenshuai.xi VIFInitialIn_inst.VifSawArch = NO_SAW;
1797*53ee8cc1Swenshuai.xi
1798*53ee8cc1Swenshuai.xi HAL_VIF_Delay1ms(1);
1799*53ee8cc1Swenshuai.xi
1800*53ee8cc1Swenshuai.xi // RFAGC and IFAGC control (ADC)
1801*53ee8cc1Swenshuai.xi RIU_WriteByteMask(RFAGC_DATA_SEL, 0, 0x0C); // RFAGC
1802*53ee8cc1Swenshuai.xi RIU_WriteByteMask(IFAGC_DATA_SEL, 0, 0xC0); // IFAGC
1803*53ee8cc1Swenshuai.xi RIU_WriteRegBit(RFAGC_ODMODE, 0, _BIT1);
1804*53ee8cc1Swenshuai.xi RIU_WriteRegBit(IFAGC_ODMODE, 0, _BIT5);
1805*53ee8cc1Swenshuai.xi
1806*53ee8cc1Swenshuai.xi if ((VIFInitialIn_inst.VifSawArch == SILICON_TUNER) || (VIFInitialIn_inst.VifSawArch == NO_SAW) ||(VIFInitialIn_inst.VifSawArch == SAVE_PIN_VIF))
1807*53ee8cc1Swenshuai.xi RIU_WriteRegBit(RFAGC_ENABLE, 0, _BIT0); // RFAGC disable
1808*53ee8cc1Swenshuai.xi else
1809*53ee8cc1Swenshuai.xi RIU_WriteRegBit(RFAGC_ENABLE, 1, _BIT0); // RFAGC enable
1810*53ee8cc1Swenshuai.xi RIU_WriteRegBit(IFAGC_ENABLE, 1, _BIT4); // IFAGC enable
1811*53ee8cc1Swenshuai.xi
1812*53ee8cc1Swenshuai.xi // RFAGC and IFAGC control (RF)
1813*53ee8cc1Swenshuai.xi msWriteBit(RFAGC_SEL_SECONDER, 1, _BIT6); // 0: 1st order; 1: 2nd order
1814*53ee8cc1Swenshuai.xi msWriteBit(RFAGC_DITHER_EN, 1, _BIT7); // dither disable
1815*53ee8cc1Swenshuai.xi msWriteBit(RFAGC_POLARITY, 1, _BIT4); // RFAGC polarity 0: negative logic
1816*53ee8cc1Swenshuai.xi msWriteBit(OREN_RFAGC, 0, _BIT5); // RFAGC 0: BB control; 1: I2C control
1817*53ee8cc1Swenshuai.xi
1818*53ee8cc1Swenshuai.xi msWriteBit(IFAGC_SEL_SECONDER, 1, _BIT6); // 0: 1st order; 1: 2nd order
1819*53ee8cc1Swenshuai.xi msWriteBit(IFAGC_DITHER_EN, 1, _BIT7); // dither disable
1820*53ee8cc1Swenshuai.xi msWriteBit(IFAGC_POLARITY, 1, _BIT4); // RFAGC polarity 0: negative logic
1821*53ee8cc1Swenshuai.xi msWriteBit(OREN_IFAGC, 0, _BIT6); // RFAGC 0: BB control; 1: I2C control
1822*53ee8cc1Swenshuai.xi
1823*53ee8cc1Swenshuai.xi msWriteBit(OREN_PGA1_V, 0, _BIT3); // Video PGA1 0: BB control; 1: I2C control
1824*53ee8cc1Swenshuai.xi msWriteBit(OREN_PGA2_V, 0, _BIT2); // Video PGA2 0: BB control; 1: I2C control
1825*53ee8cc1Swenshuai.xi msWriteBit(OREN_PGA1_S, 0, _BIT1); // Audio PGA1 0: BB control; 1: I2C control
1826*53ee8cc1Swenshuai.xi msWriteBit(OREN_PGA2_S, 0, _BIT0); // Audio PGA2 0: BB control; 1: I2C control
1827*53ee8cc1Swenshuai.xi
1828*53ee8cc1Swenshuai.xi // ADC_SYNC CLK_R
1829*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F0AL, 0x00);
1830*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F0BL, 0x00);
1831*53ee8cc1Swenshuai.xi
1832*53ee8cc1Swenshuai.xi // ADC_SYNC CLK_W / DMD_ANA_ADC_SYNC CLK_R
1833*53ee8cc1Swenshuai.xi // enable dvbc adc clock
1834*53ee8cc1Swenshuai.xi RIU_WriteByte(0x3314L, 0x04);
1835*53ee8cc1Swenshuai.xi RIU_WriteByte(0x3315L, 0x00);
1836*53ee8cc1Swenshuai.xi
1837*53ee8cc1Swenshuai.xi // DMD_ANA_ADC_SYNC CLK_W
1838*53ee8cc1Swenshuai.xi RIU_WriteByte(0x128D0L, 0x00);
1839*53ee8cc1Swenshuai.xi
1840*53ee8cc1Swenshuai.xi // EQ BYPASS
1841*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_EQFIR, 1, _BIT0);
1842*53ee8cc1Swenshuai.xi }
1843*53ee8cc1Swenshuai.xi
1844*53ee8cc1Swenshuai.xi // For API
msVifSetIfFreq(IfFrequencyType ucIfFreq)1845*53ee8cc1Swenshuai.xi void msVifSetIfFreq(IfFrequencyType ucIfFreq)
1846*53ee8cc1Swenshuai.xi {
1847*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nmsVifSetIfFreq() ucIfFreq=%d",ucIfFreq));
1848*53ee8cc1Swenshuai.xi
1849*53ee8cc1Swenshuai.xi if (!_hal_VIF.bBaseAddrInitialized) return ;
1850*53ee8cc1Swenshuai.xi
1851*53ee8cc1Swenshuai.xi //g_FreqType = ucIfFreq; // 0x1121_D2
1852*53ee8cc1Swenshuai.xi msWriteByte(VIF_RF_RESERVED_1, ucIfFreq);
1853*53ee8cc1Swenshuai.xi
1854*53ee8cc1Swenshuai.xi // VifShiftClk : 0x1121_D3
1855*53ee8cc1Swenshuai.xi BYTE VifShiftClk = msReadByte(VIF_RF_RESERVED_1+1);
1856*53ee8cc1Swenshuai.xi
1857*53ee8cc1Swenshuai.xi // cvbs output
1858*53ee8cc1Swenshuai.xi msWriteBit(VIFDAC_ENABLE, 1, _BIT3); // enable vifdac
1859*53ee8cc1Swenshuai.xi
1860*53ee8cc1Swenshuai.xi // for China descrambler box
1861*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.ChinaDescramblerBox == 0)
1862*53ee8cc1Swenshuai.xi {
1863*53ee8cc1Swenshuai.xi msWriteBit(N_A1_IN_SEL, 0, _BIT4); // 0:from dvga, 1:from image_rej_iir
1864*53ee8cc1Swenshuai.xi msWriteByteMask(VIFDAC_OUT_SEL, 0x00, 0x07); // 0: cvbs output; 4: debug bus
1865*53ee8cc1Swenshuai.xi }
1866*53ee8cc1Swenshuai.xi else
1867*53ee8cc1Swenshuai.xi {
1868*53ee8cc1Swenshuai.xi msWriteByteMask(VIFDAC_OUT_SEL, 0x04, 0x07); // 0: cvbs output; 4: debug bus
1869*53ee8cc1Swenshuai.xi msWriteBit(DEBUG2_EN, 1, _BIT7); // select debug2 data
1870*53ee8cc1Swenshuai.xi msWriteByteMask(DEBUG_MODULE, 0x00, 0x0F); // select filter debug bus
1871*53ee8cc1Swenshuai.xi
1872*53ee8cc1Swenshuai.xi if(VIFInitialIn_inst.ChinaDescramblerBox == 1)
1873*53ee8cc1Swenshuai.xi {
1874*53ee8cc1Swenshuai.xi msWriteBit(N_A1_IN_SEL, 1, _BIT4); // 0:from dvga, 1:from image_rej_iir
1875*53ee8cc1Swenshuai.xi msWriteByte(DEBUG_PORT, 0x84); // selsect CVBS output after Notch_A2 filter
1876*53ee8cc1Swenshuai.xi }
1877*53ee8cc1Swenshuai.xi else if(VIFInitialIn_inst.ChinaDescramblerBox == 2)
1878*53ee8cc1Swenshuai.xi {
1879*53ee8cc1Swenshuai.xi msWriteBit(N_A1_IN_SEL, 0, _BIT4); // 0:from dvga, 1:from image_rej_iir
1880*53ee8cc1Swenshuai.xi msWriteByte(DEBUG_PORT, 0x98); // select CVBS output after IMAGE_IIR
1881*53ee8cc1Swenshuai.xi }
1882*53ee8cc1Swenshuai.xi else if (VIFInitialIn_inst.ChinaDescramblerBox == 3)
1883*53ee8cc1Swenshuai.xi {
1884*53ee8cc1Swenshuai.xi msWriteBit(N_A1_IN_SEL, 0, _BIT4); // 0:from dvga, 1:from image_rej_iir
1885*53ee8cc1Swenshuai.xi msWriteByte(DEBUG_PORT, 0x8A); // select CVBS output after IMAGE_REJ1
1886*53ee8cc1Swenshuai.xi }
1887*53ee8cc1Swenshuai.xi else if (VIFInitialIn_inst.ChinaDescramblerBox == 4)
1888*53ee8cc1Swenshuai.xi {
1889*53ee8cc1Swenshuai.xi msWriteBit(N_A1_IN_SEL, 0, _BIT4); // 0:from dvga, 1:from image_rej_iir
1890*53ee8cc1Swenshuai.xi msWriteByte(DEBUG_PORT, 0x88); // select CVBS output after ACI_REJ
1891*53ee8cc1Swenshuai.xi }
1892*53ee8cc1Swenshuai.xi else if (VIFInitialIn_inst.ChinaDescramblerBox == 5)
1893*53ee8cc1Swenshuai.xi {
1894*53ee8cc1Swenshuai.xi msWriteBit(N_A1_IN_SEL, 0, _BIT4); // 0:from dvga, 1:from image_rej_iir
1895*53ee8cc1Swenshuai.xi msWriteByte(DEBUG_PORT, 0x86); // select CVBS output after MIXER_OUT_I
1896*53ee8cc1Swenshuai.xi }
1897*53ee8cc1Swenshuai.xi else if (VIFInitialIn_inst.ChinaDescramblerBox == 6)
1898*53ee8cc1Swenshuai.xi {
1899*53ee8cc1Swenshuai.xi msWriteBit(N_A1_IN_SEL, 0, _BIT4); // 0:from dvga, 1:from image_rej_iir
1900*53ee8cc1Swenshuai.xi msWriteByte(DEBUG_PORT, 0x8B); // select CVBS output after IMAGE_REJ2
1901*53ee8cc1Swenshuai.xi }
1902*53ee8cc1Swenshuai.xi else
1903*53ee8cc1Swenshuai.xi {
1904*53ee8cc1Swenshuai.xi msWriteByteMask(VIFDAC_OUT_SEL, 0x00, 0x07); // 0: cvbs output; 4: debug bus
1905*53ee8cc1Swenshuai.xi msWriteBit(DEBUG2_EN, 0, _BIT7); // select debug2 data
1906*53ee8cc1Swenshuai.xi msWriteByteMask(DEBUG_MODULE, 0x00, 0x0F); // select filter debug bus
1907*53ee8cc1Swenshuai.xi msWriteBit(N_A1_IN_SEL, 1, _BIT4); // 0:from dvga, 1:from image_rej_iir
1908*53ee8cc1Swenshuai.xi }
1909*53ee8cc1Swenshuai.xi }
1910*53ee8cc1Swenshuai.xi
1911*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
1912*53ee8cc1Swenshuai.xi {
1913*53ee8cc1Swenshuai.xi // silicon tuner
1914*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0x00); // IF rate for 0 MHz
1915*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0x00);
1916*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x00, 0x3F);
1917*53ee8cc1Swenshuai.xi }
1918*53ee8cc1Swenshuai.xi else if (VIFInitialIn_inst.VifTunerType == 2)
1919*53ee8cc1Swenshuai.xi {
1920*53ee8cc1Swenshuai.xi // FM tuner
1921*53ee8cc1Swenshuai.xi if(VIFInitialIn_inst.VifSawArch == SILICON_TUNER)
1922*53ee8cc1Swenshuai.xi {
1923*53ee8cc1Swenshuai.xi // silicon tuner
1924*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0x00); // IF rate for 0 MHz
1925*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0x00);
1926*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x00, 0x3F);
1927*53ee8cc1Swenshuai.xi }
1928*53ee8cc1Swenshuai.xi }
1929*53ee8cc1Swenshuai.xi else
1930*53ee8cc1Swenshuai.xi {
1931*53ee8cc1Swenshuai.xi switch(ucIfFreq)
1932*53ee8cc1Swenshuai.xi {
1933*53ee8cc1Swenshuai.xi case IF_FREQ_3395:
1934*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0x44); // IF rate for -48.9 MHz // HEX [ (IF/144) * 2^22]
1935*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0x44);
1936*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x2A, 0x3F);
1937*53ee8cc1Swenshuai.xi break;
1938*53ee8cc1Swenshuai.xi case IF_FREQ_3800:
1939*53ee8cc1Swenshuai.xi if (VifShiftClk/*g_VifShiftClk*/ == 1)
1940*53ee8cc1Swenshuai.xi {
1941*53ee8cc1Swenshuai.xi msWriteByte(0x12866L, 0x00);//loop divider
1942*53ee8cc1Swenshuai.xi msWriteByte(0x12867L, 0x23);
1943*53ee8cc1Swenshuai.xi
1944*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0xA8); // IF rate for 23 MHz
1945*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0x83);
1946*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x0A, 0x3F);
1947*53ee8cc1Swenshuai.xi }
1948*53ee8cc1Swenshuai.xi else if(VifShiftClk/*g_VifShiftClk*/ == 2)
1949*53ee8cc1Swenshuai.xi {
1950*53ee8cc1Swenshuai.xi msWriteByte(0x12866L, 0x00);//loop divider
1951*53ee8cc1Swenshuai.xi msWriteByte(0x12867L, 0x25);
1952*53ee8cc1Swenshuai.xi
1953*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0x29); // IF rate for 23 MHz
1954*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0xF2);
1955*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x09, 0x3F);
1956*53ee8cc1Swenshuai.xi }
1957*53ee8cc1Swenshuai.xi else
1958*53ee8cc1Swenshuai.xi {
1959*53ee8cc1Swenshuai.xi msWriteByte(0x12866L, 0x00);//loop divider
1960*53ee8cc1Swenshuai.xi msWriteByte(0x12867L, 0x24);
1961*53ee8cc1Swenshuai.xi
1962*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0xE3); // IF rate for 23 MHz
1963*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0x38);
1964*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x0A, 0x3F);
1965*53ee8cc1Swenshuai.xi }
1966*53ee8cc1Swenshuai.xi break;
1967*53ee8cc1Swenshuai.xi case IF_FREQ_3890:
1968*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0x49); // IF rate for 23.9 MHz
1969*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0x9F);
1970*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x0A, 0x3F);
1971*53ee8cc1Swenshuai.xi break;
1972*53ee8cc1Swenshuai.xi case IF_FREQ_3950:
1973*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0x8E); // IF rate for 24.5 MHz
1974*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0xE3);
1975*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x0A, 0x3F);
1976*53ee8cc1Swenshuai.xi break;
1977*53ee8cc1Swenshuai.xi case IF_FREQ_4575:
1978*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0xAA); // IF rate for 30.75 MHz
1979*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0xAA);
1980*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x0D, 0x3F);
1981*53ee8cc1Swenshuai.xi break;
1982*53ee8cc1Swenshuai.xi case IF_FREQ_5875:
1983*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0xC7); // IF rate for 43.75 MHz
1984*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0x71);
1985*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x13, 0x3F);
1986*53ee8cc1Swenshuai.xi break;
1987*53ee8cc1Swenshuai.xi default:
1988*53ee8cc1Swenshuai.xi break;
1989*53ee8cc1Swenshuai.xi }
1990*53ee8cc1Swenshuai.xi }
1991*53ee8cc1Swenshuai.xi }
1992*53ee8cc1Swenshuai.xi
msVifGroupDelayFilter(VIFSoundSystem ucSoundSystem,FrequencyBand frequencyRange)1993*53ee8cc1Swenshuai.xi void msVifGroupDelayFilter(VIFSoundSystem ucSoundSystem, FrequencyBand frequencyRange)
1994*53ee8cc1Swenshuai.xi {
1995*53ee8cc1Swenshuai.xi BYTE VifPeakingFilter=0, VifYcDelayFilter=0, VifGroupDelayFilter=0;
1996*53ee8cc1Swenshuai.xi
1997*53ee8cc1Swenshuai.xi if (!_hal_VIF.bBaseAddrInitialized) return ;
1998*53ee8cc1Swenshuai.xi
1999*53ee8cc1Swenshuai.xi switch (ucSoundSystem)
2000*53ee8cc1Swenshuai.xi {
2001*53ee8cc1Swenshuai.xi case VIF_SOUND_B:
2002*53ee8cc1Swenshuai.xi case VIF_SOUND_B_NICAM:
2003*53ee8cc1Swenshuai.xi if (frequencyRange==FREQ_VHF_L)
2004*53ee8cc1Swenshuai.xi {
2005*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterB_VHF_L;
2006*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterB_VHF_L;
2007*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterB_VHF_L;
2008*53ee8cc1Swenshuai.xi }
2009*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_VHF_H)
2010*53ee8cc1Swenshuai.xi {
2011*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterB_VHF_H;
2012*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterB_VHF_H;
2013*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterB_VHF_H;
2014*53ee8cc1Swenshuai.xi }
2015*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_UHF)
2016*53ee8cc1Swenshuai.xi {
2017*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterB_UHF;
2018*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterB_UHF;
2019*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterB_UHF;
2020*53ee8cc1Swenshuai.xi }
2021*53ee8cc1Swenshuai.xi else
2022*53ee8cc1Swenshuai.xi printf("\r\n ERROR msVifGroupDelayFilter B frequencyRange=%d", frequencyRange);
2023*53ee8cc1Swenshuai.xi break;
2024*53ee8cc1Swenshuai.xi
2025*53ee8cc1Swenshuai.xi case VIF_SOUND_GH:
2026*53ee8cc1Swenshuai.xi case VIF_SOUND_GH_NICAM:
2027*53ee8cc1Swenshuai.xi if (frequencyRange==FREQ_VHF_L)
2028*53ee8cc1Swenshuai.xi {
2029*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterGH_VHF_L;
2030*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterGH_VHF_L;
2031*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterGH_VHF_L;
2032*53ee8cc1Swenshuai.xi }
2033*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_VHF_H)
2034*53ee8cc1Swenshuai.xi {
2035*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterGH_VHF_H;
2036*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterGH_VHF_H;
2037*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterGH_VHF_H;
2038*53ee8cc1Swenshuai.xi }
2039*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_UHF)
2040*53ee8cc1Swenshuai.xi {
2041*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterGH_UHF;
2042*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterGH_UHF;
2043*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterGH_UHF;
2044*53ee8cc1Swenshuai.xi }
2045*53ee8cc1Swenshuai.xi else
2046*53ee8cc1Swenshuai.xi printf("\r\n ERROR msVifGroupDelayFilter GH frequencyRange=%d", frequencyRange);
2047*53ee8cc1Swenshuai.xi break;
2048*53ee8cc1Swenshuai.xi
2049*53ee8cc1Swenshuai.xi case VIF_SOUND_I:
2050*53ee8cc1Swenshuai.xi if (frequencyRange==FREQ_VHF_L)
2051*53ee8cc1Swenshuai.xi {
2052*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterI_VHF_L;
2053*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterI_VHF_L;
2054*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterI_VHF_L;
2055*53ee8cc1Swenshuai.xi }
2056*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_VHF_H)
2057*53ee8cc1Swenshuai.xi {
2058*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterI_VHF_H;
2059*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterI_VHF_H;
2060*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterI_VHF_H;
2061*53ee8cc1Swenshuai.xi }
2062*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_UHF)
2063*53ee8cc1Swenshuai.xi {
2064*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterI_UHF;
2065*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterI_UHF;
2066*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterI_UHF;
2067*53ee8cc1Swenshuai.xi }
2068*53ee8cc1Swenshuai.xi else
2069*53ee8cc1Swenshuai.xi printf("\r\n ERROR msVifGroupDelayFilter I frequencyRange=%d", frequencyRange);
2070*53ee8cc1Swenshuai.xi break;
2071*53ee8cc1Swenshuai.xi
2072*53ee8cc1Swenshuai.xi case VIF_SOUND_DK1:
2073*53ee8cc1Swenshuai.xi case VIF_SOUND_DK2:
2074*53ee8cc1Swenshuai.xi case VIF_SOUND_DK3:
2075*53ee8cc1Swenshuai.xi case VIF_SOUND_DK_NICAM:
2076*53ee8cc1Swenshuai.xi if (frequencyRange==FREQ_VHF_L)
2077*53ee8cc1Swenshuai.xi {
2078*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterDK_VHF_L;
2079*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterDK_VHF_L;
2080*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterDK_VHF_L;
2081*53ee8cc1Swenshuai.xi }
2082*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_VHF_H)
2083*53ee8cc1Swenshuai.xi {
2084*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterDK_VHF_H;
2085*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterDK_VHF_H;
2086*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterDK_VHF_H;
2087*53ee8cc1Swenshuai.xi }
2088*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_UHF)
2089*53ee8cc1Swenshuai.xi {
2090*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterDK_UHF;
2091*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterDK_UHF;
2092*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterDK_UHF;
2093*53ee8cc1Swenshuai.xi }
2094*53ee8cc1Swenshuai.xi else
2095*53ee8cc1Swenshuai.xi printf("\r\n ERROR msVifGroupDelayFilter DK frequencyRange=%d", frequencyRange);
2096*53ee8cc1Swenshuai.xi break;
2097*53ee8cc1Swenshuai.xi
2098*53ee8cc1Swenshuai.xi case VIF_SOUND_L:
2099*53ee8cc1Swenshuai.xi if (frequencyRange==FREQ_VHF_L)
2100*53ee8cc1Swenshuai.xi {
2101*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterL_VHF_L;
2102*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterL_VHF_L;
2103*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterL_VHF_L;
2104*53ee8cc1Swenshuai.xi }
2105*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_VHF_H)
2106*53ee8cc1Swenshuai.xi {
2107*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterL_VHF_H;
2108*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterL_VHF_H;
2109*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterL_VHF_H;
2110*53ee8cc1Swenshuai.xi }
2111*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_UHF)
2112*53ee8cc1Swenshuai.xi {
2113*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterL_UHF;
2114*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterL_UHF;
2115*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterL_UHF;
2116*53ee8cc1Swenshuai.xi }
2117*53ee8cc1Swenshuai.xi else
2118*53ee8cc1Swenshuai.xi printf("\r\n ERROR msVifGroupDelayFilter L frequencyRange=%d", frequencyRange);
2119*53ee8cc1Swenshuai.xi break;
2120*53ee8cc1Swenshuai.xi
2121*53ee8cc1Swenshuai.xi case VIF_SOUND_LL:
2122*53ee8cc1Swenshuai.xi if (frequencyRange==FREQ_VHF_L)
2123*53ee8cc1Swenshuai.xi {
2124*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterLL_VHF_L;
2125*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterLL_VHF_L;
2126*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterLL_VHF_L;
2127*53ee8cc1Swenshuai.xi }
2128*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_VHF_H)
2129*53ee8cc1Swenshuai.xi {
2130*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterLL_VHF_H;
2131*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterLL_VHF_H;
2132*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterLL_VHF_H;
2133*53ee8cc1Swenshuai.xi }
2134*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_UHF)
2135*53ee8cc1Swenshuai.xi {
2136*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterLL_UHF;
2137*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterLL_UHF;
2138*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterLL_UHF;
2139*53ee8cc1Swenshuai.xi }
2140*53ee8cc1Swenshuai.xi else
2141*53ee8cc1Swenshuai.xi printf("\r\n ERROR msVifGroupDelayFilter LL frequencyRange=%d", frequencyRange);
2142*53ee8cc1Swenshuai.xi break;
2143*53ee8cc1Swenshuai.xi
2144*53ee8cc1Swenshuai.xi case VIF_SOUND_MN:
2145*53ee8cc1Swenshuai.xi if (frequencyRange==FREQ_VHF_L)
2146*53ee8cc1Swenshuai.xi {
2147*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterMN_VHF_L;
2148*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterMN_VHF_L;
2149*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterMN_VHF_L;
2150*53ee8cc1Swenshuai.xi }
2151*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_VHF_H)
2152*53ee8cc1Swenshuai.xi {
2153*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterMN_VHF_H;
2154*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterMN_VHF_H;
2155*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterMN_VHF_H;
2156*53ee8cc1Swenshuai.xi }
2157*53ee8cc1Swenshuai.xi else if (frequencyRange==FREQ_UHF)
2158*53ee8cc1Swenshuai.xi {
2159*53ee8cc1Swenshuai.xi VifPeakingFilter = VIFInitialIn_inst.VifPeakingFilterMN_UHF;
2160*53ee8cc1Swenshuai.xi VifYcDelayFilter = VIFInitialIn_inst.VifYcDelayFilterMN_UHF;
2161*53ee8cc1Swenshuai.xi VifGroupDelayFilter =VIFInitialIn_inst.VifGroupDelayFilterMN_UHF;
2162*53ee8cc1Swenshuai.xi }
2163*53ee8cc1Swenshuai.xi else
2164*53ee8cc1Swenshuai.xi printf("\r\n ERROR msVifGroupDelayFilter MN frequencyRange=%d", frequencyRange);
2165*53ee8cc1Swenshuai.xi break;
2166*53ee8cc1Swenshuai.xi
2167*53ee8cc1Swenshuai.xi default:
2168*53ee8cc1Swenshuai.xi printf("\r\n Error msVifGroupDelayFilter ucSoundSystem=%d",ucSoundSystem);
2169*53ee8cc1Swenshuai.xi break;
2170*53ee8cc1Swenshuai.xi }
2171*53ee8cc1Swenshuai.xi
2172*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nmsVifGroupDelayFilter() VifPeakingFilter=%d",VifPeakingFilter));
2173*53ee8cc1Swenshuai.xi HALVIFDBG(printf(" VifYcDelayFilter=%d VifGroupDelayFilter=%d",VifYcDelayFilter, VifGroupDelayFilter));
2174*53ee8cc1Swenshuai.xi
2175*53ee8cc1Swenshuai.xi if (VifPeakingFilter == 0x00)
2176*53ee8cc1Swenshuai.xi {
2177*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_PEAKING_NULL);
2178*53ee8cc1Swenshuai.xi }
2179*53ee8cc1Swenshuai.xi else if (VifPeakingFilter == 0x01)
2180*53ee8cc1Swenshuai.xi {
2181*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_PEAKING_1dB);
2182*53ee8cc1Swenshuai.xi }
2183*53ee8cc1Swenshuai.xi else if (VifPeakingFilter == 0x02)
2184*53ee8cc1Swenshuai.xi {
2185*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_PEAKING_2dB);
2186*53ee8cc1Swenshuai.xi }
2187*53ee8cc1Swenshuai.xi else if (VifPeakingFilter == 0x03)
2188*53ee8cc1Swenshuai.xi {
2189*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_PEAKING_3dB);
2190*53ee8cc1Swenshuai.xi }
2191*53ee8cc1Swenshuai.xi else if (VifPeakingFilter == 0x04)
2192*53ee8cc1Swenshuai.xi {
2193*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_PEAKING_4dB);
2194*53ee8cc1Swenshuai.xi }
2195*53ee8cc1Swenshuai.xi else if (VifPeakingFilter == 0x05)
2196*53ee8cc1Swenshuai.xi {
2197*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_PEAKING_3dB_VSB);
2198*53ee8cc1Swenshuai.xi }
2199*53ee8cc1Swenshuai.xi else if (VifPeakingFilter == 0x06)
2200*53ee8cc1Swenshuai.xi {
2201*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_PEAKING_4dB_VSB);
2202*53ee8cc1Swenshuai.xi }
2203*53ee8cc1Swenshuai.xi else if (VifPeakingFilter == 0x07)
2204*53ee8cc1Swenshuai.xi {
2205*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_PEAKING_5dB_VSB);
2206*53ee8cc1Swenshuai.xi }
2207*53ee8cc1Swenshuai.xi else if (VifPeakingFilter == 0x80)
2208*53ee8cc1Swenshuai.xi {
2209*53ee8cc1Swenshuai.xi msWriteByte(SOS21_C0_L, VIFInitialIn_inst.VifSos21FilterC0); // SOS21 (user define)
2210*53ee8cc1Swenshuai.xi msWriteByteMask(SOS21_C0_H, VIFInitialIn_inst.VifSos21FilterC0>>8, 0x07);
2211*53ee8cc1Swenshuai.xi msWriteByte(SOS21_C1_L, VIFInitialIn_inst.VifSos21FilterC1);
2212*53ee8cc1Swenshuai.xi msWriteByteMask(SOS21_C1_H, VIFInitialIn_inst.VifSos21FilterC1>>8, 0x07);
2213*53ee8cc1Swenshuai.xi msWriteByte(SOS21_C2_L, VIFInitialIn_inst.VifSos21FilterC2);
2214*53ee8cc1Swenshuai.xi msWriteByteMask(SOS21_C2_H, VIFInitialIn_inst.VifSos21FilterC2>>8, 0x07);
2215*53ee8cc1Swenshuai.xi msWriteByte(SOS21_C3_L, VIFInitialIn_inst.VifSos21FilterC3);
2216*53ee8cc1Swenshuai.xi msWriteByteMask(SOS21_C3_H, VIFInitialIn_inst.VifSos21FilterC3>>8, 0x07);
2217*53ee8cc1Swenshuai.xi msWriteByte(SOS21_C4_L, VIFInitialIn_inst.VifSos21FilterC4);
2218*53ee8cc1Swenshuai.xi msWriteByteMask(SOS21_C4_H, VIFInitialIn_inst.VifSos21FilterC4>>8, 0x07);
2219*53ee8cc1Swenshuai.xi }
2220*53ee8cc1Swenshuai.xi
2221*53ee8cc1Swenshuai.xi if (VifYcDelayFilter == 0x00)
2222*53ee8cc1Swenshuai.xi {
2223*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_YCDelay_NULL);
2224*53ee8cc1Swenshuai.xi }
2225*53ee8cc1Swenshuai.xi else if (VifYcDelayFilter == 0x01)
2226*53ee8cc1Swenshuai.xi {
2227*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_YCDelay_VSB);
2228*53ee8cc1Swenshuai.xi }
2229*53ee8cc1Swenshuai.xi else if (VifYcDelayFilter == 0x80)
2230*53ee8cc1Swenshuai.xi {
2231*53ee8cc1Swenshuai.xi msWriteByte(SOS22_C0_L, VIFInitialIn_inst.VifSos22FilterC0); // SOS22 (user define)
2232*53ee8cc1Swenshuai.xi msWriteByteMask(SOS22_C0_H, VIFInitialIn_inst.VifSos22FilterC0>>8, 0x07);
2233*53ee8cc1Swenshuai.xi msWriteByte(SOS22_C1_L, VIFInitialIn_inst.VifSos22FilterC1);
2234*53ee8cc1Swenshuai.xi msWriteByteMask(SOS22_C1_H, VIFInitialIn_inst.VifSos22FilterC1>>8, 0x07);
2235*53ee8cc1Swenshuai.xi msWriteByte(SOS22_C2_L, VIFInitialIn_inst.VifSos22FilterC2);
2236*53ee8cc1Swenshuai.xi msWriteByteMask(SOS22_C2_H, VIFInitialIn_inst.VifSos22FilterC2>>8, 0x07);
2237*53ee8cc1Swenshuai.xi msWriteByte(SOS22_C3_L, VIFInitialIn_inst.VifSos22FilterC3);
2238*53ee8cc1Swenshuai.xi msWriteByteMask(SOS22_C3_H, VIFInitialIn_inst.VifSos22FilterC3>>8, 0x07);
2239*53ee8cc1Swenshuai.xi msWriteByte(SOS22_C4_L, VIFInitialIn_inst.VifSos22FilterC4);
2240*53ee8cc1Swenshuai.xi msWriteByteMask(SOS22_C4_H, VIFInitialIn_inst.VifSos22FilterC4>>8, 0x07);
2241*53ee8cc1Swenshuai.xi }
2242*53ee8cc1Swenshuai.xi
2243*53ee8cc1Swenshuai.xi if (VifGroupDelayFilter == 0x00)
2244*53ee8cc1Swenshuai.xi {
2245*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_GroupDelay_NULL);
2246*53ee8cc1Swenshuai.xi }
2247*53ee8cc1Swenshuai.xi else if (VifGroupDelayFilter == 0x01)
2248*53ee8cc1Swenshuai.xi {
2249*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_GroupDelay_VSB_LG);
2250*53ee8cc1Swenshuai.xi }
2251*53ee8cc1Swenshuai.xi else if (VifGroupDelayFilter == 0x02)
2252*53ee8cc1Swenshuai.xi {
2253*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_GroupDelay_VSB_Philips);
2254*53ee8cc1Swenshuai.xi }
2255*53ee8cc1Swenshuai.xi else if (VifGroupDelayFilter == 0x03)
2256*53ee8cc1Swenshuai.xi {
2257*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_GroupDelay_Low_R);
2258*53ee8cc1Swenshuai.xi }
2259*53ee8cc1Swenshuai.xi else if (VifGroupDelayFilter == 0x04)
2260*53ee8cc1Swenshuai.xi {
2261*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_GroupDelay_Low_L);
2262*53ee8cc1Swenshuai.xi }
2263*53ee8cc1Swenshuai.xi else if (VifGroupDelayFilter == 0x05)
2264*53ee8cc1Swenshuai.xi {
2265*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_GroupDelay_High_R);
2266*53ee8cc1Swenshuai.xi }
2267*53ee8cc1Swenshuai.xi else if (VifGroupDelayFilter == 0x06)
2268*53ee8cc1Swenshuai.xi {
2269*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_GroupDelay_High_L);
2270*53ee8cc1Swenshuai.xi }
2271*53ee8cc1Swenshuai.xi else if (VifGroupDelayFilter == 0x80)
2272*53ee8cc1Swenshuai.xi {
2273*53ee8cc1Swenshuai.xi msWriteByte(SOS31_C0_L, VIFInitialIn_inst.VifSos31FilterC0); // SOS31 (user define)
2274*53ee8cc1Swenshuai.xi msWriteByteMask(SOS31_C0_H, VIFInitialIn_inst.VifSos31FilterC0>>8, 0x07);
2275*53ee8cc1Swenshuai.xi msWriteByte(SOS31_C1_L, VIFInitialIn_inst.VifSos31FilterC1);
2276*53ee8cc1Swenshuai.xi msWriteByteMask(SOS31_C1_H, VIFInitialIn_inst.VifSos31FilterC1>>8, 0x07);
2277*53ee8cc1Swenshuai.xi msWriteByte(SOS31_C2_L, VIFInitialIn_inst.VifSos31FilterC2);
2278*53ee8cc1Swenshuai.xi msWriteByteMask(SOS31_C2_H, VIFInitialIn_inst.VifSos31FilterC2>>8, 0x07);
2279*53ee8cc1Swenshuai.xi msWriteByte(SOS31_C3_L, VIFInitialIn_inst.VifSos31FilterC3);
2280*53ee8cc1Swenshuai.xi msWriteByteMask(SOS31_C3_H, VIFInitialIn_inst.VifSos31FilterC3>>8, 0x07);
2281*53ee8cc1Swenshuai.xi msWriteByte(SOS31_C4_L, VIFInitialIn_inst.VifSos31FilterC4);
2282*53ee8cc1Swenshuai.xi msWriteByteMask(SOS31_C4_H, VIFInitialIn_inst.VifSos31FilterC4>>8, 0x07);
2283*53ee8cc1Swenshuai.xi msWriteByte(SOS32_C0_L, VIFInitialIn_inst.VifSos32FilterC0); // SOS32 (user define)
2284*53ee8cc1Swenshuai.xi msWriteByteMask(SOS32_C0_H, VIFInitialIn_inst.VifSos32FilterC0>>8, 0x07);
2285*53ee8cc1Swenshuai.xi msWriteByte(SOS32_C1_L, VIFInitialIn_inst.VifSos32FilterC1);
2286*53ee8cc1Swenshuai.xi msWriteByteMask(SOS32_C1_H, VIFInitialIn_inst.VifSos32FilterC1>>8, 0x07);
2287*53ee8cc1Swenshuai.xi msWriteByte(SOS32_C2_L, VIFInitialIn_inst.VifSos32FilterC2);
2288*53ee8cc1Swenshuai.xi msWriteByteMask(SOS32_C2_H, VIFInitialIn_inst.VifSos32FilterC2>>8, 0x07);
2289*53ee8cc1Swenshuai.xi msWriteByte(SOS32_C3_L, VIFInitialIn_inst.VifSos32FilterC3);
2290*53ee8cc1Swenshuai.xi msWriteByteMask(SOS32_C3_H, VIFInitialIn_inst.VifSos32FilterC3>>8, 0x07);
2291*53ee8cc1Swenshuai.xi msWriteByte(SOS32_C4_L, VIFInitialIn_inst.VifSos32FilterC4);
2292*53ee8cc1Swenshuai.xi msWriteByteMask(SOS32_C4_H, VIFInitialIn_inst.VifSos32FilterC4>>8, 0x07);
2293*53ee8cc1Swenshuai.xi /*
2294*53ee8cc1Swenshuai.xi msWriteByte(SOS33_C0_L, sVIFSOS33.Vif_SOS_33_C0); // SOS33 (user define)
2295*53ee8cc1Swenshuai.xi msWriteByteMask(SOS33_C0_H, sVIFSOS33.Vif_SOS_33_C0>>8, 0x07);
2296*53ee8cc1Swenshuai.xi msWriteByte(SOS33_C1_L, sVIFSOS33.Vif_SOS_33_C1);
2297*53ee8cc1Swenshuai.xi msWriteByteMask(SOS33_C1_H, sVIFSOS33.Vif_SOS_33_C1>>8, 0x07);
2298*53ee8cc1Swenshuai.xi msWriteByte(SOS33_C2_L, sVIFSOS33.Vif_SOS_33_C2);
2299*53ee8cc1Swenshuai.xi msWriteByteMask(SOS33_C2_H, sVIFSOS33.Vif_SOS_33_C2>>8, 0x07);
2300*53ee8cc1Swenshuai.xi msWriteByte(SOS33_C3_L, sVIFSOS33.Vif_SOS_33_C3);
2301*53ee8cc1Swenshuai.xi msWriteByteMask(SOS33_C3_H, sVIFSOS33.Vif_SOS_33_C3>>8, 0x07);
2302*53ee8cc1Swenshuai.xi msWriteByte(SOS33_C4_L, sVIFSOS33.Vif_SOS_33_C4);
2303*53ee8cc1Swenshuai.xi msWriteByteMask(SOS33_C4_H, sVIFSOS33.Vif_SOS_33_C4>>8, 0x07);
2304*53ee8cc1Swenshuai.xi */
2305*53ee8cc1Swenshuai.xi }
2306*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_SOS33, 1, _BIT6);
2307*53ee8cc1Swenshuai.xi }
2308*53ee8cc1Swenshuai.xi
2309*53ee8cc1Swenshuai.xi // For API
msVifSetSoundSystem(VIFSoundSystem ucSoundSystem)2310*53ee8cc1Swenshuai.xi void msVifSetSoundSystem(VIFSoundSystem ucSoundSystem)
2311*53ee8cc1Swenshuai.xi {
2312*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nmsVifSetSoundSystem() ucSoundSystem=%d",ucSoundSystem));
2313*53ee8cc1Swenshuai.xi
2314*53ee8cc1Swenshuai.xi if (!_hal_VIF.bBaseAddrInitialized) return ;
2315*53ee8cc1Swenshuai.xi
2316*53ee8cc1Swenshuai.xi DWORD VifCrRateTemp;
2317*53ee8cc1Swenshuai.xi
2318*53ee8cc1Swenshuai.xi // VifShiftClk : 0x1121_D3
2319*53ee8cc1Swenshuai.xi BYTE VifShiftClk = msReadByte(VIF_RF_RESERVED_1+1);
2320*53ee8cc1Swenshuai.xi
2321*53ee8cc1Swenshuai.xi g_ucVifSoundSystemType = ucSoundSystem;
2322*53ee8cc1Swenshuai.xi
2323*53ee8cc1Swenshuai.xi if((ucSoundSystem == VIF_SOUND_L)||(ucSoundSystem == VIF_SOUND_LL))
2324*53ee8cc1Swenshuai.xi msVifInitial();
2325*53ee8cc1Swenshuai.xi
2326*53ee8cc1Swenshuai.xi switch(ucSoundSystem)
2327*53ee8cc1Swenshuai.xi {
2328*53ee8cc1Swenshuai.xi case VIF_SOUND_B:
2329*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
2330*53ee8cc1Swenshuai.xi {
2331*53ee8cc1Swenshuai.xi // silicon tuner
2332*53ee8cc1Swenshuai.xi if((VifShiftClk/*g_VifShiftClk*/ == 1)&&(VIF_IS_ADC_48MHz == 0))
2333*53ee8cc1Swenshuai.xi {
2334*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_B;
2335*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *2107)>>11; // 43.2/42 = 1.02857 ~= 1.02881
2336*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2337*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2338*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2339*53ee8cc1Swenshuai.xi }
2340*53ee8cc1Swenshuai.xi else if((VifShiftClk/*g_VifShiftClk*/ == 2)&&(VIF_IS_ADC_48MHz == 0))
2341*53ee8cc1Swenshuai.xi {
2342*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_B;
2343*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *1993)>>11; // 43.2/44.4 = 0.97297 ~= 0.97314
2344*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2345*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2346*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2347*53ee8cc1Swenshuai.xi }
2348*53ee8cc1Swenshuai.xi else
2349*53ee8cc1Swenshuai.xi {
2350*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VIFInitialIn_inst.VifCrRate_B & 0x000000FF)); // cr_rate for 6.4 MHz
2351*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VIFInitialIn_inst.VifCrRate_B>>8) & 0x000000FF));
2352*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VIFInitialIn_inst.VifCrRate_B>>16) & 0x000000FF), 0x0F);
2353*53ee8cc1Swenshuai.xi }
2354*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, VIFInitialIn_inst.VifCrInvert_B, _BIT0); // cr_rate not invert
2355*53ee8cc1Swenshuai.xi
2356*53ee8cc1Swenshuai.xi }
2357*53ee8cc1Swenshuai.xi
2358*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_B_A2);
2359*53ee8cc1Swenshuai.xi msVifGroupDelayFilter(VIF_SOUND_B, (FrequencyBand)VIFInitialIn_inst.VifFreqBand);
2360*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_BG_A2_NOTCH);
2361*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_B_LOWER_ACI); //Notch N-1 Audio Carrier
2362*53ee8cc1Swenshuai.xi msWriteBit(A_LPF_BG_SEL, 0, _BIT6); // A_LPF_BG_SEL = 0 (PAL)
2363*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ_NTSC, 1, _BIT5); // CO_A_REJ_NTSC bypass
2364*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_LPF_BG, 0, _BIT1); // A_LPF_BG not bypass
2365*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A3, 0, _BIT5); // A3 notch not bypass
2366*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A4, 0, _BIT6); // A4 notch not bypass
2367*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A5, 0, _BIT3); //Notch_S filter not bypass
2368*53ee8cc1Swenshuai.xi
2369*53ee8cc1Swenshuai.xi //for Non-NTSC Setting
2370*53ee8cc1Swenshuai.xi msWriteBit(V_ACI_BPF_SEL, 1 , _BIT2); // Video_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2371*53ee8cc1Swenshuai.xi msWriteBit(A_ACI_BPF_SEL, 1 , _BIT3); // Audio_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2372*53ee8cc1Swenshuai.xi
2373*53ee8cc1Swenshuai.xi break;
2374*53ee8cc1Swenshuai.xi
2375*53ee8cc1Swenshuai.xi case VIF_SOUND_B_NICAM:
2376*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
2377*53ee8cc1Swenshuai.xi {
2378*53ee8cc1Swenshuai.xi // silicon tuner
2379*53ee8cc1Swenshuai.xi if((VifShiftClk/*g_VifShiftClk*/ == 1)&&(VIF_IS_ADC_48MHz == 0))
2380*53ee8cc1Swenshuai.xi {
2381*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_B;
2382*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *2107)>>11; // 43.2/42 = 1.02857 ~= 1.02881
2383*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2384*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2385*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2386*53ee8cc1Swenshuai.xi }
2387*53ee8cc1Swenshuai.xi else if((VifShiftClk/*g_VifShiftClk*/ == 2)&&(VIF_IS_ADC_48MHz == 0))
2388*53ee8cc1Swenshuai.xi {
2389*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_B;
2390*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *1993)>>11; // 43.2/44.4 = 0.97297 ~= 0.97314
2391*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2392*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2393*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2394*53ee8cc1Swenshuai.xi }
2395*53ee8cc1Swenshuai.xi else
2396*53ee8cc1Swenshuai.xi {
2397*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VIFInitialIn_inst.VifCrRate_B & 0x000000FF)); // cr_rate for 6.4 MHz
2398*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VIFInitialIn_inst.VifCrRate_B>>8) & 0x000000FF));
2399*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VIFInitialIn_inst.VifCrRate_B>>16) & 0x000000FF), 0x0F);
2400*53ee8cc1Swenshuai.xi }
2401*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, VIFInitialIn_inst.VifCrInvert_B, _BIT0); // cr_rate not invert
2402*53ee8cc1Swenshuai.xi }
2403*53ee8cc1Swenshuai.xi
2404*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_B_NICAM);
2405*53ee8cc1Swenshuai.xi msVifGroupDelayFilter(VIF_SOUND_B_NICAM, (FrequencyBand)VIFInitialIn_inst.VifFreqBand);
2406*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_BG_NICAM_NOTCH);
2407*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_B_LOWER_ACI); //Notch N-1 Audio Carrier
2408*53ee8cc1Swenshuai.xi msWriteBit(A_LPF_BG_SEL, 0, _BIT6); // A_LPF_BG_SEL = 0 (PAL)
2409*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ_NTSC, 1, _BIT5); // CO_A_REJ_NTSC bypass
2410*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_LPF_BG, 0, _BIT1); // A_LPF_BG not bypass
2411*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A3, 0, _BIT5); // A3 notch not bypass
2412*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A4, 0, _BIT6); // A4 notch not bypass
2413*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A5, 0, _BIT3); //Notch_S filter not bypass
2414*53ee8cc1Swenshuai.xi //for Non-NTSC Setting
2415*53ee8cc1Swenshuai.xi msWriteBit(V_ACI_BPF_SEL, 1 , _BIT2); // Video_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2416*53ee8cc1Swenshuai.xi msWriteBit(A_ACI_BPF_SEL, 1 , _BIT3); // Audio_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2417*53ee8cc1Swenshuai.xi
2418*53ee8cc1Swenshuai.xi break;
2419*53ee8cc1Swenshuai.xi
2420*53ee8cc1Swenshuai.xi case VIF_SOUND_GH:
2421*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
2422*53ee8cc1Swenshuai.xi {
2423*53ee8cc1Swenshuai.xi // silicon tuner
2424*53ee8cc1Swenshuai.xi if((VifShiftClk/*g_VifShiftClk*/ == 1)&&(VIF_IS_ADC_48MHz == 0))
2425*53ee8cc1Swenshuai.xi {
2426*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_GH;
2427*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *2107)>>11; // 43.2/42 = 1.02857 ~= 1.02881
2428*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2429*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2430*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2431*53ee8cc1Swenshuai.xi }
2432*53ee8cc1Swenshuai.xi else if((VifShiftClk/*g_VifShiftClk*/ == 2)&&(VIF_IS_ADC_48MHz == 0))
2433*53ee8cc1Swenshuai.xi {
2434*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_GH;
2435*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *1993)>>11; // 43.2/44.4 = 0.97297 ~= 0.97314
2436*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2437*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2438*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2439*53ee8cc1Swenshuai.xi }
2440*53ee8cc1Swenshuai.xi else
2441*53ee8cc1Swenshuai.xi {
2442*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VIFInitialIn_inst.VifCrRate_GH & 0x000000FF)); // cr_rate for 6.4 MHz
2443*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VIFInitialIn_inst.VifCrRate_GH>>8) & 0x000000FF));
2444*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VIFInitialIn_inst.VifCrRate_GH>>16) & 0x000000FF), 0x0F);
2445*53ee8cc1Swenshuai.xi }
2446*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, VIFInitialIn_inst.VifCrInvert_GH, _BIT0); // cr_rate not invert
2447*53ee8cc1Swenshuai.xi }
2448*53ee8cc1Swenshuai.xi
2449*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_GH_A2);
2450*53ee8cc1Swenshuai.xi msVifGroupDelayFilter(VIF_SOUND_GH, (FrequencyBand)VIFInitialIn_inst.VifFreqBand);
2451*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_BG_A2_NOTCH);
2452*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_GH_LOWER_ACI); //Notch N-1 Audio Carrier
2453*53ee8cc1Swenshuai.xi msWriteBit(A_LPF_BG_SEL, 0, _BIT6); // A_LPF_BG_SEL = 0 (PAL)
2454*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ_NTSC, 1, _BIT5); // CO_A_REJ_NTSC bypass
2455*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_LPF_BG, 0, _BIT1); // A_LPF_BG not bypass
2456*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A3, 0, _BIT5); // A3 notch not bypass
2457*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A4, 0, _BIT6); // A4 notch not bypass
2458*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A5, 0, _BIT3); //Notch_S filter not bypass
2459*53ee8cc1Swenshuai.xi //for Non-NTSC Setting
2460*53ee8cc1Swenshuai.xi msWriteBit(V_ACI_BPF_SEL, 1 , _BIT2); // Video_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2461*53ee8cc1Swenshuai.xi msWriteBit(A_ACI_BPF_SEL, 1 , _BIT3); // Audio_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2462*53ee8cc1Swenshuai.xi
2463*53ee8cc1Swenshuai.xi break;
2464*53ee8cc1Swenshuai.xi
2465*53ee8cc1Swenshuai.xi case VIF_SOUND_GH_NICAM:
2466*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
2467*53ee8cc1Swenshuai.xi {
2468*53ee8cc1Swenshuai.xi // silicon tuner
2469*53ee8cc1Swenshuai.xi if((VifShiftClk/*g_VifShiftClk*/ == 1)&&(VIF_IS_ADC_48MHz == 0))
2470*53ee8cc1Swenshuai.xi {
2471*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_GH;
2472*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *2107)>>11; // 43.2/42 = 1.02857 ~= 1.02881
2473*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2474*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2475*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2476*53ee8cc1Swenshuai.xi }
2477*53ee8cc1Swenshuai.xi else if((VifShiftClk/*g_VifShiftClk*/ == 2)&&(VIF_IS_ADC_48MHz == 0))
2478*53ee8cc1Swenshuai.xi {
2479*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_GH;
2480*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *1993)>>11; // 43.2/44.4 = 0.97297 ~= 0.97314
2481*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2482*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2483*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2484*53ee8cc1Swenshuai.xi }
2485*53ee8cc1Swenshuai.xi else
2486*53ee8cc1Swenshuai.xi {
2487*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VIFInitialIn_inst.VifCrRate_GH & 0x000000FF)); // cr_rate for 6.4 MHz
2488*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VIFInitialIn_inst.VifCrRate_GH>>8) & 0x000000FF));
2489*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VIFInitialIn_inst.VifCrRate_GH>>16) & 0x000000FF), 0x0F);
2490*53ee8cc1Swenshuai.xi }
2491*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, VIFInitialIn_inst.VifCrInvert_GH, _BIT0); // cr_rate not invert
2492*53ee8cc1Swenshuai.xi }
2493*53ee8cc1Swenshuai.xi
2494*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_GH_NICAM);
2495*53ee8cc1Swenshuai.xi msVifGroupDelayFilter(VIF_SOUND_GH_NICAM, (FrequencyBand)VIFInitialIn_inst.VifFreqBand);
2496*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_BG_NICAM_NOTCH);
2497*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_GH_LOWER_ACI); //Notch N-1 Audio Carrier
2498*53ee8cc1Swenshuai.xi msWriteBit(A_LPF_BG_SEL, 0, _BIT6); // A_LPF_BG_SEL = 0 (PAL)
2499*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ_NTSC, 1, _BIT5); // CO_A_REJ_NTSC bypass
2500*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_LPF_BG, 0, _BIT1); // A_LPF_BG not bypass
2501*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A3, 0, _BIT5); // A3 notch not bypass
2502*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A4, 0, _BIT6); // A4 notch not bypass
2503*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A5, 0, _BIT3); //Notch_S filter not bypass
2504*53ee8cc1Swenshuai.xi //for Non-NTSC Setting
2505*53ee8cc1Swenshuai.xi msWriteBit(V_ACI_BPF_SEL, 1 , _BIT2); // Video_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2506*53ee8cc1Swenshuai.xi msWriteBit(A_ACI_BPF_SEL, 1 , _BIT3); // Audio_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2507*53ee8cc1Swenshuai.xi
2508*53ee8cc1Swenshuai.xi break;
2509*53ee8cc1Swenshuai.xi
2510*53ee8cc1Swenshuai.xi case VIF_SOUND_I:
2511*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
2512*53ee8cc1Swenshuai.xi {
2513*53ee8cc1Swenshuai.xi // silicon tuner
2514*53ee8cc1Swenshuai.xi if((VifShiftClk/*g_VifShiftClk*/ == 1)&&(VIF_IS_ADC_48MHz == 0))
2515*53ee8cc1Swenshuai.xi {
2516*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_I;
2517*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *2107)>>11; // 43.2/42 = 1.02857 ~= 1.02881
2518*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2519*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2520*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2521*53ee8cc1Swenshuai.xi }
2522*53ee8cc1Swenshuai.xi else if((VifShiftClk/*g_VifShiftClk*/ == 2)&&(VIF_IS_ADC_48MHz == 0))
2523*53ee8cc1Swenshuai.xi {
2524*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_I;
2525*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *1993)>>11; // 43.2/44.4 = 0.97297 ~= 0.97314
2526*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2527*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2528*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2529*53ee8cc1Swenshuai.xi }
2530*53ee8cc1Swenshuai.xi else
2531*53ee8cc1Swenshuai.xi {
2532*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VIFInitialIn_inst.VifCrRate_I & 0x000000FF)); // cr_rate for 6.4 MHz
2533*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VIFInitialIn_inst.VifCrRate_I>>8) & 0x000000FF));
2534*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VIFInitialIn_inst.VifCrRate_I>>16) & 0x000000FF), 0x0F);
2535*53ee8cc1Swenshuai.xi }
2536*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, VIFInitialIn_inst.VifCrInvert_I, _BIT0); // cr_rate not invert
2537*53ee8cc1Swenshuai.xi }
2538*53ee8cc1Swenshuai.xi
2539*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_I_NICAM);
2540*53ee8cc1Swenshuai.xi msVifGroupDelayFilter(VIF_SOUND_I, (FrequencyBand)VIFInitialIn_inst.VifFreqBand);
2541*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_I_NOTCH);
2542*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_I_LOWER_ACI); //Notch N-1 Audio Carrier
2543*53ee8cc1Swenshuai.xi msWriteBit(A_LPF_BG_SEL, 0, _BIT6); // A_LPF_BG_SEL = 0 (PAL)
2544*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ_NTSC, 1, _BIT5); // CO_A_REJ_NTSC bypass
2545*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_LPF_BG, 1, _BIT1); // A_LPF_BG bypass
2546*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A3, 0, _BIT5); // A3 notch not bypass
2547*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A4, 0, _BIT6); // A4 notch not bypass
2548*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A5, 0, _BIT3); //Notch_S filter not bypass
2549*53ee8cc1Swenshuai.xi //for Non-NTSC Setting
2550*53ee8cc1Swenshuai.xi msWriteBit(V_ACI_BPF_SEL, 1 , _BIT2); // Video_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2551*53ee8cc1Swenshuai.xi msWriteBit(A_ACI_BPF_SEL, 1 , _BIT3); // Audio_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2552*53ee8cc1Swenshuai.xi
2553*53ee8cc1Swenshuai.xi break;
2554*53ee8cc1Swenshuai.xi
2555*53ee8cc1Swenshuai.xi case VIF_SOUND_DK1:
2556*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
2557*53ee8cc1Swenshuai.xi {
2558*53ee8cc1Swenshuai.xi // silicon tuner
2559*53ee8cc1Swenshuai.xi if((VifShiftClk/*g_VifShiftClk*/ == 1)&&(VIF_IS_ADC_48MHz == 0))
2560*53ee8cc1Swenshuai.xi {
2561*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_DK;
2562*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *2107)>>11; // 43.2/42 = 1.02857 ~= 1.02881
2563*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2564*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2565*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2566*53ee8cc1Swenshuai.xi }
2567*53ee8cc1Swenshuai.xi else if((VifShiftClk/*g_VifShiftClk*/ == 2)&&(VIF_IS_ADC_48MHz == 0))
2568*53ee8cc1Swenshuai.xi {
2569*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_DK;
2570*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *1993)>>11; // 43.2/44.4 = 0.97297 ~= 0.97314
2571*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2572*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2573*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2574*53ee8cc1Swenshuai.xi }
2575*53ee8cc1Swenshuai.xi else
2576*53ee8cc1Swenshuai.xi {
2577*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VIFInitialIn_inst.VifCrRate_DK & 0x000000FF)); // cr_rate for 6.4 MHz
2578*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VIFInitialIn_inst.VifCrRate_DK>>8) & 0x000000FF));
2579*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VIFInitialIn_inst.VifCrRate_DK>>16) & 0x000000FF), 0x0F);
2580*53ee8cc1Swenshuai.xi }
2581*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, VIFInitialIn_inst.VifCrInvert_DK, _BIT0); // cr_rate not invert
2582*53ee8cc1Swenshuai.xi }
2583*53ee8cc1Swenshuai.xi
2584*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_SECAM_DK1_A2);
2585*53ee8cc1Swenshuai.xi msVifGroupDelayFilter(VIF_SOUND_DK1, (FrequencyBand)VIFInitialIn_inst.VifFreqBand);
2586*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_DK1_NOTCH);
2587*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_DK_LOWER_ACI);//Notch N-1 Audio Carrier
2588*53ee8cc1Swenshuai.xi msWriteBit(A_LPF_BG_SEL, 0, _BIT6); // A_LPF_BG_SEL = 0 (PAL)
2589*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ_NTSC, 1, _BIT5); // CO_A_REJ_NTSC bypass
2590*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_LPF_BG, 1, _BIT1); // A_LPF_BG bypass
2591*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A3, 0, _BIT5); // A3 notch not bypass
2592*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A4, 0, _BIT6); // A4 notch not bypass
2593*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A5, 0, _BIT3); //Notch_S filter not bypass
2594*53ee8cc1Swenshuai.xi //for Non-NTSC Setting
2595*53ee8cc1Swenshuai.xi msWriteBit(V_ACI_BPF_SEL, 1 , _BIT2); // Video_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2596*53ee8cc1Swenshuai.xi msWriteBit(A_ACI_BPF_SEL, 1 , _BIT3); // Audio_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2597*53ee8cc1Swenshuai.xi
2598*53ee8cc1Swenshuai.xi break;
2599*53ee8cc1Swenshuai.xi
2600*53ee8cc1Swenshuai.xi case VIF_SOUND_DK2:
2601*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
2602*53ee8cc1Swenshuai.xi {
2603*53ee8cc1Swenshuai.xi // silicon tuner
2604*53ee8cc1Swenshuai.xi if((VifShiftClk/*g_VifShiftClk*/ == 1)&&(VIF_IS_ADC_48MHz == 0))
2605*53ee8cc1Swenshuai.xi {
2606*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_DK;
2607*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *2107)>>11; // 43.2/42 = 1.02857 ~= 1.02881
2608*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2609*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2610*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2611*53ee8cc1Swenshuai.xi }
2612*53ee8cc1Swenshuai.xi else if((VifShiftClk/*g_VifShiftClk*/ == 2)&&(VIF_IS_ADC_48MHz == 0))
2613*53ee8cc1Swenshuai.xi {
2614*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_DK;
2615*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *1993)>>11; // 43.2/44.4 = 0.97297 ~= 0.97314
2616*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2617*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2618*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2619*53ee8cc1Swenshuai.xi }
2620*53ee8cc1Swenshuai.xi else
2621*53ee8cc1Swenshuai.xi {
2622*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VIFInitialIn_inst.VifCrRate_DK & 0x000000FF)); // cr_rate for 6.4 MHz
2623*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VIFInitialIn_inst.VifCrRate_DK>>8) & 0x000000FF));
2624*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VIFInitialIn_inst.VifCrRate_DK>>16) & 0x000000FF), 0x0F);
2625*53ee8cc1Swenshuai.xi }
2626*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, VIFInitialIn_inst.VifCrInvert_DK, _BIT0); // cr_rate not invert
2627*53ee8cc1Swenshuai.xi }
2628*53ee8cc1Swenshuai.xi
2629*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_DK2_A2);
2630*53ee8cc1Swenshuai.xi msVifGroupDelayFilter(VIF_SOUND_DK2, (FrequencyBand)VIFInitialIn_inst.VifFreqBand);
2631*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_DK2_NOTCH);
2632*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_DK_LOWER_ACI); //Notch N-1 Audio Carrier
2633*53ee8cc1Swenshuai.xi msWriteBit(A_LPF_BG_SEL, 0, _BIT6); // A_LPF_BG_SEL = 0 (PAL)
2634*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ_NTSC, 1, _BIT5); // CO_A_REJ_NTSC bypass
2635*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_LPF_BG, 1, _BIT1); // A_LPF_BG bypass
2636*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A3, 0, _BIT5); // A3 notch not bypass
2637*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A4, 0, _BIT6); // A4 notch not bypass
2638*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A5, 0, _BIT3); //Notch_S filter not bypass
2639*53ee8cc1Swenshuai.xi //for Non-NTSC Setting
2640*53ee8cc1Swenshuai.xi msWriteBit(V_ACI_BPF_SEL, 1 , _BIT2); // Video_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2641*53ee8cc1Swenshuai.xi msWriteBit(A_ACI_BPF_SEL, 1 , _BIT3); // Audio_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2642*53ee8cc1Swenshuai.xi
2643*53ee8cc1Swenshuai.xi break;
2644*53ee8cc1Swenshuai.xi
2645*53ee8cc1Swenshuai.xi case VIF_SOUND_DK_NICAM:
2646*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
2647*53ee8cc1Swenshuai.xi {
2648*53ee8cc1Swenshuai.xi // silicon tuner
2649*53ee8cc1Swenshuai.xi if((VifShiftClk/*g_VifShiftClk*/ == 1)&&(VIF_IS_ADC_48MHz == 0))
2650*53ee8cc1Swenshuai.xi {
2651*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_DK;
2652*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *2107)>>11; // 43.2/42 = 1.02857 ~= 1.02881
2653*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2654*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2655*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2656*53ee8cc1Swenshuai.xi }
2657*53ee8cc1Swenshuai.xi else if((VifShiftClk/*g_VifShiftClk*/ == 2)&&(VIF_IS_ADC_48MHz == 0))
2658*53ee8cc1Swenshuai.xi {
2659*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_DK;
2660*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *1993)>>11; // 43.2/44.4 = 0.97297 ~= 0.97314
2661*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2662*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2663*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2664*53ee8cc1Swenshuai.xi }
2665*53ee8cc1Swenshuai.xi else
2666*53ee8cc1Swenshuai.xi {
2667*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VIFInitialIn_inst.VifCrRate_DK & 0x000000FF)); // cr_rate for 6.4 MHz
2668*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VIFInitialIn_inst.VifCrRate_DK>>8) & 0x000000FF));
2669*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VIFInitialIn_inst.VifCrRate_DK>>16) & 0x000000FF), 0x0F);
2670*53ee8cc1Swenshuai.xi }
2671*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, VIFInitialIn_inst.VifCrInvert_DK, _BIT0); // cr_rate not invert
2672*53ee8cc1Swenshuai.xi }
2673*53ee8cc1Swenshuai.xi
2674*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_DK2_NICAM);
2675*53ee8cc1Swenshuai.xi msVifGroupDelayFilter(VIF_SOUND_DK_NICAM, (FrequencyBand)VIFInitialIn_inst.VifFreqBand);
2676*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_DK_NICAM_NOTCH);
2677*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_DK_LOWER_ACI); //Notch N-1 Audio Carrier
2678*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_ACI_REJ_NTSC, 1, _BIT6); // bypass ACI_REJ_NTSC_filter
2679*53ee8cc1Swenshuai.xi msWriteBit(A_LPF_BG_SEL, 0, _BIT6); // A_LPF_BG_SEL = 0 (PAL)
2680*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ_NTSC, 1, _BIT5); // CO_A_REJ_NTSC bypass
2681*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_LPF_BG, 1, _BIT1); // A_LPF_BG bypass
2682*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A3, 0, _BIT5); // A3 notch not bypass
2683*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A4, 0, _BIT6); // A4 notch not bypass
2684*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A5, 0, _BIT3); //Notch_S filter not bypass
2685*53ee8cc1Swenshuai.xi //for Non-NTSC Setting
2686*53ee8cc1Swenshuai.xi msWriteBit(V_ACI_BPF_SEL, 1 , _BIT2); // Video_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2687*53ee8cc1Swenshuai.xi msWriteBit(A_ACI_BPF_SEL, 1 , _BIT3); // Audio_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2688*53ee8cc1Swenshuai.xi
2689*53ee8cc1Swenshuai.xi break;
2690*53ee8cc1Swenshuai.xi
2691*53ee8cc1Swenshuai.xi case VIF_SOUND_DK3:
2692*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
2693*53ee8cc1Swenshuai.xi {
2694*53ee8cc1Swenshuai.xi // silicon tuner
2695*53ee8cc1Swenshuai.xi if((VifShiftClk/*g_VifShiftClk*/ == 1)&&(VIF_IS_ADC_48MHz == 0))
2696*53ee8cc1Swenshuai.xi {
2697*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_DK;
2698*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *2107)>>11; // 43.2/42 = 1.02857 ~= 1.02881
2699*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2700*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2701*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2702*53ee8cc1Swenshuai.xi }
2703*53ee8cc1Swenshuai.xi else if((VifShiftClk/*g_VifShiftClk*/ == 2)&&(VIF_IS_ADC_48MHz == 0))
2704*53ee8cc1Swenshuai.xi {
2705*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_DK;
2706*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *1993)>>11; // 43.2/44.4 = 0.97297 ~= 0.97314
2707*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2708*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2709*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2710*53ee8cc1Swenshuai.xi }
2711*53ee8cc1Swenshuai.xi else
2712*53ee8cc1Swenshuai.xi {
2713*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VIFInitialIn_inst.VifCrRate_DK & 0x000000FF)); // cr_rate for 6.4 MHz
2714*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VIFInitialIn_inst.VifCrRate_DK>>8) & 0x000000FF));
2715*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VIFInitialIn_inst.VifCrRate_DK>>16) & 0x000000FF), 0x0F);
2716*53ee8cc1Swenshuai.xi }
2717*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, VIFInitialIn_inst.VifCrInvert_DK, _BIT0); // cr_rate not invert
2718*53ee8cc1Swenshuai.xi }
2719*53ee8cc1Swenshuai.xi
2720*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_SECAM_DK3_A2);
2721*53ee8cc1Swenshuai.xi msVifGroupDelayFilter(VIF_SOUND_DK3, (FrequencyBand)VIFInitialIn_inst.VifFreqBand);
2722*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_DK3_NOTCH);
2723*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_DK_LOWER_ACI);//Notch N-1 Audio Carrier
2724*53ee8cc1Swenshuai.xi msWriteBit(A_LPF_BG_SEL, 0, _BIT6); // A_LPF_BG_SEL = 0 (PAL)
2725*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ_NTSC, 1, _BIT5); // CO_A_REJ_NTSC bypass
2726*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_LPF_BG, 1, _BIT1); // A_LPF_BG bypass
2727*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A3, 0, _BIT5); // A3 notch not bypass
2728*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A4, 0, _BIT6); // A4 notch not bypass
2729*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A5, 0, _BIT3); //Notch_S filter not bypass
2730*53ee8cc1Swenshuai.xi //for Non-NTSC Setting
2731*53ee8cc1Swenshuai.xi msWriteBit(V_ACI_BPF_SEL, 1 , _BIT2); // Video_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2732*53ee8cc1Swenshuai.xi msWriteBit(A_ACI_BPF_SEL, 1 , _BIT3); // Audio_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2733*53ee8cc1Swenshuai.xi
2734*53ee8cc1Swenshuai.xi break;
2735*53ee8cc1Swenshuai.xi
2736*53ee8cc1Swenshuai.xi case VIF_SOUND_L:
2737*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
2738*53ee8cc1Swenshuai.xi {
2739*53ee8cc1Swenshuai.xi // silicon tuner
2740*53ee8cc1Swenshuai.xi if((VifShiftClk/*g_VifShiftClk*/ == 1)&&(VIF_IS_ADC_48MHz == 0))
2741*53ee8cc1Swenshuai.xi {
2742*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_L;
2743*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *2107)>>11; // 43.2/42 = 1.02857 ~= 1.02881
2744*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2745*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2746*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2747*53ee8cc1Swenshuai.xi }
2748*53ee8cc1Swenshuai.xi else if((VifShiftClk/*g_VifShiftClk*/ == 2)&&(VIF_IS_ADC_48MHz == 0))
2749*53ee8cc1Swenshuai.xi {
2750*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_L;
2751*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *1993)>>11; // 43.2/44.4 = 0.97297 ~= 0.97314
2752*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2753*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2754*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2755*53ee8cc1Swenshuai.xi }
2756*53ee8cc1Swenshuai.xi else
2757*53ee8cc1Swenshuai.xi {
2758*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VIFInitialIn_inst.VifCrRate_L & 0x000000FF)); // cr_rate for 6.4 MHz
2759*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VIFInitialIn_inst.VifCrRate_L>>8) & 0x000000FF));
2760*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VIFInitialIn_inst.VifCrRate_L>>16) & 0x000000FF), 0x0F);
2761*53ee8cc1Swenshuai.xi }
2762*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, VIFInitialIn_inst.VifCrInvert_L, _BIT0); // cr_rate not invert
2763*53ee8cc1Swenshuai.xi }
2764*53ee8cc1Swenshuai.xi
2765*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_SECAM_L_NICAM);
2766*53ee8cc1Swenshuai.xi msVifGroupDelayFilter(VIF_SOUND_L, (FrequencyBand)VIFInitialIn_inst.VifFreqBand);
2767*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_L_NICAM_NOTCH);
2768*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_DK_LOWER_ACI); //Notch N-1 Audio Carrier
2769*53ee8cc1Swenshuai.xi msWriteBit(A_LPF_BG_SEL, 0, _BIT6); // A_LPF_BG_SEL = 0 (PAL)
2770*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ_NTSC, 1, _BIT5); // CO_A_REJ_NTSC bypass
2771*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_LPF_BG, 1, _BIT1); // A_LPF_BG bypass
2772*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A3, 0, _BIT5); // A3 notch not bypass
2773*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A4, 0, _BIT6); // A4 notch not bypass
2774*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A5, 0, _BIT3); //Notch_S filter not bypass
2775*53ee8cc1Swenshuai.xi //for Non-NTSC Setting
2776*53ee8cc1Swenshuai.xi msWriteBit(V_ACI_BPF_SEL, 1 , _BIT2); // Video_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2777*53ee8cc1Swenshuai.xi msWriteBit(A_ACI_BPF_SEL, 1 , _BIT3); // Audio_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2778*53ee8cc1Swenshuai.xi
2779*53ee8cc1Swenshuai.xi break;
2780*53ee8cc1Swenshuai.xi
2781*53ee8cc1Swenshuai.xi case VIF_SOUND_LL:
2782*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
2783*53ee8cc1Swenshuai.xi {
2784*53ee8cc1Swenshuai.xi // silicon tuner
2785*53ee8cc1Swenshuai.xi if((VifShiftClk/*g_VifShiftClk*/ == 1)&&(VIF_IS_ADC_48MHz == 0))
2786*53ee8cc1Swenshuai.xi {
2787*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_LL;
2788*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *2107)>>11; // 43.2/42 = 1.02857 ~= 1.02881
2789*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2790*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2791*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2792*53ee8cc1Swenshuai.xi }
2793*53ee8cc1Swenshuai.xi else if((VifShiftClk/*g_VifShiftClk*/ == 2)&&(VIF_IS_ADC_48MHz == 0))
2794*53ee8cc1Swenshuai.xi {
2795*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_LL;
2796*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *1993)>>11; // 43.2/44.4 = 0.97297 ~= 0.97314
2797*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2798*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2799*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2800*53ee8cc1Swenshuai.xi }
2801*53ee8cc1Swenshuai.xi else
2802*53ee8cc1Swenshuai.xi {
2803*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VIFInitialIn_inst.VifCrRate_LL & 0x000000FF)); // cr_rate for 6.4 MHz
2804*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VIFInitialIn_inst.VifCrRate_LL>>8) & 0x000000FF));
2805*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VIFInitialIn_inst.VifCrRate_LL>>16) & 0x000000FF), 0x0F);
2806*53ee8cc1Swenshuai.xi }
2807*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, VIFInitialIn_inst.VifCrInvert_LL, _BIT0); // cr_rate not invert
2808*53ee8cc1Swenshuai.xi }
2809*53ee8cc1Swenshuai.xi
2810*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_SECAM_L_NICAM);
2811*53ee8cc1Swenshuai.xi msVifGroupDelayFilter(VIF_SOUND_LL, (FrequencyBand)VIFInitialIn_inst.VifFreqBand);
2812*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_L_NICAM_NOTCH);
2813*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_PAL_DK_LOWER_ACI);//Notch N-1 Audio Carrier
2814*53ee8cc1Swenshuai.xi msWriteBit(A_LPF_BG_SEL, 0, _BIT6); // A_LPF_BG_SEL = 0 (PAL)
2815*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ_NTSC, 1, _BIT5); // CO_A_REJ_NTSC bypass
2816*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_LPF_BG, 1, _BIT1); // A_LPF_BG bypass
2817*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A3, 0, _BIT5); // A3 notch not bypass
2818*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A4, 0, _BIT6); // A4 notch not bypass
2819*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A5, 0, _BIT3); //Notch_S filter not bypass
2820*53ee8cc1Swenshuai.xi //for Non-NTSC Setting
2821*53ee8cc1Swenshuai.xi msWriteBit(V_ACI_BPF_SEL, 1 , _BIT2); // Video_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2822*53ee8cc1Swenshuai.xi msWriteBit(A_ACI_BPF_SEL, 1 , _BIT3); // Audio_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2823*53ee8cc1Swenshuai.xi
2824*53ee8cc1Swenshuai.xi break;
2825*53ee8cc1Swenshuai.xi
2826*53ee8cc1Swenshuai.xi case VIF_SOUND_MN:
2827*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
2828*53ee8cc1Swenshuai.xi {
2829*53ee8cc1Swenshuai.xi // silicon tuner
2830*53ee8cc1Swenshuai.xi if((VifShiftClk/*g_VifShiftClk*/ == 1)&&(VIF_IS_ADC_48MHz == 0))
2831*53ee8cc1Swenshuai.xi {
2832*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_MN;
2833*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *2107)>>11; // 43.2/42 = 1.02857 ~= 1.02881
2834*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2835*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2836*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2837*53ee8cc1Swenshuai.xi }
2838*53ee8cc1Swenshuai.xi else if((VifShiftClk/*g_VifShiftClk*/ == 2)&&(VIF_IS_ADC_48MHz == 0))
2839*53ee8cc1Swenshuai.xi {
2840*53ee8cc1Swenshuai.xi VifCrRateTemp = VIFInitialIn_inst.VifCrRate_MN;
2841*53ee8cc1Swenshuai.xi VifCrRateTemp = (VifCrRateTemp *1993)>>11; // 43.2/44.4 = 0.97297 ~= 0.97314
2842*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VifCrRateTemp & 0x000000FF)); // cr_rate for 6.4 MHz
2843*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VifCrRateTemp>>8) & 0x000000FF));
2844*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VifCrRateTemp>>16) & 0x000000FF), 0x0F);
2845*53ee8cc1Swenshuai.xi }
2846*53ee8cc1Swenshuai.xi else
2847*53ee8cc1Swenshuai.xi {
2848*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, (BYTE) (VIFInitialIn_inst.VifCrRate_MN & 0x000000FF)); // cr_rate for 6.4 MHz
2849*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, (BYTE) ((VIFInitialIn_inst.VifCrRate_MN>>8) & 0x000000FF));
2850*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, (BYTE) ((VIFInitialIn_inst.VifCrRate_MN>>16) & 0x000000FF), 0x0F);
2851*53ee8cc1Swenshuai.xi }
2852*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, VIFInitialIn_inst.VifCrInvert_MN, _BIT0); // cr_rate not invert
2853*53ee8cc1Swenshuai.xi }
2854*53ee8cc1Swenshuai.xi
2855*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_NTSC_MN_A2);
2856*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_GDE_MN_NOTCH);
2857*53ee8cc1Swenshuai.xi msVifGroupDelayFilter(VIF_SOUND_MN, (FrequencyBand)VIFInitialIn_inst.VifFreqBand);
2858*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_NTSC_MN_LOWER_ACI); //Notch N-1 Audio Carrier
2859*53ee8cc1Swenshuai.xi msWriteBit(A_LPF_BG_SEL, 1, _BIT6); // A_LPF_BG_SEL = 1 (NTSC)
2860*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ_NTSC, 1, _BIT5); // CO_A_REJ_NTSC bypass
2861*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_LPF_BG, 1, _BIT1); // A_LPF_BG bypass
2862*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A3, 0, _BIT5); // A3 notch not bypass
2863*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A4, 0, _BIT6); // A4 notch not bypass
2864*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A5, 0, _BIT3); //Notch_S filter not bypass
2865*53ee8cc1Swenshuai.xi //for NTSC Setting
2866*53ee8cc1Swenshuai.xi msWriteBit(V_ACI_BPF_SEL, 0 , _BIT2); // Video_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2867*53ee8cc1Swenshuai.xi msWriteBit(A_ACI_BPF_SEL, 0 , _BIT3); // Audio_ACI_BPF_Selective 0:ACI_BPF_6M , 1:ACI_BPF_7M
2868*53ee8cc1Swenshuai.xi
2869*53ee8cc1Swenshuai.xi break;
2870*53ee8cc1Swenshuai.xi
2871*53ee8cc1Swenshuai.xi default:
2872*53ee8cc1Swenshuai.xi break;
2873*53ee8cc1Swenshuai.xi }
2874*53ee8cc1Swenshuai.xi msVifLoadEQCoeff(ucSoundSystem);
2875*53ee8cc1Swenshuai.xi }
2876*53ee8cc1Swenshuai.xi
2877*53ee8cc1Swenshuai.xi // For API
msVifTopAdjust(void)2878*53ee8cc1Swenshuai.xi void msVifTopAdjust(void)
2879*53ee8cc1Swenshuai.xi {
2880*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nmsVifTopAdjust() "));
2881*53ee8cc1Swenshuai.xi
2882*53ee8cc1Swenshuai.xi if (!_hal_VIF.bBaseAddrInitialized) return ;
2883*53ee8cc1Swenshuai.xi
2884*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 0)
2885*53ee8cc1Swenshuai.xi {
2886*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_PGA2_MIN, VIFInitialIn_inst.VifTop, 0x1F); // pga2 min
2887*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_PGA2_OV, VIFInitialIn_inst.VifTop, 0x1F);
2888*53ee8cc1Swenshuai.xi msWriteBit(AGC_PGA2_OREN, 1, _BIT1);
2889*53ee8cc1Swenshuai.xi msWriteBit(AGC_PGA2_OREN, 0, _BIT1);
2890*53ee8cc1Swenshuai.xi }
2891*53ee8cc1Swenshuai.xi }
2892*53ee8cc1Swenshuai.xi
msVifDynamicTopAdjust(void)2893*53ee8cc1Swenshuai.xi void msVifDynamicTopAdjust(void)
2894*53ee8cc1Swenshuai.xi {
2895*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nmsVifDynamicTopAdjust() "));
2896*53ee8cc1Swenshuai.xi
2897*53ee8cc1Swenshuai.xi if (!_hal_VIF.bBaseAddrInitialized) return ;
2898*53ee8cc1Swenshuai.xi
2899*53ee8cc1Swenshuai.xi BYTE mean256=0, agc_pga2=0, ref=0, diff=0;
2900*53ee8cc1Swenshuai.xi WORD vga=0;
2901*53ee8cc1Swenshuai.xi
2902*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 0)
2903*53ee8cc1Swenshuai.xi {
2904*53ee8cc1Swenshuai.xi vga = msRead2Bytes(AGC_VGA);
2905*53ee8cc1Swenshuai.xi agc_pga2 = msReadByte(AGC_PGA2C) & 0x1F;
2906*53ee8cc1Swenshuai.xi mean256 = (BYTE)(msRead2Bytes(AGC_MEAN256)>>1); // AGC mean256
2907*53ee8cc1Swenshuai.xi ref = msReadByte(AGC_REF); // AGC ref
2908*53ee8cc1Swenshuai.xi
2909*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 0)
2910*53ee8cc1Swenshuai.xi {
2911*53ee8cc1Swenshuai.xi diff = 0x15; // negative modulation
2912*53ee8cc1Swenshuai.xi }
2913*53ee8cc1Swenshuai.xi else
2914*53ee8cc1Swenshuai.xi {
2915*53ee8cc1Swenshuai.xi diff = 0x0A; // positive modulation
2916*53ee8cc1Swenshuai.xi }
2917*53ee8cc1Swenshuai.xi
2918*53ee8cc1Swenshuai.xi if ((vga == VIFInitialIn_inst.VifVgaMinimum) && (mean256 >= (ref+diff)) && (agc_pga2 == VIFInitialIn_inst.VifTop))
2919*53ee8cc1Swenshuai.xi {
2920*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_PGA2_MIN, VIFInitialIn_inst.VifDynamicTopMin, 0x1F); // pga2 min
2921*53ee8cc1Swenshuai.xi }
2922*53ee8cc1Swenshuai.xi else if (((agc_pga2) < VIFInitialIn_inst.VifTop) && ((vga >= 0xF000) || (vga <= VIFInitialIn_inst.VifVgaMaximum)))
2923*53ee8cc1Swenshuai.xi {
2924*53ee8cc1Swenshuai.xi msVifTopAdjust();
2925*53ee8cc1Swenshuai.xi }
2926*53ee8cc1Swenshuai.xi }
2927*53ee8cc1Swenshuai.xi }
2928*53ee8cc1Swenshuai.xi
msVifLoad(void)2929*53ee8cc1Swenshuai.xi void msVifLoad(void)
2930*53ee8cc1Swenshuai.xi {
2931*53ee8cc1Swenshuai.xi if (!_hal_VIF.bBaseAddrInitialized) return ;
2932*53ee8cc1Swenshuai.xi
2933*53ee8cc1Swenshuai.xi RIU_WriteRegBit(RF_LOAD , 1 , _BIT0);
2934*53ee8cc1Swenshuai.xi RIU_WriteRegBit(DBB1_LOAD , 1 , _BIT0);
2935*53ee8cc1Swenshuai.xi RIU_WriteRegBit(DBB2_LOAD , 1 , _BIT0);
2936*53ee8cc1Swenshuai.xi RIU_WriteRegBit(DBB2_LOAD , 0, _BIT0);
2937*53ee8cc1Swenshuai.xi }
2938*53ee8cc1Swenshuai.xi
2939*53ee8cc1Swenshuai.xi // For API
msVifInitial(void)2940*53ee8cc1Swenshuai.xi void msVifInitial(void)
2941*53ee8cc1Swenshuai.xi {
2942*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nmsVifInitial()"));
2943*53ee8cc1Swenshuai.xi
2944*53ee8cc1Swenshuai.xi if (!_hal_VIF.bBaseAddrInitialized) return ;
2945*53ee8cc1Swenshuai.xi
2946*53ee8cc1Swenshuai.xi // VifShiftClk : 0x1121_D3
2947*53ee8cc1Swenshuai.xi BYTE VifShiftClk = msReadByte(VIF_RF_RESERVED_1+1);
2948*53ee8cc1Swenshuai.xi
2949*53ee8cc1Swenshuai.xi msWriteByteMask(VIF_SOFT_RSTZ, 0x00, 0x7F); // VIF software reset
2950*53ee8cc1Swenshuai.xi msWriteBit(CLAMPGAIN_RSTZ, 0, _BIT0); // clampgain software reset
2951*53ee8cc1Swenshuai.xi msWriteBit(VSYNC_RSTZ, 0, _BIT0); // vsync software reset
2952*53ee8cc1Swenshuai.xi
2953*53ee8cc1Swenshuai.xi g_ucVifStatusStep = VIF_START;
2954*53ee8cc1Swenshuai.xi
2955*53ee8cc1Swenshuai.xi //Serious_ACI_Det parameter
2956*53ee8cc1Swenshuai.xi AGC_Change_Index = 0;
2957*53ee8cc1Swenshuai.xi RIU_WriteByte(0x1286EL, 0x04); // ADC Setting Overflow value
2958*53ee8cc1Swenshuai.xi
2959*53ee8cc1Swenshuai.xi if ((g_ucVifSoundSystemType == VIF_SOUND_L) || (g_ucVifSoundSystemType == VIF_SOUND_LL))
2960*53ee8cc1Swenshuai.xi {
2961*53ee8cc1Swenshuai.xi g_bCheckModulationType = 1; // positive modulation
2962*53ee8cc1Swenshuai.xi g_bCheckIFFreq = (g_ucVifSoundSystemType == VIF_SOUND_L) ? 0 : 1; // 0: 38.9 MHz; 1: 33.9 MHz
2963*53ee8cc1Swenshuai.xi }
2964*53ee8cc1Swenshuai.xi else
2965*53ee8cc1Swenshuai.xi {
2966*53ee8cc1Swenshuai.xi g_bCheckModulationType = 0; // negative modulation
2967*53ee8cc1Swenshuai.xi g_bCheckIFFreq = 0; // 38.9 MHz
2968*53ee8cc1Swenshuai.xi }
2969*53ee8cc1Swenshuai.xi
2970*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 1)
2971*53ee8cc1Swenshuai.xi {
2972*53ee8cc1Swenshuai.xi msWriteByteMask(MODULATION_TYPE, 0x0F, 0x0F); // positive modulation
2973*53ee8cc1Swenshuai.xi }
2974*53ee8cc1Swenshuai.xi else
2975*53ee8cc1Swenshuai.xi {
2976*53ee8cc1Swenshuai.xi msWriteByteMask(MODULATION_TYPE, 0x00, 0x0F); // negative modulation
2977*53ee8cc1Swenshuai.xi }
2978*53ee8cc1Swenshuai.xi
2979*53ee8cc1Swenshuai.xi // AGC
2980*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 1)
2981*53ee8cc1Swenshuai.xi {
2982*53ee8cc1Swenshuai.xi msWriteByte(AGC_PEAK_CNT_L, 0x00); // AGC peak cnt
2983*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_PEAK_CNT_H, 0x0B, 0x0F);
2984*53ee8cc1Swenshuai.xi msWriteByte(AGC_REF, VIFInitialIn_inst.VifAgcRefPositive); // AGC ref
2985*53ee8cc1Swenshuai.xi }
2986*53ee8cc1Swenshuai.xi else
2987*53ee8cc1Swenshuai.xi {
2988*53ee8cc1Swenshuai.xi msWriteByte(AGC_PEAK_CNT_L, 0x00); // AGC peak cnt
2989*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_PEAK_CNT_H, 0x0C, 0x0F);
2990*53ee8cc1Swenshuai.xi msWriteByte(AGC_REF, VIFInitialIn_inst.VifAgcRefNegative); // AGC ref
2991*53ee8cc1Swenshuai.xi }
2992*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_MEAN_SEL, _BIT2, _BIT2|_BIT3); // mean16
2993*53ee8cc1Swenshuai.xi msWriteByte(AGC_LINE_CNT_L, 0x01); // AGC line cnt = 1
2994*53ee8cc1Swenshuai.xi msWriteByte(AGC_LINE_CNT_H, 0x00);
2995*53ee8cc1Swenshuai.xi
2996*53ee8cc1Swenshuai.xi if (bEnableUsrNonSteadyAgcK)
2997*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_K, u8UsrNonSteadyAgcK, _BIT0|_BIT1|_BIT2); // k
2998*53ee8cc1Swenshuai.xi else
2999*53ee8cc1Swenshuai.xi {
3000*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
3001*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_K, 0x03, _BIT0|_BIT1|_BIT2); // k
3002*53ee8cc1Swenshuai.xi else
3003*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_K, 0x02, _BIT0|_BIT1|_BIT2); // k
3004*53ee8cc1Swenshuai.xi }
3005*53ee8cc1Swenshuai.xi
3006*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_PGA2_OREN, 0x00, 0x03);
3007*53ee8cc1Swenshuai.xi msWriteByte(AGC_VGA_MAX_L, VIFInitialIn_inst.VifVgaMaximum); // vga max
3008*53ee8cc1Swenshuai.xi msWriteByte(AGC_VGA_MAX_H, VIFInitialIn_inst.VifVgaMaximum>>8);
3009*53ee8cc1Swenshuai.xi msWriteByte(AGC_VGA_MIN_L, VIFInitialIn_inst.VifVgaMinimum); // vga min
3010*53ee8cc1Swenshuai.xi msWriteByte(AGC_VGA_MIN_H, VIFInitialIn_inst.VifVgaMinimum>>8);
3011*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_PGA1_MAX, 0x00, 0x0F); // pga1 max
3012*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
3013*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_PGA2_MAX, 0x00, 0x1F); // pga2 max
3014*53ee8cc1Swenshuai.xi else
3015*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_PGA2_MAX, 0x1F, 0x1F); // pga2 max
3016*53ee8cc1Swenshuai.xi
3017*53ee8cc1Swenshuai.xi msWriteByte(VAGC_VGA2_OV_L, 0x00); // VGA2(IFAGC) output minimun
3018*53ee8cc1Swenshuai.xi msWriteByte(VAGC_VGA2_OV_H, 0x80);
3019*53ee8cc1Swenshuai.xi msWriteBit(VAGC_VGA2_OREN, 1, _BIT2);
3020*53ee8cc1Swenshuai.xi
3021*53ee8cc1Swenshuai.xi if ((VIFInitialIn_inst.VifSawArch == SILICON_TUNER) || (VIFInitialIn_inst.VifSawArch == NO_SAW) ||(VIFInitialIn_inst.VifSawArch == SAVE_PIN_VIF))
3022*53ee8cc1Swenshuai.xi msWriteBit(VAGC_VGA_OUT_SEL, 1, _BIT0); // VGA1 -> IFAGC
3023*53ee8cc1Swenshuai.xi
3024*53ee8cc1Swenshuai.xi if(VIFInitialIn_inst.VifSawArch == NO_SAW)
3025*53ee8cc1Swenshuai.xi {
3026*53ee8cc1Swenshuai.xi msWriteBit(LEVEL_SENSE_BYPASS, 0, _BIT0); // Level_Sense not bypass
3027*53ee8cc1Swenshuai.xi msWriteBit(LEVEL_SENSE_OUT_SEL, 0, _BIT4); // DVGA input: 0: from LEVEL_SENSE out(can be bypassed); 1: ACI_BPF out(cannot be bypassed)
3028*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_V_ACI_BPF4AGC, 0, _BIT0); // bypass ACI_BPF before AGC input: 0:not bypass; 1: bypass
3029*53ee8cc1Swenshuai.xi }
3030*53ee8cc1Swenshuai.xi else
3031*53ee8cc1Swenshuai.xi {
3032*53ee8cc1Swenshuai.xi msWriteBit(LEVEL_SENSE_BYPASS, 1, _BIT0); // Level_Sense bypass
3033*53ee8cc1Swenshuai.xi msWriteBit(LEVEL_SENSE_OUT_SEL, 0, _BIT4); // DVGA input: 0: from LEVEL_SENSE out(can be bypassed); 1: ACI_BPF out(cannot be bypassed)
3034*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_V_ACI_BPF4AGC, 1, _BIT0); // bypass ACI_BPF before AGC input: 0:not bypass; 1: bypass
3035*53ee8cc1Swenshuai.xi }
3036*53ee8cc1Swenshuai.xi
3037*53ee8cc1Swenshuai.xi msWriteBit(AGC_IN_SEL, 1, _BIT1); // AGC input 0: from SOS_out ; 1:from ACI_BPF out(can be bypassed)
3038*53ee8cc1Swenshuai.xi
3039*53ee8cc1Swenshuai.xi // AGC gain distribution
3040*53ee8cc1Swenshuai.xi msWriteBit(AGC_DBB_VVGA_SEL, 0, _BIT3); // Vga gain force x1
3041*53ee8cc1Swenshuai.xi msWriteBit(AGC_DBB_AVGA_SEL, 0, _BIT4); // Avga gain force x1
3042*53ee8cc1Swenshuai.xi
3043*53ee8cc1Swenshuai.xi msWriteByte(AGC_VGA_THR, VIFInitialIn_inst.VifVgaMaximum); // vga threshold
3044*53ee8cc1Swenshuai.xi msWriteByte(AGC_VGA_THR+1, (VIFInitialIn_inst.VifVgaMaximum - 0x1000)>>8);
3045*53ee8cc1Swenshuai.xi msWriteByte(AGC_VGA_BASE, (VIFInitialIn_inst.VifAgcVgaBase - 0x14)); // vga base
3046*53ee8cc1Swenshuai.xi msWriteByte(AGC_VGA_OFFS, VIFInitialIn_inst.VifAgcVgaOffs); // vga offset
3047*53ee8cc1Swenshuai.xi
3048*53ee8cc1Swenshuai.xi msWriteBit(AGC_ENABLE, 1, _BIT0); // AGC enable
3049*53ee8cc1Swenshuai.xi
3050*53ee8cc1Swenshuai.xi // CR
3051*53ee8cc1Swenshuai.xi msWriteByte(CR_DL_A, 0x16); // CR audio delay line
3052*53ee8cc1Swenshuai.xi msWriteByte(CR_PD_ERR_MAX_L, 0xFF); // CR pd error max
3053*53ee8cc1Swenshuai.xi msWriteByteMask(CR_PD_ERR_MAX_H, 0x3F, 0x3F);
3054*53ee8cc1Swenshuai.xi msWriteByte(CR_NOTCH_A1_L, 0x41); // CR notch filter coefficient
3055*53ee8cc1Swenshuai.xi msWriteByte(CR_NOTCH_A1_H, 0x0C);
3056*53ee8cc1Swenshuai.xi msWriteByte(CR_NOTCH_A2_L, 0xE9); // CR notch filter coefficient
3057*53ee8cc1Swenshuai.xi msWriteByte(CR_NOTCH_A2_H, 0x0B);
3058*53ee8cc1Swenshuai.xi msWriteByte(CR_NOTCH_B1_L, 0x58); // CR notch filter coefficient
3059*53ee8cc1Swenshuai.xi msWriteByte(CR_NOTCH_B1_H, 0x00);
3060*53ee8cc1Swenshuai.xi msWriteBit(CR_ANCO_SEL, 1, _BIT0); // audio nco select
3061*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 2)
3062*53ee8cc1Swenshuai.xi {
3063*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KF1_HW, 0x00, 0x0F); // kf1 hardware mode
3064*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP1_HW, 0x00, 0x0F); // kp1 hardware mode
3065*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI1_HW, 0x00, 0xF0);// ki1 hardware mode
3066*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP2_HW, 0x00, 0x0F); // kp2 hardware mode
3067*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI2_HW, 0x00, 0xF0);// ki2 hardware mode
3068*53ee8cc1Swenshuai.xi msWriteBit(CR_K_SEL, 0, _BIT6); // hw mode
3069*53ee8cc1Swenshuai.xi }
3070*53ee8cc1Swenshuai.xi else
3071*53ee8cc1Swenshuai.xi {
3072*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KF1_HW, VIFInitialIn_inst.VifCrKf1, 0x0F); // kf1 hardware mode
3073*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP1_HW, VIFInitialIn_inst.VifCrKp1, 0x0F); // kp1 hardware mode
3074*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI1_HW, VIFInitialIn_inst.VifCrKi1<<4, 0xF0);// ki1 hardware mode
3075*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP2_HW, VIFInitialIn_inst.VifCrKp2, 0x0F); // kp2 hardware mode
3076*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI2_HW, VIFInitialIn_inst.VifCrKi2<<4, 0xF0);// ki2 hardware mode
3077*53ee8cc1Swenshuai.xi msWriteBit(CR_K_SEL, 1, _BIT6); // kp,ki,kf
3078*53ee8cc1Swenshuai.xi msWriteBit(CR_PD_IMAG_INV, 1, _BIT1); // for > 150% overmodulation
3079*53ee8cc1Swenshuai.xi }
3080*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KF_SW, 0x00, 0x0F); // kf software mode
3081*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP_SW, 0x00, 0x0F); // kp software mode
3082*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI_SW, 0x00, 0xF0); // ki software mode
3083*53ee8cc1Swenshuai.xi msWriteBit(CR_JTRDET_IN_SEL, 1, _BIT4); // carrier jitter detector input select CR_LF1
3084*53ee8cc1Swenshuai.xi msWriteBit(VNCO_INV_OREN, 0, _BIT1);
3085*53ee8cc1Swenshuai.xi
3086*53ee8cc1Swenshuai.xi //locking range setting
3087*53ee8cc1Swenshuai.xi msWriteBit(CR_FD_IN_SEL, 0 , _BIT0); //0:IIR LPF2; 1:FIR
3088*53ee8cc1Swenshuai.xi msWriteBit(CR_IIR_SEL, 1 , _BIT1); //0:IIR LPF1; 1:IIR LPF2
3089*53ee8cc1Swenshuai.xi
3090*53ee8cc1Swenshuai.xi if(VIFInitialIn_inst.VifCrPdModeSel == 0) // 0: imaginary part; 1: cordic
3091*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_CR_IIR_LPF1); // IIR LPF1 coefficients
3092*53ee8cc1Swenshuai.xi else
3093*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_CR_IIR_LPF2); // IIR LPF2 coefficients
3094*53ee8cc1Swenshuai.xi
3095*53ee8cc1Swenshuai.xi msWriteBit(CR_LPF_SEL, VIFInitialIn_inst.VifCrLpfSel, _BIT4); // CR LPF 0: FIR LPF; 1: IIR LPF
3096*53ee8cc1Swenshuai.xi msWriteBit(CR_PD_MODE, VIFInitialIn_inst.VifCrPdModeSel, _BIT1); // 0: imaginary part; 1: cordic
3097*53ee8cc1Swenshuai.xi msWriteBit(LOCK_LEAKY_SEL, VIFInitialIn_inst.VifCrLockLeakySel, _BIT0);
3098*53ee8cc1Swenshuai.xi msWriteBit(CR_PD_X2, VIFInitialIn_inst.VifCrPdX2, _BIT2); // CR X2 0: lock 0 degree; 1: lock 0 or 180 degree
3099*53ee8cc1Swenshuai.xi msWriteByte(CR_LOCK_TH_L, VIFInitialIn_inst.VifCrLockThr); // CR lock threshold
3100*53ee8cc1Swenshuai.xi msWriteByteMask(CR_LOCK_TH_H, VIFInitialIn_inst.VifCrLockThr>>8, 0x03);
3101*53ee8cc1Swenshuai.xi msWriteByte(CR_UNLOCK_NUM, 0x00); // CR unlock num
3102*53ee8cc1Swenshuai.xi msWriteByte(CR_UNLOCK_NUM+1, 0x40);
3103*53ee8cc1Swenshuai.xi msWriteByteMask(CR_UNLOCK_NUM+2, 0x00, 0x0F);
3104*53ee8cc1Swenshuai.xi msWriteByte(CR_LOCK_NUM, VIFInitialIn_inst.VifCrLockNum); // CR lock num
3105*53ee8cc1Swenshuai.xi msWriteByte(CR_LOCK_NUM+1, VIFInitialIn_inst.VifCrLockNum>>8);
3106*53ee8cc1Swenshuai.xi msWriteByteMask(CR_LOCK_NUM+2, VIFInitialIn_inst.VifCrLockNum>>16, 0x0F);
3107*53ee8cc1Swenshuai.xi msWriteByte(CR_CODIC_TH, VIFInitialIn_inst.VifCrThr); // CR cordic threshold
3108*53ee8cc1Swenshuai.xi msWriteByteMask(CR_CODIC_TH+1, VIFInitialIn_inst.VifCrThr>>8, 0x3F);
3109*53ee8cc1Swenshuai.xi
3110*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 0)
3111*53ee8cc1Swenshuai.xi {
3112*53ee8cc1Swenshuai.xi if (VifShiftClk/*g_VifShiftClk*/ == 1)
3113*53ee8cc1Swenshuai.xi {
3114*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, 0x6D); // cr_rate for 15 MHz
3115*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, 0xDB);
3116*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, 0x16, 0x1F);
3117*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, 0, _BIT0); // cr_rate not invert
3118*53ee8cc1Swenshuai.xi }
3119*53ee8cc1Swenshuai.xi else if(VifShiftClk/*g_VifShiftClk*/ == 2)
3120*53ee8cc1Swenshuai.xi {
3121*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, 0x22); // cr_rate for 15 MHz
3122*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, 0x9F);
3123*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, 0x15, 0x1F);
3124*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, 0, _BIT0); // cr_rate not invert
3125*53ee8cc1Swenshuai.xi }
3126*53ee8cc1Swenshuai.xi else
3127*53ee8cc1Swenshuai.xi {
3128*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, 0xE3); // cr_rate for 15 MHz
3129*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, 0x38);
3130*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, 0x16, 0x1F);
3131*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, 0, _BIT0); // cr_rate not invert
3132*53ee8cc1Swenshuai.xi }
3133*53ee8cc1Swenshuai.xi }
3134*53ee8cc1Swenshuai.xi
3135*53ee8cc1Swenshuai.xi // tuner step size
3136*53ee8cc1Swenshuai.xi //VIFInitialIn_inst.VifTunerStepSize = FREQ_STEP_62_5KHz;
3137*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerStepSize == FREQ_STEP_62_5KHz) // 62.5KHz
3138*53ee8cc1Swenshuai.xi {
3139*53ee8cc1Swenshuai.xi if (g_bCheckIFFreq == 0)
3140*53ee8cc1Swenshuai.xi {
3141*53ee8cc1Swenshuai.xi msWriteByte(CR_FOE_SCAL_FACTOR_L, 0xB3); // foe scaling factor
3142*53ee8cc1Swenshuai.xi msWriteByteMask(CR_FOE_SCAL_FACTOR_H, 0x02, 0x0F);
3143*53ee8cc1Swenshuai.xi }
3144*53ee8cc1Swenshuai.xi else
3145*53ee8cc1Swenshuai.xi { // SECAM L'
3146*53ee8cc1Swenshuai.xi msWriteByte(CR_FOE_SCAL_FACTOR_L, 0x4D); // foe scaling factor
3147*53ee8cc1Swenshuai.xi msWriteByteMask(CR_FOE_SCAL_FACTOR_H, 0x0D, 0x0F);
3148*53ee8cc1Swenshuai.xi }
3149*53ee8cc1Swenshuai.xi }
3150*53ee8cc1Swenshuai.xi else if (VIFInitialIn_inst.VifTunerStepSize == FREQ_STEP_50KHz) // 50KHz
3151*53ee8cc1Swenshuai.xi {
3152*53ee8cc1Swenshuai.xi if (g_bCheckIFFreq == 0)
3153*53ee8cc1Swenshuai.xi {
3154*53ee8cc1Swenshuai.xi msWriteByte(CR_FOE_SCAL_FACTOR_L, 0x60); // foe scaling factor
3155*53ee8cc1Swenshuai.xi msWriteByteMask(CR_FOE_SCAL_FACTOR_H, 0x03, 0x0F);
3156*53ee8cc1Swenshuai.xi }
3157*53ee8cc1Swenshuai.xi else
3158*53ee8cc1Swenshuai.xi { // SECAM L'
3159*53ee8cc1Swenshuai.xi msWriteByte(CR_FOE_SCAL_FACTOR_L, 0xA0); // foe scaling factor
3160*53ee8cc1Swenshuai.xi msWriteByteMask(CR_FOE_SCAL_FACTOR_H, 0x0C, 0x0F);
3161*53ee8cc1Swenshuai.xi }
3162*53ee8cc1Swenshuai.xi }
3163*53ee8cc1Swenshuai.xi
3164*53ee8cc1Swenshuai.xi // Filter
3165*53ee8cc1Swenshuai.xi msWriteBit(DEBUG_V_A, 1, _BIT5); // single ADC
3166*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.ChinaDescramblerBox !=0)
3167*53ee8cc1Swenshuai.xi {
3168*53ee8cc1Swenshuai.xi msWriteByteMask(IMAGE_REJ_IIR_SEL, _BIT3, _BIT2|_BIT3); // 0: aci_rej_out; 1: nyq_slp_out1; 2: nyq_slp_out2; 3: mixer_out_i
3169*53ee8cc1Swenshuai.xi }
3170*53ee8cc1Swenshuai.xi msWriteByteMask(IMAGE_REJ1_SEL, _BIT0, _BIT0|_BIT1); // 0: aci_rej_out; 1: nyq_slp_out1; 2: nyq_slp_out2; 3: mixer_out_i
3171*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_CO_A_REJ, 0, _BIT4); // CO_A_REJ not bypass
3172*53ee8cc1Swenshuai.xi
3173*53ee8cc1Swenshuai.xi msWriteBit(IMAGE_REJ_OUT_SEL, 0, _BIT7); // 0: IMAGE_REJ1; 1: IMAGE_REJ_IIR
3174*53ee8cc1Swenshuai.xi msWriteBit(A_BP_OUT_X2, 1, _BIT7); // A_BP output x2
3175*53ee8cc1Swenshuai.xi msWriteBit(A_DAGC_SEL, 1, _BIT7); // 0: input from a_sos; 1: input from a_lpf_up
3176*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_NOTCH, 1, _BIT6); // A_NOTCH bypass
3177*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_SOS, 1, _BIT7); // A_SOS bypass
3178*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_SOS21, 0, _BIT2); // SOS21 not bypass
3179*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_SOS22, 0, _BIT3); // SOS22 not bypass
3180*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_SOS31, 0, _BIT4); // SOS31 not bypass
3181*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_SOS32, 0, _BIT5); // SOS32 not bypass
3182*53ee8cc1Swenshuai.xi
3183*53ee8cc1Swenshuai.xi // silicon tuner
3184*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
3185*53ee8cc1Swenshuai.xi {
3186*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_V_ACI_BPF4LS, 1, _BIT5); // VACI_BPF bypass
3187*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_ACI_BPF, 0, _BIT1); // AACI_BPF not bypass
3188*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_VSPUR_REJ, 1, _BIT2); // VSPUR_REJ bypass
3189*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_ASPUR_REJ, 1, _BIT3); // ASPUR_REJ bypass
3190*53ee8cc1Swenshuai.xi
3191*53ee8cc1Swenshuai.xi if ((msReadByte(CR_RATE_INV) & 0x01) != 0)
3192*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_SOS11, 1, _BIT0); // SOS11 bypass
3193*53ee8cc1Swenshuai.xi }
3194*53ee8cc1Swenshuai.xi else
3195*53ee8cc1Swenshuai.xi {
3196*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_A_ACI_BPF, 0, _BIT1); // AACI_BPF not bypass
3197*53ee8cc1Swenshuai.xi }
3198*53ee8cc1Swenshuai.xi
3199*53ee8cc1Swenshuai.xi // DAGC1
3200*53ee8cc1Swenshuai.xi if (_bit1_(VIFInitialIn_inst.VifDelayReduce))
3201*53ee8cc1Swenshuai.xi {
3202*53ee8cc1Swenshuai.xi msWriteBit(DAGC1_DL_BYPASS, 1, _BIT3); // DAGC1 delay line bypass
3203*53ee8cc1Swenshuai.xi }
3204*53ee8cc1Swenshuai.xi else
3205*53ee8cc1Swenshuai.xi {
3206*53ee8cc1Swenshuai.xi msWriteBit(DAGC1_DL_BYPASS, 0, _BIT3); // DAGC1 delay line not bypass
3207*53ee8cc1Swenshuai.xi }
3208*53ee8cc1Swenshuai.xi msWriteBit(DAGC1_BYPASS, 0, _BIT1); // DAGC1 not bypass
3209*53ee8cc1Swenshuai.xi
3210*53ee8cc1Swenshuai.xi msWriteBit(DAGC1_OREN, 1, _BIT6); // DAGC1 gain_overwrite = 1
3211*53ee8cc1Swenshuai.xi msWriteBit(DAGC1_OREN, 0, _BIT6); // DAGC1 gain_overwrite = 0
3212*53ee8cc1Swenshuai.xi
3213*53ee8cc1Swenshuai.xi msWriteBit(DAGC1_GAIN0_FB_EN, 0, _BIT2); // DAGC1 gain_update = 1
3214*53ee8cc1Swenshuai.xi
3215*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 1)
3216*53ee8cc1Swenshuai.xi {
3217*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC1_REF, 0x0B, 0x3F); // DAGC1 ref
3218*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC1_RATIO, 0x03, 0x07); // DAGC1 ratio
3219*53ee8cc1Swenshuai.xi msWriteByte(DAGC1_PEAK_CNT_L, 0x00); // DAGC1 peak cnt
3220*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC1_PEAK_CNT_H, 0x0B, 0x0F);
3221*53ee8cc1Swenshuai.xi msWriteByte(DAGC1_GAIN_OVERWRITE_L, VIFInitialIn_inst.VifDagc1GainOv);
3222*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC1_GAIN_OVERWRITE_H, VIFInitialIn_inst.VifDagc1GainOv>>8, 0x3F);
3223*53ee8cc1Swenshuai.xi }
3224*53ee8cc1Swenshuai.xi else
3225*53ee8cc1Swenshuai.xi {
3226*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC1_REF, VIFInitialIn_inst.VifDagc1Ref, 0x3F); // DAGC1 ref
3227*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC1_RATIO, 0x00, 0x07); // DAGC1 ratio
3228*53ee8cc1Swenshuai.xi msWriteByte(DAGC1_PEAK_CNT_L, 0x00); // DAGC1 peak cnt
3229*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC1_PEAK_CNT_H, 0x0C, 0x0F);
3230*53ee8cc1Swenshuai.xi }
3231*53ee8cc1Swenshuai.xi msWriteBit(DAGC1_ENABLE, 1, _BIT0); // DAGC1 enable
3232*53ee8cc1Swenshuai.xi
3233*53ee8cc1Swenshuai.xi // DAGC2
3234*53ee8cc1Swenshuai.xi if (_bit2_(VIFInitialIn_inst.VifDelayReduce))
3235*53ee8cc1Swenshuai.xi {
3236*53ee8cc1Swenshuai.xi msWriteBit(DAGC2_DL_BYPASS, 1, _BIT3); // DAGC2 delay line bypass
3237*53ee8cc1Swenshuai.xi }
3238*53ee8cc1Swenshuai.xi else
3239*53ee8cc1Swenshuai.xi {
3240*53ee8cc1Swenshuai.xi msWriteBit(DAGC2_DL_BYPASS, 0, _BIT3); // DAGC2 delay line not bypass
3241*53ee8cc1Swenshuai.xi }
3242*53ee8cc1Swenshuai.xi msWriteBit(DAGC2_BYPASS, 0, _BIT1); // DAGC2 not bypass
3243*53ee8cc1Swenshuai.xi
3244*53ee8cc1Swenshuai.xi msWriteBit(DAGC2_OREN, 1, _BIT6); // DAGC2 gain_overwrite = 1
3245*53ee8cc1Swenshuai.xi msWriteBit(DAGC2_OREN, 0, _BIT6); // DAGC2 gain_overwrite = 0
3246*53ee8cc1Swenshuai.xi
3247*53ee8cc1Swenshuai.xi msWriteBit(DAGC2_GAIN0_FB_EN, 0, _BIT2); // DAGC2 gain_update = 1
3248*53ee8cc1Swenshuai.xi
3249*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 1)
3250*53ee8cc1Swenshuai.xi {
3251*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC2_REF, 0x0B, 0x3F); // DAGC2 ref
3252*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC2_RATIO, 0x03, 0x07); // DAGC2 ratio
3253*53ee8cc1Swenshuai.xi msWriteByte(DAGC2_PEAK_CNT_L, 0x00); // DAGC2 peak cnt
3254*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC2_PEAK_CNT_H, 0x0B, 0x0F);
3255*53ee8cc1Swenshuai.xi msWriteByte(DAGC2_GAIN_OVERWRITE_L, VIFInitialIn_inst.VifDagc2GainOv);
3256*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC2_GAIN_OVERWRITE_H, VIFInitialIn_inst.VifDagc2GainOv>>8, 0x3F);
3257*53ee8cc1Swenshuai.xi }
3258*53ee8cc1Swenshuai.xi else
3259*53ee8cc1Swenshuai.xi {
3260*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC2_REF, VIFInitialIn_inst.VifDagc2Ref, 0x3F); // DAGC2 ref
3261*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC2_RATIO, 0x00, 0x07); // DAGC2 ratio
3262*53ee8cc1Swenshuai.xi msWriteByte(DAGC2_PEAK_CNT_L, 0x00); // DAGC2 peak cnt
3263*53ee8cc1Swenshuai.xi msWriteByteMask(DAGC2_PEAK_CNT_H, 0x0C, 0x0F);
3264*53ee8cc1Swenshuai.xi }
3265*53ee8cc1Swenshuai.xi msWriteBit(DAGC2_ENABLE, 1, _BIT0); // DAGC2 enable
3266*53ee8cc1Swenshuai.xi
3267*53ee8cc1Swenshuai.xi // clampgain
3268*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 1)
3269*53ee8cc1Swenshuai.xi {
3270*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_CLAMP_OVERWRITE, VIFInitialIn_inst.VifClampgainClampOvPositive); // clampgain clamp overwrite value
3271*53ee8cc1Swenshuai.xi msWriteByteMask(CLAMPGAIN_CLAMP_OVERWRITE+1, VIFInitialIn_inst.VifClampgainClampOvPositive>>8, 0x07);
3272*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_GAIN_OVERWRITE, VIFInitialIn_inst.VifClampgainGainOvPositive); // clampgain gain overwrite value
3273*53ee8cc1Swenshuai.xi msWriteByteMask(CLAMPGAIN_GAIN_OVERWRITE+1, VIFInitialIn_inst.VifClampgainGainOvPositive>>8, 0x07);
3274*53ee8cc1Swenshuai.xi }
3275*53ee8cc1Swenshuai.xi else
3276*53ee8cc1Swenshuai.xi {
3277*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_CLAMP_OVERWRITE, VIFInitialIn_inst.VifClampgainClampOvNegative); // clampgain clamp overwrite value
3278*53ee8cc1Swenshuai.xi msWriteByteMask(CLAMPGAIN_CLAMP_OVERWRITE+1, VIFInitialIn_inst.VifClampgainClampOvNegative>>8, 0x07);
3279*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_GAIN_OVERWRITE, VIFInitialIn_inst.VifClampgainGainOvNegative); // clampgain gain overwrite value
3280*53ee8cc1Swenshuai.xi msWriteByteMask(CLAMPGAIN_GAIN_OVERWRITE+1, VIFInitialIn_inst.VifClampgainGainOvNegative>>8, 0x07);
3281*53ee8cc1Swenshuai.xi }
3282*53ee8cc1Swenshuai.xi msWriteBit(CLAMPGAIN_BYPASS, 0, _BIT1); // clampgain not bypass
3283*53ee8cc1Swenshuai.xi msWriteBit(CLAMPGAIN_SEL, VIFInitialIn_inst.VifClampgainClampSel, _BIT3); // 0: clamp select sync bottom; 1: clamp select porch
3284*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_SYNCBOTT_REF, VIFInitialIn_inst.VifClampgainSyncbottRef); // porch or syncbottom ref
3285*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_SYNCHEIGHT_REF, VIFInitialIn_inst.VifClampgainSyncheightRef); // syncheight ref
3286*53ee8cc1Swenshuai.xi msWriteByteMask(CLAMPGAIN_KC, VIFInitialIn_inst.VifClampgainKc, 0x07); // kc
3287*53ee8cc1Swenshuai.xi msWriteByteMask(CLAMPGAIN_KG, VIFInitialIn_inst.VifClampgainKg<<4, 0x70); // kg
3288*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_PORCH_CNT, VIFInitialIn_inst.VifClampgainPorchCnt); // clampgain porch cnt for NTSC
3289*53ee8cc1Swenshuai.xi msWriteByteMask(CLAMPGAIN_PORCH_CNT+1, VIFInitialIn_inst.VifClampgainPorchCnt>>8, 0x01);
3290*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_CLAMP_MIN, VIFInitialIn_inst.VifClampgainClampMin); // clampgain clamp min
3291*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_CLAMP_MAX, VIFInitialIn_inst.VifClampgainClampMax); // clampgain clamp max
3292*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_GAIN_MIN, VIFInitialIn_inst.VifClampgainGainMin); // clampgain gain min
3293*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_GAIN_MAX, VIFInitialIn_inst.VifClampgainGainMax); // clampgain gain max
3294*53ee8cc1Swenshuai.xi msWriteBit(CLAMPGAIN_CLAMP_OREN, VIFInitialIn_inst.VifClampgainClampOren, _BIT0); // clampgain clamp overwrite enable
3295*53ee8cc1Swenshuai.xi msWriteBit(CLAMPGAIN_CLAMP_OREN, VIFInitialIn_inst.VifClampgainGainOren, _BIT1); // clampgain gain overwrite enable
3296*53ee8cc1Swenshuai.xi msWriteBit(CLAMPGAIN_EN, 1, _BIT2); // clampgain enable
3297*53ee8cc1Swenshuai.xi
3298*53ee8cc1Swenshuai.xi // vsync
3299*53ee8cc1Swenshuai.xi msWriteBit(VSYNC_ENABLE, 1, _BIT1); // vsync enable
3300*53ee8cc1Swenshuai.xi
3301*53ee8cc1Swenshuai.xi // ADAGC
3302*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 1)
3303*53ee8cc1Swenshuai.xi {
3304*53ee8cc1Swenshuai.xi msWriteBit(ADAGC_BYPASS, 1, _BIT1); // ADAGC bypass
3305*53ee8cc1Swenshuai.xi msWriteByteMask(ADAGC_K, 0x00, 0x07); // ADAGC k
3306*53ee8cc1Swenshuai.xi msWriteBit(ADAGC_ENABLE, 0, _BIT0); // ADAGC disable
3307*53ee8cc1Swenshuai.xi }
3308*53ee8cc1Swenshuai.xi else
3309*53ee8cc1Swenshuai.xi {
3310*53ee8cc1Swenshuai.xi msWriteBit(ADAGC_BYPASS, 0, _BIT1); // ADAGC not bypass
3311*53ee8cc1Swenshuai.xi msWriteByteMask(ADAGC_K, 0x04, 0x07); // ADAGC k
3312*53ee8cc1Swenshuai.xi msWriteBit(ADAGC_ENABLE, 1, _BIT0); // ADAGC enable
3313*53ee8cc1Swenshuai.xi }
3314*53ee8cc1Swenshuai.xi
3315*53ee8cc1Swenshuai.xi if(VIFInitialIn_inst.VifSeriousACIDetect == 1) //ACI_Functions_Selective
3316*53ee8cc1Swenshuai.xi {
3317*53ee8cc1Swenshuai.xi VIFInitialIn_inst.VifACIDetect = 0;
3318*53ee8cc1Swenshuai.xi }
3319*53ee8cc1Swenshuai.xi
3320*53ee8cc1Swenshuai.xi // zero detector
3321*53ee8cc1Swenshuai.xi msWriteBit(ZERO_IN_SEL, 1 , _BIT1); // 0: from dagc_in; 1: from dagc_out
3322*53ee8cc1Swenshuai.xi msWriteByteMask(ZERO_TH, 0x20, 0x7F);
3323*53ee8cc1Swenshuai.xi msWriteByte(ZERO_CNT_NUM, 0x0A);
3324*53ee8cc1Swenshuai.xi msWriteByteMask(ZERO_CNT_NUM+1, 0x00, 0x0F);
3325*53ee8cc1Swenshuai.xi msWriteByte(ZERO_ZERO_NUM, 0x20);
3326*53ee8cc1Swenshuai.xi msWriteByte(ZERO_ZERO_NUM+1, 0x00);
3327*53ee8cc1Swenshuai.xi msWriteBit(ZERO_ENABLE, 0 , _BIT0); // zero detector disable
3328*53ee8cc1Swenshuai.xi
3329*53ee8cc1Swenshuai.xi // Level Sense setting
3330*53ee8cc1Swenshuai.xi msWriteByte(LEVEL_SENSE_LOCK_CNT, 0x00);
3331*53ee8cc1Swenshuai.xi msWriteByte(LEVEL_SENSE_LOCK_CNT+1, 0x01);
3332*53ee8cc1Swenshuai.xi
3333*53ee8cc1Swenshuai.xi msWriteByte(LEVEL_SENSE_DIFF_AVG_TH, 0x28);
3334*53ee8cc1Swenshuai.xi msWriteByteMask(LEVEL_SENSE_DIFF_AVG_TH+1, 0x00, 0x0F);
3335*53ee8cc1Swenshuai.xi
3336*53ee8cc1Swenshuai.xi msWriteBit(LEVEL_SENSE_EN, 1, _BIT0);
3337*53ee8cc1Swenshuai.xi msWriteBit(LEVLE_SENSE_MOD_TYPE, 0, _BIT4); // 0: negedge; 1: posedge
3338*53ee8cc1Swenshuai.xi msWriteBit(LEVEL_SENSE_MODE, 0, _BIT0); // 0: porch; 1: sync height
3339*53ee8cc1Swenshuai.xi msWriteBit(LEVEL_SENSE_VGA_OREN, 0, _BIT4);
3340*53ee8cc1Swenshuai.xi
3341*53ee8cc1Swenshuai.xi msWriteByteMask(LEVEL_SENSE_MEAN_SEL, 0x01, 0x03); // 0: 1 line; 1: 16 lines; 2, 3: 256 lines
3342*53ee8cc1Swenshuai.xi msWriteBit(LEVEL_SENSE_DVGA_OREN_SEL, 1 , _BIT4); // 0: SW; 1: HW
3343*53ee8cc1Swenshuai.xi
3344*53ee8cc1Swenshuai.xi msWriteByte(LEVEL_SENSE_REF, 0x59);
3345*53ee8cc1Swenshuai.xi msWriteByte(LEVEL_SENSE_REF+1, 0x00);
3346*53ee8cc1Swenshuai.xi
3347*53ee8cc1Swenshuai.xi msWriteByte(LEVEL_SENSE_LINE_CNT, 0x04);
3348*53ee8cc1Swenshuai.xi msWriteByte(LEVEL_SENSE_LINE_CNT+1, 0x00);
3349*53ee8cc1Swenshuai.xi
3350*53ee8cc1Swenshuai.xi msWriteByte(LEVEL_SENSE_PORCH_CNT, 0xE0);
3351*53ee8cc1Swenshuai.xi msWriteByteMask(LEVEL_SENSE_PORCH_CNT+1, 0x00, 0x01);
3352*53ee8cc1Swenshuai.xi
3353*53ee8cc1Swenshuai.xi msWriteByte(LEVEL_SENSE_PEAK_CNT , 0x00);
3354*53ee8cc1Swenshuai.xi msWriteByteMask(LEVEL_SENSE_PEAK_CNT +1, 0x0C, 0x0F);
3355*53ee8cc1Swenshuai.xi
3356*53ee8cc1Swenshuai.xi msWriteByteMask(LEVEL_SENSE_K, 0x04, 0x07); // 0~7: 0, 2^-2 ~ 2^-8
3357*53ee8cc1Swenshuai.xi msWriteByteMask(LEVEL_SENSE_K+1, 0x00, 0x00);
3358*53ee8cc1Swenshuai.xi
3359*53ee8cc1Swenshuai.xi msWriteByte(LEVEL_SENSE_VGA_OV, 0x80);
3360*53ee8cc1Swenshuai.xi msWriteByte(LEVEL_SENSE_VGA_OV+1, 0x00);
3361*53ee8cc1Swenshuai.xi
3362*53ee8cc1Swenshuai.xi msWriteByte(LEVEL_SENSE_DIFF_AVG_INI, 0xFF); // level_sense diff_avg initial value
3363*53ee8cc1Swenshuai.xi msWriteByteMask(LEVEL_SENSE_DIFF_AVG_INI+1, 0x0F, 0x0F);
3364*53ee8cc1Swenshuai.xi
3365*53ee8cc1Swenshuai.xi //AM Hum detection setting
3366*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_HUM_CNT_MAX , _BIT5 , _BIT4|_BIT5|_BIT6); // 0->128 ,1->256, 2->512 samples
3367*53ee8cc1Swenshuai.xi msWriteByte(AGC_HUM_ERR_THR , 0x20); // format <8,8> => 0.125 = 0x20
3368*53ee8cc1Swenshuai.xi msWriteByte(AGC_HUM_DET_LIM , 0x20); // format <8,-2> => 128 samples
3369*53ee8cc1Swenshuai.xi
3370*53ee8cc1Swenshuai.xi //CR_Ki/Kp speed up setting
3371*53ee8cc1Swenshuai.xi msWriteBit(CR_KPKI_SPEEDUP_EN , 0 , _BIT0); //0:disable , 1:enable
3372*53ee8cc1Swenshuai.xi msWriteBit(CR_INV2_EN , 0 , _BIT4); //0:disable , 1:enable
3373*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP_SPEED, _BIT2 , _BIT0|_BIT1|_BIT2|_BIT3);
3374*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI_SPEED, _BIT6 , _BIT4|_BIT5|_BIT6|_BIT7);
3375*53ee8cc1Swenshuai.xi
3376*53ee8cc1Swenshuai.xi if(VIF_IS_ADC_48MHz == 0)
3377*53ee8cc1Swenshuai.xi {
3378*53ee8cc1Swenshuai.xi // VIF ADC clock setting
3379*53ee8cc1Swenshuai.xi msWriteBit(VIF_ADC_48M, 0, _BIT4); // 0:144MHz , 1:48MHz
3380*53ee8cc1Swenshuai.xi
3381*53ee8cc1Swenshuai.xi // VIF DECI_filter coefficient selection
3382*53ee8cc1Swenshuai.xi msWriteBit(VIF_DECI_COEF_SEL, 0, _BIT4); // 0:old, 1:new
3383*53ee8cc1Swenshuai.xi
3384*53ee8cc1Swenshuai.xi msWriteBit(HALVIFDBG2_BIT, 0, _BIT4); // 0:144MHz, 1:48MHz
3385*53ee8cc1Swenshuai.xi }
3386*53ee8cc1Swenshuai.xi else
3387*53ee8cc1Swenshuai.xi {
3388*53ee8cc1Swenshuai.xi // VIF ADC clock setting
3389*53ee8cc1Swenshuai.xi msWriteBit(VIF_ADC_48M, 1, _BIT4); // 0:144MHz , 1:48MHz
3390*53ee8cc1Swenshuai.xi
3391*53ee8cc1Swenshuai.xi // VIF DECI_filter coefficient selection
3392*53ee8cc1Swenshuai.xi msWriteBit(VIF_DECI_COEF_SEL, 1, _BIT4); // 0:old, 1:new
3393*53ee8cc1Swenshuai.xi
3394*53ee8cc1Swenshuai.xi msWriteBit(HALVIFDBG2_BIT, 1, _BIT4); // 0:144MHz, 1:48MHz
3395*53ee8cc1Swenshuai.xi }
3396*53ee8cc1Swenshuai.xi
3397*53ee8cc1Swenshuai.xi // VIF ADC LSB mask
3398*53ee8cc1Swenshuai.xi msWriteByteMask(VIF_ADC_LSB_MASK, 0x00, _BIT0|_BIT1); // Un-mask ADC_LSB bits
3399*53ee8cc1Swenshuai.xi
3400*53ee8cc1Swenshuai.xi // locking range +/- 500KHz -> +/- 1MHz setting
3401*53ee8cc1Swenshuai.xi //msWriteByteMask(CR_KF1_HW, 0x02, 0x0F); // kf1 hardware mode
3402*53ee8cc1Swenshuai.xi //msWriteByteMask(CR_KP1_HW, 0x43, 0x0F); // kp1 hardware mode
3403*53ee8cc1Swenshuai.xi //msWriteByteMask(CR_KI1_HW, 0x43, 0xF0); // ki1 hardware mode
3404*53ee8cc1Swenshuai.xi //msWriteByteMask(CR_FD_DELAY_SEL, _BIT5, _BIT4|_BIT5);
3405*53ee8cc1Swenshuai.xi //msWriteByteMask(CR_FD_MU, _BIT5, _BIT4|_BIT5);
3406*53ee8cc1Swenshuai.xi
3407*53ee8cc1Swenshuai.xi //msWriteBit(BYPASS_SOS33, 1, _BIT6);
3408*53ee8cc1Swenshuai.xi
3409*53ee8cc1Swenshuai.xi // real HW_KPKI_THR1_L
3410*53ee8cc1Swenshuai.xi msWriteByte(KPKI_ADJ_TH1_L, 0x50);
3411*53ee8cc1Swenshuai.xi msWriteByte(KPKI_ADJ_TH1_L+1, 0x00);
3412*53ee8cc1Swenshuai.xi
3413*53ee8cc1Swenshuai.xi // real HW_KPKI_THR1_H
3414*53ee8cc1Swenshuai.xi msWriteByte(KPKI_ADJ_TH1_H, 0x50);
3415*53ee8cc1Swenshuai.xi msWriteByte(KPKI_ADJ_TH1_H+1, 0x00);
3416*53ee8cc1Swenshuai.xi
3417*53ee8cc1Swenshuai.xi // real HW_KPKI_THR2_L
3418*53ee8cc1Swenshuai.xi msWriteByte(KPKI_ADJ_TH2_L, 0x00);
3419*53ee8cc1Swenshuai.xi msWriteByte(KPKI_ADJ_TH2_L+1, 0x01);
3420*53ee8cc1Swenshuai.xi
3421*53ee8cc1Swenshuai.xi // real HW_KPKI_THR2_H
3422*53ee8cc1Swenshuai.xi msWriteByte(KPKI_ADJ_TH2_H, 0x00);
3423*53ee8cc1Swenshuai.xi msWriteByte(KPKI_ADJ_TH2_H+1, 0x01);
3424*53ee8cc1Swenshuai.xi
3425*53ee8cc1Swenshuai.xi // real HW_KPKI_THR3_L
3426*53ee8cc1Swenshuai.xi msWriteByte(KPKI_ADJ_TH3_L, 0xFF);
3427*53ee8cc1Swenshuai.xi msWriteByte(KPKI_ADJ_TH3_L+1, 0xFF);
3428*53ee8cc1Swenshuai.xi
3429*53ee8cc1Swenshuai.xi // real HW_KPKI_THR3_H
3430*53ee8cc1Swenshuai.xi msWriteByte(KPKI_ADJ_TH3_H, 0xFF);
3431*53ee8cc1Swenshuai.xi msWriteByte(KPKI_ADJ_TH3_H+1, 0xFF);
3432*53ee8cc1Swenshuai.xi
3433*53ee8cc1Swenshuai.xi // real HW_KPKI setting
3434*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP_ADJ1, 0x05, 0x0F);
3435*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI_ADJ1, 0x80, 0xF0);
3436*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP_ADJ2, 0x04, 0x0F);
3437*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI_ADJ2, 0x70, 0xF0);
3438*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP_ADJ3, 0x03, 0x0F);
3439*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI_ADJ3, 0x60, 0xF0);
3440*53ee8cc1Swenshuai.xi
3441*53ee8cc1Swenshuai.xi // real HW_KPKI_disable
3442*53ee8cc1Swenshuai.xi msWriteBit(KPKI_ADJ_EN, 0, _BIT0);
3443*53ee8cc1Swenshuai.xi g_VifHWKpKiFlag = 1; // 0:SW_Kp/Ki ; 1:Real HW_Kp/Ki
3444*53ee8cc1Swenshuai.xi msWriteBit(HALVIFDBG2_BIT, g_VifHWKpKiFlag, _BIT0);
3445*53ee8cc1Swenshuai.xi
3446*53ee8cc1Swenshuai.xi // for China stream setting
3447*53ee8cc1Swenshuai.xi msWriteByte(CR_JTR_MAX_CNT, 0x00);
3448*53ee8cc1Swenshuai.xi msWriteByte(CR_JTR_MAX_CNT+1, 0x70);
3449*53ee8cc1Swenshuai.xi msWriteByteMask(JTR_DELTA_AVE_NUM, 0x20, 0x30);
3450*53ee8cc1Swenshuai.xi
3451*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A1, 1, _BIT2);
3452*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_N_A2, 1, _BIT3);
3453*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_SOS11, 1, _BIT0);
3454*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_SOS12, 1, _BIT1);
3455*53ee8cc1Swenshuai.xi
3456*53ee8cc1Swenshuai.xi //msWriteBit(BYPASS_A_DC, 1, _BIT0); // Bypass A_DC filter
3457*53ee8cc1Swenshuai.xi //msWriteBit(BYPASS_A_BPF, 1, _BIT1); // Bypass A_BPF
3458*53ee8cc1Swenshuai.xi //msWriteBit(ADAGC_GAIN_OREN, 1, _BIT0); // fixed ADAGC gain
3459*53ee8cc1Swenshuai.xi //msWriteByte(ADAGC_GAIN_OV, 0x24);
3460*53ee8cc1Swenshuai.xi //msWriteByte(ADAGC_GAIN_OV+1, 0x00);
3461*53ee8cc1Swenshuai.xi
3462*53ee8cc1Swenshuai.xi msWriteByteMask(VIF_SOFT_RSTZ, 0x7F, 0x7D); // VIF software reset
3463*53ee8cc1Swenshuai.xi msWriteBit(CLAMPGAIN_RSTZ, 1, _BIT0); // clampgain software reset
3464*53ee8cc1Swenshuai.xi msWriteBit(VSYNC_RSTZ, 1, _BIT0); // vsync software reset
3465*53ee8cc1Swenshuai.xi
3466*53ee8cc1Swenshuai.xi // TOP
3467*53ee8cc1Swenshuai.xi msVifTopAdjust();
3468*53ee8cc1Swenshuai.xi
3469*53ee8cc1Swenshuai.xi // version control
3470*53ee8cc1Swenshuai.xi msWriteByte(FIRMWARE_VERSION_L, 0x13); // 19(dd)
3471*53ee8cc1Swenshuai.xi msWriteByte(FIRMWARE_VERSION_H, 0x90); // 09/16 (mm/yy) firmware version control
3472*53ee8cc1Swenshuai.xi
3473*53ee8cc1Swenshuai.xi HAL_VIF_Delay1ms(1);
3474*53ee8cc1Swenshuai.xi msWriteByteMask(VIF_SOFT_RSTZ, 0x7F, 0x7F);
3475*53ee8cc1Swenshuai.xi }
3476*53ee8cc1Swenshuai.xi
3477*53ee8cc1Swenshuai.xi // For API
msVifExit(void)3478*53ee8cc1Swenshuai.xi void msVifExit(void)
3479*53ee8cc1Swenshuai.xi {
3480*53ee8cc1Swenshuai.xi if (!_hal_VIF.bBaseAddrInitialized) return ;
3481*53ee8cc1Swenshuai.xi
3482*53ee8cc1Swenshuai.xi // RFAGC/IFAGC disable
3483*53ee8cc1Swenshuai.xi RIU_WriteRegBit(RFAGC_ENABLE, 0, _BIT0);
3484*53ee8cc1Swenshuai.xi RIU_WriteRegBit(IFAGC_ENABLE, 0, _BIT4);
3485*53ee8cc1Swenshuai.xi
3486*53ee8cc1Swenshuai.xi // AGC Disable
3487*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12830L, 0x00);
3488*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12831L, 0x00);
3489*53ee8cc1Swenshuai.xi
3490*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F0AL, 0x11);
3491*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F0BL, 0x11);
3492*53ee8cc1Swenshuai.xi
3493*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F1CL, 0x11);
3494*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F1DL, 0x11);
3495*53ee8cc1Swenshuai.xi
3496*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11FE3L, 0x11);
3497*53ee8cc1Swenshuai.xi
3498*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F78L, 0x11);
3499*53ee8cc1Swenshuai.xi
3500*53ee8cc1Swenshuai.xi RIU_WriteByte(0x11F25L, 0x01);
3501*53ee8cc1Swenshuai.xi
3502*53ee8cc1Swenshuai.xi RIU_WriteByte(0x52991L, 0x11);
3503*53ee8cc1Swenshuai.xi
3504*53ee8cc1Swenshuai.xi // SRAM Power Control
3505*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12090L, 0xFC);
3506*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12091L, 0xFF);
3507*53ee8cc1Swenshuai.xi
3508*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E0L, 0x00);
3509*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E1L, 0x00);
3510*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E2L, 0x00);
3511*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E3L, 0x00);
3512*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E4L, 0x00);
3513*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E5L, 0x00);
3514*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E6L, 0x00);
3515*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E7L, 0x00);
3516*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E8L, 0x00);
3517*53ee8cc1Swenshuai.xi RIU_WriteByte(0x127E9L, 0x00);
3518*53ee8cc1Swenshuai.xi
3519*53ee8cc1Swenshuai.xi // MPLL Power Down
3520*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12860L, 0xFA);
3521*53ee8cc1Swenshuai.xi RIU_WriteByte(0x12861L, 0x24);
3522*53ee8cc1Swenshuai.xi }
3523*53ee8cc1Swenshuai.xi
3524*53ee8cc1Swenshuai.xi // For API
msVifHandler(BOOL bVifDbbAcq)3525*53ee8cc1Swenshuai.xi void msVifHandler(BOOL bVifDbbAcq)
3526*53ee8cc1Swenshuai.xi {
3527*53ee8cc1Swenshuai.xi BYTE afc_foe;
3528*53ee8cc1Swenshuai.xi BYTE mean16;
3529*53ee8cc1Swenshuai.xi BYTE agc_pga2;
3530*53ee8cc1Swenshuai.xi WORD agc_vga;
3531*53ee8cc1Swenshuai.xi BYTE dagc1_var;
3532*53ee8cc1Swenshuai.xi BYTE kpki_gear;
3533*53ee8cc1Swenshuai.xi static BYTE crjtr_det_cnt = 0;
3534*53ee8cc1Swenshuai.xi static WORD kpki_cnt_idx = 0;
3535*53ee8cc1Swenshuai.xi
3536*53ee8cc1Swenshuai.xi if (!_hal_VIF.bBaseAddrInitialized) return ;
3537*53ee8cc1Swenshuai.xi
3538*53ee8cc1Swenshuai.xi MsOS_DelayTask(3);
3539*53ee8cc1Swenshuai.xi
3540*53ee8cc1Swenshuai.xi switch(g_ucVifStatusStep)
3541*53ee8cc1Swenshuai.xi {
3542*53ee8cc1Swenshuai.xi case VIF_START:
3543*53ee8cc1Swenshuai.xi case VIF_AGC_STATUS:
3544*53ee8cc1Swenshuai.xi g_VifCrKpKiAdjLoopCnt = 0;
3545*53ee8cc1Swenshuai.xi kpki_cnt_idx = 0;
3546*53ee8cc1Swenshuai.xi crjtr_det_cnt = 0;
3547*53ee8cc1Swenshuai.xi mean16 = (BYTE)(msRead2Bytes(AGC_MEAN16)>>1); // AGC mean16
3548*53ee8cc1Swenshuai.xi agc_pga2 = msReadByte(AGC_PGA2C) & 0x1F;
3549*53ee8cc1Swenshuai.xi agc_vga = msRead2Bytes(AGC_VGA);
3550*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 0)
3551*53ee8cc1Swenshuai.xi {
3552*53ee8cc1Swenshuai.xi if (((mean16 < AGC_MEAN16_UPBOUND) && (mean16 > AGC_MEAN16_LOWBOUND)) || (agc_pga2 == 0x1F) || (agc_vga == VIFInitialIn_inst.VifVgaMinimum))
3553*53ee8cc1Swenshuai.xi {
3554*53ee8cc1Swenshuai.xi msWriteByte(AGC_LINE_CNT_L, 0x04); // AGC line cnt = 4
3555*53ee8cc1Swenshuai.xi msWriteByte(AGC_LINE_CNT_H, 0x00);
3556*53ee8cc1Swenshuai.xi
3557*53ee8cc1Swenshuai.xi msWriteBit(CR_K_SEL, 0, _BIT6); // kp1,ki1,kf1; kp2,ki2,kf2
3558*53ee8cc1Swenshuai.xi msWriteBit(CR_K_SEL2, 0, _BIT0);
3559*53ee8cc1Swenshuai.xi
3560*53ee8cc1Swenshuai.xi g_ucVifStatusStep = VIF_AFC_STATUS;
3561*53ee8cc1Swenshuai.xi }
3562*53ee8cc1Swenshuai.xi }
3563*53ee8cc1Swenshuai.xi else
3564*53ee8cc1Swenshuai.xi {
3565*53ee8cc1Swenshuai.xi if (((mean16 < AGC_MEAN16_UPBOUND_SECAM) && (mean16 > AGC_MEAN16_LOWBOUND_SECAM)) || (agc_pga2 == 0x1F) || (agc_vga == VIFInitialIn_inst.VifVgaMinimum))
3566*53ee8cc1Swenshuai.xi {
3567*53ee8cc1Swenshuai.xi msWriteByte(AGC_LINE_CNT_L, 0x04); // AGC line cnt = 4
3568*53ee8cc1Swenshuai.xi msWriteByte(AGC_LINE_CNT_H, 0x00);
3569*53ee8cc1Swenshuai.xi
3570*53ee8cc1Swenshuai.xi msWriteBit(CR_K_SEL, 0, _BIT6); // kp1,ki1,kf1,kp2,ki2,kf2
3571*53ee8cc1Swenshuai.xi
3572*53ee8cc1Swenshuai.xi g_ucVifStatusStep = VIF_AFC_STATUS;
3573*53ee8cc1Swenshuai.xi }
3574*53ee8cc1Swenshuai.xi }
3575*53ee8cc1Swenshuai.xi
3576*53ee8cc1Swenshuai.xi // for No-SAW use
3577*53ee8cc1Swenshuai.xi if((VIFInitialIn_inst.VifSawArch == NO_SAW)&&(g_bCheckModulationType == 0))
3578*53ee8cc1Swenshuai.xi {
3579*53ee8cc1Swenshuai.xi if(bVifDbbAcq == 0)
3580*53ee8cc1Swenshuai.xi msWriteByte(AGC_REF, VIFInitialIn_inst.VifAgcRefNegative);
3581*53ee8cc1Swenshuai.xi else
3582*53ee8cc1Swenshuai.xi msWriteByte(AGC_REF, VIFInitialIn_inst.VifChanelScanAGCREF);
3583*53ee8cc1Swenshuai.xi }
3584*53ee8cc1Swenshuai.xi
3585*53ee8cc1Swenshuai.xi break;
3586*53ee8cc1Swenshuai.xi
3587*53ee8cc1Swenshuai.xi case VIF_AFC_STATUS:
3588*53ee8cc1Swenshuai.xi if (_bit0_(msReadByte(CR_LOCK_STATUS)))
3589*53ee8cc1Swenshuai.xi {
3590*53ee8cc1Swenshuai.xi // DAGC
3591*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 1)
3592*53ee8cc1Swenshuai.xi {
3593*53ee8cc1Swenshuai.xi msWriteBit(DAGC1_OREN, 1, _BIT6); // DAGC1 gain_overwrite = 1
3594*53ee8cc1Swenshuai.xi msWriteBit(DAGC2_OREN, 1, _BIT6); // DAGC2 gain_overwrite = 1
3595*53ee8cc1Swenshuai.xi }
3596*53ee8cc1Swenshuai.xi g_ucVifStatusStep = VIF_AFC_STATUS2;
3597*53ee8cc1Swenshuai.xi }
3598*53ee8cc1Swenshuai.xi else
3599*53ee8cc1Swenshuai.xi {
3600*53ee8cc1Swenshuai.xi msWriteBit(CR_K_SEL, 0, _BIT6); // kp1,ki1,kf1,kp2,ki2,kf2
3601*53ee8cc1Swenshuai.xi HAL_VIF_Delay1us(1);
3602*53ee8cc1Swenshuai.xi msWriteBit(CR_NCO_FF_RSTZ, 0, _BIT2); // reset NCO_FF
3603*53ee8cc1Swenshuai.xi msWriteBit(CR_LF_FF_RSTZ, 0, _BIT5); // reset AFC integral part
3604*53ee8cc1Swenshuai.xi HAL_VIF_Delay1us(5);
3605*53ee8cc1Swenshuai.xi msWriteBit(CR_NCO_FF_RSTZ, 1, _BIT2);
3606*53ee8cc1Swenshuai.xi HAL_VIF_Delay1us(1);
3607*53ee8cc1Swenshuai.xi msWriteBit(CR_LF_FF_RSTZ, 1, _BIT5);
3608*53ee8cc1Swenshuai.xi }
3609*53ee8cc1Swenshuai.xi break;
3610*53ee8cc1Swenshuai.xi
3611*53ee8cc1Swenshuai.xi case VIF_AFC_STATUS2:
3612*53ee8cc1Swenshuai.xi afc_foe = msReadByte(CR_FOE); // AFC_FOE
3613*53ee8cc1Swenshuai.xi if ((afc_foe <= 0x04) || (afc_foe >= 0xFC)) // |AFC_FOE|<=4
3614*53ee8cc1Swenshuai.xi {
3615*53ee8cc1Swenshuai.xi // AGC
3616*53ee8cc1Swenshuai.xi msWriteByte(AGC_VGA_THR, VIFInitialIn_inst.GainDistributionThr); // vga threshold
3617*53ee8cc1Swenshuai.xi msWriteByte(AGC_VGA_THR+1, VIFInitialIn_inst.GainDistributionThr>>8);
3618*53ee8cc1Swenshuai.xi msWriteByte(AGC_VGA_BASE, VIFInitialIn_inst.VifAgcVgaBase); // vga base
3619*53ee8cc1Swenshuai.xi if (bVifDbbAcq == 0) // 0: not channel scan; 1: channel scan
3620*53ee8cc1Swenshuai.xi {
3621*53ee8cc1Swenshuai.xi // AGC
3622*53ee8cc1Swenshuai.xi if (bEnableUsrSteadyAgcK)
3623*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_K, u8UsrSteadyAgcK, _BIT0|_BIT1|_BIT2);// k
3624*53ee8cc1Swenshuai.xi else
3625*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_K, 0x04, _BIT0|_BIT1|_BIT2);// k
3626*53ee8cc1Swenshuai.xi
3627*53ee8cc1Swenshuai.xi msWriteByte(AGC_LINE_CNT_L, 0x10); // AGC line cnt = 16
3628*53ee8cc1Swenshuai.xi msWriteByte(AGC_LINE_CNT_H, 0x00);
3629*53ee8cc1Swenshuai.xi
3630*53ee8cc1Swenshuai.xi // CR
3631*53ee8cc1Swenshuai.xi msWriteRegsTbl((MS_VIF_REG_TYPE *)VIF_CR_IIR_LPF2); // IIR LPF2 coefficients
3632*53ee8cc1Swenshuai.xi
3633*53ee8cc1Swenshuai.xi g_VifCrKp = VIFInitialIn_inst.VifCrKp;
3634*53ee8cc1Swenshuai.xi g_VifCrKi = VIFInitialIn_inst.VifCrKi;
3635*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP_SW, g_VifCrKp, 0x0F); // Ki Kp software mode
3636*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI_SW, g_VifCrKi << 4, 0xF0);
3637*53ee8cc1Swenshuai.xi
3638*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KF_SW, 0x00, 0x0F); // kf software mode
3639*53ee8cc1Swenshuai.xi msWriteBit(CR_K_SEL, 1, _BIT6); // kp,ki,kf
3640*53ee8cc1Swenshuai.xi
3641*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifCrKpKiAdjust)
3642*53ee8cc1Swenshuai.xi {
3643*53ee8cc1Swenshuai.xi //if(g_VifHWKpKiFlag == 1)
3644*53ee8cc1Swenshuai.xi if((msReadByte(HALVIFDBG2_BIT) & 0x01) != 0)
3645*53ee8cc1Swenshuai.xi {
3646*53ee8cc1Swenshuai.xi msWriteBit(KPKI_ADJ_EN, 1, _BIT0); // real HW_KPKI_enable
3647*53ee8cc1Swenshuai.xi kpki_gear = msReadByte(CR_KPKI_GEAR) & 0x30;
3648*53ee8cc1Swenshuai.xi }
3649*53ee8cc1Swenshuai.xi }
3650*53ee8cc1Swenshuai.xi
3651*53ee8cc1Swenshuai.xi msWriteByte(CR_PD_ERR_MAX_L, VIFInitialIn_inst.VifCrPdErrMax); // CR pd error max
3652*53ee8cc1Swenshuai.xi msWriteByteMask(CR_PD_ERR_MAX_H, VIFInitialIn_inst.VifCrPdErrMax>>8, 0x3F);
3653*53ee8cc1Swenshuai.xi msWriteByte(CR_UNLOCK_NUM, VIFInitialIn_inst.VifCrUnlockNum); // CR unlock num
3654*53ee8cc1Swenshuai.xi msWriteByte(CR_UNLOCK_NUM+1, VIFInitialIn_inst.VifCrUnlockNum>>8);
3655*53ee8cc1Swenshuai.xi msWriteByteMask(CR_UNLOCK_NUM+2, VIFInitialIn_inst.VifCrUnlockNum>>16, 0x0F);
3656*53ee8cc1Swenshuai.xi
3657*53ee8cc1Swenshuai.xi // over modulation
3658*53ee8cc1Swenshuai.xi if ((VIFInitialIn_inst.VifOverModulation == 1) && (g_bCheckModulationType == 0))
3659*53ee8cc1Swenshuai.xi {
3660*53ee8cc1Swenshuai.xi msWriteBit(VNCO_INV_OREN, 1, _BIT1);
3661*53ee8cc1Swenshuai.xi msWriteBit(VNCO_INV_OV, 0, _BIT2);
3662*53ee8cc1Swenshuai.xi }
3663*53ee8cc1Swenshuai.xi
3664*53ee8cc1Swenshuai.xi g_ucVifStatusStep = VIF_STEADY_STATUS;
3665*53ee8cc1Swenshuai.xi }
3666*53ee8cc1Swenshuai.xi }
3667*53ee8cc1Swenshuai.xi
3668*53ee8cc1Swenshuai.xi if (!(_bit0_(msReadByte(CR_LOCK_STATUS))))
3669*53ee8cc1Swenshuai.xi msVifInitial();
3670*53ee8cc1Swenshuai.xi break;
3671*53ee8cc1Swenshuai.xi
3672*53ee8cc1Swenshuai.xi case VIF_STEADY_STATUS:
3673*53ee8cc1Swenshuai.xi
3674*53ee8cc1Swenshuai.xi // for SAWless, ADC back-off for +20dB ACI
3675*53ee8cc1Swenshuai.xi if(VIFInitialIn_inst.VifSawArch == NO_SAW)
3676*53ee8cc1Swenshuai.xi {
3677*53ee8cc1Swenshuai.xi if(VIFInitialIn_inst.VifSeriousACIDetect)
3678*53ee8cc1Swenshuai.xi msVifSeriousACIDetection();
3679*53ee8cc1Swenshuai.xi }
3680*53ee8cc1Swenshuai.xi
3681*53ee8cc1Swenshuai.xi // Dynamic TOP adjust for strong signal
3682*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifDynamicTopAdjust)
3683*53ee8cc1Swenshuai.xi {
3684*53ee8cc1Swenshuai.xi msVifDynamicTopAdjust();
3685*53ee8cc1Swenshuai.xi }
3686*53ee8cc1Swenshuai.xi
3687*53ee8cc1Swenshuai.xi // AM hum detector
3688*53ee8cc1Swenshuai.xi agc_vga = msRead2Bytes(AGC_VGA);
3689*53ee8cc1Swenshuai.xi dagc1_var = msReadByte(DAGC1_VAR+1);
3690*53ee8cc1Swenshuai.xi if ((VIFInitialIn_inst.VifAmHumDetection == 1) && ((agc_vga > VIFInitialIn_inst.VifVgaMinimum) || (agc_vga < (VIFInitialIn_inst.GainDistributionThr - 0x1000))))
3691*53ee8cc1Swenshuai.xi {
3692*53ee8cc1Swenshuai.xi if ((dagc1_var >= 0x18) && (g_bCheckModulationType == 0))
3693*53ee8cc1Swenshuai.xi {
3694*53ee8cc1Swenshuai.xi // 20% AM modulation
3695*53ee8cc1Swenshuai.xi msWriteByte(AGC_REF, 0x43); // AGC ref
3696*53ee8cc1Swenshuai.xi }
3697*53ee8cc1Swenshuai.xi else if ((dagc1_var <= 0x05) && (g_bCheckModulationType == 0))
3698*53ee8cc1Swenshuai.xi {
3699*53ee8cc1Swenshuai.xi // 10% AM modulation
3700*53ee8cc1Swenshuai.xi msWriteByte(AGC_REF, VIFInitialIn_inst.VifAgcRefNegative); // AGC ref
3701*53ee8cc1Swenshuai.xi }
3702*53ee8cc1Swenshuai.xi }
3703*53ee8cc1Swenshuai.xi
3704*53ee8cc1Swenshuai.xi // AGC
3705*53ee8cc1Swenshuai.xi mean16 = (BYTE)(msRead2Bytes(AGC_MEAN16)>>1); // AGC mean16
3706*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 0)
3707*53ee8cc1Swenshuai.xi {
3708*53ee8cc1Swenshuai.xi if ((mean16 < AGC_MEAN16_UPBOUND) && (mean16 > AGC_MEAN16_LOWBOUND))
3709*53ee8cc1Swenshuai.xi {
3710*53ee8cc1Swenshuai.xi if (bEnableUsrSteadyAgcK)
3711*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_K, u8UsrSteadyAgcK, _BIT0|_BIT1|_BIT2);// k
3712*53ee8cc1Swenshuai.xi else
3713*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_K, 0x04, _BIT0|_BIT1|_BIT2); // k
3714*53ee8cc1Swenshuai.xi }
3715*53ee8cc1Swenshuai.xi else
3716*53ee8cc1Swenshuai.xi {
3717*53ee8cc1Swenshuai.xi if (bEnableUsrNonSteadyAgcK)
3718*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_K, u8UsrNonSteadyAgcK, _BIT0|_BIT1|_BIT2); // k
3719*53ee8cc1Swenshuai.xi else
3720*53ee8cc1Swenshuai.xi {
3721*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 1)
3722*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_K, 0x03, _BIT0|_BIT1|_BIT2); // k
3723*53ee8cc1Swenshuai.xi else
3724*53ee8cc1Swenshuai.xi msWriteByteMask(AGC_K, 0x02, _BIT0|_BIT1|_BIT2); // k
3725*53ee8cc1Swenshuai.xi }
3726*53ee8cc1Swenshuai.xi }
3727*53ee8cc1Swenshuai.xi }
3728*53ee8cc1Swenshuai.xi
3729*53ee8cc1Swenshuai.xi // CR monitor
3730*53ee8cc1Swenshuai.xi agc_pga2 = msReadByte(AGC_PGA2C) & 0x1F;
3731*53ee8cc1Swenshuai.xi if ((agc_pga2 >= 0x0F) && (VIFInitialIn_inst.VifCrPdModeSel == 1))
3732*53ee8cc1Swenshuai.xi {
3733*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP_SW, (VIFInitialIn_inst.VifCrKp)+0x01, 0x0F); // kp software mode
3734*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI_SW, (VIFInitialIn_inst.VifCrKi<<4)+0x10, 0xF0); // ki software mode
3735*53ee8cc1Swenshuai.xi }
3736*53ee8cc1Swenshuai.xi else
3737*53ee8cc1Swenshuai.xi {
3738*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifCrKpKiAdjust)
3739*53ee8cc1Swenshuai.xi {
3740*53ee8cc1Swenshuai.xi //if(g_VifHWKpKiFlag == 1)
3741*53ee8cc1Swenshuai.xi if((msReadByte(HALVIFDBG2_BIT) & 0x01) != 0)
3742*53ee8cc1Swenshuai.xi {
3743*53ee8cc1Swenshuai.xi g_VifCrKp = VIFInitialIn_inst.VifCrKp;
3744*53ee8cc1Swenshuai.xi g_VifCrKi = VIFInitialIn_inst.VifCrKi;
3745*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP_SW, g_VifCrKp, 0x0F); // Ki Kp software mode
3746*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI_SW, g_VifCrKi << 4, 0xF0);
3747*53ee8cc1Swenshuai.xi
3748*53ee8cc1Swenshuai.xi msWriteBit(KPKI_ADJ_EN, 1, _BIT0); // real HW_KPKI_enable
3749*53ee8cc1Swenshuai.xi kpki_gear = msReadByte(CR_KPKI_GEAR) & 0x30;
3750*53ee8cc1Swenshuai.xi
3751*53ee8cc1Swenshuai.xi if(kpki_gear == 0)
3752*53ee8cc1Swenshuai.xi kpki_cnt_idx = 0;
3753*53ee8cc1Swenshuai.xi else
3754*53ee8cc1Swenshuai.xi {
3755*53ee8cc1Swenshuai.xi if(kpki_cnt_idx == 7000)
3756*53ee8cc1Swenshuai.xi {
3757*53ee8cc1Swenshuai.xi msWriteBit(CR_PD_IMAG_INV, 0, _BIT1); // for > 150% overmodulation
3758*53ee8cc1Swenshuai.xi kpki_cnt_idx = 0;
3759*53ee8cc1Swenshuai.xi }
3760*53ee8cc1Swenshuai.xi kpki_cnt_idx++;
3761*53ee8cc1Swenshuai.xi }
3762*53ee8cc1Swenshuai.xi }
3763*53ee8cc1Swenshuai.xi else
3764*53ee8cc1Swenshuai.xi {
3765*53ee8cc1Swenshuai.xi msWriteBit(KPKI_ADJ_EN, 0, _BIT0); // real HW_KPKI_disable
3766*53ee8cc1Swenshuai.xi
3767*53ee8cc1Swenshuai.xi if(crjtr_det_cnt < 6)
3768*53ee8cc1Swenshuai.xi {
3769*53ee8cc1Swenshuai.xi msVifCrKpKiAutoAdjust(VIFInitialIn_inst.VifCrKpKiAdjustThr1, VIFInitialIn_inst.VifCrKpKiAdjustThr2);
3770*53ee8cc1Swenshuai.xi
3771*53ee8cc1Swenshuai.xi if(g_VifCrKpKiAdjLoopCnt == 0)
3772*53ee8cc1Swenshuai.xi {
3773*53ee8cc1Swenshuai.xi crjtr_det_cnt++;
3774*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP_SW, g_VifCrKp, 0x0F); // Ki Kp software mode
3775*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI_SW, g_VifCrKi << 4, 0xF0);
3776*53ee8cc1Swenshuai.xi
3777*53ee8cc1Swenshuai.xi if(g_VifCrKp != VIFInitialIn_inst.VifCrKp) // If carrier drift
3778*53ee8cc1Swenshuai.xi msWriteBit(CR_PD_IMAG_INV, 0, _BIT1);
3779*53ee8cc1Swenshuai.xi else
3780*53ee8cc1Swenshuai.xi msWriteBit(CR_PD_IMAG_INV, 1, _BIT1);
3781*53ee8cc1Swenshuai.xi }
3782*53ee8cc1Swenshuai.xi }
3783*53ee8cc1Swenshuai.xi }
3784*53ee8cc1Swenshuai.xi }
3785*53ee8cc1Swenshuai.xi else
3786*53ee8cc1Swenshuai.xi {
3787*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KP_SW, VIFInitialIn_inst.VifCrKp, 0x0F); // kp software mode
3788*53ee8cc1Swenshuai.xi msWriteByteMask(CR_KI_SW, VIFInitialIn_inst.VifCrKi<<4, 0xF0); // ki software mode
3789*53ee8cc1Swenshuai.xi }
3790*53ee8cc1Swenshuai.xi }
3791*53ee8cc1Swenshuai.xi
3792*53ee8cc1Swenshuai.xi if(!(_bit0_(msReadByte(CR_LOCK_STATUS))))
3793*53ee8cc1Swenshuai.xi {
3794*53ee8cc1Swenshuai.xi HAL_VIF_Delay1ms(50); // for Fluke 54200 50dBuV <-> 51dBuV switch
3795*53ee8cc1Swenshuai.xi if(!(_bit0_(msReadByte(CR_LOCK_STATUS))))
3796*53ee8cc1Swenshuai.xi {
3797*53ee8cc1Swenshuai.xi // for debug
3798*53ee8cc1Swenshuai.xi if (msReadByte(HALVIFDBG_BIT) & 0x08)
3799*53ee8cc1Swenshuai.xi {
3800*53ee8cc1Swenshuai.xi printf("VIF msVifInitial!!!");
3801*53ee8cc1Swenshuai.xi }
3802*53ee8cc1Swenshuai.xi msVifInitial();
3803*53ee8cc1Swenshuai.xi }
3804*53ee8cc1Swenshuai.xi }
3805*53ee8cc1Swenshuai.xi
3806*53ee8cc1Swenshuai.xi // for debug
3807*53ee8cc1Swenshuai.xi if (msReadByte(HALVIFDBG_BIT) & 0x40)
3808*53ee8cc1Swenshuai.xi {
3809*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifCrKpKiAdjust==1 )
3810*53ee8cc1Swenshuai.xi {
3811*53ee8cc1Swenshuai.xi VIFInitialIn_inst.VifCrKpKiAdjust=0;
3812*53ee8cc1Swenshuai.xi }
3813*53ee8cc1Swenshuai.xi printf("\r\n Disable VIF KpKi auto adjust");
3814*53ee8cc1Swenshuai.xi }
3815*53ee8cc1Swenshuai.xi
3816*53ee8cc1Swenshuai.xi // for debug
3817*53ee8cc1Swenshuai.xi if ((msReadByte(HALVIFDBG_BIT) & 0x80) || (VIFInitialIn_inst.VifReserve & _BIT3))
3818*53ee8cc1Swenshuai.xi {
3819*53ee8cc1Swenshuai.xi U8 ir_rate;
3820*53ee8cc1Swenshuai.xi
3821*53ee8cc1Swenshuai.xi // IR Rate
3822*53ee8cc1Swenshuai.xi ir_rate = msReadByte(IF_RATE);
3823*53ee8cc1Swenshuai.xi if (ir_rate==0x49)
3824*53ee8cc1Swenshuai.xi printf("\r\n IF_FREQ_3395 IF_FREQ_3890");
3825*53ee8cc1Swenshuai.xi else if (ir_rate==0xE3)
3826*53ee8cc1Swenshuai.xi printf("\r\n IF_FREQ_3800");
3827*53ee8cc1Swenshuai.xi else if (ir_rate==0x8E)
3828*53ee8cc1Swenshuai.xi printf("\r\n IF_FREQ_3950");
3829*53ee8cc1Swenshuai.xi else if (ir_rate==0xAA)
3830*53ee8cc1Swenshuai.xi printf("\r\n IF_FREQ_4575");
3831*53ee8cc1Swenshuai.xi else if (ir_rate==0xC7)
3832*53ee8cc1Swenshuai.xi printf("\r\n IF_FREQ_5875");
3833*53ee8cc1Swenshuai.xi else
3834*53ee8cc1Swenshuai.xi printf("\r\n unknown");
3835*53ee8cc1Swenshuai.xi
3836*53ee8cc1Swenshuai.xi printf(" IR_RATE=0x%x ", ir_rate);
3837*53ee8cc1Swenshuai.xi
3838*53ee8cc1Swenshuai.xi // sound system
3839*53ee8cc1Swenshuai.xi if (g_ucVifSoundSystemType==0)
3840*53ee8cc1Swenshuai.xi printf("\r\n VIF_SOUND_B");
3841*53ee8cc1Swenshuai.xi else if (g_ucVifSoundSystemType==1)
3842*53ee8cc1Swenshuai.xi printf("\r\n VIF_SOUND_B_NICAM");
3843*53ee8cc1Swenshuai.xi else if (g_ucVifSoundSystemType==2)
3844*53ee8cc1Swenshuai.xi printf("\r\n VIF_SOUND_GH");
3845*53ee8cc1Swenshuai.xi else if (g_ucVifSoundSystemType==3)
3846*53ee8cc1Swenshuai.xi printf("\r\n VIF_SOUND_GH_NICAM");
3847*53ee8cc1Swenshuai.xi else if (g_ucVifSoundSystemType==4)
3848*53ee8cc1Swenshuai.xi printf("\r\n VIF_SOUND_I");
3849*53ee8cc1Swenshuai.xi else if (g_ucVifSoundSystemType==5)
3850*53ee8cc1Swenshuai.xi printf("\r\n VIF_SOUND_DK1");
3851*53ee8cc1Swenshuai.xi else if (g_ucVifSoundSystemType==6)
3852*53ee8cc1Swenshuai.xi printf("\r\n VIF_SOUND_DK2");
3853*53ee8cc1Swenshuai.xi else if (g_ucVifSoundSystemType==7)
3854*53ee8cc1Swenshuai.xi printf("\r\n VIF_SOUND_DK3");
3855*53ee8cc1Swenshuai.xi else if (g_ucVifSoundSystemType==8)
3856*53ee8cc1Swenshuai.xi printf("\r\n VIF_SOUND_DK_NICAM");
3857*53ee8cc1Swenshuai.xi else if (g_ucVifSoundSystemType==9)
3858*53ee8cc1Swenshuai.xi printf("\r\n VIF_SOUND_L");
3859*53ee8cc1Swenshuai.xi else if (g_ucVifSoundSystemType==10)
3860*53ee8cc1Swenshuai.xi printf("\r\n VIF_SOUND_LL");
3861*53ee8cc1Swenshuai.xi else if (g_ucVifSoundSystemType==11)
3862*53ee8cc1Swenshuai.xi printf("\r\n VIF_SOUND_MN");
3863*53ee8cc1Swenshuai.xi else
3864*53ee8cc1Swenshuai.xi printf("\r\n unknown");
3865*53ee8cc1Swenshuai.xi
3866*53ee8cc1Swenshuai.xi printf(" sound system=%d", (BYTE)g_ucVifSoundSystemType);
3867*53ee8cc1Swenshuai.xi
3868*53ee8cc1Swenshuai.xi // freq band select
3869*53ee8cc1Swenshuai.xi printf("\r\n band=%d", (BYTE)VIFInitialIn_inst.VifFreqBand);
3870*53ee8cc1Swenshuai.xi }
3871*53ee8cc1Swenshuai.xi break;
3872*53ee8cc1Swenshuai.xi
3873*53ee8cc1Swenshuai.xi default:
3874*53ee8cc1Swenshuai.xi g_ucVifStatusStep++;
3875*53ee8cc1Swenshuai.xi break;
3876*53ee8cc1Swenshuai.xi }
3877*53ee8cc1Swenshuai.xi
3878*53ee8cc1Swenshuai.xi if ((g_ucVifSoundSystemType == VIF_SOUND_L) || (g_ucVifSoundSystemType == VIF_SOUND_LL))
3879*53ee8cc1Swenshuai.xi {
3880*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 0)
3881*53ee8cc1Swenshuai.xi msVifInitial();
3882*53ee8cc1Swenshuai.xi if ((g_ucVifSoundSystemType == VIF_SOUND_L) && (g_bCheckIFFreq == 1))
3883*53ee8cc1Swenshuai.xi msVifInitial();
3884*53ee8cc1Swenshuai.xi if ((g_ucVifSoundSystemType == VIF_SOUND_LL) && (g_bCheckIFFreq == 0))
3885*53ee8cc1Swenshuai.xi msVifInitial();
3886*53ee8cc1Swenshuai.xi }
3887*53ee8cc1Swenshuai.xi else
3888*53ee8cc1Swenshuai.xi {
3889*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 1)
3890*53ee8cc1Swenshuai.xi msVifInitial();
3891*53ee8cc1Swenshuai.xi }
3892*53ee8cc1Swenshuai.xi }
3893*53ee8cc1Swenshuai.xi
msVifSeriousACIDetection(void)3894*53ee8cc1Swenshuai.xi void msVifSeriousACIDetection(void)
3895*53ee8cc1Swenshuai.xi {
3896*53ee8cc1Swenshuai.xi BYTE AGC_Ref, AGC_Mean256, temp;
3897*53ee8cc1Swenshuai.xi BYTE PGA = 0, ADC_Index = 0, ADC_Underflow_Index = 0, ADC_Overflow_Index = 0;
3898*53ee8cc1Swenshuai.xi WORD VGA = 0;
3899*53ee8cc1Swenshuai.xi
3900*53ee8cc1Swenshuai.xi temp = msReadByte(AGC_REF);
3901*53ee8cc1Swenshuai.xi AGC_Ref =(temp << 1);
3902*53ee8cc1Swenshuai.xi AGC_Mean256 = msReadByte(AGC_MEAN256);
3903*53ee8cc1Swenshuai.xi
3904*53ee8cc1Swenshuai.xi if(SeriousACI_Index == 1)
3905*53ee8cc1Swenshuai.xi {
3906*53ee8cc1Swenshuai.xi VGA = msRead2Bytes(AGC_VGA);
3907*53ee8cc1Swenshuai.xi PGA = msReadByte(AGC_PGA2C);
3908*53ee8cc1Swenshuai.xi ADC_Index = RIU_ReadByte(0x12870L);
3909*53ee8cc1Swenshuai.xi ADC_Underflow_Index = ADC_Index & 0x02;
3910*53ee8cc1Swenshuai.xi ADC_Overflow_Index = ADC_Index & 0x04;
3911*53ee8cc1Swenshuai.xi
3912*53ee8cc1Swenshuai.xi if((ADC_Underflow_Index == 0x02 ||ADC_Overflow_Index == 0x04)&&(VGA == 0x7000)&&(PGA == 0x1F)&&(AGC_Change_Index == 0)
3913*53ee8cc1Swenshuai.xi &&(AGC_Ref - AGC_Mean256 > 5))
3914*53ee8cc1Swenshuai.xi {
3915*53ee8cc1Swenshuai.xi msWriteByte(AGC_REF, VIFInitialIn_inst.VifADCOverflowAGCREF);
3916*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_SOS21, 1 , _BIT2);
3917*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_SOS22, 1 , _BIT3);
3918*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_GAIN_OVERWRITE, 0x00);
3919*53ee8cc1Swenshuai.xi msWriteByte(CLAMPGAIN_GAIN_OVERWRITE+1, 0x04);
3920*53ee8cc1Swenshuai.xi AGC_Change_Index = 1;
3921*53ee8cc1Swenshuai.xi }
3922*53ee8cc1Swenshuai.xi SeriousACI_Index = 0;
3923*53ee8cc1Swenshuai.xi }
3924*53ee8cc1Swenshuai.xi SeriousACI_Index = SeriousACI_Index + 1;
3925*53ee8cc1Swenshuai.xi }
3926*53ee8cc1Swenshuai.xi
msVifCrKpKiAutoAdjust(BYTE VifCrKpKiAdjustThr1,BYTE VifCrKpKiAdjustThr2)3927*53ee8cc1Swenshuai.xi void msVifCrKpKiAutoAdjust(BYTE VifCrKpKiAdjustThr1, BYTE VifCrKpKiAdjustThr2)
3928*53ee8cc1Swenshuai.xi {
3929*53ee8cc1Swenshuai.xi MS_S16 CrJtrMax, CrJtrMin;
3930*53ee8cc1Swenshuai.xi static DWORD CrJtrDelta;
3931*53ee8cc1Swenshuai.xi
3932*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\msVifCrKpKiAutoAdjust()"));
3933*53ee8cc1Swenshuai.xi
3934*53ee8cc1Swenshuai.xi msWriteBit(CR_STATUS_LATCH_EN, 1, _BIT4); // latch CR loop-filter
3935*53ee8cc1Swenshuai.xi
3936*53ee8cc1Swenshuai.xi msWriteByteMask(CR_JTR_SEL, 0, _BIT3|_BIT2|_BIT1|_BIT0); // 0: max
3937*53ee8cc1Swenshuai.xi CrJtrMax = msRead2Bytes(CR_JTR_OUT);
3938*53ee8cc1Swenshuai.xi
3939*53ee8cc1Swenshuai.xi msWriteByteMask(CR_JTR_SEL, _BIT0, _BIT3|_BIT2|_BIT1|_BIT0); // 1: min
3940*53ee8cc1Swenshuai.xi CrJtrMin = msRead2Bytes(CR_JTR_OUT);
3941*53ee8cc1Swenshuai.xi
3942*53ee8cc1Swenshuai.xi msWriteBit(CR_STATUS_LATCH_EN, 0, _BIT4); // un-latch CR loop-filter status
3943*53ee8cc1Swenshuai.xi
3944*53ee8cc1Swenshuai.xi if(g_VifCrKpKiAdjLoopCnt == 0) // reset delta value
3945*53ee8cc1Swenshuai.xi CrJtrDelta = 0;
3946*53ee8cc1Swenshuai.xi
3947*53ee8cc1Swenshuai.xi CrJtrDelta += (DWORD)(CrJtrMax - CrJtrMin);
3948*53ee8cc1Swenshuai.xi
3949*53ee8cc1Swenshuai.xi if (++g_VifCrKpKiAdjLoopCnt == 32) // 32 samples
3950*53ee8cc1Swenshuai.xi {
3951*53ee8cc1Swenshuai.xi CrJtrDelta = CrJtrDelta >> 5; // divided by 32
3952*53ee8cc1Swenshuai.xi CrJtrDelta = CrJtrDelta >> 7;
3953*53ee8cc1Swenshuai.xi if (g_VifCrKp >= VIFInitialIn_inst.VifCrKp)
3954*53ee8cc1Swenshuai.xi {
3955*53ee8cc1Swenshuai.xi if (CrJtrDelta >= VifCrKpKiAdjustThr2)
3956*53ee8cc1Swenshuai.xi {
3957*53ee8cc1Swenshuai.xi g_VifCrKp -= 0x02;
3958*53ee8cc1Swenshuai.xi g_VifCrKi -= 0x02;
3959*53ee8cc1Swenshuai.xi }
3960*53ee8cc1Swenshuai.xi else if ((CrJtrDelta < VifCrKpKiAdjustThr2) && (CrJtrDelta >= VifCrKpKiAdjustThr1))
3961*53ee8cc1Swenshuai.xi {
3962*53ee8cc1Swenshuai.xi g_VifCrKp -= 0x01;
3963*53ee8cc1Swenshuai.xi g_VifCrKi -= 0x01;
3964*53ee8cc1Swenshuai.xi }
3965*53ee8cc1Swenshuai.xi }
3966*53ee8cc1Swenshuai.xi else if (g_VifCrKp == VIFInitialIn_inst.VifCrKp - 1)
3967*53ee8cc1Swenshuai.xi {
3968*53ee8cc1Swenshuai.xi if (CrJtrDelta >= VifCrKpKiAdjustThr2)
3969*53ee8cc1Swenshuai.xi {
3970*53ee8cc1Swenshuai.xi g_VifCrKp -= 0x01;
3971*53ee8cc1Swenshuai.xi g_VifCrKi -= 0x01;
3972*53ee8cc1Swenshuai.xi }
3973*53ee8cc1Swenshuai.xi else if (CrJtrDelta < VifCrKpKiAdjustThr1 - 1)
3974*53ee8cc1Swenshuai.xi {
3975*53ee8cc1Swenshuai.xi g_VifCrKp += 0x01 ;
3976*53ee8cc1Swenshuai.xi g_VifCrKi += 0x01;
3977*53ee8cc1Swenshuai.xi }
3978*53ee8cc1Swenshuai.xi }
3979*53ee8cc1Swenshuai.xi else if (g_VifCrKp == VIFInitialIn_inst.VifCrKp - 2)
3980*53ee8cc1Swenshuai.xi {
3981*53ee8cc1Swenshuai.xi if (CrJtrDelta < VifCrKpKiAdjustThr1 - 1)
3982*53ee8cc1Swenshuai.xi {
3983*53ee8cc1Swenshuai.xi g_VifCrKp += 0x02;
3984*53ee8cc1Swenshuai.xi g_VifCrKi += 0x02;
3985*53ee8cc1Swenshuai.xi }
3986*53ee8cc1Swenshuai.xi else if (CrJtrDelta < VifCrKpKiAdjustThr2 - 3)
3987*53ee8cc1Swenshuai.xi {
3988*53ee8cc1Swenshuai.xi g_VifCrKp += 0x01;
3989*53ee8cc1Swenshuai.xi g_VifCrKi += 0x01;
3990*53ee8cc1Swenshuai.xi }
3991*53ee8cc1Swenshuai.xi }
3992*53ee8cc1Swenshuai.xi
3993*53ee8cc1Swenshuai.xi g_VifCrKpKiAdjLoopCnt = 0;
3994*53ee8cc1Swenshuai.xi if (msReadByte(HALVIFDBG_BIT) & 0x20)
3995*53ee8cc1Swenshuai.xi {
3996*53ee8cc1Swenshuai.xi printf("\r\ng_ucVifStatusStep = %d", g_ucVifStatusStep);
3997*53ee8cc1Swenshuai.xi printf("\nKi/Kp = %x%x", g_VifCrKi, g_VifCrKp);
3998*53ee8cc1Swenshuai.xi printf("\nCrJtrMax = %x", CrJtrMax >> 7);
3999*53ee8cc1Swenshuai.xi printf("\nCrJtrMin = %x", CrJtrMin >> 7);
4000*53ee8cc1Swenshuai.xi printf("\r\nCrJtrDelta = %x", (WORD)((CrJtrDelta & 0xFFFF0000) >> 16));
4001*53ee8cc1Swenshuai.xi printf("%x\r\n",(WORD)(CrJtrDelta & 0x0000FFFF));
4002*53ee8cc1Swenshuai.xi }
4003*53ee8cc1Swenshuai.xi }
4004*53ee8cc1Swenshuai.xi }
4005*53ee8cc1Swenshuai.xi
msVifReadCRFOE(void)4006*53ee8cc1Swenshuai.xi U8 msVifReadCRFOE(void)
4007*53ee8cc1Swenshuai.xi {
4008*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nmsVifReadCRFOE()"));
4009*53ee8cc1Swenshuai.xi
4010*53ee8cc1Swenshuai.xi if (!_hal_VIF.bBaseAddrInitialized) return 0;
4011*53ee8cc1Swenshuai.xi
4012*53ee8cc1Swenshuai.xi return msReadByte(CR_FOE);
4013*53ee8cc1Swenshuai.xi }
4014*53ee8cc1Swenshuai.xi
msVifReadLockStatus(void)4015*53ee8cc1Swenshuai.xi U8 msVifReadLockStatus(void)
4016*53ee8cc1Swenshuai.xi {
4017*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nmsVifReadLockStatus()"));
4018*53ee8cc1Swenshuai.xi
4019*53ee8cc1Swenshuai.xi if (!_hal_VIF.bBaseAddrInitialized) return 0;
4020*53ee8cc1Swenshuai.xi
4021*53ee8cc1Swenshuai.xi return msReadByte(CR_LOCK_STATUS);
4022*53ee8cc1Swenshuai.xi }
4023*53ee8cc1Swenshuai.xi
msVifLoadEQCoeff(BYTE VifSoundStandard)4024*53ee8cc1Swenshuai.xi void msVifLoadEQCoeff(BYTE VifSoundStandard)
4025*53ee8cc1Swenshuai.xi {
4026*53ee8cc1Swenshuai.xi U8 u8index;
4027*53ee8cc1Swenshuai.xi
4028*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\n msVifLoadEQCoeff()"));
4029*53ee8cc1Swenshuai.xi
4030*53ee8cc1Swenshuai.xi // set coef
4031*53ee8cc1Swenshuai.xi RIU_WriteByte(0x120A0L, 0x01); // VIF use DVB SRAM and FIR
4032*53ee8cc1Swenshuai.xi RIU_WriteByteMask(0x120A2L, 0x01, 0x0F); // reg_vif_fir_coef_ctrl
4033*53ee8cc1Swenshuai.xi RIU_WriteByteMask(0x120A2L, 0x03, 0x0F); // reg_vif_fir_coef_ctrl
4034*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_EQFIR, 1, _BIT0); // EQ BYPASS
4035*53ee8cc1Swenshuai.xi
4036*53ee8cc1Swenshuai.xi if(VIF_IS_EQ_IIR == 0)
4037*53ee8cc1Swenshuai.xi {
4038*53ee8cc1Swenshuai.xi // EQ FIR
4039*53ee8cc1Swenshuai.xi RIU_WriteRegBit(0x120A0L, 0, _BIT4); // 0:FIR, 1:IIR
4040*53ee8cc1Swenshuai.xi
4041*53ee8cc1Swenshuai.xi if(VifSoundStandard == VIF_SOUND_MN)
4042*53ee8cc1Swenshuai.xi {
4043*53ee8cc1Swenshuai.xi for(u8index = 0; u8index < 56; ++u8index)
4044*53ee8cc1Swenshuai.xi {
4045*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_NTSC_EQ_CO_A_REJ[u8index]+0x8000);
4046*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_NTSC_EQ_CO_A_REJ[u8index]);
4047*53ee8cc1Swenshuai.xi }
4048*53ee8cc1Swenshuai.xi }
4049*53ee8cc1Swenshuai.xi else
4050*53ee8cc1Swenshuai.xi {
4051*53ee8cc1Swenshuai.xi for(u8index = 0; u8index < 56; ++u8index)
4052*53ee8cc1Swenshuai.xi {
4053*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_PAL_EQ_CO_A_REJ[u8index]+0x8000);
4054*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_PAL_EQ_CO_A_REJ[u8index]);
4055*53ee8cc1Swenshuai.xi }
4056*53ee8cc1Swenshuai.xi }
4057*53ee8cc1Swenshuai.xi }
4058*53ee8cc1Swenshuai.xi else
4059*53ee8cc1Swenshuai.xi {
4060*53ee8cc1Swenshuai.xi // EQ IIR
4061*53ee8cc1Swenshuai.xi RIU_WriteRegBit(0x120A0L, 1, _BIT4); // 0:FIR, 1:IIR
4062*53ee8cc1Swenshuai.xi
4063*53ee8cc1Swenshuai.xi switch(VifSoundStandard)
4064*53ee8cc1Swenshuai.xi {
4065*53ee8cc1Swenshuai.xi case VIF_SOUND_B:
4066*53ee8cc1Swenshuai.xi case VIF_SOUND_GH:
4067*53ee8cc1Swenshuai.xi for(u8index = 0; u8index < 18; ++u8index)
4068*53ee8cc1Swenshuai.xi {
4069*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_BG_EQ_IIR_BANDSTOP[u8index]+0x8000);
4070*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_BG_EQ_IIR_BANDSTOP[u8index]);
4071*53ee8cc1Swenshuai.xi }
4072*53ee8cc1Swenshuai.xi break;
4073*53ee8cc1Swenshuai.xi
4074*53ee8cc1Swenshuai.xi case VIF_SOUND_B_NICAM:
4075*53ee8cc1Swenshuai.xi case VIF_SOUND_GH_NICAM:
4076*53ee8cc1Swenshuai.xi for(u8index = 0; u8index < 18; ++u8index)
4077*53ee8cc1Swenshuai.xi {
4078*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_BG_NICAM_EQ_IIR_NOTCH[u8index]+0x8000);
4079*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_BG_NICAM_EQ_IIR_NOTCH[u8index]);
4080*53ee8cc1Swenshuai.xi }
4081*53ee8cc1Swenshuai.xi break;
4082*53ee8cc1Swenshuai.xi
4083*53ee8cc1Swenshuai.xi case VIF_SOUND_I:
4084*53ee8cc1Swenshuai.xi for(u8index = 0; u8index < 18; ++u8index)
4085*53ee8cc1Swenshuai.xi {
4086*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_I_EQ_IIR_NOTCH[u8index]+0x8000);
4087*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_I_EQ_IIR_NOTCH[u8index]);
4088*53ee8cc1Swenshuai.xi }
4089*53ee8cc1Swenshuai.xi break;
4090*53ee8cc1Swenshuai.xi
4091*53ee8cc1Swenshuai.xi case VIF_SOUND_DK1:
4092*53ee8cc1Swenshuai.xi for(u8index = 0; u8index < 18; ++u8index)
4093*53ee8cc1Swenshuai.xi {
4094*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_DK1_EQ_IIR_NOTCH[u8index]+0x8000);
4095*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_DK1_EQ_IIR_NOTCH[u8index]);
4096*53ee8cc1Swenshuai.xi }
4097*53ee8cc1Swenshuai.xi break;
4098*53ee8cc1Swenshuai.xi
4099*53ee8cc1Swenshuai.xi case VIF_SOUND_DK2:
4100*53ee8cc1Swenshuai.xi for(u8index = 0; u8index < 18; ++u8index)
4101*53ee8cc1Swenshuai.xi {
4102*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_DK2_EQ_IIR_NOTCH[u8index]+0x8000);
4103*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_DK2_EQ_IIR_NOTCH[u8index]);
4104*53ee8cc1Swenshuai.xi }
4105*53ee8cc1Swenshuai.xi break;
4106*53ee8cc1Swenshuai.xi
4107*53ee8cc1Swenshuai.xi case VIF_SOUND_DK3:
4108*53ee8cc1Swenshuai.xi for(u8index = 0; u8index < 18; ++u8index)
4109*53ee8cc1Swenshuai.xi {
4110*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_DK3_EQ_IIR_NOTCH[u8index]+0x8000);
4111*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_DK3_EQ_IIR_NOTCH[u8index]);
4112*53ee8cc1Swenshuai.xi }
4113*53ee8cc1Swenshuai.xi break;
4114*53ee8cc1Swenshuai.xi
4115*53ee8cc1Swenshuai.xi case VIF_SOUND_DK_NICAM:
4116*53ee8cc1Swenshuai.xi for(u8index = 0; u8index < 18; ++u8index)
4117*53ee8cc1Swenshuai.xi {
4118*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_DK_NICAM_EQ_IIR_NOTCH[u8index]+0x8000);
4119*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_DK_NICAM_EQ_IIR_NOTCH[u8index]);
4120*53ee8cc1Swenshuai.xi }
4121*53ee8cc1Swenshuai.xi break;
4122*53ee8cc1Swenshuai.xi
4123*53ee8cc1Swenshuai.xi case VIF_SOUND_MN:
4124*53ee8cc1Swenshuai.xi for(u8index = 0; u8index < 18; ++u8index)
4125*53ee8cc1Swenshuai.xi {
4126*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_NTSC_MN_EQ_IIR_NOTCH[u8index]+0x8000);
4127*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_NTSC_MN_EQ_IIR_NOTCH[u8index]);
4128*53ee8cc1Swenshuai.xi }
4129*53ee8cc1Swenshuai.xi break;
4130*53ee8cc1Swenshuai.xi
4131*53ee8cc1Swenshuai.xi case VIF_SOUND_L:
4132*53ee8cc1Swenshuai.xi case VIF_SOUND_LL:
4133*53ee8cc1Swenshuai.xi //audio carrier 1 and 2 are at the same position as DK NICAM
4134*53ee8cc1Swenshuai.xi for(u8index = 0; u8index < 18; ++u8index)
4135*53ee8cc1Swenshuai.xi {
4136*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_DK_NICAM_EQ_IIR_NOTCH[u8index]+0x8000);
4137*53ee8cc1Swenshuai.xi RIU_Write2Byte(0x120A4, VIF_DK_NICAM_EQ_IIR_NOTCH[u8index]);
4138*53ee8cc1Swenshuai.xi }
4139*53ee8cc1Swenshuai.xi break;
4140*53ee8cc1Swenshuai.xi
4141*53ee8cc1Swenshuai.xi case VIF_SOUND_NUMS:
4142*53ee8cc1Swenshuai.xi default:
4143*53ee8cc1Swenshuai.xi break;
4144*53ee8cc1Swenshuai.xi }
4145*53ee8cc1Swenshuai.xi }
4146*53ee8cc1Swenshuai.xi msWriteBit(BYPASS_EQFIR , 0 , _BIT0); // EQ not BYPASS
4147*53ee8cc1Swenshuai.xi }
4148*53ee8cc1Swenshuai.xi
msVifShiftClk(BYTE VifShiftClk)4149*53ee8cc1Swenshuai.xi void msVifShiftClk(BYTE VifShiftClk)
4150*53ee8cc1Swenshuai.xi {
4151*53ee8cc1Swenshuai.xi if(VIF_IS_ADC_48MHz == 0)
4152*53ee8cc1Swenshuai.xi {
4153*53ee8cc1Swenshuai.xi if (VifShiftClk == 1)
4154*53ee8cc1Swenshuai.xi {
4155*53ee8cc1Swenshuai.xi //g_VifShiftClk = 1; // 0x1121_D3
4156*53ee8cc1Swenshuai.xi msWriteByte(VIF_RF_RESERVED_1+1, 0x01);
4157*53ee8cc1Swenshuai.xi
4158*53ee8cc1Swenshuai.xi msWriteByte(0x12866L, 0x00);//loop divider
4159*53ee8cc1Swenshuai.xi msWriteByte(0x12867L, 0x23);
4160*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 0)
4161*53ee8cc1Swenshuai.xi {
4162*53ee8cc1Swenshuai.xi // move to clk 42 Mhz
4163*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, 0x6D); // cr_rate for 15 MHz
4164*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, 0xDB);
4165*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, 0x16, 0x1F);
4166*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, 0, _BIT0); // cr_rate not invert
4167*53ee8cc1Swenshuai.xi
4168*53ee8cc1Swenshuai.xi // move to clk 140 Mhz
4169*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0xA8); // IF rate for 23 MHz
4170*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0x83);
4171*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x0A, 0x3F);
4172*53ee8cc1Swenshuai.xi }
4173*53ee8cc1Swenshuai.xi }
4174*53ee8cc1Swenshuai.xi else if(VifShiftClk == 2)
4175*53ee8cc1Swenshuai.xi {
4176*53ee8cc1Swenshuai.xi //g_VifShiftClk = 2; // 0x1121_D3
4177*53ee8cc1Swenshuai.xi msWriteByte(VIF_RF_RESERVED_1+1, 0x02);
4178*53ee8cc1Swenshuai.xi
4179*53ee8cc1Swenshuai.xi msWriteByte(0x12866L, 0x00);//loop divider
4180*53ee8cc1Swenshuai.xi msWriteByte(0x12867L, 0x25);
4181*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 0)
4182*53ee8cc1Swenshuai.xi {
4183*53ee8cc1Swenshuai.xi // move to clk 44.4 Mhz
4184*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, 0x22); // cr_rate for 15 MHz
4185*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, 0x9F);
4186*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, 0x15, 0x1F);
4187*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, 0, _BIT0); // cr_rate not invert
4188*53ee8cc1Swenshuai.xi
4189*53ee8cc1Swenshuai.xi // move to clk 148 Mhz
4190*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0x29); // IF rate for 23 MHz
4191*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0xF2);
4192*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x09, 0x3F);
4193*53ee8cc1Swenshuai.xi }
4194*53ee8cc1Swenshuai.xi }
4195*53ee8cc1Swenshuai.xi else
4196*53ee8cc1Swenshuai.xi {
4197*53ee8cc1Swenshuai.xi //g_VifShiftClk = 0; // 0x1121_D3
4198*53ee8cc1Swenshuai.xi msWriteByte(VIF_RF_RESERVED_1+1, 0x00);
4199*53ee8cc1Swenshuai.xi
4200*53ee8cc1Swenshuai.xi msWriteByte(0x12866L, 0x00);//loop divider
4201*53ee8cc1Swenshuai.xi msWriteByte(0x12867L, 0x24);
4202*53ee8cc1Swenshuai.xi if (VIFInitialIn_inst.VifTunerType == 0)
4203*53ee8cc1Swenshuai.xi {
4204*53ee8cc1Swenshuai.xi // move to clk 43.2 Mhz
4205*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE, 0xE3); // cr_rate for 15 MHz
4206*53ee8cc1Swenshuai.xi msWriteByte(CR_RATE+1, 0x38);
4207*53ee8cc1Swenshuai.xi msWriteByteMask(CR_RATE+2, 0x16, 0x1F);
4208*53ee8cc1Swenshuai.xi msWriteBit(CR_RATE_INV, 0, _BIT0); // cr_rate not invert
4209*53ee8cc1Swenshuai.xi
4210*53ee8cc1Swenshuai.xi // move to clk 142 Mhz
4211*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE, 0xE3); // IF rate for 23 MHz
4212*53ee8cc1Swenshuai.xi msWriteByte(IF_RATE+1, 0x38);
4213*53ee8cc1Swenshuai.xi msWriteByteMask(IF_RATE+2, 0x0A, 0x3F);
4214*53ee8cc1Swenshuai.xi }
4215*53ee8cc1Swenshuai.xi }
4216*53ee8cc1Swenshuai.xi }
4217*53ee8cc1Swenshuai.xi }
4218*53ee8cc1Swenshuai.xi
HAL_VIF_BypassDBBAudioFilter(BOOL bEnable)4219*53ee8cc1Swenshuai.xi void HAL_VIF_BypassDBBAudioFilter(BOOL bEnable)
4220*53ee8cc1Swenshuai.xi {
4221*53ee8cc1Swenshuai.xi HALVIFDBG(printf("HAL_VIF_BypassDBBAudioFilter() bEnableq=%d\n",bEnable));
4222*53ee8cc1Swenshuai.xi msWriteBit(A_DAGC_SEL, (!bEnable), _BIT7); // 0: input from a_sos; 1: input from a_lpf_up
4223*53ee8cc1Swenshuai.xi }
4224*53ee8cc1Swenshuai.xi
HAL_VIF_GetInputLevelIndicator(void)4225*53ee8cc1Swenshuai.xi BOOL HAL_VIF_GetInputLevelIndicator(void)
4226*53ee8cc1Swenshuai.xi {
4227*53ee8cc1Swenshuai.xi BYTE ref, mean256, diff;
4228*53ee8cc1Swenshuai.xi
4229*53ee8cc1Swenshuai.xi HALVIFDBG(printf("\r\nHAL_VIF_GetInputLevelIndicator()"));
4230*53ee8cc1Swenshuai.xi
4231*53ee8cc1Swenshuai.xi ref = msReadByte(AGC_REF); // AGC ref
4232*53ee8cc1Swenshuai.xi mean256 = (BYTE)(msRead2Bytes(AGC_MEAN256)>>1); // AGC mean256
4233*53ee8cc1Swenshuai.xi
4234*53ee8cc1Swenshuai.xi if (g_bCheckModulationType == 0)
4235*53ee8cc1Swenshuai.xi diff = 0x15; // negative modulation
4236*53ee8cc1Swenshuai.xi else
4237*53ee8cc1Swenshuai.xi diff = 0x0A; // positive modulation
4238*53ee8cc1Swenshuai.xi
4239*53ee8cc1Swenshuai.xi if (mean256 >= (ref-diff))
4240*53ee8cc1Swenshuai.xi return 1;
4241*53ee8cc1Swenshuai.xi else
4242*53ee8cc1Swenshuai.xi return 0;
4243*53ee8cc1Swenshuai.xi }
4244*53ee8cc1Swenshuai.xi
HAL_VIF_GetCrPDInverse(void)4245*53ee8cc1Swenshuai.xi U8 HAL_VIF_GetCrPDInverse(void)
4246*53ee8cc1Swenshuai.xi {
4247*53ee8cc1Swenshuai.xi HALVIFDBG(printf("HAL_VIF_GetCrPDInverse() %d \n", 0));
4248*53ee8cc1Swenshuai.xi if ((HAL_VIF_ReadByte(CR_PD_IMAG_INV) & _BIT1)!=0)
4249*53ee8cc1Swenshuai.xi return 1;
4250*53ee8cc1Swenshuai.xi else
4251*53ee8cc1Swenshuai.xi return 0;
4252*53ee8cc1Swenshuai.xi }
4253*53ee8cc1Swenshuai.xi
HAL_VIF_SetCrPDInverse(BOOL bEnable)4254*53ee8cc1Swenshuai.xi void HAL_VIF_SetCrPDInverse(BOOL bEnable)
4255*53ee8cc1Swenshuai.xi {
4256*53ee8cc1Swenshuai.xi HALVIFDBG(printf("HAL_VIF_SetCrPDInverse() bEnableq=%d\n",bEnable));
4257*53ee8cc1Swenshuai.xi msWriteBit(CR_PD_IMAG_INV, (bEnable), _BIT1); // 0: disable; 1: enable
4258*53ee8cc1Swenshuai.xi }
4259*53ee8cc1Swenshuai.xi
4260*53ee8cc1Swenshuai.xi #endif //_HALVIF_C_
4261*53ee8cc1Swenshuai.xi
4262