board: toradex: add verdin am62p support

This adds initial support for the Toradex Verdin AM62P module.

The module consists of an TI AM62P family SoC, a TPS65219 PMIC, a
Gigabit Ethernet PHY, up to 8GB of LPDDR4 RAM, an eMMC, a TLA2024 ADC,
an I2C EEPROM, an RX8130 RTC, plus an optional Bluetooth/Wi-Fi module.

These specific changes adds support for Toradex Verdin AM62P Quad 2GB WB
IT module.

Link: https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
Link: https://www.toradex.com/products/carrier-board/verdin-development-board-kit
Signed-off-by: Parth Pancholi <parth.pancholi@toradex.com>
Signed-off-by: Vitor Soares <vitor.soares@toradex.com>
This commit is contained in:
Parth Pancholi
2025-05-19 16:47:45 +01:00
committed by Tom Rini
parent 4c93407165
commit b8c43968b8
26 changed files with 8340 additions and 1 deletions

View File

@@ -1111,7 +1111,9 @@ dtb-$(CONFIG_SOC_K3_AM62A7) += \
k3-am62a7-r5-sk.dtb \
k3-am62a7-r5-phycore-som-2gb.dtb
dtb-$(CONFIG_SOC_K3_AM62P5) += k3-am62p5-r5-sk.dtb
dtb-$(CONFIG_SOC_K3_AM62P5) += k3-am62p5-r5-sk.dtb \
k3-am62p5-verdin-r5.dtb \
k3-am62p5-verdin-wifi-dev.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += \
mt7622-rfb.dtb \

View File

@@ -0,0 +1,243 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
* Copyright 2025 Toradex
*
* Common dtsi for Verdin AM62P SoM on Development carrier board
*
* https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
* https://www.toradex.com/products/carrier-board/verdin-development-board-kit
*/
/ {
aliases {
eeprom1 = &carrier_eeprom;
};
sound {
compatible = "simple-audio-card";
simple-audio-card,bitclock-master = <&codec_dai>;
simple-audio-card,format = "i2s";
simple-audio-card,frame-master = <&codec_dai>;
simple-audio-card,mclk-fs = <256>;
simple-audio-card,name = "verdin-nau8822";
simple-audio-card,routing =
"Headphones", "LHP",
"Headphones", "RHP",
"Speaker", "LSPK",
"Speaker", "RSPK",
"Line Out", "AUXOUT1",
"Line Out", "AUXOUT2",
"LAUX", "Line In",
"RAUX", "Line In",
"LMICP", "Mic In",
"RMICP", "Mic In";
simple-audio-card,widgets =
"Headphones", "Headphones",
"Line Out", "Line Out",
"Speaker", "Speaker",
"Microphone", "Mic In",
"Line", "Line In";
codec_dai: simple-audio-card,codec {
sound-dai = <&nau8822_1a>;
};
simple-audio-card,cpu {
sound-dai = <&mcasp0>;
};
};
};
/* Verdin ETHs */
&cpsw3g {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_rgmii1>, <&pinctrl_rgmii2>;
status = "okay";
};
/* MDIO, shared by Verdin ETH_1 (On-module PHY) and Verdin ETH_2_RGMII */
&cpsw3g_mdio {
status = "okay";
carrier_eth_phy: ethernet-phy@7 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <7>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_eth2_rgmii_int>;
interrupt-parent = <&main_gpio0>;
interrupts = <42 IRQ_TYPE_EDGE_FALLING>;
micrel,led-mode = <0>;
};
};
/* Verdin ETH_1 (On-module PHY) */
&cpsw_port1 {
status = "okay";
};
/* Verdin ETH_2_RGMII */
&cpsw_port2 {
phy-handle = <&carrier_eth_phy>;
phy-mode = "rgmii-rxid";
status = "okay";
};
/* Verdin PWM_3_DSI */
&epwm0 {
status = "okay";
};
/* Verdin PWM_1, PWM_2 */
&epwm2 {
status = "okay";
};
&main_gpio0 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_pcie_1_reset>,
<&pinctrl_gpio_5>,
<&pinctrl_gpio_6>,
<&pinctrl_gpio_7>,
<&pinctrl_gpio_8>;
};
/* Verdin I2C_1 */
&main_i2c0 {
status = "okay";
nau8822_1a: audio-codec@1a {
compatible = "nuvoton,nau8822";
reg = <0x1a>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2s1_mclk>;
#sound-dai-cells = <0>;
};
carrier_gpio_expander: gpio@21 {
compatible = "nxp,pcal6416";
reg = <0x21>;
#gpio-cells = <2>;
gpio-controller;
};
/* Current measurement into module VCC */
hwmon@40 {
compatible = "ti,ina219";
reg = <0x40>;
shunt-resistor = <10000>;
};
temperature-sensor@4f {
compatible = "ti,tmp75c";
reg = <0x4f>;
};
carrier_eeprom: eeprom@57 {
compatible = "st,24c02", "atmel,24c02";
reg = <0x57>;
pagesize = <16>;
};
};
/* Verdin I2C_2_DSI */
&main_i2c1 {
status = "okay";
};
/* Verdin I2C_4_CSI */
&main_i2c3 {
status = "okay";
};
/* Verdin CAN_1 */
&main_mcan0 {
status = "okay";
};
/* Verdin SPI_1 */
&main_spi1 {
status = "okay";
};
/* Verdin UART_3, used as the Linux console */
&main_uart0 {
status = "okay";
};
/* Verdin UART_1, connector X50 through RS485 transceiver */
&main_uart1 {
rs485-rx-during-tx;
linux,rs485-enabled-at-boot-time;
status = "okay";
};
/* Verdin I2S_1 */
&mcasp0 {
status = "okay";
};
&mcu_gpio0 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_gpio_1>,
<&pinctrl_gpio_2>,
<&pinctrl_gpio_3>,
<&pinctrl_gpio_4>;
};
/* Verdin I2C_3_HDMI */
&mcu_i2c0 {
status = "okay";
};
/* Verdin CAN_2 */
&mcu_mcan0 {
status = "okay";
};
/* Verdin UART_4 */
&mcu_uart0 {
status = "okay";
};
/* Verdin QSPI_1 */
&ospi0 {
status = "okay";
};
/* Verdin SD_1 */
&sdhci1 {
status = "okay";
};
/* Verdin USB_1 */
&usbss0 {
status = "okay";
};
&usb0 {
status = "okay";
};
/* Verdin USB_2 */
&usbss1 {
status = "okay";
};
&usb1 {
status = "okay";
};
/* Verdin CTRL_WAKE1_MICO# */
&verdin_gpio_keys {
status = "okay";
};
/* Verdin PCIE_1_RESET# */
&verdin_pcie_1_reset_hog {
status = "okay";
};
/* Verdin UART_2 */
&wkup_uart0 {
status = "okay";
};

View File

@@ -0,0 +1,31 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
* Copyright 2025 Toradex
*
* Common dtsi for Verdin AM62P SoM WB variant
*
* https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
*/
/* On-module Bluetooth */
&main_uart6 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_uart6>;
uart-has-rtscts;
status = "okay";
bluetooth {
compatible = "nxp,88w8987-bt";
fw-init-baudrate = <3000000>;
};
};
/* On-module Wi-Fi */
&sdhci2 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sdhci2>;
keep-power-in-suspend;
non-removable;
ti,fails-without-test-cd;
status = "okay";
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,84 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
* Toradex Verdin AM62P dts file for R5 SPL
* Copyright 2025 Toradex - https://www.toradex.com/
*/
#include "k3-am62p5-verdin-wifi-dev.dts"
#include "k3-am62p5-verdin-lpddr4-1600.dtsi"
#include "k3-am62a-ddr.dtsi"
#include "k3-am62p5-verdin-wifi-dev-u-boot.dtsi"
/ {
aliases {
remoteproc0 = &sysctrler;
remoteproc1 = &a53_0;
};
a53_0: a53@0 {
compatible = "ti,am654-rproc";
reg = <0x00 0x00a90000 0x00 0x10>;
power-domains = <&k3_pds 61 TI_SCI_PD_EXCLUSIVE>,
<&k3_pds 135 TI_SCI_PD_EXCLUSIVE>,
<&k3_pds 166 TI_SCI_PD_EXCLUSIVE>;
resets = <&k3_reset 135 0>;
clocks = <&k3_clks 61 0>, <&k3_clks 135 0>;
clock-names = "gtc", "core";
assigned-clocks = <&k3_clks 61 0>, <&k3_clks 135 0>, <&k3_clks 157 36>;
assigned-clock-parents = <&k3_clks 61 2>, <0>, <&k3_clks 157 38>;
assigned-clock-rates = <200000000>, <1200000000>, <25000000>;
ti,sci = <&dmsc>;
ti,sci-proc-id = <32>;
ti,sci-host-id = <10>;
bootph-all;
};
dm_tifs: dm-tifs {
compatible = "ti,j721e-dm-sci";
ti,host-id = <36>;
ti,secure-host;
mbox-names = "rx", "tx";
mboxes= <&secure_proxy_main 20>,
<&secure_proxy_main 21>;
bootph-all;
};
};
&cbass_main {
sa3_secproxy: secproxy@44880000 {
compatible = "ti,am654-secure-proxy";
#mbox-cells = <1>;
reg = <0x00 0x44880000 0x00 0x20000>,
<0x00 0x44860000 0x00 0x20000>,
<0x00 0x43600000 0x00 0x10000>;
reg-names = "rt", "scfg", "target_data";
bootph-all;
};
sysctrler: sysctrler {
compatible = "ti,am654-system-controller";
mboxes= <&secure_proxy_main 1>,
<&secure_proxy_main 0>,
<&sa3_secproxy 0>;
mbox-names = "tx", "rx", "boot_notify";
bootph-all;
};
};
&dmsc {
mboxes= <&secure_proxy_main 0>,
<&secure_proxy_main 1>,
<&secure_proxy_main 0>;
mbox-names = "rx", "tx", "notify";
ti,host-id = <35>;
ti,secure-host;
};
&main_timer0 {
/delete-property/ clocks;
/delete-property/ clocks-names;
/delete-property/ assigned-clocks;
/delete-property/ assigned-clock-parents;
clock-frequency = <25000000>;
};

