From: Tomasz Maciej Nowak <tmn...@gmail.com>

Pakedge WR-1 is a dual-band wireless router.

Specification
SoC: Qualcomm Atheros IPQ4018
RAM: 256 MB DDR3
Flash: 32 MB SPI NOR
WIFI: 2.4 GHz 2T2R integrated
      5 GHz 2T2R integrated
Ethernet: 5x 10/100/1000 Mbps QCA8075
USB: 1x 2.0
LEDS: 8x (3 GPIO controlled, 5 connected to switch)
Buttons: 1x GPIO controlled
UART: pin header J5
      1. 3.3V, 2. GND, 3. TX, 4. RX
      baud: 115200, parity: none, flow control: none

Installation
1. Rename initramfs image to:
   openwrt-ipq806x-qcom-ipq40xx-ap.dk01.1-c1-fit-uImage-initramfs.itb
   and copy it to USB flash drive with FAT32 file system.
2. Connect USB flash drive to the router and apply power while pressing
   reset button. Hold the button, on the lates bootloader version, when
   Power and WiFi-5 LEDs will start blinking release it. For the older
   bootloader holding it for 15 seconds should suffice.
3. Now the router boots the initramfs image, at some point (close to one
   minute) the Power LED will start blinking, when stops, router is fully
   booted.
4. Connect to one of LAN ports and use SSH to open the shell at
   192.168.1.1.
5. ATTENTION! now backup the mtd8 and mtd9 partitions, it's necessary if,
   at some point, You want to go back to original firmware. The firmware
   provided by manufacturer on its site is encrypted and U-Boot accepts
   only decrypted factory images, so there's no way to restore original
   firmware.
6. If the backup is prepared, transfer the sysupgrade image to the router
   and use 'sysupgrade' command to flash it.
7. After successful flashing router will reboot. At some point the Power
   LED will start blinking, wait till it stops, then router is ready for
   configuration.

Additional information
U-Boot command line is password protected. Password is unknown.

Signed-off-by: Tomasz Maciej Nowak <tmn...@gmail.com>
---
 package/boot/uboot-envtools/files/ipq40xx     |   1 +
 .../ipq40xx/base-files/etc/board.d/02_network |   7 +
 .../etc/hotplug.d/firmware/11-ath10k-caldata  |   8 +
 .../arch/arm/boot/dts/qcom-ipq4018-wr-1.dts   | 264 ++++++++++++++++++
 target/linux/ipq40xx/image/generic.mk         |  12 +
 .../901-arm-boot-add-dts-files.patch          |   3 +-
 .../901-arm-boot-add-dts-files.patch          |   3 +-
 7 files changed, 296 insertions(+), 2 deletions(-)
 create mode 100644 
target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-wr-1.dts

diff --git a/package/boot/uboot-envtools/files/ipq40xx 
b/package/boot/uboot-envtools/files/ipq40xx
index 1937f9d1ce0c..e45e26dcc7f7 100644
--- a/package/boot/uboot-envtools/files/ipq40xx
+++ b/package/boot/uboot-envtools/files/ipq40xx
@@ -40,6 +40,7 @@ luma,wrtq-329acn|\
 netgear,wac510|\
 openmesh,a42|\
 openmesh,a62|\
+pakedge,wr-1|\
 plasmacloud,pa1200|\
 plasmacloud,pa2200)
        ubootenv_add_uci_config "/dev/mtd5" "0x0" "0x10000" "0x10000"
diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network 
b/target/linux/ipq40xx/base-files/etc/board.d/02_network
index 5843987627b0..15076708b919 100644
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -137,6 +137,11 @@ ipq40xx_setup_interfaces()
                        "0u@eth0" "2:lan" "3:lan" "4:lan"
                ucidef_set_interface_wan "eth1"
                ;;
+       pakedge,wr-1)
+               ucidef_set_interfaces_lan_wan "eth0" "eth1"
+               ucidef_add_switch "switch0" \
+                       "0u@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" 
"0u@eth1" "5:wan"
+               ;;
        qxwlan,e2600ac-c1 |\
        qxwlan,e2600ac-c2)
                ucidef_set_interfaces_lan_wan "eth0" "eth1"
@@ -220,6 +225,8 @@ ipq40xx_setup_macs()
                lan_mac=$(cat /sys/firmware/mikrotik/hard_config/mac_base)
                label_mac="$lan_mac"
                ;;
+       pakedge,wr-1)
+               wan_mac=$(macaddr_add $(get_mac_label) 1)
        esac
 
        [ -n "$lan_mac" ] && ucidef_set_interface_macaddr "lan" $lan_mac
diff --git 
a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata 
b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index f1c424a28d22..c2d04c898ed9 100644
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -130,6 +130,10 @@ case "$FIRMWARE" in
                caldata_extract_mmc "0:ART" 0x1000 0x2f20
                ath10k_patch_mac $(mmc_get_mac_binary ARTMTD 0x0)
                ;;
