On 24.07.2022 12:38, Ian Pangilinan wrote:
  From: Ian Pangilinan <[email protected]>
Date: Sun, 24 July 2022 12:37:00 +0800
Subject: [PATCH] ramips: add support for Notion R281 (mtd5)

Notion R281 is a Cat.6 LTE CPE.

Product link: https://www.notioni.com/productinfo/759146.html

Hardware highlights:
   - CPU: MT7621A 2C4T @ 880MHz
   - RAM: DDR3 128MB @ 1066MHz
   - FLASH: S34ML01G2 128MB SPI NAND
   - WLAN0: MT7603E 2.4GHz 802.11bgn 2x2:2 @ 300Mbps
   - WLAN1: MT7613BE 5GHz 802.11nac 2x2:2 @ 867Mbps
   - SWITCH: MT7530 4-port GbE
   - WWAN: Marvell PXA1826 (Nezha3) Profile M26H Board Cat.6 LTE
   - SIM: 1x Mini-SIM 2FF
   - USB: 1x USB 2.0 Micro Type-B
   - BUTTONS: WPS, Reset
   - LEDS: Power, Data, Wi-Fi, LAN, Signal1-3
   - POWER: 12VDc 2A


The device comes in two variants depending on where the bootloader
loads the kernel. One variant where the bootloader loads at 0xbc140000
(mtd4), and another at 0xbe800000 (mtd5). This patch is for the latter.
I haven't found a way to change this behavior, so I'm making a
distinction between the two.

This is the MTD partitions from the stock firmware:

0x000000000000-0x000007f80000 : "ALL"
0x000000000000-0x000000080000 : "Bootloader"
0x000000080000-0x000000100000 : "Config"
0x000000100000-0x000000140000 : "Factory"
0x000000140000-0x000002800000 : "firmware1"
0x000002800000-0x000004ec0000 : "firmware2"
0x000002996dfc-0x000004ec0000 : "rootfs"
0x000003180000-0x000004ec0000 : "rootfs_data"
0x000004ec0000-0x000007f00000 : "ota"
0x000007f00000-0x000007f80000 : "Configbak"

This is how it looks when flashed to OpenWrt with this patch:

0x000000000000-0x000000080000 : "u-boot"
0x000000080000-0x0000000a0000 : "u-boot-env"
0x000000100000-0x000000140000 : "factory"
0x000000140000-0x000002800000 : "ubiconcat0"
0x000002800000-0x000002c00000 : "kernel"
0x000002c00000-0x000007f00000 : "ubiconcat1"
0x000007f00000-0x000007f80000 : "configbak"
0x000000000000-0x0000079c0000 : "ubi"

I have the mtd5 variant on hand, and will send another patch for the
other variant once I confirmed some flash offsets, or update this
patch when a way could be found to set this load address.


Installation instructions:

Stock firmware runs an old OpenWrt Chaos Calmer release. Unfortunately,
because of the changes in the flash layout, this cannot be sysupgrade-d
readily from stock. Installation will be via tftpboot in the bootloader.
Connect the USB-TTL serial converter as follows, indicated on the board
by the APTX marking near three round PCB pads:

(RX) (GND) (TX) APTX

Baud rate is 57600.

1. Connect the computer to the device via ethernet cable.
Set a static adddress of 10.10.10.3/24 to the wired interface.
2. Start the TFTP server, point it to where the initramfs image is
located. Rename the image to 'test.bin'.
3. Turn on the device. There will be a three-second delay before the
default 'Boot system code via flash' is selected.
4. Interrupt the boot process by pressing 1 to 'System Load Linux to
SDRAM via TFTP'.
5. Press enter to accept the default 'Input device IP (10.10.10.123)'.
6. Press enter to accept the default 'Input server IP (10.10.10.3)'.
7. Press enter to accept the default 'Input Linux Kernel filename ()',
or enter 'test.bin'.
8. Wait for the initramfs to load.
9. Reconnect the wired interface to any LAN ports of the device
via dhcp.
9. Flash the sysupgrade image at
http://192.168.1.1/cgi-bin/luci/admin/system/flash


The only configurable LEDs are the red and white data, and white wifi
LEDs. I use the red data LED as status indicator for OpenWrt.
The white LAN led is controlled by the switch and functions as expected,
as well as the three green Signal LED indicators controlled by the WWAN.
There is also an exported GPIO to reset the WWAN. These are also the
same
LEDs and GPIO found on the stock firmware.

Support for WWAN could come at a later date. I have setup LAN1 of the
device as WAN, and implemented a patch in part that achieves '2Gbps CPU
bandwidth', found here: https://github.com/openwrt/openwrt/pull/10238

Signed-off-by: Ian Pangilinan <[email protected]>
---
   package/boot/uboot-envtools/files/ramips                       |   1 +
   target/linux/ramips/dts/mt7621_notion_r281-mtd5.dts (new)      | 240
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   target/linux/ramips/image/mt7621.mk                            |  15
++++++++
   target/linux/ramips/mt7621/base-files/etc/board.d/02_network   |   3 ++
   target/linux/ramips/mt7621/base-files/lib/upgrade/platform.sh  |   1 +
   5 files changed, 260 insertions(+), 0 deletion(-)
   create mode 100644 target/linux/ramips/dts/mt7621_notion_r281-mtd5.dts
diff --git a/package/boot/uboot-envtools/files/ramips
b/package/boot/uboot-envtools/files/ramips
index eebc08d65d..d9017052ed 100644
--- a/package/boot/uboot-envtools/files/ramips
+++ b/package/boot/uboot-envtools/files/ramips
@@ -61,6 +63,7 @@ linksys,ea7500-v2|\
   linksys,ea8100-v1|\
   linksys,ea8100-v2|\
   mts,wg430223|\
+notion,r281-mtd5|\
   xiaomi,mi-router-3g|\
   xiaomi,mi-router-3-pro|\
   xiaomi,mi-router-4|\
diff --git a/target/linux/ramips/dts/mt7621_notion_r281-mtd5.dts
b/target/linux/ramips/dts/mt7621_notion_r281-mtd5.dts
new file mode 100644
index 0000000000..4866209fa5
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_notion_r281-mtd5.dts
@@ -0,0 +1,240 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+// Copyright (C) 2022, Ian Pangilinan <[email protected]>
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+       compatible = "notion,r281-mtd5", "mediatek,mt7621-soc";
+       model = "Notion R281 (mtd5)";
+
+       aliases {
+               led-boot = &led_red;
+               led-failsafe = &led_red;
+               /* led-running: skip this LED event as we use
+                * the red LED indicator for no data,
+                * which will leave it in the default-on state
+                */
+               led-upgrade = &led_red;
+               label-mac-device = &label_mac;
+       };
+
+       ubi-concat {
+               compatible = "mtd-concat";
+               devices = <&ubiconcat0 &ubiconcat1>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               reg = <0x0 0x79c0000>;
+                               label = "ubi";
+                       };
+               };
+       };
+
+       gpio-export {
+               compatible = "gpio-export";
+               #size-cells = <0>;
+
+               reset_cp {
+                       gpio-export,name = "reset_cp";
+                       gpio-export,output = <0>;
+                       gpios = <&gpio 5 GPIO_ACTIVE_HIGH>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_red: led-0 {
+                       label = "red:data";
+                       gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-1 {
+                       label = "white:data";
+                       gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
+               };
+
+               led-2 {
+                       label = "white:wifi";
+                       gpios = <&gpio 0 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0tpt";
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               /* use wps as wifi button */
+               key-wifi {
+                       label = "wifi";
+                       gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RFKILL>;
+               };
+
+               key-reset {
+                       label = "reset";
+                       gpios = <&gpio 7 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+};
+
+&state_default {
+       gpio {
+               groups = "jtag", "rgmii2", "uart3";
+               function = "gpio";
+       };
+};

Please remove this node. It is unnecessary and claiming the rgmii2 group here will break gmac1 configuration.

+
+&pcie {
+       status = "okay";
+};
+
+&pcie0 {
+       label_mac: wifi@0,0 {
+               compatible = "pci14c3,7603";
+               reg = <0x0 0 0 0 0>;
+
+               mediatek,mtd-eeprom = <&factory 0x0>;
+               ieee80211-freq-limit = <2400000 2500000>;
+
+               nvmem-cells = <&macaddr_factory_4>;
+               nvmem-cell-names = "mac-address";
+       };
+};
+
+&pcie1 {
+       wifi@0,0 {
+               compatible = "pci14c3,7663";
+               reg = <0x0 0 0 0 0>;
+
+               mediatek,mtd-eeprom = <&factory 0x8000>;
+               ieee80211-freq-limit = <5000000 6000000>;
+
+               nvmem-cells = <&macaddr_factory_8004>;
+               nvmem-cell-names = "mac-address";
+       };
+};
+
+&nand {
+       status = "okay";
+
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "u-boot";
+                       reg = <0x0 0x80000>;
+                       read-only;
+               };
+
+               /* allow setting u-boot-env vars */
+               partition@80000 {
+                       label = "u-boot-env";
+                       reg = <0x80000 0x20000>;
+               };
+
+               factory: partition@100000 {
+                       label = "factory";
+                       reg = <0x100000 0x40000>;
+                       read-only;
+               };
+
+               /* convert firmware1 from stock to ubi */
+               ubiconcat0: partition@140000 {
+                       label = "ubiconcat0";
+                       reg = <0x140000 0x26c0000>;
+               };
+
+               /* set kernel mtdsize to 4MB */
+               partition@2800000 {
+                       label = "kernel";
+                       reg = <0x2800000 0x400000>;
+               };
+
+               /* convert firmware2, ota from stock to ubi */
+               ubiconcat1: partition@2c00000 {
+                       label = "ubiconcat1";
+                       reg = <0x2c00000 0x5300000>;
+               };
+
+               partition@7f00000 {
+                       label = "configbak";
+                       reg = <0x7f00000 0x80000>;
+                       read-only;
+               };
+
+               /* BBT probably contained in the last 0x80000 or 512K bytes */
+       };
+};
+
+&switch0 {
+       ports {
+               port@1 {
+                       status = "okay";
+                       label = "lan2";
+               };
+
+               port@2 {
+                       status = "okay";
+                       label = "lan3";
+               };
+
+               port@3 {
+                       status = "okay";
+                       label = "lan4";
+               };
+       };
+};
+
+&ethernet {
+       pinctrl-0 = <&mdio_pins>, <&rgmii1_pins>;
+};

Ditto.

Arınç

_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to