Message ID | 20230315142101.501227-1-koen.vandeputte@citymesh.com |
---|---|
State | Superseded |
Delegated to: | Koen Vandeputte |
Headers | show |
Series | ipq40xx: add support for Wallystech DR40x9 | expand |
On Wed, 15 Mar 2023 at 15:22, Koen Vandeputte <koen.vandeputte@citymesh.com> wrote: > > From: Robert Marko <robert.marko@sartura.hr> > > Adds support for the Wallys DR40x9 series boards. > They come in IPQ4019 and IPQ4029 versions. > IPQ4019/4029 only differ in that that IPQ4029 is the industrial version that is rated to higher temperatures. > > Specifications are: > * CPU: Qualcomm IPQ40x9 (4x ARMv7A Cortex A7) at 716 MHz > * RAM: 512 MB > * Storage: 2MB of SPI-NOR, 128 MB of parallel NAND > * USB 3.0 TypeA port for users > * MiniPCI-E with PCI-E 2.0 link > * MiniPCI-E for LTE modems with only USB2.0 link > * 2 SIM card slots that are selected via GPIO11 > * MicroSD card slot > * Ethernet: 2x GBe with 24~48V passive POE > * SFP port (Does not work, I2C and GPIO's not connected on hardware) > * DC Jack > * UART header > * WLAN: In-SoC 2x2 802.11b/g/n and 2x2 802.11a/n/ac > * 4x MMCX connectors for WLAN > * Reset button > * 8x LED-s > > Installation instructions: > Connect to UART, pins are like this: > -> 3.3V | TX | RX | GND > > Settings are 115200 8n1 > > Boot initramfs from TFTP: > tftpboot 0x84000000 openwrt-ipq40xx-generic-wallys_dr40x9-initramfs-fit-uImage.itb > > bootm > > Then copy the sysupgrade image to the /tmp folder and execute sysupgrade -n <image_name> > > Signed-off-by: Robert Marko <robert.marko@sartura.hr> > [Fixup dts for 2 missing crypto options] > [Remove sfp from dts] > [Add 'config' partition] > [Update to latest wifi board bin files - received from Wallystech R&D] > [Extensively tested on DR4029-V04] > Signed-off-by: Koen Vandeputte <koen.vandeputte@citymesh.com> > --- > package/firmware/ipq-wifi/Makefile | 2 + > .../ipq-wifi/board-wallys_dr40x9.qca4019 | Bin 0 -> 24316 bytes > .../ipq40xx/base-files/etc/board.d/02_network | 1 + > .../base-files/etc/board.d/03_gpio_switches | 3 + > .../base-files/lib/upgrade/platform.sh | 3 +- > .../arch/arm/boot/dts/qcom-ipq40x9-dr40x9.dts | 425 ++++++++++++++++++ > target/linux/ipq40xx/image/generic.mk | 13 + > 7 files changed, 446 insertions(+), 1 deletion(-) > create mode 100644 package/firmware/ipq-wifi/board-wallys_dr40x9.qca4019 > create mode 100644 target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq40x9-dr40x9.dts > > diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile > index 8e7fc4da39..6feac277b3 100644 > --- a/package/firmware/ipq-wifi/Makefile > +++ b/package/firmware/ipq-wifi/Makefile > @@ -47,6 +47,7 @@ ALLWIFIBOARDS:= \ > redmi_ax6 \ > sony_ncp-hg100-cellular \ > teltonika_rutx \ > + wallys_dr40x9 \ > xiaomi_ax3600 \ > xiaomi_ax9000 \ > zte_mf18a \ > @@ -147,6 +148,7 @@ $(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac-c2,Qxwlan E2600AC C2)) > $(eval $(call generate-ipq-wifi-package,redmi_ax6,Redmi AX6)) > $(eval $(call generate-ipq-wifi-package,sony_ncp-hg100-cellular,Sony NCP-HG100/Cellular)) > $(eval $(call generate-ipq-wifi-package,teltonika_rutx,Teltonika RUTX)) > +$(eval $(call generate-ipq-wifi-package,wallys_dr40x9,Wallys DR40X9)) > $(eval $(call generate-ipq-wifi-package,xiaomi_ax3600,Xiaomi AX3600)) > $(eval $(call generate-ipq-wifi-package,xiaomi_ax9000,Xiaomi AX9000)) > $(eval $(call generate-ipq-wifi-package,zte_mf18a,ZTE MF18A)) > diff --git a/package/firmware/ipq-wifi/board-wallys_dr40x9.qca4019 b/package/firmware/ipq-wifi/board-wallys_dr40x9.qca4019 > new file mode 100644 > index 0000000000000000000000000000000000000000..f23ecdfabbb90dc8d293676c4449a5fa9e90e721 > GIT binary patch > literal 24316 > zcmeHPdr(tX8b1jj%4*?;fV{kf@JeV1A*2{2@{BY<3KkU!un1I<q(pfb9)>R1@j)RX > z0<|DS&^joOrihHi2gGV^?Tj+*&i=8pf3%%_bZ6FG+tKc{GrNm>?hSzi5={iA0qz&h > zIp6v2`Of*yFDJ>p_x!kTCdP-x?-Ye|QbQBc<1>UnE|&u+C1F?&Kr~E+ii)iT#f7Xw > zxis{xVrglpbnjLUUMoCUP`($dayhKZf^uoWfkRt&7nGFLRD=pMc$};#ISKmHU|+N_ > zk%&YBc6Ah9Cf09AFU;}*aB_5k3IJ39UWvdp(;1UV$GQR_A|m3aCr?NM>KgFNUrxp9 > zlO62fCFS;9zZTs{;29KnY`Qkx>f+qi`nof�%|#kfeL*k6<zC_1QA^<s+W$1Zqxr > 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 > MeyM*opWpxg0S16$b^rhX > > literal 0 > HcmV?d00001 > > 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 3625938e38..37b9ca268b 100644 > --- a/target/linux/ipq40xx/base-files/etc/board.d/02_network > +++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network > @@ -39,6 +39,7 @@ ipq40xx_setup_interfaces() > mikrotik,cap-ac|\ > netgear,wac510|\ > sony,ncp-hg100-cellular|\ > + wallys,dr40x9|\ > zte,mf18a|\ > zte,mf289f) > ucidef_set_interfaces_lan_wan "lan" "wan" > diff --git a/target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches b/target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches > index 4918e2ccc1..f76fe9402d 100644 > --- a/target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches > +++ b/target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches > @@ -32,6 +32,9 @@ mikrotik,hap-ac3-lte6-kit) > sony,ncp-hg100-cellular) > ucidef_add_gpio_switch "uart_dbgcon_en" "debug console enable" "427" "1" > ;; > +wallys,dr40x9) > + ucidef_add_gpio_switch "sim_card_select" "SIM card select" "423" "0" > + ;; > zte,mf286d|\ > zte,mf289f) > ucidef_add_gpio_switch "power_btn_block" "Power button blocker" "421" "0" > diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh > index 2012213a56..988921fa8c 100644 > --- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh > +++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh > @@ -119,7 +119,8 @@ platform_do_upgrade() { > netgear,wac510 |\ > p2w,r619ac-64m |\ > p2w,r619ac-128m |\ > - qxwlan,e2600ac-c2) > + qxwlan,e2600ac-c2 |\ > + wallys,dr40x9) > nand_do_upgrade "$1" > ;; > glinet,gl-b2200) > diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq40x9-dr40x9.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq40x9-dr40x9.dts > new file mode 100644 > index 0000000000..e71f783387 > --- /dev/null > +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq40x9-dr40x9.dts > @@ -0,0 +1,425 @@ > +// 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/soc/qcom,tcsr.h> > + > +/ { > + model = "Wallystech DR40X9"; > + compatible = "wallys,dr40x9"; > + > + aliases { > + ethernet1 = &swport5; > + }; You can remove this as MAC is passed as NVMEM cell. > + > + chosen { > + bootargs-append = " ubi.mtd=ubi root=/dev/ubiblock0_1"; > + }; > + > + soc { > + rng@22000 { > + status = "okay"; > + }; > + > + mdio@90000 { > + status = "okay"; > + > + pinctrl-0 = <&mdio_pins>; > + pinctrl-names = "default"; > + reset-gpios = <&tlmm 41 GPIO_ACTIVE_LOW>; > + reset-delay-us = <2000>; > + }; Please use the existing label for RNG and MDIO instead of putting them in soc. > + > + counter@4a1000 { > + compatible = "qcom,qca-gcnt"; > + reg = <0x4a1000 0x4>; > + }; > + > + tcsr@1949000 { > + compatible = "qcom,tcsr"; > + reg = <0x1949000 0x100>; > + qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>; > + }; > + > + tcsr@194b000 { > + status = "okay"; > + > + /* select hostmode */ > + 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>; > + }; > + > + usb2: usb2@60f8800 { > + status = "okay"; > + }; > + > + usb3: usb3@8af8800 { > + status = "okay"; > + }; > + > + crypto@8e3a000 { > + status = "okay"; > + }; > + > + watchdog@b017000 { > + status = "okay"; > + }; Please use the existing labels for crypto, WDT, and USB nodes instead of putting them in soc. Regards, Robert > + }; > + > + keys { > + compatible = "gpio-keys"; > + > + reset { > + label = "reset"; > + gpios = <&tlmm 18 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_RESTART>; > + }; > + }; > + > + leds { > + compatible = "gpio-leds"; > + > + wlan2g { > + label = "dr4029:green:wlan2g"; > + gpios = <&tlmm 32 GPIO_ACTIVE_LOW>; > + linux,default-trigger = "phy0tpt"; > + }; > + > + wlan5g { > + label = "dr4029:green:wlan5g"; > + gpios = <&tlmm 50 GPIO_ACTIVE_LOW>; > + linux,default-trigger = "phy1tpt"; > + }; > + > + wlan2g-strength { > + label = "dr4029:green:wlan2g-strength"; > + gpios = <&tlmm 36 GPIO_ACTIVE_LOW>; > + }; > + > + wlan5g-strength { > + label = "dr4029:green:wlan5g-strength"; > + gpios = <&tlmm 39 GPIO_ACTIVE_LOW>; > + }; > + }; > +}; > + > +&tlmm { > + mdio_pins: mdio_pinmux { > + mux_1 { > + pins = "gpio6"; > + function = "mdio"; > + bias-pull-up; > + }; > + mux_2 { > + pins = "gpio7"; > + function = "mdc"; > + bias-pull-up; > + }; > + }; > + > + serial0_pins: serial0_pinmux { > + mux { > + pins = "gpio16", "gpio17"; > + function = "blsp_uart0"; > + bias-disable; > + }; > + }; > + > + serial1_pins: serial1_pinmux { > + mux { > + pins = "gpio8", "gpio9"; > + function = "blsp_uart1"; > + bias-disable; > + }; > + }; > + > + spi_0_pins: spi_0_pinmux { > + pinmux { > + function = "blsp_spi0"; > + pins = "gpio13", "gpio14", "gpio15"; > + drive-strength = <12>; > + bias-disable; > + }; > + pinmux_cs { > + function = "gpio"; > + pins = "gpio12"; > + drive-strength = <2>; > + bias-disable; > + output-high; > + }; > + }; > + > + nand_pins: nand_pins { > + pullups { > + pins = "gpio52", "gpio53", "gpio58", "gpio59"; > + function = "qpic"; > + bias-pull-up; > + }; > + > + pulldowns { > + pins = "gpio54", "gpio55", "gpio56", "gpio57", > + "gpio60", "gpio62", "gpio63", "gpio64", > + "gpio65", "gpio66", "gpio67", "gpio68", > + "gpio69"; > + function = "qpic"; > + bias-pull-down; > + }; > + }; > + > + sd_pins: sd_pins { > + pinmux { > + function = "sdio"; > + pins = "gpio23", "gpio24", "gpio25", "gpio26", > + "gpio28", "gpio29", "gpio30", "gpio31"; > + drive-strength = <10>; > + }; > + pinmux_sd_clk { > + function = "sdio"; > + pins = "gpio27"; > + drive-strength = <16>; > + }; > + pinmux_sd7 { > + function = "sdio"; > + pins = "gpio32"; > + drive-strength = <10>; > + bias-disable; > + }; > + }; > +}; > + > +&blsp_dma { > + status = "okay"; > +}; > + > +&blsp1_spi1 { > + status = "okay"; > + > + pinctrl-0 = <&spi_0_pins>; > + pinctrl-names = "default"; > + > + cs-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>; > + > + flash@0 { > + compatible = "jedec,spi-nor"; > + spi-max-frequency = <24000000>; > + reg = <0>; > + > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + partition0@0 { > + label = "0:SBL1"; > + reg = <0x00000000 0x00040000>; > + read-only; > + }; > + > + partition1@40000 { > + label = "0:MIBIB"; > + reg = <0x00040000 0x00020000>; > + read-only; > + }; > + > + partition2@60000 { > + label = "0:QSEE"; > + reg = <0x00060000 0x00060000>; > + read-only; > + }; > + > + partition3@c0000 { > + label = "0:CDT"; > + reg = <0x000c0000 0x00010000>; > + read-only; > + }; > + > + partition4@d0000 { > + label = "0:DDRPARAMS"; > + reg = <0x000d0000 0x00010000>; > + read-only; > + }; > + > + partition5@e0000 { > + label = "0:APPSBLENV"; /* uboot env */ > + reg = <0x000e0000 0x00010000>; > + read-only; > + }; > + > + partition6@f0000 { > + label = "0:APPSBL"; /* uboot */ > + reg = <0x000f0000 0x00080000>; > + read-only; > + }; > + > + partition7@170000 { > + label = "0:ART"; > + reg = <0x00170000 0x00010000>; > + read-only; > + compatible = "nvmem-cells"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + precal_art_1000: precal@1000 { > + reg = <0x1000 0x2f20>; > + }; > + > + precal_art_5000: precal@5000 { > + reg = <0x5000 0x2f20>; > + }; > + > + macaddr_art_0: mac-address@0 { > + reg = <0x0 0x6>; > + }; > + > + macaddr_art_6: mac-address@6 { > + reg = <0x6 0x6>; > + }; > + > + macaddr_art_1006: mac-address@1006 { > + reg = <0x1006 0x6>; > + }; > + > + macaddr_art_5006: mac-address@5006 { > + reg = <0x5006 0x6>; > + }; > + > + }; > + > + partition8@180000 { > + label = "0:CONFIG"; > + reg = <0x00180000 0x00010000>; > + read-only; > + }; > + }; > + }; > +}; > + > +&qpic_bam { > + status = "okay"; > +}; > + > +&nand { > + status = "okay"; > + > + pinctrl-0 = <&nand_pins>; > + pinctrl-names = "default"; > + > + nand@0 { > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + partition@0 { > + label = "ubi"; > + reg = <0x00000000 0x04000000>; > + }; > + }; > + }; > +}; > + > +&blsp1_uart1 { > + status = "okay"; > + > + pinctrl-0 = <&serial0_pins>; > + pinctrl-names = "default"; > +}; > + > +&blsp1_uart2 { > + status = "okay"; > + > + pinctrl-0 = <&serial1_pins>; > + pinctrl-names = "default"; > +}; > + > +&cryptobam { > + num-channels = <4>; > + qcom,num-ees = <2>; > + > + status = "okay"; > +}; > + > +&pcie0 { > + status = "okay"; > + > + perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>; > + wake-gpio = <&tlmm 40 GPIO_ACTIVE_LOW>; > + > + /* Unpolulated slot */ > + bridge@0,0 { > + reg = <0x00000000 0 0 0 0>; > + #address-cells = <3>; > + #size-cells = <2>; > + ranges; > + }; > +}; > + > +&vqmmc { > + status = "okay"; > +}; > + > +&sdhci { > + pinctrl-0 = <&sd_pins>; > + pinctrl-names = "default"; > + cd-gpios = <&tlmm 22 GPIO_ACTIVE_LOW>; > + vqmmc-supply = <&vqmmc>; > + status = "okay"; > +}; > + > +&gmac { > + status = "okay"; > +}; > +&switch { > + status = "okay"; > +}; > +&swport4 { > + status = "okay"; > + label = "wan"; > + nvmem-cells = <&macaddr_art_0>; > + nvmem-cell-names = "mac-address"; > +}; > +&swport5 { > + status = "okay"; > + label = "lan"; > + nvmem-cells = <&macaddr_art_6>; > + nvmem-cell-names = "mac-address"; > +}; > +&wifi0 { > + status = "okay"; > + nvmem-cells = <&precal_art_1000>, <&macaddr_art_1006>; > + nvmem-cell-names = "pre-calibration", "mac-address"; > + qcom,ath10k-calibration-variant = "Wallys-DR40X9"; > +}; > + > +&wifi1 { > + status = "okay"; > + nvmem-cell-names = "pre-calibration", "mac-address"; > + nvmem-cells = <&precal_art_5000>, <&macaddr_art_5006>; > + qcom,ath10k-calibration-variant = "Wallys-DR40X9"; > +}; > + > +&usb3_ss_phy { > + status = "okay"; > +}; > + > +&usb3_hs_phy { > + status = "okay"; > +}; > + > +&usb2_hs_phy { > + status = "okay"; > +}; > diff --git a/target/linux/ipq40xx/image/generic.mk b/target/linux/ipq40xx/image/generic.mk > index a0ad63cfce..159a2dadbc 100644 > --- a/target/linux/ipq40xx/image/generic.mk > +++ b/target/linux/ipq40xx/image/generic.mk > @@ -1120,6 +1120,19 @@ endef > # Missing DSA Setup > #TARGET_DEVICES += unielec_u4019-32m > > +define Device/wallys_dr40x9 > + $(call Device/FitImage) > + $(call Device/UbiFit) > + DEVICE_VENDOR := Wallys > + DEVICE_MODEL := DR40X9 > + SOC := qcom-ipq40x9 > + DEVICE_DTS_CONFIG := config@ap.dk07.1-c1 > + BLOCKSIZE := 128k > + PAGESIZE := 2048 > + DEVICE_PACKAGES := ipq-wifi-wallys_dr40x9 > +endef > +TARGET_DEVICES += wallys_dr40x9 > + > define Device/zte_mf18a > $(call Device/FitImage) > DEVICE_VENDOR := ZTE > -- > 2.34.1 > > > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index 8e7fc4da39..6feac277b3 100644 --- a/package/firmware/ipq-wifi/Makefile +++ b/package/firmware/ipq-wifi/Makefile @@ -47,6 +47,7 @@ ALLWIFIBOARDS:= \ redmi_ax6 \ sony_ncp-hg100-cellular \ teltonika_rutx \ + wallys_dr40x9 \ xiaomi_ax3600 \ xiaomi_ax9000 \ zte_mf18a \ @@ -147,6 +148,7 @@ $(eval $(call generate-ipq-wifi-package,qxwlan_e2600ac-c2,Qxwlan E2600AC C2)) $(eval $(call generate-ipq-wifi-package,redmi_ax6,Redmi AX6)) $(eval $(call generate-ipq-wifi-package,sony_ncp-hg100-cellular,Sony NCP-HG100/Cellular)) $(eval $(call generate-ipq-wifi-package,teltonika_rutx,Teltonika RUTX)) +$(eval $(call generate-ipq-wifi-package,wallys_dr40x9,Wallys DR40X9)) $(eval $(call generate-ipq-wifi-package,xiaomi_ax3600,Xiaomi AX3600)) $(eval $(call generate-ipq-wifi-package,xiaomi_ax9000,Xiaomi AX9000)) $(eval $(call generate-ipq-wifi-package,zte_mf18a,ZTE MF18A)) diff --git a/package/firmware/ipq-wifi/board-wallys_dr40x9.qca4019 b/package/firmware/ipq-wifi/board-wallys_dr40x9.qca4019 new file mode 100644 index 0000000000000000000000000000000000000000..f23ecdfabbb90dc8d293676c4449a5fa9e90e721 GIT binary patch literal 24316 zcmeHPdr(tX8b1jj%4*?;fV{kf@JeV1A*2{2@{BY<3KkU!un1I<q(pfb9)>R1@j)RX z0<|DS&^joOrihHi2gGV^?Tj+*&i=8pf3%%_bZ6FG+tKc{GrNm>?hSzi5={iA0qz&h zIp6v2`Of*yFDJ>p_x!kTCdP-x?-Ye|QbQBc<1>UnE|&u+C1F?&Kr~E+ii)iT#f7Xw zxis{xVrglpbnjLUUMoCUP`($dayhKZf^uoWfkRt&7nGFLRD=pMc$};#ISKmHU|+N_ zk%&YBc6Ah9Cf09AFU;}*aB_5k3IJ39UWvdp(;1UV$GQR_A|m3aCr?NM>KgFNUrxp9 zlO62fCFS;9zZTs{;29KnY`Qkx>f+qi`nof�%|#kfeL*k6<zC_1QA^<s+W$1Zqxr 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 MeyM*opWpxg0S16$b^rhX literal 0 HcmV?d00001 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 3625938e38..37b9ca268b 100644 --- a/target/linux/ipq40xx/base-files/etc/board.d/02_network +++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network @@ -39,6 +39,7 @@ ipq40xx_setup_interfaces() mikrotik,cap-ac|\ netgear,wac510|\ sony,ncp-hg100-cellular|\ + wallys,dr40x9|\ zte,mf18a|\ zte,mf289f) ucidef_set_interfaces_lan_wan "lan" "wan" diff --git a/target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches b/target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches index 4918e2ccc1..f76fe9402d 100644 --- a/target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches +++ b/target/linux/ipq40xx/base-files/etc/board.d/03_gpio_switches @@ -32,6 +32,9 @@ mikrotik,hap-ac3-lte6-kit) sony,ncp-hg100-cellular) ucidef_add_gpio_switch "uart_dbgcon_en" "debug console enable" "427" "1" ;; +wallys,dr40x9) + ucidef_add_gpio_switch "sim_card_select" "SIM card select" "423" "0" + ;; zte,mf286d|\ zte,mf289f) ucidef_add_gpio_switch "power_btn_block" "Power button blocker" "421" "0" diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh index 2012213a56..988921fa8c 100644 --- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh +++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh @@ -119,7 +119,8 @@ platform_do_upgrade() { netgear,wac510 |\ p2w,r619ac-64m |\ p2w,r619ac-128m |\ - qxwlan,e2600ac-c2) + qxwlan,e2600ac-c2 |\ + wallys,dr40x9) nand_do_upgrade "$1" ;; glinet,gl-b2200) diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq40x9-dr40x9.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq40x9-dr40x9.dts new file mode 100644 index 0000000000..e71f783387 --- /dev/null +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq40x9-dr40x9.dts @@ -0,0 +1,425 @@ +// 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/soc/qcom,tcsr.h> + +/ { + model = "Wallystech DR40X9"; + compatible = "wallys,dr40x9"; + + aliases { + ethernet1 = &swport5; + }; + + chosen { + bootargs-append = " ubi.mtd=ubi root=/dev/ubiblock0_1"; + }; + + soc { + rng@22000 { + status = "okay"; + }; + + mdio@90000 { + status = "okay"; + + pinctrl-0 = <&mdio_pins>; + pinctrl-names = "default"; + reset-gpios = <&tlmm 41 GPIO_ACTIVE_LOW>; + reset-delay-us = <2000>; + }; + + counter@4a1000 { + compatible = "qcom,qca-gcnt"; + reg = <0x4a1000 0x4>; + }; + + tcsr@1949000 { + compatible = "qcom,tcsr"; + reg = <0x1949000 0x100>; + qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>; + }; + + tcsr@194b000 { + status = "okay"; + + /* select hostmode */ + 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>; + }; + + usb2: usb2@60f8800 { + status = "okay"; + }; + + usb3: usb3@8af8800 { + status = "okay"; + }; + + crypto@8e3a000 { + status = "okay"; + }; + + watchdog@b017000 { + status = "okay"; + }; + }; + + keys { + compatible = "gpio-keys"; + + reset { + label = "reset"; + gpios = <&tlmm 18 GPIO_ACTIVE_LOW>; + linux,code = <KEY_RESTART>; + }; + }; + + leds { + compatible = "gpio-leds"; + + wlan2g { + label = "dr4029:green:wlan2g"; + gpios = <&tlmm 32 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy0tpt"; + }; + + wlan5g { + label = "dr4029:green:wlan5g"; + gpios = <&tlmm 50 GPIO_ACTIVE_LOW>; + linux,default-trigger = "phy1tpt"; + }; + + wlan2g-strength { + label = "dr4029:green:wlan2g-strength"; + gpios = <&tlmm 36 GPIO_ACTIVE_LOW>; + }; + + wlan5g-strength { + label = "dr4029:green:wlan5g-strength"; + gpios = <&tlmm 39 GPIO_ACTIVE_LOW>; + }; + }; +}; + +&tlmm { + mdio_pins: mdio_pinmux { + mux_1 { + pins = "gpio6"; + function = "mdio"; + bias-pull-up; + }; + mux_2 { + pins = "gpio7"; + function = "mdc"; + bias-pull-up; + }; + }; + + serial0_pins: serial0_pinmux { + mux { + pins = "gpio16", "gpio17"; + function = "blsp_uart0"; + bias-disable; + }; + }; + + serial1_pins: serial1_pinmux { + mux { + pins = "gpio8", "gpio9"; + function = "blsp_uart1"; + bias-disable; + }; + }; + + spi_0_pins: spi_0_pinmux { + pinmux { + function = "blsp_spi0"; + pins = "gpio13", "gpio14", "gpio15"; + drive-strength = <12>; + bias-disable; + }; + pinmux_cs { + function = "gpio"; + pins = "gpio12"; + drive-strength = <2>; + bias-disable; + output-high; + }; + }; + + nand_pins: nand_pins { + pullups { + pins = "gpio52", "gpio53", "gpio58", "gpio59"; + function = "qpic"; + bias-pull-up; + }; + + pulldowns { + pins = "gpio54", "gpio55", "gpio56", "gpio57", + "gpio60", "gpio62", "gpio63", "gpio64", + "gpio65", "gpio66", "gpio67", "gpio68", + "gpio69"; + function = "qpic"; + bias-pull-down; + }; + }; + + sd_pins: sd_pins { + pinmux { + function = "sdio"; + pins = "gpio23", "gpio24", "gpio25", "gpio26", + "gpio28", "gpio29", "gpio30", "gpio31"; + drive-strength = <10>; + }; + pinmux_sd_clk { + function = "sdio"; + pins = "gpio27"; + drive-strength = <16>; + }; + pinmux_sd7 { + function = "sdio"; + pins = "gpio32"; + drive-strength = <10>; + bias-disable; + }; + }; +}; + +&blsp_dma { + status = "okay"; +}; + +&blsp1_spi1 { + status = "okay"; + + pinctrl-0 = <&spi_0_pins>; + pinctrl-names = "default"; + + cs-gpios = <&tlmm 12 GPIO_ACTIVE_HIGH>; + + flash@0 { + compatible = "jedec,spi-nor"; + spi-max-frequency = <24000000>; + reg = <0>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition0@0 { + label = "0:SBL1"; + reg = <0x00000000 0x00040000>; + read-only; + }; + + partition1@40000 { + label = "0:MIBIB"; + reg = <0x00040000 0x00020000>; + read-only; + }; + + partition2@60000 { + label = "0:QSEE"; + reg = <0x00060000 0x00060000>; + read-only; + }; + + partition3@c0000 { + label = "0:CDT"; + reg = <0x000c0000 0x00010000>; + read-only; + }; + + partition4@d0000 { + label = "0:DDRPARAMS"; + reg = <0x000d0000 0x00010000>; + read-only; + }; + + partition5@e0000 { + label = "0:APPSBLENV"; /* uboot env */ + reg = <0x000e0000 0x00010000>; + read-only; + }; + + partition6@f0000 { + label = "0:APPSBL"; /* uboot */ + reg = <0x000f0000 0x00080000>; + read-only; + }; + + partition7@170000 { + label = "0:ART"; + reg = <0x00170000 0x00010000>; + read-only; + compatible = "nvmem-cells"; + #address-cells = <1>; + #size-cells = <1>; + + precal_art_1000: precal@1000 { + reg = <0x1000 0x2f20>; + }; + + precal_art_5000: precal@5000 { + reg = <0x5000 0x2f20>; + }; + + macaddr_art_0: mac-address@0 { + reg = <0x0 0x6>; + }; + + macaddr_art_6: mac-address@6 { + reg = <0x6 0x6>; + }; + + macaddr_art_1006: mac-address@1006 { + reg = <0x1006 0x6>; + }; + + macaddr_art_5006: mac-address@5006 { + reg = <0x5006 0x6>; + }; + + }; + + partition8@180000 { + label = "0:CONFIG"; + reg = <0x00180000 0x00010000>; + read-only; + }; + }; + }; +}; + +&qpic_bam { + status = "okay"; +}; + +&nand { + status = "okay"; + + pinctrl-0 = <&nand_pins>; + pinctrl-names = "default"; + + nand@0 { + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "ubi"; + reg = <0x00000000 0x04000000>; + }; + }; + }; +}; + +&blsp1_uart1 { + status = "okay"; + + pinctrl-0 = <&serial0_pins>; + pinctrl-names = "default"; +}; + +&blsp1_uart2 { + status = "okay"; + + pinctrl-0 = <&serial1_pins>; + pinctrl-names = "default"; +}; + +&cryptobam { + num-channels = <4>; + qcom,num-ees = <2>; + + status = "okay"; +}; + +&pcie0 { + status = "okay"; + + perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>; + wake-gpio = <&tlmm 40 GPIO_ACTIVE_LOW>; + + /* Unpolulated slot */ + bridge@0,0 { + reg = <0x00000000 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + }; +}; + +&vqmmc { + status = "okay"; +}; + +&sdhci { + pinctrl-0 = <&sd_pins>; + pinctrl-names = "default"; + cd-gpios = <&tlmm 22 GPIO_ACTIVE_LOW>; + vqmmc-supply = <&vqmmc>; + status = "okay"; +}; + +&gmac { + status = "okay"; +}; +&switch { + status = "okay"; +}; +&swport4 { + status = "okay"; + label = "wan"; + nvmem-cells = <&macaddr_art_0>; + nvmem-cell-names = "mac-address"; +}; +&swport5 { + status = "okay"; + label = "lan"; + nvmem-cells = <&macaddr_art_6>; + nvmem-cell-names = "mac-address"; +}; +&wifi0 { + status = "okay"; + nvmem-cells = <&precal_art_1000>, <&macaddr_art_1006>; + nvmem-cell-names = "pre-calibration", "mac-address"; + qcom,ath10k-calibration-variant = "Wallys-DR40X9"; +}; + +&wifi1 { + status = "okay"; + nvmem-cell-names = "pre-calibration", "mac-address"; + nvmem-cells = <&precal_art_5000>, <&macaddr_art_5006>; + qcom,ath10k-calibration-variant = "Wallys-DR40X9"; +}; + +&usb3_ss_phy { + status = "okay"; +}; + +&usb3_hs_phy { + status = "okay"; +}; + +&usb2_hs_phy { + status = "okay"; +}; diff --git a/target/linux/ipq40xx/image/generic.mk b/target/linux/ipq40xx/image/generic.mk index a0ad63cfce..159a2dadbc 100644 --- a/target/linux/ipq40xx/image/generic.mk +++ b/target/linux/ipq40xx/image/generic.mk @@ -1120,6 +1120,19 @@ endef # Missing DSA Setup #TARGET_DEVICES += unielec_u4019-32m +define Device/wallys_dr40x9 + $(call Device/FitImage) + $(call Device/UbiFit) + DEVICE_VENDOR := Wallys + DEVICE_MODEL := DR40X9 + SOC := qcom-ipq40x9 + DEVICE_DTS_CONFIG := config@ap.dk07.1-c1 + BLOCKSIZE := 128k + PAGESIZE := 2048 + DEVICE_PACKAGES := ipq-wifi-wallys_dr40x9 +endef +TARGET_DEVICES += wallys_dr40x9 + define Device/zte_mf18a $(call Device/FitImage) DEVICE_VENDOR := ZTE