mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-25 08:02:32 +00:00
qualcommax: ipq60xx: add support for Cambium Networks XE3-4
Cambium Networks XE3-4 is a tri-radio Wi-Fi 6/6E 4×4/2×2 AP. Hardware: Model: Cambium Networks XE3-4 CPU: IPQ6010/AP-CP01-C3, SoC Version: 1.0 @ 800 MHz Memory: 1 GiB Flash: 512 MiB Macronix MX30UF2G18AC + W25Q128FW Ethernet: 1x 1 GbE (QCA8072) 1x 2.5 GbE (QCA8081) Buttons: 1x Reset Serial: TX, RX, GND Baudrate: 115200 Radios: Qualcomm Atheros IPQ6018 802.11ax - 2x2 - 2GHz Qualcomm Atheros IPQ6018 802.11ax - 2x2 - 5GHz Qualcomm Atheros QCN9074 802.11ax - 4x4 - 5GHz or 6GHz BLE 4.1 Power: 32.0W 802.3bt5 PoE++ 25.5W 802.3at with USB, BT disabled Size: 215mm x 215mm Ports: 1x USB 2.0 Antenna: 6 GHz: 6.29 dBi, Omni 30 dBm 5 GHz: 6.12 dBi, Omni 31 dBm 2.4 GHz: 4.85 dBi, Omni 29 dBm LEDs: Multi-color status LEDs Mounting: Wall, ceiling or T-bar Installation: Serial connection 1. Open the AP to get access to the board. Connect RX, TX and GND. 2. Power on the AP, and short the CS pin of the SPI flash with one of the APs GND pins. 3. Transfer the initramfs image with TFTP (Default server IP is 192.168.0.120) # tftpboot factory.ubi 4. Flash the rootfs partition # flash rootfs 5. Reboot the AP # reset Signed-off-by: Kristian Skramstad <kristian+github@83.no> Link: https://github.com/openwrt/openwrt/pull/15633 Signed-off-by: Robert Marko <robimarko@gmail.com>
This commit is contained in:
parent
3ac9c4a289
commit
d62648d58c
@ -9,7 +9,8 @@ board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
8devices,mango-dvk|\
|
||||
8devices,mango-dvk-sfp)
|
||||
8devices,mango-dvk-sfp|\
|
||||
cambiumnetworks,xe3-4)
|
||||
idx="$(find_mtd_index 0:APPSBLENV)"
|
||||
[ -n "$idx" ] && \
|
||||
ubootenv_add_uci_config "/dev/mtd$idx" "0x0" "0x10000" "0x10000"
|
||||
|
@ -31,6 +31,7 @@ ALLWIFIBOARDS:= \
|
||||
arcadyan_aw1000 \
|
||||
asus_rt-ax89x \
|
||||
buffalo_wxr-5950ax12 \
|
||||
cambiumnetworks_xe34 \
|
||||
cmcc_rm2-6 \
|
||||
compex_wpq873 \
|
||||
dynalink_dl-wrx36 \
|
||||
@ -155,6 +156,7 @@ $(eval $(call generate-ipq-wifi-package,8devices_mango,8devices Mango))
|
||||
$(eval $(call generate-ipq-wifi-package,arcadyan_aw1000,Arcadyan AW1000))
|
||||
$(eval $(call generate-ipq-wifi-package,asus_rt-ax89x,Asus RT-AX89X))
|
||||
$(eval $(call generate-ipq-wifi-package,buffalo_wxr-5950ax12,Buffalo WXR-5950AX12))
|
||||
$(eval $(call generate-ipq-wifi-package,cambiumnetworks_xe34,Cambium Networks XE3-4))
|
||||
$(eval $(call generate-ipq-wifi-package,cmcc_rm2-6,CMCC RM2-6))
|
||||
$(eval $(call generate-ipq-wifi-package,compex_wpq873,Compex WPQ-873))
|
||||
$(eval $(call generate-ipq-wifi-package,dynalink_dl-wrx36,Dynalink DL-WRX36))
|
||||
|
@ -0,0 +1,454 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0+)
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "ipq6018.dtsi"
|
||||
#include "ipq6018-fixed-smps.dtsi"
|
||||
#include "ipq6018-ess.dtsi"
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
|
||||
/ {
|
||||
/* Qualcomm Technologies, Inc. IPQ6018/AP-CP01-C3 */
|
||||
model = "Cambium Networks XE3-4";
|
||||
compatible = "cambiumnetworks,xe3-4", "qcom,ipq6018-cp01", "qcom,ipq6018";
|
||||
|
||||
aliases {
|
||||
serial0 = &blsp1_uart3;
|
||||
sdhc2 = &sdhc_1;
|
||||
ethernet0 = &dp5;
|
||||
ethernet1 = &dp4;
|
||||
label-mac-device = &dp5;
|
||||
|
||||
led-boot = &led_status_amber;
|
||||
led-failsafe = &led_status_amber;
|
||||
led-running = &led_status_white;
|
||||
led-upgrade = &led_status_amber;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
bootargs-append = " root=/dev/ubiblock0_1";
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&tlmm 19 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-0 = <&led_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
led_status_white: status-white {
|
||||
color = <LED_COLOR_ID_WHITE>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpio = <&tlmm 56 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led_status_amber: status-amber {
|
||||
color = <LED_COLOR_ID_AMBER>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpio = <&tlmm 35 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
reg_sd_vmmc: regulator-sdcard-vmmc {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "sdcard-vmmc";
|
||||
regulator-min-microvolt = <2950000>;
|
||||
regulator-max-microvolt = <2950000>;
|
||||
|
||||
startup-delay-us = <200>;
|
||||
|
||||
gpio = <&tlmm 66 GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sd_vmmc_en_default>;
|
||||
};
|
||||
};
|
||||
|
||||
&blsp1_uart3 {
|
||||
pinctrl-0 = <&serial_3_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&blsp1_i2c3 {
|
||||
pinctrl-0 = <&i2c_1_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tlmm {
|
||||
/* TZ has exclusive control over GPIO20 */
|
||||
gpio-reserved-ranges = <20 1>;
|
||||
|
||||
mdio_pins: mdio-pins {
|
||||
mdc {
|
||||
pins = "gpio64";
|
||||
function = "mdc";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
mdio {
|
||||
pins = "gpio65";
|
||||
function = "mdio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
i2c_1_pins: i2c-1-state {
|
||||
pins = "gpio42", "gpio43";
|
||||
function = "blsp2_i2c";
|
||||
drive-strength = <8>;
|
||||
};
|
||||
|
||||
spi_0_pins: spi-0-state {
|
||||
pins = "gpio38", "gpio39", "gpio40", "gpio41";
|
||||
function = "blsp0_spi";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
led_pins: led_pins {
|
||||
leds {
|
||||
pins = "gpio35", "gpio37", "gpio50";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
sd_vmmc_en_default: sd-vmmc-en-default-state {
|
||||
pins = "gpio66";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
sd_pins: sd-state {
|
||||
pins = "gpio62";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
&pcie_phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
status = "okay";
|
||||
perst-gpio = <&tlmm 60 GPIO_ACTIVE_LOW>;
|
||||
|
||||
bridge@0,0 {
|
||||
reg = <0x00000000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
wifi@1,0 {
|
||||
status = "okay";
|
||||
|
||||
/* ath11k has no DT compatible for PCI cards */
|
||||
compatible = "pci17cb,1104";
|
||||
reg = <0x00010000 0 0 0 0>;
|
||||
|
||||
qcom,ath11k-fw-memory-mode = <0>;
|
||||
qcom,ath11k-calibration-variant = "CambiumNetworks-XE34";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&sdhc_1 {
|
||||
pinctrl-0 = <&sd_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
cd-gpios = <&tlmm 62 GPIO_ACTIVE_LOW>;
|
||||
vqmmc-supply = <®_sd_vmmc>;
|
||||
bus-width = <4>;
|
||||
};
|
||||
|
||||
&edma {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&switch {
|
||||
status = "okay";
|
||||
|
||||
switch_lan_bmp = <(ESS_PORT4 | ESS_PORT5)>;
|
||||
switch_mac_mode = <MAC_MODE_PSGMII>;
|
||||
switch_mac_mode2 = <MAC_MODE_SGMII_PLUS>;
|
||||
|
||||
qcom,port_phyinfo {
|
||||
port@4 {
|
||||
port_id = <4>;
|
||||
phy_address = <3>;
|
||||
};
|
||||
|
||||
port@5 {
|
||||
port_id = <5>;
|
||||
phy_address = <24>;
|
||||
port_mac_sel = "QGMAC_PORT";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&mdio {
|
||||
status = "okay";
|
||||
pinctrl-0 = <&mdio_pins>;
|
||||
pinctrl-names = "default";
|
||||
reset-gpios = <&tlmm 75 GPIO_ACTIVE_LOW>;
|
||||
reset-delay-us = <10000>;
|
||||
reset-post-delay-us = <50000>;
|
||||
|
||||
ethernet-phy-package@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "qcom,qca8075-package";
|
||||
reg = <0>;
|
||||
|
||||
qcom,package-mode = "psgmii";
|
||||
|
||||
qca8072: ethernet-phy@3 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <3>;
|
||||
};
|
||||
};
|
||||
|
||||
qca8081: ethernet-phy@24 {
|
||||
compatible = "ethernet-phy-id004d.d101";
|
||||
reg = <24>;
|
||||
reset-gpios = <&tlmm 77 GPIO_ACTIVE_LOW>;
|
||||
reset-assert-us = <10000>;
|
||||
reset-deassert-us = <50000>;
|
||||
};
|
||||
};
|
||||
|
||||
&dp4 {
|
||||
status = "okay";
|
||||
|
||||
phy-handle = <&qca8072>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
nvmem-cells = <ð1addr 0>;
|
||||
label = "lan2";
|
||||
};
|
||||
|
||||
&dp5 {
|
||||
status = "okay";
|
||||
|
||||
phy-mode = "sgmii";
|
||||
phy-handle = <&qca8081>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
nvmem-cells = <ðaddr 0>;
|
||||
label = "lan1";
|
||||
};
|
||||
|
||||
&blsp1_spi1 {
|
||||
pinctrl-0 = <&spi_0_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0>;
|
||||
/*
|
||||
* U-boot looks for "n25q128a11" node,
|
||||
* if we don't have it, it will spit out the following warning:
|
||||
* "ipq: fdt fixup unable to find compatible node".
|
||||
*/
|
||||
linux,modalias = "m25p80", "mx30uf2g18ac", "n25q128a11";
|
||||
compatible = "micron,n25q128a11", "jedec,spi-nor";
|
||||
spi-max-frequency = <50000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "0:SBL1";
|
||||
reg = <0x0 0xc0000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@c0000 {
|
||||
label = "0:MIBIB";
|
||||
reg = <0xc0000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@d0000 {
|
||||
label = "0:BOOTCONFIG";
|
||||
reg = <0xd0000 0x20000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@f0000 {
|
||||
label = "0:BOOTCONFIG1";
|
||||
reg = <0xf0000 0x20000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@110000 {
|
||||
label = "0:QSEE";
|
||||
reg = <0x110000 0x1a0000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@2b0000 {
|
||||
label = "0:QSEE_1";
|
||||
reg = <0x2b0000 0x1a0000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@450000 {
|
||||
label = "0:DEVCFG";
|
||||
reg = <0x450000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@460000 {
|
||||
label = "mfginfo";
|
||||
reg = <0x460000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@470000 {
|
||||
label = "0:RPM";
|
||||
reg = <0x470000 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@4b0000 {
|
||||
label = "0:RPM_1";
|
||||
reg = <0x4b0000 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@4f0000 {
|
||||
label = "0:CDT";
|
||||
reg = <0x4f0000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@500000 {
|
||||
label = "0:CDT_1";
|
||||
reg = <0x500000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@510000 {
|
||||
compatible = "u-boot,env";
|
||||
label = "0:APPSBLENV";
|
||||
reg = <0x510000 0x10000>;
|
||||
|
||||
ethaddr: ethaddr {
|
||||
#nvmem-cell-cells = <0>;
|
||||
};
|
||||
|
||||
eth1addr: eth1addr {
|
||||
#nvmem-cell-cells = <0>;
|
||||
};
|
||||
|
||||
eth2addr: eth2addr {
|
||||
#nvmem-cell-cells = <0>;
|
||||
};
|
||||
|
||||
eth5addr: eth5addr {
|
||||
#nvmem-cell-cells = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
partition@520000 {
|
||||
label = "0:APPSBL";
|
||||
reg = <0x520000 0xa0000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@5c0000 {
|
||||
label = "0:APPSBL_1";
|
||||
reg = <0x5c0000 0xa0000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@660000 {
|
||||
label = "0:ART";
|
||||
reg = <0x660000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&qpic_bam {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&qpic_nand {
|
||||
status = "okay";
|
||||
|
||||
nand@0 {
|
||||
reg = <0>;
|
||||
|
||||
nand-ecc-strength = <4>;
|
||||
nand-ecc-step-size = <512>;
|
||||
nand-bus-width = <8>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "rootfs";
|
||||
reg = <0x0 0x6000000>;
|
||||
};
|
||||
|
||||
partition@6000000 {
|
||||
label = "rootfs_1";
|
||||
reg = <0x6000000 0x6000000>;
|
||||
};
|
||||
|
||||
partition@c000000 {
|
||||
label = "NVRAM";
|
||||
reg = <0xc000000 0x3000000>;
|
||||
};
|
||||
|
||||
partition@f000000 {
|
||||
label = "crashLog";
|
||||
reg = <0xf000000 0x1000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&wifi {
|
||||
status = "okay";
|
||||
qcom,ath11k-calibration-variant = "CambiumNetworks-XE34";
|
||||
|
||||
nvmem-cell-names = "mac-address";
|
||||
nvmem-cells = <ð2addr>;
|
||||
};
|
||||
|
||||
&qusb_phy_1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2 {
|
||||
status = "okay";
|
||||
};
|
@ -0,0 +1,52 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
/*
|
||||
* Board does not use companion MP5496 PMIC,
|
||||
* but rather uses fixed external SMPS.
|
||||
*/
|
||||
|
||||
&rpm {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&CPU0 {
|
||||
/delete-property/ cpu-supply;
|
||||
};
|
||||
|
||||
&CPU1 {
|
||||
/delete-property/ cpu-supply;
|
||||
};
|
||||
|
||||
&CPU2 {
|
||||
/delete-property/ cpu-supply;
|
||||
};
|
||||
|
||||
&CPU3 {
|
||||
/delete-property/ cpu-supply;
|
||||
};
|
||||
|
||||
&cpu_opp_table {
|
||||
opp-864000000 {
|
||||
opp-microvolt = <1100000>;
|
||||
};
|
||||
|
||||
opp-1056000000 {
|
||||
opp-microvolt = <1100000>;
|
||||
};
|
||||
|
||||
opp-1320000000 {
|
||||
opp-microvolt = <1100000>;
|
||||
};
|
||||
|
||||
opp-1440000000 {
|
||||
opp-microvolt = <1100000>;
|
||||
};
|
||||
|
||||
opp-1608000000 {
|
||||
opp-microvolt = <1100000>;
|
||||
};
|
||||
|
||||
opp-1800000000 {
|
||||
opp-microvolt = <1100000>;
|
||||
};
|
||||
};
|
@ -11,6 +11,19 @@ define Device/8devices_mango-dvk
|
||||
endef
|
||||
TARGET_DEVICES += 8devices_mango-dvk
|
||||
|
||||
define Device/cambiumnetworks_xe3-4
|
||||
$(call Device/FitImage)
|
||||
$(call Device/UbiFit)
|
||||
DEVICE_VENDOR := Cambium Networks
|
||||
DEVICE_MODEL := XE3-4
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
DEVICE_DTS_CONFIG := config@cp01-c3-xv3-4
|
||||
SOC := ipq6010
|
||||
DEVICE_PACKAGES := ipq-wifi-cambiumnetworks_xe34 ath11k-firmware-qcn9074 kmod-ath11k-pci
|
||||
endef
|
||||
TARGET_DEVICES += cambiumnetworks_xe3-4
|
||||
|
||||
define Device/netgear_wax214
|
||||
$(call Device/FitImage)
|
||||
$(call Device/UbiFit)
|
||||
|
@ -14,6 +14,9 @@ ipq60xx_setup_interfaces()
|
||||
8devices,mango-dvk)
|
||||
ucidef_set_interfaces_lan_wan "lan1 lan2" "wan"
|
||||
;;
|
||||
cambiumnetworks,xe3-4)
|
||||
ucidef_set_interface_lan "lan1 lan2" "dhcp"
|
||||
;;
|
||||
netgear,wax214)
|
||||
ucidef_set_interfaces_lan_wan "lan"
|
||||
;;
|
||||
|
@ -12,6 +12,9 @@ case "$FIRMWARE" in
|
||||
8devices,mango-dvk)
|
||||
caldata_extract "0:ART" 0x1000 0x20000
|
||||
;;
|
||||
cambiumnetworks,xe3-4)
|
||||
caldata_extract "0:ART" 0x1000 0x10000
|
||||
;;
|
||||
netgear,wax214)
|
||||
caldata_extract "0:art" 0x1000 0x10000
|
||||
;;
|
||||
@ -20,6 +23,13 @@ case "$FIRMWARE" in
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
"ath11k/QCN9074/hw1.0/cal-pci-0000:01:00.0.bin")
|
||||
case "$board" in
|
||||
cambiumnetworks,xe3-4)
|
||||
caldata_extract "0:ART" 0x26800 0x20000
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
|
@ -33,6 +33,10 @@ EOF
|
||||
|
||||
platform_do_upgrade() {
|
||||
case "$(board_name)" in
|
||||
cambiumnetworks,xe3-4)
|
||||
fw_setenv bootcount 0
|
||||
nand_do_upgrade "$1"
|
||||
;;
|
||||
netgear,wax214)
|
||||
nand_do_upgrade "$1"
|
||||
;;
|
||||
|
Loading…
Reference in New Issue
Block a user