summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtarget/linux/ath79/base-files/etc/board.d/02_network7
-rw-r--r--target/linux/ath79/dts/qca9563_elecom_wrc-300ghbk2-i.dts160
-rw-r--r--target/linux/ath79/image/generic.mk35
3 files changed, 202 insertions, 0 deletions
diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network
index 3a3c597..6cd794e 100755
--- a/target/linux/ath79/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/base-files/etc/board.d/02_network
@@ -40,6 +40,10 @@ ath79_setup_interfaces()
ucidef_add_switch "switch0" \
"0:lan" "1:lan" "2:lan" "3:lan" "5@eth0"
;;
+ elecom,wrc-300ghbk2-i)
+ ucidef_add_switch "switch0" \
+ "0@eth0" "2:lan:4" "3:lan:3" "4:lan:2" "5:lan:1" "1:wan"
+ ;;
embeddedwireless,dorin)
ucidef_add_switch "switch0" \
"0@eth0" "1:wan" "2:lan:3" "3:lan:2"
@@ -177,6 +181,9 @@ ath79_setup_macs()
lan_mac=$(mtd_get_mac_text "caldata" 65440)
wan_mac=$(mtd_get_mac_text "caldata" 65460)
;;
+ elecom,wrc-300ghbk2-i)
+ wan_mac=$(macaddr_add "$(mtd_get_mac_binary ART 4098)" -2)
+ ;;
iodata,etg3-r)
lan_mac=$(mtd_get_mac_ascii u-boot-env ethaddr)
wan_mac=$(macaddr_add "$lan_mac" -1)
diff --git a/target/linux/ath79/dts/qca9563_elecom_wrc-300ghbk2-i.dts b/target/linux/ath79/dts/qca9563_elecom_wrc-300ghbk2-i.dts
new file mode 100644
index 0000000..7052795
--- /dev/null
+++ b/target/linux/ath79/dts/qca9563_elecom_wrc-300ghbk2-i.dts
@@ -0,0 +1,160 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+#include "qca956x.dtsi"
+
+/ {
+ model = "ELECOM WRC-300GHBK2-I";
+ compatible = "elecom,wrc-300ghbk2-i", "qca,qca9563";
+
+ chosen {
+ bootargs = "console=ttyS0,115200n8";
+ };
+
+ aliases {
+ led-boot = &power;
+ led-failsafe = &power;
+ led-running = &power;
+ led-upgrade = &power;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ power: power {
+ label = "wrc-300ghbk2-i:white:power";
+ gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
+ default-state = "on";
+ };
+
+ wlan2g {
+ label = "wrc-300ghbk2-i:white:wlan2g";
+ gpios = <&gpio 7 GPIO_ACTIVE_HIGH>;
+ default-state = "off";
+ linux,default-trigger = "phy0tpt";
+ };
+
+ wps {
+ label = "wrc-300ghbk2-i:red:wps";
+ gpios = <&gpio 9 GPIO_ACTIVE_HIGH>;
+ default-state = "off";
+ };
+ };
+
+ keys {
+ compatible = "gpio-keys";
+
+ reset {
+ label = "reset";
+ gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_RESTART>;
+ debounce-interval = <60>;
+ };
+
+ button_wps {
+ label = "wps";
+ gpios = <&gpio 5 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_WPS_BUTTON>;
+ debounce-interval = <60>;
+ };
+
+ ap {
+ label = "ap";
+ gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
+ linux,code = <BTN_0>;
+ linux,input-type = <EV_SW>;
+ debounce-interval = <60>;
+ };
+ };
+};
+
+&spi {
+ status = "okay";
+ num-cs = <1>;
+
+ flash@0 {
+ compatible = "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <25000000>;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition@0 {
+ label = "u-boot";
+ reg = <0x000000 0x040000>;
+ read-only;
+ };
+
+ partition@40000 {
+ label = "u-boot-env";
+ reg = <0x040000 0x010000>;
+ read-only;
+ };
+
+ partition@50000 {
+ label = "nvram";
+ reg = <0x050000 0x020000>;
+ read-only;
+ };
+
+ partition@70000 {
+ label = "firmware";
+ reg = <0x070000 0x770000>;
+ };
+
+ partition@7e0000 {
+ label = "hwconfig";
+ reg = <0x7e0000 0x010000>;
+ read-only;
+ };
+
+ ART: partition@7f0000 {
+ label = "ART";
+ reg = <0x7f0000 0x010000>;
+ read-only;
+ };
+ };
+ };
+};
+
+&mdio0 {
+ status = "okay";
+
+ phy0: ethernet-phy@0 {
+ reg = <0>;
+ phy-mode = "sgmii";
+
+ qca,ar8327-initvals = <
+ 0x04 0x00000080 /* PORT0 PAD MODE CTRL */
+ 0x50 0xcf37cf37 /* LED_CTRL0 */
+ 0x54 0x00000000 /* LED_CTRL1 */
+ 0x58 0x00000000 /* LED_CTRL2 */
+ 0x5c 0x03ffff00 /* LED_CTRL3 */
+ 0x7c 0x0000007e /* PORT0_STATUS */
+ >;
+ };
+};
+
+&eth0 {
+ status = "okay";
+
+ mtd-mac-address = <&ART 0x1002>;
+ mtd-mac-address-increment = <(-1)>;
+ phy-mode = "sgmii";
+ phy-handle = <&phy0>;
+};
+
+&uart {
+ status = "okay";
+};
+
+&wmac {
+ status = "okay";
+ mtd-cal-data = <&ART 0x1000>;
+};
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index 60dc512..fc38c09 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -17,6 +17,31 @@ define Build/addpattern
-mv "$@.new" "$@"
endef
+define Build/elecom-header
+ $(eval fw_size=$(word 1,$(1)))
+ $(eval edimax_model=$(word 2,$(1)))
+ $(eval product=$(word 3,$(1)))
+ $(eval factory_bin=$(word 4,$(1)))
+ if [ -e $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE) -a "$$(stat -c%s $@)" -lt "$(fw_size)" ]; then \
+ $(CP) $(KDIR)/tmp/$(KERNEL_INITRAMFS_IMAGE) $(factory_bin); \
+ $(STAGING_DIR_HOST)/bin/mkedimaximg \
+ -b -s CSYS -m $(edimax_model) \
+ -f 0x70000 -S 0x01100000 \
+ -i $(factory_bin) -o $(factory_bin).new; \
+ mv $(factory_bin).new $(factory_bin); \
+ ( \
+ echo -n -e "ELECOM\x00\x00$(product)" | dd bs=40 count=1 conv=sync; \
+ echo -n "0.00" | dd bs=16 count=1 conv=sync; \
+ dd if=$(factory_bin); \
+ ) > $(factory_bin).new; \
+ mv $(factory_bin).new $(factory_bin); \
+ $(CP) $(factory_bin) $(BIN_DIR)/; \
+ else \
+ echo "WARNING: initramfs kernel image too big, cannot generate factory image" >&2; \
+ fi
+
+endef
+
define Device/avm_fritz300e
ATH_SOC := ar7242
DEVICE_TITLE := AVM FRITZ!WLAN Repeater 300E
@@ -62,6 +87,16 @@ define Device/dlink_dir-825-b1
endef
TARGET_DEVICES += dlink_dir-825-b1
+define Device/elecom_wrc-300ghbk2-i
+ ATH_SOC := qca9563
+ DEVICE_TITLE := ELECOM WRC-300GHBK2-I
+ IMAGE_SIZE := 7616k
+ KERNEL_INITRAMFS := $$(KERNEL) | pad-to 2 | \
+ elecom-header 7798706 RN51 WRC-300GHBK2-I \
+ $(KDIR)/tmp/$$(KERNEL_INITRAMFS_PREFIX)-factory.bin
+endef
+TARGET_DEVICES += elecom_wrc-300ghbk2-i
+
define Device/embeddedwireless_dorin
ATH_SOC := ar9331
DEVICE_TITLE := Embedded Wireless Dorin