+       pakedge,wr-1)
+               caldata_extract "0:ART" 0x1000 0x2f20
+               ath10k_patch_mac $(macaddr_add $(get_mac_label) 2)
+               ;;
        zyxel,nbg6617 |\
        zyxel,wre6606)
                caldata_extract "ART" 0x1000 0x2f20
@@ -213,6 +217,10 @@ case "$FIRMWARE" in
                caldata_extract_mmc "0:ART" 0x5000 0x2f20
                ath10k_patch_mac $(mmc_get_mac_binary ARTMTD 0xc)
                ;;
+       pakedge,wr-1)
+               caldata_extract "0:ART" 0x5000 0x2f20
+               ath10k_patch_mac $(macaddr_add $(get_mac_label) 4)
+               ;;
        zyxel,nbg6617 |\
        zyxel,wre6606)
                caldata_extract "ART" 0x5000 0x2f20
diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-wr-1.dts 
b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-wr-1.dts
new file mode 100644
index 000000000000..26a8b013aaad
--- /dev/null
+++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4018-wr-1.dts
@@ -0,0 +1,264 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/leds/common.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+       model = "Pakedge WR-1";
+       compatible = "pakedge,wr-1";
+
+       aliases {
+               label-mac-device = &gmac0;
+               led-boot = &led_power;
+               led-failsafe = &led_power;
+               led-running = &led_power;
+               led-upgrade = &led_power;
+       };
+
+       keys {
+               compatible = "gpio-keys";
+               pinctrl-0 = <&key_pins>;
+               pinctrl-names = "default";
+
+               reset {
+                       label = "reset";
+                       gpios = <&tlmm 59 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-0 = <&led_pins>;
+               pinctrl-names = "default";
+
+               led_power: power {
+                       label = "blue:power";
+                       gpios = <&tlmm 0 GPIO_ACTIVE_HIGH>;
+                       color = <LED_COLOR_ID_BLUE>;
+                       function = LED_FUNCTION_POWER;
+               };
+
+               wlan2g {
+                       label = "blue:wlan2g";
+                       gpios = <&tlmm 1 GPIO_ACTIVE_LOW>;
+                       color = <LED_COLOR_ID_BLUE>;
+                       function = LED_FUNCTION_WLAN;
+                       linux,default-trigger = "phy0tpt";
+               };
+
+               wlan5g {
+                       label = "blue:wlan5g";
+                       gpios = <&tlmm 2 GPIO_ACTIVE_LOW>;
+                       color = <LED_COLOR_ID_BLUE>;
+                       function = LED_FUNCTION_WLAN;
+                       linux,default-trigger = "phy1tpt";
+               };
+       };
+
+       soc {
+               ess-psgmii@98000 {
+                       status = "okay";
+               };
+
+               tcsr@1949000 {
+                       compatible = "qcom,tcsr";
+                       reg = <0x1949000 0x100>;
+                       qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+               };
+
+               tcsr@194b000 {
+                       compatible = "qcom,tcsr";
+                       reg = <0x194b000 0x100>;
+                       qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
+               };
+
+               ess_tcsr@1953000 {
+                       compatible = "qcom,tcsr";
+                       reg = <0x1953000 0x1000>;
+                       qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+               };
+
+               tcsr@1957000 {
+                       compatible = "qcom,tcsr";
+                       reg = <0x1957000 0x100>;
+                       qcom,wifi_noc_memtype_m0_m2 = 
<TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+               };
+
+               ess-switch@c000000 {
+                       status = "okay";
+               };
+
+               edma@c080000 {
+                       status = "okay";
+               };
+       };
+};
+
+&blsp_dma {
+       status = "okay";
+};
+
+&blsp1_spi1 {
+       status = "okay";
+
+       cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
+       pinctrl-0 = <&spi_0_pins>;
+       pinctrl-names = "default";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <24000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "0:SBL1";
+                               reg = <0x0000000 0x0040000>;
+                               read-only;
+                       };
+
+                       partition@40000 {
+                               label = "0:MIBIB";
+                               reg = <0x0040000 0x0020000>;
+                               read-only;
+                       };
+
+                       partition@60000 {
+                               label = "0:QSEE";
+                               reg = <0x0060000 0x0060000>;
+                               read-only;
+                       };
+
+                       partition@c0000 {
+                               label = "0:CDT";
+                               reg = <0x00c0000 0x0010000>;
+                               read-only;
+                       };
+
+                       partition@d0000 {
+                               label = "0:DDRPARAMS";
+                               reg = <0x00d0000 0x0010000>;
+                               read-only;
+                       };
+
+                       partition@e0000 {
+                               label = "0:APPSBLENV";
+                               reg = <0x00e0000 0x0010000>;
+                               read-only;
+                       };
+
+                       partition@f0000 {
+                               label = "0:APPSBL";
+                               reg = <0x00f0000 0x0080000>;
+                               read-only;
+                       };
+
+                       partition@170000 {
+                               label = "0:ART";
+                               reg = <0x0170000 0x0010000>;
+                               read-only;
+                       };
+
+                       partition@180000 {
+                               label = "firmware";
+                               reg = <0x0180000 0x1e80000>;
+                       };
+               };
+       };
+};
+
+&blsp1_uart1 {
+       status = "okay";
+
+       pinctrl-0 = <&serial_pins>;
+       pinctrl-names = "default";
+};
+
+&crypto {
+       status = "okay";
+};
+
+&cryptobam {
+       status = "okay";
+};
+
+&mdio {
+       status = "okay";
+};
+
+&prng {
+       status = "okay";
+};
+
+&tlmm {
+       key_pins: key_pinmux {
+               mux {
+                       function = "gpio";
+                       pins = "gpio59";
+                       bias-pull-up;
+               };
+       };
+
+       led_pins: led_pinmux {
+               mux {
+                       function = "gpio";
+                       pins = "gpio0", "gpio1", "gpio2";
+                       bias-none;
+                       drive-strength = <2>;
+                       output-low;
+               };
+       };
+
+       serial_pins: serial_pinmux {
+               mux {
+                       function = "blsp_uart0";
+                       pins = "gpio60", "gpio61";
+                       bias-disable;
+               };
+       };
+
+       spi_0_pins: spi_0_pinmux {
+               mux {
+                       function = "blsp_spi0";
+                       pins = "gpio55", "gpio56", "gpio57";
+                       bias-disable;
+                       drive-strength = <12>;
+               };
+
+               mux_cs {
+                       function = "gpio";
+                       pins = "gpio54";
+                       bias-disable;
+                       drive-strength = <2>;
+                       output-high;
+               };
+       };
+};
+
+&usb2 {
+       status = "okay";
+};
+
+&usb2_hs_phy {
+       status = "okay";
+};
+
+&watchdog {
+       status = "okay";
+};
+
+&wifi0 {
+       status = "okay";
+};
+
+&wifi1 {
+       status = "okay";
+};
diff --git a/target/linux/ipq40xx/image/generic.mk 
b/target/linux/ipq40xx/image/generic.mk
index 6daebd5ed0f5..90ed32eaeb5a 100644
--- a/target/linux/ipq40xx/image/generic.mk
+++ b/target/linux/ipq40xx/image/generic.mk
@@ -882,6 +882,18 @@ define Device/p2w_r619ac-128m
 endef
 TARGET_DEVICES += p2w_r619ac-128m
 
