Macpaul Lin | 577766e | 2022-08-11 18:46:06 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0-only OR MIT */ |
Rex-BC Chen | 3f83c6f | 2022-05-24 19:45:59 +0800 | [diff] [blame] | 2 | |
Rex-BC Chen | c3d2e9c | 2022-08-04 17:11:22 +0800 | [diff] [blame] | 3 | #include <bootmem.h> |
Xi Chen | af4bad1 | 2022-08-18 11:27:18 +0800 | [diff] [blame] | 4 | #include <console/console.h> |
Rex-BC Chen | 3f83c6f | 2022-05-24 19:45:59 +0800 | [diff] [blame] | 5 | #include <device/device.h> |
Liju-Clr Chen | 5ab991d | 2022-11-01 10:35:33 +0800 | [diff] [blame] | 6 | #include <soc/cpu_input_gating.h> |
Nina Wu | c0797f5 | 2022-08-18 11:13:31 +0800 | [diff] [blame] | 7 | #include <soc/devapc.h> |
Rex-BC Chen | c3d2e9c | 2022-08-04 17:11:22 +0800 | [diff] [blame] | 8 | #include <soc/dfd.h> |
Xi Chen | af4bad1 | 2022-08-18 11:27:18 +0800 | [diff] [blame] | 9 | #include <soc/dpm.h> |
Rex-BC Chen | 3f83c6f | 2022-05-24 19:45:59 +0800 | [diff] [blame] | 10 | #include <soc/emi.h> |
Rex-BC Chen | 0c7a0f9 | 2022-07-22 11:09:55 +0800 | [diff] [blame] | 11 | #include <soc/mcupm.h> |
Rex-BC Chen | 29f1866 | 2022-06-15 11:49:16 +0800 | [diff] [blame] | 12 | #include <soc/mmu_operations.h> |
Rex-BC Chen | c23235e | 2022-08-10 18:23:01 +0800 | [diff] [blame] | 13 | #include <soc/spm.h> |
Rex-BC Chen | 202f60b | 2022-07-22 13:41:45 +0800 | [diff] [blame] | 14 | #include <soc/sspm.h> |
Rex-BC Chen | 3f83c6f | 2022-05-24 19:45:59 +0800 | [diff] [blame] | 15 | #include <symbols.h> |
| 16 | |
kiwi liu | 4bd1236 | 2023-11-01 15:07:33 +0800 | [diff] [blame^] | 17 | #define OPTEE_ADDRESS 0x43000000 |
| 18 | #define OPTEE_SIZE (80 * MiB) |
| 19 | |
Rex-BC Chen | c3d2e9c | 2022-08-04 17:11:22 +0800 | [diff] [blame] | 20 | void bootmem_platform_add_ranges(void) |
| 21 | { |
| 22 | if (CONFIG(MTK_DFD)) |
| 23 | bootmem_add_range(DFD_DUMP_ADDRESS, DFD_DUMP_SIZE, BM_MEM_RESERVED); |
kiwi liu | 4bd1236 | 2023-11-01 15:07:33 +0800 | [diff] [blame^] | 24 | bootmem_add_range(OPTEE_ADDRESS, OPTEE_SIZE, BM_MEM_RESERVED); |
Rex-BC Chen | c3d2e9c | 2022-08-04 17:11:22 +0800 | [diff] [blame] | 25 | } |
| 26 | |
Rex-BC Chen | 3f83c6f | 2022-05-24 19:45:59 +0800 | [diff] [blame] | 27 | static void soc_read_resources(struct device *dev) |
| 28 | { |
| 29 | ram_range(dev, 0, (uintptr_t)_dram, sdram_size()); |
| 30 | } |
| 31 | |
| 32 | static void soc_init(struct device *dev) |
| 33 | { |
Rex-BC Chen | 29f1866 | 2022-06-15 11:49:16 +0800 | [diff] [blame] | 34 | mtk_mmu_disable_l2c_sram(); |
Liju-Clr Chen | 5ab991d | 2022-11-01 10:35:33 +0800 | [diff] [blame] | 35 | |
| 36 | disable_cpu_input_gating(); |
| 37 | |
Nina Wu | c0797f5 | 2022-08-18 11:13:31 +0800 | [diff] [blame] | 38 | dapc_init(); |
Rex-BC Chen | 0c7a0f9 | 2022-07-22 11:09:55 +0800 | [diff] [blame] | 39 | mcupm_init(); |
Rex-BC Chen | 202f60b | 2022-07-22 13:41:45 +0800 | [diff] [blame] | 40 | sspm_init(); |
Rex-BC Chen | c3d2e9c | 2022-08-04 17:11:22 +0800 | [diff] [blame] | 41 | |
Xi Chen | af4bad1 | 2022-08-18 11:27:18 +0800 | [diff] [blame] | 42 | if (dpm_init()) |
| 43 | printk(BIOS_ERR, "dpm init failed, DVFS may not work\n"); |
| 44 | |
Rex-BC Chen | c23235e | 2022-08-10 18:23:01 +0800 | [diff] [blame] | 45 | /* |
| 46 | * For MT8188, SPM will handshake with DPM to do initialization, so |
| 47 | * this must run after dpm_init(). |
| 48 | */ |
| 49 | if (spm_init()) |
| 50 | printk(BIOS_ERR, "spm init failed, system suspend may not work\n"); |
| 51 | |
Rex-BC Chen | c3d2e9c | 2022-08-04 17:11:22 +0800 | [diff] [blame] | 52 | if (CONFIG(MTK_DFD)) |
| 53 | dfd_init(); |
Rex-BC Chen | 3f83c6f | 2022-05-24 19:45:59 +0800 | [diff] [blame] | 54 | } |
| 55 | |
| 56 | static struct device_operations soc_ops = { |
| 57 | .read_resources = soc_read_resources, |
| 58 | .set_resources = noop_set_resources, |
| 59 | .init = soc_init, |
| 60 | }; |
| 61 | |
| 62 | static void enable_soc_dev(struct device *dev) |
| 63 | { |
| 64 | dev->ops = &soc_ops; |
| 65 | } |
| 66 | |
| 67 | struct chip_operations soc_mediatek_mt8188_ops = { |
| 68 | CHIP_NAME("SOC Mediatek MT8188") |
| 69 | .enable_dev = enable_soc_dev, |
| 70 | }; |