mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-26 15:28:50 +00:00

Add support for Arm sbsa [1] v0.3+ that is supported by QEMU [2]. Unlike other Arm based platforms the machine only provides a minimal FDT that contains number of CPUs, ammount of memory and machine-version. The boot firmware has to provide ACPI tables to the OS. Due to this design a full DTB is added here as well that allows U-Boot's driver to properly function. The DTB is appended at the end of the U-Boot image and will be merged with the QEMU provided DTB. In addition provide documentation how to use, enable binman to fabricate both ROMs that are required to boot and add ACPI tables to make it full compatible to the EDK2 reference implementation. The board was tested using Fedora 40 Aarch64 Workstation. It's able to boot from USB and AHCI or network. Tested and found working: - serial - PCI - xHCI - Bochs display - AHCI - network using e1000e - CPU init - Booting Fedora 40 1: Server Base System Architecture (SBSA) 2: https://www.qemu.org/docs/master/system/arm/sbsa.html Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Cc: Peter Robinson <pbrobinson@gmail.com> Cc: Simon Glass <sjg@chromium.org> Cc: Tom Rini <trini@konsulko.com>
138 lines
2.8 KiB
Text
138 lines
2.8 KiB
Text
// SPDX-License-Identifier: GPL-2.0+ OR MIT
|
|
/*
|
|
* Devicetree with onboard devices for qemu_sbsa-ref for internal use only!
|
|
* DO NOT PASS TO THE OS!
|
|
*
|
|
* As QEMU provides only a minimal devicetree this one is merged with
|
|
* it and then fixed at runtime.
|
|
*
|
|
* Copyright 2024 9elements GmbH
|
|
*/
|
|
#include "configs/qemu-sbsa.h"
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
|
|
/dts-v1/;
|
|
|
|
/ {
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
interrupt-parent = <&intc>;
|
|
compatible = "linux,sbsa-ref";
|
|
|
|
binman: binman {
|
|
multiple-images;
|
|
};
|
|
|
|
cpus {
|
|
/* Filled by fdtdec_board_setup() */
|
|
};
|
|
|
|
memory {
|
|
/* Filled by fdtdec_board_setup() */
|
|
};
|
|
|
|
soc {
|
|
compatible = "simple-bus";
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
ranges;
|
|
|
|
cfi_flash {
|
|
compatible = "cfi-flash";
|
|
reg = /bits/ 64 <SBSA_FLASH_BASE_ADDR
|
|
SBSA_FLASH_LENGTH>;
|
|
status = "okay";
|
|
};
|
|
|
|
uart0 {
|
|
compatible = "arm,pl011";
|
|
status = "okay";
|
|
reg = /bits/ 64 <SBSA_UART_BASE_ADDR
|
|
SBSA_UART_LENGTH>;
|
|
};
|
|
|
|
ahci {
|
|
compatible = "generic-ahci";
|
|
status = "okay";
|
|
reg = /bits/ 64 <0x60100000 0x00010000>;
|
|
};
|
|
|
|
xhci {
|
|
compatible = "generic-xhci";
|
|
status = "okay";
|
|
reg = /bits/ 64 <0x60110000 0x00010000>;
|
|
};
|
|
|
|
pci {
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
compatible = "pci-host-ecam-generic";
|
|
device_type = "pci";
|
|
status = "okay";
|
|
reg = /bits/ 64 <0xf0000000 0x10000000>;
|
|
bus-range = <0 0xff>;
|
|
ranges = /bits/ 32 <0x01000000>,
|
|
/bits/ 64 <0
|
|
SBSA_PIO_BASE_ADDR
|
|
SBSA_PIO_LENGTH>,
|
|
/bits/ 32 <0x02000000>,
|
|
/bits/ 64 <SBSA_PCIE_MMIO_BASE_ADDR
|
|
SBSA_PCIE_MMIO_BASE_ADDR
|
|
SBSA_PCIE_MMIO_LENGTH>,
|
|
/bits/ 32 <0x43000000>,
|
|
/bits/ 64 <SBSA_PCIE_MMIO_HIGH_BASE_ADDR
|
|
SBSA_PCIE_MMIO_HIGH_BASE_ADDR
|
|
SBSA_PCIE_MMIO_HIGH_LENGTH>;
|
|
};
|
|
};
|
|
|
|
intc: interrupt-controller {
|
|
compatible = "arm,gic-v3";
|
|
#interrupt-cells = <3>;
|
|
status = "okay";
|
|
interrupt-controller;
|
|
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
|
|
reg = /bits/ 64 <SBSA_GIC_DIST_BASE_ADDR SBSA_GIC_DIST_LENGTH>,
|
|
/bits/ 64 <SBSA_GIC_REDIST_BASE_ADDR SBSA_GIC_REDIST_LENGTH>,
|
|
/bits/ 64 <0 0>,
|
|
/bits/ 64 <SBSA_GIC_HBASE_ADDR SBSA_GIC_HBASE_LENGTH>,
|
|
/bits/ 64 <SBSA_GIC_VBASE_ADDR SBSA_GIC_VBASE_LENGTH>;
|
|
};
|
|
|
|
its {
|
|
compatible = "arm,gic-v3-its";
|
|
status = "disabled";
|
|
};
|
|
};
|
|
|
|
&binman {
|
|
secure-world {
|
|
filename = "secure-world.rom";
|
|
size = <SBSA_SECURE_FLASH_LENGTH>;
|
|
|
|
bl1 {
|
|
offset = <0x0>;
|
|
description = "ARM Trusted Firmware BL1";
|
|
filename = "bl1.bin";
|
|
type = "blob-ext";
|
|
};
|
|
|
|
fip {
|
|
offset = <0x12000>;
|
|
description = "ARM Trusted Firmware FIP";
|
|
filename = "fip.bin";
|
|
type = "blob-ext";
|
|
};
|
|
};
|
|
|
|
unsecure-world {
|
|
filename = "unsecure-world.rom";
|
|
size = <SBSA_FLASH_LENGTH>;
|
|
|
|
u-boot {
|
|
};
|
|
u-boot-dtb {
|
|
compress = "lz4";
|
|
};
|
|
};
|
|
};
|