[PATCH v2 16/20] board: rockchip: add Theobroma-Systems RK3588 Jaguar SBC
Jonas Karlman
jonas at kwiboo.se
Sun Feb 11 22:34:39 CET 2024
Hi Quentin,
On 2024-02-09 10:50, Quentin Schulz wrote:
> From: Quentin Schulz <quentin.schulz at theobroma-systems.com>
>
> JAGUAR is a Single-Board Computer (SBC) based around the rk3588 SoC and
> is targeting Autonomous Mobile Robots (AMR).
>
> It features:
> * LPDDR4X (up to 16GB)
> * 1Gbps Ethernet on RJ45 connector (KSZ9031 or KSZ9131)
> * PCIe 3.0 4-lane on M.2 M-key connector
> * PCIe 2.1 1-lane on M.2 E-key
> * USB 2.0 on M.2 E-key
> * 2x USB3 OTG type-c ports with DP Alt-Mode
> * USB2 host port
> * HDMI output
> * 2x camera connectors, each exposing:
> * 2-lane MIPI-CSI
> * 1v2, 1v8, 2v8 power rails
> * I2C bus
> * GPIOs
> * PPS input
> * CAN
> * RS485 UART
> * FAN connector
> * SD card slot
> * eMMC (up to 256GB)
> * RTC backup battery
> * Companion microcontroller
> * ISL1208 RTC emulation
> * AMC6821 PWM emulation
> * On/off buzzer control
> * Secure Element
> * 80-pin Mezzanine connector for daughterboards:
> * GPIOs
> * 1Gbps Ethernet
> * PCIe 2.1 1-lane
> * 2x 2-lane MIPI-CSI
> * ADC channel
> * I2C bus
> * PWM
> * UART
> * SPI
> * SDIO
> * CAN
> * I2S
> * 1v8, 3v3, 5v0, dc-in (12-24V) power rails
>
> The Device Tree comes from next-20240110 Linux kernel.
>
> Cc: Quentin Schulz <foss+uboot at 0leil.net>
> Signed-off-by: Quentin Schulz <quentin.schulz at theobroma-systems.com>
> ---
> arch/arm/dts/Makefile | 1 +
> arch/arm/dts/rk3588-jaguar-u-boot.dtsi | 38 +
> arch/arm/dts/rk3588-jaguar.dts | 803 +++++++++++++++++++++
> arch/arm/mach-rockchip/rk3588/Kconfig | 28 +
> board/theobroma-systems/jaguar_rk3588/Kconfig | 16 +
> board/theobroma-systems/jaguar_rk3588/MAINTAINERS | 13 +
> board/theobroma-systems/jaguar_rk3588/Makefile | 10 +
> .../jaguar_rk3588/jaguar_rk3588.c | 52 ++
> configs/jaguar-rk3588_defconfig | 115 +++
> doc/board/index.rst | 1 +
> doc/board/rockchip/rockchip.rst | 1 +
> doc/board/theobroma-systems/index.rst | 9 +
> doc/board/theobroma-systems/jaguar_rk3588.rst | 100 +++
> include/configs/jaguar_rk3588.h | 15 +
> 14 files changed, 1202 insertions(+)
>
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 3beb8f1b9d4..7c103655e1d 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -193,6 +193,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3588) += \
> rk3588-edgeble-neu6a-io.dtb \
> rk3588-edgeble-neu6b-io.dtb \
> rk3588-evb1-v10.dtb \
> + rk3588-jaguar.dtb \
> rk3588-nanopc-t6.dtb \
> rk3588s-orangepi-5.dtb \
> rk3588-orangepi-5-plus.dtb \
> diff --git a/arch/arm/dts/rk3588-jaguar-u-boot.dtsi b/arch/arm/dts/rk3588-jaguar-u-boot.dtsi
> new file mode 100644
> index 00000000000..a0207c265c9
> --- /dev/null
> +++ b/arch/arm/dts/rk3588-jaguar-u-boot.dtsi
> @@ -0,0 +1,38 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (c) 2023 Theobroma Systems Design und Consulting GmbH
> + */
> +
> +#include "rk3588-u-boot.dtsi"
> +#include <dt-bindings/pinctrl/rockchip.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/usb/pd.h>
These dt-bindings includes should not be needed in this file.
> +
> +/ {
> + chosen {
> + u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc;
Is there specific reasoning behind why eMMC is listed before SD-card?
rk3588-u-boot.dtsi should now contain a default with a same-as-spl >
SD-card > eMMC order.
Also guess in practice it should not matter mutch, if TPL/SPL is running
from eMMC it will read FIT from eMMC > eMMC > SD-card. And if TPL/SPL is
running from SD-card it will read FIT from SD-card > eMMC > SD-card.
Main difference would be if TPL/SPL is running from SPI, then it will
read FIT from SPI > eMMC > SD-card instead of SPI > SD-card > eMMC.
In my mind anything after same-as-spl would mostly be used for recovery.
And preferring SD-card may ease in such situation?
> + };
> +};
> +
> +&emmc_pwrseq {
> + bootph-all;
> +};
> +
> +&emmc_reset {
> + bootph-all;
> +};
> +
> +&gpio0 {
> + bootph-all;
> +};
> +
> +&gpio2 {
> + bootph-all;
I am guessing that emmc_pwrseq, gpio0 and gpio2 would not be needed in
TPL so bootph-all could be too inclusive, for now I guess this does not
really matter because an external TPL blob is used anyway.
Regards,
Jonas
> +};
> +
> +&sdhci {
> + /* U-Boot currently cannot handle anything below HS200 for eMMC on RK3588 */
> + /delete-property/ mmc-ddr-1_8v;
> + /delete-property/ cap-mmc-highspeed;
> +};
[snip]
More information about the U-Boot
mailing list