From patchwork Sat Jan 28 16:05:56 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: FUKAUMI Naoki X-Patchwork-Id: 721063 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3v9gYj2Tv8z9sD6 for ; Sun, 29 Jan 2017 03:08:25 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Mbr6fBVZ"; dkim-atps=neutral Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1cXVY7-0007s6-31; Sat, 28 Jan 2017 16:08:23 +0000 Received: from mail-pf0-f195.google.com ([209.85.192.195]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1cXVXH-0007V8-MC for lede-dev@lists.infradead.org; Sat, 28 Jan 2017 16:07:34 +0000 Received: by mail-pf0-f195.google.com with SMTP id f144so20503317pfa.2 for ; Sat, 28 Jan 2017 08:07:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=phpcqRw9rsnj2YTfotX43b6EOQG2mNWfp6dML1mt1t4=; b=Mbr6fBVZphU+AfPN3oxeiriUZYBk6PjSwESw+1gV4WB9p0AO8JKh7dGVoYcQLn+Sj2 IvcZgX/4b7ub6d31jKixbGpsuxw24UeANy8yB3ml+m4spv/TVkgIDsWy+E4t0jkQso/P ycvyWloRoaAqwfTDfOD6JG00ZLSFPdyNdG22ICZTRmLygR3kHz37bil+ONxa6Rea/0SG Ppte7rBUQfmvSiyTmoiVm0u2kJMacgIgeQKbZ/uX4oWHoiGZZO8z2KRfITezUaJ1De6s 73UIWErPKDPw6+U9CFACj/i7dl/G/0n6aBR6/RgNTXznYm274x/gwk4Gr2lmhn/NDvJC G0fA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=phpcqRw9rsnj2YTfotX43b6EOQG2mNWfp6dML1mt1t4=; b=Tf/Z/2P7+OTZ0d7dWpdvRyY+HoAwSjGlmZO5q/0yfBDzryHY1FZpvUWOg8Tzgd8YwE 76bo9wgytAXpQa37SH54iJYJgfm7zKQ/VK0gbJEFZcIzoGv2A08ACdwxWb4DAf5uddSW iRAuQ3jlrh8kLOEUAJn0+dFcgwtAVmUT1q1gBgPusfAbE483cDfVp9Wr9I2WV1QX9X1r HGvbHIlZi5F9//T7BCCnHOx/dd9MufZ8jDgbt/EF4DpqTPN4EGZulW9rHj/W2w3NP7W8 FraQQ407RsZi+jxSs6orSrxylcXp+yMYNeWsw7sKuC7s8ZFkR9TlgLWeR5ps/n0Nxu97 Fb5w== X-Gm-Message-State: AIkVDXIsv9NzzFcYmRmz79Clwt0DjX7jn+L5XdOjbZDWq2TO311jKEVzv+KVIKeisWJFPA== X-Received: by 10.98.0.143 with SMTP id 137mr14518793pfa.173.1485619570298; Sat, 28 Jan 2017 08:06:10 -0800 (PST) Received: from localhost.localdomain (sakura.naobsd.org. [160.16.200.221]) by smtp.gmail.com with ESMTPSA id l22sm19951778pgc.43.2017.01.28.08.06.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 28 Jan 2017 08:06:09 -0800 (PST) From: FUKAUMI Naoki To: lede-dev@lists.infradead.org Date: Sun, 29 Jan 2017 01:05:56 +0900 Message-Id: <20170128160556.23071-3-naobsd@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170128160556.23071-1-naobsd@gmail.com> References: <20170128160556.23071-1-naobsd@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170128_080731_794277_306FB337 X-CRM114-Status: GOOD ( 18.22 ) X-Spam-Score: -2.7 (--) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-2.7 points) pts rule name description ---- ---------------------- -------------------------------------------------- 0.5 RCVD_IN_SORBS_SPAM RBL: SORBS: sender is a spam source [209.85.192.195 listed in dnsbl.sorbs.net] -1.2 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.192.195 listed in wl.mailspike.net] 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (naobsd[at]gmail.com) -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [209.85.192.195 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature Subject: [LEDE-DEV] [PATCH v4 3/3] ramips: add support for Buffalo WCR-1166DS X-BeenThere: lede-dev@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: FUKAUMI Naoki MIME-Version: 1.0 Sender: "Lede-dev" Errors-To: lede-dev-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org 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 --- Changes in v4: - rebase and resolve conflict Changes in v3: - added .../linux/ramips/base-files/etc/board.d/02_network | 15 +- target/linux/ramips/base-files/etc/diag.sh | 11 +- target/linux/ramips/base-files/lib/ramips.sh | 3 + .../ramips/base-files/lib/upgrade/platform.sh | 9 +- target/linux/ramips/dts/WCR-1166DS.dts | 172 +++++++++++++++++++++ target/linux/ramips/image/Makefile | 3 +- target/linux/ramips/image/mt7628.mk | 16 ++ target/linux/ramips/mt7628/config-4.4 | 1 + ...r-custom-trx-magic-for-Buffalo-WCR-1166DS.patch | 30 ++++ 9 files changed, 245 insertions(+), 15 deletions(-) create mode 100644 target/linux/ramips/dts/WCR-1166DS.dts create mode 100644 target/linux/ramips/patches-4.4/0400-mtd-mtdsplit-add-support-for-custom-trx-magic-for-Buffalo-WCR-1166DS.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 b27954f..282624f 100755 --- a/target/linux/ramips/base-files/etc/board.d/02_network +++ b/target/linux/ramips/base-files/etc/board.d/02_network @@ -264,6 +264,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" @@ -411,6 +415,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) ;; @@ -428,11 +438,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 84031d1..f6bae00 100644 --- a/target/linux/ramips/base-files/etc/diag.sh +++ b/target/linux/ramips/base-files/etc/diag.sh @@ -220,6 +220,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" @@ -234,11 +240,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 5ab46de..71b31f6 100755 --- a/target/linux/ramips/base-files/lib/ramips.sh +++ b/target/linux/ramips/base-files/lib/ramips.sh @@ -502,6 +502,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 05d2759..a43d370 100755 --- a/target/linux/ramips/base-files/lib/upgrade/platform.sh +++ b/target/linux/ramips/base-files/lib/upgrade/platform.sh @@ -227,6 +227,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." @@ -234,10 +239,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 0000000..ad3f21b --- /dev/null +++ b/target/linux/ramips/dts/WCR-1166DS.dts @@ -0,0 +1,172 @@ +/dts-v1/; + +#include "mt7628an.dtsi" + +#include +#include + +/ { + 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 = ; + }; + + ap { + label = "ap"; + gpios = <&gpio0 11 GPIO_ACTIVE_LOW>; + linux,code = ; + linux,input-type = ; + }; + + reset { + label = "reset"; + gpios = <&gpio1 14 GPIO_ACTIVE_LOW>; + linux,code = ; + }; + }; + + 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 2952c5f..f34eba7 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 4502588..0304921 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 6b04457..6cd7838 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 0000000..1af72f9 --- /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 + #include + #include ++#include + #include + #include + #include +@@ -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;