View File

@@ -0,0 +1,325 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
* Copyright 2025 Toradex
*/
#include "k3-binman.dtsi"
#if IS_ENABLED(CONFIG_TARGET_VERDIN_AM62P_R5)
&binman {
tiboot3-am62px-hs-fs-verdin.bin {
filename = "tiboot3-am62px-hs-fs-verdin.bin";
symlink = "tiboot3.bin";
ti-secure-rom {
content = <&u_boot_spl_fs>, <&ti_fs_enc_fs>, <&combined_tifs_cfg_fs>,
<&combined_dm_cfg_fs>, <&sysfw_inner_cert_fs>;
combined;
dm-data;
sysfw-inner-cert;
keyfile = "custMpk.pem";
sw-rev = <1>;
content-sbl = <&u_boot_spl_fs>;
content-sysfw = <&ti_fs_enc_fs>;
content-sysfw-data = <&combined_tifs_cfg_fs>;
content-sysfw-inner-cert = <&sysfw_inner_cert_fs>;
content-dm-data = <&combined_dm_cfg_fs>;
load = <0x43c00000>;
load-sysfw = <0x40000>;
load-sysfw-data = <0x67000>;
load-dm-data = <0x43c4a800>;
};
u_boot_spl_fs: u-boot-spl {
no-expanded;
};
ti_fs_enc_fs: ti-fs-enc.bin {
filename = "ti-sysfw/ti-fs-firmware-am62px-hs-fs-enc.bin";
type = "blob-ext";
optional;
};
combined_tifs_cfg_fs: combined-tifs-cfg.bin {
filename = "combined-tifs-cfg.bin";
type = "blob-ext";
};
sysfw_inner_cert_fs: sysfw-inner-cert {
filename = "ti-sysfw/ti-fs-firmware-am62px-hs-fs-cert.bin";
type = "blob-ext";
optional;
};
combined_dm_cfg_fs: combined-dm-cfg.bin {
filename = "combined-dm-cfg.bin";
type = "blob-ext";
};
};
tiboot3-am62px-hs-verdin.bin {
filename = "tiboot3-am62px-hs-verdin.bin";
ti-secure-rom {
content = <&u_boot_spl_hs>, <&ti_fs_enc_hs>, <&combined_tifs_cfg_hs>,
<&combined_dm_cfg_hs>, <&sysfw_inner_cert_hs>;
combined;
dm-data;
sysfw-inner-cert;
keyfile = "custMpk.pem";
sw-rev = <1>;
content-sbl = <&u_boot_spl_hs>;
content-sysfw = <&ti_fs_enc_hs>;
content-sysfw-data = <&combined_tifs_cfg_hs>;
content-sysfw-inner-cert = <&sysfw_inner_cert_hs>;
content-dm-data = <&combined_dm_cfg_hs>;
load = <0x43c00000>;
load-sysfw = <0x40000>;
load-sysfw-data = <0x67000>;
load-dm-data = <0x43c4a800>;
};
u_boot_spl_hs: u-boot-spl {
no-expanded;
};
ti_fs_enc_hs: ti-fs-enc.bin {
filename = "ti-sysfw/ti-fs-firmware-am62px-hs-enc.bin";
type = "blob-ext";
optional;
};
combined_tifs_cfg_hs: combined-tifs-cfg.bin {
filename = "combined-tifs-cfg.bin";
type = "blob-ext";
};
sysfw_inner_cert_hs: sysfw-inner-cert {
filename = "ti-sysfw/ti-fs-firmware-am62px-hs-cert.bin";
type = "blob-ext";
optional;
};
combined_dm_cfg_hs: combined-dm-cfg.bin {
filename = "combined-dm-cfg.bin";
type = "blob-ext";
};
};
};
#endif /* CONFIG_TARGET_VERDIN_AM62P_R5 */
#if IS_ENABLED(CONFIG_TARGET_VERDIN_AM62P_A53)
#define SPL_VERDIN_AM62P_DTB "spl/dts/k3-am62p5-verdin-wifi-dev.dtb"
#define VERDIN_AM62P_DTB "u-boot.dtb"
&binman {
tifsstub-hs {
filename = "tifsstub.bin_hs";
ti-secure-rom {
content = <&tifsstub_hs_cert>;
core = "secure";
load = <0x60000>;
sw-rev = <CONFIG_K3_X509_SWRV>;
keyfile = "custMpk.pem";
countersign;
tifsstub;
};
tifsstub_hs_cert: tifsstub-hs-cert.bin {
filename = "ti-sysfw/ti-fs-stub-firmware-am62px-hs-cert.bin";
type = "blob-ext";
optional;
};
tifsstub_hs_enc: tifsstub-hs-enc.bin {
filename = "ti-sysfw/ti-fs-stub-firmware-am62px-hs-enc.bin";
type = "blob-ext";
optional;
};
};
tifsstub-fs {
filename = "tifsstub.bin_fs";
tifsstub_fs_cert: tifsstub-fs-cert.bin {
filename = "ti-sysfw/ti-fs-stub-firmware-am62px-hs-cert.bin";
type = "blob-ext";
optional;
};
tifsstub_fs_enc: tifsstub-fs-enc.bin {
filename = "ti-sysfw/ti-fs-stub-firmware-am62px-hs-enc.bin";
type = "blob-ext";
optional;
};
};
ti-spl {
insert-template = <&ti_spl_template>;
fit {
images {
tifsstub-hs {
description = "TIFSSTUB";
type = "firmware";
arch = "arm32";
compression = "none";
os = "tifsstub-hs";
load = <0x9ca00000>;
entry = <0x9ca00000>;
blob-ext {
filename = "tifsstub.bin_hs";
};
};
tifsstub-fs {
description = "TIFSSTUB";
type = "firmware";
arch = "arm32";
compression = "none";
os = "tifsstub-fs";
load = <0x9ca00000>;
entry = <0x9ca00000>;
blob-ext {
filename = "tifsstub.bin_fs";
};
};
dm {
ti-secure {
content = <&dm>;
keyfile = "custMpk.pem";
};
dm: ti-dm {
filename = "ti-dm/am62pxx/ipc_echo_testb_mcu1_0_release_strip.xer5f";
optional;
};
};
fdt-0 {
description = "k3-am62p5-verdin-wifi-dev";
type = "flat_dt";
arch = "arm";
compression = "none";
ti-secure {
content = <&spl_verdin_am62p_dtb>;
keyfile = "custMpk.pem";
};
spl_verdin_am62p_dtb: blob-ext {
filename = SPL_VERDIN_AM62P_DTB;
};
};
};
configurations {
default = "conf-0";
conf-0 {
description = "k3-am62p5-verdin-wifi-dev";
firmware = "atf";
loadables = "tee", "tifsstub-hs", "tifsstub-fs",
"dm", "spl";
fdt = "fdt-0";
};
};
};
};
};
&binman {
u-boot {
insert-template = <&u_boot_template>;
fit {
images {
uboot {
description = "U-Boot for Verdin AM62P5 Boards";
};
fdt-0 {
description = "k3-am62p5-verdin-wifi-dev";
type = "flat_dt";
arch = "arm";
compression = "none";
ti-secure {
content = <&verdin_am62p_dtb>;
keyfile = "custMpk.pem";
};
verdin_am62p_dtb: blob-ext {
filename = VERDIN_AM62P_DTB;
};
hash {
algo = "crc32";
};
};
};
configurations {
default = "conf-0";
conf-0 {
description = "k3-am62p5-verdin-wifi-dev";
firmware = "uboot";
loadables = "uboot";
fdt = "fdt-0";
};
};
};
};
};
&binman {
firmware-verdin-am62px-hs.bin {
filename = "firmware-verdin-am62px-hs.bin";
blob-ext@1 {
filename = "tiboot3-am62px-hs-verdin.bin";
};
blob-ext@2 {
filename = "tispl.bin";
/*
* This value matches CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
* from R5 SPL config.
*/
offset = <0x80000>;
};
blob-ext@3 {
filename = "u-boot.img";
offset = <(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512)>;
};
};
firmware-verdin-am62px-hs-fs.bin {
filename = "firmware-verdin-am62px-hs-fs.bin";
blob-ext@1 {
filename = "tiboot3-am62px-hs-fs-verdin.bin";
};
blob-ext@2 {
filename = "tispl.bin";
/*
* This value matches CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
* from R5 SPL config.
*/
offset = <0x80000>;
};
blob-ext@3 {
filename = "u-boot.img";
offset = <(CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512)>;
};
};
};
#endif /* CONFIG_TARGET_VERDIN_AM62P_A53 */

View File

