soc/qualcomm/ipq40xx: Do resource transition

Change-Id: I93c16b563c7a4f4c653d2ebfd001170cb0fca82e
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/55918
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
This commit is contained in:
Kyösti Mälkki 2021-06-26 14:25:56 +03:00
parent 02a0d5c1a6
commit 7ffbe0a04e
1 changed files with 6 additions and 22 deletions

View File

@ -5,6 +5,7 @@
#include <symbols.h>
#include <soc/ipq_uart.h>
/* CONFIG_DRAM_SIZE_MB effectively extends hlos2. */
typedef struct {
uint8_t hlos1[112 * MiB], /* <-- 0x80000000 */
appsbl[4 * MiB], /* <-- 0x87000000 */
@ -13,34 +14,17 @@ typedef struct {
hlos2[128 * MiB]; /* <-- 0x88000000 */
} ipq_mem_map_t;
#define LINUX_REGION1_START ((uintptr_t)(ipq_mem_map->hlos1))
#define LINUX_REGION1_START_KB (LINUX_REGION1_START / KiB)
#define LINUX_REGION1_SIZE (sizeof(ipq_mem_map->hlos1) + \
sizeof(ipq_mem_map->appsbl) + \
sizeof(ipq_mem_map->sbl))
#define LINUX_REGION1_SIZE_KB (LINUX_REGION1_SIZE / KiB)
#define RESERVED_START ((uintptr_t)(ipq_mem_map->rsvd))
#define RESERVED_START_KB (RESERVED_START / KiB)
#define RESERVED_SIZE (sizeof(ipq_mem_map->rsvd))
#define RESERVED_SIZE_KB (RESERVED_SIZE / KiB)
/* xxx_SIZE defines not needed since it goes till end of memory */
#define LINUX_REGION2_START ((uintptr_t)(ipq_mem_map->hlos2))
#define LINUX_REGION2_START_KB (LINUX_REGION2_START / KiB)
static void soc_read_resources(struct device *dev)
{
ipq_mem_map_t *ipq_mem_map = ((ipq_mem_map_t *)_dram);
uint64_t ram_end = (uintptr_t)_dram + CONFIG_DRAM_SIZE_MB * (uint64_t)MiB;
ram_resource_kb(dev, 0, LINUX_REGION1_START_KB, LINUX_REGION1_SIZE_KB);
reserved_ram_resource_kb(dev, 1, RESERVED_START_KB, RESERVED_SIZE_KB);
ram_from_to(dev, 0, (uintptr_t)ipq_mem_map->hlos1, (uintptr_t)ipq_mem_map->rsvd);
reserved_ram_from_to(dev, 1, (uintptr_t)ipq_mem_map->rsvd,
(uintptr_t)ipq_mem_map->hlos2);
/* 0x88000000 to end, is the second region for Linux */
ram_resource_kb(dev, 2, LINUX_REGION2_START_KB,
(CONFIG_DRAM_SIZE_MB * KiB) -
LINUX_REGION1_SIZE_KB - RESERVED_SIZE_KB);
ram_from_to(dev, 2, (uintptr_t)ipq_mem_map->hlos2, ram_end);
}
static void soc_init(struct device *dev)