blob: c9c2147cc8d61384f353ea8893802cc5ffd5ab14 [file] [log] [blame]
Tristan Shieh0eb92df2018-06-08 18:21:45 +08001/*
2 * This file is part of the coreboot project.
3 *
4 * Copyright 2018 MediaTek Inc.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#include <device/device.h>
Tristan Shieh9315a042018-08-06 13:57:50 +080017#include <soc/emi.h>
Yanjie Jiang64dea2e2019-05-07 10:31:07 +080018#include <soc/md_ctrl.h>
Tristan Shieh0eb92df2018-06-08 18:21:45 +080019#include <soc/mmu_operations.h>
Erin Lobbeed7a2019-07-16 10:08:33 +080020#include <soc/sspm.h>
Tristan Shieh9315a042018-08-06 13:57:50 +080021#include <symbols.h>
22
Tristan Shieh9315a042018-08-06 13:57:50 +080023static void soc_read_resources(struct device *dev)
24{
25 ram_resource(dev, 0, (uintptr_t)_dram / KiB, sdram_size() / KiB);
26}
Tristan Shieh0eb92df2018-06-08 18:21:45 +080027
28static void soc_init(struct device *dev)
29{
30 mtk_mmu_disable_l2c_sram();
Yanjie Jiang64dea2e2019-05-07 10:31:07 +080031 mtk_md_early_init();
Erin Lobbeed7a2019-07-16 10:08:33 +080032 sspm_init();
Tristan Shieh0eb92df2018-06-08 18:21:45 +080033}
34
35static struct device_operations soc_ops = {
Tristan Shieh9315a042018-08-06 13:57:50 +080036 .read_resources = soc_read_resources,
Tristan Shieh0eb92df2018-06-08 18:21:45 +080037 .init = soc_init,
38};
39
40static void enable_soc_dev(struct device *dev)
41{
42 dev->ops = &soc_ops;
43}
44
45struct chip_operations soc_mediatek_mt8183_ops = {
46 CHIP_NAME("SOC Mediatek MT8183")
47 .enable_dev = enable_soc_dev,
48};