@@ -0,0 +1,167 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
* Copyright 2025 Toradex
*/
#include "k3-am62p5-verdin-wifi-dev-binman.dtsi"
/ {
chosen {
tick-timer = &main_timer0;
};
memory@80000000 {
bootph-pre-ram;
};
sysinfo {
compatible = "toradex,sysinfo";
};
};
&carrier_eth_phy {
bootph-all;
};
&cpsw3g {
ethernet-ports {
bootph-all;
};
};
/* MDIO, shared by Verdin ETH_1 (On-module PHY) and Verdin ETH_2_RGMII */
&cpsw3g_mdio {
/delete-property/ assigned-clocks;
/delete-property/ assigned-clock-parents;
/delete-property/ assigned-clock-rates;
bootph-all;
};
/* Verdin ETH_1 (On-module PHY) */
&cpsw_port1 {
bootph-all;
};
/* Verdin ETH_2_RGMII */
&cpsw_port2 {
bootph-all;
};
&dmsc {
bootph-all;
};
&k3_clks {
bootph-all;
};
&k3_pds {
bootph-all;
};
&k3_reset {
bootph-all;
};
&main_gpio0 {
bootph-all;
};
/* Verdin I2C_1 */
&main_i2c0 {
bootph-all;
};
&main_pktdma {
bootph-all;
};
&mcu_pmx0 {
bootph-all;
};
/* Verdin UART_3, used as the Linux console */
&main_uart0 {
bootph-all;
};
&main_pmx0 {
bootph-all;
};
&pinctrl_main_i2c0 {
bootph-all;
};
&pinctrl_mdio {
bootph-all;
};
&pinctrl_rgmii1 {
bootph-all;
};
&pinctrl_rgmii2 {
bootph-all;
};
&pinctrl_uart0 {
bootph-all;
};
&pinctrl_wkup_i2c0 {
bootph-all;
};
&phy_gmii_sel {
bootph-all;
};
&sdhci0 {
bootph-all;
};
&sdhci2 {
status = "disabled";
};
&som_eth_phy {
bootph-all;
};
&som_gpio_expander {
bootph-all;
ctrl-sleep-moci-hog {
bootph-all;
gpio-hog;
gpios = <0 GPIO_ACTIVE_HIGH>;
line-name = "CTRL_SLEEP_MOCI#";
output-high;
};
};
/* Required for USB DFU Boot */
&usb0 {
/* Enable peripheral mode only during bootup
* to support DFU while allowing Linux to stay
* in OTG mode
*/
dr_mode = "peripheral";
bootph-all;
};
/* Required for USB DFU Boot */
&usb0_phy_ctrl {
bootph-all;
};
/* Required for USB DFU Boot */
&usbss0 {
bootph-all;
};
/* On-module I2C - PMIC_I2C */
&wkup_i2c0 {
bootph-all;
};

View File

@@ -0,0 +1,22 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
* Copyright 2025 Toradex
*
* https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
* https://www.toradex.com/products/carrier-board/verdin-development-board-kit
*/
/dts-v1/;
#include "k3-am62p5.dtsi"
#include "k3-am62p-verdin.dtsi"
#include "k3-am62p-verdin-wifi.dtsi"
#include "k3-am62p-verdin-dev.dtsi"
/ {
model = "Toradex Verdin AM62P WB on Verdin Development Board";
compatible = "toradex,verdin-am62p-wifi-dev",
"toradex,verdin-am62p-wifi",
"toradex,verdin-am62p",
"ti,am62p5";
};

View File

@@ -29,5 +29,6 @@ config TARGET_AM62P5_R5_EVM
endchoice
source "board/ti/am62px/Kconfig"
source "board/toradex/verdin-am62p/Kconfig"
endif

View File

@@ -0,0 +1,83 @@
# SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright 2025 Toradex
#
choice
prompt "Toradex Verdin AM62P based boards"
optional
config TARGET_VERDIN_AM62P_A53
bool "Toradex Verdin AM62P running on A53"
select ARM64
select BINMAN
select OF_SYSTEM_SETUP
config TARGET_VERDIN_AM62P_R5
bool "Toradex Verdin AM62P running on R5"
select CPU_V7R
select SYS_THUMB_BUILD
select K3_LOAD_SYSFW
select RAM
select SPL_RAM
select K3_DDRSS
select BINMAN
imply SYS_K3_SPL_ATF
endchoice
if TARGET_VERDIN_AM62P_A53
config SYS_BOARD
default "verdin-am62p"
config SYS_CONFIG_NAME
default "verdin-am62p"
config SYS_VENDOR
default "toradex"
config TDX_CFG_BLOCK
default y
config TDX_CFG_BLOCK_2ND_ETHADDR
default y
config TDX_CFG_BLOCK_DEV
default "0"
config TDX_CFG_BLOCK_EXTRA
default y
# Toradex config block in eMMC, at the end of 1st "boot sector"
config TDX_CFG_BLOCK_OFFSET
default "-512"
config TDX_CFG_BLOCK_PART
default "1"
config TDX_HAVE_EEPROM_EXTRA
default y
config TDX_HAVE_MMC
default y
source "board/toradex/common/Kconfig"
endif
if TARGET_VERDIN_AM62P_R5
config SPL_LDSCRIPT
default "arch/arm/mach-omap2/u-boot-spl.lds"
config SYS_BOARD
default "verdin-am62p"
config SYS_CONFIG_NAME
default "verdin-am62p"
config SYS_VENDOR
default "toradex"
endif

View File

@@ -0,0 +1,17 @@
Verdin AM62P
M: Francesco Dolcini <francesco.dolcini@toradex.com>
W: https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
S: Maintained
F: arch/arm/dts/k3-am62p-verdin-dev.dtsi
F: arch/arm/dts/k3-am62p-verdin-wifi.dtsi
F: arch/arm/dts/k3-am62p-verdin.dtsi
F: arch/arm/dts/k3-am62p5-verdin-lpddr4-1600.dtsi
F: arch/arm/dts/k3-am62p5-verdin-r5.dts
F: arch/arm/dts/k3-am62p5-verdin-wifi-dev-binman.dtsi
F: arch/arm/dts/k3-am62p5-verdin-wifi-dev-u-boot.dtsi
F: arch/arm/dts/k3-am62p5-verdin-wifi-dev.dts
F: board/toradex/verdin-am62p/
F: configs/verdin-am62p_a53_defconfig
F: configs/verdin-am62p_r5_defconfig
F: doc/board/toradex/verdin-am62p.rst
F: include/configs/verdin-am62p.h

View File

@@ -0,0 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-or-later
#
# Copyright 2025 Toradex
#
obj-y += verdin-am62p.o

View File

@@ -0,0 +1,37 @@
# SPDX-License-Identifier: GPL-2.0+
#
# Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
#
# Board configuration for AM62Px SoCs
#
---
board-cfg:
rev:
boardcfg_abi_maj: 0x0
boardcfg_abi_min: 0x1
control:
subhdr:
magic: 0xC1D3
size: 7
main_isolation_enable: 0x5A
main_isolation_hostid: 0x2
secproxy:
subhdr:
magic: 0x1207
size: 7
scaling_factor: 0x1
scaling_profile: 0x1
disable_main_nav_secure_proxy: 0
msmc:
subhdr:
magic: 0xA5C3
size: 5
msmc_cache_size: 0x10
debug_cfg:
subhdr:
magic: 0x020C
size: 8
trace_dst_enables: 0x00
trace_src_enables: 0x00

View File

