12 #define BUF_SIZE (16 * KiB)
93 "timeout: r15=%#x, pcmsta=%#x, irqsta=%#x [%d]\n",
108 u32 con1, pcm_fsm_sta;
155 for (i = 0; i < pcm->
desc.
size; i++) {
168 for (i = 0; i < pcm->
desc.
size; i++) {
234 size_t file_size =
cbfs_load(file_name, spm_bin,
sizeof(spm_bin));
236 if (file_size == 0) {
244 copy_size =
sizeof(firmware_size);
251 copy_size = firmware_size * 4;
257 copy_size =
sizeof(
struct pcm_desc);
263 assert(spm_bin[file_size - 1] ==
'\0');
306 if (
CONFIG(MT8183_DRAM_EMCP))
static void write32(void *addr, uint32_t val)
static uint32_t read32(const void *addr)
void * memcpy(void *dest, const void *src, size_t n)
#define assert(statement)
static size_t cbfs_load(const char *name, void *buf, size_t size)
#define printk(level,...)
#define setbits32(addr, set)
#define clrsetbits32(addr, clear, set)
#define wait_us(timeout_us, condition)
static void stopwatch_init(struct stopwatch *sw)
static long stopwatch_duration_msecs(struct stopwatch *sw)
#define BIOS_INFO
BIOS_INFO - Expected events.
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
static struct mtk_spm_regs *const mtk_spm
#define SPM_PC_TRACE_HW_EN_LSB
#define SYSCLK1_SRC_MASK_B
#define CONN_DDR_EN_DBC_LEN
#define MD_DDR_EN_1_DBC_LEN
#define CXO32K_REMOVE_EN_MD1_LSB
#define SPM_MAS_PAUSE_MASK_B_VAL
#define IFR_SRAMROM_ROM_PDN
#define SPM_LOCK_INFRA_DCM_LSB
#define SCP_APB_INTERNAL_EN_LSB
#define EVENT_LOCK_EN_LSB
#define PCM_EVENT_VECTOR_NUM
#define PCM_IM_HOST_W_EN_LSB
@ DYNA_LOAD_PCM_SUSPEND_LP4_3733
@ DYNA_LOAD_PCM_SUSPEND_LP4_3200
#define SPARE_ACK_MASK_B_BIT0
#define MD_DDR_EN_0_DBC_LEN
#define SPM_PCM_REG1_DATA_CHECK
#define SPM_SRAM_ISOINT_B_LSB
#define EN_IM_SLEEP_DVS_LSB
#define SPM_WAKEUP_EVENT_MASK_DEF
#define CLKSQ1_SEL_CTRL_LSB
#define SPM_MAS_PAUSE2_MASK_B_VAL
#define SPARE1_DDREN_MASK_B_LSB
#define EXT_SRCCLKEN_MASK
#define SPM_PCM_REG15_DATA_CHECK
#define MD_BCLK_CG_EN_LSB
#define PCM_IRQ_ROOT_MASK_LSB
#define SPM_REGWR_CFG_KEY
#define PCM_WDT_WAKE_MODE_LSB
#define WAKEUP_EVENT_MASK_B_BIT0
#define PCM_IM_HOST_EN_LSB
#define POWER_ON_VAL1_DEF
#define SPARE_ACK_MASK_B_BIT1
#define SPM_PC_TRACE_OFFSET
static int spm_reset_and_init_pcm(const struct pcm_desc *pcmdesc)
static void spm_kick_pcm_to_run(void)
static int spm_register_init(void)
static void spm_load_pcm_code(const struct dyna_load_pcm *pcm)
static int spm_code_swapping(void)
static int spm_load_firmware(enum dyna_load_pcm_index index, 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 const char *const dyna_load_pcm_path[]
static uint8_t spm_bin[BUF_SIZE] __aligned(8)
static void spm_init_event_vector(const struct pcm_desc *pcmdesc)
static void spm_check_pcm_code(const struct dyna_load_pcm *pcm)
u32 pcm_event_vector[PCM_EVENT_VECTOR_NUM]
u32 spm_mas_pause2_mask_b
u32 spm_wakeup_event_mask
u32 vector[PCM_EVENT_VECTOR_NUM]