47eda6a501
Device specifications: ====================== * Qualcomm/Atheros AR7240 rev 2 * 350/350/175 MHz (CPU/DDR/AHB) * 32 MB of RAM * 16 MB of SPI NOR flash - 2x 7 MB available; but one of the 7 MB regions is the recovery image * 2x 10/100 Mbps Ethernet * 1T1R 2.4 GHz Wi-Fi * 6x GPIO-LEDs (3x wifi, 2x ethernet, 1x power) * 1x GPIO-button (reset) * external h/w watchdog (enabled by default) * TTL pins are on board (arrow points to VCC, then follows: GND, TX, RX) * 2x fast ethernet - eth0 + 18-24V passive POE (mode B) + used as WAN interface - eth1 + builtin switch port 4 + used as LAN interface * 12-24V 1A DC * external antenna The device itself requires the mtdparts from the uboot arguments to properly boot the flashed image and to support dual-boot (primary + recovery image). Unfortunately, the name of the mtd device in mtdparts is still using the legacy name "ar7240-nor0" which must be supplied using the Linux-specfic DT parameter linux,mtd-name to overwrite the generic name "spi0.0". Flashing instructions: ====================== Various methods can be used to install the actual image on the flash. Two easy ones are: ap51-flash ---------- The tool ap51-flash (https://github.com/ap51-flash/ap51-flash) should be used to transfer the image to the u-boot when the device boots up. initramfs from TFTP ------------------- The serial console must be used to access the u-boot shell during bootup. It can then be used to first boot up the initramfs image from a TFTP server (here with the IP 192.168.1.21): setenv serverip 192.168.1.21 setenv ipaddr 192.168.1.1 tftpboot 0c00000 <filename-of-initramfs-kernel>.bin && bootm $fileaddr The actual sysupgrade image can then be transferred (on the LAN port) to the device via scp <filename-of-squashfs-sysupgrade>.bin root@192.168.1.1:/tmp/ On the device, the sysupgrade must then be started using sysupgrade -n /tmp/<filename-of-squashfs-sysupgrade>.bin Gluon image name change ======================= The device had the image name "openmesh-om2p" in older versions of Gluon. This had to be changed with the new name in the device trees of the ath79 device tree.
317 lines
8.9 KiB
Diff
317 lines
8.9 KiB
Diff
From: Sven Eckelmann <sven@narfation.org>
|
|
Date: Mon, 23 Nov 2020 13:41:34 +0100
|
|
Subject: ath79: Add support for OpenMesh OM2P v1
|
|
|
|
Device specifications:
|
|
======================
|
|
|
|
* Qualcomm/Atheros AR7240 rev 2
|
|
* 350/350/175 MHz (CPU/DDR/AHB)
|
|
* 32 MB of RAM
|
|
* 16 MB of SPI NOR flash
|
|
- 2x 7 MB available; but one of the 7 MB regions is the recovery image
|
|
* 2x 10/100 Mbps Ethernet
|
|
* 1T1R 2.4 GHz Wi-Fi
|
|
* 6x GPIO-LEDs (3x wifi, 2x ethernet, 1x power)
|
|
* 1x GPIO-button (reset)
|
|
* external h/w watchdog (enabled by default)
|
|
* TTL pins are on board (arrow points to VCC, then follows: GND, TX, RX)
|
|
* 2x fast ethernet
|
|
- eth0
|
|
+ 18-24V passive POE (mode B)
|
|
+ used as WAN interface
|
|
- eth1
|
|
+ builtin switch port 4
|
|
+ used as LAN interface
|
|
* 12-24V 1A DC
|
|
* external antenna
|
|
|
|
The device itself requires the mtdparts from the uboot arguments to
|
|
properly boot the flashed image and to support dual-boot (primary +
|
|
recovery image). Unfortunately, the name of the mtd device in mtdparts is
|
|
still using the legacy name "ar7240-nor0" which must be supplied using the
|
|
Linux-specfic DT parameter linux,mtd-name to overwrite the generic name
|
|
"spi0.0".
|
|
|
|
Flashing instructions:
|
|
======================
|
|
|
|
Various methods can be used to install the actual image on the flash.
|
|
Two easy ones are:
|
|
|
|
ap51-flash
|
|
----------
|
|
|
|
The tool ap51-flash (https://github.com/ap51-flash/ap51-flash) should be
|
|
used to transfer the image to the u-boot when the device boots up.
|
|
|
|
initramfs from TFTP
|
|
-------------------
|
|
|
|
The serial console must be used to access the u-boot shell during bootup.
|
|
It can then be used to first boot up the initramfs image from a TFTP server
|
|
(here with the IP 192.168.1.21):
|
|
|
|
setenv serverip 192.168.1.21
|
|
setenv ipaddr 192.168.1.1
|
|
tftpboot 0c00000 <filename-of-initramfs-kernel>.bin && bootm $fileaddr
|
|
|
|
The actual sysupgrade image can then be transferred (on the LAN port) to the
|
|
device via
|
|
|
|
scp <filename-of-squashfs-sysupgrade>.bin root@192.168.1.1:/tmp/
|
|
|
|
On the device, the sysupgrade must then be started using
|
|
|
|
sysupgrade -n /tmp/<filename-of-squashfs-sysupgrade>.bin
|
|
|
|
Signed-off-by: Sven Eckelmann <sven@narfation.org>
|
|
(cherry picked from commit 8143709c90c3aa0a84e14cf4a9dfbcb365b0d966)
|
|
|
|
diff --git a/package/boot/uboot-envtools/files/ath79 b/package/boot/uboot-envtools/files/ath79
|
|
index a37057953bc1e9b7fdf2be02136142d0fc145054..f4ccb2faea4e5e6202413a76cd137065dc535fe7 100644
|
|
--- a/package/boot/uboot-envtools/files/ath79
|
|
+++ b/package/boot/uboot-envtools/files/ath79
|
|
@@ -95,6 +95,7 @@ netgear,wndr4300tn|\
|
|
netgear,wndr4300sw)
|
|
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x40000" "0x20000"
|
|
;;
|
|
+openmesh,om2p-v1|\
|
|
openmesh,om2p-v2|\
|
|
openmesh,om2p-v4|\
|
|
openmesh,om2p-hs-v1|\
|
|
diff --git a/target/linux/ath79/dts/ar7240_openmesh_om2p-v1.dts b/target/linux/ath79/dts/ar7240_openmesh_om2p-v1.dts
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..24d406f7ecd2e14729587190de1aecf71029a1eb
|
|
--- /dev/null
|
|
+++ b/target/linux/ath79/dts/ar7240_openmesh_om2p-v1.dts
|
|
@@ -0,0 +1,154 @@
|
|
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
|
+
|
|
+#include "ar7240.dtsi"
|
|
+
|
|
+#include <dt-bindings/gpio/gpio.h>
|
|
+#include <dt-bindings/input/input.h>
|
|
+
|
|
+/ {
|
|
+ compatible = "openmesh,om2p-v1", "qca,ar7240";
|
|
+ model = "OpenMesh OM2P v1";
|
|
+
|
|
+ chosen {
|
|
+ /delete-property/ bootargs;
|
|
+ };
|
|
+
|
|
+ aliases {
|
|
+ led-boot = &led_power_blue;
|
|
+ led-failsafe = &led_power_blue;
|
|
+ led-running = &led_power_blue;
|
|
+ led-upgrade = &led_power_blue;
|
|
+ label-mac-device = ð0;
|
|
+ };
|
|
+
|
|
+ keys {
|
|
+ compatible = "gpio-keys";
|
|
+
|
|
+ reset {
|
|
+ label = "reset";
|
|
+ linux,code = <KEY_RESTART>;
|
|
+ gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ leds {
|
|
+ compatible = "gpio-leds";
|
|
+
|
|
+ pinctrl-names = "default";
|
|
+ pinctrl-0 = <&switch_led_disable_pins>;
|
|
+
|
|
+ led_power_blue: power_blue {
|
|
+ label = "blue:power";
|
|
+ gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
|
|
+ default-state = "on";
|
|
+ };
|
|
+
|
|
+ wifi_green {
|
|
+ label = "green:wifi";
|
|
+ gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
|
|
+ linux,default-trigger = "phy0tpt";
|
|
+ };
|
|
+
|
|
+ wifi_red {
|
|
+ label = "red:wifi";
|
|
+ gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+
|
|
+ wifi_yellow {
|
|
+ label = "yellow:wifi";
|
|
+ gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+
|
|
+ lan_blue {
|
|
+ label = "blue:lan";
|
|
+ gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+
|
|
+ wan_blue {
|
|
+ label = "blue:wan";
|
|
+ gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
|
|
+ };
|
|
+ };
|
|
+
|
|
+ watchdog {
|
|
+ compatible = "linux,wdt-gpio";
|
|
+ gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
|
|
+ hw_algo = "toggle";
|
|
+ /* hw_margin_ms is actually 300s but driver limits it to 60s */
|
|
+ hw_margin_ms = <60000>;
|
|
+ always-running;
|
|
+ };
|
|
+};
|
|
+
|
|
+&spi {
|
|
+ status = "okay";
|
|
+
|
|
+ flash@0 {
|
|
+ compatible = "jedec,spi-nor";
|
|
+ reg = <0>;
|
|
+ spi-max-frequency = <40000000>;
|
|
+ linux,mtd-name = "ar7240-nor0";
|
|
+
|
|
+ /* partitions are passed via bootloader */
|
|
+ partitions {
|
|
+ compatible = "fixed-partitions";
|
|
+ #address-cells = <1>;
|
|
+ #size-cells = <1>;
|
|
+
|
|
+ partition@0 {
|
|
+ label = "u-boot";
|
|
+ reg = <0x000000 0x040000>;
|
|
+ read-only;
|
|
+ };
|
|
+
|
|
+ partition@40000 {
|
|
+ label = "u-boot-env";
|
|
+ reg = <0x040000 0x040000>;
|
|
+ };
|
|
+
|
|
+ partition@80000 {
|
|
+ label = "custom";
|
|
+ reg = <0x080000 0x140000>;
|
|
+ read-only;
|
|
+ };
|
|
+
|
|
+ partition@1c0000 {
|
|
+ label = "inactive";
|
|
+ reg = <0x1c0000 0x700000>;
|
|
+ };
|
|
+
|
|
+ partition@8c0000 {
|
|
+ label = "inactive2";
|
|
+ reg = <0x8c0000 0x700000>;
|
|
+ };
|
|
+
|
|
+ art: partition@fc0000 {
|
|
+ label = "ART";
|
|
+ reg = <0xfc0000 0x040000>;
|
|
+ read-only;
|
|
+ };
|
|
+ };
|
|
+ };
|
|
+};
|
|
+
|
|
+ð0 {
|
|
+ mtd-mac-address = <&art 0x0>;
|
|
+};
|
|
+
|
|
+ð1 {
|
|
+ status = "okay";
|
|
+
|
|
+ mtd-mac-address = <&art 0x6>;
|
|
+};
|
|
+
|
|
+&pcie {
|
|
+ status = "okay";
|
|
+
|
|
+ wifi@0,0 {
|
|
+ compatible = "pci168c,002a";
|
|
+ reg = <0x0000 0 0 0 0>;
|
|
+ qca,no-eeprom;
|
|
+ #gpio-cells = <2>;
|
|
+ gpio-controller;
|
|
+ };
|
|
+};
|
|
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/01_leds b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
|
|
index 3031b4703bfa885c5036856f0ba6a6dc332da4d8..f5384e7fc3859bab1d6c0422de7e173fad3abae2 100755
|
|
--- a/target/linux/ath79/generic/base-files/etc/board.d/01_leds
|
|
+++ b/target/linux/ath79/generic/base-files/etc/board.d/01_leds
|
|
@@ -253,6 +253,10 @@ openmesh,om2p-hs-v4)
|
|
ucidef_set_led_netdev "wan" "WAN" "blue:wan" "eth0"
|
|
ucidef_set_led_switch "lan" "LAN" "blue:lan" "switch0" "0x02"
|
|
;;
|
|
+openmesh,om2p-v1)
|
|
+ ucidef_set_led_netdev "wan" "WAN" "blue:wan" "eth0"
|
|
+ ucidef_set_led_switch "lan" "LAN" "blue:lan" "switch0" "0x10"
|
|
+ ;;
|
|
pcs,cr3000)
|
|
ucidef_set_led_netdev "wan" "WAN" "blue:wan" "eth1"
|
|
ucidef_set_led_switch "lan1" "LAN1" "blue:lan1" "switch0" "0x04"
|
|
diff --git a/target/linux/ath79/generic/base-files/etc/board.d/02_network b/target/linux/ath79/generic/base-files/etc/board.d/02_network
|
|
index c2932c1737d97f3eb732620041664f5060d16946..5626f79ee199865df4e9a4f04ce2ff9580bce012 100755
|
|
--- a/target/linux/ath79/generic/base-files/etc/board.d/02_network
|
|
+++ b/target/linux/ath79/generic/base-files/etc/board.d/02_network
|
|
@@ -174,6 +174,7 @@ ath79_setup_interfaces()
|
|
compex,wpj531-16m|\
|
|
openmesh,a40|\
|
|
openmesh,a60|\
|
|
+ openmesh,om2p-v1|\
|
|
openmesh,om2p-v4|\
|
|
openmesh,om2p-hs-v4|\
|
|
plasmacloud,pa300|\
|
|
diff --git a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
|
|
index 08d9e017a734e29c9b3be4c865e32f109847b4f5..cf07f138260170bcac789e617e09978776b3d2c5 100644
|
|
--- a/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
|
|
+++ b/target/linux/ath79/generic/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
|
|
@@ -128,6 +128,9 @@ case "$FIRMWARE" in
|
|
openmesh,mr600-v2)
|
|
caldata_extract "ART" 0x5000 0x440
|
|
;;
|
|
+ openmesh,om2p-v1)
|
|
+ caldata_extract "ART" 0x1000 0x440
|
|
+ ;;
|
|
wd,mynet-n750)
|
|
caldata_extract "art" 0x5000 0x440
|
|
ath9k_patch_mac $(mtd_get_mac_ascii devdata "wlan5mac")
|
|
diff --git a/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh b/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh
|
|
index e979c11bb91cb20fd4168b8921499f03572d3512..e9203f3a5b624e1e9b46c474e95e27583bcb6765 100644
|
|
--- a/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh
|
|
+++ b/target/linux/ath79/generic/base-files/lib/upgrade/platform.sh
|
|
@@ -73,6 +73,7 @@ platform_do_upgrade() {
|
|
openmesh,mr900-v2|\
|
|
openmesh,mr1750-v1|\
|
|
openmesh,mr1750-v2|\
|
|
+ openmesh,om2p-v1|\
|
|
openmesh,om2p-v2|\
|
|
openmesh,om2p-v4|\
|
|
openmesh,om2p-hs-v1|\
|
|
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
|
|
index c63900dc701bbc21dce12086f7045d7d450fc5f3..8113b515368b253d0812fbbb86278e7fde63a038 100644
|
|
--- a/target/linux/ath79/image/generic.mk
|
|
+++ b/target/linux/ath79/image/generic.mk
|
|
@@ -1722,6 +1722,16 @@ define Device/openmesh_mr1750-v2
|
|
endef
|
|
TARGET_DEVICES += openmesh_mr1750-v2
|
|
|
|
+define Device/openmesh_om2p-v1
|
|
+ $(Device/openmesh_common_256k)
|
|
+ SOC := ar7240
|
|
+ DEVICE_MODEL := OM2P
|
|
+ DEVICE_VARIANT := v1
|
|
+ OPENMESH_CE_TYPE := OM2P
|
|
+ SUPPORTED_DEVICES += om2p
|
|
+endef
|
|
+TARGET_DEVICES += openmesh_om2p-v1
|
|
+
|
|
define Device/openmesh_om2p-v2
|
|
$(Device/openmesh_common_256k)
|
|
SOC := ar9330
|