@@ -0,0 +1,12 @@
# SPDX-License-Identifier: GPL-2.0+
#
# Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
#
# Power management configuration for AM62Px
#
#
---
pm-cfg:
rev:
boardcfg_abi_maj: 0x0
boardcfg_abi_min: 0x1

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,378 @@
# SPDX-License-Identifier: GPL-2.0+
#
# Copyright (C) 2023 Texas Instruments Incorporated - https://www.ti.com/
#
# Security configuration for AM62Px
#
---
sec-cfg:
rev:
boardcfg_abi_maj: 0x0
boardcfg_abi_min: 0x1
processor_acl_list:
subhdr:
magic: 0xF1EA
size: 164
proc_acl_entries:
- # 1
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 2
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 3
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 4
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 5
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 6
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 7
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 8
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 9
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 10
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 11
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 12
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 13
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 14
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 15
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 16
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 17
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 18
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 19
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 20
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 21
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 22
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 23
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 24
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 25
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 26
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 27
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 28
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 29
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 30
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 31
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
- # 32
processor_id: 0
proc_access_master: 0
proc_access_secondary: [0, 0, 0]
host_hierarchy:
subhdr:
magic: 0x8D27
size: 68
host_hierarchy_entries:
- # 1
host_id: 0
supervisor_host_id: 0
- # 2
host_id: 0
supervisor_host_id: 0
- # 3
host_id: 0
supervisor_host_id: 0
- # 4
host_id: 0
supervisor_host_id: 0
- # 5
host_id: 0
supervisor_host_id: 0
- # 6
host_id: 0
supervisor_host_id: 0
- # 7
host_id: 0
supervisor_host_id: 0
- # 8
host_id: 0
supervisor_host_id: 0
- # 9
host_id: 0
supervisor_host_id: 0
- # 10
host_id: 0
supervisor_host_id: 0
- # 11
host_id: 0
supervisor_host_id: 0
- # 12
host_id: 0
supervisor_host_id: 0
- # 13
host_id: 0
supervisor_host_id: 0
- # 14
host_id: 0
supervisor_host_id: 0
- # 15
host_id: 0
supervisor_host_id: 0
- # 16
host_id: 0
supervisor_host_id: 0
- # 17
host_id: 0
supervisor_host_id: 0
- # 18
host_id: 0
supervisor_host_id: 0
- # 19
host_id: 0
supervisor_host_id: 0
- # 20
host_id: 0
supervisor_host_id: 0
- # 21
host_id: 0
supervisor_host_id: 0
- # 22
host_id: 0
supervisor_host_id: 0
- # 23
host_id: 0
supervisor_host_id: 0
- # 24
host_id: 0
supervisor_host_id: 0
- # 25
host_id: 0
supervisor_host_id: 0
- # 26
host_id: 0
supervisor_host_id: 0
- # 27
host_id: 0
supervisor_host_id: 0
- # 28
host_id: 0
supervisor_host_id: 0
- # 29
host_id: 0
supervisor_host_id: 0
- # 30
host_id: 0
supervisor_host_id: 0
- # 31
host_id: 0
supervisor_host_id: 0
- # 32
host_id: 0
supervisor_host_id: 0
otp_config:
subhdr:
magic: 0x4081
size: 69
otp_entry:
- # 1
host_id: 0
host_perms: 0
- # 2
host_id: 0
host_perms: 0
- # 3
host_id: 0
host_perms: 0
- # 4
host_id: 0
host_perms: 0
- # 5
host_id: 0
host_perms: 0
- # 6
host_id: 0
host_perms: 0
- # 7
host_id: 0
host_perms: 0
- # 8
host_id: 0
host_perms: 0
- # 9
host_id: 0
host_perms: 0
- # 10
host_id: 0
host_perms: 0
- # 11
host_id: 0
host_perms: 0
- # 12
host_id: 0
host_perms: 0
- # 13
host_id: 0
host_perms: 0
- # 14
host_id: 0
host_perms: 0
- # 15
host_id: 0
host_perms: 0
- # 16
host_id: 0
host_perms: 0
- # 17
host_id: 0
host_perms: 0
- # 18
host_id: 0
host_perms: 0
- # 19
host_id: 0
host_perms: 0
- # 20
host_id: 0
host_perms: 0
- # 21
host_id: 0
host_perms: 0
- # 22
host_id: 0
host_perms: 0
- # 23
host_id: 0
host_perms: 0
- # 24
host_id: 0
host_perms: 0
- # 25
host_id: 0
host_perms: 0
- # 26
host_id: 0
host_perms: 0
- # 27
host_id: 0
host_perms: 0
- # 28
host_id: 0
host_perms: 0
- # 29
host_id: 0
host_perms: 0
- # 30
host_id: 0
host_perms: 0
- # 31
host_id: 0
host_perms: 0
- # 32
host_id: 0
host_perms: 0
write_host_id: 0
dkek_config:
subhdr:
magic: 0x5170
size: 12
allowed_hosts: [128, 0, 0, 0]
allow_dkek_export_tisci: 0x5A
rsvd: [0, 0, 0]
sa2ul_cfg:
subhdr:
magic: 0x23BE
size: 0
auth_resource_owner: 0
enable_saul_psil_global_config_writes: 0x5A
rsvd: [0, 0]
sec_dbg_config:
subhdr:
magic: 0x42AF
size: 16
allow_jtag_unlock: 0x5A
allow_wildcard_unlock: 0x5A
allowed_debug_level_rsvd: 0
rsvd: 0
min_cert_rev: 0x0
jtag_unlock_hosts: [0, 0, 0, 0]
sec_handover_cfg:
subhdr:
magic: 0x608F
size: 10
handover_msg_sender: 0
handover_to_host_id: 0
rsvd: [0, 0, 0, 0]

View File

@@ -0,0 +1,927 @@
# SPDX-License-Identifier: GPL-2.0+
# Copyright (C) 2022-2025 Texas Instruments Incorporated - https://www.ti.com/
#
# Resource management configuration for AM62P
#
---
tifs-rm-cfg:
rm_boardcfg:
rev:
boardcfg_abi_maj : 0x0
boardcfg_abi_min : 0x1
host_cfg:
subhdr:
magic: 0x4C41
size : 356
host_cfg_entries:
- #1
host_id: 12
allowed_atype: 0x2A
allowed_qos: 0xAAAA
allowed_orderid: 0xAAAAAAAA
allowed_priority: 0xAAAA
allowed_sched_priority: 0xAA
- #2
host_id: 30
allowed_atype: 0x2A
allowed_qos: 0xAAAA
allowed_orderid: 0xAAAAAAAA
allowed_priority: 0xAAAA
allowed_sched_priority: 0xAA
- #3
host_id: 36
allowed_atype: 0x2A
allowed_qos: 0xAAAA
allowed_orderid: 0xAAAAAAAA
allowed_priority: 0xAAAA
allowed_sched_priority: 0xAA
- #4
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #5
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #6
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #7
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #8
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #9
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #10
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #11
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #12
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #13
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #14
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #15
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #16
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #17
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #18
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #19
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #20
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #21
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #22
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #23
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #24
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #25
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #26
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #27
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #28
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #29
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #30
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #31
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
- #32
host_id: 0
allowed_atype: 0
allowed_qos: 0
allowed_orderid: 0
allowed_priority: 0
allowed_sched_priority: 0
resasg:
subhdr:
magic: 0x7B25
size: 8
resasg_entries_size: 904
reserved: 0
resasg_entries:
-
start_resource: 0
num_resource: 18
type: 1677
host_id: 12
reserved: 0
-
start_resource: 18
num_resource: 6
type: 1677
host_id: 35
reserved: 0
-
start_resource: 18
num_resource: 6
type: 1677
host_id: 36
reserved: 0
-
start_resource: 24
num_resource: 2
type: 1677
host_id: 30
reserved: 0
-
start_resource: 26
num_resource: 6
type: 1677
host_id: 128
reserved: 0
-
start_resource: 57
num_resource: 18
type: 1678
host_id: 12
reserved: 0
-
start_resource: 75
num_resource: 5
type: 1678
host_id: 35
reserved: 0
-
start_resource: 75
num_resource: 5
type: 1678
host_id: 36
reserved: 0
-
start_resource: 80
num_resource: 2
type: 1678
host_id: 30
reserved: 0
-
start_resource: 32
num_resource: 12
type: 1679
host_id: 12
reserved: 0
-
start_resource: 44
num_resource: 6
type: 1679
host_id: 35
reserved: 0
-
start_resource: 44
num_resource: 6
type: 1679
host_id: 36
reserved: 0
-
start_resource: 50
num_resource: 2
type: 1679
host_id: 30
reserved: 0
-
start_resource: 52
num_resource: 5
type: 1679
host_id: 128
reserved: 0
-
start_resource: 0
num_resource: 18
type: 1696
host_id: 12
reserved: 0
-
start_resource: 18
num_resource: 6
type: 1696
host_id: 35
reserved: 0
-
start_resource: 18
num_resource: 6
type: 1696
host_id: 36
reserved: 0
-
start_resource: 24
num_resource: 2
type: 1696
host_id: 30
reserved: 0
-
start_resource: 26
num_resource: 6
type: 1696
host_id: 128
reserved: 0
-
start_resource: 0
num_resource: 18
type: 1697
host_id: 12
reserved: 0
-
start_resource: 18
num_resource: 5
type: 1697
host_id: 35
reserved: 0
-
start_resource: 18
num_resource: 5
type: 1697
host_id: 36
reserved: 0
-
start_resource: 23
num_resource: 2
type: 1697
host_id: 30
reserved: 0
-
start_resource: 0
num_resource: 12
type: 1698
host_id: 12
reserved: 0
-
start_resource: 12
num_resource: 6
type: 1698
host_id: 35
reserved: 0
-
start_resource: 12
num_resource: 6
type: 1698
host_id: 36
reserved: 0
-
start_resource: 18
num_resource: 2
type: 1698
host_id: 30
reserved: 0
-
start_resource: 20
num_resource: 5
type: 1698
host_id: 128
reserved: 0
-
start_resource: 5
num_resource: 35
type: 1802
host_id: 12
reserved: 0
-
start_resource: 44
num_resource: 35
type: 1802
host_id: 35
reserved: 0
-
start_resource: 44
num_resource: 35
type: 1802
host_id: 36
reserved: 0
-
start_resource: 168
num_resource: 8
type: 1802
host_id: 30
reserved: 0
-
start_resource: 4096
num_resource: 29
type: 1807
host_id: 128
reserved: 0
-
start_resource: 4608
num_resource: 99
type: 1808
host_id: 128
reserved: 0
-
start_resource: 5120
num_resource: 24
type: 1809
host_id: 128
reserved: 0
-
start_resource: 5632
num_resource: 51
type: 1810
host_id: 128
reserved: 0
-
start_resource: 6144
num_resource: 51
type: 1811
host_id: 128
reserved: 0
-
start_resource: 8192
num_resource: 32
type: 1812
host_id: 128
reserved: 0
-
start_resource: 8704
num_resource: 32
type: 1813
host_id: 128
reserved: 0
-
start_resource: 9216
num_resource: 32
type: 1814
host_id: 128
reserved: 0
-
start_resource: 9728
num_resource: 25
type: 1815
host_id: 128
reserved: 0
-
start_resource: 10240
num_resource: 25
type: 1816
host_id: 128
reserved: 0
-
start_resource: 10752
num_resource: 25
type: 1817
host_id: 128
reserved: 0
-
start_resource: 11264
num_resource: 25
type: 1818
host_id: 128
reserved: 0
-
start_resource: 11776
num_resource: 25
type: 1819
host_id: 128
reserved: 0
-
start_resource: 12288
num_resource: 25
type: 1820
host_id: 128
reserved: 0
-
start_resource: 0
num_resource: 10
type: 1936
host_id: 12
reserved: 0
-
start_resource: 10
num_resource: 3
type: 1936
host_id: 35
reserved: 0
-
start_resource: 10
num_resource: 3
type: 1936
host_id: 36
reserved: 0
-
start_resource: 13
num_resource: 3
type: 1936
host_id: 30
reserved: 0
-
start_resource: 16
num_resource: 3
type: 1936
host_id: 128
reserved: 0
-
start_resource: 19
num_resource: 32
type: 1937
host_id: 12
reserved: 0
-
start_resource: 19
num_resource: 32
type: 1937
host_id: 36
reserved: 0
-
start_resource: 51
num_resource: 32
type: 1937
host_id: 12
reserved: 0
-
start_resource: 51
num_resource: 32
type: 1937
host_id: 30
reserved: 0
-
start_resource: 83
num_resource: 8
type: 1938
host_id: 12
reserved: 0
-
start_resource: 91
num_resource: 8
type: 1939
host_id: 12
reserved: 0
-
start_resource: 99
num_resource: 10
type: 1942
host_id: 12
reserved: 0
-
start_resource: 109
num_resource: 3
type: 1942
host_id: 35
reserved: 0
-
start_resource: 109
num_resource: 3
type: 1942
host_id: 36
reserved: 0
-
start_resource: 112
num_resource: 3
type: 1942
host_id: 30
reserved: 0
-
start_resource: 115
num_resource: 3
type: 1942
host_id: 128
reserved: 0
-
start_resource: 118
num_resource: 6
type: 1943
host_id: 12
reserved: 0
-
start_resource: 118
num_resource: 6
type: 1943
host_id: 36
reserved: 0
-
start_resource: 124
num_resource: 10
type: 1943
host_id: 12
reserved: 0
-
start_resource: 124
num_resource: 10
type: 1943
host_id: 30
reserved: 0
-
start_resource: 134
num_resource: 8
type: 1944
host_id: 12
reserved: 0
-
start_resource: 134
num_resource: 8
type: 1945
host_id: 12
reserved: 0
-
start_resource: 142
num_resource: 8
type: 1946
host_id: 12
reserved: 0
-
start_resource: 142
num_resource: 8
type: 1947
host_id: 12
reserved: 0
-
start_resource: 0
num_resource: 10
type: 1955
host_id: 12
reserved: 0
-
start_resource: 10
num_resource: 3
type: 1955
host_id: 35
reserved: 0
-
start_resource: 10
num_resource: 3
type: 1955
host_id: 36
reserved: 0
-
start_resource: 13
num_resource: 3
type: 1955
host_id: 30
reserved: 0
-
start_resource: 16
num_resource: 3
type: 1955
host_id: 128
reserved: 0
-
start_resource: 19
num_resource: 4
type: 1956
host_id: 12
reserved: 0
-
start_resource: 19
num_resource: 4
type: 1956
host_id: 36
reserved: 0
-
start_resource: 23
num_resource: 4
type: 1956
host_id: 12
reserved: 0
-
start_resource: 23
num_resource: 4
type: 1956
host_id: 30
reserved: 0
-
start_resource: 27
num_resource: 1
type: 1957
host_id: 12
reserved: 0
-
start_resource: 28
num_resource: 1
type: 1958
host_id: 12
reserved: 0
-
start_resource: 0
num_resource: 10
type: 1961
host_id: 12
reserved: 0
-
start_resource: 10
num_resource: 3
type: 1961
host_id: 35
reserved: 0
-
start_resource: 10
num_resource: 3
type: 1961
host_id: 36
reserved: 0
-
start_resource: 13
num_resource: 3
type: 1961
host_id: 30
reserved: 0
-
start_resource: 16
num_resource: 3
type: 1961
host_id: 128
reserved: 0
-
start_resource: 0
num_resource: 10
type: 1962
host_id: 12
reserved: 0
-
start_resource: 10
num_resource: 3
type: 1962
host_id: 35
reserved: 0
-
start_resource: 10
num_resource: 3
type: 1962
host_id: 36
reserved: 0
-
start_resource: 13
num_resource: 3
type: 1962
host_id: 30
reserved: 0
-
start_resource: 16
num_resource: 3
type: 1962
host_id: 128
reserved: 0
-
start_resource: 19
num_resource: 1
type: 1963
host_id: 12
reserved: 0
-
start_resource: 19
num_resource: 1
type: 1963
host_id: 36
reserved: 0
-
start_resource: 19
num_resource: 6
type: 1964
host_id: 12
reserved: 0
-
start_resource: 19
num_resource: 6
type: 1964
host_id: 36
reserved: 0
-
start_resource: 25
num_resource: 10
type: 1964
host_id: 12
reserved: 0
-
start_resource: 25
num_resource: 10
type: 1964
host_id: 30
reserved: 0
-
start_resource: 20
num_resource: 1
type: 1965
host_id: 12
reserved: 0
-
start_resource: 35
num_resource: 8
type: 1966
host_id: 12
reserved: 0
-
start_resource: 21
num_resource: 1
type: 1967
host_id: 12
reserved: 0
-
start_resource: 35
num_resource: 8
type: 1968
host_id: 12
reserved: 0
-
start_resource: 22
num_resource: 1
type: 1969
host_id: 12
reserved: 0
-
start_resource: 43
num_resource: 8
type: 1970
host_id: 12
reserved: 0
-
start_resource: 23
num_resource: 1
type: 1971
host_id: 12
reserved: 0
-
start_resource: 43
num_resource: 8
type: 1972
host_id: 12
reserved: 0
-
start_resource: 0
num_resource: 1
type: 2112
host_id: 128
reserved: 0
-
start_resource: 2
num_resource: 2
type: 2122
host_id: 12
reserved: 0
-
start_resource: 0
num_resource: 6
type: 12750
host_id: 12
reserved: 0
-
start_resource: 0
num_resource: 6
type: 12769
host_id: 12
reserved: 0
-
start_resource: 0
num_resource: 8
type: 12810
host_id: 12
reserved: 0
-
start_resource: 3072
num_resource: 6
type: 12826
host_id: 128
reserved: 0
-
start_resource: 3584
num_resource: 6
type: 12827
host_id: 128
reserved: 0
-
start_resource: 4096
num_resource: 6
type: 12828
host_id: 128
reserved: 0

View File

@@ -0,0 +1,151 @@
// SPDX-License-Identifier: GPL-2.0-or-later
/*
* Board specific initialization for Verdin AM62P SoM
*
* Copyright 2025 Toradex - https://www.toradex.com/
*
*/
#include <config.h>
#include <asm/arch/hardware.h>
#include <asm/gpio.h>
#include <asm/io.h>
#include <dm/uclass.h>
#include <env.h>
#include <fdt_support.h>
#include <init.h>
#include <k3-ddrss.h>
#include <spl.h>
#include "../common/tdx-cfg-block.h"
DECLARE_GLOBAL_DATA_PTR;
static u8 hw_cfg;
static void read_hw_cfg(void)
{
struct gpio_desc gpio_hw_cfg;
static const int gpios[] = { 58, 61, 62 }; /* HW_CFG0, HW_CFG1, HW_CFG2 */
char gpio_name[20];
int i;
printf("HW CFG: ");
for (i = 0; i < ARRAY_SIZE(gpios); i++) {
snprintf(gpio_name, sizeof(gpio_name), "gpio@600000_%d", gpios[i]);
if (dm_gpio_lookup_name(gpio_name, &gpio_hw_cfg) < 0) {
printf("Lookup error: GPIO %d\n", gpios[i]);
continue;
}
if (dm_gpio_request(&gpio_hw_cfg, "hw_cfg")) {
printf("GPIO request error: %d\n", gpios[i]);
continue;
}
if (dm_gpio_get_value(&gpio_hw_cfg) == 1)
hw_cfg |= BIT(i);
dm_gpio_free(NULL, &gpio_hw_cfg);
}
printf("0x%02x\n", hw_cfg);
}
int board_init(void)
{
return 0;
}
int dram_init(void)
{
gd->ram_size = get_ram_size((long *)CFG_SYS_SDRAM_BASE, CFG_SYS_SDRAM_SIZE);
if (gd->ram_size < SZ_1G)
puts("## WARNING: Less than 1GB RAM detected\n");
return 0;
}
int dram_init_banksize(void)
{
s32 ret;
ret = fdtdec_setup_memory_banksize();
if (ret)
printf("Error setting up memory banksize. %d\n", ret);
/* Use the detected RAM size, we only support 1 bank right now. */
gd->bd->bi_dram[0].size = gd->ram_size;
return ret;
}
#if IS_ENABLED(CONFIG_SPL_LOAD_FIT)
int board_fit_config_name_match(const char *name)
{
return 0;
}
#endif
#if IS_ENABLED(CONFIG_OF_LIBFDT) && IS_ENABLED(CONFIG_OF_BOARD_SETUP)
int ft_board_setup(void *blob, struct bd_info *bd)
{
return ft_common_board_setup(blob, bd);
}
#endif
static void select_dt_from_module_version(void)
{
char variant[32];
char *env_variant = env_get("variant");
int is_wifi = 0;
if (IS_ENABLED(CONFIG_TDX_CFG_BLOCK)) {
/*
* If we have a valid config block and it says we are a module with
* Wi-Fi/Bluetooth make sure we use the -wifi device tree.
*/
is_wifi = (tdx_hw_tag.prodid == VERDIN_AM62PQ_2G_WIFI_BT_IT);
}
if (is_wifi)
strlcpy(&variant[0], "wifi", sizeof(variant));
else
strlcpy(&variant[0], "nonwifi", sizeof(variant));
if (strcmp(variant, env_variant)) {
printf("Setting variant to %s\n", variant);
env_set("variant", variant);
}
}
int board_late_init(void)
{
select_dt_from_module_version();
return 0;
}
#define MCU_CTRL_LFXOSC_32K_BYPASS_VAL BIT(4)
void spl_board_init(void)
{
u32 val;
/*
* We use the 32k FOUT from the Epson RX8130CE RTC chip,
* configure LFXOSC accordingly, see AM62P datasheet,
* Table 6-23, LFXOSC Modes of Operation.
*/
val = readl(MCU_CTRL_LFXOSC_CTRL);
val &= ~MCU_CTRL_LFXOSC_32K_DISABLE_VAL;
val |= MCU_CTRL_LFXOSC_32K_BYPASS_VAL;
writel(val, MCU_CTRL_LFXOSC_CTRL);
/* Make sure to mux up to take the SoC 32k from the LFOSC input */
writel(MCU_CTRL_DEVICE_CLKOUT_LFOSC_SELECT_VAL,
MCU_CTRL_DEVICE_CLKOUT_32K_CTRL);
read_hw_cfg();
}

