diff mbox

[LEDE-DEV,v2] ramips: add support for RATOC REX-WIFISD2

Message ID 20170128160329.23016-1-naobsd@gmail.com
State Changes Requested
Headers show

Commit Message

FUKAUMI Naoki Jan. 28, 2017, 4:03 p.m. UTC
RATOC REX-WIFISD2 is a battery-powered wireless SD card reader with

 - MT7620A + MT7610E
 - 64MiB DDR2 SDRAM
 - 16MiB SPI flash
 - 2T2R 11b/g/n + 1T1R 11ac/a/n Wi-Fi
 - 1x 10/100Mbps ethernet switch
 - 1x SD card
 - 1x USB 2.0
 - 2x programmable LED
 - 1x button

stock firmware is very similar to HooToo Tripmate travel routers. you
can do almost anything as a root user with telnet and/or shell script
(factory image or "EnterRouterMode.sh") on stock firmware.

"EnterRouterMode.sh" will be the easiest way to install. put the
following shell script into SD card (or USB storage) as
"EnterRouterMode.sh" with "kernel.bin" and "rootfs.bin" files.

 ----
 #!/bin/sh

 dir=`dirname $0`

 mtd_write write ${dir}/kernel.bin Kernel_RootFS
 mtd_write -r write ${dir}/rootfs.bin Rootfs
 ----

it will be run automatically when SD card is mounted on stock firmware.

TFTP can also be used to flash kernel and rootfs. it will be run by
press & hold RESET button while power on. (serverip=10.10.10.254)

you may use all partitions between "kernel" and "rootfs" as a single
"firmware" partition (please edit dts yourself), but "params" partition
should be kept if you want to restore stock firmware.

Signed-off-by: FUKAUMI Naoki <naobsd@gmail.com>
---
Changes in v2:
- add "read-only" property to "params", "user_backup", and "user" partitions

 .../linux/ramips/base-files/etc/board.d/02_network |   1 +
 target/linux/ramips/base-files/etc/diag.sh         |   3 +-
 target/linux/ramips/base-files/lib/ramips.sh       |   3 +
 .../ramips/base-files/lib/upgrade/platform.sh      |   1 +
 target/linux/ramips/dts/REX-WIFISD2.dts            | 148 +++++++++++++++++++++
 target/linux/ramips/image/mt7620.mk                |  10 ++
 6 files changed, 165 insertions(+), 1 deletion(-)
 create mode 100644 target/linux/ramips/dts/REX-WIFISD2.dts

Comments

John Crispin Feb. 9, 2017, 2:13 p.m. UTC | #1
On 28/01/2017 17:03, FUKAUMI Naoki wrote:
> RATOC REX-WIFISD2 is a battery-powered wireless SD card reader with
> 
>  - MT7620A + MT7610E
>  - 64MiB DDR2 SDRAM
>  - 16MiB SPI flash
>  - 2T2R 11b/g/n + 1T1R 11ac/a/n Wi-Fi
>  - 1x 10/100Mbps ethernet switch
>  - 1x SD card
>  - 1x USB 2.0
>  - 2x programmable LED
>  - 1x button
> 
> stock firmware is very similar to HooToo Tripmate travel routers. you
> can do almost anything as a root user with telnet and/or shell script
> (factory image or "EnterRouterMode.sh") on stock firmware.
> 
> "EnterRouterMode.sh" will be the easiest way to install. put the
> following shell script into SD card (or USB storage) as
> "EnterRouterMode.sh" with "kernel.bin" and "rootfs.bin" files.
> 
>  ----
>  #!/bin/sh
> 
>  dir=`dirname $0`
> 
>  mtd_write write ${dir}/kernel.bin Kernel_RootFS
>  mtd_write -r write ${dir}/rootfs.bin Rootfs
>  ----
> 
> it will be run automatically when SD card is mounted on stock firmware.
> 
> TFTP can also be used to flash kernel and rootfs. it will be run by
> press & hold RESET button while power on. (serverip=10.10.10.254)
> 
> you may use all partitions between "kernel" and "rootfs" as a single
> "firmware" partition (please edit dts yourself), but "params" partition
> should be kept if you want to restore stock firmware.
> 
> Signed-off-by: FUKAUMI Naoki <naobsd@gmail.com>

Hi,

patch fails to apply, please rebase/resend it

	John



