⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syslib.c

📁 WINDRIVER 8260 ATM BSP
💻 C
📖 第 1 页 / 共 3 页
字号:
** This routine sets the IMMR to a specific value** RETURNS: N/A*/void vxImmrSet     (    UINT32 value    )    {    immrAddress = value;    return;    }/************************************************************************* vxImmrGet - return the current IMMR value** This routine returns the current IMMR value** RETURNS: current IMMR value**/UINT32  vxImmrGet     (    void    )    {    return (immrAddress);    }/************************************************************************* sysBaudClkFreq - returns the frequency of the BRG clock** This routine returns the frequency of the BRG clock** NOTE: From page 9-5 in Rev0 of 8260 book** RETURNS: Frequence in HZ**/int sysBaudClkFreq    (    void    )    {    UINT32 cpmFreq, sccrDfbrg;    /* Get the physical location of the IMMR register */    UINT32 immrVal = vxImmrGet ();    sccrDfbrg  = (UINT32)(*(M8260_SCCR(immrVal)));    sccrDfbrg &= (~M8260_SCCR_RES_MSK);    cpmFreq = sysCpmFreqGet ();    if (cpmFreq == ERROR)        return ERROR;    else	{	switch (sccrDfbrg)            {            case M8260_SCCR_DFBRG_4:		return cpmFreq*2/4;            case M8260_SCCR_DFBRG_16:		return cpmFreq*2/16;            case M8260_SCCR_DFBRG_64: 		return cpmFreq*2/64;	    case M8260_SCCR_DFBRG_128:		return cpmFreq*2/128;            default:		return cpmFreq*2/16;            }        }    }/************************************************************************* sysClkRateAdjust - calculates proper decrementer frequency for a cpu frequency** This routine calculates proper decrementer frequency for a cpu frequency** RETURNS: Speed in Hz**/void sysClkRateAdjust     (    int * sysDecClkFrequency    )    {    *sysDecClkFrequency = sysInputFreqGet () / DEC_ADJUSTMENT;    return;    }/************************************************************************* sysInputFreqGet - determines the Input Oscillator clock frequency** This routine determines the Input Oscillator clock frequency** NOTE: From page 9-2 in Rev0 of 8260 book** RETURNS: Input frequency in HZ**/UINT32 sysInputFreqGet     (    void    )    {#ifdef HARDCODED_FREQ_PARMS    return INPUT_FREQUENCY;#else      UINT8  *pModck_H = (UINT8 *)HRDW_CONFIG_BYTE4;    *pModck_H &= MODCK_H_MASK; /* Mask the uper 4 bit */    switch ( *pModck_H )        {        case 1: case 2: case 3: case 4:            return FREQ_33MHZ;        case 5: case 6: case 7: case 8:            return FREQ_66MHZ;        default:            return ERROR;        }#endif /* HARDCODED_FREQ_PARMS */    }/************************************************************************* sysCpmFreqGet - determines the CPM operating frequency** This routine determines the CPM operating frequency** NOTE: From page 9-2 in Rev0 of 8260 book** RETURNS: CPM frequency in HZ**/UINT32 sysCpmFreqGet    (    void    )    {#ifdef HARDCODED_FREQ_PARMS    return CPM_FREQUENCY;#else    UINT   n;    UINT32 modck_H = sysModckHGet ();    UINT32 modck13 = sysModck13Get ();    for (n=0; modckH_modck13[n].coreFreq != END_OF_TABLE ;n++)        {        if ((modckH_modck13[n].modck_h == modck_H) &&             (modckH_modck13[n].modck13 == modck13))            {            return  modckH_modck13[n].cpmFreq;            }        }    return ERROR;#endif /* HARDCODED_FREQ_PARMS */    }/************************************************************************* sysCoreFreqGet - determines the Core operating frequency** This routine determines the Core operating frequency** NOTE: From page 9-2 in Rev0 of 8260 book** RETURNS: Core frequency in HZ**/UINT32 sysCoreFreqGet     (    void    )    {#ifdef HARDCODED_FREQ_PARMS    return CORE_FREQUENCY;#else       UINT   n;    UINT32 modck_H = sysModckHGet ();    UINT32 modck13 = sysModck13Get ();    for (n=0; modckH_modck13[n].coreFreq != END_OF_TABLE ;n++)        {        if ((modckH_modck13[n].modck_h == modck_H) &&             (modckH_modck13[n].modck13 == modck13))            {            return  modckH_modck13[n].coreFreq;            }        }    return ERROR;#endif /* HARDCODED_FREQ_PARMS */    }/************************************************************************* sysModckHGet - determines the value of MODCK_H reset configuration value** This routine determines the value of MODCK_H reset configuration value** NOTE: From page 9-2 in Rev0 of 8260 book** RETURNS: MODCK_H value**/UINT8 sysModckHGet     (    void    )    {    UINT8  *pModck_H = (UINT8 *)HRDW_CONFIG_BYTE4;    *pModck_H &= MODCK_H_MASK; /* Mask the uper 4 bit */    return *pModck_H;    }/************************************************************************* sysModck13Get - determines the value of MODCK[1-3] reset configuration value** This routine determines the value of MODCK[1-3] reset configuration value** NOTE: From 'Clock Configuration Modes' 8260 Manual*       User Dip Switch 6,7, and 8 must match Config Switch 6,7, 8** RETURNS: MODCK[1-3] value**/UINT8 sysModck13Get     (    void    )    {    return sysUserSwitchGet () & 0x07;  /* lower 3 bits are modck[1-3] */    }/************************************************************************* sysChipRev - determines revision of Chip installed** This routine determines revision of Chip installed** RETURNS: Chip revision**/UINT32 sysChipRev    (    void    )    {    UINT32  immrRegAddr = vxImmrGet ();    UINT32  immrValue;    immrRegAddr += 0x101A8;    immrValue = *(UINT32 *)immrRegAddr;    immrValue &= MASKNUM_MASK;    return (immrValue);        }/***********************************************************************   ** sysCpmReset - issues a CPM reset command** This routine issues a CPM reset command** RETURNS: N/A**/void sysCpmReset    (    void    )    {    /* Get the location of the IMMR register.                               */    int immrVal = vxImmrGet ();    /* Wait for any previous commands to finish                             */    while ( *M8260_CPCR( immrVal ) & M8260_CPCR_FLG )	{}    *M8260_CPCR( immrVal ) =  M8260_CPCR_RESET | M8260_CPCR_FLG;    /* See if the command has been accepted.                                */    while ( *M8260_CPCR( immrVal ) & M8260_CPCR_FLG )    {}    return;    }/************************************************************************* sysUserSwitchGet - returns the value of the User Dip Switch** This routine returns the value of the User Dip Switch** NOTE: Reverse bits so S1 is MSB S8 is LSB** RETURNS: Unsigned 8 bit value**/   UINT8  sysUserSwitchGet    (    void    )    {    UINT8   swValue;    UINT8   modChar;    swValue = BSCR_USER_SWITCH;    modChar = 0;    /* skip obvious equalities */    if ( swValue == 0x00 || swValue == 0xFF )        return swValue;    if (swValue & 0x80) modChar += 0x01;    if (swValue & 0x40) modChar += 0x02;    if (swValue & 0x20) modChar += 0x04;    if (swValue & 0x10) modChar += 0x08;    if (swValue & 0x08) modChar += 0x10;    if (swValue & 0x04) modChar += 0x20;    if (swValue & 0x02) modChar += 0x40;    if (swValue & 0x01) modChar += 0x80;    return modChar;    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -