Patch to add Venom support to Openwrt
--- a/dev/null
+++ b/target/linux/mvebu/patches-4.14/230-armada-385-add-venom.patch
@@ -0,0 +1,214 @@
+--- a/dev/null
++++ b/arch/arm/boot/dts/armada-385-linksys-venom.dts
+@@ -0,0 +1,204 @@
++/*
++ * Device Tree file for the Linksys WRT32X (Venom)
++ *
++ * Copyright (C) 2017 Imre Kaloz <kaloz@openwrt.org>
++ *
++ *
++ * This file is dual-licensed: you can use it either under the terms
++ * of the GPL or the X11 license, at your option. Note that this dual
++ * licensing only applies to this file, and not this project as a
++ * whole.
++ *
++ * a) This file is licensed under the terms of the GNU General Public
++ * License version 2. This program is licensed "as is" without
++ * any warranty of any kind, whether express or implied.
++ *
++ * Or, alternatively,
++ *
++ * b) Permission is hereby granted, free of charge, to any person
++ * obtaining a copy of this software and associated documentation
++ * files (the "Software"), to deal in the Software without
++ * restriction, including without limitation the rights to use,
++ * copy, modify, merge, publish, distribute, sublicense, and/or
++ * sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the following
++ * conditions:
++ *
++ * The above copyright notice and this permission notice shall be
++ * included in all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++ * OTHER DEALINGS IN THE SOFTWARE.
++ */
++
++/dts-v1/;
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/input/input.h>
++#include "armada-385-linksys.dtsi"
++
++/ {
++ model = "Linksys WRT32X";
++ compatible = "linksys,venom", "linksys,armada385", "marvell,armada385",
++ "marvell,armada380";
++ };
++
++ &expander0 {
++ wan_amber@0 {
++ label = "venom:amber:wan";
++ reg = <0x0>;
++ };
++
++ wan_blue@1 {
++ label = "venom:blue:wan";
++ reg = <0x1>;
++ };
++
++ usb2@5 {
++ label = "venom:blue:usb2";
++ reg = <0x5>;
++ };
++
++ usb3_1@6 {
++ label = "venom:blue:usb3_1";
++ reg = <0x6>;
++ };
++
++ usb3_2@7 {
++ label = "venom:blue:usb3_2";
++ reg = <0x7>;
++ };
++
++ wps_blue@8 {
++ label = "venom:blue:wps";
++ reg = <0x8>;
++ };
++
++ wps_amber@9 {
++ label = "venom:amber:wps";
++ reg = <0x9>;
++ };
++ };
++
++ &gpio_leds {
++ power {
++ gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>;
++ label = "venom:blue:power";
++ };
++
++ sata {
++ gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
++ label = "venom:blue:sata";
++ };
++
++ wlan_2g {
++ gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
++ label = "venom:blue:wlan_2g";
++ };
++
++ wlan_5g {
++ gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
++ label = "venom:blue:wlan_5g";
++ };
++ };
++
++ &gpio_leds_pins {
++ marvell,pins = "mpp21", "mpp45", "mpp46", "mpp56";
++ };
++
++ &nand {
++ /* Spansion S34ML02G2 256MiB, OEM Layout */
++ partition@0 {
++ label = "u-boot";
++ reg = <0x0000000 0x200000>; /* 2MB */
++ /* read-only; */
++ };
++
++ partition@200000 {
++ label = "u_env";
++ reg = <0x200000 0x20000>; /* 128KB */
++ };
++
++ partition@220000 {
++ label = "s_env";
++ reg = <0x220000 0x40000>; /* 256KB */
++ };
++
++ partition@180000 {
++ label = "unused_area";
++ reg = <0x260000 0x5c0000>; /* 5.75MB */
++ };
++
++ partition@7e0000 {
++ label = "devinfo";
++ reg = <0x7e0000 0x40000>; /* 256KB */
++ read-only;
++ };
++
++ /* kernel1 overlaps with rootfs1 by design */
++ partition@900000 {
++ label = "kernel1";
++ reg = <0x900000 0x7b00000>; /* 123MB */
++ };
++
++ partition@c00000 {
++ label = "rootfs1";
++ reg = <0xc00000 0x7800000>; /* 120MB */
++ };
++
++ /* kernel2 overlaps with rootfs2 by design */
++ partition@8400000 {
++ label = "kernel2";
++ reg = <0x8400000 0x7b00000>; /* 123MB */
++ };
++
++ partition@8700000 {
++ label = "rootfs2";
++ reg = <0x8700000 0x7800000>; /* 120MB */
++ };
++
++ /* last MB is for the BBT, not writable */
++ partition@ff00000 {
++ label = "BBT";
++ reg = <0xff00000 0x100000>;
++ };
++ };
++
++
++ &pcie1 {
++ mwlwifi {
++ marvell,chainmask = <4 4>;
++ };
++ };
++
++ &pcie2 {
++ mwlwifi {
++ marvell,chainmask = <4 4>;
++ };
++ };
++
++ &sdhci {
++ pinctrl-names = "default";
++ pinctrl-0 = <&sdhci_pins>;
++ no-1-8-v;
++ non-removable;
++ wp-inverted;
++ bus-width = <8>;
++ status = "okay";
++ };
++
++ &usb3_1_vbus {
++ gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
++ };
++
++ &usb3_1_vbus_pins {
++ marvell,pins = "mpp44";
++ };
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -1027,6 +1027,7 @@ dtb-$(CONFIG_MACH_ARMADA_38X) += \
+ armada-385-linksys-cobra.dtb \
+ armada-385-linksys-rango.dtb \
+ armada-385-linksys-shelby.dtb \
++ armada-385-linksys-venom.dtb \
+ armada-385-synology-ds116.dtb \
+ armada-385-turris-omnia.dtb \
+ armada-388-clearfog.dtb \
--- a/target/linux/mvebu/image/cortex-a9.mk
+++ b/target/linux/mvebu/image/cortex-a9.mk
@@ -51,6 +51,17 @@ define Device/linksys-wrt1900acs
endef
TARGET_DEVICES += linksys-wrt1900acs
+define Device/linksys-wrt32x
+$(call Device/linksys,WRT32X (Venom))
+ DEVICE_DTS := armada-385-linksys-venom
+ DEVICE_PACKAGES += kmod-btmrvl kmod-mwifiex-sdio mwlwifi-firmware-88w8964
+ $(Device/NAND-128K)
+ $(Device/UBI-factory)
+ KERNEL_SIZE := 3072k
+ KERNEL := kernel-bin | append-dtb
+endef
+TARGET_DEVICES += linksys-wrt32x
+
define Device/linksys-wrt1900ac
$(call Device/linksys,WRT1900AC (Mamba))
DEVICE_DTS := armada-xp-linksys-mamba
--- a/target/linux/mvebu/base-files/etc/diag.sh
+++ b/target/linux/mvebu/base-files/etc/diag.sh
@@ -19,6 +19,9 @@ get_status_led() {
armada-385-linksys-shelby)
status_led="shelby:white:power"
;;
+ armada-385-linksys-venom)
+ status_led="venom:blue:power"
+ ;;
armada-xp-linksys-mamba)
status_led="mamba:white:power"
;;
--- a/target/linux/mvebu/base-files/etc/board.d/01_leds
+++ b/target/linux/mvebu/base-files/etc/board.d/01_leds
@@ -35,6 +35,12 @@ armada-385-linksys-shelby)
ucidef_set_led_usbport "usb2" "USB 2" "pca963x:shelby:white:usb3_1" "usb2-port1" "usb3-port1"
ucidef_set_led_usbport "usb2_ss" "USB 2 SS" "pca963x:shelby:white:usb3_2" "usb3-port1"
;;
+armada-385-linksys-venom)
+ ucidef_set_led_netdev "wan" "WAN" "pca963x:venom:blue:wan" "eth1"
+ ucidef_set_led_usbport "usb1" "USB 1" "pca963x:venom:blue:usb2" "usb1-port1"
+ ucidef_set_led_usbport "usb2" "USB 2" "pca963x:venom:blue:usb3_1" "usb2-port1" "usb3-port1"
+ ucidef_set_led_usbport "usb2_ss" "USB 2 SS" "pca963x:venom:blue:usb3_2" "usb3-port1"
+ ;;
armada-xp-linksys-mamba)
ucidef_set_led_netdev "wan" "WAN" "mamba:white:wan" "eth1"
ucidef_set_led_usbport "usb1" "USB 1" "mamba:white:usb2" "usb1-port1"
--- a/target/linux/mvebu/base-files/etc/board.d/02_network
+++ b/target/linux/mvebu/base-files/etc/board.d/02_network
@@ -18,6 +18,7 @@ armada-385-linksys-caiman|\
armada-385-linksys-cobra|\
armada-385-linksys-rango|\
armada-385-linksys-shelby|\
+armada-385-linksys-venom|\
armada-xp-linksys-mamba)
ucidef_set_interfaces_lan_wan "eth0.1" "eth1.2"
ucidef_add_switch "switch0" \
--- a/target/linux/mvebu/base-files/etc/init.d/linksys_recovery
+++ b/target/linux/mvebu/base-files/etc/init.d/linksys_recovery
@@ -7,7 +7,7 @@ boot() {
. /lib/functions.sh
case $(board_name) in
- armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-rango|armada-385-linksys-shelby|armada-xp-linksys-mamba)
+ armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-rango|armada-385-linksys-shelby|armada-385-linksys-venom|armada-xp-linksys-mamba)
# make sure auto_recovery in uboot is always on
AUTO_RECOVERY_ENA="`fw_printenv -n auto_recovery`"
if [ "$AUTO_RECOVERY_ENA" != "yes" ] ; then
--- a/target/linux/mvebu/base-files/etc/uci-defaults/03_wireless
+++ b/target/linux/mvebu/base-files/etc/uci-defaults/03_wireless
@@ -11,7 +11,7 @@
board=$(board_name)
case "$board" in
-armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-shelby|armada-xp-linksys-mamba)
+armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-shelby|armada-385-linksys-venom|armada-xp-linksys-mamba)
SKU=$(strings /dev/mtd3|sed -ne 's/^cert_region=//p')
WIFIMAC2G=$(macaddr_add $(cat /sys/class/net/eth0/address) +1)
WIFIMAC5G=$(macaddr_add $WIFIMAC2G +1)
--- a/target/linux/mvebu/base-files/lib/mvebu.sh
+++ b/target/linux/mvebu/base-files/lib/mvebu.sh
@@ -50,6 +50,9 @@ mvebu_board_detect() {
*"Linksys WRT3200ACM")
name="armada-385-linksys-rango"
;;
+ *"Linksys WRT32X")
+ name="armada-385-linksys-venom"
+ ;;
*"Marvell Armada 385 Access Point Development Board")
name="armada-385-db-ap"
;;
--- a/target/linux/mvebu/base-files/lib/preinit/06_set_iface_mac
+++ b/target/linux/mvebu/base-files/lib/preinit/06_set_iface_mac
@@ -14,7 +14,7 @@ preinit_set_mac_address() {
ip link set dev eth0 address $mac 2>/dev/null
ip link set dev eth1 address $mac 2>/dev/null
;;
- armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-rango|armada-385-linksys-shelby)
+ armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-rango|armada-385-linksys-shelby|armada-385-linksys-venom)
# rename interfaces back to the way they were with 4.4
case "$(readlink /sys/class/net/eth0)" in
*f1070000*)
--- a/target/linux/mvebu/base-files/lib/preinit/81_linksys_syscfg
+++ b/target/linux/mvebu/base-files/lib/preinit/81_linksys_syscfg
@@ -8,7 +8,7 @@ preinit_mount_syscfg() {
. /lib/functions.sh
case $(board_name) in
- armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-rango|armada-385-linksys-shelby|armada-xp-linksys-mamba)
+ armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-rango|armada-385-linksys-shelby|armada-385-linksys-venom|armada-xp-linksys-mamba)
needs_recovery=0
syscfg_part=$(grep syscfg /proc/mtd |cut -c4)
ubiattach -m $syscfg_part || needs_recovery=1
--- a/target/linux/mvebu/base-files/lib/upgrade/linksys.sh
+++ btarget/linux/mvebu/base-files/lib/upgrade/linksys.sh
@@ -55,7 +55,7 @@ platform_do_upgrade_linksys() {
nand_upgrade_tar "$1"
}
- [ "$magic_long" = "27051956" ] && {
+ [ "$magic_long" = "27051956" -o "$magic_long" = "0000a0e1" ] && {
# check firmwares' rootfs types
local target_mtd=$(find_mtd_part $part_label)
local oldroot="$(linksys_get_root_magic $target_mtd)"
--- a/target/linux/mvebu/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mvebu/base-files/lib/upgrade/platform.sh
@@ -13,7 +13,7 @@ platform_check_image() {
platform_do_upgrade() {
case "$(board_name)" in
- armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-rango|armada-385-linksys-shelby|armada-xp-linksys-mamba)
+ armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-rango|armada-385-linksys-shelby|armada-385-linksys-venom|armada-xp-linksys-mamba)
platform_do_upgrade_linksys "$ARGV"
;;
armada-385-turris-omnia|armada-388-clearfog-base|armada-388-clearfog-pro|globalscale,espressobin)
@@ -26,7 +26,7 @@ platform_do_upgrade() {
}
platform_copy_config() {
case "$(board_name)" in
- armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-rango|armada-385-linksys-shelby|armada-xp-linksys-mamba)
+ armada-385-linksys-caiman|armada-385-linksys-cobra|armada-385-linksys-rango|armada-385-linksys-shelby|armada-385-linksys-venom|armada-xp-linksys-mamba)
platform_copy_config_linksys
;;
armada-385-turris-omnia|armada-388-clearfog-base|armada-388-clearfog-pro|globalscale,espressobin)
I have tested flashing from OEM to Openwrt, rebooting, triple reboot flipping back to alternate flash, LAN and WIFI (including 160MHz ) .
Forgot to test Failsafe (that is probably a good idea)
I'm sure i've made lots of mistakes in this and there's things that probably don't work.
Someone smarter than me should pick it up and run with it.
Go forth and be merry.
If someone wants to push this to mailing list be my guest.
EDIT: needs ubootenv mods. See mailing list for latest patch. Sysupgrade won’t work without it