[PATCH] ramips: add support for Notion R281 (mtd5)
Arınç ÜNAL
arinc.unal at arinc9.com
Sun Jul 24 03:32:20 PDT 2022
On 24.07.2022 12:38, Ian Pangilinan wrote:
> From: Ian Pangilinan <braveheart_leo at yahoo.com>
> 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 <braveheart_leo at yahoo.com>
> ---
> 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 <braveheart_leo at yahoo.com>
> +
> +#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 at 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 at 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 at 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 at 0 {
> + label = "u-boot";
> + reg = <0x0 0x80000>;
> + read-only;
> + };
> +
> + /* allow setting u-boot-env vars */
> + partition at 80000 {
> + label = "u-boot-env";
> + reg = <0x80000 0x20000>;
> + };
> +
> + factory: partition at 100000 {
> + label = "factory";
> + reg = <0x100000 0x40000>;
> + read-only;
> + };
> +
> + /* convert firmware1 from stock to ubi */
> + ubiconcat0: partition at 140000 {
> + label = "ubiconcat0";
> + reg = <0x140000 0x26c0000>;
> + };
> +
> + /* set kernel mtdsize to 4MB */
> + partition at 2800000 {
> + label = "kernel";
> + reg = <0x2800000 0x400000>;
> + };
> +
> + /* convert firmware2, ota from stock to ubi */
> + ubiconcat1: partition at 2c00000 {
> + label = "ubiconcat1";
> + reg = <0x2c00000 0x5300000>;
> + };
> +
> + partition at 7f00000 {
> + label = "configbak";
> + reg = <0x7f00000 0x80000>;
> + read-only;
> + };
> +
> + /* BBT probably contained in the last 0x80000 or 512K bytes */
> + };
> +};
> +
> +&switch0 {
> + ports {
> + port at 1 {
> + status = "okay";
> + label = "lan2";
> + };
> +
> + port at 2 {
> + status = "okay";
> + label = "lan3";
> + };
> +
> + port at 3 {
> + status = "okay";
> + label = "lan4";
> + };
> + };
> +};
> +
> +ðernet {
> + pinctrl-0 = <&mdio_pins>, <&rgmii1_pins>;
> +};
Ditto.
Arınç
More information about the openwrt-devel
mailing list