?? syslib.c
字號:
** 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 + -