[openwrt/openwrt] mvebu: add support for RIPE Atlas Probe v5

LEDE Commits lede-commits at lists.infradead.org
Thu Feb 12 13:22:24 PST 2026


hauke pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/0271f2ee3649fcabcf5cb989743bbbdc38b34b3e

commit 0271f2ee3649fcabcf5cb989743bbbdc38b34b3e
Author: Tomáš Macholda <tomas.macholda at nic.cz>
AuthorDate: Thu Sep 11 14:45:12 2025 +0200

    mvebu: add support for RIPE Atlas Probe v5
    
    RIPE Atlas Probe v5 is a network measurement device based on Turris MOX.
    
    u-boot bootscript supports booting both from the original Turris BTRFS
    layout and default OpenWrt ext4 boot + root partition layout.
    
    Specifications:
    * SoC: Marvell ARMADA 3720
    * RAM: 512 MiB, DDR3
    * eMMC: 4G
    * Ethernet: 1x 1GbE
    
    MAC:
    LAN MAC: label on board
    
    Flash instructions:
    * For using the default ext4 layout, boot into a live system using
    tftpboot in u-boot and flash an OpenWrt SD image onto /dev/mmcblk0.
    * For the Turris layout, put the new rootfs into subvolume '@', not
    forgetting to add Image, device tree, and boot.scr to /boot.
    
    Misc:
    * USB connection is only for power. For UART access use the pin header:
      1: GND
      2: +1.8V
      5: TX
      6: RX
    * Flashing the image onto Turris Shield won't work. Use Turris MOX image
      instead.
    
    Signed-off-by: Tomáš Macholda <tomas.macholda at nic.cz>
    Link: https://github.com/openwrt/openwrt/pull/20031
    Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/boot/uboot-mvebu/Makefile                  |   8 ++
 .../mvebu/cortexa53/base-files/etc/board.d/01_leds |   3 +
 .../cortexa53/base-files/etc/board.d/02_network    |   3 +
 .../boot/dts/marvell/armada-3720-atlas-v5.dts      | 110 +++++++++++++++++++++
 target/linux/mvebu/image/cortexa53.mk              |   9 ++
 target/linux/mvebu/image/ripe-atlas.bootscript     |  51 ++++++++++
 6 files changed, 184 insertions(+)

diff --git a/package/boot/uboot-mvebu/Makefile b/package/boot/uboot-mvebu/Makefile
index 93e083d85f..e351098517 100644
--- a/package/boot/uboot-mvebu/Makefile
+++ b/package/boot/uboot-mvebu/Makefile
@@ -75,12 +75,20 @@ define U-Boot/rb5009
   UBOOT_IMAGE:=u-boot.elf
 endef
 
+define U-Boot/atlas
+  NAME:=RIPE Atlas Probe v5
+  BUILD_DEVICES:=ripe_atlas-v5
+  BUILD_SUBTARGET:=cortexa53
+  UBOOT_CONFIG:=turris_mox
+endef
+
 UBOOT_TARGETS:= \
 	mox \
 	clearfog \
 	helios4 \
 	omnia \
 	espressobin \
+	atlas \
 	uDPU \
 	eDPU \
 	rb5009
diff --git a/target/linux/mvebu/cortexa53/base-files/etc/board.d/01_leds b/target/linux/mvebu/cortexa53/base-files/etc/board.d/01_leds
index 035fa4933b..2794aaeced 100644
--- a/target/linux/mvebu/cortexa53/base-files/etc/board.d/01_leds
+++ b/target/linux/mvebu/cortexa53/base-files/etc/board.d/01_leds
@@ -13,6 +13,9 @@ cznic,turris-mox)
 glinet,gl-mv1000)
 	ucidef_set_led_netdev "wan" "WAN" "green:wan" "wan"
 	;;
+ripe,atlas-v5)
+	ucidef_set_led_heartbeat "lan" "LAN" "red:activity"
+	;;
 esac
 
 board_config_flush
diff --git a/target/linux/mvebu/cortexa53/base-files/etc/board.d/02_network b/target/linux/mvebu/cortexa53/base-files/etc/board.d/02_network
index c70af063ce..c299a655c5 100644
--- a/target/linux/mvebu/cortexa53/base-files/etc/board.d/02_network
+++ b/target/linux/mvebu/cortexa53/base-files/etc/board.d/02_network
@@ -44,6 +44,9 @@ methode,edpu)
 	ucidef_set_interfaces_lan_wan "eth1" "eth0"
 	fi
 	;;
+ripe,atlas-v5)
+	ucidef_set_interface_lan "eth0"
+	;;
 *)
 	ucidef_set_interface_lan "eth0"
 	;;