> ---
> Changes in v2:
> - add "read-only" property to "params", "user_backup", and "user" partitions
> 
>  .../linux/ramips/base-files/etc/board.d/02_network |   1 +
>  target/linux/ramips/base-files/etc/diag.sh         |   3 +-
>  target/linux/ramips/base-files/lib/ramips.sh       |   3 +
>  .../ramips/base-files/lib/upgrade/platform.sh      |   1 +
>  target/linux/ramips/dts/REX-WIFISD2.dts            | 148 +++++++++++++++++++++
>  target/linux/ramips/image/mt7620.mk                |  10 ++
>  6 files changed, 165 insertions(+), 1 deletion(-)
>  create mode 100644 target/linux/ramips/dts/REX-WIFISD2.dts
> 
> diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
> index 91f1aaa..b27954f 100755
> --- a/target/linux/ramips/base-files/etc/board.d/02_network
> +++ b/target/linux/ramips/base-files/etc/board.d/02_network
> @@ -192,6 +192,7 @@ ramips_setup_interfaces()
>  	mzk-ex750np|\
>  	na930|\
>  	pbr-d1|\
> +	rex-wifisd2|\
>  	wli-tx4-ag300n|\
>  	wmr-300|\
>  	wrh-300cr)
> diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
> index 9499833..84031d1 100644
> --- a/target/linux/ramips/base-files/etc/diag.sh
> +++ b/target/linux/ramips/base-files/etc/diag.sh
> @@ -41,7 +41,8 @@ get_status_led() {
>  	xdxrn502j)
>  		status_led="$board:green:power"
>  		;;
> -	3g-6200nl)
> +	3g-6200nl|\
> +	rex-wifisd2)
>  		status_led="$board:green:internet"
>  		;;
>  	a5-v11|\
> diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
> index 8292da1..5ab46de 100755
> --- a/target/linux/ramips/base-files/lib/ramips.sh
> +++ b/target/linux/ramips/base-files/lib/ramips.sh
> @@ -406,6 +406,9 @@ ramips_board_detect() {
>  	*"RE6500")
>  		name="re6500"
>  		;;
> +	*"REX-WIFISD2")
> +		name="rex-wifisd2"
> +		;;
>  	*"RN502J")
>  		name="xdxrn502j"
>  		;;
> diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
> index c6ad8ca..05d2759 100755
> --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
> +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
> @@ -113,6 +113,7 @@ platform_check_image() {
>  	px-4885|\
>  	rb750gr3|\
>  	re6500|\
> +	rex-wifisd2|\
>  	rp-n53|\
>  	rt5350f-olinuxino|\
>  	rt5350f-olinuxino-evb|\
> diff --git a/target/linux/ramips/dts/REX-WIFISD2.dts b/target/linux/ramips/dts/REX-WIFISD2.dts
> new file mode 100644
> index 0000000..4d8819a
> --- /dev/null
> +++ b/target/linux/ramips/dts/REX-WIFISD2.dts
> @@ -0,0 +1,148 @@
> +/dts-v1/;
> +
> +#include "mt7620a.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +
> +/ {
> +	compatible = "ratoc,rex-wifisd2", "ralink,mt7620a-soc";
> +	model = "RATOC REX-WIFISD2";
> +
> +	gpio-keys-polled {
> +		compatible = "gpio-keys-polled";
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		poll-interval = <20>;
> +
> +		reset {
> +			label = "reset";
> +			gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
> +			linux,code = <KEY_RESTART>;
> +		};
> +	};
> +
> +	gpio-leds {
> +		compatible = "gpio-leds";
> +
> +		internet {
> +			label = "rex-wifisd2:green:internet";
> +			gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		wifi {
> +			label = "rex-wifisd2:blue:wifi";
> +			gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
> +		};
> +	};
> +};
> +
> +&ehci {
> +	status = "okay";
> +};
> +
> +&ethernet {
> +	mtd-mac-address = <&factory 0x2e>;
> +	mediatek,portmap = "llllw";
> +};
> +
> +&gpio1 {
> +	status = "okay";
> +};
> +
> +&gpio2 {
> +	status = "okay";
> +};
> +
> +&gpio3 {
> +	status = "okay";
> +};
> +
> +&ohci {
> +	status = "okay";
> +};
> +
> +&pcie {
> +	status = "okay";
> +
> +	pcie-bridge {
> +		mt76@0,0 {
> +			reg = <0x0000 0 0 0 0>;
> +			device_type = "pci";
> +			mediatek,mtd-eeprom = <&factory 0x8000>;
> +			mediatek,2ghz = <0>;
> +		};
> +	};
> +};
> +
> +&pinctrl {
> +	state_default: pinctrl0 {
> +		gpio {
> +			ralink,group = "wled", "ephy";
> +			ralink,function = "gpio";
> +		};
> +	};
> +};
> +
> +&spi0 {
> +	status = "okay";
> +
> +	m25p80@0 {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		compatible = "jedec,spi-nor";
> +		reg = <0>;
> +		spi-max-frequency = <10000000>;
> +		m25p,chunked-io = <32>;
> +
> +		partition@0 {
> +			label = "u-boot";
> +			reg = <0x0 0x30000>;
> +			read-only;
> +		};
> +
> +		partition@30000 {
> +			label = "u-boot-env";
> +			reg = <0x30000 0x10000>;
> +			read-only;
> +		};
> +
> +		factory: partition@40000 {
> +			label = "factory";
> +			reg = <0x40000 0x10000>;
> +			read-only;
> +		};
> +
> +		partition@50000 {
> +			label = "kernel";
> +			reg = <0x50000 0x180000>;
> +		};
> +
> +		partition@1d0000 {
> +			label = "params";
> +			reg = <0x1d0000 0x10000>;
> +			read-only;
> +		};
> +
> +		partition@1e0000 {
> +			label = "user_backup";
> +			reg = <0x1e0000 0x10000>;
> +			read-only;
> +		};
> +
> +		partition@1f0000 {
> +			label = "user";
> +			reg = <0x1f0000 0x10000>;
> +			read-only;
> +		};
> +
> +		partition@200000 {
> +			label = "rootfs";
> +			reg = <0x200000 0xe00000>;
> +		};
> +	};
> +};
> +
> +&wmac {
> +	ralink,mtd-eeprom = <&factory 0>;
> +};
> diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
> index 50eae2f..0728d93 100644
> --- a/target/linux/ramips/image/mt7620.mk
> +++ b/target/linux/ramips/image/mt7620.mk
> @@ -465,3 +465,13 @@ define Device/kng_rc
>  	zyimage -d 8997 -v "ZyXEL Keenetic Viva"
>  endef
>  TARGET_DEVICES += kng_rc
> +
> +define Device/rex-wifisd2
> +  DTS := REX-WIFISD2
> +  IMAGES := kernel.bin rootfs.bin
> +  IMAGE/kernel.bin := append-kernel
> +  IMAGE/rootfs.bin := append-rootfs | pad-rootfs
> +  DEVICE_TITLE := RATOC REX-WIFISD2
> +  DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
> +endef
> +TARGET_DEVICES += rex-wifisd2
>
Rafał Miłecki Feb. 9, 2017, 5:21 p.m. UTC | #2
On 9 February 2017 at 15:13, John Crispin <john@phrozen.org> wrote:
> On 28/01/2017 17:03, FUKAUMI Naoki wrote:
>> diff --git a/target/linux/ramips/dts/REX-WIFISD2.dts b/target/linux/ramips/dts/REX-WIFISD2.dts
>> new file mode 100644
>> index 0000000..4d8819a
>> --- /dev/null
>> +++ b/target/linux/ramips/dts/REX-WIFISD2.dts
>> @@ -0,0 +1,148 @@
>> +/dts-v1/;
>> +
>> +#include "mt7620a.dtsi"
>> +
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/input/input.h>

Please specify license for this file. If possible, BSD-compatible one
may be easier to work with in the future. See my recent request:
http://lists.infradead.org/pipermail/lede-dev/2017-February/005842.html
Mathias Kresin Feb. 11, 2017, 10:28 a.m. UTC | #3
28.01.2017 17:03, FUKAUMI Naoki:
> diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
> index 50eae2f..0728d93 100644
> --- a/target/linux/ramips/image/mt7620.mk
> +++ b/target/linux/ramips/image/mt7620.mk
> @@ -465,3 +465,13 @@ define Device/kng_rc
>  	zyimage -d 8997 -v "ZyXEL Keenetic Viva"
>  endef
>  TARGET_DEVICES += kng_rc
> +
> +define Device/rex-wifisd2
> +  DTS := REX-WIFISD2
> +  IMAGES := kernel.bin rootfs.bin
> +  IMAGE/kernel.bin := append-kernel
> +  IMAGE/rootfs.bin := append-rootfs | pad-rootfs
> +  DEVICE_TITLE := RATOC REX-WIFISD2
> +  DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
> +endef
> +TARGET_DEVICES += rex-wifisd2

Please add support for a sysupgrade image as well. Have a look at 
platform_do_upgrade_combined() in 
target/linux/ar71xx/base-files/lib/upgrade/platform.sh for an example on 
how to do it.

Mathias
diff mbox

Patch

diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index 91f1aaa..b27954f 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -192,6 +192,7 @@  ramips_setup_interfaces()
 	mzk-ex750np|\
 	na930|\
 	pbr-d1|\
+	rex-wifisd2|\
 	wli-tx4-ag300n|\
 	wmr-300|\
 	wrh-300cr)
diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
index 9499833..84031d1 100644
--- a/target/linux/ramips/base-files/etc/diag.sh
+++ b/target/linux/ramips/base-files/etc/diag.sh
@@ -41,7 +41,8 @@  get_status_led() {
 	xdxrn502j)
 		status_led="$board:green:power"
 		;;
-	3g-6200nl)
+	3g-6200nl|\
+	rex-wifisd2)
 		status_led="$board:green:internet"
 		;;
 	a5-v11|\
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index 8292da1..5ab46de 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -406,6 +406,9 @@  ramips_board_detect() {
 	*"RE6500")
 		name="re6500"
 		;;
