diff options
Diffstat (limited to 'src/soc/qualcomm/common')
-rw-r--r-- | src/soc/qualcomm/common/aop_load_reset.c | 20 | ||||
-rw-r--r-- | src/soc/qualcomm/common/include/soc/aop_common.h | 8 | ||||
-rw-r--r-- | src/soc/qualcomm/common/mmu.c | 8 |
3 files changed, 34 insertions, 2 deletions
diff --git a/src/soc/qualcomm/common/aop_load_reset.c b/src/soc/qualcomm/common/aop_load_reset.c new file mode 100644 index 0000000000..1b3a1d50ab --- /dev/null +++ b/src/soc/qualcomm/common/aop_load_reset.c @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include <cbfs.h> +#include <console/console.h> +#include <soc/mmu.h> +#include <soc/aop_common.h> +#include <soc/clock.h> + +void aop_fw_load_reset(void) +{ + struct prog aop_fw_prog = + PROG_INIT(PROG_PAYLOAD, CONFIG_CBFS_PREFIX "/aop"); + + if (!selfload(&aop_fw_prog)) + die("SOC image: AOP load failed"); + + clock_reset_aop(); + + printk(BIOS_DEBUG, "SOC:AOP brought out of reset.\n"); +} diff --git a/src/soc/qualcomm/common/include/soc/aop_common.h b/src/soc/qualcomm/common/include/soc/aop_common.h new file mode 100644 index 0000000000..5b0de4eb67 --- /dev/null +++ b/src/soc/qualcomm/common/include/soc/aop_common.h @@ -0,0 +1,8 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef _SOC_QUALCOMM_COMMON_AOP_H__ +#define _SOC_QUALCOMM_COMMON_AOP_H__ + +void aop_fw_load_reset(void); + +#endif // _SOC_QUALCOMM_COMMON_AOP_H__ diff --git a/src/soc/qualcomm/common/mmu.c b/src/soc/qualcomm/common/mmu.c index ba1173edf9..0f12555a7f 100644 --- a/src/soc/qualcomm/common/mmu.c +++ b/src/soc/qualcomm/common/mmu.c @@ -3,9 +3,9 @@ #include <arch/mmu.h> #include <soc/mmu.h> #include <soc/mmu_common.h> +#include <soc/symbols_common.h> __weak bool soc_modem_carve_out(void **start, void **end) { return false; } -__weak void soc_mmu_dram_config_post_dram_init(void) { /* no-op */ } void qc_mmu_dram_config_post_dram_init(void *ddr_base, size_t ddr_size) { @@ -18,5 +18,9 @@ void qc_mmu_dram_config_post_dram_init(void *ddr_base, size_t ddr_size) mmu_config_range(ddr_base, start - ddr_base, CACHED_RAM); mmu_config_range(end, ddr_base + ddr_size - end, CACHED_RAM); } - soc_mmu_dram_config_post_dram_init(); + + mmu_config_range((void *)_aop_code_ram, REGION_SIZE(aop_code_ram), + CACHED_RAM); + mmu_config_range((void *)_aop_data_ram, REGION_SIZE(aop_data_ram), + CACHED_RAM); } |