diff --git a/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-3720-atlas-v5.dts b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-3720-atlas-v5.dts
new file mode 100644
index 0000000000..070d10a705
--- /dev/null
+++ b/target/linux/mvebu/files/arch/arm64/boot/dts/marvell/armada-3720-atlas-v5.dts
@@ -0,0 +1,110 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Device Tree file for RIPE Atlas Probe v5
+ * 2025 by Marek Behún <kabel at kernel.org>
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/bus/moxtet.h>
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+#include "armada-372x.dtsi"
+
+/ {
+	model = "RIPE Atlas Probe v5";
+	compatible = "ripe,atlas-v5", "marvell,armada3720",
+		     "marvell,armada3710";
+
+	aliases {
+		ethernet0 = &eth0;
+		mmc0 = &sdhci0;
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	memory at 0 {
+		device_type = "memory";
+		reg = <0x00000000 0x00000000 0x00000000 0x20000000>;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led {
+			gpios = <&gpiosb 21 GPIO_ACTIVE_LOW>;
+			function = LED_FUNCTION_ACTIVITY;
+			color = <LED_COLOR_ID_RED>;
+			linux,default-trigger = "default-on";
+		};
+	};
+
+	vsdc_reg: vsdc-reg {
+		compatible = "regulator-gpio";
+		regulator-name = "vsdc";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <3300000>;
+		regulator-boot-on;
+
+		gpios = <&gpiosb 23 GPIO_ACTIVE_HIGH>;
+		gpios-states = <0>;
+		states = <1800000 0x1
+			  3300000 0x0>;
+		enable-active-high;
+	};
+
+	firmware {
+		armada-3700-rwtm {
+			compatible = "marvell,armada-3700-rwtm-firmware", "cznic,turris-mox-rwtm";
+		};
+	};
+};
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart1_pins>;
+	status = "okay";
+};
+
+&eth0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&rgmii_pins>;
+	phy-mode = "rgmii-id";
+	phy-handle = <&phy1>;
+	status = "okay";
+};
+
+&sdhci0 {
+	non-removable;
+	bus-width = <4>;
+	mmc-ddr-1_8v;
+	mmc-hs400-1_8v;
+	sd-uhs-sdr104;
+	marvell,xenon-emmc;
+	marvell,xenon-tun-count = <9>;
+	marvell,pad-type = "fixed-1-8v";
+	vqmmc-supply = <&vsdc_reg>;
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&mmc_pins>;
+	status = "okay";
+
+	#address-cells = <1>;
+	#size-cells = <0>;
+	mmccard: mmccard at 0 {
+		compatible = "mmc-card";
+		reg = <0>;
+	};
+};
+
+&mdio {
+	pinctrl-names = "default";
+	pinctrl-0 = <&smi_pins>;
+	status = "okay";
+
+	phy1: ethernet-phy at 1 {
+		reg = <1>;
+	};
+};
diff --git a/target/linux/mvebu/image/cortexa53.mk b/target/linux/mvebu/image/cortexa53.mk
index f5cbd8a70b..bf0c9be2e6 100644
--- a/target/linux/mvebu/image/cortexa53.mk
+++ b/target/linux/mvebu/image/cortexa53.mk
@@ -117,3 +117,12 @@ define Device/methode_edpu
   KERNEL_INITRAMFS := kernel-bin | gzip | fit gzip $$(KDIR)/image-$$(DEVICE_DTS).dtb
 endef
 TARGET_DEVICES += methode_edpu
+
+define Device/ripe_atlas-v5
+  $(call Device/Default-arm64)
+  DEVICE_VENDOR := RIPE
+  DEVICE_MODEL := Atlas v5
+  SOC := armada-3720
+  BOOT_SCRIPT := ripe-atlas
+endef
+TARGET_DEVICES += ripe_atlas-v5
diff --git a/target/linux/mvebu/image/ripe-atlas.bootscript b/target/linux/mvebu/image/ripe-atlas.bootscript
new file mode 100644
index 0000000000..a75760da2c
--- /dev/null
+++ b/target/linux/mvebu/image/ripe-atlas.bootscript
@@ -0,0 +1,51 @@
+if part uuid ${devtype} ${devnum}:${distro_bootpart} bootuuid; then
+	if test "${bootfstype}" = "btrfs"; then
+		# Original BTRFS partition layout
+		rootdev="PARTUUID=${bootuuid}"
+		rootflags="commit=5,subvol=@"
+		bootpath="/@/boot"
+	else
+		# OpenWrt default ext4 bootpart + rootpart layout
+		setexpr rootpart ${distro_bootpart} + 1
+		rootdev="/dev/mmcblk0p${rootpart}"
+		rootflags="commit=5"
+		bootpath="/"
+	fi
+
+	load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${bootpath}/armada-3720-atlas-v5.dtb
+	if test "$filesize" != "0"; then
+		has_dtb=1
+	else
+		setenv has_dtb 0
+		echo "Cannot find device tree binary!"
+	fi
+
+	if test $has_dtb -eq 1; then
+		load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} ${bootpath}/Image
+		if test "$filesize" = "0"; then
+			echo "Failed to load ${bootpath}/Image"
+			echo "Now trying ${bootpath}/Image.lzma"
+			tmp_addr_r=0x10000000
+			load ${devtype} ${devnum}:${distro_bootpart} ${tmp_addr_r} ${bootpath}/Image.lzma
+			if test "$filesize" != "0"; then
+				if lzmadec ${tmp_addr_r} ${kernel_addr_r}; then
+					echo "Successfully decompressed Image.lzma"
+				else
+					echo "Failed decompressing Image.lzma"
+					filesize=0
+				fi
+			else
+				echo "Failed to load ${subvol}/boot/Image.lzma"
+			fi
+		fi
+		if test "$filesize" != "0"; then
+			setenv bootargs "earlyprintk console=ttyMV0,115200 earlycon=ar3700_uart,0xd0012000 rootfstype=${bootfstype} root=${rootdev} rootflags=${rootflags} rootwait ${contract} rw cfg80211.freg=${regdomain} ${quirks}"
+			booti ${kernel_addr_r} - ${fdt_addr_r}
+			echo "Booting Image failed"
+		else
+			echo "Cannot load kernel binary"
+		fi
+	fi
+
+	env delete bootuuid rootpart
+fi




More information about the lede-commits mailing list