From f35c074ad4dc1916496b13524f6b453ef5cf2635 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ky=C3=B6sti=20M=C3=A4lkki?= Date: Sat, 26 Jun 2021 14:12:54 +0300 Subject: soc/qualcomm: Do resource transition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For ipq806x this fixes two resources getting declared with same index. The latter previously overwrote former. Change-Id: Ifee321d930d5433c824e2e977f1bb455766582f0 Signed-off-by: Kyösti Mälkki Reviewed-on: https://review.coreboot.org/c/coreboot/+/55914 Tested-by: build bot (Jenkins) Reviewed-by: Felix Held --- src/soc/qualcomm/ipq806x/soc.c | 12 +++++++----- src/soc/qualcomm/qcs405/soc.c | 5 ++--- src/soc/qualcomm/sc7180/soc.c | 11 ++++------- src/soc/qualcomm/sc7280/soc.c | 20 +++++++------------- 4 files changed, 20 insertions(+), 28 deletions(-) (limited to 'src/soc') diff --git a/src/soc/qualcomm/ipq806x/soc.c b/src/soc/qualcomm/ipq806x/soc.c index 481ffc8e72..ad0510f021 100644 --- a/src/soc/qualcomm/ipq806x/soc.c +++ b/src/soc/qualcomm/ipq806x/soc.c @@ -5,14 +5,16 @@ #include #include -#define RESERVED_SIZE_KB (0x01500000 / KiB) +#define RESERVED_SIZE 0x01500000 /* 21 MiB */ static void soc_read_resources(struct device *dev) { - /* Reserve bottom 0x150_0000 bytes for NSS, SMEM, etc. */ - reserved_ram_resource_kb(dev, 0, (uintptr_t)_dram / KiB, RESERVED_SIZE_KB); - ram_resource_kb(dev, 0, (uintptr_t)_dram / KiB + RESERVED_SIZE_KB, - (CONFIG_DRAM_SIZE_MB * KiB) - RESERVED_SIZE_KB); + /* Reserve bottom 21 MiB for NSS, SMEM, etc. */ + uintptr_t reserve_ram_end = (uintptr_t)_dram + RESERVED_SIZE; + uint64_t ram_end = CONFIG_DRAM_SIZE_MB * (uint64_t)MiB; + + reserved_ram_from_to(dev, 0, (uintptr_t)_dram, reserve_ram_end); + ram_from_to(dev, 1, reserve_ram_end, ram_end); } static void soc_init(struct device *dev) diff --git a/src/soc/qualcomm/qcs405/soc.c b/src/soc/qualcomm/qcs405/soc.c index 4bcad748d2..f1a2def791 100644 --- a/src/soc/qualcomm/qcs405/soc.c +++ b/src/soc/qualcomm/qcs405/soc.c @@ -7,9 +7,8 @@ static void soc_read_resources(struct device *dev) { - ram_resource_kb(dev, 0, (uintptr_t)_dram / KiB, (1 * GiB) / KiB); - reserved_ram_resource_kb(dev, 1, (uintptr_t)_dram_reserved / KiB, - REGION_SIZE(dram_reserved) / KiB); + ram_range(dev, 0, (uintptr_t)_dram, 1 * GiB); + reserved_ram_range(dev, 1, (uintptr_t)_dram_reserved, REGION_SIZE(dram_reserved)); } static void soc_init(struct device *dev) diff --git a/src/soc/qualcomm/sc7180/soc.c b/src/soc/qualcomm/sc7180/soc.c index 93e36e2a6a..d8df98ace7 100644 --- a/src/soc/qualcomm/sc7180/soc.c +++ b/src/soc/qualcomm/sc7180/soc.c @@ -12,14 +12,11 @@ static void soc_read_resources(struct device *dev) void *start = NULL; void *end = NULL; - ram_resource_kb(dev, 0, (uintptr_t)ddr_region->offset / KiB, - ddr_region->size / KiB); - reserved_ram_resource_kb(dev, 1, (uintptr_t)_dram_aop / KiB, - REGION_SIZE(dram_aop) / KiB); - reserved_ram_resource_kb(dev, 2, (uintptr_t)_dram_soc / KiB, - REGION_SIZE(dram_soc) / KiB); + ram_range(dev, 0, (uintptr_t)ddr_region->offset, ddr_region->size); + reserved_ram_range(dev, 1, (uintptr_t)_dram_aop, REGION_SIZE(dram_aop)); + reserved_ram_range(dev, 2, (uintptr_t)_dram_soc, REGION_SIZE(dram_soc)); if (soc_modem_carve_out(&start, &end)) - reserved_ram_resource_kb(dev, 3, (uintptr_t)start / KiB, (end - start) / KiB); + reserved_ram_range(dev, 3, (uintptr_t)start, end - start); } static void soc_init(struct device *dev) diff --git a/src/soc/qualcomm/sc7280/soc.c b/src/soc/qualcomm/sc7280/soc.c index c99abdc287..c0c6a87934 100644 --- a/src/soc/qualcomm/sc7280/soc.c +++ b/src/soc/qualcomm/sc7280/soc.c @@ -12,20 +12,14 @@ static void soc_read_resources(struct device *dev) void *start = NULL; void *end = NULL; - ram_resource_kb(dev, 0, (uintptr_t)ddr_region->offset / KiB, - ddr_region->size / KiB); - reserved_ram_resource_kb(dev, 1, (uintptr_t)_dram_soc / KiB, - REGION_SIZE(dram_soc) / KiB); - reserved_ram_resource_kb(dev, 2, (uintptr_t)_dram_wlan / KiB, - REGION_SIZE(dram_wlan) / KiB); - reserved_ram_resource_kb(dev, 3, (uintptr_t)_dram_wpss / KiB, - REGION_SIZE(dram_wpss) / KiB); - reserved_ram_resource_kb(dev, 4, (uintptr_t)_dram_aop / KiB, - REGION_SIZE(dram_aop) / KiB); - reserved_ram_resource_kb(dev, 5, (uintptr_t)_dram_cpucp / KiB, - REGION_SIZE(dram_cpucp) / KiB); + ram_range(dev, 0, (uintptr_t)ddr_region->offset, ddr_region->size); + reserved_ram_range(dev, 1, (uintptr_t)_dram_soc, REGION_SIZE(dram_soc)); + reserved_ram_range(dev, 2, (uintptr_t)_dram_wlan, REGION_SIZE(dram_wlan)); + reserved_ram_range(dev, 3, (uintptr_t)_dram_wpss, REGION_SIZE(dram_wpss)); + reserved_ram_range(dev, 4, (uintptr_t)_dram_aop, REGION_SIZE(dram_aop)); + reserved_ram_range(dev, 5, (uintptr_t)_dram_cpucp, REGION_SIZE(dram_cpucp)); if (soc_modem_carve_out(&start, &end)) - reserved_ram_resource_kb(dev, 6, (uintptr_t)start / KiB, (end - start) / KiB); + reserved_ram_range(dev, 6, (uintptr_t)start, end - start); } static void soc_init(struct device *dev) -- cgit v1.2.3