blob: 0a4d5b0cd60f3cc2b77c76739c242c4dbba62d57 [file] [log] [blame]
Angel Ponse67ab182020-04-04 18:51:11 +02001/* SPDX-License-Identifier: GPL-2.0-only */
Erin Lob1a2b222019-03-11 14:54:21 +08002
Julius Werner55009af2019-12-02 22:03:27 -08003#include <device/mmio.h>
Yidi Lineb69dd62020-12-07 20:43:50 +08004#include <soc/mcu_common.h>
Erin Lob1a2b222019-03-11 14:54:21 +08005#include <soc/sspm.h>
Yidi Lineb69dd62020-12-07 20:43:50 +08006#include <soc/symbols.h>
Erin Lob1a2b222019-03-11 14:54:21 +08007
Yidi Lineb69dd62020-12-07 20:43:50 +08008static void reset_sspm(struct mtk_mcu *mcu)
9{
Rex-BC Chene235f9a2021-05-27 21:10:17 +080010 write32(&sspm_reg->sw_rstn, 0x1);
Yidi Lineb69dd62020-12-07 20:43:50 +080011}
12
13static struct mtk_mcu sspm = {
14 .firmware_name = CONFIG_SSPM_FIRMWARE,
15 .run_address = (void *)SSPM_SRAM_BASE,
16 .reset = reset_sspm,
17};
Erin Lob1a2b222019-03-11 14:54:21 +080018
19void sspm_init(void)
20{
Yidi Lineb69dd62020-12-07 20:43:50 +080021 sspm.load_buffer = _dram_dma;
22 sspm.buffer_size = REGION_SIZE(dram_dma);
Erin Lob1a2b222019-03-11 14:54:21 +080023
Yidi Lineb69dd62020-12-07 20:43:50 +080024 mtk_init_mcu(&sspm);
Erin Lob1a2b222019-03-11 14:54:21 +080025}