diff options
-rw-r--r-- | src/soc/rockchip/common/cbmem.c | 8 | ||||
-rw-r--r-- | src/soc/rockchip/rk3288/include/soc/addressmap.h | 2 | ||||
-rw-r--r-- | src/soc/rockchip/rk3399/include/soc/addressmap.h | 2 | ||||
-rw-r--r-- | src/soc/rockchip/rk3399/romstage.c | 4 | ||||
-rw-r--r-- | src/soc/rockchip/rk3399/soc.c | 7 |
5 files changed, 16 insertions, 7 deletions
diff --git a/src/soc/rockchip/common/cbmem.c b/src/soc/rockchip/common/cbmem.c index d06b292424..401f8b2a65 100644 --- a/src/soc/rockchip/common/cbmem.c +++ b/src/soc/rockchip/common/cbmem.c @@ -14,11 +14,13 @@ */ #include <cbmem.h> -#include <stddef.h> -#include <symbols.h> +#include <soc/addressmap.h> #include <soc/sdram.h> +#include <stdlib.h> +#include <symbols.h> void *cbmem_top(void) { - return _dram + sdram_size_mb()*MiB; + return (void *)min((uintptr_t)_dram + sdram_size_mb() * MiB, + MAX_DRAM_ADDRESS); } diff --git a/src/soc/rockchip/rk3288/include/soc/addressmap.h b/src/soc/rockchip/rk3288/include/soc/addressmap.h index ba59404f55..4842ee675b 100644 --- a/src/soc/rockchip/rk3288/include/soc/addressmap.h +++ b/src/soc/rockchip/rk3288/include/soc/addressmap.h @@ -16,6 +16,8 @@ #ifndef __SOC_ROCKCHIP_RK3288_ADDRESSMAP_H__ #define __SOC_ROCKCHIP_RK3288_ADDRESSMAP_H__ +#define MAX_DRAM_ADDRESS 0xFE000000 + #define SDMMC1_BASE 0xFF0C0000 #define SDMMC0_BASE 0xFF0D0000 #define EMMC_BASE 0xFF0F0000 diff --git a/src/soc/rockchip/rk3399/include/soc/addressmap.h b/src/soc/rockchip/rk3399/include/soc/addressmap.h index 8c1dacc08c..28cbd7a56e 100644 --- a/src/soc/rockchip/rk3399/include/soc/addressmap.h +++ b/src/soc/rockchip/rk3399/include/soc/addressmap.h @@ -16,6 +16,8 @@ #ifndef __SOC_ROCKCHIP_RK3399_ADDRESSMAP_H__ #define __SOC_ROCKCHIP_RK3399_ADDRESSMAP_H__ +#define MAX_DRAM_ADDRESS 0xF8000000 + #define PMUGRF_BASE 0xff320000 #define PMUSGRF_BASE 0xff330000 #define PMUCRU_BASE 0xff750000 diff --git a/src/soc/rockchip/rk3399/romstage.c b/src/soc/rockchip/rk3399/romstage.c index c7183b671e..05c853eb84 100644 --- a/src/soc/rockchip/rk3399/romstage.c +++ b/src/soc/rockchip/rk3399/romstage.c @@ -25,10 +25,12 @@ #include <program_loading.h> #include <romstage_handoff.h> #include <symbols.h> +#include <soc/addressmap.h> #include <soc/mmu_operations.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) { diff --git a/src/soc/rockchip/rk3399/soc.c b/src/soc/rockchip/rk3399/soc.c index aa21038e64..453dc0f595 100644 --- a/src/soc/rockchip/rk3399/soc.c +++ b/src/soc/rockchip/rk3399/soc.c @@ -13,18 +13,19 @@ * GNU General Public License for more details. */ -#include <cpu/cpu.h> #include <console/console.h> +#include <cpu/cpu.h> #include <device/device.h> -#include <stdlib.h> +#include <soc/addressmap.h> #include <stddef.h> +#include <stdlib.h> #include <string.h> #include <symbols.h> static void soc_read_resources(device_t dev) { 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) |