mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2025-12-10 07:34:40 +01:00
mvebu: add support for Turris MOX
Adds support for Turris MOX, a modular router extendable by board modules (MOX B-G). You can explore the idea behind the modules at: https://mox-configurator.turris.cz/ More information about Turris MOX can be found here: https://docs.turris.cz/hw/mox/intro/ Also works with Turris Shield (Turris MOX A and C with a simplified OS UI). Specifications: ----------------------- MOX A - SoC: Marvell Armada 3720 - RAM: 512/1024 MB, DDR3 - Memory: - 8 MB SPI NOR Flash for U-Boot and rescue system - SD card slot - 1x RJ-45, 1Gbps - 1x USB 3.0 - 1x activity LED - 1x reset button - SDIO header - misc pin header (UART, GPIO, JTAG, ...) MOX B, G - 1x mPCIe slot - 1x SIM slot MOX C - 4x RJ-45, 1Gbps MOX D - SFP, 2.5Gbps MOX E - 8x RJ-45, 1Gbps MOX F - 4x USB 3.0 Module support: ----------------------- Additional packages are needed for some modules. MOX A (core) - works as is MOX B, G (mPCIe, mPCIe passthrough) - works as is MOX C, E (4x, 8x RJ-45) - kmod-dsa - kmod-dsa-mv88e6xxx MOX D (SFP) - kmod-sfp - kmod-phy-marvell-10g MOX F (4x USB 3.0) - works as is Wi-Fi 5, 3x3 card (WLE900VX) - kmod-ath10k - ath10k-board-qca988x - ath10k-firmware-qca988x Wi-Fi 6, DBDC, 2x2 card (MT7915DAN) - kmod-mt7915e - kmod-mt7915-firmware Interface naming: ----------------------- - MOX A's RJ-45 is assigned to `eth0`. - MOX C, E (4x, 8x RJ-45) are assigned to `lan<number>@eth1` - If MOX D (SFP) is connected directly to MOX A, the resulting interface is `eth1`. If it's connected through MOX E (8x RJ-45), the resulting interface is `sfp@eth1`. Quirks: ----------------------- - MOX is sensitive to the order of connected modules. Verify that the confguration is valid at: https://mox-configurator.turris.cz/ - `CONFIG_MOXTET` and `CONFIG_GPIO_MOXTET` need to be enabled in kernel config. Moxtet is a bus protocol needed to discover and configure MOX modules. It must be compiled into the kernel for the modules to work. Though it's very small so it won't bloat up the kernel image. Flashing instructions: ----------------------- 1. Download `openwrt-*-ext4-sdcard.img.gz` and `gunzip` it. 2. Insert an SD card and flash the image to it using dd: dd if=openwrt-*-ext4-sdcard.img.gz of=/dev/mmcblk0 bs=4096 conv=fsync 3. Plug the SD card into MOX. Troubleshooting: ----------------------- - https://docs.turris.cz/hw/serial/#turris-mox - https://docs.turris.cz/hw/mox/rescue-modes/ Signed-off-by: Tomáš Macholda <tomas.macholda@nic.cz> Link: https://github.com/openwrt/openwrt/pull/20356 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
cfb976d1d7
commit
ea6ee93060
6 changed files with 85 additions and 0 deletions
|
|
@ -22,6 +22,13 @@ define U-Boot/Default
|
|||
HIDDEN:=1
|
||||
endef
|
||||
|
||||
define U-Boot/mox
|
||||
NAME:=CZ.NIC Turris Mox
|
||||
BUILD_DEVICES:=cznic_turris-mox
|
||||
BUILD_SUBTARGET:=cortexa53
|
||||
UBOOT_CONFIG:=turris_mox
|
||||
endef
|
||||
|
||||
define U-Boot/clearfog
|
||||
NAME:=SolidRun ClearFog A1
|
||||
BUILD_DEVICES:=solidrun_clearfog-base-a1 solidrun_clearfog-pro-a1
|
||||
|
|
@ -69,6 +76,7 @@ define U-Boot/rb5009
|
|||
endef
|
||||
|
||||
UBOOT_TARGETS:= \
|
||||
mox \
|
||||
clearfog \
|
||||
helios4 \
|
||||
omnia \
|
||||
|
|
|
|||
|
|
@ -7,6 +7,9 @@ board_config_update
|
|||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
cznic,turris-mox)
|
||||
ucidef_set_led_heartbeat "wan" "MOX A" "mox:red:activity"
|
||||
;;
|
||||
glinet,gl-mv1000)
|
||||
ucidef_set_led_netdev "wan" "WAN" "green:wan" "wan"
|
||||
;;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,18 @@ board_config_update
|
|||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
cznic,turris-mox)
|
||||
mox_lan_interfaces=""
|
||||
for net in /sys/class/net/lan*; do
|
||||
[ -e "$net" ] || continue
|
||||
append mox_lan_interfaces "${net##*/}"
|
||||
done
|
||||
if [ -z "$mox_lan_interfaces" ]; then
|
||||
ucidef_set_interface_lan "eth0"
|
||||
else
|
||||
ucidef_set_interfaces_lan_wan "$mox_lan_interfaces" "eth0"
|
||||
fi
|
||||
;;
|
||||
glinet,gl-mv1000|\
|
||||
globalscale,espressobin|\
|
||||
globalscale,espressobin-emmc|\
|
||||
|
|
|
|||
|
|
@ -54,12 +54,14 @@ CONFIG_GENERIC_BUG_RELATIVE_POINTERS=y
|
|||
CONFIG_GENERIC_CSUM=y
|
||||
CONFIG_GENERIC_IOREMAP=y
|
||||
CONFIG_GENERIC_PINCONF=y
|
||||
CONFIG_GPIO_MOXTET=y
|
||||
CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
|
||||
CONFIG_MAILBOX=y
|
||||
# CONFIG_MAILBOX_TEST is not set
|
||||
CONFIG_MFD_SYSCON=y
|
||||
CONFIG_MMC_SDHCI_XENON=y
|
||||
CONFIG_MODULES_USE_ELF_RELA=y
|
||||
CONFIG_MOXTET=y
|
||||
CONFIG_MVEBU_GICP=y
|
||||
CONFIG_MVEBU_ICU=y
|
||||
CONFIG_MVEBU_ODMI=y
|
||||
|
|
|
|||
|
|
@ -1,3 +1,13 @@
|
|||
define Device/cznic_turris-mox
|
||||
$(call Device/Default-arm64)
|
||||
DEVICE_VENDOR := CZ.NIC
|
||||
DEVICE_MODEL := Turris MOX
|
||||
DEVICE_PACKAGES := kmod-usb2 kmod-gpio-button-hotplug kmod-rtc-ds1307 kmod-i2c-pxa
|
||||
SOC := armada-3720
|
||||
BOOT_SCRIPT := turris-mox
|
||||
endef
|
||||
TARGET_DEVICES += cznic_turris-mox
|
||||
|
||||
define Device/glinet_gl-mv1000
|
||||
$(call Device/Default-arm64)
|
||||
DEVICE_VENDOR := GL.iNet
|
||||
|
|
|
|||
50
target/linux/mvebu/image/turris-mox.bootscript
Normal file
50
target/linux/mvebu/image/turris-mox.bootscript
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
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
|
||||
rootdev="/dev/mmcblk0p2"
|
||||
rootflags="commit=5"
|
||||
bootpath="/"
|
||||
fi
|
||||
|
||||
load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${bootpath}/armada-3720-turris-mox.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
|
||||
Loading…
Add table
Reference in a new issue