ath79: add support for DomyWifi DW33D
authorWeiDong Jia <jwdsccd@gmail.com>
Tue, 5 Nov 2019 06:36:25 +0000 (14:36 +0800)
committerChuanhong Guo <gch981213@gmail.com>
Sat, 7 Mar 2020 03:02:13 +0000 (11:02 +0800)
This commit ports the device from ar71xx to the ath79 target and
modifies the partition layout.
1. Firmware is installed to nand flash.
2. Modify the uboot-env parameter to boot from the nand flash.
3. The kernel size is extended to 5M.
4.nor flash retains the oem firmware.

oem partition layout
dev:    size   erasesize  name
mtd0: 00040000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00e30000 00010000 "rootfs"
mtd3: 00170000 00010000 "kernel"
mtd4: 00010000 00010000 "art"
mtd5: 00f90000 00010000 "firmware"
mtd6: 06000000 00020000 "rootfs_data"
mtd7: 02000000 00020000 "backup"

new partition layout
dev:    size   erasesize  name
mtd0: 00040000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00fa0000 00010000 "oem-firmware"
mtd3: 00010000 00010000 "art"
mtd4: 00500000 00020000 "kernel"
mtd5: 05b00000 00020000 "ubi"
mtd6: 02000000 00020000 "oem-backup"

MAC address overview:
All mac addresses are stored in the art partition.
eth0: 0x0
eth1: 0x6
ath9k: 0xc
ath10k: 0x12
No valid addresses in 0x1002 and 0x5006. All addresses match the OEM
firmware.

Install from oem firmware.
Enable ssh service:
Connect to the router web, click professional, click system-startup,
and add dropbear in the local startup input box. Click
system-administration, delete ssh-key, and replace your ssh pub key.
Restart the router.
1.Upload openwrt firmware to the device
scp openwrt-snapshot-r11365-df60a0852c-ath79-nand-domywifi_dw33d-\
squashfs-factory.bin root@192.168.10.1:/tmp
2.modify uboot-env.
ssh login to the device:
fw_setenv bootcmd 'nboot 0x8050000 0;bootm || bootm 0x9fe80000'
Run the fw_printenv command to check if the settings are correct.
3.Write openwrt firmware.
ssh login to the device:
mtd -r write /tmp/openwrt-snapshot-r11365-df60a0852c-ath79-nand-\
domywifi_dw33d-squashfs-factory.bin /dev/mtd6
The device will restart automatically and the openwrt firmware
installation is complete.

Restore oem firmware.just erase the kernel partition and the ubi
partition.
ssh login to the device:
mtd erase /dev/mtd4
mtd -r erase /dev/mtd5
Reboot the device

Signed-off-by: WeiDong Jia <jwdsccd@gmail.com>
[alter flash instruction in commit message]
Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
package/boot/uboot-envtools/files/ath79
target/linux/ath79/dts/qca9558_domywifi_dw33d.dts [new file with mode: 0644]
target/linux/ath79/image/nand.mk
target/linux/ath79/nand/base-files/etc/board.d/02_network
target/linux/ath79/nand/base-files/etc/hotplug.d/firmware/11-ath10k-caldata

index 15bd9ffb6eeefa3751d1cd337cdd02e0eb063d46..e37e5a9b2137a2ec2b87c8a7adb08eb87f1e473d 100644 (file)
@@ -15,6 +15,7 @@ board=$(board_name)
 case "$board" in
 alfa-network,ap121f|\
 buffalo,bhr-4grv2|\
+domywifi,dw33d|\
 engenius,ecb1750|\
 etactica,eg200|\
 glinet,gl-ar300m-lite|\
