[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";
> +		};
> +	};
> +};
> +
> +&ethernet {
> +	pinctrl-0 = <&mdio_pins>, <&rgmii1_pins>;
> +};

Ditto.

Arınç



More information about the openwrt-devel mailing list