system.c
上传用户:fy98168
上传日期:2015-06-26
资源大小:13771k
文件大小:19k
源码类别:

DVD

开发平台:

C/C++

  1. #include "stcommon.h"
  2. #include <system.h>
  3. #include <stddefs.h>
  4. #include "stdevice.h" 
  5. #include "section.h"
  6. #include "boot.h"
  7. #include "evt.h"
  8. #include "pio.h"
  9. #include "uart.h"
  10. #include "tbx.h"
  11. #include "i2c.h"
  12. #include "av.h"
  13. #include "stsys.h"
  14. #include "service.h"
  15. #include "sysserv.h"
  16. #include "denc.h"
  17. #define INTERCONNECT_BASE                      CFG_BASE_ADDRESS 
  18. #define INTERCONNECT_CONFIG_CONTROL_REG_C       0x00
  19. #define INTERCONNECT_CONFIG_CONTROL_REG_D       0x04
  20. #define INTERCONNECT_CONFIG_CONTROL_REG_E       0x08
  21. #define INTERCONNECT_CONFIG_CONTROL_REG_F       0x0C
  22. #define INTERCONNECT_CONFIG_CONTROL_REG_G       0x10
  23. #define INTERCONNECT_CONFIG_CONTROL_REG_H       0x14
  24. #define CONFIG_CONTROL_C (INTERCONNECT_BASE + INTERCONNECT_CONFIG_CONTROL_REG_C)
  25. #define CONFIG_CONTROL_D (INTERCONNECT_BASE + INTERCONNECT_CONFIG_CONTROL_REG_D)
  26. #define CONFIG_CONTROL_E (INTERCONNECT_BASE + INTERCONNECT_CONFIG_CONTROL_REG_E)
  27. #define CONFIG_CONTROL_F (INTERCONNECT_BASE + INTERCONNECT_CONFIG_CONTROL_REG_F)
  28. #define CONFIG_CONTROL_G (INTERCONNECT_BASE + INTERCONNECT_CONFIG_CONTROL_REG_G)
  29. #define CONFIG_CONTROL_H (INTERCONNECT_BASE + INTERCONNECT_CONFIG_CONTROL_REG_H)
  30. ST_ClockInfo_t ST_ClockInfo;
  31. #define MODE_DVB    SERVICE_MODE_DVB
  32. /* chroma luma delay */
  33. #define DEN_CFG3 (DENC_BASE_ADDRESS + 0xC)
  34. #define DEN_DACC (DENC_BASE_ADDRESS + 0x104)
  35. #define DEN_CDEL_LFC (DENC_BASE_ADDRESS + 0x144)
  36. #define DEN_LFCOEF0 (DENC_BASE_ADDRESS + 0x148)
  37. #define DEN_LFCOEF1 (DENC_BASE_ADDRESS + 0x14C)
  38. #define DEN_LFCOEF2 (DENC_BASE_ADDRESS + 0x150)
  39. #define DEN_LFCOEF3 (DENC_BASE_ADDRESS + 0x154)
  40. #define DEN_LFCOEF4 (DENC_BASE_ADDRESS + 0x158)
  41. #define DEN_LFCOEF5 (DENC_BASE_ADDRESS + 0x15C)
  42. #define DEN_LFCOEF6 (DENC_BASE_ADDRESS + 0x160)
  43. #define DEN_LFCOEF7 (DENC_BASE_ADDRESS + 0x164)
  44. #define DEN_LFCOEF8 (DENC_BASE_ADDRESS + 0x168)
  45. #define DEN_LFCOEF9 (DENC_BASE_ADDRESS + 0x16C)
  46. #if 1
  47. #define   NHD2_CONFIG_BASE           0x20400000
  48. #define   NHD3_CONFIG_BASE        0x20401000
  49. #define   CLOCK_REG_BASE          0x20300000
  50. #define   NHD2_INIT_1_PRIORITY    (NHD2_CONFIG_BASE + 0x00)
  51. #define   NHD2_INIT_2_PRIORITY    (NHD2_CONFIG_BASE + 0x04)
  52. #define   NHD2_INIT_3_PRIORITY    (NHD2_CONFIG_BASE + 0x08)
  53. #define   NHD2_INIT_4_PRIORITY    (NHD2_CONFIG_BASE + 0x0C)
  54. #define   NHD2_INIT_5_PRIORITY    (NHD2_CONFIG_BASE + 0x10)
  55. #define   NHD2_INIT_6_PRIORITY    (NHD2_CONFIG_BASE + 0x14)
  56. #define   NHD2_INIT_7_PRIORITY    (NHD2_CONFIG_BASE + 0x18)
  57. #define   NHD2_INIT_8_PRIORITY    (NHD2_CONFIG_BASE + 0x1C)
  58. #define   NHD2_INIT_1_LIMIT       (NHD2_CONFIG_BASE + 0x60)
  59. #define   NHD2_INIT_2_LIMIT       (NHD2_CONFIG_BASE + 0x64)
  60. #define   NHD2_INIT_3_LIMIT       (NHD2_CONFIG_BASE + 0x68)
  61. #define   NHD2_INIT_4_LIMIT       (NHD2_CONFIG_BASE + 0x6C)
  62. #define   NHD2_INIT_5_LIMIT       (NHD2_CONFIG_BASE + 0x70)
  63. #define   NHD2_INIT_6_LIMIT       (NHD2_CONFIG_BASE + 0x74)
  64. #define   NHD2_INIT_7_LIMIT       (NHD2_CONFIG_BASE + 0x78)
  65. #define   NHD2_INIT_8_LIMIT       (NHD2_CONFIG_BASE + 0x7C)
  66. #define   NHD2_TARG_1_PRIORITY    (NHD2_CONFIG_BASE + 0x80)
  67. #define   NHD2_TARG_2_PRIORITY    (NHD2_CONFIG_BASE + 0x84)
  68. #define   NHD3_TARG_1_PRIORITY    (NHD3_CONFIG_BASE + 0x40)
  69. #define   NHD3_TARG_2_PRIORITY    (NHD3_CONFIG_BASE + 0x44)
  70. #define   NHD3_TARG_3_PRIORITY    (NHD3_CONFIG_BASE + 0x48)
  71. #define   NHD3_TARG_4_PRIORITY    (NHD3_CONFIG_BASE + 0x4C)
  72. #define   NHD3_TARG_5_PRIORITY    (NHD3_CONFIG_BASE + 0x50)
  73. #define   NHD3_INIT_3_PRIORITY    (NHD3_CONFIG_BASE + 0x08)
  74. #define   NHD3_INIT_4_PRIORITY    (NHD3_CONFIG_BASE + 0x0C)
  75. #define   NHD3_INIT_1_LIMIT       (NHD3_CONFIG_BASE + 0x30)
  76. #define   NHD3_INIT_2_LIMIT       (NHD3_CONFIG_BASE + 0x34)
  77. #define SET_FDMA_REG(Offset, Value)   ( *((volatile U32*)(((U32)0x20D00000) + (Offset))) = ((U32)Value) )
  78. #endif
  79. #if 1
  80. int KB_SysInit(void)
  81. {
  82. ST_ErrorCode_t ST_ErrorCode;
  83.      int nReturn;
  84.      U32 DEN_CFG3Val; /*Lynn: chroma luma delay*/
  85. //write register
  86. /* System Pix clk setup0*/
  87. //Done in cfg STSYS_WriteRegDev32LE(0x20F00054, 0xEBF);
  88. /* Enable video DAC in config control reg D */
  89. STSYS_WriteRegDev32LE(CONFIG_CONTROL_D, 0x00);
  90. STSYS_WriteRegDev32LE(0x2090017C, 0x00);
  91. /* Enabling PCM pins of PIO port 2 */
  92. STSYS_WriteRegDev32LE(CONFIG_CONTROL_F, STSYS_ReadRegDev32LE(CONFIG_CONTROL_F)|0x00E00000);
  93. /* Configure TSIS for Serial mode */
  94. /* Req for configuring I2C pio in ALT1 function */
  95. STSYS_WriteRegDev32LE(CONFIG_CONTROL_H, STSYS_ReadRegDev32LE(CONFIG_CONTROL_H)|0x0C000000);
  96. STSYS_WriteRegDev32LE((void*)NHD2_INIT_1_PRIORITY, 0x7); 
  97. STSYS_WriteRegDev32LE((void*)NHD2_INIT_1_LIMIT, 0x196); 
  98. STSYS_WriteRegDev32LE((void*)NHD2_INIT_2_PRIORITY, 0x9);
  99.     STSYS_WriteRegDev32LE((void*)NHD2_INIT_2_LIMIT, 0x0);
  100.     STSYS_WriteRegDev32LE((void*)NHD2_INIT_3_PRIORITY, 0x6);
  101.     STSYS_WriteRegDev32LE((void*)NHD2_INIT_3_LIMIT, 0x3C1);
  102.     STSYS_WriteRegDev32LE((void*)NHD2_INIT_4_PRIORITY, 0x8);
  103.     STSYS_WriteRegDev32LE((void*)NHD2_INIT_4_LIMIT, 0x0);
  104. STSYS_WriteRegDev32LE((void*)NHD2_INIT_5_PRIORITY, 0x4); 
  105. STSYS_WriteRegDev32LE((void*)NHD2_INIT_5_LIMIT, 0x3C1); 
  106. STSYS_WriteRegDev32LE((void*)NHD2_INIT_6_PRIORITY, 0x3); 
  107. STSYS_WriteRegDev32LE((void*)NHD2_INIT_6_LIMIT, 0x0B1); 
  108. STSYS_WriteRegDev32LE((void*)NHD2_INIT_7_PRIORITY, 0x2); 
  109. STSYS_WriteRegDev32LE((void*)NHD2_INIT_7_LIMIT, 0x131); 
  110. STSYS_WriteRegDev32LE((void*)NHD2_INIT_8_PRIORITY, 0x5); 
  111. STSYS_WriteRegDev32LE((void*)NHD2_INIT_8_LIMIT, 0x3B1); 
  112. STSYS_WriteRegDev32LE((void*)NHD2_TARG_1_PRIORITY, 0x2); 
  113. STSYS_WriteRegDev32LE((void*)NHD2_TARG_2_PRIORITY, 0x1); 
  114. STSYS_WriteRegDev32LE((void*)NHD3_INIT_1_LIMIT, 0x224); 
  115. STSYS_WriteRegDev32LE((void*)NHD3_INIT_2_LIMIT, 0x1A3); 
  116. STSYS_WriteRegDev32LE((void*)NHD3_INIT_3_PRIORITY, 0x1); 
  117. STSYS_WriteRegDev32LE((void*)NHD3_INIT_4_PRIORITY, 0x2); 
  118. STSYS_WriteRegDev32LE((void*)NHD3_TARG_1_PRIORITY, 0x5); 
  119. STSYS_WriteRegDev32LE((void*)NHD3_TARG_2_PRIORITY, 0x1); 
  120. STSYS_WriteRegDev32LE((void*)NHD3_TARG_3_PRIORITY, 0x2); 
  121. STSYS_WriteRegDev32LE((void*)NHD3_TARG_4_PRIORITY, 0x3); 
  122. STSYS_WriteRegDev32LE((void*)NHD3_TARG_5_PRIORITY, 0x4); 
  123. //CPU_FRAME_REG : BASE + 0x0; CPU_LIMIT_REG : BASE + 0x4
  124. STSYS_WriteRegDev32LE((void*)(CLOCK_REG_BASE+0x0), 0xAF);
  125. STSYS_WriteRegDev32LE((void*)(CLOCK_REG_BASE+0x4), 0x05);  
  126. /* CFG_VIDIC */
  127. STSYS_WriteRegDev32LE((void*)(0x20500010), 0x12);
  128. /* CS's code - Julia added to remove the pop sound after power ON the TV */
  129. STSYS_WriteRegDev32LE(CONFIG_CONTROL_D, (STSYS_ReadRegDev32LE(CONFIG_CONTROL_D) | 0x0000A000));
  130. STSYS_WriteRegDev32LE(CONFIG_CONTROL_D, (STSYS_ReadRegDev32LE(CONFIG_CONTROL_D) & 0xFFFF8FFF));
  131. /*TMTM added*/
  132. SET_FDMA_REG(0x45F0, 0x258); //TMTM holdoff time=2uS; = 5uS or 0x3E8 //0x532); //0x214);
  133. //write register over
  134.      ST_ErrorCode = KB_SECTIONSetup();
  135. if(ST_ErrorCode != ST_NO_ERROR)
  136. {
  137. Print("error init sections n");
  138. return RETFIAL1;
  139. }
  140. ST_ErrorCode = KB_BOOTSetup();
  141. if(ST_ErrorCode != ST_NO_ERROR)
  142. {
  143. Print("error init KB_BOOTSetup n");
  144. return RETFIAL1;
  145. }
  146.      ST_ErrorCode = ST_GetClockInfo(&ST_ClockInfo);
  147. if(ST_ErrorCode != ST_NO_ERROR)
  148. {
  149. Print("error init ST_GetClockInfo n");
  150. return RETFIAL1;
  151. }
  152. ST_ErrorCode = KB_PIOSetup();
  153. if(ST_ErrorCode != ST_NO_ERROR)
  154. {
  155. Print("error init KB_PIOSetup n");
  156. return RETFIAL1;
  157. }    
  158.     
  159. ST_ErrorCode = KB_UartSetup();
  160. if(ST_ErrorCode != ST_NO_ERROR)
  161. {
  162. Print("error init KB_UartSetup n");
  163. return RETFIAL1;
  164. }
  165. ST_ErrorCode = KB_TbxSetup();
  166. if(ST_ErrorCode != ST_NO_ERROR)
  167. {
  168. Print("error init KB_TbxSetup n");
  169. return RETFIAL1;
  170. }
  171. ST_ErrorCode = KB_EVTSetup();
  172. if(ST_ErrorCode != ST_NO_ERROR)
  173. {
  174. Print("error init KB_EVTSetup n");
  175. return RETFIAL1;
  176. }
  177. ST_ErrorCode = KB_I2CInit(KB_I2C_RATE_100K);
  178.      if (ST_ErrorCode != ST_NO_ERROR)
  179.      {
  180. Print("error init I2C_Setup n");
  181. }
  182.      ST_ErrorCode = KB_FDMASetup();
  183.      if (ST_ErrorCode != ST_NO_ERROR)
  184. {
  185. Print("error init KB_FDMASetup n");
  186. }
  187.      ST_ErrorCode = KB_AVMEMSetup();
  188.      if (ST_ErrorCode != ST_NO_ERROR)
  189. {
  190. Print("error init KB_AVMEMSetup n");
  191. }
  192. ST_ErrorCode = KB_CLKRVSetup();
  193.      if (ST_ErrorCode != ST_NO_ERROR)
  194. {
  195. Print("error init KB_CLKRVSetup n");
  196. return RETFIAL1;
  197. }
  198.     
  199. KB_DmxInit();
  200.     
  201. ST_ErrorCode = KB_DENCSetup( SERVICE_DISPLAY_PAL ); /*STDENC_MODE_PALBDGHI*/
  202. if (ST_ErrorCode != ST_NO_ERROR)
  203. {
  204. Print("error init KB_DENCSetup n");
  205. }
  206.   
  207. ST_ErrorCode = KB_VtgSetup( SERVICE_DISPLAY_PAL ); /*STVTG_TIMING_MODE_576I50000_13500*/
  208. if (ST_ErrorCode != ST_NO_ERROR)
  209. {
  210. Print("error init KB_VtgSetup n");
  211. }
  212.      ST_ErrorCode = KB_LayerSetup();
  213.      if (ST_ErrorCode != ST_NO_ERROR)
  214. {
  215. Print("error init KB_LayerSetup n");
  216. }
  217.     
  218.      ST_ErrorCode = KB_VoutSetup();
  219.      if (ST_ErrorCode != ST_NO_ERROR)
  220. {
  221. Print("error init KB_VoutSetup n");
  222. }
  223.     
  224.      ST_ErrorCode = KB_VmixSetup();
  225.      if (ST_ErrorCode != ST_NO_ERROR)
  226. {
  227. Print("error init KB_VmixSetup n");
  228. return RETFIAL1;
  229. }
  230.      nReturn = KB_AVInit();
  231.      if (nReturn != RETOK)
  232.      {
  233.          Print("error init J_Av n");
  234.          return RETFIAL1;
  235.      }
  236.     
  237.      if (KB_SysGPOResetInit() != RETOK)
  238.      {
  239.          Print("error init KB_SysGPOResetInit n");
  240. return RETFIAL1;
  241.      }
  242. return RETOK;
  243. }
  244. #else
  245. int KB_SysInit(void)
  246. {
  247. ST_ErrorCode_t ST_ErrorCode;
  248.     int nReturn;
  249.     U32 DEN_CFG3Val; /*Lynn: chroma luma delay*/
  250. /* System Pix clk setup0*/
  251. /* Enable video DAC in config control reg D */
  252. STSYS_WriteRegDev32LE(CONFIG_CONTROL_D, 0x00);
  253. STSYS_WriteRegDev32LE(0x2090017C, 0x00);
  254. /* CFG_VIDIC */
  255. STSYS_WriteRegDev32LE((void*)(0x20500010), 0x12);
  256. /* Enabling PCM pins of PIO port 2 */
  257. STSYS_WriteRegDev32LE(CONFIG_CONTROL_F, STSYS_ReadRegDev32LE(CONFIG_CONTROL_F)|0x00F00000);
  258. /* Configure TSIS for Serial mode */
  259.   //STSYS_WriteRegDev32LE(CONFIG_CONTROL_C, STSYS_ReadRegDev32LE(CONFIG_CONTROL_C)|0x28);
  260. /* Req for configuring I2C pio in ALT1 function */
  261. STSYS_WriteRegDev32LE(CONFIG_CONTROL_H, STSYS_ReadRegDev32LE(CONFIG_CONTROL_H)|0x0C000000);
  262.     ST_ErrorCode = KB_SECTIONSetup();
  263. if(ST_ErrorCode != ST_NO_ERROR)
  264. {
  265. Print("error init sections n");
  266. return RETFIAL1;
  267. }
  268. ST_ErrorCode = KB_BOOTSetup();
  269. if(ST_ErrorCode != ST_NO_ERROR)
  270. {
  271. Print("error init KB_BOOTSetup n");
  272. return RETFIAL1;
  273. }
  274.     ST_ErrorCode = ST_GetClockInfo(&ST_ClockInfo);
  275. if(ST_ErrorCode != ST_NO_ERROR)
  276. {
  277. Print("error init ST_GetClockInfo n");
  278. return RETFIAL1;
  279. }
  280. ST_ErrorCode = KB_PIOSetup();
  281. if(ST_ErrorCode != ST_NO_ERROR)
  282. {
  283. Print("error init KB_PIOSetup n");
  284. return RETFIAL1;
  285. }    
  286.     
  287. ST_ErrorCode = KB_UartSetup();
  288. if(ST_ErrorCode != ST_NO_ERROR)
  289. {
  290. Print("error init KB_UartSetup n");
  291. return RETFIAL1;
  292. }
  293. ST_ErrorCode = KB_TbxSetup();
  294. if(ST_ErrorCode != ST_NO_ERROR)
  295. {
  296. Print("error init KB_TbxSetup n");
  297. return RETFIAL1;
  298. }
  299. ST_ErrorCode = KB_EVTSetup();
  300. if(ST_ErrorCode != ST_NO_ERROR)
  301. {
  302. Print("error init KB_EVTSetup n");
  303. return RETFIAL1;
  304. }
  305. ST_ErrorCode = KB_I2CInit(KB_I2C_RATE_100K);
  306.     if (ST_ErrorCode != ST_NO_ERROR)
  307.     {
  308. Print("error init I2C_Setup n");
  309. //return RETFIAL1;
  310. }
  311. //Print("nHere");
  312.     ST_ErrorCode = KB_FDMASetup();
  313.     if (ST_ErrorCode != ST_NO_ERROR)
  314. {
  315. Print("error init KB_FDMASetup n");
  316. //return RETFIAL1;
  317. }
  318.     ST_ErrorCode = KB_AVMEMSetup();
  319.     if (ST_ErrorCode != ST_NO_ERROR)
  320. {
  321. Print("error init KB_AVMEMSetup n");
  322. //return RETFIAL1;
  323. }
  324. ST_ErrorCode = KB_CLKRVSetup();
  325.     if (ST_ErrorCode != ST_NO_ERROR)
  326. {
  327. Print("error init KB_CLKRVSetup n");
  328. return RETFIAL1;
  329. }
  330.     
  331.     #if 0
  332.     ST_ErrorCode = PTI_Setup( SERVICE_MODE_DVB );
  333.     if (ST_ErrorCode != ST_NO_ERROR)
  334. {
  335. Print("error init PTI_Setup n");
  336. //return RETFIAL1;
  337. }
  338.     #endif
  339.     
  340. KB_DmxInit();
  341.     
  342. ST_ErrorCode = KB_DENCSetup( SERVICE_DISPLAY_PAL ); /*STDENC_MODE_PALBDGHI*/
  343. if (ST_ErrorCode != ST_NO_ERROR)
  344. {
  345. Print("error init KB_DENCSetup n");
  346. //return RETFIAL1;
  347. }
  348.   
  349. ST_ErrorCode = KB_VtgSetup( SERVICE_DISPLAY_PAL ); /*STVTG_TIMING_MODE_576I50000_13500*/
  350. if (ST_ErrorCode != ST_NO_ERROR)
  351. {
  352. Print("error init KB_VtgSetup n");
  353. //return RETFIAL1;
  354. }
  355.     ST_ErrorCode = KB_LayerSetup();
  356.     if (ST_ErrorCode != ST_NO_ERROR)
  357. {
  358. Print("error init KB_LayerSetup n");
  359. //return RETFIAL1;
  360. }
  361.     #if 0
  362.     {
  363.         int nReturn;
  364.         
  365.         nReturn = KB_OSDInit();
  366.         Print("KB_OSDInit = %dn", nReturn);
  367.     }
  368.     #endif
  369.     
  370.     ST_ErrorCode = KB_VoutSetup();
  371.     if (ST_ErrorCode != ST_NO_ERROR)
  372. {
  373. Print("error init KB_VoutSetup n");
  374. //return RETFIAL1;
  375. }
  376. #if 0
  377.       ST_ErrorCode = OSD_Setup();
  378.       if (ST_ErrorCode != ST_NO_ERROR)
  379. {
  380. Print("error init OSD_Setup n");
  381. //return RETFIAL1;
  382. }
  383.   #endif    
  384.     
  385.     ST_ErrorCode = KB_VmixSetup();
  386.     if (ST_ErrorCode != ST_NO_ERROR)
  387. {
  388. Print("error init KB_VmixSetup n");
  389. return RETFIAL1;
  390. }
  391.     nReturn = KB_AVInit();
  392.     if (nReturn != RETOK)
  393.     {
  394.         Print("error init J_Av n");
  395.         return RETFIAL1;
  396.     }
  397.     
  398.     #if 0
  399.     ST_ErrorCode = KB_VbiSetup();
  400.     if (ST_ErrorCode != ST_NO_ERROR) 
  401.     {
  402.         Print("error init KB_VbiSetup n");
  403. return RETFIAL1;
  404.     }       
  405.     #endif       
  406.     if (KB_SysGPOResetInit() != RETOK)
  407.     {
  408.         Print("error init KB_SysGPOResetInit n");
  409. return RETFIAL1;
  410.     }
  411.     STTBX_Print(("n==============================================n"));
  412.     STTBX_Print((" OS20/ST-Lite: %sn", kernel_version()              ));
  413.     STTBX_Print(("    Processor: %sn", device_name(device_id())      ));
  414.     #if defined(UNIFIED_MEMORY)
  415.         STTBX_Print(("      Unified: Yesn"                               ));
  416.     #else
  417.         STTBX_Print(("      Unified: Non"                               ));
  418.     #endif
  419.     STTBX_Print(("    CPU Speed: %dn", ST_GetClockSpeed() ));
  420.     STTBX_Print(("    STPTI support: "));
  421.     #if defined(STPTI_DVB_SUPPORT)
  422.         STTBX_Print(("DVB "));
  423.     #endif
  424.     #if defined(STPTI_DTV_SUPPORT)
  425.         STTBX_Print(("DirecTV "));
  426.     #endif
  427.     #if !defined(STPTI_DTV_SUPPORT) &&  !defined(STPTI_DVB_SUPPORT)
  428.         STTBX_Print(("none "));
  429.     #endif
  430.     STTBX_Print(("n      Service: "));
  431.     #if defined(SERVICE_DVB)
  432.         STTBX_Print(("DVB "));
  433.     #endif
  434.     #if defined(SERVICE_DIRECTV)
  435.         STTBX_Print(("DirecTV "));
  436.     #endif
  437.     #if !defined(SERVICE_DVB) &&  !defined(SERVICE_DIRECTV)
  438.         STTBX_Print(("none "));
  439.     #endif
  440.     STTBX_Print(("n   Build Date: %s at %sn", __DATE__, __TIME__      ));
  441.     STTBX_Print(("==============================================nn"));
  442.     STTBX_Print(("==============================================nn"));
  443. /* Chroma delay */
  444. {
  445. UINT32 tmpValue;
  446. tmpValue = STSYS_ReadRegDev32LE((void*)DEN_CDEL_LFC);
  447. tmpValue = (tmpValue & 0x0F) | 0x50;
  448.      STSYS_WriteRegDev32LE((void*)DEN_CDEL_LFC, tmpValue);
  449.      STSYS_WriteRegDev32LE((void*)DEN_CFG3, 0x08 | STSYS_ReadRegDev32LE((void*)0x2090000c));
  450. }
  451. return RETOK;
  452. /* added by dts 2006-3-27, for adjust amplitude-frequency characteristic 
  453. ** 1. set WA_BLITTER_LUMA_CHROMA_DELAY = FALSE
  454. ** 2. Add the following code in correct position, otherwise the denc driver
  455. **    will reset the params to default.
  456. */
  457. #if 1
  458. /* DENC_CDFL_LFC */
  459. STSYS_WriteRegDev32LE((void*)0x20900144, 0x25);
  460. /* DENC_DAC6 */
  461.     STSYS_WriteRegDev32LE((void*)0x209001ac, 0x27);
  462. /* DENC_DACC */
  463.     STSYS_WriteRegDev32LE((void*)0x20900104, 0x61);
  464. /* DENC_LCOEF0 -- DENC_LCOEF9 */
  465.     STSYS_WriteRegDev32LE((void*)0x20900148, 0x23);
  466.     STSYS_WriteRegDev32LE((void*)0x2090014c, 0x81);
  467.     STSYS_WriteRegDev32LE((void*)0x20900150, 0xf7);
  468.     STSYS_WriteRegDev32LE((void*)0x20900154, 0xfe);
  469.     STSYS_WriteRegDev32LE((void*)0x20900158, 0x1e);
  470.     STSYS_WriteRegDev32LE((void*)0x2090015c, 0x05);
  471.     STSYS_WriteRegDev32LE((void*)0x20900160, 0xa3);
  472.     STSYS_WriteRegDev32LE((void*)0x20900164, 0xf9);
  473.     STSYS_WriteRegDev32LE((void*)0x20900168, 0x19);
  474.     STSYS_WriteRegDev32LE((void*)0x2090016c, 0x0e);
  475. #else
  476. #if 0
  477. DEN_CFG3Val = STSYS_ReadRegDev32LE((void*)DEN_CFG3);
  478. DEN_CFG3Val |= 0x08;
  479. STSYS_WriteRegDev32LE((void*)(DEN_CFG3), DEN_CFG3Val);
  480. STSYS_WriteRegDev32LE((void*)(DEN_CDEL_LFC), 0x32);  /*Test for Chroma_luma delay*/
  481. DEN_CFG3Val = STSYS_ReadRegDev32LE((void*)DEN_CDEL_LFC);
  482. #else
  483. /******leslie chua**********
  484. DEN_CFG3Val = STSYS_ReadRegDev32LE((void*)DEN_CDEL_LFC);
  485. DEN_CFG3Val |= 0x01;
  486. STSYS_WriteRegDev32LE((void*)(DEN_CDEL_LFC), DEN_CFG3Val);
  487. ********************************/
  488. #if 0 /**********FIR2C********/
  489. DEN_CFG3Val = STSYS_ReadRegDev32LE((void*)DEN_CDEL_LFC);
  490. STSYS_WriteRegDev32LE((void*)(DEN_CDEL_LFC), 0x35); /*Test for Chroma_luma delay*/
  491. DEN_CFG3Val = STSYS_ReadRegDev32LE((void*)DEN_CDEL_LFC);
  492. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF0), 0x23);  /*Test for Chroma_luma delay*/
  493. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF1), 0x81);  /*Test for Chroma_luma delay*/
  494. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF2), 0xF7);  /*Test for Chroma_luma delay*/
  495. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF3), 0xFE);  /*Test for Chroma_luma delay*/
  496. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF4), 0x1E);  /*Test for Chroma_luma delay*/
  497. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF5), 0x05);  /*Test for Chroma_luma delay*/
  498. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF6), 0xA4);  /*Test for Chroma_luma delay*/
  499. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF7), 0xF9);  /*Test for Chroma_luma delay*/
  500. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF8), 0x44);  /*Test for Chroma_luma delay*/
  501. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF9), 0x06);  /*Test for Chroma_luma delay*/
  502. #else  /*******FIR2E   leslie*********/
  503. DEN_CFG3Val = STSYS_ReadRegDev32LE((void*)DEN_CDEL_LFC);
  504. STSYS_WriteRegDev32LE((void*)(DEN_CDEL_LFC), 0x35); /*Test for Chroma_luma delay*/
  505. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF0), 0x3D);  /*Test for Chroma_luma delay*/
  506. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF1), 0xBC);  /*Test for Chroma_luma delay*/
  507. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF2), 0xF9);  /*Test for Chroma_luma delay*/
  508. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF3), 0xFF);  /*Test for Chroma_luma delay*/
  509. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF4), 0x23);  /*Test for Chroma_luma delay*/
  510. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF5), 0x05);  /*Test for Chroma_luma delay*/
  511. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF6), 0xA0);  /*Test for Chroma_luma delay*/
  512. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF7), 0xF1);  /*Test for Chroma_luma delay*/
  513. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF8), 0x47);  /*Test for Chroma_luma delay*/
  514. STSYS_WriteRegDev32LE((void*)(DEN_LFCOEF9), 0x1E);  /*Test for Chroma_luma delay*/
  515. STSYS_WriteRegDev32LE((void*)(DEN_DACC),  0x51);  /*Test for Chroma_luma delay*/
  516. #endif
  517. #endif
  518. #endif
  519.     
  520.     /* Chroma delay */
  521.     //STSYS_WriteRegDev32LE((void*)0x20900144, 0x52);
  522.     //STSYS_WriteRegDev32LE((void*)0x2090000c, 0x08 | STSYS_ReadRegDev32LE((void*)0x2090000c));
  523.     
  524. return RETOK;
  525. }
  526. #endif
  527. /* EOF */