main.c
上传用户:super_houu
上传日期:2008-09-21
资源大小:4099k
文件大小:9k
源码类别:

DVD

开发平台:

Others

  1. /* **************************************************************************************
  2.  *  Copyright (c) 2002 ZORAN Corporation, All Rights Reserved
  3.  *  THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF ZORAN CORPORATION
  4.  *
  5.  *  File: $Workfile: main.c $             
  6.  *
  7.  * Description:
  8.  * ============
  9.  * program main
  10.  * 
  11.  * Log:
  12.  * ====
  13.  * $Revision: 30 $
  14.  * Last Modified by $Author: Johnk $ at $Modtime: 3/25/04 10:17p $ 
  15.  ****************************************************************************************
  16.  * Updates:
  17.  ****************************************************************************************
  18.  * $Log: /I76/I76_Common/I76_Reference/Main/main.c $
  19.  * 
  20.  * 31 Jan.13,2005 15:25p JerryLin
  21.  *     Added I86_CHIP and I86_ADP_APOOGE_WDT specific 
  22.  *
  23.  * 30    3/25/04 11:33p Johnk
  24.  * merged the latest code for S1
  25.  * 
  26.  * 29    3/22/04 8:20p Rond
  27.  * added debug option for cache
  28.  * 
  29.  * 28    3/01/04 6:27p Lotan
  30.  * merge with Divx certification DB
  31.  * 
  32.  * 27    2/27/04 5:19p Johnk
  33.  * Merged  the latest S1 changes
  34.  * 
  35.  * 26    2/20/04 6:07p Glenl
  36.  * Removed customer specific include path
  37.  * 
  38.  * 25    2/03/04 3:45p Einavz
  39.  * add support for checking main stack size
  40.  * 
  41.  * 24    1/15/04 14:19 Hamadk
  42.  * Added I77 power up
  43.  * 
  44.  * 23    1/13/04 12:11 Hamadk
  45.  * Merged with CES DB
  46.  * 
  47.  * 22    11/15/03 7:08p Leslie
  48.  * Replace old  Video API Low Level Files with new ones
  49.  * 
  50.  * 20    6/29/03 3:14p Rinata
  51.  * replace "fp_set_display_type(VFD_FUTABA_STD);" with
  52.  * "fp_set_display_type(Model_Macro.VFDType);" in order to be able to use
  53.  * different front panel options.
  54.  * 
  55.  * 19    03-05-29 18:17 Jerryc
  56.  * support flash card
  57.  * 
  58.  * 18    5/15/03 4:41p Rinata
  59.  * Select VFD acording to player configuration
  60.  * 
  61.  * 17    4/03/03 9:06p Hamadk
  62.  * Added support for power off default state 
  63.  * 
  64.  * 16    2/27/03 9:50a Tomasp
  65.  * 
  66.  * 15    2/26/03 9:46p Tomasp
  67.  * Synchronization with ZCH database
  68.  * 
  69.  * 15    03-02-24 14:27 Hannahh
  70.  * Replace printf to debug
  71.  * 
  72.  * 14    2/17/03 6:39p Rinata
  73.  * add dac ak4356
  74.  * 
  75.  * 13    2/10/03 6:45p Rinata
  76.  * add front panel test 
  77.  * 
  78.  * 12    2/02/03 11:43a Tomasp
  79.  * In aux mode do not run drive task.
  80.  * 
  81.  * 11    1/23/03 4:27a Rinata
  82.  * Change Dacs API name and add more Dacs support
  83.  * 
  84.  * 10    1/07/03 4:46a Yarone
  85.  * Added STEP B code
  86.  * 
  87.  * 9     11/07/02 15:40 Yarone
  88.  * change of version size
  89.  * 
  90.  * 11    23/04/02 9:28 Nirm
  91.  * - Added dependency in "Config.h".
  92.  * 
  93.  * 10    2/18/02 14:58 Rinata
  94.  * prepare low level directory
  95.  * 
  96.  * 9     2/17/02 15:59 Rinata
  97.  * remove code and files under not define I49_STEPA0
  98.  * 
  99.  * 8     1/31/02 4:19a Tomasp
  100.  * Code cleanup
  101.  * 
  102.  * 7     19/01/02 13:02 Atai
  103.  * Change error debug printing
  104.  * 
  105.  * 6     1/15/02 2:33p Tomasp
  106.  *  - added include <embedded.h> file for enable(), original function from
  107.  * rtos.c was renamed
  108.  * 
  109.  * 5     10/01/02 18:37 Nirm
  110.  * Corrected Include-Paths;
  111.  * Moved Debug code under #ifdef _DEBUG.
  112.  * 
  113.  * 4     2/01/02 20:16 Nirm
  114.  * Corrected paths of included header-files.
  115.  * 
  116.  * 3     12/26/01 16:52 Rinata
  117.  * 
  118.  * 2     25/12/01 12:45 Atai
  119.  * Code cleaning
  120.  **************************************************************************************** */
  121. #include "Config.h" // Global Configuration - do not remove!
  122. #include <embedded.h>
  123. #include "IncludeSysDefs.h"
  124. #include "CPUV186tserio.h"
  125. #include "Kerneleventdef.h"
  126. #include "Kernelker_api.h"
  127. #include "KerneluITRONrtos.h"
  128. #include "MainMain.h"
  129. #include "PlaycoreTimingtiming.h"
  130. #include "Version.h"
  131. #ifdef I86_ADP_APOOGE_WDT
  132. #include "Decoderdecoder.h"
  133. #endif
  134. #ifdef _DEBUG
  135. #include "Debugdbgmain.h"
  136. #endif //_DEBUG
  137. #include "Decoderlow_levelDEC_LL_EnCoderAPI.h"
  138. #include "DriveDrv_API.h"
  139. #include "Customerdevicedacaudio_dac.h"
  140. #include "CustomerLib_SetupLib_Setup.h"
  141. #include "PlaycoreCoremainCoreNVG.h"
  142. #ifdef SUPPORT_FLASH_CARD
  143. #include "DriveFE_Manager.h"
  144. #endif
  145. #ifdef I77_COMPANION_CHIP
  146. #include "HDMIMonitorDetection.h"
  147. #ifdef EXINO2     //ZKR JK0320 : add 
  148. #include "i77_io_hal.h"
  149. #else
  150. #include "Customer/Mercury_Reference/i77_io_hal.h"
  151. #endif
  152. #endif
  153. #ifdef AVI_DRM_SUPPORT
  154. extern void aviDrmGetHardwareKey(void);
  155. #endif
  156. extern int unsigned long gen_timer ( void );
  157. #ifdef I86_CHIP
  158. extern void I86_HAL_Init(void);
  159. #else
  160. extern void HAL_Init(void);
  161. #endif
  162. extern InitInterruptVectorTable (void);
  163. #if AUX_IN_ENABLE
  164. extern UINT8 g_bIsAuxModeOn;
  165. #endif
  166. #ifdef CHECK_STACK_SIZE
  167. extern UINT16 iMainStackSegment;
  168. #endif //CHECK_STACK_SIZE
  169. #ifdef _DEBUG
  170. typedef struct
  171. {
  172. UINT16 wAddress;
  173.    UINT16 wData;
  174. } CBUS_PARAMETER;
  175. extern CONST CBUS_PARAMETER CBus_Start_Param[];
  176. #endif
  177. #ifdef FP_TESTING_ON_POWER_UP
  178. void enable_fp_test(void);
  179. #endif
  180. //Function to set the fp display from fp_lut.c- Onur
  181. void fp_set_display_type(BYTE fpdType);
  182. void main(void)
  183. {
  184. _disable();
  185. #ifdef _DEBUG
  186. // Download CBUS table in debug mode.
  187.    // In release mode the table is downloaded by bootrom code
  188.    {
  189.    CONST CBUS_PARAMETER *wParam = CBus_Start_Param;
  190.    while (wParam->wAddress != 0xFFFF)
  191.    {
  192.     #ifdef PDROM_EXTERNAL_SRAM
  193. if(0x0a2c == wParam->wAddress)
  194. //outport (wParam->wAddress,0x802F);
  195. outport (wParam->wAddress,0x800F);
  196. // 0x0a2c is XMI config register, we have to add byte access and uncache control
  197. // so modify cbus table value 0x0020 to 0x802F
  198. // hansj
  199. else
  200.      ;// outport (wParam->wAddress,wParam->wData);
  201.   wParam++;
  202. #else
  203.     outport (wParam->wAddress,wParam->wData);
  204.       wParam++;
  205. #endif
  206.    }
  207.    }
  208. #ifdef PDROM_EXTERNAL_SRAM
  209. //sram cs0 hansj 09/01/05
  210.  outport(0x0a04,0x0); //XMIT00 reg
  211.      outport(0x0a06,0x2); //XMITr10 reg
  212.  outport(0x0a08,0x1); //XMITw10 reg
  213.  outport(0x0a0a,0x1); //XMIT20 reg
  214.  outport(0x0a0c,0x1); //XMIT30 reg
  215. #if 1 //flash cs1,hansj 01/18, if there is problem with different flash chip type, change 1->0
  216.  outport(0x0a0e,0x0); //XMIT01 reg
  217.      outport(0x0a10,0x5); //XMITr01 reg
  218. // outport(0x0a12,0x2);
  219.  outport(0x0a14,0x1); //XMIT21
  220.  outport(0x0a16,0x1); //XMIT31
  221. #endif  
  222.  
  223. #endif //PDROM_EXTERNAL_SRAM
  224. #endif
  225. #ifdef DEBUG_CACHE_ISSUES
  226.    outport(MPCS,0x90b8);
  227. #endif   
  228. InitInterruptVectorTable ();
  229. #ifdef I86_CHIP
  230. I86_HAL_Init();
  231. #else
  232. HAL_Init();
  233. #endif
  234. #ifdef I77_COMPANION_CHIP
  235. I77_PowerDown(FALSE); /* Power up I77 */
  236. I77_HALInit();
  237. #endif
  238. #ifdef _DEBUG
  239. init_serio();
  240. #if defined(_RT_TRACE) || defined(OUTPORT_TRACE_ON)
  241. RT_TraceInit();
  242. #endif
  243. #ifdef TM_TRACE
  244. TM_TraceInit();
  245. #endif
  246. #ifdef BG_PRINT
  247.     InitBGPrint();
  248. #endif
  249. #else
  250. #ifdef D_RELEASE_TRACE_ENABLED // ZKR GL051004 : Enabled trace in release version.
  251. init_serio();
  252. #endif // D_RELEASE_TRACE_ENABLED
  253. #endif
  254. tr_printf(("n********************************************n")); 
  255. tr_printf(("***          Welcome to Mercury          ***n")); 
  256. tr_printf(("*** CPU Software version %s ***n",g_pszVersionString)); 
  257. tr_printf(("***     SERVO Software version %s     ***n",drv_get_version())); 
  258. tr_printf(("********************************************nn")); 
  259. #ifdef AVI_DRM_SUPPORT
  260. aviDrmGetHardwareKey();
  261. #endif
  262. #ifdef I86_ADP_APOOGE_WDT
  263. WDT_CheckResetSrc();
  264. #endif //I86_ADP_APOOGE_WDT
  265. #ifdef CHECK_STACK_SIZE
  266. asm {
  267. mov [iMainStackSegment],ss
  268.    }   
  269. #endif //CHECK_STACK_SIZE 
  270.   
  271. #ifdef I64_STEP_B_CPU_DSP_ROM_CONTROL
  272. #ifdef _DEBUG
  273. {
  274. UINT16 temp;
  275. temp=inport(0xa02);
  276. tr_printf(("before CPU_DSP_ROM_CONTROL : %04xn",temp));
  277. }
  278. #endif
  279. outport(0xa02,0);
  280. #ifdef _DEBUG
  281. {
  282. UINT16 temp;
  283. temp=inport(0xa02);
  284. tr_printf(("after CPU_DSP_ROM_CONTROL : %04xn",temp));
  285. }
  286. #endif
  287. #endif
  288. #ifdef SUPPORT_MULTI_DACS
  289.     switch( HW_Macro.eDacType)
  290. {
  291. case CS4392:
  292. AudioDac_SetType( AUDIO_DAC_CS4392 );
  293. break;
  294. case AK4382A:
  295. AudioDac_SetType( AUDIO_DAC_AK4382 );
  296. break;
  297. case AK4356:
  298. AudioDac_SetType( AUDIO_DAC_AK4356 );
  299. break;
  300. case PCM1606:
  301.       default:
  302.        AudioDac_SetType( AUDIO_DAC_PCM1606 );
  303. break;
  304. }               
  305. #endif
  306. #ifdef UPDATE_CD_WITH_PLAYER_SETTING
  307. //Select front panel display 
  308. fp_set_display_type(Model_Macro.VFDType); //This will be changed with actual setting variable.
  309. #endif
  310. #ifdef FP_TESTING_ON_POWER_UP
  311. if( g_power_state == POWER_SEQUENCE_IN_ON_STATE )
  312. {
  313. // First time after connecting player to electricity
  314. enable_fp_test();
  315. }
  316. #endif
  317. kernel_init();
  318. #ifdef AUX_IN_ENABLE
  319.    // do not run drive task in aux mode
  320.    if (g_bIsAuxModeOn)
  321. {
  322.    while (1) 
  323.    {
  324.    usleep(100000L);
  325.    }
  326. }
  327. #endif
  328. ir_init(); //add by wl102804
  329. #ifdef DEFAULT_POWER_OFF_STATE
  330. if ( g_power_state != POWER_SEQUENCE_ON_REQUESTED && 
  331.  g_power_state != POWER_SEQUENCE_ON_EJECT )
  332. {
  333. DriveDriver_power_off_proc();
  334. }
  335. else
  336. #endif
  337. {
  338. #if defined(SUPPORT_FLASH_CARD)||defined(MACESTROLINK_SUPPORT)
  339.     FEM_Task_Proc();
  340. #else
  341. #ifdef D_QSI_LOADER
  342. usleep(200000L);
  343. #endif
  344. DriveDriver_proc();
  345. #endif
  346. }
  347. }
  348. #ifdef _DEBUG_VERILOG
  349. void verilog_print(char *str)
  350. {
  351. while(1)
  352.    {
  353.       outport(0xffff, *(str++) );
  354.       if( *str == 'n' )
  355.       {
  356.          outport(0xffff, *str);
  357.          return;
  358.       }
  359.    }
  360. }
  361. #endif