Exemplo n.º 1
0
//int LoadFile(char *name, Uint8 *location, Uint32 size);
//00200000H
//--------------------------------------------------------------------------------------------------------------------------------------
void InitCD()
{
	Uint32 lib_work[GFS_WORK_SIZE(MAX_OPEN) / sizeof(Uint32)];
	GfsDirTbl dirtbl; 

#ifndef ACTION_REPLAY

#ifdef DEBUG_DRV2
//CdUnlock();
	cd_auth();
#endif

//	Sint32 ret;
 
	CDC_CdInit(0x00,0x00,0x05,0x0f);
//	CDC_CdInit(0x01,0x01,0x05,0x0f);
    GFS_DIRTBL_TYPE(&dirtbl) = GFS_DIR_NAME;
    GFS_DIRTBL_DIRNAME(&dirtbl) = dir_name;
    GFS_DIRTBL_NDIR(&dirtbl) = MAX_DIR;
    GFS_Init(MAX_OPEN, lib_work, &dirtbl);
#endif	    
}
Exemplo n.º 2
0
GERR SystemInit( void )
{
    GERR  ferr  = GD_OK;
    GBOOL flag  = GFALSE;
    U32   count = 0;
    U32   index = 0;

    #if SYSTEM_INIT_GH_ARC == 1
    #endif

    #if SYSTEM_INIT_GH_ATA == 1
    #endif

    #if SYSTEM_INIT_GH_AD == 1
    #endif

    #if SYSTEM_INIT_GH_AUD == 1
    #endif

    #if SYSTEM_INIT_GH_BM == 1
    #endif

    #if SYSTEM_INIT_GH_BM1 == 1
    #endif

    #if SYSTEM_INIT_GH_BM2 == 1
    #endif

    #if SYSTEM_INIT_GH_BM3 == 1
    #endif

    #if SYSTEM_INIT_GH_CLKPWR == 1
    #endif

    #if SYSTEM_INIT_GH_DC == 1
    #endif

    #if SYSTEM_INIT_GH_DC2 == 1
    #endif

    #if SYSTEM_INIT_GH_FP == 1
    #endif

    #if SYSTEM_INIT_GH_GPIO == 1
    #endif

    #if SYSTEM_INIT_GH_I2C == 1
    #endif

    #if SYSTEM_INIT_GH_ICC == 1
    #endif

    #if SYSTEM_INIT_GH_IRR == 1
    #endif

    #if SYSTEM_INIT_GH_IRT == 1
    #endif

    #if SYSTEM_INIT_GH_MVS == 1
    #endif

    #if SYSTEM_INIT_GH_MVS2 == 1
    #endif

    #if SYSTEM_INIT_GH_DMA == 1
    #endif

    #if SYSTEM_INIT_GH_SDRAM == 1
    #endif

    #if SYSTEM_INIT_GH_TSD == 1
    #endif

    #if SYSTEM_INIT_GH_TSD1 == 1
    #endif

    #if SYSTEM_INIT_GH_TSD2 == 1
    #endif

    #if SYSTEM_INIT_GH_TSD3 == 1
    #endif

    #if SYSTEM_INIT_GH_UART == 1
    #endif
    
    #if SYSTEM_INIT_GH_UART1 == 1
    #endif

    #if SYSTEM_INIT_GH_USB == 1
    #endif

    #if SYSTEM_INIT_GH_UPI == 1
    #endif

    #if SYSTEM_INIT_GH_VE == 1
    #endif

    #if SYSTEM_INIT_GH_VD == 1
    #endif

    #if SYSTEM_INIT_GH_VD2 == 1
    #endif

    #if SYSTEM_INIT_GH_VDSW == 1
    #endif    

    #if SYSTEM_INIT_GD_POWER == 1
    #endif

    #if SYSTEM_INIT_GD_INT == 1
    system_fdIntParams.resetFct         = SYSTEM_INT_PARAM_RESET_FUNCTION;
    system_fdIntParams.memExceptionFct  = SYSTEM_INT_PARAM_MEM_EXCEPTION_FUNCTION;
    system_fdIntParams.instructErrorFct = SYSTEM_INT_PARAM_INST_EXCEPTION_FUNCTION;
    #endif

    #if SYSTEM_INIT_GD_GPIO == 1
        system_fdGpioParams.irqPriority        = SYSTEM_GPIO_PARAM_IRQ_PRIORITY;
        #if defined(SMARTMPEG_C) || defined(SMARTMPEG_M) || defined(SMARTMPEG_D) || defined(GK6105S) || defined(GK6106)
        system_fdGpioParams.xrefTable          = system_fdGpioXrefTable;
        #endif
    #endif

    #if SYSTEM_INIT_GD_TIMER == 1
        system_fdTimerParams.softTimerReg      = SYSTEM_TIMER_PARAM_SOFT_TIMER_REG;
        system_fdTimerParams.softTimerpriority = SYSTEM_TIMER_PARAM_SOFT_TIMER_PRIORITY;
        system_fdTimerParams.hardTimerReg      = SYSTEM_TIMER_PARAM_HARD_TIMER_REG;
        system_fdTimerParams.hardTimerpriority = SYSTEM_TIMER_PARAM_HARD_TIMER_PRIORITY;   
    #endif

    #if SYSTEM_INIT_GD_I2C == 1
        system_fdI2cParams.priority               = SYSTEM_I2C_PARAM_PRIORITY;
        system_fdI2cParams.mode                   = SYSTEM_I2C_PARAM_MODE;
        system_fdI2cParams.gpioSclPinCh2          = -1; 
        system_fdI2cParams.gpioSdaPinCh2          = -1;
        system_fdI2cParams.mutexWaitFunc          = SYSTEM_I2C_PARAM_MUTEX_WAIT_FUNCTION;
        system_fdI2cParams.mutexReleaseFunc       = SYSTEM_I2C_PARAM_MUTEX_RELEASE_FUNCTION;
        #if defined(SMARTMPEG_C) || defined(SMARTMPEG_M) || defined(SMARTMPEG_D) || defined(GK6105S) || defined(GK6106)
            count = sizeof(system_fdGpioXrefTable)/sizeof(system_fdGpioXrefTable[0]);
            for( index=0; index < count; index++ )
            {
                if( system_fdGpioXrefTable[index].type == GD_GPIO_TYPE_INOUT_I2C_CLK )
                    system_fdI2cParams.gpioSclPinCh1 = system_fdGpioXrefTable[index].pin;
                if( system_fdGpioXrefTable[index].type == GD_GPIO_TYPE_INOUT_I2C_DATA )
                    system_fdI2cParams.gpioSdaPinCh1 = system_fdGpioXrefTable[index].pin;
            }
        #endif
    #endif
    
    #if SYSTEM_INIT_GD_ICC == 1
        system_fdIccParams.iccIndex      = 0; 
        system_fdIccParams.haveTDA8004T  = GTRUE;
        system_fdIccParams.atrBuffer     = atrBuf;
        system_fdIccParams.atrSize       = 256;
        system_fdIccParams.histBuffer    = histBuf;
        system_fdIccParams.histSize      = 256;
    #endif
    
    #if SYSTEM_INIT_GD_UART == 1
        system_fdSerialParams.dataRate     = SYSTEM_SERIAL_PARAM_DATA_RATE;
        system_fdSerialParams.numDataBits  = SYSTEM_SERIAL_PARAM_NUM_DATA_BITS;
        system_fdSerialParams.numStopBits  = SYSTEM_SERIAL_PARAM_NUM_STOP_BITS;
        system_fdSerialParams.protocol     = SYSTEM_SERIAL_PARAM_PROTOCOL;
        system_fdSerialParams.parity       = SYSTEM_SERIAL_PARAM_PARITY;
        system_fdUartParams.defaultParamsP = &system_fdSerialParams;
        system_fdUartParams.irqPriority    = SYSTEM_UART_PARAM_IRQ_PRIORITY;
        system_fdUartParams.notifyFunction = SYSTEM_UART_PARAM_NOTIFY_FUNCTION;
    #endif

    #if SYSTEM_INIT_GD_UART1 == 1
        system_fdSerial1Params.dataRate     = SYSTEM_SERIAL1_PARAM_DATA_RATE;
        system_fdSerial1Params.numDataBits  = SYSTEM_SERIAL1_PARAM_NUM_DATA_BITS;
        system_fdSerial1Params.numStopBits  = SYSTEM_SERIAL1_PARAM_NUM_STOP_BITS;
        system_fdSerial1Params.protocol     = SYSTEM_SERIAL1_PARAM_PROTOCOL;
        system_fdSerial1Params.parity       = SYSTEM_SERIAL1_PARAM_PARITY;
        system_fdUart1Params.defaultParamsP = &system_fdSerial1Params;
        system_fdUart1Params.irqPriority    = SYSTEM_UART1_PARAM_IRQ_PRIORITY;
        system_fdUart1Params.notifyFunction = SYSTEM_UART1_PARAM_NOTIFY_FUNCTION;
        system_fdUart1Params.interruptEnable = GFALSE;
    #endif

    #if SYSTEM_INIT_GD_FE == 1
    #endif

    #if SYSTEM_INIT_GD_TSD == 1
        system_fdTsdParams.tsInputTsd1        = SYSTEM_TSD_PARAM_TS_INPUTTSD1;
        system_fdTsdParams.tsInputTsd2        = SYSTEM_TSD_PARAM_TS_INPUTTSD2;
        #if defined(GK6106)
        system_fdTsdParams.tsInputTsd3        = SYSTEM_TSD_PARAM_TS_INPUTTSD3;
        system_fdTsdParams.tsInputTsd4        = SYSTEM_TSD_PARAM_TS_INPUTTSD4;
        #endif
        #ifdef AV_SEPRATE_FLAG
        system_fdTsdParams.hwCtrlBuf[0]       = SYSTEM_TSD_PARAM_HW_CTRL_VID;   //GD_TSD_VIDEO_PES
        system_fdTsdParams.hwCtrlBuf[1]       = SYSTEM_TSD_PARAM_HW_CTRL_AUD;   //GD_TSD_AUDIO_PES
        system_fdTsdParams.hwCtrlBuf[2]       = SYSTEM_TSD_PARAM_HW_CTRL_SPD;   //GD_TSD_SPDIF_PES
        system_fdTsdParams.hwCtrlBuf[3]       = SYSTEM_TSD_PARAM_HW_CTRL_TXT;   //GD_TSD_TXT_PES
        system_fdTsdParams.hwCtrlBuf[4]       = SYSTEM_TSD_PARAM_HW_CTRL_SUB;   //GD_TSD_SUBTITLE_PES
        system_fdTsdParams.hwCtrlBuf[5]       = SYSTEM_TSD_PARAM_HW_CTRL_DUB;   //GD_TSD_DVBSUBTITLE_PES
        system_fdTsdParams.hwCtrlBuf[6]       = SYSTEM_TSD_PARAM_HW_CTRL_PCR;   //GD_TSD_PCR_PES
        #else
        system_fdTsdParams.hwCtrlBuf          = SYSTEM_TSD_PARAM_HW_CTRL_BUF;
        #endif
        system_fdTsdParams.bmGlobalAdrOffset  = SYSTEM_TSD_PARAM_BM_GLOBAL_ADROFFSET;
        system_fdTsdParams.pcrBufAddr         = SYSTEM_TSD_PARAM_PCR_BUF_ADDR;
        system_fdTsdParams.pcrBufSize         = SYSTEM_TSD_PARAM_PCR_BUF_SIZE;
        if(SYSTEM_TSD_PARAM_INPUT_CONF == NULL)
        {
            system_fdTsdParams.inputConf          = (GD_TSD_INPUT_MODE_S*)SYSTEM_TSD_PARAM_INPUT_CONF;
        }
        else
        {
            system_fdTsdInputMode.tsd1ModeFlags   = SYSTEM_TSD_PARAM_INPUT_CONF_TSD1_MODE;
            system_fdTsdInputMode.tsd2ModeFlags   = SYSTEM_TSD_PARAM_INPUT_CONF_TSD2_MODE;
            system_fdTsdParams.inputConf          = &system_fdTsdInputMode;
        }
    #endif

    #if SYSTEM_INIT_GD_AUD == 1
        system_fdAudParams.abvAddr            = SYSTEM_AUD_PARAM_ABV_ADDR;
        system_fdAudParams.abvSize            = SYSTEM_AUD_PARAM_ABV_SIZE;
    #endif

    #if SYSTEM_INIT_GD_AO == 1
        system_fdAoParams.clkToFsRatio    = SYSTEM_AO_PARAM_CLK_TO_FS_RATIO;
        system_fdAoParams.aoutBitClock    = SYSTEM_AO_PARAM_AOUT_BIT_CLOCK;
        system_fdAoParams.amcBitClock     = SYSTEM_AO_PARAM_AMC_BIT_CLOCK;
        system_fdAoParams.format          = SYSTEM_AO_PARAM_FORMAT;
        system_fdAoParams.precision       = SYSTEM_AO_PARAM_PRECISION;
        system_fdAoParams.invertWordClock = SYSTEM_AO_PARAM_INVERT_WORD_CLOCK;
        system_fdAoParams.enableSpdif     = SYSTEM_AO_PARAM_ENABLE_SPDIF;
        system_fdAoParams.spdifAddr       = SYSTEM_AO_PARAM_SPDIF_ADDR;
        system_fdAoParams.spdifSize       = SYSTEM_AO_PARAM_SPDIF_SIZE;
        #if defined(SMARTMPEG_C) || defined(SMARTMPEG_M) || defined(SMARTMPEG_D) || defined(GK6105S) || defined(GK6106)
            count = sizeof(system_fdGpioXrefTable)/sizeof(system_fdGpioXrefTable[0]);
            for( index=0; index < count; index++ )
            {
                if( system_fdGpioXrefTable[index].type == GD_GPIO_TYPE_OUTPUT_SPDIF_OUT )
                    system_fdAoParams.gpioSpdifPin = system_fdGpioXrefTable[index].pin;
            }
        #endif
    #endif

    #if SYSTEM_INIT_GD_VID == 1
        system_fdVidParams.use25FrameArchitecture = SYSTEM_VID_PARAM_USE_25_FRAMES;
        system_fdVidParams.vbvAddr                = SYSTEM_VID_PARAM_VBV_ADDR;
        system_fdVidParams.vbvSize                = SYSTEM_VID_PARAM_VBV_SIZE;
    #endif

    #if SYSTEM_INIT_GD_VO == 1
        system_fdVoParams.aspect                  = SYSTEM_VO_PARAM_ASPECT;
        system_fdVoParams.window                  = SYSTEM_VO_PARAM_WINDOW;
    #endif

    #if SYSTEM_INIT_GD_VENC == 1
        system_fdVencParams.DACConfiguration      = SYSTEM_VENC_PARAM_DAC_CONFIGURATION;        
        system_fdVencParams.ColorSystem           = SYSTEM_VENC_PARAM_COLOR_SYSTEM;             
        system_fdVencParams.InsertOSD             = SYSTEM_VENC_PARAM_INSERT_OSD;               
        system_fdVencParams.SynOnRGB              = SYSTEM_VENC_PARAM_SYN_ON_RGB;               
        system_fdVencParams.enableWSS             = SYSTEM_VENC_PARAM_ENABLE_WSS;               
        system_fdVencParams.invertClk27           = SYSTEM_VENC_PARAM_INVERT_CLK27;             
        system_fdVencParams.backgroundCol         = SYSTEM_VENC_PARAM_BACKGROUND_COL;           
    #endif
    
    
    #if SYSTEM_INIT_GD_DESC == 1
        system_fdDescSetPidNotification           = SYSTEM_DESC_PARAM_PID_NOTIFICATION;
    #endif

    #if SYSTEM_INIT_GD_IR == 1
        system_fdIrParams.notifyFunction          = SYSTEM_IR_PARAM_NOTIFY_FUNCTION;            
    #endif
    
    #if SYSTEM_INIT_GD_TTX == 1
        system_fdTtxParams.bufAddr                = SYSTEM_TTX_PARAM_BUF_ADDR;                  
        system_fdTtxParams.bufSize                = SYSTEM_TTX_PARAM_BUF_SIZE;                  
    #endif

    #if SYSTEM_INIT_GD_OSD == 1
        system_fdOsdParams.solidColor             = SYSTEM_OSD_PARAM_SOLID_COLOR;               
    #endif

    #if SYSTEM_INIT_GD_PIP == 1
        system_fdPipParams.vbvAddr                = SYSTEM_PIP_PARAM_VBV_ADDR;
        system_fdPipParams.vbvSize                = SYSTEM_PIP_PARAM_VBV_SIZE;
        system_fdPipParams.useHwTsd               = SYSTEM_PIP_PARAM_USE_HW_TSD;
        system_fdPipParams.srcTsd                 = SYSTEM_PIP_PARAM_SRC_TSD;
        system_fdPipParams.srcChannel             = SYSTEM_PIP_PARAM_SRC_CHANNEL;
        system_fdPipParams.srcTypeIsTs            = SYSTEM_PIP_PARAM_SRC_TYPE_IS_TS;
    #endif
    #if SYSTEM_INIT_GD_FLASH == 1
        system_fdFlashParams.startAddress         = SYSTEM_FLASH_PARAM_START_ADDR;           
        system_fdFlashParams.flashCheckFct        = SYSTEM_FLASH_PARAM_CHECK_FUNCTION;
    #endif

    #if SYSTEM_INIT_GD_SFLASH == 1
  
    #endif
    
    #if SYSTEM_INIT_GD_EMM == 1
        system_fdEmmParams.TsdbufferAddr          = SYSTEM_EMM_TSD_BUFFBASE;
#ifdef GK6106
        system_fdEmmParams.TsdbufferSize          = SYSTEM_EMM_BUFFSIZE;
#else
        system_fdEmmParams.TsdbufferSize          = SYSTEM_EMM_BUFFSIZE;
#endif
        system_fdEmmParams.tsdInput               = SYSTEM_DVBSI_PARAM_TSD_INPUT;
        system_fdEmmParams.EmmBufferAddr          = SYSTEM_EMM_BUFFBASE;
#ifdef GK6106
        system_fdEmmParams.EmmBufferSize          = SYSTEM_EMM_BUFFSIZE;
#else
        system_fdEmmParams.EmmBufferSize          = SYSTEM_EMM_BUFFSIZE;
#endif
        system_fdEmmParams.ReservedBufferAddr     = SYSTEM_EMM_RESERVED;
        system_fdEmmParams.ReservedBufferSize     = SYSTEM_EMM_RESERVEDSIZE;
    #endif

    #if SYSTEM_INIT_GM_DEBUG == 1
    FlgDebWasInit = 1;
        system_fmDebugParams.dispDevice           = SYSTEM_DEBUG_PARAM_DISP_DEVICE; 
        #if defined(SMARTMPEG_C) || defined(SMARTMPEG_M) || defined(SMARTMPEG_D) || defined(GK6105S) || defined(GK6106)
            count = sizeof(system_fdGpioXrefTable)/sizeof(system_fdGpioXrefTable[0]);
            for( index=0; index < count; index++ )
            {
                if( system_fdGpioXrefTable[index].type == GD_GPIO_TYPE_INPUT_UART1_RX )
                    system_fmDebugParams.gpioRxPin = system_fdGpioXrefTable[index].pin;
                if( system_fdGpioXrefTable[index].type == GD_GPIO_TYPE_OUTPUT_UART1_TX )
                    system_fmDebugParams.gpioTxPin = system_fdGpioXrefTable[index].pin;
            }
        #endif
    #endif
    
    #if SYSTEM_INIT_GM_RCU == 1
        system_fmRcuParams.mode                   = GM_RCU_POLLING_MODE_WITH_IRQ;
        #if defined(SMARTMPEG_C) || defined(SMARTMPEG_M) || defined(SMARTMPEG_D) || defined(GK6105S) || defined(GK6106)
            count = sizeof(system_fdGpioXrefTable)/sizeof(system_fdGpioXrefTable[0]);
            for( index=0; index < count; index++ )
            {
                if( system_fdGpioXrefTable[index].type == GD_GPIO_TYPE_INPUT_IR_DATA )
                    system_fmRcuParams.irGpioPin = system_fdGpioXrefTable[index].pin;
            }
        #endif
    #endif
    
    #if SYSTEM_INIT_GM_PSI == 1
        system_fmPsiParams.tsdInput               = SYSTEM_PSI_PARAM_TSD_INPUT;
        system_fmPsiParams.patAddr                = SYSTEM_PSI_PARAM_PAT_ADDR;
        system_fmPsiParams.patSize                = SYSTEM_PSI_PARAM_PAT_SIZE;
        system_fmPsiParams.pmtAddr                = SYSTEM_PSI_PARAM_PMT_ADDR;
        system_fmPsiParams.pmtSize                = SYSTEM_PSI_PARAM_PMT_SIZE;
        system_fmPsiParams.catAddr                = SYSTEM_PSI_PARAM_CAT_ADDR;
        system_fmPsiParams.catSize                = SYSTEM_PSI_PARAM_CAT_SIZE;
        system_fmPsiParams.psiNotifyFct           = SYSTEM_PSI_PARAM_PSI_NOTIFY_FUNCTION; 
    #endif

    #if SYSTEM_INIT_GM_DVBSI == 1
        system_fmDvbsiParams.tsdInput             = SYSTEM_DVBSI_PARAM_TSD_INPUT;
        system_fmDvbsiParams.batAddr              = SYSTEM_DVBSI_PARAM_BAT_ADDR;
        system_fmDvbsiParams.batSize              = SYSTEM_DVBSI_PARAM_BAT_SIZE;
        system_fmDvbsiParams.eitAddr              = SYSTEM_DVBSI_PARAM_EIT_ADDR;
        system_fmDvbsiParams.eitSize              = SYSTEM_DVBSI_PARAM_EIT_SIZE;
        system_fmDvbsiParams.nitAddr              = SYSTEM_DVBSI_PARAM_NIT_ADDR;
        system_fmDvbsiParams.nitSize              = SYSTEM_DVBSI_PARAM_NIT_SIZE;
        system_fmDvbsiParams.sdtAddr              = SYSTEM_DVBSI_PARAM_SDT_ADDR;
        system_fmDvbsiParams.sdtSize              = SYSTEM_DVBSI_PARAM_SDT_SIZE;
        system_fmDvbsiParams.tdtAddr              = SYSTEM_DVBSI_PARAM_TDT_ADDR;
        system_fmDvbsiParams.tdtSize              = SYSTEM_DVBSI_PARAM_TDT_SIZE;
        system_fmDvbsiParams.totAddr              = SYSTEM_DVBSI_PARAM_TOT_ADDR;
        system_fmDvbsiParams.totSize              = SYSTEM_DVBSI_PARAM_TOT_SIZE;
        system_fmDvbsiParams.siNotifyFct          = SYSTEM_DVBSI_PARAM_SI_NOTIFY_FUNCTION;
    #endif

    GD_INT_DisableAllInterrupts();

    #if SYSTEM_INIT_GH_ARC == 1
        //GH_ARC_init();   //remove this, avoid noise when startup
    #endif

    #if SYSTEM_INIT_GH_AD == 1
        GH_AD_init();
    #endif

    #if SYSTEM_INIT_GH_AUD == 1
        GH_AUD_init();
    #endif

    #if SYSTEM_INIT_GH_BM == 1
        GH_BM_init();
    #endif

    #if SYSTEM_INIT_GH_BM1 == 1
        GH_BM1_init();
    #endif

    #if SYSTEM_INIT_GH_BM2 == 1
        GH_BM2_init();
    #endif

#ifdef GK6106
    #if SYSTEM_INIT_GH_BM3 == 1
        GH_BM3_init();
    #endif

    #if SYSTEM_INIT_GH_BM4 == 1
        GH_BM4_init();
    #endif
#endif

    #if SYSTEM_INIT_GH_CLKPWR == 1
        GH_CLKPWR_init();
    #endif

    #if SYSTEM_INIT_GH_DC == 1
        GH_DC_init();
    #endif

    #if SYSTEM_INIT_GH_DC2 == 1
        GH_DC2_init();
    #endif

    #if SYSTEM_INIT_GH_FP == 1
        GH_FP_init();
    #endif

    #if SYSTEM_INIT_GH_GPIO == 1
        GH_GPIO_init();
    #endif

    #if SYSTEM_INIT_GH_I2C == 1
        GH_I2C_init();
    #endif
    
    #if SYSTEM_INIT_GH_ICAM == 1
        GH_ICAM_init();
    #endif

    #if SYSTEM_INIT_GH_ICC == 1
        GH_ICC_init();
    #endif

    #if SYSTEM_INIT_GH_IRR == 1
        GH_IRR_init();
    #endif

    #if SYSTEM_INIT_GH_IRT == 1
        GH_IRT_init();
    #endif

    #if SYSTEM_INIT_GH_MVS == 1
        GH_MVS_init();
    #endif

    #if SYSTEM_INIT_GH_MVS2 == 1
        GH_MVS2_init();
    #endif

    #if SYSTEM_INIT_GH_DMA == 1
        GH_DMA_init();
    #endif

    #if SYSTEM_INIT_GH_ATA == 1
        GH_ATA_init();
    #endif

    #if SYSTEM_INIT_GH_USB == 1
        GH_USB_init();
    #endif

    #if SYSTEM_INIT_GH_SDRAM == 1
        GH_SDRAM_init();
        #if defined(SMARTMPEG)
            if( SYSTEM_MEM_PARAM_MEMORY_MODE == SDRAM_16_BIT_GPIO )
            {
                GH_INIT_SDRAMRegisters(SYSTEM_FLASH_PARAM_START_ADDR, SYSTEM_MEM_PARAM_DISABLE_BOOT_ROM, GTRUE );
            }
            else
            { 
                GH_INIT_SDRAMRegisters(SYSTEM_FLASH_PARAM_START_ADDR, SYSTEM_MEM_PARAM_DISABLE_BOOT_ROM, GFALSE );
            }
        #endif
        
        #if defined(SMARTMPEG_E)
            if( SYSTEM_MEM_PARAM_DISABLE_BOOT_ROM == GTRUE )
            {
                GH_SDRAM_set_Config0_BOOT_ROM_ENABLE(0);
            }
            if( ( GH_SDRAM_get_Config0_DATA_MODE() & 1 ) == 0 )
            {
                if( SYSTEM_MEM_PARAM_MEMORY_MODE == SDRAM_16_BIT_GPIO )
                {
                    GH_SDRAM_set_Config0_DATA_MODE(4);
                }
                else if( SYSTEM_MEM_PARAM_MEMORY_MODE == SDRAM_16_BIT_UPI )
                {
                    GH_SDRAM_set_Config0_DATA_MODE(2);
                }
            }
        #endif
    #endif

    #if SYSTEM_INIT_GH_TSD == 1
        GH_TSD_init();
    #endif

    #if SYSTEM_INIT_GH_TSD1 == 1
        GH_TSD1_init();
    #endif

    #if SYSTEM_INIT_GH_TSD2 == 1
        GH_TSD2_init();
    #endif

#ifdef GK6106
    #if SYSTEM_INIT_GH_TSD3 == 1
        GH_TSD3_init();
    #endif

    #if SYSTEM_INIT_GH_TSD4 == 1
        GH_TSD4_init();
    #endif
#endif

    #if SYSTEM_INIT_GH_UART == 1
        GH_UART_init();
    #endif
    
    #if SYSTEM_INIT_GH_UART1 == 1
        GH_UART1_init();
    #endif
    
    #if SYSTEM_INIT_GH_UPI == 1
        GH_UPI_init();
        GH_UPI_set_Mode( 2, 2 );
        GH_UPI_set_TALS( 2, 0 );
        GH_UPI_set_TALH( 2, 0 );
        GH_UPI_set_TRS( 2, 8 );
        GH_UPI_set_TRDS( 2, 36 );
        GH_UPI_set_TRDH( 2, 0 );
        GH_UPI_set_TRR( 2, 27 );
        GH_UPI_set_TWS( 2, 8 );
        GH_UPI_set_TWP( 2, 37 );
        GH_UPI_set_TWR( 2, 27 );
        GH_UPI_set_WaitMask( 2, 1 );
        GH_UPI_set_WaitTime( 100 );
        GH_UPI_set_BufferEnable( 2, 1 );
        GH_UPI_set_WaitTimerEnable( 1 );
    #endif

    #if SYSTEM_INIT_GH_VE == 1
        GH_VE_init();
    #endif

    #if SYSTEM_INIT_GH_VD == 1
        GH_VD_init();
    #endif

    #if SYSTEM_INIT_GH_VD2 == 1
        GH_VD2_init();
    #endif

    #if SYSTEM_INIT_GH_VDSW == 1
        //GH_VDSW_init();
    #endif   

    #if SYSTEM_INIT_GH_VOF == 1
        //GH_VOF_init();
    #endif

    #if SYSTEM_INIT_GD_POWER == 1
        GD_POWER_Init();
    #endif

    #if SYSTEM_INIT_GD_INT == 1
        ferr = GD_INT_Init( &system_fdIntParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_GPIO == 1
        ferr = GD_GPIO_Init( &system_fdGpioParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_TIMER == 1
        ferr = GD_TIMER_Init( &system_fdTimerParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_I2C == 1
        ferr = GD_I2C_Init( &system_fdI2cParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_ICC == 1
        ferr = GD_ICC_Init(& system_fdIccParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_DMA == 1
        ferr = GD_DMA_Init();
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_UART == 1
        ferr = GD_UART_Init( &system_fdUartParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif
    
    #if SYSTEM_INIT_GD_UART1 == 1
        ferr = GD_UART1_Init( &system_fdUart1Params );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_TSD == 1
        ferr = GD_TSD_Init( &system_fdTsdParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_AUD == 1
        ferr = GD_AUD_Init( &system_fdAudParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif
    
    #if SYSTEM_INIT_GD_AO == 1
        ferr = GD_AO_Init( &system_fdAoParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if defined(TARGET_GOKE_FPGA)
    //    AC97_Initialize();
    #endif

    #if SYSTEM_INIT_GD_VID == 1
        ferr = GD_VID_Init( &system_fdVidParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_VO == 1
        ferr = GD_VO_Init(& system_fdVoParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_VENC == 1
        ferr = GD_VENC_Init( &system_fdVencParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_DESC == 1
        ferr = GD_DESC_Init( system_fdDescSetPidNotification );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_IR == 1
        ferr = GD_IR_Init( &system_fdIrParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_TTX == 1
        ferr = GD_TTX_Init( &system_fdTtxParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_OSD == 1
        ferr = GD_OSD_Init( &system_fdOsdParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_PIP == 1
        ferr = GD_PIP_Init( &system_fdPipParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_UPI == 1
        GD_UPI_Init();
    #endif

    #if SYSTEM_INIT_GD_UPI == 1 && SYSTEM_INIT_GD_UPI_FLASH == 1
        ferr = GD_UPI_Open( SYSTEM_UPI_PARAM_FLASH_CHANNEL, &system_fdUpiFlashHandle );
        if( ferr != GD_OK )
            return( ferr );
        ferr = GD_UPI_SetPredefined( system_fdUpiFlashHandle, SYSTEM_UPI_PARAM_FLASH_PREDEFINED );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_UPI == 1 && SYSTEM_INIT_GD_UPI_HDISK == 1
        ferr = GD_UPI_Open( SYSTEM_UPI_PARAM_HDISK_CHANNEL, &system_fdUpiHdiskHandle );
        if( ferr != GD_OK )
            return( ferr );    
        ferr = GD_UPI_SetPredefined( system_fdUpiHdiskHandle, SYSTEM_UPI_PARAM_HDISK_PREDEFINED );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_FLASH == 1
        ferr = GD_FL_Init( &system_fdFlashParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GD_SFLASH == 1
        ferr = GD_SFLASH_Init(4);
        if( ferr != GD_OK )
            return( ferr );
    #endif
    
    #if SYSTEM_INIT_GD_EMM == 1
       ferr = GD_EMM_Init(&system_fdEmmParams);
        if(ferr != GD_OK)
            return( ferr );
    #endif

    GD_INT_EnableAllInterrupts();               // NOTE: Some GHW (e.g. using I2C) mighht need already ISR support

    // Note: intalling the "GHW-driver" must happen after some FD-lib drivers have already been installed
    // e.g. like GD_GPIO, or GD_UPI_Init since these drivers might need to be used by the GHW-driviver
    #if SYSTEM_INIT_GD_GHW == 1                 // NOTE: it's very unlikely that no GHW-driver is used (maybe no 'TARGET_xxx') defined !!!
        ferr = GD_GHW_Init(0);          // just for 'fun'
        if ( ferr != GD_OK ) return( ferr );
        #if defined(SMARTMPEG_M)
        ferr = INIT_SPEC_HW_DRIVER_2GHW(0);     // NOTE: this function will call "GD_GHW_Init(XXX)" again and register some HW-Info
        #endif
        if( ferr != GD_OK ) return( ferr );
    #endif

    // Note: drivers which utilize "GHW-functions" must be initialized after the above GHW-driver registration/initialization
    // e.g. FrontEnd-drivers
    #if SYSTEM_INIT_GD_FE == 1
        ferr = GD_FE_Init();
        if( ferr != GD_OK )
            return( ferr );
    #endif

    //====================================================================
    //==  now Init FM-Lib/GFS drivers
    //====================================================================

    #if SYSTEM_INIT_GM_RCU == 1
        ferr = GM_RCU_Init( &system_fmRcuParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GM_RCU == 1 && SYSTEM_INIT_GM_RCU_OLD == 1
        count = sizeof(system_fmRcuTableOld)/sizeof(system_fmRcuTableOld[0]);
        GM_RCU_SetKeyCodeMappingTable( SYSTEM_RCU_ID_OLD, count, system_fmRcuTableOld );
    #endif

    #if SYSTEM_INIT_GM_RCU == 1 && SYSTEM_INIT_GM_RCU_NEW == 1
        count = sizeof(system_fmRcuTableNew)/sizeof(system_fmRcuTableNew[0]);
        GM_RCU_SetKeyCodeMappingTable( SYSTEM_RCU_ID_NEW, count, system_fmRcuTableNew );
    #endif

    #if SYSTEM_INIT_GM_RCU == 1 && SYSTEM_INIT_GM_RCU_RC5 == 1
        count = sizeof(system_fmRcuTableRc5)/sizeof(system_fmRcuTableRc5[0]);
        GM_RCU_SetKeyCodeMappingTable( SYSTEM_RCU_ID_RC5, count, system_fmRcuTableRc5 );
    #endif

    #if SYSTEM_INIT_GM_DEBUG == 1
        ferr = GM_DEBUG_Init( &system_fmDebugParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GM_PSI == 1
        ferr = GM_PSI_Init( &system_fmPsiParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GM_DVBSI == 1
        ferr = GM_DVBSI_Init( &system_fmDvbsiParams );
        if( ferr != GD_OK )
            return( ferr );
    #endif

    #if SYSTEM_INIT_GFS == 1
        flag = GFS_Init( system_gfsRootInitTable );
        if( !flag )
            return( GD_ERR_FEATURE_NOT_SUPPORTED );
    #endif

    #if SYSTEM_INIT_GFS == 1 && SYSTEM_INIT_GFS_OSD == 1
        flag = GFS_Init( system_gfsOsdInitTable );       
        if( !flag )
            return( GD_ERR_FEATURE_NOT_SUPPORTED );
    #endif

    #if SYSTEM_INIT_GFS == 1 && SYSTEM_INIT_GFS_TTY == 1
        flag = GFS_Init( system_gfsTtyInitTable );           
        if( !flag )
            return( GD_ERR_FEATURE_NOT_SUPPORTED );
    #endif

    #if SYSTEM_INIT_GFS == 1 && SYSTEM_INIT_GFS_FLASH == 1
        flag = GFS_Init( system_gfsFlashInitTable );
        if( !flag )
            return( GD_ERR_FEATURE_NOT_SUPPORTED );
    #endif

    #if SYSTEM_INIT_GFS == 1 && SYSTEM_INIT_GFS_SFLASH == 1
        flag = GFS_Init( system_gfsSFlashInitTable );
        if( !flag )
            return( GD_ERR_FEATURE_NOT_SUPPORTED );
    #endif

    #if SYSTEM_INIT_GFS == 1 && SYSTEM_INIT_GFS_HDISK == 1
        flag = GFS_Init( system_gfsHarddiskInitTable );
        if( !flag )
            return( GD_ERR_FEATURE_NOT_SUPPORTED );
    #endif

    #if SYSTEM_INIT_GFS == 1 && SYSTEM_INIT_GFS_CDROM == 1
        flag = GFS_Init( system_gfsCdromInitTable );
        if( !flag )
            return( GD_ERR_FEATURE_NOT_SUPPORTED );
    #endif

    #if SYSTEM_INIT_GM_EEPROM == 1
        ferr = GM_EEPROM_Init();
        if( ferr != GD_OK )
            return( ferr );
    #endif  

    return( ferr );
}