![]() |
coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
|
#include <assert.h>
#include <cbfs.h>
#include <console/console.h>
#include <device/mmio.h>
#include <endian.h>
#include <soc/emi.h>
#include <soc/spm.h>
#include <timer.h>
Go to the source code of this file.
Macros | |
#define | BUF_SIZE (16 * KiB) |
Functions | |
static uint8_t spm_bin[BUF_SIZE] | __aligned (8) |
static int | spm_register_init (void) |
static int | spm_code_swapping (void) |
static int | spm_reset_and_init_pcm (const struct pcm_desc *pcmdesc) |
static void | spm_load_pcm_code (const struct dyna_load_pcm *pcm) |
static void | spm_check_pcm_code (const struct dyna_load_pcm *pcm) |
static void | spm_kick_im_to_fetch (const struct dyna_load_pcm *pcm) |
static void | spm_init_pcm_register (void) |
static void | spm_init_event_vector (const struct pcm_desc *pcmdesc) |
static int | spm_load_firmware (enum dyna_load_pcm_index index, struct dyna_load_pcm *pcm) |
static void | spm_kick_pcm_to_run (void) |
int | spm_init (void) |
Variables | |
static const char *const | dyna_load_pcm_path [] |
|
static |
Definition at line 164 of file spm.c.
References dyna_load_pcm::buf, dyna_load_pcm::desc, mtk_spm, PCM_IM_HOST_EN_LSB, mtk_spm_regs::pcm_im_host_rw_dat, mtk_spm_regs::pcm_im_host_rw_ptr, read32(), pcm_desc::size, spm_load_pcm_code(), and write32().
Referenced by spm_kick_im_to_fetch().
|
static |
Definition at line 80 of file spm.c.
References BIOS_ERR, mtk_spm, mtk_spm_regs::pcm_fsm_sta, PCM_IRQ_ROOT_MASK_LSB, mtk_spm_regs::pcm_reg15_data, printk, read32(), SPM_CORE_TIMEOUT, mtk_spm_regs::spm_cpu_wakeup_event, mtk_spm_regs::spm_irq_sta, mtk_spm_regs::spm_wakeup_event_mask, wait_us, WAKEUP_EVENT_MASK_B_BIT0, and write32().
Referenced by spm_reset_and_init_pcm().
Definition at line 206 of file spm.c.
References mtk_spm, mtk_spm_regs::pcm_event_vector, PCM_EVENT_VECTOR_NUM, pcm_desc::vector, and write32().
Referenced by spm_init().
Definition at line 193 of file spm.c.
References mtk_spm, mtk_spm_regs::pcm_pwr_io_en, mtk_spm_regs::pcm_reg_data_ini, PCM_RF_SYNC_R0, PCM_RF_SYNC_R7, read32(), mtk_spm_regs::spm_power_on_val0, mtk_spm_regs::spm_power_on_val1, and write32().
Referenced by spm_init().
|
static |
Definition at line 177 of file spm.c.
References BIOS_DEBUG, dyna_load_pcm::buf, dyna_load_pcm::desc, IM_KICK_L_LSB, mtk_spm, PCM_CK_EN_LSB, mtk_spm_regs::pcm_con0, PCM_KICK_L_LSB, printk, read32(), pcm_desc::size, spm_check_pcm_code(), spm_load_pcm_code(), SPM_REGWR_CFG_KEY, and write32().
Referenced by spm_init().
Definition at line 273 of file spm.c.
References BIOS_DEBUG, IM_KICK_L_LSB, IM_STATE, IM_STATE_MASK, mtk_spm, PCM_CK_EN_LSB, mtk_spm_regs::pcm_con0, mtk_spm_regs::pcm_fsm_sta, PCM_KICK_L_LSB, mtk_spm_regs::pcm_pwr_io_en, PCM_PWRIO_EN_R0, PCM_PWRIO_EN_R7, mtk_spm_regs::pcm_reg_data_ini, printk, read32(), mtk_spm_regs::spm_mas_pause2_mask_b, SPM_MAS_PAUSE2_MASK_B_VAL, mtk_spm_regs::spm_mas_pause_mask_b, SPM_MAS_PAUSE_MASK_B_VAL, SPM_REGWR_CFG_KEY, and write32().
Referenced by spm_init().
|
static |
Definition at line 217 of file spm.c.
References assert, BIOS_DEBUG, BIOS_ERR, BIOS_INFO, dyna_load_pcm::buf, cbfs_load(), dyna_load_pcm::desc, dyna_load_pcm_path, memcpy(), offset, printk, pcm_desc::size, stopwatch_duration_msecs(), and stopwatch_init().
Referenced by spm_init().
|
static |
Definition at line 148 of file spm.c.
References dyna_load_pcm::buf, dyna_load_pcm::desc, IM_SLAVE_LSB, mtk_spm, mtk_spm_regs::pcm_con1, PCM_IM_HOST_EN_LSB, mtk_spm_regs::pcm_im_host_rw_dat, mtk_spm_regs::pcm_im_host_rw_ptr, PCM_IM_HOST_W_EN_LSB, read32(), pcm_desc::size, SPM_REGWR_CFG_KEY, and write32().
Referenced by spm_check_pcm_code(), and spm_kick_im_to_fetch().
|
static |
Definition at line 15 of file spm.c.
References BCLK_CG_EN_LSB, BIOS_ERR, CLKSQ1_SEL_CTRL_LSB, clrsetbits32, CONN_DDR_EN_DBC_LEN, CXO32K_REMOVE_EN_MD1_LSB, mtk_spm_regs::ddr_en_dbc_len, EN_IM_SLEEP_DVS_LSB, EVENT_LOCK_EN_LSB, EXT_SRCCLKEN_MASK, IFR_SRAMROM_ROM_PDN, ISRC_ALL, ISRM_ALL, MD_BCLK_CG_EN_LSB, MD_DDR_EN_0_DBC_LEN, MD_DDR_EN_1_DBC_LEN, MIF_APBEN_LSB, mtk_spm, PCM_CK_EN_LSB, mtk_spm_regs::pcm_con0, mtk_spm_regs::pcm_con1, mtk_spm_regs::pcm_fsm_sta, PCM_FSM_STA_DEF, PCM_FSM_STA_MASK, mtk_spm_regs::pcm_im_len, mtk_spm_regs::pcm_im_ptr, mtk_spm_regs::pcm_pwr_io_en, mtk_spm_regs::pcm_reg_data_ini, PCM_RF_SYNC_R7, PCM_SW_INT_ALL, PCM_SW_RESET_LSB, POWER_ON_VAL1_DEF, mtk_spm_regs::poweron_config_set, printk, read32(), SCP_APB_INTERNAL_EN_LSB, setbits32, SPARE1_DDREN_MASK_B_LSB, mtk_spm_regs::spare_ack_mask, SPARE_ACK_MASK_B_BIT0, SPARE_ACK_MASK_B_BIT1, mtk_spm_regs::spare_src_req_mask, mtk_spm_regs::spm_clk_con, mtk_spm_regs::spm_irq_mask, mtk_spm_regs::spm_irq_sta, SPM_LOCK_INFRA_DCM_LSB, mtk_spm_regs::spm_pc_trace_con, SPM_PC_TRACE_HW_EN_LSB, SPM_PC_TRACE_OFFSET, mtk_spm_regs::spm_power_on_val1, SPM_REGWR_CFG_KEY, SPM_SRAM_ISOINT_B_LSB, mtk_spm_regs::spm_swint_clr, mtk_spm_regs::spm_wakeup_event_mask, SPM_WAKEUP_EVENT_MASK_DEF, SRCLKEN0_EN_LSB, SYSCLK1_EN_CTRL, SYSCLK1_SRC_MASK_B, mtk_spm_regs::sysrom_con, and write32().
Referenced by spm_init().
|
static |
Definition at line 106 of file spm.c.
References BIOS_ERR, clrsetbits32, EN_IM_SLEEP_DVS_LSB, EVENT_LOCK_EN_LSB, IM_NONRP_EN_LSB, MIF_APBEN_LSB, mtk_spm, PCM_CK_EN_LSB, mtk_spm_regs::pcm_con0, mtk_spm_regs::pcm_con1, mtk_spm_regs::pcm_fsm_sta, PCM_FSM_STA_DEF, PCM_FSM_STA_MASK, mtk_spm_regs::pcm_pwr_io_en, mtk_spm_regs::pcm_reg0_data, mtk_spm_regs::pcm_reg15_data, mtk_spm_regs::pcm_reg1_data, PCM_SW_RESET_LSB, PCM_TIMER_EN_LSB, PCM_WDT_WAKE_MODE_LSB, printk, read32(), pcm_desc::replace, SCP_APB_INTERNAL_EN_LSB, spm_code_swapping(), SPM_PCM_REG15_DATA_CHECK, SPM_PCM_REG1_DATA_CHECK, mtk_spm_regs::spm_power_on_val0, SPM_REGWR_CFG_KEY, SPM_SRAM_ISOINT_B_LSB, and write32().
Referenced by spm_init().
|
static |
Definition at line 212 of file spm.c.
Referenced by spm_load_firmware().