Angel Pons | e67ab18 | 2020-04-04 18:51:11 +0200 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
Erin Lo | b1a2b22 | 2019-03-11 14:54:21 +0800 | [diff] [blame] | 2 | |
| 3 | #include <arch/barrier.h> |
| 4 | #include <cbfs.h> |
| 5 | #include <console/console.h> |
Julius Werner | 55009af | 2019-12-02 22:03:27 -0800 | [diff] [blame] | 6 | #include <device/mmio.h> |
Erin Lo | b1a2b22 | 2019-03-11 14:54:21 +0800 | [diff] [blame] | 7 | #include <soc/sspm.h> |
| 8 | #include <string.h> |
| 9 | |
| 10 | #define BUF_SIZE (64 * KiB) |
| 11 | static uint8_t sspm_bin[BUF_SIZE] __aligned(8); |
| 12 | |
| 13 | void sspm_init(void) |
| 14 | { |
| 15 | const char *file_name = "sspm.bin"; |
Julius Werner | 834b3ec | 2020-03-04 16:52:08 -0800 | [diff] [blame^] | 16 | size_t fw_size = cbfs_load(file_name, sspm_bin, sizeof(sspm_bin)); |
Erin Lo | b1a2b22 | 2019-03-11 14:54:21 +0800 | [diff] [blame] | 17 | |
| 18 | if (fw_size == 0) |
| 19 | die("SSPM file :sspm.bin not found."); |
| 20 | |
| 21 | memcpy((void *)SSPM_SRAM_BASE, sspm_bin, fw_size); |
| 22 | /* Memory barrier to ensure that all fw code is loaded |
| 23 | before we release the reset pin. */ |
| 24 | mb(); |
| 25 | write32(&mt8183_sspm->sw_rstn, 0x1); |
| 26 | } |