📄 syscon_platform.c
字号:
return OK;}/************************************************************************ * board_sram_size_sead_read ************************************************************************/static UINT32board_sram_size_sead_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = SEAD_SRAM_SIZE; return OK;}/************************************************************************ * board_gt64120_base_atlas_malta_read ************************************************************************/static UINT32board_gt64120_base_atlas_malta_read( void *param, void *data, UINT32 size ){ *(void **)param = (void *)ATLAS_CORECTRL_BASE; return OK;}/************************************************************************ * board_saa9730_base_atlas_read ************************************************************************/static UINT32board_saa9730_base_atlas_read( void *param, void *data, UINT32 size ){ /* Philips SAA9730 implements one function only with all IO-devices * memory mapped into one contigous memory. * According to spec. the BAR#1 is to be used ! */ if( pci_lookup_bar( PCI_BUS_LOCAL, ATLAS_DEVNUM_SAA9730, 0, PCI_BAR(1), (void **)param ) ) { return OK; } else return ERROR_SYSCON_UNKNOWN_PARAM;}/************************************************************************ * board_icta_base_atlas_read ************************************************************************/static UINT32board_icta_base_atlas_read( void *param, void *data, UINT32 size ){ *(void **)param = (void *)ATLAS_ICTA_BASE; return OK;}/************************************************************************ * board_tmra_base_atlas_read ************************************************************************/static UINT32board_tmra_base_atlas_read( void *param, void *data, UINT32 size ){ *(void **)param = (void *)ATLAS_TMRA_BASE; return OK;}/************************************************************************ * board_ledgreen_atlas_read ************************************************************************/static UINT32board_ledgreen_atlas_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = REGP(KSEG1BASE, ATLAS_LEDGREEN); return OK;}/************************************************************************ * board_ledgreen_atlas_write ************************************************************************/static UINT32board_ledgreen_atlas_write( void *param, void *data, UINT32 size ){ REGP(KSEG1BASE, ATLAS_LEDGREEN) = *(UINT32 *)param; return OK;}/************************************************************************ * board_ledbar_atlas_malta_read ************************************************************************/static UINT32board_ledbar_atlas_malta_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = REGP(KSEG1BASE, ATLAS_LEDBAR); return OK;}/************************************************************************ * board_ledbar_atlas_malta_write ************************************************************************/static UINT32board_ledbar_atlas_malta_write( void *param, void *data, UINT32 size ){ REGP(KSEG1BASE, ATLAS_LEDBAR) = *(UINT32 *)param; return OK;}/************************************************************************ * board_ledbar_sead_read ************************************************************************/static UINT32board_ledbar_sead_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = REGP(KSEG1BASE, SEAD_PLED); return OK;}/************************************************************************ * board_ledbar_sead_write ************************************************************************/static UINT32board_ledbar_sead_write( void *param, void *data, UINT32 size ){ REGP(KSEG1BASE, SEAD_PLED) = *(UINT32 *)param; return OK;}/************************************************************************ * board_asciiword_atlas_malta_write ************************************************************************/static UINT32board_asciiword_atlas_malta_write( void *param, void *data, UINT32 size ){ REGP(KSEG1BASE, ATLAS_ASCIIWORD) = *(UINT32 *)param; return OK;}/************************************************************************ * board_asciiword_sead_write ************************************************************************/static UINT32board_asciiword_sead_write( void *param, void *data, UINT32 size ){ UINT32 tl, sl, i; sl = 8 ; if( alpha_display_size < 8 ) { sl = alpha_display_size; } for(i=0; i<sl; i++) { tl = ( (*(UINT32 *)param) >> (28-(i*4)) ) & 0xf; tl = bin2char[ tl ]; *alpha_io[ i ] = tl; } return OK;}/************************************************************************ * board_asciichar_write ************************************************************************/static UINT32board_asciichar_write( void *param, void *data, UINT32 size ){ UINT32 tl; UINT8 *ptb; tl = ((t_sys_alphanumeric *)param)->posid; ptb = ((t_sys_alphanumeric *)param)->string; if ( tl < alpha_display_size ) { *(alpha_io[tl]) = *ptb; return OK; } else { return ERROR_SYSCON_INVALID_CHAR_POS; }}/************************************************************************ * board_asciistring_write ************************************************************************/static UINT32board_asciistring_write( void *param, void *data, UINT32 size ){ UINT32 tl; UINT8 *ptb; tl = ((t_sys_alphanumeric *)param)->posid; ptb = ((t_sys_alphanumeric *)param)->string; /* display string */ while( tl < alpha_display_size ) { if ( *ptb == 0 ) { break; } *(alpha_io[tl]) = (*ptb) & 0x7f; tl++; ptb++; } /* check for string termination at max. char. pos. */ if ( *ptb == 0 ) { /* blank the rest */ while ( tl < alpha_display_size ) { *(alpha_io[ tl ]) = SP; tl++; } return OK; } else { return ERROR_SYSCON_INVALID_CHAR_POS; }}/************************************************************************ * millisec ************************************************************************/static UINT32millisec( UINT32 cpufreq_hz ){ UINT32 calc, cycle_per_count, count; if( cpufreq_hz == 0 ) return 0; SYSCON_read( SYSCON_CPU_CYCLE_PER_COUNT_ID, (void *)&cycle_per_count, sizeof(UINT32) ); SYSCON_read( SYSCON_CPU_CP0_COUNT_ID, (void *)&count, sizeof(UINT32) ); calc = cpufreq_hz / ( 1000 * cycle_per_count ); if( calc != 0 ) { calc = count / calc; } else { calc = count * 1000 * cycle_per_count / cpufreq_hz; } return calc;}/************************************************************************ * board_get_millisec_atlas_malta_read ************************************************************************/static UINT32board_get_millisec_atlas_malta_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = millisec( sys_cpufreq_hz ); return OK;}/************************************************************************ * board_get_millisec_sead_read ************************************************************************/static UINT32board_get_millisec_sead_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = millisec( sys_cpufreq_hz ? sys_cpufreq_hz : SEAD_MAX_FREQ_MHZ * 1000000 ); return OK;}/************************************************************************ * board_piix4_smb_base_malta_read ************************************************************************/static UINT32board_piix4_smb_base_malta_read( void *param, void *data, UINT32 size ){ /* PIIX4 SMB registers * are memory mapped into SMB Bar */ if( pci_lookup_bar( PCI_BUS_LOCAL, MALTA_DEVNUM_PIIX4, PIIX4_PCI_FUNCTION_POWER, PIIX4_PCI_BAR_SMB_POS, (void **)param ) ) { return OK; } else return ERROR_SYSCON_UNKNOWN_PARAM;}/************************************************************************ * board_piix4_power_base_malta_read ************************************************************************/static UINT32board_piix4_power_base_malta_read( void *param, void *data, UINT32 size ){ /* PIIX4 Power Management registers * are memory mapped into POWER Bar */ if( pci_lookup_bar( PCI_BUS_LOCAL, MALTA_DEVNUM_PIIX4, PIIX4_PCI_FUNCTION_POWER, PIIX4_PCI_BAR_POWER_POS, (void **)param ) ) { return OK; } else return ERROR_SYSCON_UNKNOWN_PARAM;}/************************************************************************ * board_systemflash_sectorsize_atlas_read ************************************************************************/static UINT32board_systemflash_sectorsize_atlas_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = ATLAS_SYSTEMFLASH_SECTORSIZE; return OK;}/************************************************************************ * board_monitorflash_sectorsize_atlas_read ************************************************************************/static UINT32board_monitorflash_sectorsize_atlas_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = ATLAS_MONITORFLASH_SECTORSIZE; return OK;}/************************************************************************ * board_monitorflash_sectorsize_malta_read ************************************************************************/static UINT32board_monitorflash_sectorsize_malta_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = MALTA_MONITORFLASH_SECTORSIZE; return OK;}/************************************************************************ * board_systemflash_sectorsize_sead_read ************************************************************************/static UINT32board_systemflash_sectorsize_sead_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = SEAD_SYSTEMFLASH_SECTORSIZE; return OK;}/************************************************************************ * board_fileflash_sectorsize_atlas_malta_read ************************************************************************/static UINT32board_fileflash_sectorsize_atlas_malta_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = ATLAS_FILEFLASH_SECTORSIZE; return OK;}/************************************************************************ * board_fileflash_sectorsize_sead_read ************************************************************************/static UINT32board_fileflash_sectorsize_sead_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = SEAD_FILEFLASH_SECTORSIZE; return OK;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -