[openwrt/openwrt] ramips: add support for Tenbay T-MB5EU-V01

LEDE Commits lede-commits at lists.infradead.org
Sun Jun 27 12:41:35 PDT 2021


blocktrron pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/51b61fd57059adeb10a3977e00772af2b76dc40b

commit 51b61fd57059adeb10a3977e00772af2b76dc40b
Author: David Bauer <mail at david-bauer.net>
AuthorDate: Thu May 6 18:07:18 2021 +0200

    ramips: add support for Tenbay T-MB5EU-V01
    
    Hardware
    --------
    MediaTek MT7621 SoC
    256M DDR3
    16MB BoHong SPI-NOR
    MediaTek MT7905+7975 2x2T2R DBDC bgnax / acax
    RGB LED
    WPS + RESET Button
    UART on compute module (silkscreened / 115200n8)
    
    The router itself is just a board with Power / USB / RJ-45 connectors
    and DC/DC converters. The SoC and WiFi components are on a
    daughterboard which connect using two M.2 connectors.
    
    The compute module has the model number "T-CB1800K-DM2 V02" printed on
    it. The main baord has "T-MB5EU V01" printed on it. This information
    might be useful, as it's highly likely either of these two will be
    reused in similar designs.
    
    The router itself is sold as Tenbay T-MB5EU directly from the OEM as
    well as "KuWFI AX1800 Smart WiFi 6 Eouter" on Amazon.de for ~50€ in a
    slightly different case.
    
    Installation
    ------------
    
    A Tool for creating a factory image for the Vendor Web Interface can be
    found here: https://github.com/blocktrron/t-mb5eu-v01-factory-creator/
    
    As the OEM Firmware is just a modified LEDE 17.01, you can also access
    failsafe mode via UART while the OS boots, by connecting to UART
    and pressing "f" when prompted. The Router is reachable at
    192.168.1.1 via root without password.
    
    Transfer the OpenWrt sysupgrade image via scp and apply with sysupgrade
    using the -n and -F flags.
    
    Alternatively, the board can be flashed by attaching to the UART
    console, interrupting the boot process by keeping "0" pressed while
    attaching power.
    
    Serve the OpenWrt initramfs using a TFTP server with address
    192.168.1.66. Rename the initramfs to ax1800.bin.
    
    Attach your TFTP server to one of the LAN ports. Execute the following
    commands.
    
     $ setenv ipaddr 192.168.1.67
     $ setenv serverip 192.168.1.66
     $ tftpboot 0x84000000 ax1800.bin
     $ bootm
    
    Wait for the device to boot. Then transfer the OpenWrt sysupgrade image
    to the device using SCP and apply sysupgrade.
    
    Signed-off-by: David Bauer <mail at david-bauer.net>
---
 .../linux/ramips/dts/mt7621_tenbay_t-mb5eu-v01.dts | 196 +++++++++++++++++++++
 target/linux/ramips/image/mt7621.mk                |  12 ++
 target/linux/ramips/mt7621/config-5.10             |   1 +
 target/linux/ramips/mt7621/config-5.4              |   1 +
 ...spi-nor-Add-support-for-BoHong-bh25q128as.patch |  75 ++++++++
 ...spi-nor-Add-support-for-BoHong-bh25q128as.patch |  34 ++++
 6 files changed, 319 insertions(+)

diff --git a/target/linux/ramips/dts/mt7621_tenbay_t-mb5eu-v01.dts b/target/linux/ramips/dts/mt7621_tenbay_t-mb5eu-v01.dts
new file mode 100644
index 0000000000..ef0d48b8c4
--- /dev/null
+++ b/target/linux/ramips/dts/mt7621_tenbay_t-mb5eu-v01.dts
@@ -0,0 +1,196 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "mt7621.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+	compatible = "tenbay,t-mb5eu-v01", "mediatek,mt7621-soc";
+	model = "Tenbay T-MB5EU-V01";
+
+	aliases {
+		led-boot = &led_green;
+		led-failsafe = &led_red;
+		led-running = &led_blue;
+		led-upgrade = &led_red;
+		label-mac-device = &wan_port;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200";
+		bootargs-override = "console=ttyS0,115200";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+		pinctrl-names = "default";
+		pinctrl-0 = <&led_pins>;
+
+		led_blue: blue {
+			label = "blue";
+			gpios = <&aw9523 0 GPIO_ACTIVE_LOW>;
+		};
+
+		led_red: red {
+			label = "red";
+			gpios = <&aw9523 1 GPIO_ACTIVE_LOW>;
+		};
+
+		led_green: green {
+			label = "green";
+			gpios = <&aw9523 11 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		poll-interval = <50>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&button_pins>;
+
+		reset {
+			label = "reset";
+			gpios = <&aw9523 9 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&aw9523 8 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+	};
+
+	i2c-gpio {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		compatible = "i2c-gpio";
+		gpios = <&gpio 7 GPIO_ACTIVE_HIGH &gpio 8 GPIO_ACTIVE_HIGH>;
+		i2c-gpio,delay-us = <10>;
+
+		aw9523: gpio-expander at 5b {
+			compatible = "awinic,aw9523-pinctrl";
+			reg = <0x5b>;
+			gpio-controller;
+			#gpio-cells = <2>;
+			gpio-ranges = <&aw9523 0 0 16>;
+
+			reset-gpios = <&gpio 6 GPIO_ACTIVE_HIGH>;
+
+			button_pins: button-pins {
+				pins = "gpio8", "gpio9";
+				function = "gpio";
+				bias-pull-up;
+				drive-open-drain;
+				input-enable;
+			};
+
+			led_pins: led-pins {
+				pins = "gpio0", "gpio1", "gpio11";
+				function = "gpio";
+				input-disable;
+				output-low;
+			};
+		};
+	};
+};
+
+&pcie {
+	status = "okay";
+};
+
+&pcie1 {
+	wifi at 0,0 {
+		reg = <0x0 0 0 0 0>;
+		mediatek,mtd-eeprom = <&factory 0x0>;
+	};
+};
+
+&gmac0 {
+	mtd-mac-address = <&factory 0x4>;
+};
+
+&switch0 {
+	ports {
+		wan_port: port at 0 {
+			status = "okay";
+			label = "wan";
+			mtd-mac-address = <&factory 0x28>;
+		};
+
+		port at 1 {
+			status = "okay";
+			label = "lan1";
+		};
+
+		port at 2 {
+			status = "okay";
+			label = "lan2";
+		};
+
+		port at 3 {
+			status = "okay";
+			label = "lan3";
+		};
+
+		port at 4 {
+			status = "okay";
+			label = "lan4";
+		};
+	};
+};
+
+&state_default {
+	gpio {
+		groups = "uart3";
+		function = "gpio";
+	};
+};
+
+&spi0 {
+	status = "okay";
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <50000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x0 0x30000>;
+				read-only;
+			};
+
+			partition at 30000 {
+				label = "u-boot-env";
+				reg = <0x30000 0x10000>;
+				read-only;
+			};
+
+			partition at 40000 {
+				label = "product";
+				reg = <0x40000 0x10000>;
+				read-only;
+			};
+
+			factory: partition at 50000 {
+				label = "factory";
+				reg = <0x50000 0x40000>;
+				read-only;
+			};
+
+			partition at 90000 {
+				compatible = "denx,fit";
+				label = "firmware";
+				reg = <0x90000 0xf70000>;
+			};
+		};
+	};
+};
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
index ae9b4757de..cf3225dc81 100644
--- a/target/linux/ramips/image/mt7621.mk
+++ b/target/linux/ramips/image/mt7621.mk
@@ -1200,6 +1200,18 @@ define Device/telco-electronics_x1
 endef
 TARGET_DEVICES += telco-electronics_x1
 
+define Device/tenbay_t-mb5eu-v01
+  $(Device/dsa-migration)
+  DEVICE_VENDOR := Tenbay
+  DEVICE_MODEL := T-MB5EU-V01
+  DEVICE_DTS_CONFIG := config at 1
+  DEVICE_PACKAGES += kmod-mt7915e kmod-usb3
+  KERNEL := kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
+  IMAGE_SIZE := 15808k
+  SUPPORTED_DEVICES += mt7621-dm2-t-mb5eu-v01-nor
+endef
+TARGET_DEVICES += tenbay_t-mb5eu-v01
+
 define Device/thunder_timecloud
   $(Device/dsa-migration)
   $(Device/uimage-lzma-loader)
diff --git a/target/linux/ramips/mt7621/config-5.10 b/target/linux/ramips/mt7621/config-5.10
index 869e930893..92165590f6 100644
--- a/target/linux/ramips/mt7621/config-5.10
+++ b/target/linux/ramips/mt7621/config-5.10
@@ -102,6 +102,7 @@ CONFIG_HAS_IOPORT_MAP=y
 CONFIG_HIGHMEM=y
 CONFIG_I2C=y
 CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_GPIO=y
 CONFIG_I2C_MT7621=y
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_IRQCHIP=y
diff --git a/target/linux/ramips/mt7621/config-5.4 b/target/linux/ramips/mt7621/config-5.4
index 3af9b94c50..0ce300c138 100644
--- a/target/linux/ramips/mt7621/config-5.4
+++ b/target/linux/ramips/mt7621/config-5.4
@@ -100,6 +100,7 @@ CONFIG_HIGHMEM=y
 CONFIG_HZ_PERIODIC=y
 CONFIG_I2C=y
 CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_GPIO=y
 CONFIG_I2C_MT7621=y
 CONFIG_INITRAMFS_SOURCE=""
 CONFIG_IRQCHIP=y
diff --git a/target/linux/ramips/patches-5.10/405-mtd-spi-nor-Add-support-for-BoHong-bh25q128as.patch b/target/linux/ramips/patches-5.10/405-mtd-spi-nor-Add-support-for-BoHong-bh25q128as.patch
new file mode 100644
index 0000000000..4c762925fb
--- /dev/null
+++ b/target/linux/ramips/patches-5.10/405-mtd-spi-nor-Add-support-for-BoHong-bh25q128as.patch
@@ -0,0 +1,75 @@
+From 52d14545d2fc276b1bf9ccf48d4612fab6edfb6a Mon Sep 17 00:00:00 2001
+From: David Bauer <mail at david-bauer.net>
+Date: Thu, 6 May 2021 17:49:55 +0200
+Subject: [PATCH] mtd: spi-nor: Add support for BoHong bh25q128as
+
+Add MTD support for the BoHong bh25q128as SPI NOR chip.
+The chip has 16MB of total capacity, divided into a total of 256
+sectors, each 64KB sized. The chip also supports 4KB sectors.
+Additionally, it supports dual and quad read modes.
+
+Functionality was verified on an Tenbay WR1800K / MTK MT7621 board.
+
+Signed-off-by: David Bauer <mail at david-bauer.net>
+---
+ drivers/mtd/spi-nor/Makefile |  1 +
+ drivers/mtd/spi-nor/bohong.c | 21 +++++++++++++++++++++
+ drivers/mtd/spi-nor/core.c   |  1 +
+ drivers/mtd/spi-nor/core.h   |  1 +
+ 4 files changed, 24 insertions(+)
+ create mode 100644 drivers/mtd/spi-nor/bohong.c
+
+--- a/drivers/mtd/spi-nor/Makefile
++++ b/drivers/mtd/spi-nor/Makefile
+@@ -2,6 +2,7 @@
+ 
+ spi-nor-objs			:= core.o sfdp.o
+ spi-nor-objs			+= atmel.o
++spi-nor-objs			+= bohong.o
+ spi-nor-objs			+= catalyst.o
+ spi-nor-objs			+= eon.o
+ spi-nor-objs			+= esmt.o
+--- /dev/null
++++ b/drivers/mtd/spi-nor/bohong.c
+@@ -0,0 +1,21 @@
++// SPDX-License-Identifier: GPL-2.0
++/*
++ * Copyright (C) 2005, Intec Automation Inc.
++ * Copyright (C) 2014, Freescale Semiconductor, Inc.
++ */
++
++#include <linux/mtd/spi-nor.h>
++
++#include "core.h"
++
++static const struct flash_info bohong_parts[] = {
++	/* BoHong Microelectronics */
++	{ "bh25q128as", INFO(0x684018, 0, 64 * 1024, 256,
++			    SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
++};
++
++const struct spi_nor_manufacturer spi_nor_bohong = {
++	.name = "bohong",
++	.parts = bohong_parts,
++	.nparts = ARRAY_SIZE(bohong_parts),
++};
+--- a/drivers/mtd/spi-nor/core.c
++++ b/drivers/mtd/spi-nor/core.c
+@@ -2038,6 +2038,7 @@ int spi_nor_sr2_bit7_quad_enable(struct
+ 
+ static const struct spi_nor_manufacturer *manufacturers[] = {
+ 	&spi_nor_atmel,
++	&spi_nor_bohong,
+ 	&spi_nor_catalyst,
+ 	&spi_nor_eon,
+ 	&spi_nor_esmt,
+--- a/drivers/mtd/spi-nor/core.h
++++ b/drivers/mtd/spi-nor/core.h
+@@ -382,6 +382,7 @@ struct spi_nor_manufacturer {
+ 
+ /* Manufacturer drivers. */
+ extern const struct spi_nor_manufacturer spi_nor_atmel;
++extern const struct spi_nor_manufacturer spi_nor_bohong;
+ extern const struct spi_nor_manufacturer spi_nor_catalyst;
+ extern const struct spi_nor_manufacturer spi_nor_eon;
+ extern const struct spi_nor_manufacturer spi_nor_esmt;
diff --git a/target/linux/ramips/patches-5.4/405-mtd-spi-nor-Add-support-for-BoHong-bh25q128as.patch b/target/linux/ramips/patches-5.4/405-mtd-spi-nor-Add-support-for-BoHong-bh25q128as.patch
new file mode 100644
index 0000000000..728876322c
--- /dev/null
+++ b/target/linux/ramips/patches-5.4/405-mtd-spi-nor-Add-support-for-BoHong-bh25q128as.patch
@@ -0,0 +1,34 @@
+From 52d14545d2fc276b1bf9ccf48d4612fab6edfb6a Mon Sep 17 00:00:00 2001
+From: David Bauer <mail at david-bauer.net>
+Date: Thu, 6 May 2021 17:49:55 +0200
+Subject: [PATCH] mtd: spi-nor: Add support for BoHong bh25q128as
+
+Add MTD support for the BoHong bh25q128as SPI NOR chip.
+The chip has 16MB of total capacity, divided into a total of 256
+sectors, each 64KB sized. The chip also supports 4KB sectors.
+Additionally, it supports dual and quad read modes.
+
+Functionality was verified on an Tenbay WR1800K / MTK MT7621 board.
+
+Signed-off-by: David Bauer <mail at david-bauer.net>
+---
+ drivers/mtd/spi-nor/Makefile |  1 +
+ drivers/mtd/spi-nor/bohong.c | 21 +++++++++++++++++++++
+ drivers/mtd/spi-nor/core.c   |  1 +
+ drivers/mtd/spi-nor/core.h   |  1 +
+ 4 files changed, 24 insertions(+)
+ create mode 100644 drivers/mtd/spi-nor/bohong.c
+
+--- a/drivers/mtd/spi-nor/spi-nor.c
++++ b/drivers/mtd/spi-nor/spi-nor.c
+@@ -2233,6 +2233,10 @@ static const struct flash_info spi_nor_i
+ 
+ 	{ "at45db081d", INFO(0x1f2500, 0, 64 * 1024, 16, SECT_4K) },
+ 
++	/* BoHong Microelectronics */
++	{ "bh25q128as", INFO(0x684018, 0, 64 * 1024, 256,
++			SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
++
+ 	/* EON -- en25xxx */
+ 	{ "en25f32",    INFO(0x1c3116, 0, 64 * 1024,   64, SECT_4K) },
+ 	{ "en25p32",    INFO(0x1c2016, 0, 64 * 1024,   64, 0) },



More information about the lede-commits mailing list