View File

@@ -0,0 +1,41 @@
#define CFG_RAMDISK_ADDR_R 0x90300000
#define CFG_SCRIPTADDR 0x90280000
boot_script_dhcp=boot.scr
boot_targets=mmc1 mmc0 dhcp
console=ttyS2
fdt_addr_r=0x90200000
fdt_board=dev
kernel_addr_r=CONFIG_SYS_LOAD_ADDR
kernel_comp_addr_r=0x80200000
kernel_comp_size=0x08000000
ramdisk_addr_r=CFG_RAMDISK_ADDR_R
scriptaddr=CFG_SCRIPTADDR
dfu_alt_info_ram=
tispl.bin ram 0x80080000 0x200000;
u-boot.img ram 0x81000000 0x400000;
loadaddr ram CONFIG_SYS_LOAD_ADDR 0x80000;
scriptaddr ram CFG_SCRIPTADDR 0x80000;
ramdisk_addr_r ram CFG_RAMDISK_ADDR_R 0x8000000
update_tiboot3=
askenv confirm Did you load tiboot3.bin (y/N)?;
if test $confirm = y; then
setexpr blkcnt ${filesize} + 0x1ff && setexpr blkcnt ${blkcnt} / 0x200;
mmc dev 0 1; mmc write ${loadaddr} 0x0 ${blkcnt};
fi
update_tispl=
askenv confirm Did you load tispl.bin (y/N)?;
if test $confirm = y; then
setexpr blkcnt ${filesize} + 0x1ff && setexpr blkcnt ${blkcnt} / 0x200;
mmc dev 0 1; mmc write ${loadaddr} 0x400 ${blkcnt};
fi
update_uboot=
askenv confirm Did you load u-boot.img (y/N)?;
if test $confirm = y; then
setexpr blkcnt ${filesize} + 0x1ff && setexpr blkcnt ${blkcnt} / 0x200;
mmc dev 0 1; mmc write ${loadaddr} 0x1400 ${blkcnt};
fi

View File

@@ -0,0 +1,199 @@
CONFIG_ARM=y
CONFIG_ARCH_K3=y
CONFIG_SYS_MALLOC_LEN=0x2000000
CONFIG_SYS_MALLOC_F_LEN=0x8000
CONFIG_SPL_GPIO=y
CONFIG_SPL_LIBCOMMON_SUPPORT=y
CONFIG_SPL_LIBGENERIC_SUPPORT=y
CONFIG_SOC_K3_AM62P5=y
CONFIG_TARGET_VERDIN_AM62P_A53=y
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x80b80000
CONFIG_ENV_SIZE=0x2000
CONFIG_ENV_OFFSET=0xFFFFDE00
CONFIG_DM_GPIO=y
CONFIG_DEFAULT_DEVICE_TREE="k3-am62p5-verdin-wifi-dev"
CONFIG_OF_LIBFDT_OVERLAY=y
CONFIG_DM_RESET=y
CONFIG_SPL_MMC=y
CONFIG_SPL_SERIAL=y
CONFIG_SPL_DRIVERS_MISC=y
CONFIG_SPL_STACK_R_ADDR=0x82000000
CONFIG_SPL_TEXT_BASE=0x80080000
CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
CONFIG_SPL_BSS_START_ADDR=0x80c80000
CONFIG_SPL_BSS_MAX_SIZE=0x80000
CONFIG_SPL_STACK_R=y
CONFIG_SYS_BOOTM_LEN=0x40000000
CONFIG_SYS_LOAD_ADDR=0x88200000
CONFIG_SPL_SIZE_LIMIT=0x80000
CONFIG_SPL_SIZE_LIMIT_PROVIDE_STACK=0x800
CONFIG_SYS_MEMTEST_START=0x80000000
CONFIG_SYS_MEMTEST_END=0xB0000000
# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
CONFIG_FIT_VERBOSE=y
CONFIG_SPL_LOAD_FIT=y
CONFIG_SPL_LOAD_FIT_ADDRESS=0x81000000
CONFIG_BOOTSTD_FULL=y
CONFIG_LEGACY_IMAGE_FORMAT=y
CONFIG_BOOTDELAY=1
CONFIG_BOOTCOMMAND="bootflow scan -b"
CONFIG_USE_PREBOOT=y
CONFIG_PREBOOT="test -n ${fdtfile} || setenv fdtfile k3-am62p5-verdin-${variant}-${fdt_board}.dtb"
CONFIG_LOG=y
# CONFIG_DISPLAY_BOARDINFO is not set
CONFIG_DISPLAY_BOARDINFO_LATE=y
CONFIG_BOARD_LATE_INIT=y
CONFIG_SPL_MAX_SIZE=0x80000
CONFIG_SPL_SYS_REPORT_STACK_F_USAGE=y
CONFIG_SPL_BOARD_INIT=y
CONFIG_SPL_SYS_MALLOC_SIMPLE=y
CONFIG_SPL_SYS_MMCSD_RAW_MODE=y
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x1400
CONFIG_SPL_DMA=y
CONFIG_SPL_ENV_SUPPORT=y
CONFIG_SPL_I2C=y
CONFIG_SPL_DM_MAILBOX=y
CONFIG_SPL_POWER_DOMAIN=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SPL_THERMAL=y
CONFIG_SYS_PROMPT="Verdin AM62P # "
CONFIG_CMD_ADTIMG=y
CONFIG_CMD_ASKENV=y
# CONFIG_CMD_EXPORTENV is not set
CONFIG_CRC32_VERIFY=y
CONFIG_CMD_MD5SUM=y
CONFIG_MD5SUM_VERIFY=y
CONFIG_CMD_MEMTEST=y
CONFIG_CMD_BCB=y
CONFIG_CMD_CLK=y
CONFIG_CMD_DFU=y
CONFIG_CMD_GPIO=y
CONFIG_CMD_I2C=y
CONFIG_CMD_MMC=y
CONFIG_CMD_READ=y
CONFIG_CMD_REMOTEPROC=y
CONFIG_CMD_USB=y
CONFIG_CMD_USB_MASS_STORAGE=y
CONFIG_CMD_BOOTCOUNT=y
CONFIG_CMD_CACHE=y
CONFIG_CMD_TIME=y
CONFIG_CMD_UUID=y
CONFIG_CMD_PMIC=y
CONFIG_CMD_REGULATOR=y
CONFIG_CMD_EXT4_WRITE=y
# CONFIG_ISO_PARTITION is not set
# CONFIG_SPL_EFI_PARTITION is not set
CONFIG_OF_CONTROL=y
CONFIG_SPL_OF_CONTROL=y
CONFIG_MULTI_DTB_FIT=y
CONFIG_SPL_MULTI_DTB_FIT=y
CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y
CONFIG_ENV_OVERWRITE=y
CONFIG_ENV_IS_IN_MMC=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_SYS_MMC_ENV_PART=1
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
CONFIG_USE_ETHPRIME=y
CONFIG_ETHPRIME="eth0"
CONFIG_VERSION_VARIABLE=y
CONFIG_IP_DEFRAG=y
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_TFTP_BLOCKSIZE=4096
CONFIG_SPL_DM=y
CONFIG_SPL_DM_SEQ_ALIAS=y
CONFIG_REGMAP=y
CONFIG_SPL_REGMAP=y
CONFIG_SPL_SYSCON=y
CONFIG_SPL_OF_TRANSLATE=y
CONFIG_BOOTCOUNT_LIMIT=y
CONFIG_BOOTCOUNT_ENV=y
CONFIG_CLK=y
CONFIG_SPL_CLK=y
CONFIG_CLK_TI_SCI=y
CONFIG_DFU_RAM=y
CONFIG_SYS_DFU_DATA_BUF_SIZE=0x5000
CONFIG_SYS_DFU_MAX_FILE_SIZE=0x800000
CONFIG_DMA_CHANNELS=y
CONFIG_TI_K3_NAVSS_UDMA=y
CONFIG_USB_FUNCTION_FASTBOOT=y
CONFIG_FASTBOOT_BUF_ADDR=0x88200000
CONFIG_FASTBOOT_BUF_SIZE=0x8000000
CONFIG_FASTBOOT_UUU_SUPPORT=y
CONFIG_TI_SCI_PROTOCOL=y
CONFIG_GPIO_HOG=y
CONFIG_SPL_GPIO_HOG=y
CONFIG_SPL_DM_GPIO_LOOKUP_LABEL=y
CONFIG_DA8XX_GPIO=y
CONFIG_DM_PCA953X=y
CONFIG_SPL_DM_PCA953X=y
CONFIG_DM_I2C=y
CONFIG_DM_I2C_GPIO=y
CONFIG_SYS_I2C_OMAP24XX=y
CONFIG_DM_MAILBOX=y
CONFIG_K3_SEC_PROXY=y
CONFIG_I2C_EEPROM=y
CONFIG_SUPPORT_EMMC_BOOT=y
CONFIG_MMC_IO_VOLTAGE=y
CONFIG_SPL_MMC_IO_VOLTAGE=y
CONFIG_MMC_UHS_SUPPORT=y
CONFIG_SPL_MMC_UHS_SUPPORT=y
CONFIG_MMC_HS200_SUPPORT=y
CONFIG_SPL_MMC_HS200_SUPPORT=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_ADMA=y
CONFIG_SPL_MMC_SDHCI_ADMA=y
CONFIG_MMC_SDHCI_AM654=y
CONFIG_PHY_ADDR_ENABLE=y
CONFIG_PHY_MICREL=y
CONFIG_PHY_MICREL_KSZ90X1=y
CONFIG_PHY_TI_DP83867=y
CONFIG_PHY_ETHERNET_ID=y
CONFIG_DM_ETH_PHY=y
CONFIG_RGMII=y
CONFIG_TI_AM65_CPSW_NUSS=y
CONFIG_PHY=y
CONFIG_PINCTRL=y
CONFIG_SPL_PINCTRL=y
CONFIG_PINCTRL_SINGLE=y
CONFIG_POWER_DOMAIN=y
CONFIG_TI_SCI_POWER_DOMAIN=y
CONFIG_DM_PMIC=y
CONFIG_PMIC_TPS65219=y
CONFIG_DM_REGULATOR=y
CONFIG_SPL_DM_REGULATOR=y
CONFIG_DM_REGULATOR_FIXED=y
CONFIG_SPL_DM_REGULATOR_FIXED=y
CONFIG_DM_REGULATOR_GPIO=y
CONFIG_SPL_DM_REGULATOR_GPIO=y
CONFIG_DM_REGULATOR_TPS65219=y
CONFIG_K3_SYSTEM_CONTROLLER=y
CONFIG_REMOTEPROC_TI_K3_ARM64=y
CONFIG_REMOTEPROC_TI_K3_DSP=y
CONFIG_REMOTEPROC_TI_K3_R5F=y
CONFIG_RESET_TI_SCI=y
CONFIG_DM_SERIAL=y
CONFIG_SOC_DEVICE=y
CONFIG_SOC_DEVICE_TI_K3=y
CONFIG_SOC_TI=y
CONFIG_SYSRESET=y
CONFIG_SPL_SYSRESET=y
CONFIG_SYSRESET_TI_SCI=y
CONFIG_DM_THERMAL=y
CONFIG_USB=y
CONFIG_DM_USB_GADGET=y
CONFIG_SPL_DM_USB_GADGET=y
CONFIG_USB_XHCI_HCD=y
CONFIG_USB_DWC3=y
CONFIG_USB_DWC3_GENERIC=y
CONFIG_SPL_USB_DWC3_GENERIC=y
CONFIG_SPL_USB_DWC3_AM62=y
CONFIG_USB_DWC3_AM62=y
CONFIG_USB_GADGET=y
CONFIG_SPL_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="Toradex"
CONFIG_USB_GADGET_VENDOR_NUM=0x1b67
CONFIG_USB_GADGET_PRODUCT_NUM=0x4000
CONFIG_SPL_DFU=y
CONFIG_FS_FAT_MAX_CLUSTSIZE=16384
CONFIG_HEXDUMP=y