+define Device/pakedge_wr-1
+       $(call Device/FitImageLzma)
+       DEVICE_VENDOR := Pakedge
+       DEVICE_MODEL := WR-1
+       DEVICE_DTS_CONFIG := config@ap.dk01.1-c1
+       SOC := qcom-ipq4018
+       BLOCKSIZE := 64k
+       IMAGE_SIZE := 31232k
+       IMAGE/sysupgrade.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | 
append-rootfs | pad-rootfs | append-metadata
+endef
+TARGET_DEVICES += pakedge_wr-1
+
 define Device/plasmacloud_pa1200
        $(call Device/FitImageLzma)
        DEVICE_VENDOR := Plasma Cloud
diff --git a/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch 
b/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch
index 952092d1f729..e65c134a3caf 100644
--- a/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-5.10/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <j...@phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -904,11 +904,79 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -904,11 +904,80 @@ dtb-$(CONFIG_ARCH_QCOM) += \
        qcom-apq8074-dragonboard.dtb \
        qcom-apq8084-ifc6540.dtb \
        qcom-apq8084-mtp.dtb \
@@ -42,6 +42,7 @@ Signed-off-by: John Crispin <j...@phrozen.org>
 +      qcom-ipq4018-wac510.dtb \
 +      qcom-ipq4018-wap-ac.dtb \
 +      qcom-ipq4018-whw01-v1.dtb \
++      qcom-ipq4018-wr-1.dtb \
 +      qcom-ipq4018-wre6606.dtb \
 +      qcom-ipq4018-wrtq-329acn.dtb \
        qcom-ipq4019-ap.dk01.1-c1.dtb \
diff --git a/target/linux/ipq40xx/patches-5.15/901-arm-boot-add-dts-files.patch 
b/target/linux/ipq40xx/patches-5.15/901-arm-boot-add-dts-files.patch
index 78b97393d565..cbd115bd17ff 100644
--- a/target/linux/ipq40xx/patches-5.15/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-5.15/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <j...@phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -952,11 +952,78 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -952,11 +952,79 @@ dtb-$(CONFIG_ARCH_QCOM) += \
        qcom-ipq4018-ap120c-ac.dtb \
        qcom-ipq4018-ap120c-ac-bit.dtb \
        qcom-ipq4018-jalapeno.dtb \
@@ -41,6 +41,7 @@ Signed-off-by: John Crispin <j...@phrozen.org>
 +      qcom-ipq4018-wac510.dtb \
 +      qcom-ipq4018-wap-ac.dtb \
 +      qcom-ipq4018-whw01-v1.dtb \
++      qcom-ipq4018-wr-1.dtb \
 +      qcom-ipq4018-wre6606.dtb \
 +      qcom-ipq4018-wrtq-329acn.dtb \
        qcom-ipq4019-ap.dk01.1-c1.dtb \
-- 
2.37.2


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to