📄 msvd.lst
字号:
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE MSVD
OBJECT MODULE PLACED IN ..\..\1out\msVD.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\..\tv\msVD.c BROWSE INCDIR(..\..\inc;..\..\mslib;..\..\Device;..\..\kern
-al;..\..\msFunc;..\..\pc;..\..\tv) DEBUG OBJECTEXTEND PRINT(..\..\1out\msVD.lst) OBJECT(..\..\1out\msVD.obj)
line level source
1 #include "board.h"
2
3 #include <math.h>
4
5 #define _MSVD_C_
6
7 #include <math.h>
8 #include "types.h"
9 #include "ms_reg.h"
10 #include "board.h"
11 #include "global.h"
12 #include "DEBUG.h"
13 #include "ms_rwreg.h"
14 #include "misc.h"
15 #include "userpref.h"
16 #include "power.h"
17 #include "panel.h"
18 #include "mstar.h"
*** WARNING C322 IN LINE 93 OF ..\..\INC\MSTAR.H: unknown identifier
19 #include "tv.h"
20 #include "DevVD.h"
21 #include "Detect.h"
22 #include "DEVTuner.h"
23 #include "adjust.h"
24 #include "Maria2_FSC_Lib.h"
25 #include "Maria2_ACC_Lib.h"
26 #include "M2_VD_Std_Lib.h"
27 #include "DevVD_User.h"
*** WARNING C322 IN LINE 2 OF ..\..\INC\DEVVD_USER.H: unknown identifier
*** WARNING C322 IN LINE 17 OF ..\..\INC\DEVVD_USER.H: unknown identifier
*** WARNING C322 IN LINE 32 OF ..\..\INC\DEVVD_USER.H: unknown identifier
*** WARNING C322 IN LINE 47 OF ..\..\INC\DEVVD_USER.H: unknown identifier
*** WARNING C322 IN LINE 62 OF ..\..\INC\DEVVD_USER.H: unknown identifier
*** WARNING C322 IN LINE 77 OF ..\..\INC\DEVVD_USER.H: unknown identifier
*** WARNING C322 IN LINE 92 OF ..\..\INC\DEVVD_USER.H: unknown identifier
*** WARNING C322 IN LINE 106 OF ..\..\INC\DEVVD_USER.H: unknown identifier
28 #include "menu.h"
29 #include "msvd.h"
30
31 #include "M2_VD_AGC_Lib.h"
32 #include "msVDField.h"
33
34 #if(ENABLE_VD_DSP)
35 #include "Maria2_dsp_lib.h"
36 #endif
37
38 ///////////////////////////////////////////////////////////////////////////////
39 // h sync lock : DspReg[14.1] or DspReg[0x25]7:4(CTRL_STATE[3:0]) >= 6
40 // color lock : DspReg[0x25]7:4(CTRL_STATE[3:0]) == 8
41 // 50Hz : by DSP
42 // interlace : by scaler.
43 //
44 // BK2_01[2:0] => FREQ_FSC[2:0] ==> Detect Signal type
45 // 000: 4.43361875MHz.
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 2
46 // 010: 3.579545MHz.
47 // 100: 3.57561149MHz.
48 // 110: 3.58205625MHz
49 //
50 // BK2_01[7:4] => APLL_TRK_MD[3:0]
51 // 1000: APLL in tracking mode
52 // 0110: APLL in free run mode(no color)
53 //
54 // BK2_02[7:6] => APLL_LCK_STATE[1:0]
55 // 01: APLL in lock state(color on)
56 // xx: APLL not in lock yet(color off)
57 //
58 // BK2_02[5:4] => FRM_LNS[1:0]
59 // 00: Unknown
60 // 10: Above 575 lines
61 // 01: Below 575 lines
62 //
63 // BK2_02[3:2] => Lock color burst
64 // 01: Lock
65 // 10: No lock
66 //
67 // BK2_02[1:0] => TV_SYSTEM[1:0]
68 // 01: NTSC system
69 // 10: PAL system
70 //
71 // BK2_03[7] ==> VCR_MD ==> VCR mode detect
72 // ------------------------------------------------------------------
73 // When Bk2_04 = 0x04, Bk2_02 ==> Noise level
74 // When Bk2_04 = 0x08, Bk2_01 ==> Gain level
75 // ------------------------------------------------------------------
76 // How to judge these situation:
77 // VCR - Stop(OSD): Non-interlace
78 // VCR - Pause: Vtotal is different with normal play
79 // VCR : Vtotal is always change
80 ///////////////////////////////////////////////////////////////////////////////
81 // BK3_72[2:0]
82 // 000: NTSC(M)
83 // 001: NTSC(443)
84 // 010: PAL(M)
85 // 011: PAL(BDGHIN)
86 // 100: PAL(Nc)
87 // 111: Unknow => No signal
88 ///////////////////////////////////////////////////////////////////////////////
89 // Htotal*Vtotal
90 // NTSC(M) 910*525
91 // NTSC-443 1127.1*525
92 // PAL(M) 909*525
93 // PAL(BDGHIN) 1135*625+4
94 // PAL(Nc) 917*625+4
95 //
96 // NTSC(M) New capture = 720*910/858
97 ///////////////////////////////////////////////////////////////////////////////
98 ///////////////////////////////////////////////////////////////////////////////
99 // 3.58: 910 NTSC-M 525 NTSC
100 // 909 PAL-M 525 PAL
101 // 917 PAL-Nc 625
102 // 4.43:
103 // 1135 PAL-BDGHIN 625
104 // 1127 NTSC-443 525
105 ///////////////////////////////////////////////////////////////////////////////
106 // Use ShibaSoku TG35CX get some info:
107 // NTSC:
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 3
108 // FH=15.735KHz ==> HP=0x2FB
109 // FV=59.94Hz ==> VT=525
110 //-------------------------------------
111 // PAL:
112 // FH=15.625KHz ==> HP=0x334
113 // FV=50 ==> VT=625
114 ////////////////////////////////////////////////////////////////////////////
115
116 WORD code tVideoSystemStdHTotal[SIG_NUMS] =
117 {
118 910, // SIG_NTSC, // M
119 1135, // SIG_PAL, // B/G, D/K, I, H, N
120 1097, // SIG_SECAM,
121 1127, // SIG_NTSC_443,
122 1127, // SIG_PAL_60,
123 909, // SIG_PAL_M,
124 917, // SIG_PAL_NC,
125 };
126 void msVDDSPWriteByte( BYTE ucAddr, BYTE ucData )
127 {
128 1 BYTE ucBk2_07 = msReadByte( BK2_07 );
129 1
130 1 msWriteByte( BK2_07, ucAddr );
131 1 msWriteByte( BK2_08, ucData );
132 1 msWriteByte( BK2_07, ucBk2_07 );
133 1 }
134
135 BYTE msVDDSPReadByte( BYTE ucAddr )
136 {
137 1 BYTE ucTmp;
138 1 BYTE ucBk2_07 = msReadByte( BK2_07 );
139 1 msWriteByte( BK2_07, ucAddr );
140 1 ucTmp = msReadByte( BK2_09 );
141 1 msWriteByte( BK2_07, ucBk2_07 );
142 1 return ucTmp;
143 1 }
144
145 WORD msVDDSPRead2Bytes( BYTE ucAddr )
146 {
147 1 return (msVDDSPReadByte(ucAddr) + (msVDDSPReadByte(ucAddr+1)<<8));
148 1 }
149
150 BYTE msVDSpecialRead( BYTE ucMux, BYTE ucAddr )
151 {
152 1 BYTE ucBank;
153 1 BYTE ucBackupBK2_04;
154 1 BYTE ucTmp;
155 1
156 1 ucBank = msReadByte( BK0_00_REGBK);
157 1 msWriteByte( BK0_00_REGBK, REG_BANK2_VD );
158 1 ucBackupBK2_04 = msReadByte( BK2_04 );
159 1 msWriteByte( BK2_04, ucMux );
160 1 ucTmp = msReadByte( ucAddr );
161 1 msWriteByte( BK2_04, ucBackupBK2_04 );
162 1 msWriteByte( BK0_00_REGBK, ucBank );
163 1 return ucTmp;
164 1 }
165
166 void msVDReset(void)
167 {
168 1 BYTE ucBank = msReadByte( BK0_00_REGBK );
169 1
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 4
170 1 putstr("\r\n[Reset VD]");
171 1 msWriteByte( BK0_00_REGBK, REG_BANK2_VD );
172 1
173 1 #if( ENABLE_PAL_SWITCH_HANDLER )
174 1 //if( g_ucmsVDCtl2&MSVD_CTL2_FLAG_PAL_SWITCH )
175 1 msVDPalSwitchHandlerReset(); // Auto detect PAL/NTSC
176 1 #endif
177 1
178 1 msWriteByteMask(BK2_21_APLL_CTRL2, 0x00, 0x06); // Auto detect PAL/NTSC
179 1
180 1 msWriteBit( BK2_14_SOFT_RST, 1, _BIT7 );
181 1 Delay1ms(1);
182 1 msWriteBit( BK2_14_SOFT_RST, 0, _BIT7 );
183 1 Delay1ms(1);
184 1
185 1
186 1 //if( g_ucmsVDCtl2&MSVD_CTL2_FLAG_AGC_PROCESSOR )
187 1 VD_AGC_Ctl( VD_AGC_CTL_ENABLE );
188 1
189 1 #if(ENABLE_VD_DSP)
190 1 //if( g_ucmsVDCtl&MSVD_CTL_FLAG_VSYNC )
191 1 {
192 2 BYTE ucVSyncCtl = VD_DSP_CTL_ENABLE;
193 2
194 2 #if(ENABLE_VSYNC_CTL_AUTO_H_TOTAL)
*** WARNING C322 IN LINE 194 OF ..\..\tv\msVD.c: unknown identifier
ucVSyncCtl |= VD_DSP_CTL_DISABLE_AUTO_H_TOTAL;
#endif
197 2
198 2 #if( TV_SYSTEM == TV_NTSC )
VD_DSP_Ctl( ucVSyncCtl, 525 ); // Enable DSP, 60Hz
#else
201 2 VD_DSP_Ctl( ucVSyncCtl, 625 ); // Enable DSP, 50Hz
202 2 #endif
203 2 }
204 1 #elif( ENABLE_SW_FILED )
msVDDSPWriteByte( DSP_0F, 0x04 );
#endif
207 1
208 1 //if( g_ucmsVDCtl&MSVD_CTL_FLAG_NOISE_HANDLER )
209 1 msVDNoiseHandlerInit();
210 1
211 1 //yurian for VD Reset DSP10 error
212 1 {
213 2 BYTE DSP10_Value=msVDDSPReadByte( 0x10 );
214 2 while(DSP10_Value!=0x85)
215 2 {
216 3 Delay1ms(2);
217 3 msVDDSPWriteByte(DSP_10, 0x85);
218 3 msVDDSPWriteByte(DSP_11, 0x00);
219 3 Delay1ms(1);
220 3 DSP10_Value=msVDDSPReadByte( 0x10 );
221 3 }
222 2 }
223 1
224 1 msWriteByte( BK0_00_REGBK, ucBank );
225 1 }
226
227 void msVD_FSM_Reset(void)
228 {
229 1 BYTE ucBank = msReadByte( BK0_00_REGBK);
230 1 putstr("\r\n[Reset FSM]");
C51 COMPILER V8.01 MSVD 11/28/2006 08:08:13 PAGE 5
231 1
232 1 #if ( ENABLE_PAL_SWITCH_HANDLER )
233 1 //if( g_ucmsVDCtl2&MSVD_CTL2_FLAG_PAL_SWITCH )
234 1 msVDPalSwitchHandlerReset(); // Auto detect PAL/NTSC
235 1 #endif
236 1 msWriteByte( BK0_00_REGBK, REG_BANK2_VD );
237 1 msWriteBit( BK2_14_SOFT_RST, 1, _BIT6 );
238 1 Delay1ms(1);
239 1 msWriteBit( BK2_14_SOFT_RST, 0, _BIT6 );
240 1 Delay1ms(1);
241 1 msWriteByte( BK0_00_REGBK, ucBank );
242 1 }
243
244 WORD msVDGetVTotal(void)
245 {
246 1 BYTE ucBank;
247 1 WORD wVTotal;
248 1
249 1 ucBank = msReadByte( BK0_00_REGBK);
250 1 msWriteByte( BK0_00_REGBK, REG_BANK2_VD );
251 1 wVTotal = msVDDSPRead2Bytes(0);
252 1 msWriteByte( BK0_00_REGBK, ucBank );
253 1 return wVTotal;
254 1 }
255 // ucFlag:
256 // [1:0]: 1 -> Always return a valid h freq
257 // 2 -> Return virtual H period
258 WORD msGetVideoHPeriod( BYTE ucFlag )
259 {
260 1 BYTE i;
261 1 WORD wInHP;
262 1 WORD wInHF;
263 1
264 1 if( (ucFlag&3) != 2 )
265 1 {
266 2 for( i = 0; i < 10; ++ i )
267 2 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -