aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFUKAUMI Naoki <naobsd@gmail.com>2017-01-29 01:05:56 +0900
committerRafał Miłecki <rafal@milecki.pl>2017-01-31 11:10:58 +0100
commit6b0b526a4fc11d3b1b588d5b3b789da0c66adce9 (patch)
tree1ad589aba17e5ec3f9b14dc18c3b3e6afe02e41a
parent3b5d29b96e4df80dbfbcc5bbb8a5898a9390c683 (diff)
downloadupstream-6b0b526a4fc11d3b1b588d5b3b789da0c66adce9.tar.gz
upstream-6b0b526a4fc11d3b1b588d5b3b789da0c66adce9.tar.bz2
upstream-6b0b526a4fc11d3b1b588d5b3b789da0c66adce9.zip
ramips: add support for Buffalo WCR-1166DS
Buffalo WCR-1166DS is a small wireless router with - MT7628AN + MT7612E - 64MiB DDR2 SDRAM - 16MiB SPI flash - 2T2R 11ac/a/b/g/n Wi-Fi - 2x 10/100M ethernet switch - 8x programmable LED - 3x button - UART pad on PCB (J2: 3.3V, GND, TX, RX) factory image can be installed via stock web UI. due to the "dual image" function in the bootloader, the second half of the SPI flash ("firmware2" partition) cannot be used as a part of the file system. Signed-off-by: FUKAUMI Naoki <naobsd@gmail.com>
-rwxr-xr-xtarget/linux/ramips/base-files/etc/board.d/02_network15
-rw-r--r--target/linux/ramips/base-files/etc/diag.sh11
-rwxr-xr-xtarget/linux/ramips/base-files/lib/ramips.sh3
-rwxr-xr-xtarget/linux/ramips/base-files/lib/upgrade/platform.sh9
-rw-r--r--target/linux/ramips/dts/WCR-1166DS.dts172
-rw-r--r--target/linux/ramips/image/Makefile3
-rw-r--r--target/linux/ramips/image/mt7628.mk16
-rw-r--r--target/linux/ramips/mt7628/config-4.41
-rw-r--r--target/linux/ramips/patches-4.4/0400-mtd-mtdsplit-add-support-for-custom-trx-magic-for-Buffalo-WCR-1166DS.patch30
9 files changed, 245 insertions, 15 deletions
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 91f1aaacbe..c001dfe85a 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -263,6 +263,10 @@ ramips_setup_interfaces()
ucidef_add_switch "switch0" \
"1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "5@eth0"
;;
+ wcr-1166ds)
+ ucidef_add_switch "switch0" \
+ "3:lan" "4:wan" "6@eth0"
+ ;;
wcr-150gn)
ucidef_add_switch "switch0" \
"0:lan" "6t@eth0"
@@ -410,6 +414,12 @@ ramips_setup_macs()
lan_mac=$(cat /sys/class/net/eth0/address)
wan_mac=$(macaddr_add "$lan_mac" 5)
;;
+ wcr-1166ds|\
+ wsr-1166)
+ local index="$(find_mtd_index "board_data")"
+ wan_mac="$(grep -m1 mac= "/dev/mtd${index}" | cut -d= -f2)"
+ lan_mac=$wan_mac
+ ;;
wcr-150gn)
wan_mac=$(mtd_get_mac_binary factory 40)
;;
@@ -427,11 +437,6 @@ ramips_setup_macs()
wlr-6000)
wan_mac=$(macaddr_add "$(mtd_get_mac_binary factory 32772)" 2)
;;
- wsr-1166)
- local index="$(find_mtd_index "board_data")"
- wan_mac="$(grep -m1 mac= "/dev/mtd${index}" | cut -d= -f2)"
- lan_mac=$wan_mac
- ;;
*)
lan_mac=$(cat /sys/class/net/eth0/address)
wan_mac=$(macaddr_add "$lan_mac" 1)
diff --git a/target/linux/ramips/base-files/etc/diag.sh b/target/linux/ramips/base-files/etc/diag.sh
index 94998333b3..5fb221380e 100644
--- a/target/linux/ramips/base-files/etc/diag.sh
+++ b/target/linux/ramips/base-files/etc/diag.sh
@@ -219,6 +219,12 @@ get_status_led() {
zbt-wr8305rt)
status_led="$board:green:sys"
;;
+ wcr-1166ds|\
+ whr-300hp2|\
+ wsr-1166|\
+ wsr-600)
+ status_led="$board:green:power"
+ ;;
wcr-150gn|\
wl-351)
status_led="$board:amber:power"
@@ -233,11 +239,6 @@ get_status_led() {
wizfi630a)
status_led="$board::run"
;;
- whr-300hp2|\
- wsr-1166|\
- wsr-600)
- status_led="$board:green:power"
- ;;
wrtnode2r | \
wrtnode2p | \
wrtnode)
diff --git a/target/linux/ramips/base-files/lib/ramips.sh b/target/linux/ramips/base-files/lib/ramips.sh
index 8292da1d4a..d9918cceb5 100755
--- a/target/linux/ramips/base-files/lib/ramips.sh
+++ b/target/linux/ramips/base-files/lib/ramips.sh
@@ -499,6 +499,9 @@ ramips_board_detect() {
*"W502U")
name="w502u"
;;
+ *"WCR-1166DS")
+ name="wcr-1166ds"
+ ;;
*"WCR-150GN")
name="wcr-150gn"
;;
diff --git a/target/linux/ramips/base-files/lib/upgrade/platform.sh b/target/linux/ramips/base-files/lib/upgrade/platform.sh
index c6ad8ca3e5..d83e5c1dd2 100755
--- a/target/linux/ramips/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh
@@ -226,6 +226,11 @@ platform_check_image() {
}
return 0
;;
+ ubnt-erx)
+ nand_do_platform_check "$board" "$1"
+ return $?;
+ ;;
+ wcr-1166ds|\
wsr-1166)
[ "$magic" != "48445230" ] && {
echo "Invalid image type."
@@ -233,10 +238,6 @@ platform_check_image() {
}
return 0
;;
- ubnt-erx)
- nand_do_platform_check "$board" "$1"
- return $?;
- ;;
esac
echo "Sysupgrade is not yet supported on $board."
diff --git a/target/linux/ramips/dts/WCR-1166DS.dts b/target/linux/ramips/dts/WCR-1166DS.dts
new file mode 100644
index 0000000000..ad3f21ba67
--- /dev/null
+++ b/target/linux/ramips/dts/WCR-1166DS.dts
@@ -0,0 +1,172 @@
+/dts-v1/;
+
+#include "mt7628an.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+/ {
+ compatible = "buffalo,wcr-1166ds", "mediatek,mt7628an-soc";
+ model = "Buffalo WCR-1166DS";
+
+ gpio-keys-polled {
+ compatible = "gpio-keys-polled";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ poll-interval = <20>;
+
+ aoss {
+ label = "aoss";
+ gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_WPS_BUTTON>;
+ };
+
+ ap {
+ label = "ap";
+ gpios = <&gpio0 11 GPIO_ACTIVE_LOW>;
+ linux,code = <BTN_0>;
+ linux,input-type = <EV_SW>;
+ };
+
+ reset {
+ label = "reset";
+ gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ };
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+
+ router_o {
+ label = "wcr-1166ds:orange:router";
+ gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
+ };
+
+ router_g {
+ label = "wcr-1166ds:green:router";
+ gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
+ };
+
+ internet_o {
+ label = "wcr-1166ds:orange:internet";
+ gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+ };
+
+ internet_g {
+ label = "wcr-1166ds:green:internet";
+ gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
+ };
+
+ wireless_o {
+ label = "wcr-1166ds:orange:wireless";
+ gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
+ };
+
+ wireless_g {
+ label = "wcr-1166ds:green:wireless";
+ gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
+ };
+
+ diag {
+ label = "wcr-1166ds:orange:diag";
+ gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
+ };
+
+ power {
+ label = "wcr-1166ds:green:power";
+ gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
+ };
+ };
+};
+
+&ehci {
+ status = "disabled";
+};
+
+&esw {
+ mediatek,portmap = <0x2f>;
+ mediatek,portdisable = <0x27>;
+};
+
+&ohci {
+ status = "disabled";
+};
+
+&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 = "uart1", "wled_an", "p0led_an", "p1led_an", "p2led_an", "p3led_an", "p4led_an", "wdt", "refclk", "gpio", "i2s";
+ 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 = "firmware";
+ reg = <0x50000 0x7c0000>;
+ };
+
+ partition@810000 {
+ label = "firmware2";
+ reg = <0x810000 0x7c0000>;
+ };
+
+ partition@fd0000 {
+ label = "glbcfg";
+ reg = <0xfd0000 0x10000>;
+ read-only;
+ };
+
+ partition@fe0000 {
+ label = "board_data";
+ reg = <0xfe0000 0x10000>;
+ read-only;
+ };
+ };
+};
+
+&wmac {
+ status = "okay";
+};
diff --git a/target/linux/ramips/image/Makefile b/target/linux/ramips/image/Makefile
index 2952c5f840..f34eba79cd 100644
--- a/target/linux/ramips/image/Makefile
+++ b/target/linux/ramips/image/Makefile
@@ -23,6 +23,7 @@ define Image/Build/Initramfs
endef
DEVICE_VARS += DTS IMAGE_SIZE NETGEAR_BOARD_ID NETGEAR_HW_ID
+DEVICE_VARS += BUFFALO_TAG_PLATFORM BUFFALO_TAG_VERSION BUFFALO_TAG_MINOR
loadaddr-y := 0x80000000
loadaddr-$(CONFIG_TARGET_ramips_rt288x) := 0x88000000
@@ -48,7 +49,7 @@ define Build/patch-dtb
endef
define Build/trx
- $(STAGING_DIR_HOST)/bin/trx \
+ $(STAGING_DIR_HOST)/bin/trx $(1) \
-o $@ \
-m $(IMAGE_SIZE) \
-f $(IMAGE_KERNEL) \
diff --git a/target/linux/ramips/image/mt7628.mk b/target/linux/ramips/image/mt7628.mk
index 4502588c80..0304921f41 100644
--- a/target/linux/ramips/image/mt7628.mk
+++ b/target/linux/ramips/image/mt7628.mk
@@ -55,3 +55,19 @@ define Device/mac1200r-v2
DEVICE_TITLE := Mercury MAC1200R v2.0
endef
TARGET_DEVICES += mac1200r-v2
+
+define Device/wcr-1166ds
+ DTS := WCR-1166DS
+ BUFFALO_TAG_PLATFORM := MTK
+ BUFFALO_TAG_VERSION := 9.99
+ BUFFALO_TAG_MINOR := 9.99
+ IMAGES += factory.bin
+ IMAGE/sysupgrade.bin := trx | pad-rootfs | append-metadata
+ IMAGE/factory.bin := \
+ trx -M 0x746f435c | pad-rootfs | append-metadata | \
+ buffalo-enc WCR-1166DS $$(BUFFALO_TAG_VERSION) -l | \
+ buffalo-tag-dhp WCR-1166DS JP JP | buffalo-enc-tag -l | \
+ buffalo-dhp-image
+ DEVICE_TITLE := Buffalo WCR-1166DS
+endef
+TARGET_DEVICES += wcr-1166ds
diff --git a/target/linux/ramips/mt7628/config-4.4 b/target/linux/ramips/mt7628/config-4.4
index 6b04457f17..6cd7838aee 100644
--- a/target/linux/ramips/mt7628/config-4.4
+++ b/target/linux/ramips/mt7628/config-4.4
@@ -138,6 +138,7 @@ CONFIG_MTD_NAND_MT7620=y
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_SPI_NOR=y
CONFIG_MTD_SPLIT_FIRMWARE=y
+CONFIG_MTD_SPLIT_TRX_FW=y
CONFIG_MTD_SPLIT_UIMAGE_FW=y
CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEED_PER_CPU_KM=y
diff --git a/target/linux/ramips/patches-4.4/0400-mtd-mtdsplit-add-support-for-custom-trx-magic-for-Buffalo-WCR-1166DS.patch b/target/linux/ramips/patches-4.4/0400-mtd-mtdsplit-add-support-for-custom-trx-magic-for-Buffalo-WCR-1166DS.patch
new file mode 100644
index 0000000000..1af72f93df
--- /dev/null
+++ b/target/linux/ramips/patches-4.4/0400-mtd-mtdsplit-add-support-for-custom-trx-magic-for-Buffalo-WCR-1166DS.patch
@@ -0,0 +1,30 @@
+--- a/drivers/mtd/mtdsplit/mtdsplit_trx.c
++++ b/drivers/mtd/mtdsplit/mtdsplit_trx.c
+@@ -13,6 +13,7 @@
+ #include <linux/module.h>
+ #include <linux/init.h>
+ #include <linux/kernel.h>
++#include <linux/of.h>
+ #include <linux/slab.h>
+ #include <linux/mtd/mtd.h>
+ #include <linux/mtd/partitions.h>
+@@ -20,7 +21,8 @@
+
+ #include "mtdsplit.h"
+
+-#define TRX_MAGIC 0x30524448 /* "HDR0" */
++#define TRX_MAGIC 0x30524448 /* "HDR0" */
++#define TRX_MAGIC_BUFFALO 0x746f435c
+
+ struct trx_header {
+ __le32 magic;
+@@ -82,7 +84,8 @@ mtdsplit_parse_trx(struct mtd_info *mast
+ if (ret)
+ continue;
+
+- if (hdr.magic != cpu_to_le32(TRX_MAGIC)) {
++ if (hdr.magic != cpu_to_le32(TRX_MAGIC) &&
++ !(of_machine_is_compatible("buffalo,wcr-1166ds") && hdr.magic == cpu_to_le32(TRX_MAGIC_BUFFALO))) {
+ pr_debug("no valid trx header found in \"%s\" at offset %llx\n",
+ master->name, (unsigned long long) offset);
+ continue;