?? mstar.lst
字號(hào):
577 1 msFieldDetectCtl();
578 1
579 1 #if SOG_ENABLE
580 1 msFieldDetectCtl();
581 1 #endif
582 1 */
583 1 msFieldDetectCtl();
584 1
585 1 if( IsVideoPortInUse())
586 1 {
587 2 #if(ENABLE_VD_DSP)
588 2 //g_ucmsVDCtl |= MSVD_CTL_FLAG_VSYNC;
589 2 #endif
590 2 msVDReset(); // When change source
591 2 }
592 1 else
593 1 {
594 2 #if(ENABLE_VD_DSP)
595 2 //g_ucmsVDCtl &= (~MSVD_CTL_FLAG_VSYNC);
596 2 VD_DSP_Ctl( _DISABLE, 525 ); // Disable DSP
597 2 #endif
598 2
599 2 //if( g_ucmsVDCtl2&MSVD_CTL2_FLAG_AGC_PROCESSOR )
600 2 VD_AGC_Ctl( 0 ); // Disable SW AGC
601 2 }
602 1
603 1 msSetUserPref();
604 1 msWriteByte( BK0_00_REGBK, REG_BANK_SCALER);
605 1 }
606 //*******************************************************************
607 // Function Name: msPowerUp
608 //
609 // Decscription: Power on chip from power down mode
610 //
611 // callee: msWriteByte() in ms_rwreg.c
612 //
C51 COMPILER V8.18 MSTAR 09/29/2009 23:58:02 PAGE 11
613 // caller: Power_PowerOnSystem() in power.c
614 //*******************************************************************
615 void msPowerUp(void)
616 {
617 1 msWriteByte(BK0_21_PLLCTRL2, 0); // power on master & output PLL
618 1 msWriteByte(BK0_E2_SWRST0, OP2R_B|ADCR_B); // reset graphic port RO register
619 1 msWriteByte(BK0_E2_SWRST0, 0);
620 1
621 1 ChipPowerUpcontrol();
622 1
623 1 Delay1ms(5);//(50);
624 1 msWriteByte(BK0_00_REGBK, REG_BANK1_ADC_ACE_MCU); // switch to Bank 1
625 1
626 1 #if PANEL_ANALOG_TCON
627 1 msWriteByte(BK1_A9_PD_VDAC, 0x00);
628 1 #else
msWriteByte(BK1_4C, 0x5F);
#endif
631 1
632 1 msWriteByte(BK0_00_REGBK, REG_BANK_SCALER); // switch to Bank 0
633 1 Delay1ms(5);//(50);
634 1 msWriteByte(BK0_F4_TRISTATE, 0);
635 1
636 1 #if ENABLE_MCU_USE_INTERNAL_CLOCK
637 1 if( g_bMcuUseNewClock == 0 )
638 1 McuUseInternalClock();
639 1 #endif
640 1 }
641
642 ///////////////////////////////////////////////////////////////////////////////
643 // <Function>: msSoftwareReset
644 //
645 // <Description>: MST chip software reset.
646 //
647 // <Parameter>: - <Flow> - <Description>
648 //-----------------------------------------------------------------------------
649 // ucParam - In - Software reset parameter
650 // ucDelayTime - In - Delay time(unit: 1ms)
651 ///////////////////////////////////////////////////////////////////////////////
652 void msSoftwareReset(BYTE wParam, BYTE ucDelayTime)
653 {
654 1 msWriteByte(BK0_E2_SWRST0, wParam);
655 1 Delay1ms(ucDelayTime);
656 1 msWriteByte(BK0_E2_SWRST0, 0x00);
657 1 }
658
659 //*******************************************************************
660 // Function Name: msPowerDown
661 //
662 // Decscription: Power down chip
663 //
664 // callee: msWriteByte() in ms_rwreg.c
665 //
666 // caller: Power_PowerOffSystem() in power.c
667 //*******************************************************************
668 void msPowerDown(void)
669 {
670 1 BYTE ucBank;
671 1 ucBank = msReadByte(BK0_00_REGBK);
672 1 msWriteByte(BK0_00_REGBK, REG_BANK_SCALER);
673 1 #if ENABLE_MCU_USE_INTERNAL_CLOCK
674 1 msWriteByte(BK0_EE_PDMD2, 0 );
C51 COMPILER V8.18 MSTAR 09/29/2009 23:58:02 PAGE 12
675 1 g_bMcuUseNewClock = 0;
676 1 #endif
677 1
678 1 msWriteByte(BK0_F4_TRISTATE, 0xFF);
679 1 msWriteByte(BK0_00_REGBK, REG_BANK1_ADC_ACE_MCU); // switch to Bank 1
680 1 msWriteByte(BK1_31, 0x7F);
681 1 msWriteByte(BK1_32, 0xFF);
682 1
683 1 msWriteByte(BK1_45, 0x01);
684 1
685 1 #if PANEL_ANALOG_TCON
686 1 msWriteByte(BK1_A9_PD_VDAC, 0x0F);
687 1 #else
msWriteByte(BK1_4C, 0x5F);
#endif
690 1
691 1 msWriteByte(BK0_00_REGBK, REG_BANK_SCALER); // switch to Bank 0
692 1 msWriteByte(BK0_E0_PDMD0, 0xB0);
693 1 msWriteByte(BK0_E1_PDMD1, 0xFF);
694 1
695 1 msWriteByte(BK0_00_REGBK, ucBank);
696 1
697 1 TH1 = TIMER1_MODE2_TH1; // set timer1(buad rate)
698 1 TR1 = 1; // timer1 run
699 1 PX1 = 1; // set INT1 priority high //Nicolee 20051231 add for low power mode ir power on set
700 1
701 1 #if(IR_FORMAT == IR_RC5)
PT2 = 1;
#endif
704 1 }
705
706 void LoadGammaTbl(void)
707 {
708 1 BYTE i;
709 1 BYTE count;
710 1
711 1 msWriteByte(BK0_91_GAMMA_ADR_PORT,0x00);
712 1 msWriteByte(BK0_90_GAMMA_EN,msReadByte(BK0_90_GAMMA_EN)|_BIT1);
713 1 for (i=0;i<3;i++)
714 1 {
715 2 for(count=0;count<33;count++)
716 2 msWriteByte(BK0_92_GAMMA_DAT_PORT,tGammaTableNormal[i][count]);
717 2 }
718 1 }
719
720 void msInitGamma(void)
721 {
722 1 msWriteByte(BK0_90_GAMMA_EN, GAMMA_EN_B);
723 1 LoadGammaTbl();
724 1 }
725
726 void SystemDelay_translate_To_Dsp_Processor(BYTE wDelaycount)
727 {
728 1 BYTE i;
729 1 for( i = 0; i < wDelaycount; i ++ )
730 1 {
731 2 Delay1ms(10);
732 2 #if( ENABLE_VD_DSP&&((DSP_RUN_MODE == DSP_RUN_MODE_POLLING)||(DSP_RUN_MODE == DSP_RUN_MODE_TIMER_AND_POLL
-ING)) )
733 2 //if( g_ucmsVDCtl & MSVD_CTL_FLAG_VSYNC )
734 2 {
735 3 VD_DSP();
C51 COMPILER V8.18 MSTAR 09/29/2009 23:58:02 PAGE 13
736 3 }
737 2 #endif
738 2 }
739 1 }
740
741
742 WORD GetStdModeHFreq( BYTE ucModeIdx )
743 {
744 1 return tStandardMode[ucModeIdx].HFreq;
745 1 }
746
747
748 WORD GetStdModeHTotal( BYTE ucModeIdx )
749 {
750 1 if (tStandardModeResolution[tStandardMode[ucModeIdx].ResIndex].DispWidth < PanelWidth)
751 1 return tStandardMode[ucModeIdx].HTotal* 2;
752 1 else
753 1 return tStandardMode[ucModeIdx].HTotal;
754 1 }
755
756
757 WORD msCalculateHFreqX10( WORD wHPeriod )
758 {
759 1 return ((((DWORD)MST_CLOCK_KHZ * 10) + (wHPeriod / 2)) / wHPeriod); // kHz
760 1 }
761
762
763 BYTE msCalculateVSyncTime(void)
764 {
765 1 WORD wHFreqX10; // horizontal frequency
766 1
767 1 wHFreqX10 = msCalculateHFreqX10( (WORD)msGetHorizontalPeriod() ); // calculate HSync frequency
768 1 return (BYTE)((( (WORD)msGetVerticalTotal() * 10 ) + (wHFreqX10 / 2)) / wHFreqX10);
769 1 }
770
771 WORD msGetHorizontalPeriod(void)
772 {
773 1 WORD wHorizontalPeriod;
774 1 BYTE ucBank;
775 1
776 1 ucBank = msReadByte( BK0_00_REGBK);
777 1 msWriteByte( BK0_00_REGBK, REG_BANK_SCALER );
778 1 wHorizontalPeriod = (msReadWord(BK0_EB_HSPRD_H) & MST_H_PERIOD_MASK);
779 1 msWriteByte( BK0_00_REGBK, ucBank );
780 1 return wHorizontalPeriod;
781 1 }
782
783 WORD msGetVerticalTotal(void)
784 {
785 1 WORD wVerticalTotal;
786 1 BYTE ucBank = msReadByte( BK0_00_REGBK);
787 1
788 1 msWriteByte( BK0_00_REGBK, REG_BANK_SCALER );
789 1 wVerticalTotal = (msReadWord(BK0_ED_VTOTAL_H) & MST_V_TOTAL_MASK);
790 1
791 1 msWriteByte( BK0_00_REGBK, ucBank );
792 1 return wVerticalTotal;
793 1 }
794
795 void GetInputSignalHV(void)
796 {
797 1 #if VGA_ENABLE
C51 COMPILER V8.18 MSTAR 09/29/2009 23:58:02 PAGE 14
798 1 if( IsVGAInUse()) // PC/YPbPr
799 1 {
800 2 g_InOutCtl.inHPeriod = g_wHorizontalPeriod;
801 2 g_InOutCtl.inVTotal = g_wVerticalTotal;
802 2 }
803 1 else // CVBS/SV/656
804 1 #endif
805 1 {
806 2 g_InOutCtl.inHPeriod = msGetVideoHPeriod(2);
807 2 g_InOutCtl.inVTotal = msVDGetVTotal();
808 2 }
809 1 g_InOutCtl.inHFreq = MST_CLOCK_HZ/g_InOutCtl.inHPeriod;
810 1 g_InOutCtl.inOutVFreq = (g_InOutCtl.inHFreq+(g_InOutCtl.inVTotal/2))/g_InOutCtl.inVTotal;
811 1
812 1 if( g_InOutCtl.bInterlace )
813 1 g_InOutCtl.inOutVFreq *= 2;
814 1
815 1 //printf("\r\n\r\ninHP=%d",g_InOutCtl.inHPeriod);
816 1 //printf("\r\ninHF=%d",g_InOutCtl.inHFreq);
817 1 //printf("\r\ninVT=%d",g_InOutCtl.inVTotal);
818 1 //printf("\r\nInOutVFreq=%d", g_InOutCtl.inOutVFreq);
819 1 }
820
821 void msSetOutputSyncControl( BYTE ucOutputTimingCtl )
822 {
823 1 BYTE ucBk0_57;
824 1
825 1 ucBk0_57 = _BIT6; // Frame lock mode 1
826 1
827 1 #if (PANEL_SYNC_MODE_1)
ucBk0_57 |= _BIT7; // Output v sync manually
#endif
830 1
831 1 #if (SCALING_FORMULA)
832 1 ucBk0_57 |= _BIT2; // Scaling range add 1
833 1 #endif
834 1
835 1 if( ucOutputTimingCtl&OUTPUT_FREERUN )
836 1 {
837 2 #if(ENABLE_CHECK_AUTO_H_TOTAL)
838 2 g_bEnableAutoHTotal = 0;
839 2 #endif
840 2 }
841 1 else
842 1 {
843 2 if( IsVGAInUse()) // PC/YPBPR
844 2 {
845 3 ucBk0_57 |= _BIT1;
846 3 ucBk0_57 |= _BIT7;
847 3 }
848 2 else
849 2 {
850 3 #if(ENABLE_CHECK_AUTO_H_TOTAL)
851 3 g_bEnableAutoHTotal = 0;
852 3 #else
ucBk0_57 |= _BIT1;
#endif
855 3 }
856 2 }
857 1
858 1 msWriteByte_Bank_BackupBank( REG_BANK_SCALER, BK0_57_OSCTRL1, ucBk0_57 );
859 1 }
C51 COMPILER V8.18 MSTAR 09/29/2009 23:58:02 PAGE 15
860
861 void SetScalingRatio( BOOL bInterlace )
862 {
863 1 BYTE ucBank; // bank buffer
864 1 DWORD dwTemp;
865 1 WORD wInputVSize;
866 1
867 1 ucBank = msReadByte(BK0_00_REGBK); // store bank
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -