mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 09:54:35 +00:00
arm: total_compute: depend on TF-A for hardware description
On Total Compute, TF-A passes the info via DT binding for the hardware description - includes the serial, memory, and arm_ffa nodes. This commit initializes the fdt base address based on the passed the register x1. The similar implementation has already been done for the raspberry pi, so borrow a lot of it. Co-developed-by: Jackson Cooper-Driver <jackson.cooper-driver@arm.com> Signed-off-by: Jackson Cooper-Driver <jackson.cooper-driver@arm.com> Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com> Signed-off-by: Leo Yan <leo.yan@arm.com>
This commit is contained in:
parent
625d40ab12
commit
ed36494724
5 changed files with 35 additions and 38 deletions
|
@ -1390,6 +1390,7 @@ config TARGET_TOTAL_COMPUTE
|
|||
select DM_SERIAL
|
||||
select DM_MMC
|
||||
select DM_GPIO
|
||||
imply OF_HAS_PRIOR_STAGE
|
||||
|
||||
config TARGET_LS2080A_EMU
|
||||
bool "Support ls2080a_emu"
|
||||
|
|
|
@ -4,3 +4,4 @@
|
|||
# Usama Arif <usama.arif@arm.com>
|
||||
|
||||
obj-y := total_compute.o
|
||||
obj-y += lowlevel_init.o
|
||||
|
|
12
board/armltd/total_compute/lowlevel_init.S
Normal file
12
board/armltd/total_compute/lowlevel_init.S
Normal file
|
@ -0,0 +1,12 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* (C) Copyright 2024 Arm Limited
|
||||
*/
|
||||
|
||||
.global save_boot_params
|
||||
save_boot_params:
|
||||
/* The firmware provided FDT address via x1 */
|
||||
adr x8, fw_dtb_pointer
|
||||
str x1, [x8]
|
||||
|
||||
b save_boot_params_ret
|
|
@ -7,19 +7,10 @@
|
|||
#include <config.h>
|
||||
#include <dm.h>
|
||||
#include <dm/platform_data/serial_pl01x.h>
|
||||
#include <env.h>
|
||||
#include <asm/armv8/mmu.h>
|
||||
#include <asm/global_data.h>
|
||||
|
||||
static const struct pl01x_serial_plat serial_plat = {
|
||||
.base = UART0_BASE,
|
||||
.type = TYPE_PL011,
|
||||
.clock = CFG_PL011_CLOCK,
|
||||
};
|
||||
|
||||
U_BOOT_DRVINFO(total_compute_serials) = {
|
||||
.name = "serial_pl01x",
|
||||
.plat = &serial_plat,
|
||||
};
|
||||
#include <asm/system.h>
|
||||
|
||||
static struct mm_region total_compute_mem_map[] = {
|
||||
{
|
||||
|
@ -43,6 +34,23 @@ static struct mm_region total_compute_mem_map[] = {
|
|||
|
||||
struct mm_region *mem_map = total_compute_mem_map;
|
||||
|
||||
/*
|
||||
* Push the variable into the .data section so that it
|
||||
* does not get cleared later.
|
||||
*/
|
||||
unsigned long __section(".data") fw_dtb_pointer;
|
||||
|
||||
void *board_fdt_blob_setup(int *err)
|
||||
{
|
||||
*err = 0;
|
||||
if (fdt_magic(fw_dtb_pointer) != FDT_MAGIC) {
|
||||
*err = -ENXIO;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (void *)fw_dtb_pointer;
|
||||
}
|
||||
|
||||
int board_init(void)
|
||||
{
|
||||
return 0;
|
||||
|
@ -50,19 +58,12 @@ int board_init(void)
|
|||
|
||||
int dram_init(void)
|
||||
{
|
||||
gd->ram_size = PHYS_SDRAM_1_SIZE;
|
||||
return 0;
|
||||
return fdtdec_setup_mem_size_base();
|
||||
}
|
||||
|
||||
int dram_init_banksize(void)
|
||||
{
|
||||
gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
|
||||
gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
|
||||
|
||||
gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
|
||||
gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
|
||||
|
||||
return 0;
|
||||
return fdtdec_setup_memory_banksize();
|
||||
}
|
||||
|
||||
/* Nothing to be done here as handled by PSCI interface */
|
||||
|
|
|
@ -11,24 +11,6 @@
|
|||
|
||||
/* Link Definitions */
|
||||
|
||||
/* AP non-secure UART base address */
|
||||
#define UART0_BASE 0x2A400000
|
||||
|
||||
/* PL011 Serial Configuration */
|
||||
#define CFG_PL011_CLOCK 7372800
|
||||
|
||||
/* Miscellaneous configurable options */
|
||||
|
||||
/* Physical Memory Map */
|
||||
#define PHYS_SDRAM_1 0x80000000
|
||||
/* Top 48MB reserved for secure world use */
|
||||
#define DRAM_SEC_SIZE 0x03000000
|
||||
#define PHYS_SDRAM_1_SIZE 0x80000000 - DRAM_SEC_SIZE
|
||||
#define CFG_SYS_SDRAM_BASE PHYS_SDRAM_1
|
||||
|
||||
#define PHYS_SDRAM_2 0x8080000000
|
||||
#define PHYS_SDRAM_2_SIZE 0x180000000
|
||||
|
||||
#define CFG_EXTRA_ENV_SETTINGS \
|
||||
"bootm_size=0x20000000\0" \
|
||||
"load_addr=0xa0000000\0" \
|
||||
|
|
Loading…
Add table
Reference in a new issue