diff --git a/target/linux/ath79/dts/qca9558_domywifi_dw33d.dts b/target/linux/ath79/dts/qca9558_domywifi_dw33d.dts
new file mode 100644 (file)
index 0000000..b71bec4
--- /dev/null
@@ -0,0 +1,217 @@
+// 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 "qca9557.dtsi"
+
+/ {
+       compatible = "domywifi,dw33d", "qca,qca9558";
+       model = "DomyWifi DW33D";
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8";
+       };
+
+       aliases {
+               led-boot = &led_system;
+               led-failsafe = &led_system;
+               led-running = &led_system;
+               led-upgrade = &led_system;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led_system: system {
+                       label = "dw33d:blue:system";
+                       gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+               };
+
+               mmc {
+                       label = "dw33d:blue:mmc";
+                       gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+                       trigger-sources = <&hub_port0>;
+                       linux,default-trigger = "usbport";
+               };
+
+               usb {
+                       label = "dw33d:blue:usb";
+                       gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+                       trigger-sources = <&hub_port1>;
+                       linux,default-trigger = "usbport";
+               };
+
+               wlan2g {
+                       label = "dw33d:blue:wlan2g";
+                       gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy1tpt";
+               };
+
+               internet {
+                       label = "dw33d:blue:internet";
+                       gpios = <&gpio 22 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "Reset button";
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+       };
+};
+
+&pcie0 {
+       status = "okay";
+
+       wifi@0,0 {
+               compatible = "qcom,ath10k";
+               reg = <0 0 0 0 0>;
+       };
+};
+
+&uart {
+       status = "okay";
+};
+
+&usb_phy0 {
+       status = "okay";
+};
+
+&usb0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       hub_port0: port@1 {
+               reg = <1>;
+               #trigger-source-cells = <0>;
+       };
+};
+
+&usb_phy1 {
+       status = "okay";
+};
+
+&usb1 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       hub_port1: port@1 {
+               reg = <1>;
+               #trigger-source-cells = <0>;
+       };
+};
+
+&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 = <0x0 0x40000>;
+                               read-only;
+                       };
+
+                       partition@40000 {
+                               label = "u-boot-env";
+                               reg = <0x40000 0x10000>;
+                       };
+
+                       partition@50000 {
+                               label = "oem-firmware";
+                               reg = <0x50000 0xfa0000>;
+                       };
+
+                       art: partition@ff0000 {
+                               label = "art";
+                               reg = <0xff0000 0x10000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&nand {
+       status = "okay";
+
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "kernel";
+                       reg = <0x0 0x500000>;
+               };
+
+               partition@500000 {
+                       label = "ubi";
+                       reg = <0x500000 0x5b00000>;
+               };
+
+               partition@6000000 {
+                       label = "oem-backup";
+                       reg = <0x6000000 0x2000000>;
+               };
+       };
+};
+
+&mdio0 {
+       status = "okay";
+
+       phy0: ethernet-phy@0 {
+               reg = <0>;
+
+               qca,ar8327-initvals = <
+                       0x04 0x87600000 /* PORT0 PAD MODE CTRL */
+                       0x0c 0x00080080 /* PORT6 PAD MODE CTRL */
+                       0x7c 0x0000007e /* PORT0_STATUS */
+                       0x94 0x0000007e /* PORT6 STATUS */
+                       >;
+       };
+};
+
+&eth0 {
+       status = "okay";
+
+       mtd-mac-address = <&art 0x0>;
+       pll-data = <0x56000000 0x00000101 0x00001616>;
+       phy-handle = <&phy0>;
+};
+
+&eth1 {
+       status = "okay";
+
+       mtd-mac-address = <&art 0x6>;
+       pll-data = <0x03000101 0x00000101 0x00001616>;
+       fixed-link {
+               speed = <1000>;
+               full-duplex;
+       };
+};
+
+&wmac {
+       status = "okay";
+
+       mtd-cal-data = <&art 0x1000>;
+       mtd-mac-address = <&art 0xc>;
+};
index 5a61be3545931b0767217090795141c3da16586b..ab4299ef37b91d235e4fdcd3f4682673cea7d886 100644 (file)
@@ -47,6 +47,24 @@ define Device/aerohive_hiveap-121
 endef
 TARGET_DEVICES += aerohive_hiveap-121
 
+define Device/domywifi_dw33d
+  SOC := qca9558
+  DEVICE_VENDOR := DomyWifi
+  DEVICE_MODEL := DW33D
+  DEVICE_PACKAGES := kmod-usb2 kmod-usb-storage kmod-usb-ledtrig-usbport \
+  kmod-ath10k-ct ath10k-firmware-qca988x-ct
+  KERNEL_SIZE := 5120k
+  IMAGE_SIZE := 98304k
+  BLOCKSIZE := 128k
+  PAGESIZE := 2048
+  UBINIZE_OPTS := -E 5
+  IMAGES += factory.bin
+  IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+  IMAGE/factory.bin := append-kernel | pad-to $$$$(KERNEL_SIZE) | append-ubi | \
+  check-size $$$$(IMAGE_SIZE)
+endef
+TARGET_DEVICES += domywifi_dw33d
+
 define Device/glinet_gl-ar300m-common-nand
   SOC := qca9531
   DEVICE_VENDOR := GL.iNet
index f42b1ea9c2424032f8077a6fcaf3e30b66403fee..06a2aec47189eeb224c4a6c2e511ee9e1a0e6705 100755 (executable)
@@ -12,6 +12,10 @@ ath79_setup_interfaces()
        mikrotik,routerboard-922uags-5hpacd)
                ucidef_set_interface_lan "eth0"
                ;;
+       domywifi,dw33d)
+               ucidef_add_switch "switch0" \
+                       "0@eth0" "1:wan" "2:lan" "3:lan" "4:lan" "5:lan" "6@eth1"
+               ;;
        glinet,gl-ar750s-nor|\
        glinet,gl-ar750s-nor-nand)
                ucidef_add_switch "switch0" \
index 1989332f8168016b24b46d00ef466056fbddc669..8a1bed58c1bf3b657eda331b9e251e864bf33e37 100644 (file)
@@ -10,6 +10,10 @@ board=$(board_name)
 case "$FIRMWARE" in
 "ath10k/cal-pci-0000:00:00.0.bin")
        case $board in
+       domywifi,dw33d)
+               caldata_extract "art" 0x5000 0x844
+               ath10k_patch_mac $(mtd_get_mac_binary art 0x12)
+               ;;
        glinet,gl-ar750s-nor|\
        glinet,gl-ar750s-nor-nand)
                caldata_extract "art" 0x5000 0x844