From 7d336070d7b689cf2cffaa1c0eb269d8f310487e Mon Sep 17 00:00:00 2001 From: Yin Ni Date: Wed, 7 Aug 2024 12:27:02 +0800 Subject: [PATCH] ipq50xx: add initial support for GL.iNet B3000 Hardware: * SoC: Qcom IPQ5018 * RAM: DDR3L 512MB * Flash: 128MB Nand * Ethernet: 3x GbE * WLAN: 2x2 2.4GHz 574Mbps + 2x2 5GHz 2402Mbps (builtin + builtin) * LEDS: 1x white, 1x blue * Buttons: 1x reset * Power: 12VDC, 1.5A Installation: * from qsdk to openwifi: upgrade "openwrt-ipq50xx-glinet_b3000-squashfs-nand-factory.bin" via web ui without keep config. * upgrade "openwrt-ipq50xx-glinet_b3000-squashfs-sysupgrade.tar" if you are already in openwifi. Signed-off-by: Yin Ni --- feeds/ipq807x_v5.4/ath11k-wifi/Makefile | 13 + .../ath11k-wifi/board-gl-b3000.bin.IPQ5018 | Bin 0 -> 131072 bytes .../ath11k-wifi/board-gl-b3000.bin.QCN6122 | Bin 0 -> 131072 bytes .../ipq50xx/base-files/etc/board.d/02_network | 7 + .../etc/hotplug.d/firmware/10-ath11k-caldata | 20 +- .../base-files/lib/upgrade/platform.sh | 2 + .../boot/dts/qcom/qcom-ipq5018-gl-b3000.dts | 801 ++++++++++++++++++ feeds/ipq807x_v5.4/ipq50xx/image/ipq50xx.mk | 12 + profiles/gl_b3000.yml | 28 + 9 files changed, 881 insertions(+), 2 deletions(-) create mode 100644 feeds/ipq807x_v5.4/ath11k-wifi/board-gl-b3000.bin.IPQ5018 create mode 100644 feeds/ipq807x_v5.4/ath11k-wifi/board-gl-b3000.bin.QCN6122 create mode 100644 feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-gl-b3000.dts create mode 100644 profiles/gl_b3000.yml diff --git a/feeds/ipq807x_v5.4/ath11k-wifi/Makefile b/feeds/ipq807x_v5.4/ath11k-wifi/Makefile index 96dd2f9b4..5565c32e1 100644 --- a/feeds/ipq807x_v5.4/ath11k-wifi/Makefile +++ b/feeds/ipq807x_v5.4/ath11k-wifi/Makefile @@ -37,6 +37,7 @@ ALLWIFIBOARDS:= \ edgecore-eap101 \ gl-ax1800 \ gl-axt1800 \ + gl-b3000 \ sercomm-wallaby \ edgecore-eap102 \ edgecore-oap102 \ @@ -108,6 +109,11 @@ $(call Package/ath11k-wifi-default) TITLE:=gl-axt1800 bdf endef +define Package/ath11k-wifi-gl-b3000 +$(call Package/ath11k-wifi-default) + TITLE:=gl-b3000 bdf +endef + define Package/ath11k-wifi-motorola-q14 $(call Package/ath11k-wifi-default) TITLE:=motorola q14 bdf @@ -293,6 +299,13 @@ define Package/ath11k-wifi-gl-axt1800/install $(INSTALL_DATA) ./board-gl-axt1800.bin.IPQ6018 $(1)/lib/firmware/ath11k/IPQ6018/hw1.0/board-2.bin endef +define Package/ath11k-wifi-gl-b3000/install + $(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/ + $(INSTALL_DIR) $(1)/lib/firmware/ath11k/qcn6122/hw1.0/ + $(INSTALL_DATA) ./board-gl-b3000.bin.IPQ5018 $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/board.bin + $(INSTALL_DATA) ./board-gl-b3000.bin.QCN6122 $(1)/lib/firmware/ath11k/qcn6122/hw1.0/board.bin +endef + define Package/ath11k-wifi-motorola-q14/install $(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ5018/hw1.0/ $(INSTALL_DIR) $(1)/lib/firmware/ath11k/qcn6122/hw1.0/ diff --git a/feeds/ipq807x_v5.4/ath11k-wifi/board-gl-b3000.bin.IPQ5018 b/feeds/ipq807x_v5.4/ath11k-wifi/board-gl-b3000.bin.IPQ5018 new file mode 100644 index 0000000000000000000000000000000000000000..dfd83eb8af08ed87087232c39f7f8c6c53ad3612 GIT binary patch literal 131072 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 literal 0 HcmV?d00001 diff --git a/feeds/ipq807x_v5.4/ath11k-wifi/board-gl-b3000.bin.QCN6122 b/feeds/ipq807x_v5.4/ath11k-wifi/board-gl-b3000.bin.QCN6122 new file mode 100644 index 0000000000000000000000000000000000000000..36ab4118181fe6841c722a305b6e4ce47fce82b3 GIT binary patch literal 131072 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 /lib/firmware/ath11k-macs } +ath11k_generate_macs_gl_b3000() { + mac=$(cat /proc/gl-hw-info/device_mac) + [ -z "$mac" ] && ath11k_generate_macs || { + touch /lib/firmware/ath11k-macs + mac1=$(macaddr_add $mac 2) + mac2=$(macaddr_add $mac 3) + echo -ne \\x${mac2//:/\\x} >> /lib/firmware/ath11k-macs + echo -ne \\x${mac1//:/\\x} >> /lib/firmware/ath11k-macs + } +} + caldata_die() { echo "caldata: " "$*" exit 1 @@ -125,7 +136,8 @@ ath11k/IPQ5018/hw1.0/caldata.bin) optimcloud,d50-5g|\ udaya,a6-id2|\ wallys,dr5018|\ - yuncore,fap655) + yuncore,fap655|\ + glinet,b3000) caldata_extract "0:ART" 0x1000 0x20000 ;; esac @@ -161,7 +173,8 @@ ath11k/qcn6122/hw1.0/caldata_2.bin) sonicfi,rap630c-311g|\ sonicfi,rap630w-311g|\ cybertan,eww631-a1|\ - cybertan,eww631-b1) + cybertan,eww631-b1|\ + glinet,b3000) caldata_extract "0:ART" 0x26800 0x20000 ;; esac @@ -209,6 +222,9 @@ ath11k-macs) hfcl,ion4xi_w) ath11k_generate_macs_ion4x ;; + glinet,b3000) + ath11k_generate_macs_gl_b3000 + ;; esac ;; *) diff --git a/feeds/ipq807x_v5.4/ipq50xx/base-files/lib/upgrade/platform.sh b/feeds/ipq807x_v5.4/ipq50xx/base-files/lib/upgrade/platform.sh index c9cbfba2d..bd8cce06b 100755 --- a/feeds/ipq807x_v5.4/ipq50xx/base-files/lib/upgrade/platform.sh +++ b/feeds/ipq807x_v5.4/ipq50xx/base-files/lib/upgrade/platform.sh @@ -83,6 +83,7 @@ platform_check_image() { optimcloud,d50|\ optimcloud,d50-5g|\ yuncore,fap655|\ + glinet,b3000|\ udaya,a6-id2|\ edgecore,oap101|\ edgecore,oap101-6e|\ @@ -101,6 +102,7 @@ platform_do_upgrade() { board=$(board_name) case $board in + glinet,b3000|\ edgecore,oap101|\ edgecore,oap101-6e|\ edgecore,oap101e|\ diff --git a/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-gl-b3000.dts b/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-gl-b3000.dts new file mode 100644 index 000000000..b3f0b2c76 --- /dev/null +++ b/feeds/ipq807x_v5.4/ipq50xx/files/arch/arm64/boot/dts/qcom/qcom-ipq5018-gl-b3000.dts @@ -0,0 +1,801 @@ +/dts-v1/; +/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. + * + * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include "ipq5018.dtsi" +#include + +/ { + #address-cells = <0x2>; + #size-cells = <0x2>; + model = "GL.iNet B3000"; + compatible = "glinet,b3000", "qcom,ipq5018-mp03.5", "qcom,ipq5018"; + interrupt-parent = <&intc>; + + aliases { + serial0 = &blsp1_uart1; + ethernet0 = "/soc/dp1"; + ethernet1 = "/soc/dp2"; + led-upgrade = &led_system; + }; + + chosen { + bootargs = "console=ttyMSM0,115200,n8 rw init=/init"; + bootargs-append = " swiotlb=1 coherent_pool=2M"; + stdout-path = "serial0"; + }; + + gl-hw { + compatible = "gl-hw-info"; + model = "b3000"; + radio = "radio0"; + wan = "eth1.1"; + lan = "eth1.2 eth1.3"; + secondwan_vlan_port = "2"; + dfs; + reset-button = "gpio-27"; + flash_size = <128>; + temperature = "/sys/devices/virtual/thermal/thermal_zone0/temp"; + factory_data { + device_mac = "0:ART", "0x6"; + device_ddns = "0:ART", "0x10"; + device_sn_bak = "0:ART", "0x20"; + device_sn = "0:ART", "0x30"; + country_code = "0:ART", "0x88"; + device_cert = "0:ART", "0x50000"; + }; + }; + + reserved-memory { + #ifdef __IPQ_MEM_PROFILE_256_MB__ + /* 256 MB Profile + * +==========+==============+=========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +----------+--------------+-------------------------+ + * | NSS | 0x40000000 | 8MB | + * +----------+--------------+-------------------------+ + * | Linux | 0x40800000 | Depends on total memory | + * +----------+--------------+-------------------------+ + * | uboot | 0x4A600000 | 4MB | + * +----------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +----------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +----------+--------------+-------------------------+ + * | TZ | 0x4AC00000 | 4MB | + * +----------+--------------+-------------------------+ + * | Q6 | | | + * | code/ | 0x4B000000 | 20MB | + * | data | | | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | data | 0x4C400000 | 13MB | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | M3 Dump | 0x4D100000 | 1MB | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | QDSS | 0x4D200000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | data | 0x4D300000 | 13MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | M3 Dump | 0x4E000000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | QDSS | 0x4E100000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | data | 0x4E200000 | 13MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | M3 Dump | 0x4EF00000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | QDSS | 0x4F000000 | 1MB | + * +----------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +===================================================+ + */ + q6_mem_regions: q6_mem_regions@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 0x4100000>; + }; + + q6_code_data: q6_code_data@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 0x1400000>; + }; + + q6_ipq5018_data: q6_ipq5018_data@4C400000 { + no-map; + reg = <0x0 0x4C400000 0x0 0xD00000>; + }; + + m3_dump: m3_dump@4D100000 { + no-map; + reg = <0x0 0x4D100000 0x0 0x100000>; + }; + + q6_etr_region: q6_etr_dump@4D200000 { + no-map; + reg = <0x0 0x4D200000 0x0 0x100000>; + }; + + q6_qcn6122_data1: q6_qcn6122_data1@4D300000 { + no-map; + reg = <0x0 0x4D300000 0x0 0xD00000>; + }; + + m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E000000 { + no-map; + reg = <0x0 0x4E000000 0x0 0x100000>; + }; + + q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E100000 { + no-map; + reg = <0x0 0x4E100000 0x0 0x100000>; + }; + + q6_qcn6122_data2: q6_qcn6122_data2@4E200000 { + no-map; + reg = <0x0 0x4E200000 0x0 0xD00000>; + }; + + m3_dump_qcn6122_2: m3_dump_qcn6122_2@4EF00000 { + no-map; + reg = <0x0 0x4EF00000 0x0 0x100000>; + }; + + q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F000000 { + no-map; + reg = <0x0 0x4F000000 0x0 0x100000>; + }; + #else + /* 512MB/1GB Profiles + * +==========+==============+=========================+ + * | | | | + * | Region | Start Offset | Size | + * | | | | + * +----------+--------------+-------------------------+ + * | NSS | 0x40000000 | 16MB | + * +----------+--------------+-------------------------+ + * | Linux | 0x41000000 | Depends on total memory | + * +----------+--------------+-------------------------+ + * | uboot | 0x4A600000 | 4MB | + * +----------+--------------+-------------------------+ + * | SBL | 0x4AA00000 | 1MB | + * +----------+--------------+-------------------------+ + * | smem | 0x4AB00000 | 1MB | + * +----------+--------------+-------------------------+ + * | TZ | 0x4AC00000 | 4MB | + * +----------+--------------+-------------------------+ + * | Q6 | | | + * | code/ | 0x4B000000 | 20MB | + * | data | | | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | data | 0x4C400000 | 13MB | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | M3 Dump | 0x4D100000 | 1MB | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | QDSS | 0x4D200000 | 1MB | + * +----------+--------------+-------------------------+ + * | IPQ5018 | | | + * | Caldb | 0x4D300000 | 2MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | data | 0x4D500000 | 13MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | M3 Dump | 0x4E200000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | QDSS | 0x4E300000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_1| | | + * | Caldb | 0x4E400000 | 5MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | data | 0x4E900000 | 13MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | M3 Dump | 0x4F600000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | QDSS | 0x4F700000 | 1MB | + * +----------+--------------+-------------------------+ + * | QCN6122_2| | | + * | Caldb | 0x4F800000 | 5MB | + * +----------+--------------+-------------------------+ + * | | + * | Rest of the memory for Linux | + * | | + * +===================================================+ + */ + q6_mem_regions: q6_mem_regions@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 0x4D00000>; + }; + + q6_code_data: q6_code_data@4B000000 { + no-map; + reg = <0x0 0x4B000000 0x0 01400000>; + }; + + q6_ipq5018_data: q6_ipq5018_data@4C400000 { + no-map; + reg = <0x0 0x4C400000 0x0 0xD00000>; + }; + + m3_dump: m3_dump@4D100000 { + no-map; + reg = <0x0 0x4D100000 0x0 0x100000>; + }; + + q6_etr_region: q6_etr_dump@4D200000 { + no-map; + reg = <0x0 0x4D200000 0x0 0x100000>; + }; + + q6_caldb_region: q6_caldb_region@4D300000 { + no-map; + reg = <0x0 0x4D300000 0x0 0x200000>; + }; + + q6_qcn6122_data1: q6_qcn6122_data1@4D500000 { + no-map; + reg = <0x0 0x4D500000 0x0 0xD00000>; + }; + + m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E200000 { + no-map; + reg = <0x0 0x4E200000 0x0 0x100000>; + }; + + q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E300000 { + no-map; + reg = <0x0 0x4E300000 0x0 0x100000>; + }; + + q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E400000 { + no-map; + reg = <0x0 0x4E400000 0x0 0x500000>; + }; + + q6_qcn6122_data2: q6_qcn6122_data2@4E900000 { + no-map; + reg = <0x0 0x4E900000 0x0 0xD00000>; + }; + + m3_dump_qcn6122_2: m3_dump_qcn6122_2@4F600000 { + no-map; + reg = <0x0 0x4F600000 0x0 0x100000>; + }; + + q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F700000 { + no-map; + reg = <0x0 0x4F700000 0x0 0x100000>; + }; + + q6_qcn6122_caldb_2: q6_qcn6122_caldb_2@4F800000 { + no-map; + reg = <0x0 0x4F800000 0x0 0x500000>; + }; + + #endif + }; + + soc { + serial@78af000 { + status = "ok"; + }; + + qpic_bam: dma@7984000{ + status = "ok"; + }; + + nand: qpic-nand@79b0000 { + pinctrl-0 = <&qspi_nand_pins>; + pinctrl-names = "default"; + status = "ok"; + }; + + mdio0: mdio@88000 { + status = "ok"; + + ethernet-phy@0 { + reg = <7>; + }; + }; + + mdio1: mdio@90000 { + status = "ok"; + pinctrl-0 = <&mdio1_pins>; + pinctrl-names = "default"; + phy-reset-gpio = <&tlmm 39 0>; + ethernet-phy@0 { + reg = <0>; + }; + + ethernet-phy@1 { + reg = <1>; + }; + + ethernet-phy@2 { + reg = <2>; + }; + + ethernet-phy@3 { + reg = <3>; + }; + }; + + ess-instance { + num_devices = <0x2>; + ess-switch@0x39c00000 { + compatible = "qcom,ess-switch-ipq50xx"; + device_id = <0>; + switch_mac_mode = <0xf>; /* mac mode for uniphy instance*/ + cmnblk_clk = "internal_96MHz"; /* cmnblk clk*/ + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <7>; + }; + port@1 { + port_id = <2>; + forced-speed = <1000>; + forced-duplex = <1>; + }; + }; + led_source@0 { + source = <0>; + mode = "normal"; + speed = "all"; + blink_en = "enable"; + active = "high"; + }; + }; + ess-switch1@1 { + compatible = "qcom,ess-switch-qca83xx"; + device_id = <1>; + switch_access_mode = "mdio"; + mdio-bus = <&mdio1>; + reset_gpio = <&tlmm 0x27 0>; + switch_cpu_bmp = <0x40>; /* cpu port bitmap */ + switch_lan_bmp = <0xc>; /* lan port bitmap */ + switch_wan_bmp = <0x2>; /* wan port bitmap */ + qca,ar8327-initvals = < + 0x00004 0x7600000 /* PAD0_MODE */ + 0x00008 0x1000000 /* PAD5_MODE */ + 0x0000c 0x80 /* PAD6_MODE */ + 0x00010 0x2613a0 /* PORT6 FORCE MODE*/ + 0x000e4 0xaa545 /* MAC_POWER_SEL */ + 0x000e0 0xc74164de /* SGMII_CTRL */ + 0x0007c 0x4e /* PORT0_STATUS */ + 0x00094 0x4e /* PORT6_STATUS */ + >; + qcom,port_phyinfo { + port@0 { + port_id = <1>; + phy_address = <0>; + }; + port@1 { + port_id = <2>; + phy_address = <1>; + }; + port@2 { + port_id = <3>; + phy_address = <2>; + }; + port@3 { + port_id = <4>; + phy_address = <3>; + }; + }; + }; + }; + + dp1 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC0_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <1>; + reg = <0x39C00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + qcom,link-poll = <1>; + qcom,phy-mdio-addr = <7>; + mdio-bus = <&mdio0>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + qcom,rx-page-mode = <0>; + }; + + dp2 { + device_type = "network"; + compatible = "qcom,nss-dp"; + clocks = <&gcc GCC_SNOC_GMAC1_AXI_CLK>; + clock-names = "nss-snoc-gmac-axi-clk"; + qcom,id = <2>; + reg = <0x39D00000 0x10000>; + interrupts = ; + qcom,mactype = <2>; + local-mac-address = [000000000000]; + phy-mode = "sgmii"; + qcom,rx-page-mode = <0>; + }; + + nss-macsec1 { + compatible = "qcom,nss-macsec"; + phy_addr = <0x1c>; + mdiobus = <&mdio1>; + }; + + }; + + qcom,test@0 { + status = "ok"; + }; + + thermal-zones { + status = "ok"; + }; +}; + +&tlmm { + pinctrl-names = "default"; + + qspi_nand_pins: qspi_nand_pins { + qspi_clock { + pins = "gpio9"; + function = "qspi_clk"; + drive-strength = <8>; + bias-disable; + }; + + qspi_cs { + pins = "gpio8"; + function = "qspi_cs"; + drive-strength = <8>; + bias-disable; + }; + + qspi_data { + pins = "gpio4", "gpio5", "gpio6", "gpio7"; + function = "qspi_data"; + drive-strength = <8>; + bias-disable; + }; + }; + + mdio1_pins: mdio_pinmux { + mux_0 { + pins = "gpio36"; + function = "mdc"; + drive-strength = <8>; + bias-pull-up; + }; + + mux_1 { + pins = "gpio37"; + function = "mdio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + button_pins: button_pins { + reset_button { + pins = "gpio27"; + function = "gpio"; + drive-strength = <8>; + bias-pull-up; + }; + }; + + leds_pins: leds_pins { + led_system { + pins = "gpio24"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + led_white { + pins = "gpio23"; + function = "gpio"; + drive-strength = <8>; + bias-pull-down; + }; + }; +}; + +&soc { + + gpio_keys { + compatible = "gpio-keys"; + pinctrl-0 = <&button_pins>; + pinctrl-names = "default"; + + reset { + label = "reset"; + linux,code = ; + gpios = <&tlmm 27 GPIO_ACTIVE_LOW>; + linux,input-type = <1>; + debounce-interval = <60>; + }; + }; + + leds { + compatible = "gpio-leds"; + pinctrl-0 = <&leds_pins>; + pinctrl-names = "default"; + + led_system: led@24 { + label = "blue_led"; + gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>; + default-state = "on"; + }; + led@23 { + label = "white_led"; + gpios = <&tlmm 23 GPIO_ACTIVE_HIGH>; + default-state = "off"; + }; + }; +}; + +&q6v5_wcss { + compatible = "qcom,ipq5018-q6-mpd"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + firmware = "IPQ5018/q6_fw.mdt"; + reg = <0x0cd00000 0x4040>, + <0x1938000 0x8>, + <0x193d204 0x4>; + reg-names = "qdsp6", + "tcsr-msip", + "tcsr-q6"; + resets = <&gcc GCC_WCSSAON_RESET>, + <&gcc GCC_WCSS_Q6_BCR>; + + reset-names = "wcss_aon_reset", + "wcss_q6_reset"; + + clocks = <&gcc GCC_Q6_AXIS_CLK>, + <&gcc GCC_WCSS_ECAHB_CLK>, + <&gcc GCC_Q6_AXIM_CLK>, + <&gcc GCC_Q6_AXIM2_CLK>, + <&gcc GCC_Q6_AHB_CLK>, + <&gcc GCC_Q6_AHB_S_CLK>, + <&gcc GCC_WCSS_AXI_S_CLK>; + clock-names = "gcc_q6_axis_clk", + "gcc_wcss_ecahb_clk", + "gcc_q6_axim_clk", + "gcc_q6_axim2_clk", + "gcc_q6_ahb_clk", + "gcc_q6_ahb_s_clk", + "gcc_wcss_axi_s_clk"; + + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_mem_regions>, <&q6_etr_region>; + #else + memory-region = <&q6_mem_regions>, <&q6_etr_region>, + <&q6_caldb_region>; + #endif + + qcom,rproc = <&q6v5_wcss>; + qcom,bootargs_smem = <507>; + boot-args = <0x1 0x4 0x3 0x0F 0x0 0x0>, + <0x2 0x4 0x2 0x12 0x0 0x0>; + status = "ok"; + q6_wcss_pd1: remoteproc_pd1@4ab000 { + compatible = "qcom,ipq5018-wcss-ahb-mpd"; + reg = <0x4ab000 0x20>; + reg-names = "rmb"; + firmware = "IPQ5018/q6_fw.mdt"; + m3_firmware = "IPQ5018/m3_fw.mdt"; + interrupts-extended = <&wcss_smp2p_in 8 0>, + <&wcss_smp2p_in 9 0>, + <&wcss_smp2p_in 12 0>, + <&wcss_smp2p_in 11 0>; + interrupt-names = "fatal", + "ready", + "spawn-ack", + "stop-ack"; + + resets = <&gcc GCC_WCSSAON_RESET>, + <&gcc GCC_WCSS_BCR>, + <&gcc GCC_CE_BCR>; + reset-names = "wcss_aon_reset", + "wcss_reset", + "ce_reset"; + + clocks = <&gcc GCC_WCSS_AHB_S_CLK>, + <&gcc GCC_WCSS_ACMT_CLK>, + <&gcc GCC_WCSS_AXI_M_CLK>; + clock-names = "gcc_wcss_ahb_s_clk", + "gcc_wcss_acmt_clk", + "gcc_wcss_axi_m_clk"; + + qcom,halt-regs = <&tcsr_q6_block 0xa000 0xd000 0x0>; + + qcom,smem-states = <&wcss_smp2p_out 8>, + <&wcss_smp2p_out 9>, + <&wcss_smp2p_out 10>; + qcom,smem-state-names = "shutdown", + "stop", + "spawn"; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_ipq5018_data>, <&m3_dump>, + <&q6_etr_region>; + #else + memory-region = <&q6_ipq5018_data>, <&m3_dump>, + <&q6_etr_region>, <&q6_caldb_region>; + #endif + + }; + + q6_wcss_pd2: remoteproc_pd2 { + compatible = "qcom,ipq5018-wcss-pcie-mpd"; + firmware = "IPQ5018/q6_fw.mdt"; + m3_firmware = "qcn6122/m3_fw.mdt"; + interrupts-extended = <&wcss_smp2p_in 16 0>, + <&wcss_smp2p_in 17 0>, + <&wcss_smp2p_in 20 0>, + <&wcss_smp2p_in 19 0>; + interrupt-names = "fatal", + "ready", + "spawn-ack", + "stop-ack"; + + qcom,smem-states = <&wcss_smp2p_out 16>, + <&wcss_smp2p_out 17>, + <&wcss_smp2p_out 18>; + qcom,smem-state-names = "shutdown", + "stop", + "spawn"; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, + <&q6_qcn6122_etr_1>; + #else + memory-region = <&q6_qcn6122_data1>, <&m3_dump_qcn6122_1>, + <&q6_qcn6122_etr_1>, <&q6_qcn6122_caldb_1>; + #endif + + }; + + q6_wcss_pd3: remoteproc_pd3 { + compatible = "qcom,ipq5018-wcss-pcie-mpd"; + firmware = "IPQ5018/q6_fw.mdt"; + m3_firmware = "qcn6122/m3_fw.mdt"; + interrupts-extended = <&wcss_smp2p_in 24 0>, + <&wcss_smp2p_in 25 0>, + <&wcss_smp2p_in 28 0>, + <&wcss_smp2p_in 27 0>; + interrupt-names = "fatal", + "ready", + "spawn-ack", + "stop-ack"; + + qcom,smem-states = <&wcss_smp2p_out 24>, + <&wcss_smp2p_out 25>, + <&wcss_smp2p_out 26>; + qcom,smem-state-names = "shutdown", + "stop", + "spawn"; + #ifdef __IPQ_MEM_PROFILE_256_MB__ + memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>, + <&q6_qcn6122_etr_2>; + #else + memory-region = <&q6_qcn6122_data2>, <&m3_dump_qcn6122_2>, + <&q6_qcn6122_etr_2>, <&q6_qcn6122_caldb_2>; + #endif + }; +}; + +&wifi0 { + /* IPQ5018 */ + qcom,multipd_arch; + qcom,rproc = <&q6_wcss_pd1>; + qcom,userpd-subsys-name = "q6v5_wcss_userpd1"; +#ifdef __IPQ_MEM_PROFILE_256_MB__ + qcom,tgt-mem-mode = <2>; +#else + qcom,tgt-mem-mode = <1>; +#endif + qcom,board_id = <0x23>; +#ifdef __CNSS2__ + qcom,bdf-addr = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0>; + qcom,caldb-addr = <0x4D300000 0x4D300000 0 0 0>; + qcom,caldb-size = <0x200000>; + mem-region = <&q6_ipq5018_data>; +#else + memory-region = <&q6_ipq5018_data>; +#endif + status = "ok"; +}; + +&wifi1 { + /* QCN6122 5G */ + qcom,multipd_arch; + qcom,userpd-subsys-name = "q6v5_wcss_userpd3"; + qcom,rproc = <&q6_wcss_pd3>; +#ifdef __IPQ_MEM_PROFILE_256_MB__ + qcom,tgt-mem-mode = <2>; +#else + qcom,tgt-mem-mode = <1>; +#endif + qcom,board_id = <0x60>; +#ifdef __CNSS2__ + qcom,bdf-addr = <0x4E900000 0x4E900000 0x4E200000 0x0 0x0>; + qcom,caldb-addr = <0x4F800000 0x4F800000 0 0 0>; + qcom,caldb-size = <0x500000>; + mem-region = <&q6_qcn6122_data2>; +#else + memory-region = <&q6_qcn6122_data2>; +#endif + status = "ok"; +}; + +&dwc_0 { + /delete-property/ #phy-cells; + /delete-property/ phys; + /delete-property/ phy-names; +}; + +&hs_m31phy_0 { + status = "ok"; +}; + +&eud { + status = "ok"; +}; + +&pcie_x1 { + perst-gpio = <&tlmm 18 GPIO_ACTIVE_LOW>; +}; + +&pcie_x2 { + perst-gpio = <&tlmm 15 GPIO_ACTIVE_LOW>; +}; + +&pcie_x1_rp { + status = "disabled"; + + mhi_0: qcom,mhi@0 { + reg = <0 0 0 0 0 >; + }; +}; + +&pcie_x2_rp { + status = "disabled"; + + mhi_1: qcom,mhi@1 { + reg = <0 0 0 0 0 >; + + }; +}; \ No newline at end of file diff --git a/feeds/ipq807x_v5.4/ipq50xx/image/ipq50xx.mk b/feeds/ipq807x_v5.4/ipq50xx/image/ipq50xx.mk index 6f6b6eb61..c0370770b 100644 --- a/feeds/ipq807x_v5.4/ipq50xx/image/ipq50xx.mk +++ b/feeds/ipq807x_v5.4/ipq50xx/image/ipq50xx.mk @@ -187,3 +187,15 @@ define Device/optimcloud_d60 DEVICE_DTS_CONFIG := config@mp03.1 endef TARGET_DEVICES += optimcloud_d60 + +define Device/glinet_b3000 + DEVICE_TITLE := GL.iNet B3000 + DEVICE_DTS := qcom-ipq5018-gl-b3000 + SUPPORTED_DEVICES := glinet,b3000 + DEVICE_PACKAGES := ath11k-wifi-gl-b3000 ath11k-firmware-ipq50xx-spruce ath11k-firmware-qcn6122 + DEVICE_DTS_CONFIG := config@mp03.5-c1 + IMAGES := sysupgrade.tar nand-factory.bin + IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata + IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand +endef +TARGET_DEVICES += glinet_b3000 diff --git a/profiles/gl_b3000.yml b/profiles/gl_b3000.yml new file mode 100644 index 000000000..ec8efcb66 --- /dev/null +++ b/profiles/gl_b3000.yml @@ -0,0 +1,28 @@ +--- +profile: glinet_b3000 +target: ipq50xx +subtarget: generic +description: Build image for the GL.iNet B3000 +image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-glinet_b3000-squashfs-sysupgrade.tar +feeds: + - name: ipq807x + path: ../../feeds/ipq807x_v5.4 + - name: ucentral + path: ../../feeds/ucentral + +packages: + - ipq50xx + - ucode + - ucode-mod-math + - ucode-mod-resolv + - ucode-mod-rtnl + - ucode-mod-struct + - ucode-mod-uci + - wpad-openssl + - wireless-regdb + - iptables-mod-physdev + +diffconfig: | + CONFIG_NET_IP_TUNNEL=y + CONFIG_KERNEL_IPQ_MEM_PROFILE=512 + CONFIG_BUSYBOX_CUSTOM=y