+	*"REX-WIFISD2")
+		name="rex-wifisd2"
+		;;
 	*"RN502J")
 		name="xdxrn502j"
 		;;
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index c6ad8ca..05d2759 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -113,6 +113,7 @@  platform_check_image() {
 	px-4885|\
 	rb750gr3|\
 	re6500|\
+	rex-wifisd2|\
 	rp-n53|\
 	rt5350f-olinuxino|\
 	rt5350f-olinuxino-evb|\
diff --git a/target/linux/ramips/dts/REX-WIFISD2.dts b/target/linux/ramips/dts/REX-WIFISD2.dts
new file mode 100644
index 0000000..4d8819a
--- /dev/null
+++ b/target/linux/ramips/dts/REX-WIFISD2.dts
@@ -0,0 +1,148 @@ 
+/dts-v1/;
+
+#include "mt7620a.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+	compatible = "ratoc,rex-wifisd2", "ralink,mt7620a-soc";
+	model = "RATOC REX-WIFISD2";
+
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		internet {
+			label = "rex-wifisd2:green:internet";
+			gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>;
+		};
+
+		wifi {
+			label = "rex-wifisd2:blue:wifi";
+			gpios = <&gpio3 0 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&ehci {
+	status = "okay";
+};
+
+&ethernet {
+	mtd-mac-address = <&factory 0x2e>;
+	mediatek,portmap = "llllw";
+};
+
+&gpio1 {
+	status = "okay";
+};
+
+&gpio2 {
+	status = "okay";
+};
+
+&gpio3 {
+	status = "okay";
+};
+
+&ohci {
+	status = "okay";
+};
+
+&pcie {
+	status = "okay";
+
+	pcie-bridge {
+		mt76@0,0 {
+			reg = <0x0000 0 0 0 0>;
+			device_type = "pci";
+			mediatek,mtd-eeprom = <&factory 0x8000>;
+			mediatek,2ghz = <0>;
+		};
+	};
+};
+
+&pinctrl {
+	state_default: pinctrl0 {
+		gpio {
+			ralink,group = "wled", "ephy";
+			ralink,function = "gpio";
+		};
+	};
+};
+
+&spi0 {
+	status = "okay";
+
+	m25p80@0 {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <10000000>;
+		m25p,chunked-io = <32>;
+
+		partition@0 {
+			label = "u-boot";
+			reg = <0x0 0x30000>;
+			read-only;
+		};
+
+		partition@30000 {
+			label = "u-boot-env";
+			reg = <0x30000 0x10000>;
+			read-only;
+		};
+
+		factory: partition@40000 {
+			label = "factory";
+			reg = <0x40000 0x10000>;
+			read-only;
+		};
+
+		partition@50000 {
+			label = "kernel";
+			reg = <0x50000 0x180000>;
+		};
+
+		partition@1d0000 {
+			label = "params";
+			reg = <0x1d0000 0x10000>;
+			read-only;
+		};
+
+		partition@1e0000 {
+			label = "user_backup";
+			reg = <0x1e0000 0x10000>;
+			read-only;
+		};
+
+		partition@1f0000 {
+			label = "user";
+			reg = <0x1f0000 0x10000>;
+			read-only;
+		};
+
+		partition@200000 {
+			label = "rootfs";
+			reg = <0x200000 0xe00000>;
+		};
+	};
+};
+
+&wmac {
+	ralink,mtd-eeprom = <&factory 0>;
+};
diff --git a/target/linux/ramips/image/mt7620.mk b/target/linux/ramips/image/mt7620.mk
index 50eae2f..0728d93 100644
--- a/target/linux/ramips/image/mt7620.mk
+++ b/target/linux/ramips/image/mt7620.mk
@@ -465,3 +465,13 @@  define Device/kng_rc
 	zyimage -d 8997 -v "ZyXEL Keenetic Viva"
 endef
 TARGET_DEVICES += kng_rc
+
+define Device/rex-wifisd2
+  DTS := REX-WIFISD2
+  IMAGES := kernel.bin rootfs.bin
+  IMAGE/kernel.bin := append-kernel
+  IMAGE/rootfs.bin := append-rootfs | pad-rootfs
+  DEVICE_TITLE := RATOC REX-WIFISD2
+  DEVICE_PACKAGES := kmod-usb2 kmod-usb-ohci
+endef
+TARGET_DEVICES += rex-wifisd2