Src_Ctrl.c
上传用户:xmyjxjd
上传日期:2013-05-04
资源大小:1517k
文件大小:5k
开发平台:

C/C++

  1. #define __SOURCECTRL__
  2. #include "HeaderLcd_main.h"
  3. #include "HeaderLcd_func.h"
  4. #include "HeaderMode_Detect.h"
  5. #include "HeaderInitial.h"
  6. #include "HeaderSrc_Ctrl.h"
  7. #include "HeaderAccess.h"
  8. bit Source_Control(void)
  9. {
  10.             if ((stGUD1.INPUT_SOURCE & 0x07) != ucInputSrc)
  11.             {
  12.                 stGUD1.INPUT_SOURCE = (stGUD1.INPUT_SOURCE & 0xf8) | (ucInputSrc & 0x07);
  13.                 Save_GUD1();
  14.                 
  15.                 ucModeCnt   = MODE_DETECT_FREQ;     // Reset Input Mode Detector
  16.                 Reset_Mode();
  17.                 Init_Input_Source();
  18.                 Measure_Mode();
  19.                 
  20.                 Set_Task(STATE_SOURCECHANGE);       // Notify Task State Machine
  21.                 bNotify_Timer0_Int  = 0;
  22.                 //continue;   // leave current iteration.
  23. return _TRUE;
  24.             }
  25. return _FALSE;
  26. }
  27. void Change_Source(unsigned char source)
  28. {
  29.     if (SOURCE_MAX < source)    return;
  30.     if (SOURCE_VGA == source)
  31.     {
  32.         ucInputSrc  = SOURCE_VGA;
  33.     }
  34.  else if (SOURCE_DVI == source)
  35.     {
  36. #if (TMDS_ENABLE) 
  37.         ucInputSrc  = SOURCE_DVI;
  38. #else
  39.         ucInputSrc  = SOURCE_VGA;
  40. #endif
  41.     }
  42.     else if (SOURCE_AV == source || SOURCE_SV == source)
  43.     {
  44. #if (VIDEO_CHIP != VDC_NONE)
  45.         ucInputSrc  = source;   // SOURCE_AV or SOURCE_SV      
  46. #else
  47.         ucInputSrc  = SOURCE_VGA;
  48. #endif
  49.     }
  50.     else if (SOURCE_YUV == source)
  51.     {
  52. #if (VIDEO_CHIP == VDC_SAA7118)
  53.         ucInputSrc  = source;   // SOURCE_YUV
  54. #else
  55.         ucInputSrc  = SOURCE_VGA;
  56. #endif
  57.     }
  58.     else
  59.     {
  60. #if (TV_CHIP != TV_NONE)
  61.         ucInputSrc = source;    // SOURCE_TV
  62. #else
  63.         ucInputSrc = SOURCE_VGA;
  64. #endif
  65.     }
  66. }
  67. #if(SOURCE_AUTO_SCAN)
  68. void Source_Auto_Scan(void)
  69. {
  70.              Data[0] = stGUD1.INPUT_SOURCE & 0x07; 
  71.              if((Data[0] == MASTER_SOURCE) || (Data[0] == SLAVE_SOURCE) || (Data[0] == THIRD_SOURCE)) 
  72.      bSourceScanEnable = !bSourceScanEnable;
  73. if(!bSourceScanEnable)
  74.                      Mode_Detector();
  75. if(bStable && bSourceScanEnable)
  76.                 {
  77.     
  78. Measure_Source(ucNext_Source);
  79. if((ucNext_Source == SOURCE_VGA) || (ucNext_Source == SOURCE_DVI))
  80. {
  81. RTDRead(SYNC_POR_4C, 0x09, Y_INC);
  82.                         
  83. if(Data[0] & 0x02)
  84.                         {
  85.                            RTDSetByte(SYNC_POR_4C,0x20);
  86.                            Data[2] = 0x80;
  87.                            Data[4] = 0x80;
  88.                         }
  89. if(((Data[4] & 0x80) != 0x80) && ((Data[2] & 0x80) != 0x80))
  90. {
  91. Data[5] = Data[3];
  92. Data[4] = Data[4] & 0x87;
  93. Data[3] = Data[1];
  94. Data[2] = Data[2] & 0x8f;
  95. if( (((unsigned int*)Data)[1] < 1024)  && (((unsigned int*)Data)[1] > 260) &&
  96. (((unsigned int*)Data)[2] < 1260)  && (((unsigned int*)Data)[2] > 430))
  97. {
  98. if(ucSource_Times < VGA_SEARCH_TIMES)
  99. ucSource_Times += 1;
  100. else
  101. {
  102. ucInputSrc = ucNext_Source;
  103. ucNext_Source = MASTER_SOURCE; 
  104. ucSource_Times = 0;
  105. }
  106. }
  107. else
  108. {
  109. ucSource_Times = 0;
  110.                                  ucNext_Source = (ucNext_Source == MASTER_SOURCE) ? SLAVE_SOURCE : 
  111. (ucNext_Source == SLAVE_SOURCE ) ? THIRD_SOURCE : MASTER_SOURCE;
  112.                                                                          
  113. }
  114. }
  115. else
  116. {
  117. ucSource_Times = 0;
  118.             ucNext_Source = (ucNext_Source == MASTER_SOURCE) ? SLAVE_SOURCE : 
  119. (ucNext_Source == SLAVE_SOURCE ) ? THIRD_SOURCE : MASTER_SOURCE;
  120. }
  121. }//end of if((ucNext_Source == SOURCE_VGA) || (ucNext_Source == SOURCE_DVI))
  122. else
  123. {
  124. I2CRead(ADDR_VIDEO, 0x1f, 0x01);
  125. if (0 == (Data[0] & 0x40))
  126. {
  127. if(ucSource_Times < VGA_SEARCH_TIMES)
  128. ucSource_Times += 1;
  129. else
  130. {
  131. ucInputSrc = ucNext_Source;
  132. ucNext_Source = MASTER_SOURCE; 
  133. ucSource_Times = 0;
  134. }
  135. }
  136. else
  137. {
  138. ucSource_Times = 0;
  139.                           
  140.                              ucNext_Source = (ucNext_Source == MASTER_SOURCE) ? SLAVE_SOURCE : 
  141. (ucNext_Source == SLAVE_SOURCE ) ? THIRD_SOURCE : MASTER_SOURCE;
  142. }
  143. }
  144. RTDSetByte(SYNC_CTRL_4A,0x00);
  145. //RTDSetByte(SYNC_POR_4C, (stGUD1.INPUT_SOURCE & 0x07) == SOURCE_VGA ? 0x32 : 0x02);
  146. if(((stGUD1.INPUT_SOURCE & 0x07) == SOURCE_VGA) && (SYNC_SS != ucSync_Type))
  147.                        RTDSetByte(SYNC_POR_4C,0x32);
  148.                     else
  149.                        RTDSetByte(SYNC_POR_4C,0x02);
  150.                     
  151. }//end of if(bStable)
  152. }
  153. #endif