rockchip: make sure sdram top does not spill into MMIO space
The base address of MMIO space is different for different Rockchip SOCs. Define them in the appropriate address map files and use the definition in common code. BRANCH=none BUG=chrome-os-partner:51537 TEST=emerge-kevin coreboot Change-Id: I615f3cadd6d5d994b7dd1defbd10d02ad5c994da Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: 24f941e960e4a2cfb9fc26415f56e240de3d00d9 Original-Change-Id: Ia48d75e7de546b17636cde7829ee09837b9d7ac9 Original-Signed-off-by: Lin Huang <hl@rock-chips.com> Original-Reviewed-on: https://chromium-review.googlesource.com/337190 Original-Commit-Ready: Vadim Bendebury <vbendeb@chromium.org> Original-Tested-by: Vadim Bendebury <vbendeb@chromium.org> Original-Reviewed-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://review.coreboot.org/14717 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
c4cbf482f7
commit
19eb7509d3
|
@ -14,11 +14,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <cbmem.h>
|
#include <cbmem.h>
|
||||||
#include <stddef.h>
|
#include <soc/addressmap.h>
|
||||||
#include <symbols.h>
|
|
||||||
#include <soc/sdram.h>
|
#include <soc/sdram.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <symbols.h>
|
||||||
|
|
||||||
void *cbmem_top(void)
|
void *cbmem_top(void)
|
||||||
{
|
{
|
||||||
return _dram + sdram_size_mb()*MiB;
|
return (void *)min((uintptr_t)_dram + sdram_size_mb() * MiB,
|
||||||
|
MAX_DRAM_ADDRESS);
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
#ifndef __SOC_ROCKCHIP_RK3288_ADDRESSMAP_H__
|
#ifndef __SOC_ROCKCHIP_RK3288_ADDRESSMAP_H__
|
||||||
#define __SOC_ROCKCHIP_RK3288_ADDRESSMAP_H__
|
#define __SOC_ROCKCHIP_RK3288_ADDRESSMAP_H__
|
||||||
|
|
||||||
|
#define MAX_DRAM_ADDRESS 0xFE000000
|
||||||
|
|
||||||
#define SDMMC1_BASE 0xFF0C0000
|
#define SDMMC1_BASE 0xFF0C0000
|
||||||
#define SDMMC0_BASE 0xFF0D0000
|
#define SDMMC0_BASE 0xFF0D0000
|
||||||
#define EMMC_BASE 0xFF0F0000
|
#define EMMC_BASE 0xFF0F0000
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
#ifndef __SOC_ROCKCHIP_RK3399_ADDRESSMAP_H__
|
#ifndef __SOC_ROCKCHIP_RK3399_ADDRESSMAP_H__
|
||||||
#define __SOC_ROCKCHIP_RK3399_ADDRESSMAP_H__
|
#define __SOC_ROCKCHIP_RK3399_ADDRESSMAP_H__
|
||||||
|
|
||||||
|
#define MAX_DRAM_ADDRESS 0xF8000000
|
||||||
|
|
||||||
#define PMUGRF_BASE 0xff320000
|
#define PMUGRF_BASE 0xff320000
|
||||||
#define PMUSGRF_BASE 0xff330000
|
#define PMUSGRF_BASE 0xff330000
|
||||||
#define PMUCRU_BASE 0xff750000
|
#define PMUCRU_BASE 0xff750000
|
||||||
|
|
|
@ -25,10 +25,12 @@
|
||||||
#include <program_loading.h>
|
#include <program_loading.h>
|
||||||
#include <romstage_handoff.h>
|
#include <romstage_handoff.h>
|
||||||
#include <symbols.h>
|
#include <symbols.h>
|
||||||
|
#include <soc/addressmap.h>
|
||||||
#include <soc/mmu_operations.h>
|
#include <soc/mmu_operations.h>
|
||||||
#include <soc/sdram.h>
|
#include <soc/sdram.h>
|
||||||
|
|
||||||
static const uint64_t dram_size = (uint64_t)CONFIG_DRAM_SIZE_MB * MiB;
|
static const uint64_t dram_size =
|
||||||
|
(uint64_t)min((uint64_t)CONFIG_DRAM_SIZE_MB * MiB, MAX_DRAM_ADDRESS);
|
||||||
|
|
||||||
void main(void)
|
void main(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,18 +13,19 @@
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <cpu/cpu.h>
|
|
||||||
#include <console/console.h>
|
#include <console/console.h>
|
||||||
|
#include <cpu/cpu.h>
|
||||||
#include <device/device.h>
|
#include <device/device.h>
|
||||||
#include <stdlib.h>
|
#include <soc/addressmap.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <symbols.h>
|
#include <symbols.h>
|
||||||
|
|
||||||
static void soc_read_resources(device_t dev)
|
static void soc_read_resources(device_t dev)
|
||||||
{
|
{
|
||||||
ram_resource(dev, 0, (uintptr_t)_dram / KiB,
|
ram_resource(dev, 0, (uintptr_t)_dram / KiB,
|
||||||
CONFIG_DRAM_SIZE_MB * KiB);
|
min(CONFIG_DRAM_SIZE_MB * KiB, MAX_DRAM_ADDRESS / KiB));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void soc_init(device_t dev)
|
static void soc_init(device_t dev)
|
||||||
|
|
Loading…
Reference in New Issue