View File

@@ -0,0 +1,117 @@
CONFIG_ARM=y
CONFIG_ARCH_K3=y
CONFIG_SYS_MALLOC_LEN=0x08000000
CONFIG_SYS_MALLOC_F_LEN=0x9000
CONFIG_SPL_LIBCOMMON_SUPPORT=y
CONFIG_SPL_LIBGENERIC_SUPPORT=y
CONFIG_SOC_K3_AM62P5=y
CONFIG_K3_QOS=y
CONFIG_TARGET_VERDIN_AM62P_R5=y
CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x43c4a7f0
CONFIG_ENV_SIZE=0x20000
CONFIG_DM_GPIO=y
CONFIG_DEFAULT_DEVICE_TREE="k3-am62p5-verdin-r5"
CONFIG_DM_RESET=y
CONFIG_SPL_MMC=y
CONFIG_SPL_SERIAL=y
CONFIG_SPL_DRIVERS_MISC=y
CONFIG_SPL_STACK_R_ADDR=0x82000000
CONFIG_SPL_SYS_MALLOC_F_LEN=0x8000
CONFIG_SPL_TEXT_BASE=0x43c00000
CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
CONFIG_SPL_BSS_START_ADDR=0x43c4b000
CONFIG_SPL_BSS_MAX_SIZE=0x3000
CONFIG_SPL_STACK_R=y
CONFIG_SPL_SIZE_LIMIT=0x3C000
CONFIG_SPL_SIZE_LIMIT_PROVIDE_STACK=0x5000
CONFIG_SPL_LIBDISK_SUPPORT=y
CONFIG_SPL_LOAD_FIT=y
CONFIG_SPL_LOAD_FIT_ADDRESS=0x80080000
# CONFIG_DISPLAY_CPUINFO is not set
CONFIG_SPL_SIZE_LIMIT_SUBTRACT_GD=y
CONFIG_SPL_SIZE_LIMIT_SUBTRACT_MALLOC=y
CONFIG_SPL_MAX_SIZE=0x3B000
CONFIG_SPL_PAD_TO=0x0
CONFIG_SPL_SYS_REPORT_STACK_F_USAGE=y
CONFIG_SPL_SYS_MALLOC_SIMPLE=y
CONFIG_SPL_SEPARATE_BSS=y
CONFIG_SPL_SYS_MALLOC=y
CONFIG_SPL_HAS_CUSTOM_MALLOC_START=y
CONFIG_SPL_CUSTOM_SYS_MALLOC_ADDR=0x84000000
CONFIG_SPL_SYS_MALLOC_SIZE=0x1000000
CONFIG_SPL_EARLY_BSS=y
CONFIG_SPL_SYS_MMCSD_RAW_MODE=y
CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x400
CONFIG_SPL_ENV_SUPPORT=y
CONFIG_SPL_I2C=y
CONFIG_SPL_DM_MAILBOX=y
CONFIG_SPL_DM_RESET=y
CONFIG_SPL_POWER_DOMAIN=y
CONFIG_SPL_RAM_DEVICE=y
CONFIG_SPL_REMOTEPROC=y
CONFIG_CMD_DFU=y
CONFIG_OF_CONTROL=y
CONFIG_SPL_OF_CONTROL=y
CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_SPL_DM=y
CONFIG_SPL_DM_SEQ_ALIAS=y
CONFIG_REGMAP=y
CONFIG_SPL_REGMAP=y
CONFIG_SYSCON=y
CONFIG_SPL_SYSCON=y
CONFIG_SPL_OF_TRANSLATE=y
CONFIG_CLK=y
CONFIG_SPL_CLK=y
CONFIG_SPL_CLK_CCF=y
CONFIG_SPL_CLK_K3_PLL=y
CONFIG_SPL_CLK_K3=y
CONFIG_SYS_DFU_DATA_BUF_SIZE=0x5000
CONFIG_TI_SCI_PROTOCOL=y
CONFIG_DA8XX_GPIO=y
CONFIG_DM_PCA953X=y
CONFIG_DM_I2C=y
CONFIG_SYS_I2C_OMAP24XX=y
CONFIG_DM_MAILBOX=y
CONFIG_K3_SEC_PROXY=y
CONFIG_MISC=y
CONFIG_ESM_K3=y
CONFIG_SPL_MMC_HS200_SUPPORT=y
CONFIG_MMC_SDHCI=y
CONFIG_MMC_SDHCI_ADMA=y
CONFIG_SPL_MMC_SDHCI_ADMA=y
CONFIG_MMC_SDHCI_AM654=y
CONFIG_PINCTRL=y
# CONFIG_PINCTRL_GENERIC is not set
CONFIG_SPL_PINCTRL=y
# CONFIG_SPL_PINCTRL_GENERIC is not set
CONFIG_PINCTRL_SINGLE=y
CONFIG_POWER_DOMAIN=y
CONFIG_TI_POWER_DOMAIN=y
CONFIG_K3_SYSTEM_CONTROLLER=y
CONFIG_REMOTEPROC_TI_K3_ARM64=y
CONFIG_RESET_TI_SCI=y
CONFIG_SPECIFY_CONSOLE_INDEX=y
CONFIG_DM_SERIAL=y
CONFIG_SOC_DEVICE=y
CONFIG_SOC_DEVICE_TI_K3=y
CONFIG_SOC_TI=y
CONFIG_TIMER=y
CONFIG_SPL_TIMER=y
CONFIG_OMAP_TIMER=y
CONFIG_USB=y
CONFIG_DM_USB_GADGET=y
CONFIG_SPL_DM_USB_GADGET=y
CONFIG_USB_DWC3=y
CONFIG_USB_DWC3_GENERIC=y
CONFIG_SPL_USB_DWC3_GENERIC=y
CONFIG_SPL_USB_DWC3_AM62=y
CONFIG_USB_GADGET=y
CONFIG_SPL_USB_GADGET=y
CONFIG_USB_GADGET_MANUFACTURER="Toradex"
CONFIG_USB_GADGET_VENDOR_NUM=0x1b67
CONFIG_USB_GADGET_PRODUCT_NUM=0x4000
CONFIG_USB_GADGET_DOWNLOAD=y
CONFIG_SPL_DFU=y
CONFIG_LIB_RATIONAL=y
CONFIG_SPL_LIB_RATIONAL=y

