blob: 1adf3f6959395c66308a64accfb13e41361b7a15 [file] [log] [blame]
huang linc14b54d2016-03-02 18:38:40 +08001/*
2 * This file is part of the coreboot project.
3 *
4 * Copyright 2015 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
Shunqian Zhengd1cec752016-05-04 16:21:36 +080016#include <bootmode.h>
huang linc14b54d2016-03-02 18:38:40 +080017#include <console/console.h>
Lin Huang19eb7502016-03-26 11:50:05 +080018#include <cpu/cpu.h>
huang linc14b54d2016-03-02 18:38:40 +080019#include <device/device.h>
Lin Huang19eb7502016-03-26 11:50:05 +080020#include <soc/addressmap.h>
Shunqian Zhengd1cec752016-05-04 16:21:36 +080021#include <soc/display.h>
huang linc14b54d2016-03-02 18:38:40 +080022#include <stddef.h>
Lin Huang19eb7502016-03-26 11:50:05 +080023#include <stdlib.h>
huang linc14b54d2016-03-02 18:38:40 +080024#include <string.h>
25#include <symbols.h>
26
27static void soc_read_resources(device_t dev)
28{
29 ram_resource(dev, 0, (uintptr_t)_dram / KiB,
Lin Huang19eb7502016-03-26 11:50:05 +080030 min(CONFIG_DRAM_SIZE_MB * KiB, MAX_DRAM_ADDRESS / KiB));
huang linc14b54d2016-03-02 18:38:40 +080031}
32
33static void soc_init(device_t dev)
34{
35 /* reserve bl31 image, which define in
36 * arm-trusted-firmware/plat/rockchip/rk3399/include/platform_def.h
37 */
Caesar Wang905a9332016-04-28 14:37:48 +080038 mmio_resource(dev, 1, (0x10000 / KiB), (0x80000 / KiB));
Shunqian Zhengd1cec752016-05-04 16:21:36 +080039
40 if (IS_ENABLED(CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT) && display_init_required())
41 rk_display_init(dev, (uintptr_t)_framebuffer,
42 _framebuffer_size);
43 else
44 printk(BIOS_INFO, "Display initialization disabled.\n");
huang linc14b54d2016-03-02 18:38:40 +080045}
46
47static struct device_operations soc_ops = {
48 .read_resources = soc_read_resources,
49 .init = soc_init,
50};
51
52static void enable_soc_dev(device_t dev)
53{
54 dev->ops = &soc_ops;
55}
56
57struct chip_operations soc_rockchip_rk3399_ops = {
Paul Menzel37277762016-07-03 09:45:26 +020058 CHIP_NAME("SOC Rockchip RK3399")
huang linc14b54d2016-03-02 18:38:40 +080059 .enable_dev = enable_soc_dev,
60};