📄 syscon_platform.c
字号:
}/************************************************************************ * board_systemflash_bankcount_atlas_read ************************************************************************/static UINT32board_systemflash_bankcount_atlas_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = ATLAS_SYSTEMFLASH_BANKCOUNT; return OK;}/************************************************************************ * board_systemflash_bankcount_sead_read ************************************************************************/static UINT32board_systemflash_bankcount_sead_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = SEAD_SYSTEMFLASH_BANKCOUNT; return OK;}/************************************************************************ * board_systemflash_blockcount_atlas_read ************************************************************************/static UINT32board_systemflash_blockcount_atlas_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = ATLAS_SYSTEMFLASH_BLOCKCOUNT; return OK;}/************************************************************************ * board_systemflash_blockcount_sead_read ************************************************************************/static UINT32board_systemflash_blockcount_sead_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = SEAD_SYSTEMFLASH_BLOCKCOUNT; return OK;}/************************************************************************ * board_systemflash_write_enable_atlas_write ************************************************************************/static UINT32board_systemflash_write_enable_atlas_write( void *param, void *data, UINT32 size ){ REGP(KSEG1BASE, ATLAS_SFWCTRL) = ATLAS_SFWCTRL_WRENA_ENSFWRITE; return OK;}/************************************************************************ * board_systemflash_write_enable_sead_write ************************************************************************/static UINT32board_systemflash_write_enable_sead_write( void *param, void *data, UINT32 size ){ /* Nothing to do */ return OK;}/************************************************************************ * board_systemflash_write_disable_atlas_write ************************************************************************/static UINT32board_systemflash_write_disable_atlas_write( void *param, void *data, UINT32 size ){ REGP(KSEG1BASE, ATLAS_SFWCTRL) = 0; return OK;}/************************************************************************ * board_systemflash_write_disable_sead_write ************************************************************************/static UINT32board_systemflash_write_disable_sead_write( void *param, void *data, UINT32 size ){ /* Nothing to do */ return OK;}/************************************************************************ * board_brkres_atlas_malta_read ************************************************************************/static UINT32board_brkres_atlas_malta_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = REGP(KSEG1BASE, ATLAS_BRKRES) & 0xff; return OK;}/************************************************************************ * board_brkres_atlas_malta_write ************************************************************************/static UINT32board_brkres_atlas_malta_write( void *param, void *data, UINT32 size ){ REGP(KSEG1BASE, ATLAS_BRKRES) = *(UINT32*)param; return OK;}/************************************************************************ * board_systemflash_write_protected_atlas_read ************************************************************************/static UINT32board_systemflash_write_protected_atlas_read( void *param, void *data, UINT32 size ){ *(UINT32*)param = (REGP(KSEG1BASE, ATLAS_SWVALUE) & ATLAS_SWVALUE_S13_MSK) ? 1 : 0; return OK;}/************************************************************************ * board_systemflash_write_protected_sead_read ************************************************************************/static UINT32board_systemflash_write_protected_sead_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = 0; return OK;}/************************************************************************ * board_pci_freq_atlas_read ************************************************************************/static UINT32board_pci_freq_atlas_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = (REGP(KSEG1BASE, ATLAS_JMPRS) & ATLAS_JMPRS_PCI33M_MSK) ? 33330 : 16670; return OK;} /************************************************************************ * board_pci_freq_malta_read ************************************************************************/static UINT32board_pci_freq_malta_read( void *param, void *data, UINT32 size ){ switch( (REGP(KSEG1BASE, MALTA_JMPRS) & MALTA_JMPRS_PCICLK_MSK) >> MALTA_JMPRS_PCICLK_SHF ) { case MALTA_JMPRS_PCICLK_10MHZ : *(UINT32 *)param = 10000; break; case MALTA_JMPRS_PCICLK_12_5MHZ : *(UINT32 *)param = 12500; break; case MALTA_JMPRS_PCICLK_16_67MHZ : *(UINT32 *)param = 16670; break; case MALTA_JMPRS_PCICLK_20MHZ : *(UINT32 *)param = 20000; break; case MALTA_JMPRS_PCICLK_25MHZ : *(UINT32 *)param = 25000; break; case MALTA_JMPRS_PCICLK_30MHZ : *(UINT32 *)param = 30000; break; case MALTA_JMPRS_PCICLK_33_33MHZ : *(UINT32 *)param = 33330; break; case MALTA_JMPRS_PCICLK_37_5MHZ : *(UINT32 *)param = 37500; break; default : /* Should not happen */ break; } return OK;} /************************************************************************ * board_pci_alloc_err_read ************************************************************************/extern bool pci_alloc_err;static UINT32 board_pci_alloc_err_read( void *param, void *data, UINT32 size ){ *(bool *)param = pci_alloc_err; return OK;} /************************************************************************ * board_psustby_atlas_write ************************************************************************/static UINT32board_psustby_atlas_write( void *param, void *data, UINT32 size ){ REGP(KSEG1BASE, ATLAS_PSUSTBY) = ATLAS_PSUSTBY_STBY_GOSTBY; return OK;}/************************************************************************ * board_psustby_sead_write ************************************************************************/static UINT32board_psustby_sead_write( void *param, void *data, UINT32 size ){ /* Not valid on SEAD-2 */ REGP(KSEG1BASE, SEAD_PSUSTBY) = SEAD_PSUSTBY_STBY_GOSTBY; return OK;}#if 0/* I don't know why this function does not work, so for now we'll have * to skip the off command for the Malta board. *//************************************************************************ * board_psustby_malta_write ************************************************************************/static UINT32board_psustby_malta_write( void *param, void *data, UINT32 size ){ UINT32 base; SYSCON_read( SYSCON_BOARD_PIIX4_POWER_BASE_ID, (void *)&base, sizeof(UINT32) ); base = KSEG1( base ); /* Set suspend type (Suspend to Disk) */ REG16( SWAP_UINT16ADDR_EL( base + PIIX4_PMCNTRL_OFS ) ) = (PIIX4_PMCNTRL_TYPE_STD << PIIX4_PMCNTRL_TYPE_SHF ); /* Enable suspend */ REG16( SWAP_UINT16ADDR_EL( base + PIIX4_PMCNTRL_OFS ) ) = ( (PIIX4_PMCNTRL_TYPE_STD << PIIX4_PMCNTRL_TYPE_SHF ) | PIIX4_PMCNTRL_SE_BIT ); return OK;}#endif/************************************************************************ * board_fileflash_write_protected_atlas_malta_read ************************************************************************/static UINT32board_fileflash_write_protected_atlas_malta_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = (REGP(KSEG1BASE, ATLAS_STATUS) & ATLAS_STATUS_MFWR_MSK) ? 0 : 1; return OK;}/************************************************************************ * board_monitorflash_write_protected_atlas_malta_read ************************************************************************/static UINT32board_monitorflash_write_protected_atlas_malta_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = (REGP(KSEG1BASE, ATLAS_STATUS) & ATLAS_STATUS_MFWR_MSK) ? 1 : 0; return OK;}/************************************************************************ * board_fileflash_write_protected_sead_read ************************************************************************/static UINT32board_fileflash_write_protected_sead_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = 0; return OK;}/************************************************************************ * board_rtc_addr_atlas_read ************************************************************************/static UINT32board_rtc_addr_atlas_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = ATLAS_RTCADR; return OK;}/************************************************************************ * board_rtc_addr_malta_read ************************************************************************/static UINT32board_rtc_addr_malta_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = MALTA_RTCADR; return OK;}/************************************************************************ * board_rtc_data_atlas_read ************************************************************************/static UINT32board_rtc_data_atlas_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = ATLAS_RTCDAT; return OK;}/************************************************************************ * board_rtc_data_malta_read ************************************************************************/static UINT32board_rtc_data_malta_read( void *param, void *data, UINT32 size ){ *(UINT32 *)param = MALTA_RTCDAT; return OK;}/************************************************************************ * board_eeprom_addr_atlas_read ************************************************************************/static UINT32board_eeprom_addr_atlas_malta_read( void *param, void *data, UINT32 size ){ *(UINT8 *)param = ATLAS_EEPROM_IICADR_SN; return OK;}/************************************************************************ * board_eeprom_spd_addr_atlas_malta_read ************************************************************************/static UINT32board_eeprom_spd_addr_atlas_malta_read( void *param, void *data, UINT32 size ){ *(UINT8 *)param = ATLAS_EEPROM_IICADR_SPD000; return OK;}/************************************************************************ * board_eeprom_spd_addr_sead_read ************************************************************************/static UINT32board_eeprom_spd_addr_sead_read( void *param, void *data, UINT32 size ){ *(UINT8 *)param = 0; return OK;}/************************************************************************ * board_am79c973_base_malta_read ************************************************************************/static UINT32board_am79c973_base_malta_read( void *param, void *data, UINT32 size ){ /* AMD 79C973 CS and BC registers * are io mapped into BAR#0. */ if( pci_lookup_bar( PCI_BUS_LOCAL, MALTA_DEVNUM_AM79C973, 0, PCI_BAR(0), (void **)param ) ) { return OK; } else return ERROR_SYSCON_UNKNOWN_PARAM;}/************************************************************************ * com_iic_baudrate_atlas_read
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -