blob: a84cf4a6b59799496b9afa769dd9981b555f763a [file] [log] [blame]
CK Hu958ab462020-04-07 12:06:31 +08001/* SPDX-License-Identifier: GPL-2.0-only */
2
Rex-BC Cheneef442d2021-07-12 15:01:11 +08003#include <bootmem.h>
CK Hu958ab462020-04-07 12:06:31 +08004#include <device/device.h>
Chien-Chih Tsenga39ea902020-12-14 14:59:39 +08005#include <soc/apusys.h>
Nina Wu87c30a02020-09-04 10:11:27 +08006#include <soc/devapc.h>
Rex-BC Cheneef442d2021-07-12 15:01:11 +08007#include <soc/dfd.h>
CK Hu958ab462020-04-07 12:06:31 +08008#include <soc/emi.h>
Yidi Linf4bf8f5f2020-07-29 19:18:38 +08009#include <soc/mcupm.h>
CK Hu3398f3152020-06-16 11:54:38 +080010#include <soc/mmu_operations.h>
TingHan.Shenbe404c22020-11-20 14:42:23 +080011#include <soc/sspm.h>
Wenbin Mei19858942020-09-25 10:03:02 +080012#include <soc/ufs.h>
CK Hu958ab462020-04-07 12:06:31 +080013#include <symbols.h>
14
Rex-BC Cheneef442d2021-07-12 15:01:11 +080015void bootmem_platform_add_ranges(void)
16{
17 if (CONFIG(MTK_DFD))
18 bootmem_add_range(DFD_DUMP_ADDRESS, DFD_DUMP_SIZE, BM_MEM_RESERVED);
19}
20
CK Hu958ab462020-04-07 12:06:31 +080021static void soc_read_resources(struct device *dev)
22{
Kyösti Mälkki85eb34e2022-06-20 14:13:36 +030023 ram_range(dev, 0, (uintptr_t)_dram, sdram_size());
CK Hu958ab462020-04-07 12:06:31 +080024}
25
26static void soc_init(struct device *dev)
27{
CK Hu3398f3152020-06-16 11:54:38 +080028 mtk_mmu_disable_l2c_sram();
Chien-Chih Tsenga39ea902020-12-14 14:59:39 +080029 apusys_init();
Nina Wu87c30a02020-09-04 10:11:27 +080030 dapc_init();
Yidi Linf4bf8f5f2020-07-29 19:18:38 +080031 mcupm_init();
TingHan.Shenbe404c22020-11-20 14:42:23 +080032 sspm_init();
Rex-BC Cheneef442d2021-07-12 15:01:11 +080033 if (CONFIG(MTK_DFD))
34 dfd_init();
Wenbin Mei19858942020-09-25 10:03:02 +080035 ufs_disable_refclk();
CK Hu958ab462020-04-07 12:06:31 +080036}
37
38static struct device_operations soc_ops = {
39 .read_resources = soc_read_resources,
Yu-Ping Wu39e6f852022-03-14 16:53:59 +080040 .set_resources = noop_set_resources,
CK Hu958ab462020-04-07 12:06:31 +080041 .init = soc_init,
42};
43
44static void enable_soc_dev(struct device *dev)
45{
46 dev->ops = &soc_ops;
47}
48
49struct chip_operations soc_mediatek_mt8192_ops = {
Nicholas Sudsgaardbfb11be2024-01-30 09:53:46 +090050 .name = "SOC Mediatek MT8192",
CK Hu958ab462020-04-07 12:06:31 +080051 .enable_dev = enable_soc_dev,
52};