View File

@@ -49,6 +49,7 @@ K3 SoC based boards in other sections
* :doc:`../phytec/phycore-am62x`
* :doc:`../phytec/phycore-am62ax`
* :doc:`../toradex/verdin-am62`
* :doc:`../toradex/verdin-am62p`
Boot Flow Overview
------------------

View File

@@ -11,5 +11,6 @@ Toradex
colibri-imx8x
smarc-imx8mp
verdin-am62
verdin-am62p
verdin-imx8mm
verdin-imx8mp

View File

@@ -0,0 +1,196 @@
.. SPDX-License-Identifier: GPL-2.0-or-later
.. sectionauthor:: Parth Pancholi <parth.pancholi@toradex.com>
Verdin AM62P Module
===================
- SoM: https://www.toradex.com/computer-on-modules/verdin-arm-family/ti-am62p
- Carrier board: https://www.toradex.com/products/carrier-board/verdin-development-board-kit
Quick Start
-----------
- Setup environment variables
- Get binary-only TI Linux firmware
- Build the ARM trusted firmware binary
- Build the OPTEE binary
- Build U-Boot for the R5
- Build U-Boot for the A53
- Flash to eMMC
- Boot
Setup environment
-----------------
Suggested current toolchains are ARM 11.3 (https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads):
- https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel/arm-gnu-toolchain-11.3.rel1-x86_64-arm-none-linux-gnueabihf.tar.xz
- https://developer.arm.com/-/media/Files/downloads/gnu/11.3.rel1/binrel/arm-gnu-toolchain-11.3.rel1-x86_64-aarch64-none-linux-gnu.tar.xz
.. code-block:: bash
$ export CROSS_COMPILE_32=<path/to/arm/toolchain/bin/>arm-none-linux-gnueabihf-
$ export CROSS_COMPILE_64=<path/to/arm64/toolchain/bin/>aarch64-none-linux-gnu-
Get the TI Linux Firmware
-------------------------
.. code-block:: bash
$ echo "Downloading TI Linux Firmware..."
$ git clone -b ti-linux-firmware https://git.ti.com/git/processor-firmware/ti-linux-firmware.git
Get and Build the ARM Trusted Firmware (Trusted Firmware A)
-----------------------------------------------------------
.. code-block:: bash
$ echo "Downloading and building TF-A..."
$ git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
$ cd trusted-firmware-a
Then build ATF (TF-A):
.. code-block:: bash
$ export CROSS_COMPILE="$CROSS_COMPILE_64"
$ make PLAT=k3 K3_PM_SYSTEM_SUSPEND=1 TARGET_BOARD=lite SPD=opteed
Get and Build OPTEE
-------------------
.. code-block:: bash
$ echo "Downloading and building OPTEE..."
$ git clone https://github.com/OP-TEE/optee_os.git
$ cd optee_os
Then build OPTEE:
.. code-block:: bash
$ export CROSS_COMPILE="$CROSS_COMPILE_32"
$ export CROSS_COMPILE64="$CROSS_COMPILE_64"
$ make PLATFORM=k3-am62px CFG_ARM64_core=y
Build U-Boot for R5
-------------------
.. code-block:: bash
$ export CROSS_COMPILE="$CROSS_COMPILE_32"
$ export BINMAN_INDIRS=<path/to/ti-linux-firmware>
$ make O=/tmp/verdin-am62p-r5 verdin-am62p_r5_defconfig
$ make O=/tmp/verdin-am62p-r5
Build U-Boot for A53
--------------------
.. code-block:: bash
$ export CROSS_COMPILE=$CROSS_COMPILE_64
$ export BL31=<path/to/atf>/build/k3/lite/release/bl31.bin
$ export TEE=<path/to/optee>/out/arm-plat-k3/core/tee-pager_v2.bin
$ export BINMAN_INDIRS="<path/to/ti-linux-firmware> /tmp/verdin-am62p-r5"
$ make O=/tmp/verdin-am62p-a53 verdin-am62p_a53_defconfig
$ make O=/tmp/verdin-am62p-a53
Flash to eMMC
-------------
.. code-block:: console
=> mmc dev 0 1
=> fatload mmc 1 ${loadaddr} tiboot3.bin
=> mmc write ${loadaddr} 0x0 0x400
=> fatload mmc 1 ${loadaddr} tispl.bin
=> mmc write ${loadaddr} 0x400 0x1000
=> fatload mmc 1 ${loadaddr} u-boot.img
=> mmc write ${loadaddr} 0x1400 0x2000
As a convenience, instead of having to remember all those addresses and sizes,
one may also use the update U-Boot wrappers:
.. code-block:: console
=> tftpboot ${loadaddr} tiboot3.bin
=> run update_tiboot3
=> tftpboot ${loadaddr} tispl.bin
=> run update_tispl
=> tftpboot ${loadaddr} u-boot.img
=> run update_uboot
Boot
----
Output:
.. code-block:: console
U-Boot SPL 2025.04-00006-g51dc98d36470 (May 12 2025 - 15:46:57 +0100)
SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.7--v11.00.07 (Fancy Rat)')
Changed A53 CPU frequency to 1250000000Hz (U grade) in DT
SPL initial stack usage: 17080 bytes
Trying to boot from MMC1
Authentication passed
Authentication passed
Authentication passed
Loading Environment from nowhere... OK
init_env from device 9 not supported!
Authentication passed
Authentication passed
Starting ATF on ARM64 core...
NOTICE: BL31: v2.12.0(release):v2.12.0-1106-g4301798db096
NOTICE: BL31: Built : 10:57:58, May 9 2025
I/TC:
I/TC: OP-TEE version: 4.6.0-18-g76d920d354df (gcc version 12.3.1 20230626 (Arm GNU Toolchain 12.3.Rel1 (Build arm-12.35))) #4 Tue May 6 19:48:13 UTC 2025 aarch64
I/TC: WARNING: This OP-TEE configuration might be insecure!
I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
I/TC: Primary CPU initializing
I/TC: GIC redistributor base address not provided
I/TC: Assuming default GIC group status and modifier
I/TC: SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.7--v11.00.07 (Fancy Rat)')
I/TC: Activated SA2UL device
I/TC: Enabled firewalls for SA2UL TRNG device
I/TC: SA2UL TRNG initialized
I/TC: SA2UL Drivers initialized
I/TC: HUK Initialized
I/TC: Primary CPU switching to normal world boot
U-Boot SPL 2025.04-00006-g51dc98d36470 (May 12 2025 - 15:47:54 +0100)
SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.7--v11.00.07 (Fancy Rat)')
SPL initial stack usage: 1760 bytes
HW CFG: 0x00
Trying to boot from MMC1
Authentication passed
Authentication passed
U-Boot 2025.04-00006-g51dc98d36470 (May 12 2025 - 15:47:54 +0100)
SoC: AM62PX SR1.0 HS-FS
DRAM: 2 GiB
Core: 147 devices, 31 uclasses, devicetree: separate
MMC: mmc@fa10000: 0, mmc@fa00000: 1
Loading Environment from MMC... Reading from MMC(0)... OK
In: serial@2800000
Out: serial@2800000
Err: serial@2800000
Model: Toradex 0099 Verdin AM62P Quad 2GB WB IT V1.0A
Serial#: 15664919
Carrier: Toradex Dahlia V1.1D, Serial# 11287149
am65_cpsw_nuss ethernet@8000000: K3 CPSW: nuss_ver: 0x6BA01903 cpsw_ver: 0x6BA81903 ale_ver: 0x00290105 Ports:2
Setting variant to wifi
Net:
Warning: ethernet@8000000port@1 MAC addresses don't match:
Address in ROM is 58:a1:5f:b8:93:f9
Address in environment is 00:14:2d:ef:07:17
eth0: ethernet@8000000port@1 [PRIME]Could not get PHY for mdio@f00: addr 7
am65_cpsw_nuss_port ethernet@8000000port@2: phy_connect() failed
Hit any key to stop autoboot: 0
Verdin AM62P #

View File

@@ -0,0 +1,15 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* Configuration header file for Verdin AM62P SoM
*
* Copyright 2025 Toradex - https://www.toradex.com/
*/
#ifndef __VERDIN_AM62P_H
#define __VERDIN_AM62P_H
/* DDR Configuration */
#define CFG_SYS_SDRAM_BASE 0x80000000
#define CFG_SYS_SDRAM_SIZE SZ_2G /* Maximum supported size */
#endif /* __VERDIN_AM62P_H */