mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 17:42:41 +00:00
Compare commits
3 Commits
v4.1.1
...
staging-WI
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
815f38ad15 | ||
|
|
b48c3796f2 | ||
|
|
ad7282f745 |
@@ -1,14 +0,0 @@
|
||||
--- a/hostapd/ctrl_iface.c 2025-09-24 14:15:25.135668867 +0800
|
||||
+++ b/hostapd/ctrl_iface.c 2025-09-24 15:32:46.082317382 +0800
|
||||
@@ -2657,6 +2657,11 @@ static int hostapd_ctrl_iface_chan_switc
|
||||
break;
|
||||
}
|
||||
|
||||
+ /* Initialize HT/VHT/HE parameters */
|
||||
+ settings.freq_params.ht_enabled = iface->conf->ieee80211n;
|
||||
+ settings.freq_params.vht_enabled = iface->conf->ieee80211ac;
|
||||
+ settings.freq_params.he_enabled = iface->conf->ieee80211ax;
|
||||
+
|
||||
if (settings.freq_params.center_freq1)
|
||||
dfs_range += hostapd_is_dfs_overlap(
|
||||
iface, bandwidth, settings.freq_params.center_freq1);
|
||||
@@ -47,10 +47,6 @@ ALLWIFIBOARDS:= \
|
||||
indio-um-310ax-v1 \
|
||||
indio-um-510axp-v1 \
|
||||
indio-um-510axm-v1 \
|
||||
indio-um-325ax-v2 \
|
||||
indio-um-335ax \
|
||||
indio-um-525axp \
|
||||
indio-um-525axm \
|
||||
muxi-ap3220l \
|
||||
plasmacloud-pax1800 \
|
||||
wallys-dr5018 \
|
||||
@@ -445,10 +441,6 @@ $(eval $(call generate-ath11k-wifi-package,liteon-wpx8324,Liteon WPX8324))
|
||||
$(eval $(call generate-ath11k-wifi-package,indio-um-310ax-v1,Indio UM-310AX V1))
|
||||
$(eval $(call generate-ath11k-wifi-package,indio-um-510axp-v1,Indio UM-510AXP V1))
|
||||
$(eval $(call generate-ath11k-wifi-package,indio-um-510axm-v1,Indio UM-510AXM V1))
|
||||
$(eval $(call generate-ath11k-wifi-package,indio-um-325ax-v2,Indio UM-325AX V2))
|
||||
$(eval $(call generate-ath11k-wifi-package,indio-um-335ax,Indio UM-335AX))
|
||||
$(eval $(call generate-ath11k-wifi-package,indio-um-525axp,Indio UM-525AXP))
|
||||
$(eval $(call generate-ath11k-wifi-package,indio-um-525axm,Indio UM-525AXM))
|
||||
$(eval $(call generate-ath11k-wifi-package,sonicfi-rap630c-311g,Sonicfi RAP630C 311G))
|
||||
$(eval $(call generate-ath11k-wifi-package,sonicfi-rap630w-311g,Sonicfi RAP630W 311G))
|
||||
$(eval $(call generate-ath11k-wifi-package,sonicfi-rap630w-312g,Sonicfi RAP630W 312G))
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -16,14 +16,6 @@ edgecore,eap104)
|
||||
ucidef_set_led_netdev "wan" "wan" "yellow:uplink" "eth0"
|
||||
ucidef_set_led_default "power" "POWER" "green:power" "on"
|
||||
;;
|
||||
indio,um-325ax-v2|\
|
||||
indio,um-335ax|\
|
||||
indio,um-525axm|\
|
||||
indio,um-525axp)
|
||||
ucidef_set_led_wlan "wlan2g" "WLAN2G" "led_2g" "phy0tpt"
|
||||
ucidef_set_led_wlan "wlan5g" "WLAN5G" "led_5g" "phy1tpt"
|
||||
ucidef_set_led_default "power" "POWER" "led_sys" "on"
|
||||
;;
|
||||
cig,wf186h|\
|
||||
cig,wf186w)
|
||||
ucidef_set_led_default "power" "POWER" "green:status" "on"
|
||||
|
||||
@@ -48,15 +48,6 @@ qcom_setup_interfaces()
|
||||
ucidef_add_switch "switch1" \
|
||||
"6u@eth1" "1:lan" "2:lan" "3:lan" "4:lan"
|
||||
;;
|
||||
indio,um-325ax-v2|\
|
||||
indio,um-335ax|\
|
||||
indio,um-525axm|\
|
||||
indio,um-525axp)
|
||||
ucidef_set_interface_wan "eth1"
|
||||
ucidef_set_interface_lan "eth0"
|
||||
ucidef_add_switch "switch1" \
|
||||
"6@eth1" "1:lan" "2:lan" "3:lan" "4:lan"
|
||||
;;
|
||||
emplus,wap385c|\
|
||||
hfcl,ion4x_w|\
|
||||
hfcl,ion4xi_w)
|
||||
|
||||
@@ -142,10 +142,6 @@ ath11k/IPQ5018/hw1.0/caldata.bin)
|
||||
emplus,wap385c|\
|
||||
hfcl,ion4x_w|\
|
||||
hfcl,ion4xi_w|\
|
||||
indio,um-325ax-v2|\
|
||||
indio,um-335ax|\
|
||||
indio,um-525axm|\
|
||||
indio,um-525axp|\
|
||||
optimcloud,d60|\
|
||||
optimcloud,d60-5g|\
|
||||
optimcloud,d50|\
|
||||
@@ -187,9 +183,6 @@ ath11k/qcn6122/hw1.0/caldata_1.bin)
|
||||
;;
|
||||
ath11k/qcn6122/hw1.0/caldata_2.bin)
|
||||
case "$board" in
|
||||
indio,um-325ax-v2|\
|
||||
indio,um-525axm|\
|
||||
indio,um-525axp|\
|
||||
wallys,dr5018|\
|
||||
edgecore,eap104|\
|
||||
edgecore,oap101-6e|\
|
||||
@@ -208,7 +201,6 @@ ath11k/qcn6122/hw1.0/caldata_2.bin)
|
||||
;;
|
||||
ath11k/QCN9074/hw1.0/caldata_1.bin)
|
||||
case "$board" in
|
||||
indio,um-335ax|\
|
||||
optimcloud,d60|\
|
||||
optimcloud,d60-5g|\
|
||||
optimcloud,d50|\
|
||||
@@ -242,9 +234,6 @@ ath11k-macs)
|
||||
edgecore,oap101|\
|
||||
edgecore,oap101-6e|\
|
||||
edgecore,oap101e-6e|\
|
||||
indio,um-325ax-v2|\
|
||||
indio,um-525axp|\
|
||||
indio,um-525axm|\
|
||||
optimcloud,d60|\
|
||||
optimcloud,d60-5g|\
|
||||
optimcloud,d50|\
|
||||
|
||||
@@ -81,10 +81,6 @@ platform_check_image() {
|
||||
wallys,dr5018|\
|
||||
hfcl,ion4x_w|\
|
||||
hfcl,ion4xi_w|\
|
||||
indio,um-325ax-v2|\
|
||||
indio,um-335ax|\
|
||||
indio,um-525axp|\
|
||||
indio,um-525axm|\
|
||||
optimcloud,d60|\
|
||||
optimcloud,d60-5g|\
|
||||
optimcloud,d50|\
|
||||
@@ -111,10 +107,6 @@ platform_do_upgrade() {
|
||||
|
||||
board=$(board_name)
|
||||
case $board in
|
||||
indio,um-325ax-v2|\
|
||||
indio,um-335ax|\
|
||||
indio,um-525axp|\
|
||||
indio,um-525axm|\
|
||||
edgecore,oap101|\
|
||||
edgecore,oap101-6e|\
|
||||
edgecore,oap101e|\
|
||||
|
||||
@@ -1,941 +0,0 @@
|
||||
/dts-v1/;
|
||||
/* Copyright (c) 2018-2020, The Linux Foundation. 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 <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
#address-cells = <0x2>;
|
||||
#size-cells = <0x2>;
|
||||
model = "Indio UM-325AX V2";
|
||||
compatible = "indio,um-325ax-v2", "qcom,ipq5018-mp03.5-c1", "qcom,ipq5018";
|
||||
interrupt-parent = <&intc>;
|
||||
|
||||
aliases {
|
||||
sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
|
||||
serial0 = &blsp1_uart1;
|
||||
serial1 = &blsp1_uart2;
|
||||
ethernet0 = "/soc/dp1";
|
||||
ethernet1 = "/soc/dp2";
|
||||
//led-failsafe = &led_red;
|
||||
//led-running = &led_green;
|
||||
//led-upgrade = &led_green;
|
||||
//led-gateway = &led_blue;
|
||||
//led-factory = &led_blue;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyMSM0,115200,n8 rw init=/init";
|
||||
#ifdef __IPQ_MEM_PROFILE_256_MB__
|
||||
bootargs-append = " swiotlb=1";
|
||||
#else
|
||||
bootargs-append = " swiotlb=1 coherent_pool=2M";
|
||||
#endif
|
||||
stdout-path = "serial0";
|
||||
};
|
||||
|
||||
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 | 15MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | M3 Dump | 0x4E200000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | QDSS | 0x4E300000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | data | 0x4E400000 | 15MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | M3 Dump | 0x4F300000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | QDSS | 0x4F400000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | |
|
||||
* | Rest of the memory for Linux |
|
||||
* | |
|
||||
* +===================================================+
|
||||
*/
|
||||
q6_mem_regions: q6_mem_regions@4B000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4B000000 0x0 0x4500000>;
|
||||
};
|
||||
|
||||
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 0xF00000>;
|
||||
};
|
||||
|
||||
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_data2: q6_qcn6122_data2@4E400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E400000 0x0 0xF00000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6122_2: m3_dump_qcn6122_2@4F300000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4F300000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4F400000 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 | 14MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | M3 Dump | 0x4D200000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | QDSS | 0x4D300000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | Caldb | 0x4D400000 | 2MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | data | 0x4D600000 | 16MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | M3 Dump | 0x4E600000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | QDSS | 0x4E700000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | Caldb | 0x4E800000 | 5MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | data | 0x4ED00000 | 16MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | M3 Dump | 0x4FD00000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | QDSS | 0x4FE00000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | Caldb | 0x4FF00000 | 5MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | |
|
||||
* | Rest of the memory for Linux |
|
||||
* | |
|
||||
* +===================================================+
|
||||
*/
|
||||
q6_mem_regions: q6_mem_regions@4B000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4B000000 0x0 0x5400000>;
|
||||
};
|
||||
|
||||
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 0xE00000>;
|
||||
};
|
||||
|
||||
m3_dump: m3_dump@4D200000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D200000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_etr_region: q6_etr_dump@4D300000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D300000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_caldb_region: q6_caldb_region@4D400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D400000 0x0 0x200000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_data1: q6_qcn6122_data1@4D600000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D600000 0x0 0x1000000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E600000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E600000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E700000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E700000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E800000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E800000 0x0 0x500000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_data2: q6_qcn6122_data2@4E900000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4ED00000 0x0 0x1000000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6122_2: m3_dump_qcn6122_2@4FD00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4FD00000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_etr_2: q6_qcn6122_etr_2@4FE00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4FE00000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_caldb_2: q6_qcn6122_caldb_2@4FF00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4FF00000 0x0 0x500000>;
|
||||
};
|
||||
|
||||
#endif
|
||||
};
|
||||
|
||||
soc {
|
||||
gpio-watchdog {
|
||||
compatible = "linux,wdt-gpio";
|
||||
gpios = <&tlmm 27 GPIO_ACTIVE_LOW>;
|
||||
hw_algo = "toggle";
|
||||
hw_margin_ms = <5000>;
|
||||
always-running;
|
||||
};
|
||||
|
||||
serial@78af000 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
blsp1_uart2: serial@78b0000 {
|
||||
pinctrl-0 = <&blsp1_uart_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
qpic_bam: dma@7984000{
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
nand: qpic-nand@79b0000 {
|
||||
pinctrl-0 = <&qspi_nand_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
spi_0: spi@78b5000 { /* BLSP1 QUP0 */
|
||||
pinctrl-0 = <&blsp0_spi_pins>;
|
||||
pinctrl-names = "default";
|
||||
cs-select = <0>;
|
||||
status = "ok";
|
||||
|
||||
m25p80@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0>;
|
||||
compatible = "n25q128a11";
|
||||
linux,modalias = "m25p80", "n25q128a11";
|
||||
spi-max-frequency = <50000000>;
|
||||
use-default-sizes;
|
||||
};
|
||||
};
|
||||
|
||||
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 = <28>;
|
||||
};
|
||||
};
|
||||
|
||||
ess-instance {
|
||||
num_devices = <0x1>;
|
||||
ess-switch@0x39c00000 {
|
||||
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>;
|
||||
mdiobus = <&mdio0>;
|
||||
};
|
||||
port@1 {
|
||||
port_id = <2>;
|
||||
phy_address = <0x1c>;
|
||||
mdiobus = <&mdio1>;
|
||||
port_mac_sel = "QGMAC_PORT";
|
||||
};
|
||||
};
|
||||
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 = <0x28>;
|
||||
switch_cpu_bmp = <0x40>; /* cpu port bitmap */
|
||||
switch_lan_bmp = <0x1e>; /* lan port bitmap */
|
||||
switch_wan_bmp = <0x0>; /* 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 = <28>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
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 = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
|
||||
qcom,mactype = <2>;
|
||||
qcom,link-poll = <1>;
|
||||
qcom,phy-mdio-addr = <7>;
|
||||
mdio-bus = <&mdio0>;
|
||||
local-mac-address = [000000000000];
|
||||
phy-mode = "sgmii";
|
||||
};
|
||||
|
||||
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 = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
|
||||
qcom,mactype = <2>;
|
||||
qcom,link-poll = <1>;
|
||||
qcom,phy-mdio-addr = <28>;
|
||||
mdio-bus = <&mdio1>;
|
||||
local-mac-address = [000000000000];
|
||||
phy-mode = "sgmii";
|
||||
};
|
||||
|
||||
qcom,test@0 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
nss-macsec1 {
|
||||
compatible = "qcom,nss-macsec";
|
||||
phy_addr = <0x1c>;
|
||||
mdiobus = <&mdio1>;
|
||||
};
|
||||
|
||||
lpass: lpass@0xA000000{
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pcm: pcm@0xA3C0000{
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pcm_lb: pcm_lb@0 {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
thermal-zones {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&tlmm {
|
||||
pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
blsp0_uart_pins: uart_pins {
|
||||
blsp0_uart_rx_tx {
|
||||
pins = "gpio20", "gpio21";
|
||||
function = "blsp0_uart0";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
blsp1_uart_pins: blsp1_uart_pins {
|
||||
blsp1_uart_rx_tx {
|
||||
pins = "gpio22", "gpio24", "gpio23", "gpio25";
|
||||
function = "blsp1_uart2";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
blsp0_spi_pins: blsp0_spi_pins {
|
||||
mux {
|
||||
pins = "gpio10", "gpio11", "gpio12", "gpio13";
|
||||
function = "blsp0_spi";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
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_0 {
|
||||
pins = "gpio7";
|
||||
function = "qspi0";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
qspi_data_1 {
|
||||
pins = "gpio6";
|
||||
function = "qspi1";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
qspi_data_2 {
|
||||
pins = "gpio5";
|
||||
function = "qspi2";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
qspi_data_3 {
|
||||
pins = "gpio4";
|
||||
function = "qspi3";
|
||||
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;
|
||||
};
|
||||
};
|
||||
|
||||
phy_led_pins: phy_led_pins {
|
||||
gephy_led_pin {
|
||||
pins = "gpio46";
|
||||
function = "led0";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
i2c_pins: i2c_pins {
|
||||
i2c_scl {
|
||||
pins = "gpio25";
|
||||
function = "blsp2_i2c1";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
i2c_sda {
|
||||
pins = "gpio26";
|
||||
function = "blsp2_i2c1";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
button_pins: button_pins {
|
||||
reset_button {
|
||||
pins = "gpio38";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
audio_pins: audio_pinmux {
|
||||
};
|
||||
leds_pins: leds_pins {
|
||||
led_5g {
|
||||
pins = "gpio34";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
led_2g {
|
||||
pins = "gpio33";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
led_sys {
|
||||
pins = "gpio26";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
led_onekey {
|
||||
pins = "gpio28";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
gpio_keys {
|
||||
compatible = "gpio-keys";
|
||||
pinctrl-0 = <&button_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
button@1 {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
|
||||
linux,input-type = <1>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-0 = <&leds_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
led_blue: led@34 {
|
||||
label = "led_5g";
|
||||
gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_5g";
|
||||
default-state = "off";
|
||||
};
|
||||
led_green: led@33 {
|
||||
label = "led_2g";
|
||||
gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_2g";
|
||||
default-state = "off";
|
||||
};
|
||||
led_red: led@26 {
|
||||
label = "led_sys";
|
||||
gpios = <&tlmm 26 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_sys";
|
||||
default-state = "off";
|
||||
};
|
||||
led@28 {
|
||||
label = "led_onekey";
|
||||
gpios = <&tlmm 28 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_onekey";
|
||||
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";
|
||||
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
|
||||
};
|
||||
};
|
||||
|
||||
&i2c_0 {
|
||||
pinctrl-0 = <&i2c_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&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 = <0x24>;
|
||||
#ifdef __CNSS2__
|
||||
qcom,bdf-addr = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4D400000 0x4D400000 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_userpd2";
|
||||
qcom,rproc = <&q6_wcss_pd2>;
|
||||
#ifdef __IPQ_MEM_PROFILE_256_MB__
|
||||
qcom,tgt-mem-mode = <2>;
|
||||
#else
|
||||
qcom,tgt-mem-mode = <1>;
|
||||
#endif
|
||||
qcom,board_id = <0x50>;
|
||||
#ifdef __CNSS2__
|
||||
qcom,bdf-addr = <0x4D600000 0x4D600000 0x4D300000 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4E800000 0x4E800000 0 0 0>;
|
||||
qcom,caldb-size = <0x500000>;
|
||||
mem-region = <&q6_qcn6122_data1>;
|
||||
#else
|
||||
memory-region = <&q6_qcn6122_data1>;
|
||||
#endif
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&wifi2 {
|
||||
/* QCN6122 6G */
|
||||
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 = <0xb0>;
|
||||
#ifdef __CNSS2__
|
||||
qcom,bdf-addr = <0x4ED00000 0x4ED00000 0x4E400000 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4FF00000 0x4FF00000 0 0 0>;
|
||||
qcom,caldb-size = <0x500000>;
|
||||
mem-region = <&q6_qcn6122_data2>;
|
||||
#else
|
||||
memory-region = <&q6_qcn6122_data2>;
|
||||
#endif
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
|
||||
&usb3 {
|
||||
status = "ok";
|
||||
device-power-gpio = <&tlmm 24 1>;
|
||||
};
|
||||
|
||||
&dwc_0 {
|
||||
/delete-property/ #phy-cells;
|
||||
/delete-property/ phys;
|
||||
/delete-property/ phy-names;
|
||||
};
|
||||
&hs_m31phy_0 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&eud {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&pcie_x1 {
|
||||
#status = "disabled";
|
||||
#perst-gpio = <&tlmm 18 1>;
|
||||
perst-gpio = <&tlmm 18 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&pcie_x2 {
|
||||
#status = "disabled";
|
||||
#perst-gpio = <&tlmm 15 1>;
|
||||
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 >;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,731 +0,0 @@
|
||||
/dts-v1/;
|
||||
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2025, Shubham Vishwakarma <shubhamvis98@fossfrog.in>.
|
||||
*
|
||||
* 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 <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
#address-cells = <0x2>;
|
||||
#size-cells = <0x2>;
|
||||
model = "Indio UM-335AX";
|
||||
compatible = "indio,um-335ax", "qcom,ipq5018-ap-mp03.1", "qcom,ipq5018-mp03.1", "qcom,ipq5018";
|
||||
interrupt-parent = <&intc>;
|
||||
|
||||
aliases {
|
||||
sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
|
||||
serial0 = &blsp1_uart1;
|
||||
serial1 = &blsp1_uart2;
|
||||
ethernet0 = "/soc/dp1";
|
||||
ethernet1 = "/soc/dp2";
|
||||
led-boot = &led_red;
|
||||
led-failsafe = &led_red;
|
||||
led-running = &led_red;
|
||||
led-upgrade = &led_red;
|
||||
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyMSM0,115200,n8 rw init=/init";
|
||||
bootargs-append = " swiotlb=1 coherent_pool=2M";
|
||||
stdout-path = "serial0";
|
||||
};
|
||||
|
||||
gpio-watchdog {
|
||||
compatible = "linux,wdt-gpio";
|
||||
gpios = <&tlmm 27 GPIO_ACTIVE_LOW>;
|
||||
hw_algo = "toggle";
|
||||
hw_margin_ms = <5000>;
|
||||
always-running;
|
||||
};
|
||||
|
||||
reserved-memory {
|
||||
q6_mem_regions: q6_mem_regions@4B000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4B000000 0x0 0x1800000>;
|
||||
};
|
||||
|
||||
q6_ipq5018_data: q6_ipq5018_data@4C400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4C400000 0x0 0xE00000>;
|
||||
};
|
||||
|
||||
m3_dump: m3_dump@4C800000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4C800000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_etr_region: q6_etr_dump@4C900000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4C900000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_caldb_region: q6_caldb_region@4CA00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4CA00000 0x0 0x200000>;
|
||||
};
|
||||
|
||||
qcn9000_pcie0: qcn9000_pcie0@4cc00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4CC00000 0x0 0x2600000>;
|
||||
};
|
||||
|
||||
#if defined(__CNSS2__)
|
||||
mhi_region1: dma_pool1@4F200000 {
|
||||
compatible = "shared-dma-pool";
|
||||
no-map;
|
||||
reg = <0x0 0x4F200000 0x0 0x900000>;
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
soc {
|
||||
serial@78af000 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
blsp1_uart2: serial@78b0000 {
|
||||
pinctrl-0 = <&blsp1_uart_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
qpic_bam: dma@7984000{
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
nand: qpic-nand@79b0000 {
|
||||
pinctrl-0 = <&qspi_nand_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
spi_0: spi@78b5000 { /* BLSP1 QUP0 */
|
||||
pinctrl-0 = <&blsp0_spi_pins>;
|
||||
pinctrl-names = "default";
|
||||
cs-select = <0>;
|
||||
status = "ok";
|
||||
|
||||
m25p80@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0>;
|
||||
compatible = "n25q128a11";
|
||||
linux,modalias = "m25p80", "n25q128a11";
|
||||
spi-max-frequency = <50000000>;
|
||||
use-default-sizes;
|
||||
};
|
||||
};
|
||||
|
||||
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 = <28>;
|
||||
};
|
||||
};
|
||||
|
||||
ess-instance {
|
||||
num_devices = <0x1>;
|
||||
ess-switch@0x39c00000 {
|
||||
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>;
|
||||
mdiobus = <&mdio0>;
|
||||
};
|
||||
port@1 {
|
||||
port_id = <2>;
|
||||
phy_address = <0x1c>;
|
||||
mdiobus = <&mdio1>;
|
||||
port_mac_sel = "QGMAC_PORT";
|
||||
};
|
||||
};
|
||||
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 = <0x28>;
|
||||
switch_cpu_bmp = <0x40>; /* cpu port bitmap */
|
||||
switch_lan_bmp = <0x1e>; /* lan port bitmap */
|
||||
switch_wan_bmp = <0x0>; /* 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 = <28>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
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 = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
|
||||
qcom,mactype = <2>;
|
||||
qcom,link-poll = <1>;
|
||||
qcom,phy-mdio-addr = <7>;
|
||||
mdio-bus = <&mdio0>;
|
||||
local-mac-address = [000000000000];
|
||||
phy-mode = "sgmii";
|
||||
};
|
||||
|
||||
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 = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
|
||||
qcom,mactype = <2>;
|
||||
qcom,link-poll = <1>;
|
||||
qcom,phy-mdio-addr = <28>;
|
||||
mdio-bus = <&mdio1>;
|
||||
local-mac-address = [000000000000];
|
||||
phy-mode = "sgmii";
|
||||
};
|
||||
|
||||
qcom,test@0 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
nss-macsec1 {
|
||||
compatible = "qcom,nss-macsec";
|
||||
phy_addr = <0x1c>;
|
||||
mdiobus = <&mdio1>;
|
||||
};
|
||||
|
||||
lpass: lpass@0xA000000{
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pcm: pcm@0xA3C0000{
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pcm_lb: pcm_lb@0 {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
thermal-zones {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&tlmm {
|
||||
pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
blsp0_uart_pins: uart_pins {
|
||||
blsp0_uart_rx_tx {
|
||||
pins = "gpio20", "gpio21";
|
||||
function = "blsp0_uart0";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
blsp1_uart_pins: blsp1_uart_pins {
|
||||
blsp1_uart_rx_tx {
|
||||
pins = "gpio22", "gpio24", "gpio23", "gpio25";
|
||||
function = "blsp1_uart2";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
blsp0_spi_pins: blsp0_spi_pins {
|
||||
mux {
|
||||
pins = "gpio10", "gpio11", "gpio12", "gpio13";
|
||||
function = "blsp0_spi";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
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_0 {
|
||||
pins = "gpio7";
|
||||
function = "qspi0";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
qspi_data_1 {
|
||||
pins = "gpio6";
|
||||
function = "qspi1";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
qspi_data_2 {
|
||||
pins = "gpio5";
|
||||
function = "qspi2";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
qspi_data_3 {
|
||||
pins = "gpio4";
|
||||
function = "qspi3";
|
||||
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;
|
||||
};
|
||||
};
|
||||
|
||||
phy_led_pins: phy_led_pins {
|
||||
gephy_led_pin {
|
||||
pins = "gpio46";
|
||||
function = "led0";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
i2c_pins: i2c_pins {
|
||||
i2c_scl {
|
||||
pins = "gpio25";
|
||||
function = "blsp2_i2c1";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
i2c_sda {
|
||||
pins = "gpio26";
|
||||
function = "blsp2_i2c1";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
button_pins: button_pins {
|
||||
reset_button {
|
||||
pins = "gpio38";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
audio_pins: audio_pinmux {
|
||||
};
|
||||
|
||||
leds_pins: leds_pins {
|
||||
led_blue: led_5g {
|
||||
label = "led_5g";
|
||||
pins = "gpio34";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
led_green: led_2g {
|
||||
label = "led_2g";
|
||||
pins = "gpio33";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
led_red: led_sys {
|
||||
label = "led_sys";
|
||||
pins = "gpio26";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
led_onekey {
|
||||
pins = "gpio28";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
gpio_keys {
|
||||
compatible = "gpio-keys";
|
||||
pinctrl-0 = <&button_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
button@1 {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
|
||||
linux,input-type = <1>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-0 = <&leds_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
led@33 {
|
||||
label = "led_5g";
|
||||
gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_5g";
|
||||
default-state = "off";
|
||||
};
|
||||
led@34 {
|
||||
label = "led_2g";
|
||||
gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_2g";
|
||||
default-state = "off";
|
||||
};
|
||||
led@26 {
|
||||
label = "led_sys";
|
||||
gpios = <&tlmm 26 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_sys";
|
||||
default-state = "on";
|
||||
};
|
||||
led@28 {
|
||||
label = "led_onekey";
|
||||
gpios = <&tlmm 28 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_onekey";
|
||||
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";
|
||||
|
||||
memory-region = <&q6_mem_regions>, <&q6_etr_region>,
|
||||
<&q6_caldb_region>;
|
||||
|
||||
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";
|
||||
memory-region = <&q6_ipq5018_data>, <&m3_dump>,
|
||||
<&q6_etr_region>, <&q6_caldb_region>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c_0 {
|
||||
pinctrl-0 = <&i2c_pins>;
|
||||
pinctrl-names = "default";
|
||||
// status = "disabled";
|
||||
};
|
||||
|
||||
&usb3 {
|
||||
status = "ok";
|
||||
device-power-gpio = <&tlmm 24 1>;
|
||||
};
|
||||
|
||||
&dwc_0 {
|
||||
/delete-property/ #phy-cells;
|
||||
/delete-property/ phys;
|
||||
/delete-property/ phy-names;
|
||||
};
|
||||
|
||||
&blsp1_uart1 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&ssuniphy_0 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&hs_m31phy_0 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&eud {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&pcie_x1 {
|
||||
perst-gpio = <&tlmm 18 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&pcie_x2 {
|
||||
status = "ok";
|
||||
perst-gpio = <&tlmm 15 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&wcss {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&pcie_x2phy {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&pcie_x1_rp {
|
||||
status = "disabled";
|
||||
|
||||
mhi_0: qcom,mhi@0 {
|
||||
reg = <0 0 0 0 0 >;
|
||||
};
|
||||
};
|
||||
|
||||
&pcie_x2_rp {
|
||||
status = "ok";
|
||||
|
||||
mhi_1: qcom,mhi@1 {
|
||||
reg = <0 0 0 0 0 >;
|
||||
qrtr_instance_id = <0x20>;
|
||||
qti,disable-rddm-prealloc;
|
||||
qti,rddm-seg-len = <0x1000>;
|
||||
#address-cells = <0x2>;
|
||||
#size-cells = <0x2>;
|
||||
#if defined(__CNSS2__)
|
||||
memory-region = <0>,<&mhi_region1>;
|
||||
#else
|
||||
base-addr = <0x4CB00000>;
|
||||
m3-dump-addr = <0x4DF00000>;
|
||||
etr-addr = <0x4E000000>;
|
||||
qcom,caldb-addr = <0x4E100000>;
|
||||
pageable-addr = <0x4E900000>;
|
||||
qcom,tgt-mem-mode = <0x1>;
|
||||
#endif
|
||||
};
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
/* IPQ5018 */
|
||||
qcom,multipd_arch;
|
||||
qcom,rproc = <&q6_wcss_pd1>;
|
||||
qcom,userpd-subsys-name = "q6v5_wcss_userpd1";
|
||||
qcom,tgt-mem-mode = <1>;
|
||||
qcom,board_id = <0x24>;
|
||||
#ifdef __CNSS2__
|
||||
qcom,bdf-addr = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4D400000 0x4D400000 0 0 0>;
|
||||
qcom,caldb-size = <0x200000>;
|
||||
mem-region = <&q6_ipq5018_data>;
|
||||
#else
|
||||
memory-region = <&q6_ipq5018_data>;
|
||||
#endif
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&wifi3 {
|
||||
/* QCN9000 5G */
|
||||
board_id = <0xa0>;
|
||||
hremote_node = <&qcn9000_pcie0>;
|
||||
#ifdef __IPQ_MEM_PROFILE_256_MB__
|
||||
/* QCN9000 tgt-mem-mode=2 layout - 17MB
|
||||
* +=========+==============+=========+
|
||||
* | Region | Start Offset | Size |
|
||||
* +---------+--------------+---------+
|
||||
* | HREMOTE | 0x4C900000 | 11MB |
|
||||
* +---------+--------------+---------+
|
||||
* | M3 Dump | 0x4D400000 | 1MB |
|
||||
* +---------+--------------+---------+
|
||||
* | ETR | 0x4D500000 | 1MB |
|
||||
* +---------+--------------+---------+
|
||||
* | Pageable| 0x4D600000 | 4MB |
|
||||
* +==================================+
|
||||
*/
|
||||
base-addr = <0x4C900000>;
|
||||
m3-dump-addr = <0x4D400000>;
|
||||
etr-addr = <0x4D500000>;
|
||||
caldb-addr = <0>;
|
||||
pageable-addr = <0x4D600000>;
|
||||
caldb-size = <0>;
|
||||
hremote-size = <0xB00000>;
|
||||
tgt-mem-mode = <0x2>;
|
||||
pageable-size = <0x400000>;
|
||||
#elif __IPQ_MEM_PROFILE_512_MB__
|
||||
/* QCN9000 tgt-mem-mode=1 layout - 26MB
|
||||
* +=========+==============+=========+
|
||||
* | Region | Start Offset | Size |
|
||||
* +---------+--------------+---------+
|
||||
* | HREMOTE | 0x4CB00000 | 12MB |
|
||||
* +---------+--------------+---------+
|
||||
* | M3 Dump | 0x4D700000 | 1MB |
|
||||
* +---------+--------------+---------+
|
||||
* | ETR | 0x4D800000 | 1MB |
|
||||
* +---------+--------------+---------+
|
||||
* | Caldb | 0x4D900000 | 8MB |
|
||||
* +---------+--------------+---------+
|
||||
* | Pageable| 0x4E100000 | 4MB |
|
||||
* +==================================+
|
||||
*/
|
||||
base-addr = <0x4CB00000>;
|
||||
m3-dump-addr = <0x4D700000>;
|
||||
etr-addr = <0x4D800000>;
|
||||
caldb-addr = <0x4D900000>;
|
||||
pageable-addr = <0x4E100000>;
|
||||
caldb-size = <0x800000>;
|
||||
hremote-size = <0xC00000>;
|
||||
tgt-mem-mode = <0x1>;
|
||||
pageable-size = <0x400000>;
|
||||
#else
|
||||
/* QCN9000 tgt-mem-mode=0 layout - 53MB
|
||||
* +=========+==============+=========+
|
||||
* | Region | Start Offset | Size |
|
||||
* +---------+--------------+---------+
|
||||
* | HREMOTE | 0x4CB00000 | 35MB |
|
||||
* +---------+--------------+---------+
|
||||
* | M3 Dump | 0x4EE00000 | 1MB |
|
||||
* +---------+--------------+---------+
|
||||
* | ETR | 0x4EF00000 | 1MB |
|
||||
* +---------+--------------+---------+
|
||||
* | Caldb | 0x4F000000 | 8MB |
|
||||
* +---------+--------------+---------+
|
||||
* | Pageable| 0x4F800000 | 8MB |
|
||||
* +==================================+
|
||||
*/
|
||||
base-addr = <0x4CB00000>;
|
||||
m3-dump-addr = <0x4EE00000>;
|
||||
etr-addr = <0x4EF00000>;
|
||||
caldb-addr = <0x4F000000>;
|
||||
pageable-addr = <0x4F800000>;
|
||||
hremote-size = <0x2300000>;
|
||||
caldb-size = <0x800000>;
|
||||
tgt-mem-mode = <0x0>;
|
||||
pageable-size = <0x800000>;
|
||||
#endif
|
||||
status = "ok";
|
||||
};
|
||||
@@ -1,941 +0,0 @@
|
||||
/dts-v1/;
|
||||
/* Copyright (c) 2018-2020, The Linux Foundation. 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 <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
#address-cells = <0x2>;
|
||||
#size-cells = <0x2>;
|
||||
model = "Indio UM-525AXM";
|
||||
compatible = "indio,um-525axm", "qcom,ipq5018-mp03.5-c1", "qcom,ipq5018";
|
||||
interrupt-parent = <&intc>;
|
||||
|
||||
aliases {
|
||||
sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
|
||||
serial0 = &blsp1_uart1;
|
||||
serial1 = &blsp1_uart2;
|
||||
ethernet0 = "/soc/dp1";
|
||||
ethernet1 = "/soc/dp2";
|
||||
//led-failsafe = &led_red;
|
||||
//led-running = &led_green;
|
||||
//led-upgrade = &led_green;
|
||||
//led-gateway = &led_blue;
|
||||
//led-factory = &led_blue;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyMSM0,115200,n8 rw init=/init";
|
||||
#ifdef __IPQ_MEM_PROFILE_256_MB__
|
||||
bootargs-append = " swiotlb=1";
|
||||
#else
|
||||
bootargs-append = " swiotlb=1 coherent_pool=2M";
|
||||
#endif
|
||||
stdout-path = "serial0";
|
||||
};
|
||||
|
||||
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 | 15MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | M3 Dump | 0x4E200000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | QDSS | 0x4E300000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | data | 0x4E400000 | 15MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | M3 Dump | 0x4F300000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | QDSS | 0x4F400000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | |
|
||||
* | Rest of the memory for Linux |
|
||||
* | |
|
||||
* +===================================================+
|
||||
*/
|
||||
q6_mem_regions: q6_mem_regions@4B000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4B000000 0x0 0x4500000>;
|
||||
};
|
||||
|
||||
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 0xF00000>;
|
||||
};
|
||||
|
||||
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_data2: q6_qcn6122_data2@4E400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E400000 0x0 0xF00000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6122_2: m3_dump_qcn6122_2@4F300000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4F300000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4F400000 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 | 14MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | M3 Dump | 0x4D200000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | QDSS | 0x4D300000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | Caldb | 0x4D400000 | 2MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | data | 0x4D600000 | 16MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | M3 Dump | 0x4E600000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | QDSS | 0x4E700000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | Caldb | 0x4E800000 | 5MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | data | 0x4ED00000 | 16MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | M3 Dump | 0x4FD00000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | QDSS | 0x4FE00000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | Caldb | 0x4FF00000 | 5MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | |
|
||||
* | Rest of the memory for Linux |
|
||||
* | |
|
||||
* +===================================================+
|
||||
*/
|
||||
q6_mem_regions: q6_mem_regions@4B000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4B000000 0x0 0x5400000>;
|
||||
};
|
||||
|
||||
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 0xE00000>;
|
||||
};
|
||||
|
||||
m3_dump: m3_dump@4D200000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D200000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_etr_region: q6_etr_dump@4D300000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D300000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_caldb_region: q6_caldb_region@4D400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D400000 0x0 0x200000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_data1: q6_qcn6122_data1@4D600000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D600000 0x0 0x1000000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E600000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E600000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E700000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E700000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E800000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E800000 0x0 0x500000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_data2: q6_qcn6122_data2@4E900000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4ED00000 0x0 0x1000000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6122_2: m3_dump_qcn6122_2@4FD00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4FD00000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_etr_2: q6_qcn6122_etr_2@4FE00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4FE00000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_caldb_2: q6_qcn6122_caldb_2@4FF00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4FF00000 0x0 0x500000>;
|
||||
};
|
||||
|
||||
#endif
|
||||
};
|
||||
|
||||
soc {
|
||||
gpio-watchdog {
|
||||
compatible = "linux,wdt-gpio";
|
||||
gpios = <&tlmm 27 GPIO_ACTIVE_LOW>;
|
||||
hw_algo = "toggle";
|
||||
hw_margin_ms = <5000>;
|
||||
always-running;
|
||||
};
|
||||
|
||||
serial@78af000 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
blsp1_uart2: serial@78b0000 {
|
||||
pinctrl-0 = <&blsp1_uart_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
qpic_bam: dma@7984000{
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
nand: qpic-nand@79b0000 {
|
||||
pinctrl-0 = <&qspi_nand_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
spi_0: spi@78b5000 { /* BLSP1 QUP0 */
|
||||
pinctrl-0 = <&blsp0_spi_pins>;
|
||||
pinctrl-names = "default";
|
||||
cs-select = <0>;
|
||||
status = "ok";
|
||||
|
||||
m25p80@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0>;
|
||||
compatible = "n25q128a11";
|
||||
linux,modalias = "m25p80", "n25q128a11";
|
||||
spi-max-frequency = <50000000>;
|
||||
use-default-sizes;
|
||||
};
|
||||
};
|
||||
|
||||
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 = <28>;
|
||||
};
|
||||
};
|
||||
|
||||
ess-instance {
|
||||
num_devices = <0x1>;
|
||||
ess-switch@0x39c00000 {
|
||||
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>;
|
||||
mdiobus = <&mdio0>;
|
||||
};
|
||||
port@1 {
|
||||
port_id = <2>;
|
||||
phy_address = <0x1c>;
|
||||
mdiobus = <&mdio1>;
|
||||
port_mac_sel = "QGMAC_PORT";
|
||||
};
|
||||
};
|
||||
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 = <0x28>;
|
||||
switch_cpu_bmp = <0x40>; /* cpu port bitmap */
|
||||
switch_lan_bmp = <0x1e>; /* lan port bitmap */
|
||||
switch_wan_bmp = <0x0>; /* 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 = <28>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
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 = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
|
||||
qcom,mactype = <2>;
|
||||
qcom,link-poll = <1>;
|
||||
qcom,phy-mdio-addr = <7>;
|
||||
mdio-bus = <&mdio0>;
|
||||
local-mac-address = [000000000000];
|
||||
phy-mode = "sgmii";
|
||||
};
|
||||
|
||||
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 = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
|
||||
qcom,mactype = <2>;
|
||||
qcom,link-poll = <1>;
|
||||
qcom,phy-mdio-addr = <28>;
|
||||
mdio-bus = <&mdio1>;
|
||||
local-mac-address = [000000000000];
|
||||
phy-mode = "sgmii";
|
||||
};
|
||||
|
||||
qcom,test@0 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
nss-macsec1 {
|
||||
compatible = "qcom,nss-macsec";
|
||||
phy_addr = <0x1c>;
|
||||
mdiobus = <&mdio1>;
|
||||
};
|
||||
|
||||
lpass: lpass@0xA000000{
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pcm: pcm@0xA3C0000{
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pcm_lb: pcm_lb@0 {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
thermal-zones {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&tlmm {
|
||||
pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
blsp0_uart_pins: uart_pins {
|
||||
blsp0_uart_rx_tx {
|
||||
pins = "gpio20", "gpio21";
|
||||
function = "blsp0_uart0";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
blsp1_uart_pins: blsp1_uart_pins {
|
||||
blsp1_uart_rx_tx {
|
||||
pins = "gpio22", "gpio24", "gpio23", "gpio25";
|
||||
function = "blsp1_uart2";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
blsp0_spi_pins: blsp0_spi_pins {
|
||||
mux {
|
||||
pins = "gpio10", "gpio11", "gpio12", "gpio13";
|
||||
function = "blsp0_spi";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
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_0 {
|
||||
pins = "gpio7";
|
||||
function = "qspi0";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
qspi_data_1 {
|
||||
pins = "gpio6";
|
||||
function = "qspi1";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
qspi_data_2 {
|
||||
pins = "gpio5";
|
||||
function = "qspi2";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
qspi_data_3 {
|
||||
pins = "gpio4";
|
||||
function = "qspi3";
|
||||
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;
|
||||
};
|
||||
};
|
||||
|
||||
phy_led_pins: phy_led_pins {
|
||||
gephy_led_pin {
|
||||
pins = "gpio46";
|
||||
function = "led0";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
i2c_pins: i2c_pins {
|
||||
i2c_scl {
|
||||
pins = "gpio25";
|
||||
function = "blsp2_i2c1";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
i2c_sda {
|
||||
pins = "gpio26";
|
||||
function = "blsp2_i2c1";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
button_pins: button_pins {
|
||||
reset_button {
|
||||
pins = "gpio38";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
audio_pins: audio_pinmux {
|
||||
};
|
||||
leds_pins: leds_pins {
|
||||
led_5g {
|
||||
pins = "gpio34";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
led_2g {
|
||||
pins = "gpio33";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
led_sys {
|
||||
pins = "gpio26";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
led_onekey {
|
||||
pins = "gpio28";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
gpio_keys {
|
||||
compatible = "gpio-keys";
|
||||
pinctrl-0 = <&button_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
button@1 {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
|
||||
linux,input-type = <1>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-0 = <&leds_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
led_blue: led@34 {
|
||||
label = "led_5g";
|
||||
gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_5g";
|
||||
default-state = "off";
|
||||
};
|
||||
led_green: led@33 {
|
||||
label = "led_2g";
|
||||
gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_2g";
|
||||
default-state = "off";
|
||||
};
|
||||
led_red: led@26 {
|
||||
label = "led_sys";
|
||||
gpios = <&tlmm 26 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_sys";
|
||||
default-state = "off";
|
||||
};
|
||||
led@28 {
|
||||
label = "led_onekey";
|
||||
gpios = <&tlmm 28 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_onekey";
|
||||
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";
|
||||
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
|
||||
};
|
||||
};
|
||||
|
||||
&i2c_0 {
|
||||
pinctrl-0 = <&i2c_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&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 = <0x24>;
|
||||
#ifdef __CNSS2__
|
||||
qcom,bdf-addr = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4D400000 0x4D400000 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_userpd2";
|
||||
qcom,rproc = <&q6_wcss_pd2>;
|
||||
#ifdef __IPQ_MEM_PROFILE_256_MB__
|
||||
qcom,tgt-mem-mode = <2>;
|
||||
#else
|
||||
qcom,tgt-mem-mode = <1>;
|
||||
#endif
|
||||
qcom,board_id = <0x50>;
|
||||
#ifdef __CNSS2__
|
||||
qcom,bdf-addr = <0x4D600000 0x4D600000 0x4D300000 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4E800000 0x4E800000 0 0 0>;
|
||||
qcom,caldb-size = <0x500000>;
|
||||
mem-region = <&q6_qcn6122_data1>;
|
||||
#else
|
||||
memory-region = <&q6_qcn6122_data1>;
|
||||
#endif
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&wifi2 {
|
||||
/* QCN6122 6G */
|
||||
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 = <0xb0>;
|
||||
#ifdef __CNSS2__
|
||||
qcom,bdf-addr = <0x4ED00000 0x4ED00000 0x4E400000 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4FF00000 0x4FF00000 0 0 0>;
|
||||
qcom,caldb-size = <0x500000>;
|
||||
mem-region = <&q6_qcn6122_data2>;
|
||||
#else
|
||||
memory-region = <&q6_qcn6122_data2>;
|
||||
#endif
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
|
||||
&usb3 {
|
||||
status = "ok";
|
||||
device-power-gpio = <&tlmm 24 1>;
|
||||
};
|
||||
|
||||
&dwc_0 {
|
||||
/delete-property/ #phy-cells;
|
||||
/delete-property/ phys;
|
||||
/delete-property/ phy-names;
|
||||
};
|
||||
&hs_m31phy_0 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&eud {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&pcie_x1 {
|
||||
#status = "disabled";
|
||||
#perst-gpio = <&tlmm 18 1>;
|
||||
perst-gpio = <&tlmm 18 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&pcie_x2 {
|
||||
#status = "disabled";
|
||||
#perst-gpio = <&tlmm 15 1>;
|
||||
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 >;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,941 +0,0 @@
|
||||
/dts-v1/;
|
||||
/* Copyright (c) 2018-2020, The Linux Foundation. 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 <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
#address-cells = <0x2>;
|
||||
#size-cells = <0x2>;
|
||||
model = "Indio UM-525AXP";
|
||||
compatible = "indio,um-525axp", "qcom,ipq5018-mp03.5-c1", "qcom,ipq5018";
|
||||
interrupt-parent = <&intc>;
|
||||
|
||||
aliases {
|
||||
sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
|
||||
serial0 = &blsp1_uart1;
|
||||
serial1 = &blsp1_uart2;
|
||||
ethernet0 = "/soc/dp1";
|
||||
ethernet1 = "/soc/dp2";
|
||||
//led-failsafe = &led_red;
|
||||
//led-running = &led_green;
|
||||
//led-upgrade = &led_green;
|
||||
//led-gateway = &led_blue;
|
||||
//led-factory = &led_blue;
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyMSM0,115200,n8 rw init=/init";
|
||||
#ifdef __IPQ_MEM_PROFILE_256_MB__
|
||||
bootargs-append = " swiotlb=1";
|
||||
#else
|
||||
bootargs-append = " swiotlb=1 coherent_pool=2M";
|
||||
#endif
|
||||
stdout-path = "serial0";
|
||||
};
|
||||
|
||||
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 | 15MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | M3 Dump | 0x4E200000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | QDSS | 0x4E300000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | data | 0x4E400000 | 15MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | M3 Dump | 0x4F300000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | QDSS | 0x4F400000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | |
|
||||
* | Rest of the memory for Linux |
|
||||
* | |
|
||||
* +===================================================+
|
||||
*/
|
||||
q6_mem_regions: q6_mem_regions@4B000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4B000000 0x0 0x4500000>;
|
||||
};
|
||||
|
||||
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 0xF00000>;
|
||||
};
|
||||
|
||||
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_data2: q6_qcn6122_data2@4E400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E400000 0x0 0xF00000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6122_2: m3_dump_qcn6122_2@4F300000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4F300000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4F400000 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 | 14MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | M3 Dump | 0x4D200000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | QDSS | 0x4D300000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | Caldb | 0x4D400000 | 2MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | data | 0x4D600000 | 16MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | M3 Dump | 0x4E600000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | QDSS | 0x4E700000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | Caldb | 0x4E800000 | 5MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | data | 0x4ED00000 | 16MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | M3 Dump | 0x4FD00000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | QDSS | 0x4FE00000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | Caldb | 0x4FF00000 | 5MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | |
|
||||
* | Rest of the memory for Linux |
|
||||
* | |
|
||||
* +===================================================+
|
||||
*/
|
||||
q6_mem_regions: q6_mem_regions@4B000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4B000000 0x0 0x5400000>;
|
||||
};
|
||||
|
||||
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 0xE00000>;
|
||||
};
|
||||
|
||||
m3_dump: m3_dump@4D200000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D200000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_etr_region: q6_etr_dump@4D300000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D300000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_caldb_region: q6_caldb_region@4D400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D400000 0x0 0x200000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_data1: q6_qcn6122_data1@4D600000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D600000 0x0 0x1000000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E600000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E600000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E700000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E700000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E800000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E800000 0x0 0x500000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_data2: q6_qcn6122_data2@4E900000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4ED00000 0x0 0x1000000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6122_2: m3_dump_qcn6122_2@4FD00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4FD00000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_etr_2: q6_qcn6122_etr_2@4FE00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4FE00000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_caldb_2: q6_qcn6122_caldb_2@4FF00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4FF00000 0x0 0x500000>;
|
||||
};
|
||||
|
||||
#endif
|
||||
};
|
||||
|
||||
soc {
|
||||
gpio-watchdog {
|
||||
compatible = "linux,wdt-gpio";
|
||||
gpios = <&tlmm 27 GPIO_ACTIVE_LOW>;
|
||||
hw_algo = "toggle";
|
||||
hw_margin_ms = <5000>;
|
||||
always-running;
|
||||
};
|
||||
|
||||
serial@78af000 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
blsp1_uart2: serial@78b0000 {
|
||||
pinctrl-0 = <&blsp1_uart_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
qpic_bam: dma@7984000{
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
nand: qpic-nand@79b0000 {
|
||||
pinctrl-0 = <&qspi_nand_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
spi_0: spi@78b5000 { /* BLSP1 QUP0 */
|
||||
pinctrl-0 = <&blsp0_spi_pins>;
|
||||
pinctrl-names = "default";
|
||||
cs-select = <0>;
|
||||
status = "ok";
|
||||
|
||||
m25p80@0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0>;
|
||||
compatible = "n25q128a11";
|
||||
linux,modalias = "m25p80", "n25q128a11";
|
||||
spi-max-frequency = <50000000>;
|
||||
use-default-sizes;
|
||||
};
|
||||
};
|
||||
|
||||
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 = <28>;
|
||||
};
|
||||
};
|
||||
|
||||
ess-instance {
|
||||
num_devices = <0x1>;
|
||||
ess-switch@0x39c00000 {
|
||||
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>;
|
||||
mdiobus = <&mdio0>;
|
||||
};
|
||||
port@1 {
|
||||
port_id = <2>;
|
||||
phy_address = <0x1c>;
|
||||
mdiobus = <&mdio1>;
|
||||
port_mac_sel = "QGMAC_PORT";
|
||||
};
|
||||
};
|
||||
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 = <0x28>;
|
||||
switch_cpu_bmp = <0x40>; /* cpu port bitmap */
|
||||
switch_lan_bmp = <0x1e>; /* lan port bitmap */
|
||||
switch_wan_bmp = <0x0>; /* 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 = <28>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
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 = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
|
||||
qcom,mactype = <2>;
|
||||
qcom,link-poll = <1>;
|
||||
qcom,phy-mdio-addr = <7>;
|
||||
mdio-bus = <&mdio0>;
|
||||
local-mac-address = [000000000000];
|
||||
phy-mode = "sgmii";
|
||||
};
|
||||
|
||||
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 = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
|
||||
qcom,mactype = <2>;
|
||||
qcom,link-poll = <1>;
|
||||
qcom,phy-mdio-addr = <28>;
|
||||
mdio-bus = <&mdio1>;
|
||||
local-mac-address = [000000000000];
|
||||
phy-mode = "sgmii";
|
||||
};
|
||||
|
||||
qcom,test@0 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
nss-macsec1 {
|
||||
compatible = "qcom,nss-macsec";
|
||||
phy_addr = <0x1c>;
|
||||
mdiobus = <&mdio1>;
|
||||
};
|
||||
|
||||
lpass: lpass@0xA000000{
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pcm: pcm@0xA3C0000{
|
||||
pinctrl-0 = <&audio_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pcm_lb: pcm_lb@0 {
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
|
||||
thermal-zones {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&tlmm {
|
||||
pinctrl-0 = <&blsp0_uart_pins &phy_led_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
blsp0_uart_pins: uart_pins {
|
||||
blsp0_uart_rx_tx {
|
||||
pins = "gpio20", "gpio21";
|
||||
function = "blsp0_uart0";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
blsp1_uart_pins: blsp1_uart_pins {
|
||||
blsp1_uart_rx_tx {
|
||||
pins = "gpio22", "gpio24", "gpio23", "gpio25";
|
||||
function = "blsp1_uart2";
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
blsp0_spi_pins: blsp0_spi_pins {
|
||||
mux {
|
||||
pins = "gpio10", "gpio11", "gpio12", "gpio13";
|
||||
function = "blsp0_spi";
|
||||
drive-strength = <2>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
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_0 {
|
||||
pins = "gpio7";
|
||||
function = "qspi0";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
qspi_data_1 {
|
||||
pins = "gpio6";
|
||||
function = "qspi1";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
qspi_data_2 {
|
||||
pins = "gpio5";
|
||||
function = "qspi2";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
qspi_data_3 {
|
||||
pins = "gpio4";
|
||||
function = "qspi3";
|
||||
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;
|
||||
};
|
||||
};
|
||||
|
||||
phy_led_pins: phy_led_pins {
|
||||
gephy_led_pin {
|
||||
pins = "gpio46";
|
||||
function = "led0";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
i2c_pins: i2c_pins {
|
||||
i2c_scl {
|
||||
pins = "gpio25";
|
||||
function = "blsp2_i2c1";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
i2c_sda {
|
||||
pins = "gpio26";
|
||||
function = "blsp2_i2c1";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
button_pins: button_pins {
|
||||
reset_button {
|
||||
pins = "gpio38";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
audio_pins: audio_pinmux {
|
||||
};
|
||||
leds_pins: leds_pins {
|
||||
led_5g {
|
||||
pins = "gpio34";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
led_2g {
|
||||
pins = "gpio33";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
led_sys {
|
||||
pins = "gpio26";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
led_onekey {
|
||||
pins = "gpio28";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
gpio_keys {
|
||||
compatible = "gpio-keys";
|
||||
pinctrl-0 = <&button_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
button@1 {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
|
||||
linux,input-type = <1>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-0 = <&leds_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
led_blue: led@34 {
|
||||
label = "led_5g";
|
||||
gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_5g";
|
||||
default-state = "off";
|
||||
};
|
||||
led_green: led@33 {
|
||||
label = "led_2g";
|
||||
gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_2g";
|
||||
default-state = "off";
|
||||
};
|
||||
led_red: led@26 {
|
||||
label = "led_sys";
|
||||
gpios = <&tlmm 26 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_sys";
|
||||
default-state = "off";
|
||||
};
|
||||
led@28 {
|
||||
label = "led_onekey";
|
||||
gpios = <&tlmm 28 GPIO_ACTIVE_LOW>;
|
||||
linux,default-trigger = "led_onekey";
|
||||
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";
|
||||
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
|
||||
};
|
||||
};
|
||||
|
||||
&i2c_0 {
|
||||
pinctrl-0 = <&i2c_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&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 = <0x24>;
|
||||
#ifdef __CNSS2__
|
||||
qcom,bdf-addr = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4D400000 0x4D400000 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_userpd2";
|
||||
qcom,rproc = <&q6_wcss_pd2>;
|
||||
#ifdef __IPQ_MEM_PROFILE_256_MB__
|
||||
qcom,tgt-mem-mode = <2>;
|
||||
#else
|
||||
qcom,tgt-mem-mode = <1>;
|
||||
#endif
|
||||
qcom,board_id = <0x50>;
|
||||
#ifdef __CNSS2__
|
||||
qcom,bdf-addr = <0x4D600000 0x4D600000 0x4D300000 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4E800000 0x4E800000 0 0 0>;
|
||||
qcom,caldb-size = <0x500000>;
|
||||
mem-region = <&q6_qcn6122_data1>;
|
||||
#else
|
||||
memory-region = <&q6_qcn6122_data1>;
|
||||
#endif
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&wifi2 {
|
||||
/* QCN6122 6G */
|
||||
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 = <0xb0>;
|
||||
#ifdef __CNSS2__
|
||||
qcom,bdf-addr = <0x4ED00000 0x4ED00000 0x4E400000 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4FF00000 0x4FF00000 0 0 0>;
|
||||
qcom,caldb-size = <0x500000>;
|
||||
mem-region = <&q6_qcn6122_data2>;
|
||||
#else
|
||||
memory-region = <&q6_qcn6122_data2>;
|
||||
#endif
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
|
||||
&usb3 {
|
||||
status = "ok";
|
||||
device-power-gpio = <&tlmm 24 1>;
|
||||
};
|
||||
|
||||
&dwc_0 {
|
||||
/delete-property/ #phy-cells;
|
||||
/delete-property/ phys;
|
||||
/delete-property/ phy-names;
|
||||
};
|
||||
&hs_m31phy_0 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&eud {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&pcie_x1 {
|
||||
#status = "disabled";
|
||||
#perst-gpio = <&tlmm 18 1>;
|
||||
perst-gpio = <&tlmm 18 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
&pcie_x2 {
|
||||
#status = "disabled";
|
||||
#perst-gpio = <&tlmm 15 1>;
|
||||
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 >;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
@@ -151,14 +151,6 @@
|
||||
no-map;
|
||||
reg = <0x0 0x4F000000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
ramoops: ramoops@4f100000 {
|
||||
compatible = "ramoops";
|
||||
reg = <0x0 0x4f100000 0x0 0x80000>;
|
||||
record-size = <0x20000>;
|
||||
console-size = <0x20000>;
|
||||
pmsg-size = <0x20000>;
|
||||
};
|
||||
#else
|
||||
/* 512MB/1GB Profiles
|
||||
* +==========+==============+=========================+
|
||||
@@ -293,13 +285,6 @@
|
||||
reg = <0x0 0x4F800000 0x0 0x500000>;
|
||||
};
|
||||
|
||||
ramoops: ramoops@4fd00000 {
|
||||
compatible = "ramoops";
|
||||
reg = <0x0 0x4fd00000 0x0 0x80000>;
|
||||
record-size = <0x20000>;
|
||||
console-size = <0x20000>;
|
||||
pmsg-size = <0x20000>;
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -151,14 +151,6 @@
|
||||
no-map;
|
||||
reg = <0x0 0x4F000000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
ramoops: ramoops@4f100000 {
|
||||
compatible = "ramoops";
|
||||
reg = <0x0 0x4f100000 0x0 0x80000>;
|
||||
record-size = <0x20000>;
|
||||
console-size = <0x20000>;
|
||||
pmsg-size = <0x20000>;
|
||||
};
|
||||
#else
|
||||
/* 512MB/1GB Profiles
|
||||
* +==========+==============+=========================+
|
||||
@@ -293,13 +285,6 @@
|
||||
reg = <0x0 0x4F800000 0x0 0x500000>;
|
||||
};
|
||||
|
||||
ramoops: ramoops@4fd00000 {
|
||||
compatible = "ramoops";
|
||||
reg = <0x0 0x4fd00000 0x0 0x80000>;
|
||||
record-size = <0x20000>;
|
||||
console-size = <0x20000>;
|
||||
pmsg-size = <0x20000>;
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -154,14 +154,6 @@
|
||||
no-map;
|
||||
reg = <0x0 0x4F000000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
ramoops: ramoops@4f100000 {
|
||||
compatible = "ramoops";
|
||||
reg = <0x0 0x4f100000 0x0 0x80000>;
|
||||
record-size = <0x20000>;
|
||||
console-size = <0x20000>;
|
||||
pmsg-size = <0x20000>;
|
||||
};
|
||||
#else
|
||||
/* 512MB/1GB Profiles
|
||||
* +==========+==============+=========================+
|
||||
@@ -296,13 +288,6 @@
|
||||
reg = <0x0 0x4F800000 0x0 0x500000>;
|
||||
};
|
||||
|
||||
ramoops: ramoops@4fd00000 {
|
||||
compatible = "ramoops";
|
||||
reg = <0x0 0x4fd00000 0x0 0x80000>;
|
||||
record-size = <0x20000>;
|
||||
console-size = <0x20000>;
|
||||
pmsg-size = <0x20000>;
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -93,42 +93,6 @@ define Device/edgecore_eap104
|
||||
endef
|
||||
TARGET_DEVICES += edgecore_eap104
|
||||
|
||||
define Device/indio_um-325ax-v2
|
||||
DEVICE_TITLE := Indio UM-325ax-V2
|
||||
DEVICE_DTS := qcom-ipq5018-indio-um-325ax-v2
|
||||
SUPPORTED_DEVICES := indio,um-325ax-v2
|
||||
DEVICE_PACKAGES := ath11k-wifi-indio-um-325ax-v2 ath11k-firmware-ipq50xx-spruce ath11k-firmware-qcn6122
|
||||
DEVICE_DTS_CONFIG := config@mp03.5-c1
|
||||
endef
|
||||
TARGET_DEVICES += indio_um-325ax-v2
|
||||
|
||||
define Device/indio_um-335ax
|
||||
DEVICE_TITLE := Indio UM-335ax
|
||||
DEVICE_DTS := qcom-ipq5018-indio-um-335ax
|
||||
SUPPORTED_DEVICES := indio,um-335ax
|
||||
DEVICE_PACKAGES := ath11k-wifi-indio-um-335ax ath11k-firmware-qcn9000 ath11k-firmware-ipq50xx-spruce
|
||||
DEVICE_DTS_CONFIG := config@mp03.1
|
||||
endef
|
||||
TARGET_DEVICES += indio_um-335ax
|
||||
|
||||
define Device/indio_um-525axp
|
||||
DEVICE_TITLE := Indio UM-525axp
|
||||
DEVICE_DTS := qcom-ipq5018-indio-um-525axp
|
||||
SUPPORTED_DEVICES := indio,um-525axp
|
||||
DEVICE_PACKAGES := ath11k-wifi-indio-um-525axp ath11k-firmware-ipq50xx-spruce ath11k-firmware-qcn6122
|
||||
DEVICE_DTS_CONFIG := config@mp03.5-c1
|
||||
endef
|
||||
TARGET_DEVICES += indio_um-525axp
|
||||
|
||||
define Device/indio_um-525axm
|
||||
DEVICE_TITLE := Indio UM-525axm
|
||||
DEVICE_DTS := qcom-ipq5018-indio-um-525axm
|
||||
SUPPORTED_DEVICES := indio,um-525axm
|
||||
DEVICE_PACKAGES := ath11k-wifi-indio-um-525axm ath11k-firmware-ipq50xx-spruce ath11k-firmware-qcn6122
|
||||
DEVICE_DTS_CONFIG := config@mp03.5-c1
|
||||
endef
|
||||
TARGET_DEVICES += indio_um-525axm
|
||||
|
||||
define Device/udaya_a6_id2
|
||||
DEVICE_TITLE := Udaya A6 - ID2
|
||||
DEVICE_DTS := qcom-ipq5018-udaya-a6-id2
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
From 375d0d25e6c02991392e44956c81cbac84909f49 Mon Sep 17 00:00:00 2001
|
||||
From: Venkat Chimata <venkat@nearhop.com>
|
||||
Date: Thu, 4 Sep 2025 00:09:17 +0530
|
||||
Subject: [PATCH] wifi: ap: mitigate peer-delete WMI timeout to reduce blind
|
||||
period & prevent peer leaks
|
||||
|
||||
1. When a connected client roams to another AP, the AP is trying to delete the peer
|
||||
but for some reason the WMI command times out and while driver is waiting for
|
||||
the response, we observed that the AP doesn't respond to any frames from STA
|
||||
(probe requests, authentication etc) and once the response times out (3seconds default)
|
||||
then AP starts responding to the older requets but client has already connected to
|
||||
another AP. As the root cause for the response timing out is in the FW, we added
|
||||
a WAR to reduce the timeout to minimize this blind period, with this AP responds
|
||||
after 100ms and client connects successfully. And 100ms timeout is also reasonable
|
||||
for this internal operation.
|
||||
2. In case of peer deletion timeout, the driver peer database is not cleared, so,
|
||||
if this happens often (which it is) then eventually we hit the max peers in the
|
||||
driver and all subsequent operations fail, so, in case of timeout ignore the failure
|
||||
and proceed with driver peer database cleanup.
|
||||
|
||||
Signed-off-by: Venkat Chimata <venkat@nearhop.com>
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/peer.c | 7 +++++--
|
||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ath/ath11k/peer.c b/drivers/net/wireless/ath/ath11k/peer.c
|
||||
index 1907067..aefc6ba 100644
|
||||
--- a/drivers/net/wireless/ath/ath11k/peer.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/peer.c
|
||||
@@ -771,7 +771,7 @@ int ath11k_wait_for_peer_delete_done(struct ath11k *ar, u32 vdev_id,
|
||||
}
|
||||
|
||||
time_left = wait_for_completion_timeout(&ar->peer_delete_done,
|
||||
- 3 * HZ);
|
||||
+ 100 * HZ / 1000);
|
||||
if (time_left == 0) {
|
||||
ath11k_warn(ar->ab, "Timeout in receiving peer delete response\n");
|
||||
return -ETIMEDOUT;
|
||||
@@ -857,7 +857,10 @@ int ath11k_peer_delete(struct ath11k *ar, u32 vdev_id, u8 *addr)
|
||||
}
|
||||
|
||||
ret = ath11k_wait_for_peer_delete_done(ar, vdev_id, addr);
|
||||
- if (ret)
|
||||
+ /* WAR: For the timeout case, proceed to delete the peer anyway, as FW is
|
||||
+ * still functional, without this, driver ends up hitting max peers
|
||||
+ */
|
||||
+ if (ret && ret != -ETIMEDOUT)
|
||||
return ret;
|
||||
|
||||
ATH11K_MEMORY_STATS_DEC(ar->ab, per_peer_object,
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
--- a/drivers/net/wireless/ath/ath11k/peer.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/peer.c
|
||||
@@ -902,6 +902,7 @@ int ath11k_peer_create(struct ath11k *ar
|
||||
if (vdev_id == param->vdev_id)
|
||||
return -EINVAL;
|
||||
|
||||
+ ath11k_dp_peer_cleanup(ar, vdev_id, param->peer_addr);
|
||||
ath11k_peer_delete(ar, vdev_id, param->peer_addr);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
From a54e43285c22bcca9e4020156ccb68d7adcfce18 Mon Sep 17 00:00:00 2001
|
||||
From: Backports Generator <backports@generator.local>
|
||||
Date: Thu, 4 Sep 2025 16:32:05 -0400
|
||||
Subject: [PATCH] peer debug logs
|
||||
|
||||
Signed-off-by: Backports Generator <backports@generator.local>
|
||||
---
|
||||
drivers/net/wireless/ath/ath11k/mac.c | 4 ++++
|
||||
drivers/net/wireless/ath/ath11k/peer.c | 8 +++++++-
|
||||
2 files changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
index 10925f2..6bf9c2e 100644
|
||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||
@@ -5750,6 +5750,8 @@ static int ath11k_mac_op_sta_state(struct ieee80211_hw *hw,
|
||||
list_del(&peer->list);
|
||||
kfree(peer);
|
||||
ar->num_peers--;
|
||||
+ ath11k_dbg(ar->ab, ATH11K_DBG_PEER, "%s peer deleted %pM vdev_id: %d num_peers: %d\n",
|
||||
+ __func__, sta->addr, arvif->vdev_id, ar->num_peers);
|
||||
}
|
||||
spin_unlock_bh(&ar->ab->base_lock);
|
||||
mutex_unlock(&ar->ab->tbl_mtx_lock);
|
||||
@@ -7847,6 +7849,8 @@ err_peer_del:
|
||||
goto err_keyid;
|
||||
|
||||
ar->num_peers--;
|
||||
+ ath11k_dbg(ar->ab, ATH11K_DBG_PEER, "%s vif peer deleted %pM vdev_id: %d num_peers: %d\n",
|
||||
+ __func__, vif->addr, arvif->vdev_id, ar->num_peers);
|
||||
}
|
||||
|
||||
err_vdev_del:
|
||||
diff --git a/drivers/net/wireless/ath/ath11k/peer.c b/drivers/net/wireless/ath/ath11k/peer.c
|
||||
index aefc6ba..72ce1ae 100644
|
||||
--- a/drivers/net/wireless/ath/ath11k/peer.c
|
||||
+++ b/drivers/net/wireless/ath/ath11k/peer.c
|
||||
@@ -744,6 +744,8 @@ void ath11k_peer_cleanup(struct ath11k *ar, u32 vdev_id)
|
||||
list_del(&peer->list);
|
||||
kfree(peer);
|
||||
ar->num_peers--;
|
||||
+ ath11k_dbg(ar->ab, ATH11K_DBG_PEER, "%s peer cleanup %pM vdev_id: %d num_peers: %d\n",
|
||||
+ __func__, peer->addr, vdev_id, ar->num_peers);
|
||||
}
|
||||
|
||||
spin_unlock_bh(&ab->base_lock);
|
||||
@@ -868,6 +870,9 @@ int ath11k_peer_delete(struct ath11k *ar, u32 vdev_id, u8 *addr)
|
||||
|
||||
ar->num_peers--;
|
||||
|
||||
+ ath11k_dbg(ar->ab, ATH11K_DBG_PEER, "%s peer deleted %pM vdev_id: %d num_peers: %d\n",
|
||||
+ __func__, addr, vdev_id, ar->num_peers);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -970,7 +975,8 @@ int ath11k_peer_create(struct ath11k *ar, struct ath11k_vif *arvif,
|
||||
ar->num_peers++;
|
||||
|
||||
if (ath11k_mac_sta_level_info(arvif, sta)) {
|
||||
- ath11k_dbg(ar->ab, ATH11K_DBG_PEER, "peer created %pM\n", param->peer_addr);
|
||||
+ ath11k_dbg(ar->ab, ATH11K_DBG_PEER, "peer created %pM vdev_id: %d num_peers: %d\n",
|
||||
+ param->peer_addr, param->vdev_id, ar->num_peers);
|
||||
peer->peer_logging_enabled = true;
|
||||
}
|
||||
|
||||
--
|
||||
2.50.1
|
||||
|
||||
@@ -169,8 +169,7 @@
|
||||
compatible = "mediatek,eth-mac";
|
||||
reg = <0>;
|
||||
phy-mode = "sgmii";
|
||||
phy-handle = <&phy30>;
|
||||
phy-handle2 = <&phy1>;
|
||||
phy-handle = <&phy1>; // add phy handler
|
||||
mtd-mac-address = <&factory 0x24>;
|
||||
};
|
||||
|
||||
@@ -194,16 +193,6 @@
|
||||
nvmem-cell-names = "phy-cal-data";
|
||||
};
|
||||
|
||||
phy30: ethernet-phy@30 { // AN8801SB
|
||||
compatible = "ethernet-phy-idc0ff.0421";
|
||||
reg = <30>; //0x1e
|
||||
phy-mode = "sgmii";
|
||||
full-duplex;
|
||||
pause;
|
||||
airoha,surge = <0>;
|
||||
airoha,polarity = <2>;
|
||||
};
|
||||
|
||||
phy1: ethernet-phy@1 {
|
||||
compatible = "ethernet-phy-id03a2.9471";
|
||||
reg = <24>; // set phy address to 0x18
|
||||
@@ -211,8 +200,9 @@
|
||||
reset-assert-us = <600>;
|
||||
reset-deassert-us = <20000>;
|
||||
phy-mode = "sgmii";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
&hnat {
|
||||
|
||||
@@ -93,11 +93,6 @@ $(call Package/ath12k-wifi-default)
|
||||
TITLE:=board-2.bin for NWA130BE
|
||||
endef
|
||||
|
||||
define Package/ath12k-wifi-zyxel-nwa50be
|
||||
$(call Package/ath12k-wifi-default)
|
||||
TITLE:=board-2.bin for NWA50BE
|
||||
endef
|
||||
|
||||
define Package/ath12k-wifi-cig-wf672
|
||||
$(call Package/ath12k-wifi-default)
|
||||
TITLE:=board-2.bin for WF672
|
||||
@@ -196,14 +191,6 @@ define Package/ath12k-wifi-zyxel-nwa130be/install
|
||||
$(INSTALL_DATA) ./board-2.bin.nwa130be.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin
|
||||
endef
|
||||
|
||||
define Package/ath12k-wifi-zyxel-nwa50be/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN6432/hw1.0/
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/
|
||||
$(INSTALL_DATA) ./board-2.bin.nwa50be.QCN6432 $(1)/lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin
|
||||
$(INSTALL_DATA) ./board-2.bin.nwa50be.IPQ5332 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin
|
||||
$(INSTALL_DATA) ./ipq5332_qcn6432.regdb $(1)/lib/firmware/ath12k/QCN6432/hw1.0/regdb.bin
|
||||
endef
|
||||
|
||||
define Package/ath12k-wifi-cig-wf672/install
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/
|
||||
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/
|
||||
@@ -223,5 +210,4 @@ $(eval $(call BuildPackage,ath12k-wifi-cig-wf189h))
|
||||
$(eval $(call BuildPackage,ath12k-wifi-sercomm-ap72tip))
|
||||
$(eval $(call BuildPackage,ath12k-wifi-sercomm-ap72tip-v4))
|
||||
$(eval $(call BuildPackage,ath12k-wifi-zyxel-nwa130be))
|
||||
$(eval $(call BuildPackage,ath12k-wifi-zyxel-nwa50be))
|
||||
$(eval $(call BuildPackage,ath12k-wifi-cig-wf672))
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
[
|
||||
{
|
||||
"board": [
|
||||
{
|
||||
"names": [
|
||||
"bus=ahb,qmi-chip-id=0,qmi-board-id=18"
|
||||
],
|
||||
"data": "nwa50be-IPQ5332.bin"
|
||||
}
|
||||
],
|
||||
"regdb": [
|
||||
{
|
||||
"names": [
|
||||
"bus=ahb,qmi-chip-id=0,qmi-board-id=18"
|
||||
],
|
||||
"data": "ipq5332.regdb"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -1,20 +0,0 @@
|
||||
[
|
||||
{
|
||||
"board": [
|
||||
{
|
||||
"names": [
|
||||
"bus=ahb,qmi-chip-id=0,qmi-board-id=112"
|
||||
],
|
||||
"data": "nwa50be-QCN6432.bin"
|
||||
}
|
||||
],
|
||||
"regdb": [
|
||||
{
|
||||
"names": [
|
||||
"bus=ahb,qmi-chip-id=0,qmi-board-id=112"
|
||||
],
|
||||
"data": "ipq5332_qcn6432.regdb"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -18,6 +18,3 @@ $encoder -c board-2-ap72tip-v4-QCN92XX.json -o board-2.bin.ap72tip-v4.QCN92XX
|
||||
|
||||
$encoder -c board-2-nwa130be-IPQ5332.json -o board-2.bin.nwa130be.IPQ5332
|
||||
$encoder -c board-2-nwa130be-QCN92XX.json -o board-2.bin.nwa130be.QCN92XX
|
||||
|
||||
$encoder -c board-2-nwa50be-IPQ5332.json -o board-2.bin.nwa50be.IPQ5332
|
||||
$encoder -c board-2-nwa50be-QCN6432.json -o board-2.bin.nwa50be.QCN6432
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -24,9 +24,7 @@ endef
|
||||
|
||||
define KernelPackage/cig-wifi-mode-sw/install
|
||||
$(INSTALL_DIR) $(1)/usr/sbin/
|
||||
$(INSTALL_DIR) $(1)/etc/init.d/
|
||||
$(INSTALL_BIN) ./files/cig_wifi_mode_sw $(1)/usr/sbin/cig_wms
|
||||
$(INSTALL_BIN) ./files/cig_wifi_mode_boot $(1)/etc/init.d/cig_wmb
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,cig-wifi-mode-sw))
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=60
|
||||
|
||||
boot(){
|
||||
local bands=$(cat /proc/rf_switch)
|
||||
|
||||
if [ "x$bands" = "x3" ]; then
|
||||
echo "AFC is not ready, switch to 2-band mode" >/dev/console
|
||||
echo 2 > /proc/rf_switch
|
||||
firstboot -y -r
|
||||
fi
|
||||
}
|
||||
@@ -259,13 +259,8 @@ const phy_proto = {
|
||||
addr[0] ^= idx << 2;
|
||||
break;
|
||||
case "b5":
|
||||
if (mbssid) {
|
||||
let b5 = addr[5];
|
||||
addr[5] = addr[3];
|
||||
addr[3] = b5;
|
||||
addr[5] &= ~0xf;
|
||||
if (mbssid)
|
||||
addr[0] |= 2;
|
||||
}
|
||||
addr[5] ^= idx;
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -14,17 +14,13 @@ ipq53xx_setup_interfaces()
|
||||
;;
|
||||
cig,wf189|\
|
||||
edgecore,eap105|\
|
||||
sercomm,ap72tip)
|
||||
ucidef_set_interfaces_lan_wan "eth1" "eth0"
|
||||
;;
|
||||
sercomm,ap72tip|\
|
||||
sonicfi,rap750w-311a)
|
||||
ucidef_set_interfaces_lan_wan "eth1" "eth0"
|
||||
ucidef_add_switch "switch1" "0u@eth1" "3:lan" "2:lan" "1:lan"
|
||||
;;
|
||||
sonicfi,rap7110c-341x|\
|
||||
sonicfi,rap750e-h|\
|
||||
sonicfi,rap750e-s|\
|
||||
zyxel,nwa50be)
|
||||
sonicfi,rap750e-s)
|
||||
ucidef_set_interfaces_lan_wan "" "eth0"
|
||||
;;
|
||||
cig,wf189w)
|
||||
@@ -131,16 +127,6 @@ qcom_setup_macs()
|
||||
ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 3)
|
||||
ucidef_set_wireless_macaddr_base 6g $(macaddr_add "$wan_mac" 4)
|
||||
;;
|
||||
zyxel,nwa50be)
|
||||
wan_mac=$(cat /proc/cmdline)
|
||||
wan_mac="${wan_mac##*hwaddr=}"
|
||||
wan_mac="${wan_mac%% *}"
|
||||
wan_mac="$(echo ${wan_mac} | sed 's/\(..\)/\1:/g;s/:$//')"
|
||||
ucidef_set_network_device_mac eth0 $wan_mac
|
||||
ucidef_set_label_macaddr $wan_mac
|
||||
ucidef_set_wireless_macaddr_base 2g $(macaddr_add "$wan_mac" 1)
|
||||
ucidef_set_wireless_macaddr_base 5g $(macaddr_add "$wan_mac" 2)
|
||||
;;
|
||||
*)
|
||||
wan_mac=$(cat /sys/class/net/eth1/address)
|
||||
lan_mac=$(macaddr_add "$wan_mac" 1)
|
||||
|
||||
@@ -67,9 +67,8 @@ ath12k/IPQ5332/hw1.0/caldata.bin)
|
||||
emplus,wap7635|\
|
||||
sercomm,ap72tip-v4|\
|
||||
sercomm,ap72tip|\
|
||||
zyxel,nwa130be|\
|
||||
zyxel,nwa50be)
|
||||
caldata_extract "0:ART" 0x1000 0x20000
|
||||
zyxel,nwa130be)
|
||||
caldata_extract "0:ART" 0x1000 0x20000
|
||||
;;
|
||||
cig,wf672)
|
||||
cig_ipq5322_cal
|
||||
@@ -125,9 +124,6 @@ ath12k/QCN6432/hw1.0/cal-ahb-soc@0:wifi2@c0000000.bin)
|
||||
cig,wf189w)
|
||||
caldata_extract "0:ART" 0x58800 0x20000
|
||||
;;
|
||||
zyxel,nwa50be)
|
||||
caldata_extract "0:ART" 0x58800 0x2d000
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
ath12k/IPQ5332/hw1.0/board-2.bin)
|
||||
|
||||
@@ -9,5 +9,14 @@ boot() {
|
||||
edgecore,eap105)
|
||||
ssdk_sh debug phy set 0x1 0x601FD032 0xff
|
||||
;;
|
||||
zyxel,nwa130be)
|
||||
#eth0: APPE: phyaddr 4 green:2.5G orange:others
|
||||
ssdk_sh debug phy set 4 0x40078074 0x670
|
||||
ssdk_sh debug phy set 4 0x40078078 0x8600
|
||||
|
||||
#eth1: MHT: phyaddr 3 green:2.5G orange:others
|
||||
ssdk_sh debug phy set 3 0x40078074 0x670
|
||||
ssdk_sh debug phy set 3 0x40078078 0x8600
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
@@ -174,8 +174,7 @@ platform_do_upgrade() {
|
||||
sonicfi_dualimage_check
|
||||
nand_upgrade_tar "$1"
|
||||
;;
|
||||
zyxel,nwa130be|\
|
||||
zyxel,nwa50be)
|
||||
zyxel,nwa130be)
|
||||
nand_upgrade_tar "$1"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -1180,7 +1180,7 @@ CONFIG_QTI_LICENSE_MANAGER=y
|
||||
# CONFIG_SYMBOLIC_ERRNAME is not set
|
||||
# CONFIG_LEDS_BRIGHTNESS_HW_CHANGED is not set
|
||||
# CONFIG_LEDS_CLASS_MULTICOLOR is not set
|
||||
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
|
||||
# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
|
||||
# CONFIG_MITIGATE_SPECTRE_BRANCH_HISTORY is not set
|
||||
# CONFIG_PINCTRL_SINGLE is not set
|
||||
# CONFIG_RANDOM_TRUST_BOOTLOADER is not set
|
||||
|
||||
@@ -18,21 +18,6 @@
|
||||
model = "Zyxel NWA130BE";
|
||||
compatible = "zyxel,nwa130be", "qcom,ipq5332-ap-mi01.6", "qcom,ipq5332-rdp468", "qcom,ipq5332";
|
||||
|
||||
reserved-memory {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
ranges;
|
||||
|
||||
ramoops@49c00000 {
|
||||
compatible = "ramoops";
|
||||
no-map;
|
||||
reg = <0x0 0x49c00000 0x0 0x100000>;
|
||||
record-size = <0x20000>;
|
||||
console-size = <0x20000>;
|
||||
pmsg-size = <0x20000>;
|
||||
};
|
||||
};
|
||||
|
||||
aliases {
|
||||
serial0 = &blsp1_uart0;
|
||||
serial1 = &blsp1_uart1;
|
||||
@@ -143,26 +128,6 @@
|
||||
blink_en = "enable";
|
||||
active = "high";
|
||||
};
|
||||
|
||||
qcom,port_ledinfo {
|
||||
port@1 {
|
||||
port = <2>;
|
||||
led_source@0 {
|
||||
source = <0>;
|
||||
mode = "normal";
|
||||
speed = "2500M";
|
||||
active = "high";
|
||||
blink_en = "enable";
|
||||
};
|
||||
led_source@1 {
|
||||
source = <1>;
|
||||
mode = "normal";
|
||||
speed = "10M", "100M","1000M";
|
||||
active = "high";
|
||||
blink_en = "enable";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ess-switch1@1 {
|
||||
@@ -199,26 +164,6 @@
|
||||
};
|
||||
};
|
||||
|
||||
qcom,port_ledinfo {
|
||||
port@3 {
|
||||
port = <3>;
|
||||
led_source@0 {
|
||||
source = <0>;
|
||||
mode = "normal";
|
||||
speed = "2500M";
|
||||
active = "high";
|
||||
blink_en = "enable";
|
||||
};
|
||||
led_source@1 {
|
||||
source = <1>;
|
||||
mode = "normal";
|
||||
speed = "10M", "100M","1000M";
|
||||
active = "high";
|
||||
blink_en = "enable";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
led_source@2 {
|
||||
source = <2>;
|
||||
mode = "normal";
|
||||
|
||||
@@ -1,956 +0,0 @@
|
||||
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
|
||||
/*
|
||||
* IPQ5332 RDP442 board device tree source
|
||||
*
|
||||
* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "ipq5332.dtsi"
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include "ipq5332-default-memory.dtsi"
|
||||
|
||||
|
||||
/ {
|
||||
model = "Qualcomm Technologies, Inc. IPQ5332/RDP442/AP-MI01.3";
|
||||
compatible = "zyxel,nwa50be", "qcom,ipq5332-ap-mi01.3", "qcom,ipq5332-rdp442", "qcom,ipq5332";
|
||||
|
||||
#ifdef __IPQ_MEM_PROFILE_512_MB__
|
||||
|
||||
/* 512M Layout for IPQ5332 + QCN6432 + QCN6432
|
||||
* +==========+==============+========================+
|
||||
* | | | |
|
||||
* | Region | Start Offset | Size |
|
||||
* | | | |
|
||||
* +---------+--------------+-------------------------+
|
||||
* | Q6 | | |
|
||||
* | code/ | 0x4A900000 | 25MB |
|
||||
* | data | | |
|
||||
* +---------+--------------+-------------------------+
|
||||
* | IPQ5332 | | |
|
||||
* | data | 0x4C200000 | 17MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* | IPQ5332 | | |
|
||||
* | M3 Dump | 0x4D300000 | 1MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* | IPQ5332 | | |
|
||||
* | QDSS | 0x4D400000 | 1MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* | IPQ5332 | | |
|
||||
* | CALDB | 0x4D500000 | 3MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_1| | |
|
||||
* | data | 0x4D800000 | 16MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_1| | |
|
||||
* | M3 Dump | 0x4E800000 | 1MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_1| | |
|
||||
* | QDSS | 0x4E900000 | 1MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_1| | |
|
||||
* | CALDB | 0x4EA00000 | 5MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_2| | |
|
||||
* | data | 0x4EF00000 | 16MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_2| | |
|
||||
* | M3 Dump | 0x4FF00000 | 1MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_2| | |
|
||||
* | QDSS | 0x50000000 | 1MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_2| | |
|
||||
* | CALDB | 0x50100000 | 5MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* | | | |
|
||||
* | MLO | 0x50600000 | 12MB |
|
||||
* +==================================================+
|
||||
* | |
|
||||
* | |
|
||||
* | |
|
||||
* | Rest of memory for Linux |
|
||||
* | |
|
||||
* | |
|
||||
* | |
|
||||
* +==================================================+
|
||||
*/
|
||||
|
||||
reserved-memory {
|
||||
|
||||
/delete-node/ m3_dump@4cc00000;
|
||||
/delete-node/ q6_etr_dump@1;
|
||||
/delete-node/ mlo_global_mem_0@0x4db00000;
|
||||
/delete-node/ wcnss@4a900000;
|
||||
/delete-node/ q6_caldb_region@4ce00000;
|
||||
|
||||
q6_mem_regions: q6_mem_regions@4A900000 {
|
||||
reg = <0x0 0x4a900000 0x0 0x5D00000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
q6_code_data: q6_code_data@4A900000 {
|
||||
reg = <0x0 0x4a900000 0x0 0x1900000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
q6_ipq5332_data: q6_ipq5332_data@4C200000 {
|
||||
reg = <0x0 0x4C200000 0x0 0x1100000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
m3_dump: m3_dump@4D300000 {
|
||||
reg = <0x0 0x4D300000 0x0 0x100000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
q6_etr_region: q6_etr_dump@4D400000 {
|
||||
reg = <0x0 0x4D400000 0x0 0x100000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
q6_ipq5332_caldb: q6_ipq5332_caldb@4D500000 {
|
||||
reg = <0x0 0x4D500000 0x0 0x300000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
q6_qcn6432_data_1: q6_qcn6432_data_1@4D800000 {
|
||||
reg = <0x0 0x4D800000 0x0 0x1000000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
m3_dump_qcn6432_1: m3_dump_qcn6432_1@4E800000 {
|
||||
reg = <0x0 0x4E800000 0x0 0x100000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
q6_qcn6432_etr_1: q6_qcn6432_etr_1@4E900000 {
|
||||
reg = <0x0 0x4E900000 0x0 0x100000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
q6_qcn6432_caldb_1: q6_qcn6432_caldb_1@4EA00000 {
|
||||
reg = <0x0 0x4EA00000 0x0 0x500000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
q6_qcn6432_data_2: q6_qcn6432_data_2@4EF00000 {
|
||||
reg = <0x0 0x4EF00000 0x0 0x1000000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
m3_dump_qcn6432_2: m3_dump_qcn6432_2@4FF00000 {
|
||||
reg = <0x0 0x4FF00000 0x0 0x100000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
q6_qcn6432_etr_2: q6_qcn6432_etr_2@50000000 {
|
||||
reg = <0x0 0x50000000 0x0 0x100000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
q6_qcn6432_caldb_2: q6_qcn6432_caldb_2@50100000 {
|
||||
reg = <0x0 0x50100000 0x0 0x500000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
mlo_global_mem0: mlo_global_mem_0@50600000 {
|
||||
reg = <0x0 0x50600000 0x0 0xC00000>;
|
||||
no-map;
|
||||
};
|
||||
};
|
||||
#else
|
||||
|
||||
/* 1G Layout for IPQ5332 + QCN6432 + QCN6432
|
||||
* +==========+==============+========================+
|
||||
* | | | |
|
||||
* | Region | Start Offset | Size |
|
||||
* | | | |
|
||||
* +---------+--------------+-------------------------+
|
||||
* | Q6 | | |
|
||||
* | code/ | 0x4A900000 | 25MB |
|
||||
* | data | | |
|
||||
* +---------+--------------+-------------------------+
|
||||
* | IPQ5332 | | |
|
||||
* | data | 0x4C200000 | 21MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* | IPQ5332 | | |
|
||||
* | M3 Dump | 0x4D700000 | 1MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* | IPQ5332 | | |
|
||||
* | QDSS | 0x4D800000 | 1MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* | IPQ5332 | | |
|
||||
* | CALDB | 0x4D900000 | 5MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_1| | |
|
||||
* | data | 0x4DE00000 | 21MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_1| | |
|
||||
* | M3 Dump | 0x4F300000 | 1MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_1| | |
|
||||
* | QDSS | 0x4F400000 | 1MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_1| | |
|
||||
* | CALDB | 0x4F500000 | 5MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_2| | |
|
||||
* | data | 0x4FA00000 | 21MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_2| | |
|
||||
* | M3 Dump | 0x50F00000 | 1MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_2| | |
|
||||
* | QDSS | 0x51000000 | 1MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* |QCN6432_2| | |
|
||||
* | CALDB | 0x51100000 | 5MB |
|
||||
* +---------+--------------+-------------------------+
|
||||
* | | | |
|
||||
* | MLO | 0x51600000 | 12MB |
|
||||
* +==================================================+
|
||||
* | |
|
||||
* | |
|
||||
* | |
|
||||
* | Rest of memory for Linux |
|
||||
* | |
|
||||
* | |
|
||||
* | |
|
||||
* +==================================================+
|
||||
*/
|
||||
reserved-memory {
|
||||
|
||||
/delete-node/ m3_dump@4cc00000;
|
||||
/delete-node/ q6_etr_dump@1;
|
||||
/delete-node/ mlo_global_mem_0@0x4db00000;
|
||||
/delete-node/ wcnss@4a900000;
|
||||
/delete-node/ q6_caldb_region@4ce00000;
|
||||
|
||||
ramoops@49c00000 {
|
||||
compatible = "ramoops";
|
||||
reg = <0x0 0x49c00000 0x0 0x100000>;
|
||||
record-size = <0x20000>;
|
||||
console-size = <0x20000>;
|
||||
pmsg-size = <0x20000>;
|
||||
};
|
||||
|
||||
q6_mem_regions: q6_mem_regions@4A900000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4a900000 0x0 0x6D00000>;
|
||||
};
|
||||
|
||||
q6_code_data: q6_code_data@4A900000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4a900000 0x0 0x1900000>;
|
||||
};
|
||||
|
||||
q6_ipq5332_data: q6_ipq5332_data@4C200000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4C200000 0x0 0x1500000>;
|
||||
};
|
||||
|
||||
m3_dump: m3_dump@4D700000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D700000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_etr_region: q6_etr_dump@4D800000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D800000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_ipq5332_caldb: q6_ipq5332_caldb@4D900000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D900000 0x0 0x500000>;
|
||||
};
|
||||
|
||||
q6_qcn6432_data_1: q6_qcn6432_data_1@4DE00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4DE00000 0x0 0x1500000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6432_1: m3_dump_qcn6432_1@4F300000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4F300000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6432_etr_1: q6_qcn6432_etr_1@4F400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4F400000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6432_caldb_1: q6_qcn6432_caldb_1@4F500000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4F500000 0x0 0x500000>;
|
||||
};
|
||||
|
||||
q6_qcn6432_data_2: q6_qcn6432_data_2@4FA00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4FA00000 0x0 0x1500000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6432_2: m3_dump_qcn6432_2@50F00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x50F00000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6432_etr_2: q6_qcn6432_etr_2@51000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x51000000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6432_caldb_2: q6_qcn6432_caldb_2@51100000 {
|
||||
no-map;
|
||||
reg = <0x0 0x51100000 0x0 0x500000>;
|
||||
};
|
||||
|
||||
mlo_global_mem0: mlo_global_mem_0@51600000 {
|
||||
no-map;
|
||||
reg = <0x0 0x51600000 0x0 0xC00000>;
|
||||
};
|
||||
};
|
||||
#endif
|
||||
|
||||
aliases {
|
||||
serial0 = &blsp1_uart0;
|
||||
serial1 = &blsp1_uart1;
|
||||
ethernet0 = "/soc/dp1";
|
||||
ethernet1 = "/soc/dp2";
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0";
|
||||
};
|
||||
|
||||
soc@0 {
|
||||
mdio:mdio@90000 {
|
||||
pinctrl-0 = <&mdio1_pins>;
|
||||
pinctrl-names = "default";
|
||||
/*gpio22 is for wan napa, gpio51 for lan napa*/
|
||||
phy-reset-gpio = <&tlmm 51 GPIO_ACTIVE_LOW>;
|
||||
status = "okay";
|
||||
|
||||
phy2: ethernet-phy@2 {
|
||||
reg = <28>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-0 = <&led_pins>;
|
||||
pinctrl-names = "default";
|
||||
led_blue{
|
||||
label = "led_blue";
|
||||
gpio = <&tlmm 22 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "led_blue";
|
||||
default-state = "off";
|
||||
};
|
||||
led_green {
|
||||
label = "led_green";
|
||||
gpio = <&tlmm 45 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "led_green";
|
||||
default-state = "on";
|
||||
};
|
||||
led_white {
|
||||
label = "led_white";
|
||||
gpio = <&tlmm 43 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "led_white";
|
||||
default-state = "off";
|
||||
};
|
||||
led_red {
|
||||
label = "led_red";
|
||||
gpio = <&tlmm 44 GPIO_ACTIVE_HIGH>;
|
||||
linux,default-trigger = "led_red";
|
||||
default-state = "off";
|
||||
};
|
||||
};
|
||||
|
||||
gpio_keys {
|
||||
compatible = "gpio-keys";
|
||||
pinctrl-0 = <&button_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
button@1 {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&tlmm 30 GPIO_ACTIVE_LOW>;
|
||||
linux,input-type = <1>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
ess-instance {
|
||||
ess-switch@3a000000 {
|
||||
switch_cpu_bmp = <0x1>; /* cpu port bitmap */
|
||||
switch_lan_bmp = <0x4>; /* lan port bitmap */
|
||||
switch_wan_bmp = <0x0>; /* wan port bitmap */
|
||||
switch_mac_mode = <0xf>; /* mac mode for uniphy instance0*/
|
||||
switch_mac_mode1 = <0xc>; /* mac mode for uniphy instance1*/
|
||||
switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/
|
||||
qcom,port_phyinfo {
|
||||
port@0 {
|
||||
port_id = <2>;
|
||||
phy_address = <28>;
|
||||
};
|
||||
};
|
||||
qcom,port_ledinfo {
|
||||
port@0 {
|
||||
port = <2>;
|
||||
led_source@0 {
|
||||
source = <0>;
|
||||
mode = "normal";
|
||||
speed = "2500M";
|
||||
active = "high";
|
||||
blink_en = "enable";
|
||||
};
|
||||
led_source@1 {
|
||||
source = <1>;
|
||||
mode = "normal";
|
||||
speed = "10M", "100M","1000M";
|
||||
active = "high";
|
||||
blink_en = "enable";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
dp1 {
|
||||
device_type = "network";
|
||||
compatible = "qcom,nss-dp";
|
||||
qcom,id = <2>;
|
||||
reg = <0x3a504000 0x4000>;
|
||||
qcom,mactype = <1>;
|
||||
local-mac-address = [000000000000];
|
||||
mdio-bus = <&mdio>;
|
||||
qcom,phy-mdio-addr = <28>;
|
||||
qcom,link-poll = <1>;
|
||||
phy-mode = "sgmii";
|
||||
};
|
||||
|
||||
nss-macsec0 {
|
||||
compatible = "qcom,nss-macsec";
|
||||
phy_addr = <28>;
|
||||
mdiobus = <&mdio>;
|
||||
};
|
||||
|
||||
/* EDMA host driver configuration for the board */
|
||||
edma@3ab00000 {
|
||||
qcom,txdesc-ring-start = <4>; /* Tx desc ring start ID */
|
||||
qcom,txdesc-rings = <12>; /* Total number of Tx desc rings to be provisioned */
|
||||
qcom,mht-txdesc-rings = <8>; /* Extra Tx desc rings to be provisioned for MHT SW ports */
|
||||
qcom,txcmpl-ring-start = <4>; /* Tx complete ring start ID */
|
||||
qcom,txcmpl-rings = <12>; /* Total number of Tx complete rings to be provisioned */
|
||||
qcom,mht-txcmpl-rings = <8>; /* Extra Tx complete rings to be provisioned for mht sw ports. */
|
||||
qcom,rxfill-ring-start = <4>; /* Rx fill ring start ID */
|
||||
qcom,rxfill-rings = <4>; /* Total number of Rx fill rings to be provisioned */
|
||||
qcom,rxdesc-ring-start = <12>; /* Rx desc ring start ID */
|
||||
qcom,rxdesc-rings = <4>; /* Total number of Rx desc rings to be provisioned */
|
||||
qcom,rx-page-mode = <0>; /* Rx fill ring page mode */
|
||||
qcom,tx-map-priority-level = <1>; /* Tx priority level per port */
|
||||
qcom,rx-map-priority-level = <1>; /* Rx priority level per core */
|
||||
qcom,ppeds-num = <2>; /* Number of PPEDS nodes */
|
||||
/* PPE-DS node format: <Rx-fill Tx-cmpl Rx Tx Queue-base Queue-count> */
|
||||
qcom,ppeds-map = <1 1 1 1 32 8>, /* PPEDS Node#0 ring and queue map */
|
||||
<2 2 2 2 40 8>; /* PPEDS Node#1 ring and queue map */
|
||||
qcom,txdesc-map = <8 9 10 11>, /* Port0 per-core Tx ring map */
|
||||
<12 13 14 15>, /* MHT-Port1 per-core Tx ring map */
|
||||
<4 5 6 7>, /* MHT-Port2 per-core Tx ring map/packets from vp*/
|
||||
<16 17 18 19>, /* MHT-Port3 per-core Tx ring map */
|
||||
<20 21 22 23>; /* MHT-Port4 per-core Tx ring map */
|
||||
qcom,txdesc-fc-grp-map = <1 2 3 4 5>; /* Per GMAC flow control group map */
|
||||
qcom,rxfill-map = <4 5 6 7>; /* Per-core Rx fill ring map */
|
||||
qcom,rxdesc-map = <12 13 14 15>; /* Per-core Rx desc ring map */
|
||||
qcom,rx-queue-start = <0>; /* Rx queue start */
|
||||
qcom,rx-ring-queue-map = <0 8 16 24>, /* Priority 0 queues per-core Rx ring map */
|
||||
<1 9 17 25>, /* Priority 1 queues per-core Rx ring map */
|
||||
<2 10 18 26>, /* Priority 2 queues per-core Rx ring map */
|
||||
<3 11 19 27>, /* Priority 3 queues per-core Rx ring map */
|
||||
<4 12 20 28>, /* Priority 4 queues per-core Rx ring map */
|
||||
<5 13 21 29>, /* Priority 5 queues per-core Rx ring map */
|
||||
<6 14 22 30>, /* Priority 6 queues per-core Rx ring map */
|
||||
<7 15 23 31>; /* Priority 7 queues per-core Rx ring map */
|
||||
interrupts = <0 163 4>, /* Tx complete ring id #4 IRQ info */
|
||||
<0 164 4>, /* Tx complete ring id #5 IRQ info */
|
||||
<0 165 4>, /* Tx complete ring id #6 IRQ info */
|
||||
<0 166 4>, /* Tx complete ring id #7 IRQ info */
|
||||
<0 167 4>, /* Tx complete ring id #8 IRQ info */
|
||||
<0 168 4>, /* Tx complete ring id #9 IRQ info */
|
||||
<0 169 4>, /* Tx complete ring id #10 IRQ info */
|
||||
<0 170 4>, /* Tx complete ring id #11 IRQ info */
|
||||
<0 171 4>, /* Tx complete ring id #12 IRQ info */
|
||||
<0 172 4>, /* Tx complete ring id #13 IRQ info */
|
||||
<0 173 4>, /* Tx complete ring id #14 IRQ info */
|
||||
<0 174 4>, /* Tx complete ring id #15 IRQ info */
|
||||
<0 139 4>, /* Rx desc ring id #12 IRQ info */
|
||||
<0 140 4>, /* Rx desc ring id #13 IRQ info */
|
||||
<0 141 4>, /* Rx desc ring id #14 IRQ info */
|
||||
<0 142 4>, /* Rx desc ring id #15 IRQ info */
|
||||
<0 191 4>, /* Misc error IRQ info */
|
||||
<0 160 4>, /* PPEDS Node #1(TxComp ring id #1) TxComplete IRQ info */
|
||||
<0 128 4>, /* PPEDS Node #1(Rx Desc ring id #1) Rx Desc IRQ info */
|
||||
<0 152 4>, /* PPEDS Node #1(RxFill Desc ring id #1) Rx Fill IRQ info */
|
||||
<0 161 4>, /* PPEDS Node #2(TxComp ring id #2) TxComplete IRQ info */
|
||||
<0 129 4>, /* PPEDS Node #2(Rx Desc ring id #2) Rx Desc IRQ info */
|
||||
<0 153 4>, /* PPEDS Node #2(RxFill Desc ring id #2) Rx Fill IRQ info */
|
||||
<0 175 4>, /* MHT port Tx complete ring id #16 IRQ info */
|
||||
<0 176 4>, /* MHT port Tx complete ring id #17 IRQ info */
|
||||
<0 177 4>, /* MHT port Tx complete ring id #18 IRQ info */
|
||||
<0 178 4>, /* MHT port Tx complete ring id #19 IRQ info */
|
||||
<0 179 4>, /* MHT port Tx complete ring id #20 IRQ info */
|
||||
<0 180 4>, /* MHT port Tx complete ring id #21 IRQ info */
|
||||
<0 181 4>, /* MHT port Tx complete ring id #22 IRQ info */
|
||||
<0 182 4>; /* MHT port Tx complete ring id #23 IRQ info */
|
||||
};
|
||||
|
||||
wsi: wsi {
|
||||
id = <0>;
|
||||
num_chip = <2>;
|
||||
chip_info = <0 1 1>,
|
||||
<1 1 0>;
|
||||
};
|
||||
|
||||
q6v5_wcss: remoteproc@d100000 {
|
||||
boot-args = <0x1 0x4 0x3 0x0 0x26 0x2>,
|
||||
<0x1 0x4 0x4 0x1 0x2f 0x2>;
|
||||
memory-region = <&q6_mem_regions>;
|
||||
|
||||
/delete-node/ remoteproc_pd1;
|
||||
/delete-node/ remoteproc_pd2;
|
||||
/delete-node/ remoteproc_pd3;
|
||||
|
||||
q6_wcss_pd4: remoteproc_pd4 {
|
||||
compatible = "qcom,ipq5332-mpd-upd-text";
|
||||
firmware = "IPQ5332/q6_fw4.mdt";
|
||||
|
||||
q6_wcss_pd1: remoteproc_pd1 {
|
||||
compatible = "qcom,ipq5332-wcss-ahb-mpd";
|
||||
firmware = "IPQ5332/q6_fw1.mdt";
|
||||
m3_firmware = "IPQ5332/iu_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";
|
||||
|
||||
qcom,smem-states = <&wcss_smp2p_out 8>,
|
||||
<&wcss_smp2p_out 9>,
|
||||
<&wcss_smp2p_out 10>;
|
||||
qcom,smem-state-names = "shutdown",
|
||||
"stop",
|
||||
"spawn";
|
||||
memory-region = <&q6_ipq5332_data>,
|
||||
<&m3_dump>,
|
||||
<&q6_etr_region>,
|
||||
<&q6_ipq5332_caldb>;
|
||||
};
|
||||
|
||||
q6_wcss_pd2: remoteproc_pd2 {
|
||||
compatible = "qcom,ipq5332-wcss-pcie-mpd";
|
||||
firmware = "IPQ5332/q6_fw2.mdt";
|
||||
m3_firmware = "qcn6432/iu_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";
|
||||
memory-region = <&q6_qcn6432_data_1>,
|
||||
<&m3_dump_qcn6432_1>,
|
||||
<&q6_qcn6432_etr_1>,
|
||||
<&q6_qcn6432_caldb_1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
q6_wcss_pd3: remoteproc_pd3 {
|
||||
compatible = "qcom,ipq5332-wcss-pcie-mpd";
|
||||
firmware = "IPQ5332/q6_fw3.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";
|
||||
memory-region = <&q6_qcn6432_data_2>,
|
||||
<&m3_dump_qcn6432_2>,
|
||||
<&q6_qcn6432_etr_2>,
|
||||
<&q6_qcn6432_caldb_2>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&blsp1_uart0 {
|
||||
pinctrl-0 = <&serial_0_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&blsp1_uart1 {
|
||||
pinctrl-0 = <&serial_1_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&blsp1_i2c1 {
|
||||
clock-frequency = <400000>;
|
||||
pinctrl-0 = <&i2c_1_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&blsp1_spi0 {
|
||||
pinctrl-0 = <&spi_0_data_clk_pins &spi_0_cs_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
compatible = "n25q128a11", "micron,n25q128a11", "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
spi-max-frequency = <50000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&sdhc {
|
||||
bus-width = <4>;
|
||||
max-frequency = <192000000>;
|
||||
mmc-ddr-1_8v;
|
||||
mmc-hs200-1_8v;
|
||||
non-removable;
|
||||
pinctrl-0 = <&sdc_default_state>;
|
||||
pinctrl-names = "default";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&sleep_clk {
|
||||
clock-frequency = <32000>;
|
||||
};
|
||||
|
||||
&xo {
|
||||
clock-frequency = <24000000>;
|
||||
};
|
||||
|
||||
&qpic_bam {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&qpic_nand {
|
||||
pinctrl-0 = <&qspi_default_state>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
|
||||
nandcs@0 {
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
nand-ecc-strength = <8>;
|
||||
nand-ecc-step-size = <512>;
|
||||
nand-bus-width = <8>;
|
||||
};
|
||||
};
|
||||
|
||||
/* PINCTRL */
|
||||
|
||||
&tlmm {
|
||||
|
||||
led_pins: led_pins {
|
||||
board_info {
|
||||
pins = "gpio2", "gpio3";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
input-enable;
|
||||
};
|
||||
|
||||
apd_dc_in {
|
||||
pins = "gpio24";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down; //Adapter un-plug
|
||||
input-enable;
|
||||
};
|
||||
|
||||
poe_status {
|
||||
pins = "gpio34";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up; //AF
|
||||
input-enable;
|
||||
};
|
||||
|
||||
/* To MR pin */
|
||||
rst_mb {
|
||||
pins = "gpio29";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
output-high;
|
||||
};
|
||||
|
||||
led_blue {
|
||||
pins = "gpio22";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
led_green {
|
||||
pins = "gpio45";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
led_white {
|
||||
pins = "gpio43";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
led_red {
|
||||
pins = "gpio44";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
qspi_default_state: qspi-default-state {
|
||||
qspi_clock {
|
||||
pins = "gpio13";
|
||||
function = "qspi_clk";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
qspi_cs {
|
||||
pins = "gpio12";
|
||||
function = "qspi_cs";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
qspi_data {
|
||||
pins = "gpio8", "gpio9", "gpio10", "gpio11";
|
||||
function = "qspi_data";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
|
||||
serial_1_pins: serial1-pinmux {
|
||||
pins = "gpio33", "gpio34", "gpio35", "gpio36";
|
||||
function = "blsp1_uart2";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
i2c_1_pins: i2c-1-state {
|
||||
pins = "gpio29", "gpio30";
|
||||
function = "blsp1_i2c0";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
button_pins: button-state {
|
||||
pins = "gpio35";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
pwm_pins: pwm-state {
|
||||
pins = "gpio46";
|
||||
function = "pwm0";
|
||||
drive-strength = <8>;
|
||||
};
|
||||
|
||||
sdc_default_state: sdc-default-state {
|
||||
clk-pins {
|
||||
pins = "gpio13";
|
||||
function = "sdc_clk";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
cmd-pins {
|
||||
pins = "gpio12";
|
||||
function = "sdc_cmd";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
data-pins {
|
||||
pins = "gpio8", "gpio9", "gpio10", "gpio11";
|
||||
function = "sdc_data";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
spi_0_data_clk_pins: spi-0-data-clk-state {
|
||||
pins = "gpio14", "gpio15", "gpio16";
|
||||
function = "blsp0_spi";
|
||||
drive-strength = <2>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
spi_0_cs_pins: spi-0-cs-state {
|
||||
pins = "gpio17";
|
||||
function = "blsp0_spi";
|
||||
drive-strength = <2>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
mdio1_pins: mdio1-state {
|
||||
mux_0 {
|
||||
pins = "gpio27";
|
||||
function = "mdc1";
|
||||
drive-strength = <2>;
|
||||
bias-pull-up;
|
||||
};
|
||||
mux_1 {
|
||||
pins = "gpio28";
|
||||
function = "mdio1";
|
||||
drive-strength = <2>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&license_manager {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb3 {
|
||||
qcom,select-utmi-as-pipe-clk;
|
||||
status = "okay";
|
||||
|
||||
dwc3@8a00000 {
|
||||
/delete-property/ #phy-cells;
|
||||
/delete-property/ phys;
|
||||
/delete-property/ phy-names;
|
||||
};
|
||||
};
|
||||
|
||||
&pwm {
|
||||
pinctrl-0 = <&pwm_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hs_m31phy_0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
qcom,multipd_arch;
|
||||
qcom,rproc = <&q6_wcss_pd1>;
|
||||
qcom,rproc_rpd = <&q6v5_wcss>;
|
||||
qcom,userpd-subsys-name = "q6v5_wcss_userpd1";
|
||||
qcom,bdf-addr = <0x4C200000 0x4C200000 0x4C200000 0x0 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4D900000 0x4D500000 0x0 0x0 0x0 0x0>;
|
||||
#ifdef __IPQ_MEM_PROFILE_512_MB__
|
||||
qcom,tgt-mem-mode = <1>;
|
||||
qcom,caldb-size = <0x300000>;
|
||||
#else
|
||||
qcom,tgt-mem-mode = <0>;
|
||||
qcom,caldb-size = <0x500000>;
|
||||
#endif
|
||||
qcom,board_id = <0x12>;
|
||||
#if defined(__CNSS2__)
|
||||
mem-region = <&q6_ipq5332_data>;
|
||||
#else
|
||||
memory-region = <&q6_ipq5332_data>;
|
||||
#endif
|
||||
qcom,wsi = <&wsi>;
|
||||
qcom,wsi_index = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
qcom,multipd_arch;
|
||||
qcom,rproc = <&q6_wcss_pd2>;
|
||||
qcom,rproc_rpd = <&q6v5_wcss>;
|
||||
qcom,userpd-subsys-name = "q6v5_wcss_userpd2";
|
||||
qcom,bdf-addr = <0x4DE00000 0x4D800000 0x0 0x0 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4F500000 0x4EA00000 0x0 0x0 0x0 0x0>;
|
||||
qcom,umac-irq-reset-addr = <0x20000884>;
|
||||
qcom,caldb-size = <0x500000>;
|
||||
#ifdef __IPQ_MEM_PROFILE_512_MB__
|
||||
qcom,tgt-mem-mode = <1>;
|
||||
#else
|
||||
qcom,tgt-mem-mode = <0>;
|
||||
#endif
|
||||
qcom,board_id = <0x060>;
|
||||
#if defined(__CNSS2__)
|
||||
mem-region = <&q6_qcn6432_data_1>;
|
||||
#else
|
||||
memory-region = <&q6_qcn6432_data_1>;
|
||||
#endif
|
||||
qcom,wsi = <&wsi>;
|
||||
qcom,wsi_index = <1>;
|
||||
status = "disabled";
|
||||
interrupts = <GIC_SPI 33 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "umac_reset";
|
||||
};
|
||||
|
||||
&wifi2 {
|
||||
qcom,multipd_arch;
|
||||
qcom,rproc = <&q6_wcss_pd3>;
|
||||
qcom,rproc_rpd = <&q6v5_wcss>;
|
||||
qcom,userpd-subsys-name = "q6v5_wcss_userpd3";
|
||||
qcom,bdf-addr = <0x4FA00000 0x4EF00000 0x4FA00000 0x0 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x51100000 0x50100000 0x51100000 0x0 0x0 0x0>;
|
||||
qcom,umac-irq-reset-addr = <0x18000884>;
|
||||
qcom,caldb-size = <0x500000>;
|
||||
#ifdef __IPQ_MEM_PROFILE_512_MB__
|
||||
qcom,tgt-mem-mode = <1>;
|
||||
#else
|
||||
qcom,tgt-mem-mode = <0>;
|
||||
#endif
|
||||
qcom,board_id = <0x070>;
|
||||
#if defined(__CNSS2__)
|
||||
mem-region = <&q6_qcn6432_data_2>;
|
||||
#else
|
||||
memory-region = <&q6_qcn6432_data_2>;
|
||||
#endif
|
||||
qcom,wsi = <&wsi>;
|
||||
qcom,wsi_index = <1>;
|
||||
qcom,wide_band = <1>;
|
||||
status = "okay";
|
||||
interrupts = <GIC_SPI 410 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "umac_reset";
|
||||
};
|
||||
@@ -162,22 +162,6 @@ define Device/zyxel_nwa130be
|
||||
endef
|
||||
TARGET_DEVICES += zyxel_nwa130be
|
||||
|
||||
|
||||
define Device/zyxel_nwa50be
|
||||
DEVICE_TITLE := Zyxel NWA50BE
|
||||
DEVICE_DTS := ipq5332-zyxel-nwa50be
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
DEVICE_DTS_CONFIG := config@mi01.3
|
||||
IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata
|
||||
IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand
|
||||
IMAGE/nand-factory.ubi := append-ubi
|
||||
DEVICE_PACKAGES := ath12k-wifi-zyxel-nwa50be ath12k-firmware-ipq5332-peb-peb -ath12k-firmware-qcn92xx
|
||||
endef
|
||||
TARGET_DEVICES += zyxel_nwa50be
|
||||
|
||||
define Device/cig_wf672
|
||||
DEVICE_TITLE := CIG WF672
|
||||
DEVICE_DTS := ipq5332-cig-wf672
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
From f7b27331b915477cd289c37b56efb0d28b2d6f38 Mon Sep 17 00:00:00 2001
|
||||
From: Antonio Wu <antonio.wu@cybertan.com.tw>
|
||||
Date: Tue, 5 Aug 2025 10:39:58 +0000
|
||||
Subject: [PATCH] Add IPQ_MEM_PROFILE in arm64 kconfig
|
||||
|
||||
---
|
||||
arch/arm64/Kconfig | 10 ++++++++++
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
|
||||
index 702a289..7864e79 100644
|
||||
--- a/arch/arm64/Kconfig
|
||||
+++ b/arch/arm64/Kconfig
|
||||
@@ -2143,6 +2143,16 @@ config STACKPROTECTOR_PER_TASK
|
||||
def_bool y
|
||||
depends on STACKPROTECTOR && CC_HAVE_STACKPROTECTOR_SYSREG
|
||||
|
||||
+config IPQ_MEM_PROFILE
|
||||
+ int "Select Memory Profile"
|
||||
+ range 0 1024
|
||||
+ default 0
|
||||
+ help
|
||||
+ This option select memory profile to be used, which defines
|
||||
+ the reserved memory configuration used in device tree.
|
||||
+
|
||||
+ If unsure, say 0
|
||||
+
|
||||
# The GPIO number here must be sorted by descending number. In case of
|
||||
# a multiplatform kernel, we just want the highest value required by the
|
||||
# selected platforms.
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
Index: backports-6.5-rc3/drivers/net/wireless/ath/ath12k/thermal.h
|
||||
===================================================================
|
||||
--- backports-6.5-rc3.orig/drivers/net/wireless/ath/ath12k/thermal.h
|
||||
+++ backports-6.5-rc3/drivers/net/wireless/ath/ath12k/thermal.h
|
||||
@@ -13,35 +13,35 @@
|
||||
|
||||
/* Below temperatures are in celsius */
|
||||
#define ATH12K_THERMAL_LVL0_TEMP_LOW_MARK -100
|
||||
-#define ATH12K_THERMAL_LVL0_TEMP_HIGH_MARK 100
|
||||
-#define ATH12K_THERMAL_LVL1_TEMP_LOW_MARK 95
|
||||
-#define ATH12K_THERMAL_LVL1_TEMP_HIGH_MARK 105
|
||||
-#define ATH12K_THERMAL_LVL2_TEMP_LOW_MARK 100
|
||||
-#define ATH12K_THERMAL_LVL2_TEMP_HIGH_MARK 110
|
||||
-#define ATH12K_THERMAL_LVL3_TEMP_LOW_MARK 105
|
||||
-#define ATH12K_THERMAL_LVL3_TEMP_HIGH_MARK 120
|
||||
+#define ATH12K_THERMAL_LVL0_TEMP_HIGH_MARK 110
|
||||
+#define ATH12K_THERMAL_LVL1_TEMP_LOW_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL1_TEMP_HIGH_MARK 115
|
||||
+#define ATH12K_THERMAL_LVL2_TEMP_LOW_MARK 110
|
||||
+#define ATH12K_THERMAL_LVL2_TEMP_HIGH_MARK 120
|
||||
+#define ATH12K_THERMAL_LVL3_TEMP_LOW_MARK 115
|
||||
+#define ATH12K_THERMAL_LVL3_TEMP_HIGH_MARK 125
|
||||
|
||||
#define ATH12K_THERMAL_LVL0_V2_TEMP_LOW_MARK -100
|
||||
-#define ATH12K_THERMAL_LVL0_V2_TEMP_HIGH_MARK 95
|
||||
-#define ATH12K_THERMAL_LVL1_V2_TEMP_LOW_MARK 90
|
||||
-#define ATH12K_THERMAL_LVL1_V2_TEMP_HIGH_MARK 100
|
||||
-#define ATH12K_THERMAL_LVL2_V2_TEMP_LOW_MARK 95
|
||||
-#define ATH12K_THERMAL_LVL2_V2_TEMP_HIGH_MARK 105
|
||||
-#define ATH12K_THERMAL_LVL3_V2_TEMP_LOW_MARK 100
|
||||
-#define ATH12K_THERMAL_LVL3_V2_TEMP_HIGH_MARK 110
|
||||
-#define ATH12K_THERMAL_LVL4_V2_TEMP_LOW_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL0_V2_TEMP_HIGH_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL1_V2_TEMP_LOW_MARK 100
|
||||
+#define ATH12K_THERMAL_LVL1_V2_TEMP_HIGH_MARK 110
|
||||
+#define ATH12K_THERMAL_LVL2_V2_TEMP_LOW_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL2_V2_TEMP_HIGH_MARK 115
|
||||
+#define ATH12K_THERMAL_LVL3_V2_TEMP_LOW_MARK 110
|
||||
+#define ATH12K_THERMAL_LVL3_V2_TEMP_HIGH_MARK 120
|
||||
+#define ATH12K_THERMAL_LVL4_V2_TEMP_LOW_MARK 110
|
||||
#define ATH12K_THERMAL_LVL4_V2_TEMP_HIGH_MARK 120
|
||||
|
||||
#define ATH12K_THERMAL_LVL0_DUTY_CYCLE 0
|
||||
-#define ATH12K_THERMAL_LVL1_DUTY_CYCLE 50
|
||||
-#define ATH12K_THERMAL_LVL2_DUTY_CYCLE 90
|
||||
-#define ATH12K_THERMAL_LVL3_DUTY_CYCLE 100
|
||||
+#define ATH12K_THERMAL_LVL1_DUTY_CYCLE 30
|
||||
+#define ATH12K_THERMAL_LVL2_DUTY_CYCLE 50
|
||||
+#define ATH12K_THERMAL_LVL3_DUTY_CYCLE 70
|
||||
|
||||
-#define ATH12K_THERMAL_LVL0_V2_DUTY_CYCLE ATH12K_THERMAL_LVL0_DUTY_CYCLE
|
||||
-#define ATH12K_THERMAL_LVL1_V2_DUTY_CYCLE ATH12K_THERMAL_LVL0_DUTY_CYCLE
|
||||
-#define ATH12K_THERMAL_LVL2_V2_DUTY_CYCLE ATH12K_THERMAL_LVL1_DUTY_CYCLE
|
||||
-#define ATH12K_THERMAL_LVL3_V2_DUTY_CYCLE ATH12K_THERMAL_LVL2_DUTY_CYCLE
|
||||
-#define ATH12K_THERMAL_LVL4_V2_DUTY_CYCLE ATH12K_THERMAL_LVL3_DUTY_CYCLE
|
||||
+#define ATH12K_THERMAL_LVL0_V2_DUTY_CYCLE 0
|
||||
+#define ATH12K_THERMAL_LVL1_V2_DUTY_CYCLE 20
|
||||
+#define ATH12K_THERMAL_LVL2_V2_DUTY_CYCLE 40
|
||||
+#define ATH12K_THERMAL_LVL3_V2_DUTY_CYCLE 80
|
||||
+#define ATH12K_THERMAL_LVL4_V2_DUTY_CYCLE 100
|
||||
|
||||
#define THERMAL_CONFIG_POUT0 0
|
||||
#define THERMAL_CONFIG_POUT1 12
|
||||
@@ -1,57 +0,0 @@
|
||||
--- a/drivers/net/wireless/ath/ath12k/thermal.h
|
||||
+++ b/drivers/net/wireless/ath/ath12k/thermal.h
|
||||
@@ -13,34 +13,34 @@
|
||||
|
||||
/* Below temperatures are in celsius */
|
||||
#define ATH12K_THERMAL_LVL0_TEMP_LOW_MARK -100
|
||||
-#define ATH12K_THERMAL_LVL0_TEMP_HIGH_MARK 100
|
||||
-#define ATH12K_THERMAL_LVL1_TEMP_LOW_MARK 95
|
||||
-#define ATH12K_THERMAL_LVL1_TEMP_HIGH_MARK 105
|
||||
-#define ATH12K_THERMAL_LVL2_TEMP_LOW_MARK 100
|
||||
-#define ATH12K_THERMAL_LVL2_TEMP_HIGH_MARK 110
|
||||
-#define ATH12K_THERMAL_LVL3_TEMP_LOW_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL0_TEMP_HIGH_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL1_TEMP_LOW_MARK 100
|
||||
+#define ATH12K_THERMAL_LVL1_TEMP_HIGH_MARK 110
|
||||
+#define ATH12K_THERMAL_LVL2_TEMP_LOW_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL2_TEMP_HIGH_MARK 115
|
||||
+#define ATH12K_THERMAL_LVL3_TEMP_LOW_MARK 110
|
||||
#define ATH12K_THERMAL_LVL3_TEMP_HIGH_MARK 120
|
||||
|
||||
#define ATH12K_THERMAL_LVL0_V2_TEMP_LOW_MARK -100
|
||||
-#define ATH12K_THERMAL_LVL0_V2_TEMP_HIGH_MARK 95
|
||||
-#define ATH12K_THERMAL_LVL1_V2_TEMP_LOW_MARK 90
|
||||
-#define ATH12K_THERMAL_LVL1_V2_TEMP_HIGH_MARK 100
|
||||
-#define ATH12K_THERMAL_LVL2_V2_TEMP_LOW_MARK 95
|
||||
-#define ATH12K_THERMAL_LVL2_V2_TEMP_HIGH_MARK 105
|
||||
-#define ATH12K_THERMAL_LVL3_V2_TEMP_LOW_MARK 100
|
||||
-#define ATH12K_THERMAL_LVL3_V2_TEMP_HIGH_MARK 110
|
||||
-#define ATH12K_THERMAL_LVL4_V2_TEMP_LOW_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL0_V2_TEMP_HIGH_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL1_V2_TEMP_LOW_MARK 100
|
||||
+#define ATH12K_THERMAL_LVL1_V2_TEMP_HIGH_MARK 110
|
||||
+#define ATH12K_THERMAL_LVL2_V2_TEMP_LOW_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL2_V2_TEMP_HIGH_MARK 115
|
||||
+#define ATH12K_THERMAL_LVL3_V2_TEMP_LOW_MARK 110
|
||||
+#define ATH12K_THERMAL_LVL3_V2_TEMP_HIGH_MARK 120
|
||||
+#define ATH12K_THERMAL_LVL4_V2_TEMP_LOW_MARK 110
|
||||
#define ATH12K_THERMAL_LVL4_V2_TEMP_HIGH_MARK 120
|
||||
|
||||
#define ATH12K_THERMAL_LVL0_DUTY_CYCLE 0
|
||||
-#define ATH12K_THERMAL_LVL1_DUTY_CYCLE 50
|
||||
-#define ATH12K_THERMAL_LVL2_DUTY_CYCLE 90
|
||||
-#define ATH12K_THERMAL_LVL3_DUTY_CYCLE 100
|
||||
+#define ATH12K_THERMAL_LVL1_DUTY_CYCLE 30
|
||||
+#define ATH12K_THERMAL_LVL2_DUTY_CYCLE 50
|
||||
+#define ATH12K_THERMAL_LVL3_DUTY_CYCLE 70
|
||||
|
||||
#define ATH12K_THERMAL_LVL0_V2_DUTY_CYCLE ATH12K_THERMAL_LVL0_DUTY_CYCLE
|
||||
-#define ATH12K_THERMAL_LVL1_V2_DUTY_CYCLE ATH12K_THERMAL_LVL0_DUTY_CYCLE
|
||||
-#define ATH12K_THERMAL_LVL2_V2_DUTY_CYCLE ATH12K_THERMAL_LVL1_DUTY_CYCLE
|
||||
-#define ATH12K_THERMAL_LVL3_V2_DUTY_CYCLE ATH12K_THERMAL_LVL2_DUTY_CYCLE
|
||||
+#define ATH12K_THERMAL_LVL1_V2_DUTY_CYCLE ATH12K_THERMAL_LVL1_DUTY_CYCLE
|
||||
+#define ATH12K_THERMAL_LVL2_V2_DUTY_CYCLE ATH12K_THERMAL_LVL2_DUTY_CYCLE
|
||||
+#define ATH12K_THERMAL_LVL3_V2_DUTY_CYCLE ATH12K_THERMAL_LVL3_DUTY_CYCLE
|
||||
#define ATH12K_THERMAL_LVL4_V2_DUTY_CYCLE ATH12K_THERMAL_LVL3_DUTY_CYCLE
|
||||
|
||||
#define THERMAL_CONFIG_POUT0 0
|
||||
@@ -1,74 +0,0 @@
|
||||
From 357da3320f8bcad056b905fb85cad3a29c343d31 Mon Sep 17 00:00:00 2001
|
||||
From: YenLin Pan <yenlin.pan@zyxel.com.tw>
|
||||
Date: Tue, 12 Aug 2025 15:41:39 +0800
|
||||
Subject: [PATCH] thermal: thermal setting
|
||||
|
||||
lo0 -100 -hi0 105 -off0 0
|
||||
lo1 95 -hi1 110 -off1 20
|
||||
lo2 100 -hi2 115 -off2 60
|
||||
lo3 105 -hi3 119 -off3 98
|
||||
|
||||
Signed-off-by: YenLin Pan <YenLin.Pan@zyxel.com.tw>
|
||||
---
|
||||
drivers/net/wireless/ath/ath12k/thermal.h | 34 +++++++++++------------
|
||||
1 file changed, 17 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/ath/ath12k/thermal.h b/drivers/net/wireless/ath/ath12k/thermal.h
|
||||
index 5c91906..e81f9a4 100644
|
||||
--- a/drivers/net/wireless/ath/ath12k/thermal.h
|
||||
+++ b/drivers/net/wireless/ath/ath12k/thermal.h
|
||||
@@ -13,34 +13,34 @@
|
||||
|
||||
/* Below temperatures are in celsius */
|
||||
#define ATH12K_THERMAL_LVL0_TEMP_LOW_MARK -100
|
||||
-#define ATH12K_THERMAL_LVL0_TEMP_HIGH_MARK 100
|
||||
+#define ATH12K_THERMAL_LVL0_TEMP_HIGH_MARK 105
|
||||
#define ATH12K_THERMAL_LVL1_TEMP_LOW_MARK 95
|
||||
-#define ATH12K_THERMAL_LVL1_TEMP_HIGH_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL1_TEMP_HIGH_MARK 110
|
||||
#define ATH12K_THERMAL_LVL2_TEMP_LOW_MARK 100
|
||||
-#define ATH12K_THERMAL_LVL2_TEMP_HIGH_MARK 110
|
||||
+#define ATH12K_THERMAL_LVL2_TEMP_HIGH_MARK 115
|
||||
#define ATH12K_THERMAL_LVL3_TEMP_LOW_MARK 105
|
||||
-#define ATH12K_THERMAL_LVL3_TEMP_HIGH_MARK 120
|
||||
+#define ATH12K_THERMAL_LVL3_TEMP_HIGH_MARK 119
|
||||
|
||||
#define ATH12K_THERMAL_LVL0_V2_TEMP_LOW_MARK -100
|
||||
-#define ATH12K_THERMAL_LVL0_V2_TEMP_HIGH_MARK 95
|
||||
-#define ATH12K_THERMAL_LVL1_V2_TEMP_LOW_MARK 90
|
||||
-#define ATH12K_THERMAL_LVL1_V2_TEMP_HIGH_MARK 100
|
||||
-#define ATH12K_THERMAL_LVL2_V2_TEMP_LOW_MARK 95
|
||||
-#define ATH12K_THERMAL_LVL2_V2_TEMP_HIGH_MARK 105
|
||||
-#define ATH12K_THERMAL_LVL3_V2_TEMP_LOW_MARK 100
|
||||
-#define ATH12K_THERMAL_LVL3_V2_TEMP_HIGH_MARK 110
|
||||
+#define ATH12K_THERMAL_LVL0_V2_TEMP_HIGH_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL1_V2_TEMP_LOW_MARK 95
|
||||
+#define ATH12K_THERMAL_LVL1_V2_TEMP_HIGH_MARK 110
|
||||
+#define ATH12K_THERMAL_LVL2_V2_TEMP_LOW_MARK 100
|
||||
+#define ATH12K_THERMAL_LVL2_V2_TEMP_HIGH_MARK 115
|
||||
+#define ATH12K_THERMAL_LVL3_V2_TEMP_LOW_MARK 105
|
||||
+#define ATH12K_THERMAL_LVL3_V2_TEMP_HIGH_MARK 119
|
||||
#define ATH12K_THERMAL_LVL4_V2_TEMP_LOW_MARK 105
|
||||
#define ATH12K_THERMAL_LVL4_V2_TEMP_HIGH_MARK 120
|
||||
|
||||
#define ATH12K_THERMAL_LVL0_DUTY_CYCLE 0
|
||||
-#define ATH12K_THERMAL_LVL1_DUTY_CYCLE 50
|
||||
-#define ATH12K_THERMAL_LVL2_DUTY_CYCLE 90
|
||||
-#define ATH12K_THERMAL_LVL3_DUTY_CYCLE 100
|
||||
+#define ATH12K_THERMAL_LVL1_DUTY_CYCLE 20
|
||||
+#define ATH12K_THERMAL_LVL2_DUTY_CYCLE 60
|
||||
+#define ATH12K_THERMAL_LVL3_DUTY_CYCLE 98
|
||||
|
||||
#define ATH12K_THERMAL_LVL0_V2_DUTY_CYCLE ATH12K_THERMAL_LVL0_DUTY_CYCLE
|
||||
-#define ATH12K_THERMAL_LVL1_V2_DUTY_CYCLE ATH12K_THERMAL_LVL0_DUTY_CYCLE
|
||||
-#define ATH12K_THERMAL_LVL2_V2_DUTY_CYCLE ATH12K_THERMAL_LVL1_DUTY_CYCLE
|
||||
-#define ATH12K_THERMAL_LVL3_V2_DUTY_CYCLE ATH12K_THERMAL_LVL2_DUTY_CYCLE
|
||||
+#define ATH12K_THERMAL_LVL1_V2_DUTY_CYCLE ATH12K_THERMAL_LVL1_DUTY_CYCLE
|
||||
+#define ATH12K_THERMAL_LVL2_V2_DUTY_CYCLE ATH12K_THERMAL_LVL2_DUTY_CYCLE
|
||||
+#define ATH12K_THERMAL_LVL3_V2_DUTY_CYCLE ATH12K_THERMAL_LVL3_DUTY_CYCLE
|
||||
#define ATH12K_THERMAL_LVL4_V2_DUTY_CYCLE ATH12K_THERMAL_LVL3_DUTY_CYCLE
|
||||
|
||||
#define THERMAL_CONFIG_POUT0 0
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -1,315 +0,0 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (c) 2018, 2021, The Linux Foundation. All rights reserved.
|
||||
# Copyright (c) 2022-2024, 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.
|
||||
#
|
||||
|
||||
START=16
|
||||
|
||||
#!/bin/sh
|
||||
ruletype="ip4 ip6"
|
||||
side="wan lan"
|
||||
qwan="1 3 2 0 5 7 6 4"
|
||||
qlan="0 1 2 3 4 5 6 7"
|
||||
|
||||
function create_war_acl_rules(){
|
||||
for lw in $side
|
||||
do
|
||||
#echo $lw
|
||||
if [ "$lw" == "wan" ];then
|
||||
listid=254
|
||||
queue=$qwan
|
||||
portmap=0x20
|
||||
else
|
||||
listid=255
|
||||
queue=$qlan
|
||||
portmap=0x1e
|
||||
fi
|
||||
#echo $queue
|
||||
#echo "creating list $listid"
|
||||
ssdk_sh acl list create $listid 255
|
||||
ruleid=0
|
||||
for rt in $ruletype
|
||||
do
|
||||
for qid in $queue
|
||||
do
|
||||
cmd="ssdk_sh acl rule add $listid $ruleid 1 n 0 0"
|
||||
#echo $cmd
|
||||
if [ "$rt" == "ip4" ];then
|
||||
cmd="$cmd ip4 n n n n n n n n n n n n n n n n n n n n n n n n n n n n n"
|
||||
#echo $cmd
|
||||
else
|
||||
cmd="$cmd ip6 n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n"
|
||||
#echo $cmd
|
||||
fi
|
||||
if [ $ruleid -le 3 ];then
|
||||
#non-zero dscp
|
||||
cmd="$cmd y 0x0 0xff"
|
||||
elif [ $ruleid -le 7 ];then
|
||||
#zero dscp
|
||||
cmd="$cmd n"
|
||||
elif [ $ruleid -le 11 ];then
|
||||
#non-zero dscp
|
||||
cmd="$cmd y 0x0 0xff"
|
||||
else
|
||||
#zero dscp
|
||||
cmd="$cmd n"
|
||||
fi
|
||||
p=$((ruleid/2))
|
||||
cmd="$cmd y mask $((ruleid%2)) 0x1 y mask $((p%2)) 0x1 n n n n n n n n n n n n n n n y n n n n n n n y $qid n n 0 0 n n n n n n n n n n n n n n n n n n n n 0"
|
||||
#echo $cmd
|
||||
$cmd
|
||||
ruleid=`expr $ruleid + 1`
|
||||
done
|
||||
done
|
||||
ssdk_sh acl list bind $listid 0 1 $portmap
|
||||
done
|
||||
}
|
||||
|
||||
function create_war_cosmap(){
|
||||
ssdk_sh cosmap pri2q set 0 0
|
||||
ssdk_sh cosmap pri2q set 1 0
|
||||
ssdk_sh cosmap pri2q set 2 0
|
||||
ssdk_sh cosmap pri2q set 3 0
|
||||
ssdk_sh cosmap pri2q set 4 1
|
||||
ssdk_sh cosmap pri2q set 5 1
|
||||
ssdk_sh cosmap pri2q set 6 1
|
||||
ssdk_sh cosmap pri2q set 7 1
|
||||
ssdk_sh cosmap pri2ehq set 0 0
|
||||
ssdk_sh cosmap pri2ehq set 1 0
|
||||
ssdk_sh cosmap pri2ehq set 2 0
|
||||
ssdk_sh cosmap pri2ehq set 3 0
|
||||
ssdk_sh cosmap pri2ehq set 4 1
|
||||
ssdk_sh cosmap pri2ehq set 5 1
|
||||
ssdk_sh cosmap pri2ehq set 6 1
|
||||
ssdk_sh cosmap pri2ehq set 7 1
|
||||
}
|
||||
|
||||
function create_acl_byp_egstp_rules(){
|
||||
chip_ver=$1
|
||||
cmd="ssdk_sh servcode config set 1 n 0 0xfffefc7f 0xffbdff 0 0 0 0 0 0"
|
||||
if [ "$chip_ver" == "0x2000" ] || [ "$chip_ver" = "0x2001" ] || [ "$chip_ver" = "0x2100" ]; then
|
||||
cmd="$cmd 0"
|
||||
fi
|
||||
#echo $cmd
|
||||
$cmd
|
||||
|
||||
ssdk_sh acl list create 56 48
|
||||
#action bypass eg stp check
|
||||
action="y n n n n n n n n n n 0 0 n n n n n n n n n n n n n y n n n n n n n n n n n n y n n n n n n n n n n n n n n n n n n"
|
||||
if [ "$chip_ver" == "0x2000" ]; then
|
||||
action="$action n n 0"
|
||||
elif [ "$chip_ver" = "0x2001" ] || [ "$chip_ver" = "0x2100" ]; then
|
||||
action="$action n n n 0"
|
||||
else
|
||||
action="$action 0"
|
||||
fi
|
||||
|
||||
for ruleid in $( seq 0 2 )
|
||||
do
|
||||
if [ "$ruleid" == "0" ];then
|
||||
cmd="ssdk_sh acl rule add 56 0 1 n 0 0 mac n n n n n y 01-80-c2-00-00-00 ff-ff-ff-ff-ff-ff n n n n n n n n n n n n n n n n n n n n n n n"
|
||||
elif [ "$ruleid" == "1" ];then
|
||||
cmd="ssdk_sh acl rule add 56 1 1 n 0 0 mac n n n n n n n yes 0x8809 0xffff n n n n n n n n n n n n n n n n n n n n n"
|
||||
else
|
||||
cmd="ssdk_sh acl rule add 56 2 1 n 0 0 mac n n n n n n n yes 0x888e 0xffff n n n n n n n n n n n n n n n n n n n n n"
|
||||
fi
|
||||
if [ "$chip_ver" == "0x2000" ] || [ "$chip_ver" = "0x2001" ] || [ "$chip_ver" = "0x2100" ]; then
|
||||
cmd="$cmd n $action"
|
||||
else
|
||||
cmd="$cmd $action"
|
||||
fi
|
||||
#echo $cmd
|
||||
$cmd
|
||||
done
|
||||
ssdk_sh acl list bind 56 0 2 1
|
||||
}
|
||||
|
||||
function delete_war_acl_rules(){
|
||||
for lw in $side
|
||||
do
|
||||
#echo $lw
|
||||
if [ "$lw" == "wan" ];then
|
||||
listid=254
|
||||
queue=$qwan
|
||||
portmap=0x20
|
||||
else
|
||||
listid=255
|
||||
queue=$qlan
|
||||
portmap=0x1e
|
||||
fi
|
||||
ssdk_sh acl list unbind $listid 0 1 $portmap
|
||||
for rt in $ruletype
|
||||
do
|
||||
for qid in $queue
|
||||
do
|
||||
cmd="ssdk_sh acl rule del $listid 0 1"
|
||||
echo $cmd
|
||||
$cmd
|
||||
done
|
||||
done
|
||||
#echo "deleting list $listid"
|
||||
ssdk_sh acl list destroy $listid
|
||||
done
|
||||
}
|
||||
|
||||
function delete_war_cosmap(){
|
||||
ssdk_sh cosmap pri2q set 0 0
|
||||
ssdk_sh cosmap pri2q set 1 0
|
||||
ssdk_sh cosmap pri2q set 2 1
|
||||
ssdk_sh cosmap pri2q set 3 1
|
||||
ssdk_sh cosmap pri2q set 4 2
|
||||
ssdk_sh cosmap pri2q set 5 2
|
||||
ssdk_sh cosmap pri2q set 6 3
|
||||
ssdk_sh cosmap pri2q set 7 3
|
||||
ssdk_sh cosmap pri2ehq set 0 1
|
||||
ssdk_sh cosmap pri2ehq set 1 0
|
||||
ssdk_sh cosmap pri2ehq set 2 2
|
||||
ssdk_sh cosmap pri2ehq set 3 2
|
||||
ssdk_sh cosmap pri2ehq set 4 3
|
||||
ssdk_sh cosmap pri2ehq set 5 3
|
||||
ssdk_sh cosmap pri2ehq set 6 4
|
||||
ssdk_sh cosmap pri2ehq set 7 5
|
||||
}
|
||||
|
||||
function delete_acl_byp_egstp_rules(){
|
||||
chip_ver=$1
|
||||
cmd="ssdk_sh servcode config set 1 n 0 0xfffefcff 0xffbfff 0 0 0 0 0 0"
|
||||
if [ "$chip_ver" == "0x2000" ] || [ "$chip_ver" = "0x2001" ] || [ "$chip_ver" = "0x2100" ]; then
|
||||
cmd="$cmd 0"
|
||||
fi
|
||||
#echo $cmd
|
||||
$cmd
|
||||
ssdk_sh acl list unbind 56 0 2 1
|
||||
ssdk_sh acl rule del 56 0 1
|
||||
ssdk_sh acl rule del 56 1 1
|
||||
ssdk_sh acl rule del 56 2 1
|
||||
ssdk_sh acl list destroy 56
|
||||
}
|
||||
|
||||
function edma_war_config_add(){
|
||||
create_war_cosmap
|
||||
ssdk_sh acl status set enable
|
||||
create_war_acl_rules
|
||||
}
|
||||
|
||||
function edma_war_config_del(){
|
||||
delete_war_acl_rules
|
||||
delete_war_cosmap
|
||||
}
|
||||
|
||||
function ipq50xx_serdes_monitor () {
|
||||
#if qca808x phy exist, need to monitor the serdes to avoid the effect for WIFI
|
||||
port_id=2
|
||||
old_linkstatus="DISABLE"
|
||||
phy_id_info=`ssdk_sh port phyid get $port_id | grep Org | awk -F '!' '{print $2}'`
|
||||
if [ "$phy_id_info" = "[Org ID]:0x004d[Rev ID]:0xd101" ]; then
|
||||
ssdk_sh debug phy set 29 0xb 0x300d
|
||||
ssdk_sh debug uniphy set 0 0x7ac 0x300d 4
|
||||
|
||||
while true
|
||||
do
|
||||
cur_linkstatus=`ssdk_sh port linkstatus get $port_id | grep Status | awk -F ':' '{print $2}'`
|
||||
#when qca808x phy link status is from down to up, serdes tx would be enabled
|
||||
if [ "$cur_linkstatus" = "ENABLE" ] && [ "$old_linkstatus" = "DISABLE" ]; then
|
||||
ssdk_sh debug phy set 29 0xb 0xb00d
|
||||
ssdk_sh debug uniphy set 0 0x7ac 0xb00d 4
|
||||
fi
|
||||
#when qca808x phy link status is from up to down, serdes tx would be disabled
|
||||
if [ "$cur_linkstatus" = "DISABLE" ] && [ "$old_linkstatus" = "ENABLE" ]; then
|
||||
ssdk_sh debug phy set 29 0xb 0x300d
|
||||
ssdk_sh debug uniphy set 0 0x7ac 0x300d 4
|
||||
fi
|
||||
old_linkstatus=$cur_linkstatus
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
function ipq53xx_phy_amplitude_set () {
|
||||
#PHY (8081->5321): Full amplitude (bit[7:5]=000), half swing (bit[4]=1)
|
||||
#for qca808x phy sgmii, set half amplitude with src_half_swing register
|
||||
port_id=2
|
||||
phy_addr=0x1d
|
||||
phy_id_info=`ssdk_sh port phyid get $port_id | grep Org | awk -F '!' '{print $2}'`
|
||||
if [ "$phy_id_info" = "[Org ID]:0x004d[Rev ID]:0xd101" ]; then
|
||||
ssdk_sh debug phy set $phy_addr 0x40010087 0x208a
|
||||
#Set the Reg0x67 bits[7:5]=3’b000 and bit4=1’b1
|
||||
ampl_val=$(ssdk_sh debug phy get $phy_addr 0x40010067 | grep SSDK | grep -oE '0x[0-9a-fA-F]+' | sed 's/\(0x..\)./\11/')
|
||||
ssdk_sh debug phy set $phy_addr 0x40010067 $ampl_val
|
||||
fi
|
||||
}
|
||||
|
||||
function ipq53xx_uniphy_amplitude_set () {
|
||||
#UniPhy (5321->8081): Custom amplitude (bit[8:4]=21) = 0xb15d
|
||||
#for ipq53xx sgmii, set half amplitude with tx_emp_lvl/margin_index and tx_margin
|
||||
ssdk_sh debug uniphy set 1 0x7ac 0xb15d 4
|
||||
ssdk_sh debug uniphy set 1 0x24 0 4
|
||||
}
|
||||
|
||||
ssdk_dependency() {
|
||||
counter=0
|
||||
[ -e /lib/modules/$(uname -r)/qca-ssdk.ko ] && [ ! -d /sys/module/qca_ssdk ] && {
|
||||
insmod qca-ssdk.ko
|
||||
}
|
||||
while [ ! -d /sys/ssdk ] && [ "$counter" -le 5 ]
|
||||
do
|
||||
sleep 1
|
||||
counter=$((counter+1))
|
||||
done
|
||||
}
|
||||
|
||||
start() {
|
||||
ssdk_dependency
|
||||
chip_ver=`ssdk_sh debug reg get 0 4 | grep Data | tr -d 'SSDK Init OK![Data]:'`
|
||||
#The following commands should be uncommented to enable EDMA WAR
|
||||
if [ "$chip_ver" = "0x1401" ]; then
|
||||
#edma_war_config_add
|
||||
echo ''
|
||||
fi
|
||||
#The following commands should be uncommented to add acl egress stp bypass rules
|
||||
if [ "$chip_ver" = "0x1500" ] || [ "$chip_ver" = "0x1501" ] || [ "$chip_ver" = "0x2000" ] || [ "$chip_ver" = "0x2001" ] || [ "$chip_ver" = "0x2100" ]; then
|
||||
#create_acl_byp_egstp_rules $chip_ver
|
||||
echo ''
|
||||
fi
|
||||
#The following commands should be uncommented to enable WAR for ipq50xx
|
||||
chip_type_info=`cat tmp/sysinfo/model`
|
||||
result=$(echo $chip_type_info | grep "IPQ5018")
|
||||
if [ "$result" != "" ]; then
|
||||
#ipq50xx_serdes_monitor &
|
||||
#ipq50xx_uniphy_amplitude_set
|
||||
#ipq50xx_phy_amplitude_set
|
||||
echo ''
|
||||
fi
|
||||
if [ "$chip_ver" = "0x2001" ]; then
|
||||
ipq53xx_uniphy_amplitude_set
|
||||
ipq53xx_phy_amplitude_set
|
||||
echo ''
|
||||
fi
|
||||
echo starting
|
||||
}
|
||||
|
||||
stop() {
|
||||
chip_ver=`ssdk_sh debug reg get 0 4 | grep Data | tr -d 'SSDK Init OK![Data]:'`
|
||||
#The following commands should be uncommented to disable EDMA WAR
|
||||
if [ "$chip_ver" = "0x1401" ]; then
|
||||
#edma_war_config_del
|
||||
echo ''
|
||||
fi
|
||||
#The following commands should be uncommented to delete acl egress stp bypass rules
|
||||
if [ "$chip_ver" = "0x1500" ] || [ "$chip_ver" = "0x1501" ] || [ "$chip_ver" = "0x2000" ] || [ "$chip_ver" = "0x2001" ] || [ "$chip_ver" = "0x2100" ]; then
|
||||
#delete_acl_byp_egstp_rules $chip_ver
|
||||
echo ''
|
||||
fi
|
||||
echo stoping
|
||||
}
|
||||
@@ -25,11 +25,6 @@ copy_certificates() {
|
||||
}
|
||||
|
||||
boot() {
|
||||
case "$(board_name)" in
|
||||
sonicfi,rap6*)
|
||||
touch /tmp/squashfs
|
||||
;;
|
||||
esac
|
||||
[ -f /etc/ucentral/key.pem ] && return
|
||||
/usr/bin/mount_certs
|
||||
copy_certificates
|
||||
|
||||
@@ -37,16 +37,13 @@ sonicfi,rap7*)
|
||||
mtd=$(find_mtd_index certificates)
|
||||
[ -n "$mtd" ] && mount -t ext4 /dev/mtdblock$mtd /certificates
|
||||
fi
|
||||
;;
|
||||
sonicfi,rap6*)
|
||||
mtd=$(find_mtd_index certificates)
|
||||
if [ "$(head -c 4 /dev/mtd$mtd)" == "hsqs" ]; then
|
||||
mount -t squashfs /dev/mtdblock$mtd /mnt
|
||||
cp /mnt/* /certificates
|
||||
umount /mnt
|
||||
if [ ! -f /certificates/cert.pem ] || [ ! -f /certificates/key.pem ]; then
|
||||
part=$(tar_part_lookup "0:BOOTCONFIG" "0:BOOTCONFIG1")
|
||||
if [ -n "part" ]; then
|
||||
mmc_dev=$(echo $(find_mmc_part "$part") | sed 's/^.\{5\}//')
|
||||
[ -n "$mmc_dev" ] && tar xf /dev/$mmc_dev -C /certificates
|
||||
fi
|
||||
fi
|
||||
mtd=$(find_mtd_index devinfo)
|
||||
[ -n "$mtd" ] && tar xf /dev/mtdblock$mtd -C /certificates
|
||||
;;
|
||||
udaya,a5-id2|\
|
||||
yuncore,ax820)
|
||||
@@ -62,6 +59,19 @@ yuncore,ax820)
|
||||
[ -n "$mtd" ] && tar xf /dev/mtdblock$mtd -C /certificates
|
||||
fi
|
||||
;;
|
||||
sonicfi,rap6*)
|
||||
mtd=$(find_mtd_index certificates)
|
||||
if [ "$(head -c 4 /dev/mtd$mtd)" == "hsqs" ]; then
|
||||
mount -t squashfs /dev/mtdblock$mtd /mnt
|
||||
cp /mnt/* /certificates
|
||||
umount /mnt
|
||||
fi
|
||||
part=$(tar_part_lookup "devinfo" "certificates")
|
||||
if [ -n "$part" ]; then
|
||||
mtd=$(find_mtd_index $part)
|
||||
[ -n "$mtd" ] && tar xf /dev/mtdblock$mtd -C /certificates
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
mtd=$(find_mtd_index certificates)
|
||||
|
||||
|
||||
@@ -14,6 +14,13 @@ tar_part_lookup() {
|
||||
|
||||
. /lib/functions.sh
|
||||
case "$(board_name)" in
|
||||
sonicfi,rap7110c-341x)
|
||||
cd /certificates
|
||||
tar cf /tmp/certs.tar .
|
||||
part=$(tar_part_lookup "0:BOOTCONFIG" "0:BOOTCONFIG1")
|
||||
mmc_dev=$(echo $(find_mmc_part $part) | sed 's/^.\{5\}//')
|
||||
dd if=/tmp/certs.tar of=/dev/$mmc_dev
|
||||
;;
|
||||
udaya,a5-id2|\
|
||||
yuncore,ax820)
|
||||
cd /certificates
|
||||
@@ -26,7 +33,8 @@ sonicfi,rap6*)
|
||||
if [ "$(fw_printenv -n store_certs_disabled)" != "1" ]; then
|
||||
cd /certificates
|
||||
tar cf /tmp/certs.tar .
|
||||
mtd=$(find_mtd_index devinfo)
|
||||
part=$(tar_part_lookup "devinfo" "certificates")
|
||||
mtd=$(find_mtd_index $part)
|
||||
block_size=$(cat /sys/class/mtd/mtd$mtd/size)
|
||||
dd if=/tmp/certs.tar of=/tmp/certs_pad.tar bs=$block_size conv=sync
|
||||
mtd write /tmp/certs_pad.tar /dev/mtd$mtd
|
||||
|
||||
@@ -23,7 +23,6 @@ let ubus = libubus.connect();
|
||||
let uci = libuci.cursor();
|
||||
let state = DISCOVER;
|
||||
let discovery_method = "";
|
||||
let discovery_block_list = [];
|
||||
let validate_time;
|
||||
let offline_time;
|
||||
let orphan_time;
|
||||
@@ -103,9 +102,6 @@ function gateway_load() {
|
||||
}
|
||||
|
||||
function discovery_state_write() {
|
||||
if (length(discovery_method) == 0)
|
||||
return;
|
||||
|
||||
let discovery_state = {
|
||||
"type": discovery_method,
|
||||
"updated": time()
|
||||
@@ -159,7 +155,6 @@ function set_state(set) {
|
||||
ulog(LOG_INFO, 'Wait for validation\n');
|
||||
validate_time = time();
|
||||
state = VALIDATING;
|
||||
push(discovery_block_list, discovery_method);
|
||||
break;
|
||||
|
||||
case ONLINE:
|
||||
@@ -168,7 +163,6 @@ function set_state(set) {
|
||||
ulog(LOG_INFO, 'Setting cloud controller to validated\n');
|
||||
gateway_write({ valid: true });
|
||||
discovery_state_write();
|
||||
discovery_block_list = [];
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -237,13 +231,6 @@ function time_is_valid() {
|
||||
return valid;
|
||||
}
|
||||
|
||||
function is_discover_method_blacked() {
|
||||
if (discovery_method in discovery_block_list)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
function interval_handler() {
|
||||
printf(`State ${state}\n`);
|
||||
switch(state) {
|
||||
@@ -273,21 +260,19 @@ function interval_handler() {
|
||||
if (!time_is_valid())
|
||||
return;
|
||||
|
||||
discovery_method = DISCOVER_DHCP;
|
||||
if (discover_dhcp())
|
||||
return;
|
||||
|
||||
if (system('/usr/bin/est_client enroll'))
|
||||
return;
|
||||
|
||||
discovery_method = DISCOVER_DHCP;
|
||||
if (!is_discover_method_blacked() && discover_dhcp())
|
||||
return;
|
||||
|
||||
discovery_method = DISCOVER_FLASH;
|
||||
if (!is_discover_method_blacked() && !discover_flash())
|
||||
if (!discover_flash())
|
||||
return;
|
||||
|
||||
discovery_method = DISCOVER_LOOKUP;
|
||||
redirector_lookup();
|
||||
|
||||
discovery_block_list = [];
|
||||
break;
|
||||
|
||||
case VALIDATING:
|
||||
|
||||
@@ -5,8 +5,8 @@ import * as fs from 'fs';
|
||||
|
||||
let cmd = ARGV[0];
|
||||
let ifname = getenv("interface");
|
||||
let opt138 = fs.readfile('/tmp/dhcp-option-138');
|
||||
let opt224 = fs.readfile('/tmp/dhcp-option-224');
|
||||
let opt138 = getenv("opt138");
|
||||
let opt224 = getenv("opt224");
|
||||
|
||||
if (cmd != 'bound' && cmd != 'renew')
|
||||
exit(0);
|
||||
@@ -23,14 +23,14 @@ let cloud = {
|
||||
lease: true,
|
||||
};
|
||||
if (opt138) {
|
||||
let dhcp = opt138;
|
||||
let dhcp = hexdec(opt138);
|
||||
dhcp = split(dhcp, ':');
|
||||
cloud.dhcp_server = dhcp[0];
|
||||
cloud.dhcp_port = dhcp[1] ?? 15002;
|
||||
cloud.no_validation = true;
|
||||
}
|
||||
if (opt224) {
|
||||
let dhcp = opt224;
|
||||
let dhcp = hexdec(opt224);
|
||||
dhcp = split(dhcp, ':');
|
||||
cloud.dhcp_server = dhcp[0];
|
||||
cloud.dhcp_port = dhcp[1] ?? 15002;
|
||||
|
||||
@@ -4,7 +4,6 @@ PKG_NAME:=ucentral-client
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-client.git
|
||||
PKG_MIRROR_HASH:=2935998d6074f0c290d9b96c2988c89aae6f405608f12a0063fa7215498bae9a
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2025-08-11
|
||||
PKG_SOURCE_VERSION:=549e84e5fea7230c5471d6a3dbddcc7d3152f665
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"major": 4,
|
||||
"minor": 1,
|
||||
"patch": 1
|
||||
"patch": 0
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
|
||||
'use strict';
|
||||
|
||||
push(REQUIRE_SEARCH_PATH, '/usr/share/ucentral/*.uc');
|
||||
|
||||
import * as libubus from 'ubus';
|
||||
import * as libuci from 'uci';
|
||||
import * as uloop from 'uloop';
|
||||
@@ -38,7 +36,6 @@ let ucentral_running = false;
|
||||
let pending_events = [];
|
||||
let relay = {};
|
||||
let net_config = {};
|
||||
let vlan_refcount = {};
|
||||
|
||||
|
||||
function config_load() {
|
||||
@@ -55,20 +52,6 @@ function config_load() {
|
||||
net_config = {};
|
||||
}
|
||||
|
||||
function vlan_refcount_init() {
|
||||
let stations = require('wifi.station');
|
||||
|
||||
vlan_refcount = {};
|
||||
|
||||
for (let k, v in stations) {
|
||||
let vlan = split(k, '-v')[1];
|
||||
let count = length(v);
|
||||
if (vlan && count > 0) {
|
||||
vlan_refcount[vlan] = count;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function match(object, type, list) {
|
||||
if (object in list || type in list)
|
||||
return true;
|
||||
@@ -278,24 +261,13 @@ handlers = {
|
||||
if (config.config.swconfig)
|
||||
return handlers.vlan_add_swconfig(notify);
|
||||
|
||||
let vlan_id = `${notify.data.vlan_id}`;
|
||||
vlan_refcount[vlan_id] = (vlan_refcount[vlan_id] || 0) + 1;
|
||||
|
||||
let parts = split(notify.data.ifname, '-v');
|
||||
let is_wifi_iface = (length(parts) == 2 && wildcard(parts[0], 'wlan*'));
|
||||
|
||||
if (vlan_refcount[vlan_id] > 1 && !is_wifi_iface)
|
||||
return;
|
||||
|
||||
if (vlan_refcount[vlan_id] == 1) {
|
||||
for (let wan in wan_ports) {
|
||||
let msg = {
|
||||
name: wan,
|
||||
vlan: [ `${notify.data.vlan_id}:t` ]
|
||||
};
|
||||
ubus.call('network.interface.up_none', 'add_device', msg);
|
||||
ubus.call('udevstats', 'add_device', { device: wan, vlan: +notify.data.vlan_id });
|
||||
}
|
||||
for (let wan in wan_ports) {
|
||||
let msg = {
|
||||
name: wan,
|
||||
vlan: [ `${notify.data.vlan_id}:t` ]
|
||||
};
|
||||
ubus.call('network.interface.up_none', 'add_device', msg);
|
||||
ubus.call('udevstats', 'add_device', { device: wan, vlan: +notify.data.vlan_id });
|
||||
}
|
||||
|
||||
let msg = {
|
||||
@@ -310,14 +282,6 @@ handlers = {
|
||||
vlan_remove: function(notify) {
|
||||
if (config.config.swconfig)
|
||||
return;
|
||||
|
||||
let vlan_id = `${notify.data.vlan_id}`;
|
||||
vlan_refcount[vlan_id] = (vlan_refcount[vlan_id] || 1) - 1;
|
||||
|
||||
if (vlan_refcount[vlan_id] > 0)
|
||||
return;
|
||||
delete vlan_refcount[vlan_id];
|
||||
|
||||
for (let wan in wan_ports) {
|
||||
let msg = {
|
||||
name: wan,
|
||||
@@ -660,7 +624,6 @@ let ubus_methods = {
|
||||
};
|
||||
|
||||
config_load();
|
||||
vlan_refcount_init();
|
||||
|
||||
hapd_subscriber = ubus.subscriber(hapd_subscriber_notify_cb, hapd_subscriber_remove_cb);
|
||||
dhcp_subscriber = ubus.subscriber(dhcp_subscriber_notify_cb, dhcp_subscriber_remove_cb);
|
||||
|
||||
@@ -4,10 +4,9 @@ PKG_NAME:=ucentral-schema
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-schema.git
|
||||
PKG_MIRROR_HASH:=c0f43db0530a38eb424e81908ad47a14e1d4d8f8a86eb148e34f98187c79ba6b
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2025-10-16
|
||||
PKG_SOURCE_VERSION:=dc9cad95641266a08de73aab85d931d992090159
|
||||
PKG_SOURCE_DATE:=2025-08-04
|
||||
PKG_SOURCE_VERSION:=1c6b3095cb9e398fcbfcb2bf995365066eb76b21
|
||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
PKG_LICENSE:=BSD-3-Clause
|
||||
|
||||
|
||||
@@ -1,12 +1,17 @@
|
||||
{
|
||||
"uuid": 2,
|
||||
"radios": [
|
||||
{
|
||||
"band": "6G",
|
||||
"country": "CA",
|
||||
"channel-mode": "HE",
|
||||
"channel-width": 80
|
||||
},
|
||||
{
|
||||
"band": "5G",
|
||||
"country": "CA",
|
||||
"channel-mode": "HE",
|
||||
"channel-width": 80,
|
||||
"channel": 36
|
||||
"channel-width": 80
|
||||
},
|
||||
{
|
||||
"band": "2G",
|
||||
@@ -52,7 +57,10 @@
|
||||
"key": "bbbbbbbb"
|
||||
}
|
||||
],
|
||||
"roaming": true
|
||||
"roaming": {
|
||||
"message-exchange": "ds",
|
||||
"generate-psk": true
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
#!/usr/bin/ucode
|
||||
import { readfile } from "fs";
|
||||
|
||||
let nl = require("nl80211");
|
||||
let def = nl.const;
|
||||
let board_name = rtrim(readfile('/tmp/sysinfo/board_name'), '\n');
|
||||
let phy_index = 0;
|
||||
|
||||
function phy_get() {
|
||||
let res = nl.request(def.NL80211_CMD_GET_WIPHY, def.NLM_F_DUMP, { split_wiphy_dump: true });
|
||||
@@ -15,11 +12,5 @@ function phy_get() {
|
||||
return res;
|
||||
}
|
||||
|
||||
switch(board_name) {
|
||||
case 'edgecore,eap112':
|
||||
phy_index = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
let phys = phy_get();
|
||||
printf("%d\n", phys[phy_index].max_ap_assoc || 32);
|
||||
printf("%d\n", phys[0].max_ap_assoc || 32);
|
||||
|
||||
@@ -12,7 +12,7 @@ define Package/udhcpinject
|
||||
SECTION:=net
|
||||
CATEGORY:=Network
|
||||
TITLE:=An agent to inject DHCP option
|
||||
DEPENDS:=+libpcap +kmod-ifb +tc +libuci
|
||||
DEPENDS:=+libpcap +kmod-ifb +tc
|
||||
MAINTAINER:=kmk <alex18_huang@accton.com>
|
||||
endef
|
||||
|
||||
@@ -41,4 +41,4 @@ define Package/udhcpinject/install
|
||||
$(CP) ./files/* $(1)/
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,udhcpinject))
|
||||
$(eval $(call BuildPackage,udhcpinject))
|
||||
@@ -1,19 +1,10 @@
|
||||
#config network 'wan0'
|
||||
# option upstream 'up0v0'
|
||||
# list ssid5G '18-KMK-YAYA'
|
||||
# list ssid5G '18-KMK-AKIHO'
|
||||
# list ssid2G '18-KMK-YAYA'
|
||||
# list ssid2G '18-KMK-AKIHO'
|
||||
# option count '4'
|
||||
|
||||
#config network 'wan284'
|
||||
# option upstream 'up1v284'
|
||||
# list ssid5G '18-KMK-SARAN'
|
||||
# list ssid2G '18-KMK-SARAN'
|
||||
# option count '2'
|
||||
|
||||
#config network 'wan283'
|
||||
# option upstream 'up2v283'
|
||||
# list ssid5G '18-KMK-ERICHI'
|
||||
# list ssid2G '18-KMK-ERICHI'
|
||||
# option count '2'
|
||||
# config device 'uplink'
|
||||
# list port 'eth0'
|
||||
#
|
||||
# config ssids 'ssids'
|
||||
# list ssid 'EAP101-ERICHI'
|
||||
# list ssid 'EAP101-AKIHO'
|
||||
# list ssid 'EAP101-DAMAYU'
|
||||
#
|
||||
# config dhcpinject 'dhcpinject'
|
||||
# option iface_count '6'
|
||||
|
||||
@@ -9,18 +9,55 @@ SERVICE_NAME="dhcpinject"
|
||||
PROG=/usr/bin/udhcpinject
|
||||
|
||||
start_service() {
|
||||
# check if config file has contents by executing `uci get dhcpinject.@network[0]`
|
||||
if [ -z "$(uci get dhcpinject.@network[0] 2>/dev/null)" ]; then
|
||||
echo "No upstreams specified, exiting $SERVICE_NAME"
|
||||
return 0
|
||||
local ssids=""
|
||||
local ports=""
|
||||
local ifaces=""
|
||||
|
||||
# Function to process each ssid
|
||||
append_ssid() {
|
||||
local value="$1"
|
||||
if [ -n "$ssids" ]; then
|
||||
ssids="$ssids,$value"
|
||||
else
|
||||
ssids="$value"
|
||||
fi
|
||||
}
|
||||
|
||||
append_port() {
|
||||
local value="$1"
|
||||
if [ -n "$ports" ]; then
|
||||
ports="$ports,$value"
|
||||
else
|
||||
ports="$value"
|
||||
fi
|
||||
}
|
||||
|
||||
# Load the dhcpinject config
|
||||
config_load dhcpinject
|
||||
|
||||
# Get the list of SSIDs
|
||||
config_list_foreach ssids ssid append_ssid
|
||||
|
||||
# Get the list of ports
|
||||
config_list_foreach uplink port append_port
|
||||
|
||||
# Get the iface_count
|
||||
config_get ifaces dhcpinject iface_count
|
||||
|
||||
# Fallback to eth0 if no ports are specified
|
||||
if [ -z "$ports" ]; then
|
||||
ports="eth0"
|
||||
fi
|
||||
# Wait for wifi to be up
|
||||
ubus -t 90 wait_for network.wireless
|
||||
|
||||
# Optional: Log or echo for debugging
|
||||
logger -t dhcp_inject "Generated SSIDs=$ssids, Uplink=$ports, IFACEs=$ifaces"
|
||||
|
||||
procd_open_instance "$SERVICE_NAME"
|
||||
procd_set_param command $PROG
|
||||
procd_set_param env SSIDs="$ssids" PORTs="$ports" IFACEs="$ifaces"
|
||||
procd_set_param respawn 3600 10 10
|
||||
procd_set_param file /etc/config/dhcpinject
|
||||
procd_set_param reload_signal SIGHUP
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
|
||||
@@ -7,10 +7,10 @@ obj-y := udhcpinject.o
|
||||
all: udhcpinject
|
||||
|
||||
udhcpinject: $(obj-y)
|
||||
$(CC) $(LDFLAGS) -lpcap -luci -o $@ $(obj-y)
|
||||
$(CC) $(LDFLAGS) -lpcap -o $@ $(obj-y)
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) $(TARGET_CFLAGS) -c $< -o $@
|
||||
|
||||
clean:
|
||||
rm -f *.o udhcpinject
|
||||
rm -f *.o udhcpinject
|
||||
@@ -6,81 +6,286 @@
|
||||
#include <linux/ip.h>
|
||||
#include <linux/udp.h>
|
||||
#include <net/if.h>
|
||||
|
||||
#include <netinet/in.h>
|
||||
#include <pcap.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <sys/socket.h>
|
||||
#include <syslog.h>
|
||||
#include <unistd.h>
|
||||
#include <uci.h>
|
||||
|
||||
#include "udhcpinject.h"
|
||||
|
||||
// Cleanup function
|
||||
void cleanup()
|
||||
{
|
||||
syslog(LOG_INFO, "Cleaning up resources...\n");
|
||||
#define MAX_INTERFACES 48
|
||||
#define MAX_PORTS 8
|
||||
|
||||
if (handle)
|
||||
{
|
||||
// Global variables
|
||||
struct iface_info *iface_map = NULL;
|
||||
static struct port_info *ports = NULL;
|
||||
int iface_count = 0;
|
||||
int port_count = 0;
|
||||
int total_iface = 0;
|
||||
static pcap_t *handle = NULL;
|
||||
static char *provided_ssids = NULL;
|
||||
static char *provided_ports = NULL;
|
||||
|
||||
// Function to cleanup tc rules
|
||||
void cleanup_tc() {
|
||||
char cmd[1024];
|
||||
for (int i = 0; i < iface_count; i++) {
|
||||
snprintf(cmd, sizeof(cmd), "tc filter del dev %s ingress pref 32 2>/dev/null",
|
||||
iface_map[i].iface);
|
||||
system(cmd);
|
||||
}
|
||||
}
|
||||
|
||||
// Cleanup function
|
||||
void cleanup() {
|
||||
syslog(LOG_INFO, "Cleaning up resources...\n");
|
||||
cleanup_tc();
|
||||
|
||||
if (handle) {
|
||||
pcap_close(handle);
|
||||
handle = NULL;
|
||||
}
|
||||
|
||||
if (iface_map)
|
||||
{
|
||||
char cmd[1024];
|
||||
for (int i = 0; i < iface_map_size; i++)
|
||||
{
|
||||
snprintf(cmd, sizeof(cmd), "tc filter del dev %s ingress pref 32 2>/dev/null",
|
||||
iface_map[i].iface);
|
||||
system(cmd);
|
||||
if (ports) {
|
||||
for (int i = 0; i < port_count; i++) {
|
||||
if (ports[i].sock >= 0) {
|
||||
close(ports[i].sock);
|
||||
}
|
||||
}
|
||||
free(ports);
|
||||
ports = NULL;
|
||||
port_count = 0;
|
||||
}
|
||||
if (iface_map) {
|
||||
free(iface_map);
|
||||
iface_map = NULL;
|
||||
iface_count = 0;
|
||||
}
|
||||
|
||||
if (port_map)
|
||||
{
|
||||
for (int i = 0; i < port_map_size; i++)
|
||||
{
|
||||
close(port_map[i].sock);
|
||||
}
|
||||
free(port_map);
|
||||
if (provided_ssids) {
|
||||
free(provided_ssids);
|
||||
provided_ssids = NULL;
|
||||
}
|
||||
if (provided_ports) {
|
||||
free(provided_ports);
|
||||
provided_ports = NULL;
|
||||
}
|
||||
|
||||
syslog(LOG_INFO, "Cleanup complete.\n");
|
||||
}
|
||||
|
||||
int setup_tc()
|
||||
{
|
||||
char cmd[512];
|
||||
// Function to parse SSIDs and populate iface_map
|
||||
int parse_ssids(const char *ssids) {
|
||||
if (iface_map) {
|
||||
free(iface_map);
|
||||
iface_map = NULL;
|
||||
iface_count = 0;
|
||||
}
|
||||
|
||||
// Create a set of provided SSIDs for efficient lookup
|
||||
char ssids_copy[256];
|
||||
strncpy(ssids_copy, ssids, sizeof(ssids_copy) - 1);
|
||||
ssids_copy[sizeof(ssids_copy) - 1] = '\0';
|
||||
|
||||
// Count number of SSIDs for allocation
|
||||
int ssid_count = 1; // Start at 1 for first SSID
|
||||
for (int i = 0; ssids_copy[i]; i++) {
|
||||
if (ssids_copy[i] == ',')
|
||||
ssid_count++;
|
||||
}
|
||||
|
||||
char **ssid_set = malloc(ssid_count * sizeof(char *));
|
||||
if (!ssid_set) {
|
||||
syslog(LOG_ERR, "Failed to allocate memory for SSID set\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
int ssid_idx = 0;
|
||||
char *token = strtok(ssids_copy, ",");
|
||||
while (token) {
|
||||
ssid_set[ssid_idx++] = token;
|
||||
token = strtok(NULL, ",");
|
||||
}
|
||||
|
||||
// Execute iwinfo command and capture output
|
||||
FILE *pipe = popen("iwinfo | grep wlan -A1 | grep -v \"^--\" | tr -d '\"' "
|
||||
"| awk '/wlan/ {name=$1; essid=$3} /Access Point/ "
|
||||
"{print name \"=\" essid \",\" $3}' | tr -d ':'",
|
||||
"r");
|
||||
if (!pipe) {
|
||||
syslog(LOG_ERR, "Failed to execute iwinfo command\n");
|
||||
free(ssid_set);
|
||||
return -1;
|
||||
}
|
||||
|
||||
char line[256];
|
||||
while (fgets(line, sizeof(line), pipe) != NULL) {
|
||||
// Remove trailing newline
|
||||
line[strcspn(line, "\n")] = 0;
|
||||
|
||||
// Parse line format: wlanX=SSID,BSSID
|
||||
char *iface = strtok(line, "=");
|
||||
char *rest = strtok(NULL, "=");
|
||||
if (!iface || !rest)
|
||||
continue;
|
||||
|
||||
char *essid = strtok(rest, ",");
|
||||
char *bssid = strtok(NULL, ",");
|
||||
if (!essid || !bssid)
|
||||
continue;
|
||||
|
||||
// Check if this SSID is in our provided set
|
||||
int match = 0;
|
||||
for (int i = 0; i < ssid_idx; i++) {
|
||||
if (strcmp(essid, ssid_set[i]) == 0) {
|
||||
match = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!match)
|
||||
continue;
|
||||
|
||||
// Add matching interface to iface_map
|
||||
if (iface_count >= MAX_INTERFACES) {
|
||||
syslog(LOG_ERR, "Too many matching interfaces, max is %d\n",
|
||||
MAX_INTERFACES);
|
||||
pclose(pipe);
|
||||
free(ssid_set);
|
||||
return -1;
|
||||
}
|
||||
|
||||
iface_map =
|
||||
realloc(iface_map, (iface_count + 1) * sizeof(struct iface_info));
|
||||
if (!iface_map) {
|
||||
syslog(LOG_ERR, "Failed to reallocate iface_map\n");
|
||||
pclose(pipe);
|
||||
free(ssid_set);
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct iface_info *info = &iface_map[iface_count];
|
||||
info->serial = iface_count + 1;
|
||||
|
||||
strncpy(info->iface, iface, LEN_IFACE);
|
||||
info->iface[LEN_IFACE] = '\0';
|
||||
|
||||
strncpy(info->essid, essid, LEN_ESSID);
|
||||
info->essid[LEN_ESSID] = '\0';
|
||||
|
||||
strncpy(info->bssid, bssid, LEN_BSSID);
|
||||
info->bssid[LEN_BSSID] = '\0';
|
||||
|
||||
iface_count++;
|
||||
}
|
||||
|
||||
int pipe_status = pclose(pipe);
|
||||
if (pipe_status == -1) {
|
||||
syslog(LOG_ERR, "Error closing iwinfo pipe: %s\n", strerror(errno));
|
||||
}
|
||||
|
||||
free(ssid_set);
|
||||
|
||||
if (iface_count == 0) {
|
||||
syslog(LOG_ERR, "No matching interfaces found for provided SSIDs\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (iface_count != total_iface) {
|
||||
syslog(LOG_ERR, "Expect %d but only %d interfaces were found.\n", total_iface, iface_count);
|
||||
return -1;
|
||||
}
|
||||
|
||||
syslog(LOG_INFO, "Found %d matching interfaces\n", iface_count);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int parse_ports(const char *port_list) {
|
||||
if (ports) {
|
||||
for (int i = 0; i < port_count; i++) {
|
||||
if (ports[i].sock >= 0) {
|
||||
close(ports[i].sock);
|
||||
}
|
||||
}
|
||||
free(ports);
|
||||
ports = NULL;
|
||||
port_count = 0;
|
||||
}
|
||||
|
||||
char ports_copy[256];
|
||||
strncpy(ports_copy, port_list, sizeof(ports_copy) - 1);
|
||||
ports_copy[sizeof(ports_copy) - 1] = '\0';
|
||||
|
||||
port_count = 1;
|
||||
for (int i = 0; ports_copy[i]; i++) {
|
||||
if (ports_copy[i] == ',') {
|
||||
port_count++;
|
||||
}
|
||||
}
|
||||
|
||||
if (port_count > MAX_PORTS) {
|
||||
syslog(LOG_ERR, "Too many ports specified, maximum is %d\n", MAX_PORTS);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ports = calloc(port_count, sizeof(struct port_info));
|
||||
if (!ports) {
|
||||
syslog(LOG_ERR, "Failed to allocate memory for ports\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
char *token = strtok(ports_copy, ",");
|
||||
int idx = 0;
|
||||
while (token && idx < port_count) {
|
||||
strncpy(ports[idx].name, token, LEN_IFACE);
|
||||
ports[idx].name[LEN_IFACE] = '\0';
|
||||
|
||||
ports[idx].sock = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
|
||||
if (ports[idx].sock < 0) {
|
||||
syslog(LOG_ERR, "Socket creation failed for %s: %s\n",
|
||||
ports[idx].name, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
ports[idx].ifindex = if_nametoindex(ports[idx].name);
|
||||
if (ports[idx].ifindex == 0) {
|
||||
syslog(LOG_ERR, "Failed to get interface index for %s: %s\n",
|
||||
ports[idx].name, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
token = strtok(NULL, ",");
|
||||
idx++;
|
||||
}
|
||||
|
||||
syslog(LOG_INFO, "Configured %d ports for forwarding\n", port_count);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int setup_tc() {
|
||||
char cmd[1024];
|
||||
|
||||
// check if ifb-inject exists, if not create it
|
||||
snprintf(cmd, sizeof(cmd), "ip link show ifb-inject >/dev/null 2>&1");
|
||||
if (system(cmd) != 0)
|
||||
{
|
||||
if (system(cmd) != 0) {
|
||||
snprintf(cmd, sizeof(cmd),
|
||||
"ip link add name ifb-inject type ifb && ip link set "
|
||||
"ifb-inject up");
|
||||
if (system(cmd) != 0)
|
||||
{
|
||||
if (system(cmd) != 0) {
|
||||
syslog(LOG_ERR, "Failed to setup ifb-inject\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < iface_map_size; i++)
|
||||
{
|
||||
snprintf(cmd, sizeof(cmd), "tc qdisc add dev %s ingress 2>/dev/null 1>2",
|
||||
iface_map[i].iface);
|
||||
for (int i = 0; i < iface_count; i++) {
|
||||
snprintf(cmd, sizeof(cmd), "tc qdisc add dev %s ingress 2>/dev/null 1>2",
|
||||
iface_map[i].iface);
|
||||
int result = system(cmd);
|
||||
if (result == 2)
|
||||
{
|
||||
if (result == 2) {
|
||||
syslog(LOG_INFO, "Ingress qdisc already exists for %s\n", iface_map[i].iface);
|
||||
}
|
||||
else if (result == 1)
|
||||
{
|
||||
else if (result == 1) {
|
||||
syslog(LOG_ERR, "Failed to add qdisc for %s\n", iface_map[i].iface);
|
||||
return -1;
|
||||
}
|
||||
@@ -95,8 +300,7 @@ int setup_tc()
|
||||
"action mirred egress mirror dev ifb-inject pipe "
|
||||
"action drop",
|
||||
iface_map[i].iface, iface_map[i].serial);
|
||||
if (system(cmd) != 0)
|
||||
{
|
||||
if (system(cmd) != 0) {
|
||||
syslog(LOG_ERR, "Failed to setup tc for %s\n", iface_map[i].iface);
|
||||
return -1;
|
||||
}
|
||||
@@ -104,172 +308,82 @@ int setup_tc()
|
||||
return 0;
|
||||
}
|
||||
|
||||
int parse_iwinfo_by_essid(struct iface_info *iface)
|
||||
{
|
||||
char cmd[256];
|
||||
FILE *fp;
|
||||
char output[128];
|
||||
char *line;
|
||||
|
||||
snprintf(cmd, sizeof(cmd), IWINFO_CMD, iface->essid, iface->frequency);
|
||||
|
||||
fp = popen(cmd, "r");
|
||||
if (fp == NULL)
|
||||
{
|
||||
syslog(LOG_ERR, "Failed to execute command: %s\n", cmd);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Read the first line (interface name)
|
||||
line = fgets(output, sizeof(output), fp);
|
||||
if (line)
|
||||
{
|
||||
output[strcspn(output, "\n")] = '\0'; // Remove trailing newline
|
||||
snprintf(iface->iface, LEN_IFACE + 1, output);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Read the second line (BSSID)
|
||||
line = fgets(output, sizeof(output), fp);
|
||||
if (line)
|
||||
{
|
||||
output[strcspn(output, "\n")] = '\0'; // Remove trailing newline
|
||||
snprintf(iface->bssid, LEN_BSSID + 1, output);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Close the pipe
|
||||
pclose(fp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void add_iface_info(const char *essid, const char *upstream, const char *freq, int serial)
|
||||
{
|
||||
iface_map = realloc(iface_map, (iface_map_size + 1) * sizeof(struct iface_info));
|
||||
if (!iface_map)
|
||||
{
|
||||
syslog(LOG_ERR, "Memory allocation failed\n");
|
||||
exit(1);
|
||||
}
|
||||
struct iface_info *info = &iface_map[iface_map_size];
|
||||
memset(info, 0, sizeof(struct iface_info));
|
||||
// use snprintf to copy essid to info->essid
|
||||
snprintf(info->essid, LEN_ESSID + 1, essid);
|
||||
snprintf(info->upstream, LEN_IFACE + 1, upstream);
|
||||
snprintf(info->frequency, 2, freq);
|
||||
info->serial = serial;
|
||||
iface_map_size++;
|
||||
}
|
||||
|
||||
int parse_uci_config()
|
||||
{
|
||||
struct uci_context *ctx = uci_alloc_context();
|
||||
if (!ctx)
|
||||
{
|
||||
syslog(LOG_ERR, "Failed to allocate UCI context\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
struct uci_package *pkg = NULL;
|
||||
if (uci_load(ctx, CONFIG_PATH, &pkg) != UCI_OK)
|
||||
{
|
||||
syslog(LOG_ERR, "Failed to load UCI config\n");
|
||||
uci_free_context(ctx);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int serial = 1;
|
||||
struct uci_element *e;
|
||||
uci_foreach_element(&pkg->sections, e)
|
||||
{
|
||||
struct uci_section *s = uci_to_section(e);
|
||||
if (!strcmp(s->type, "network"))
|
||||
{
|
||||
const char *upstream = uci_lookup_option_string(ctx, s, "upstream");
|
||||
if (!upstream)
|
||||
continue;
|
||||
syslog(LOG_INFO, "Processing ssids with upstream %s", upstream);
|
||||
struct uci_option *opt, *opt2;
|
||||
|
||||
opt = uci_lookup_option(ctx, s, "freq");
|
||||
if (opt && opt->type == UCI_TYPE_LIST)
|
||||
{
|
||||
struct uci_element *i;
|
||||
char *freq_type = NULL;
|
||||
uci_foreach_element(&opt->v.list, i)
|
||||
{
|
||||
// parse 6G ifaces
|
||||
if (!strcmp(i->name, "6G"))
|
||||
{
|
||||
opt2 = uci_lookup_option(ctx, s, "ssid6G");
|
||||
freq_type = "6";
|
||||
}
|
||||
// parse 5G ifaces
|
||||
else if (!strcmp(i->name, "5G"))
|
||||
{
|
||||
opt2 = uci_lookup_option(ctx, s, "ssid5G");
|
||||
freq_type = "5";
|
||||
}
|
||||
// parse 2G ifaces
|
||||
else if (!strcmp(i->name, "2G"))
|
||||
{
|
||||
opt2 = uci_lookup_option(ctx, s, "ssid2G");
|
||||
freq_type = "2";
|
||||
}
|
||||
|
||||
if (opt2 && opt2->type == UCI_TYPE_LIST)
|
||||
{
|
||||
struct uci_element *i;
|
||||
uci_foreach_element(&opt2->v.list, i)
|
||||
{
|
||||
add_iface_info(i->name, upstream, freq_type, serial++);
|
||||
}
|
||||
}
|
||||
// Signal handler
|
||||
void signal_handler(int sig) {
|
||||
if (sig == SIGTERM) {
|
||||
syslog(LOG_INFO, "Received SIGTERM, cleaning up...\n");
|
||||
cleanup();
|
||||
exit(0);
|
||||
} else if (sig == SIGHUP) {
|
||||
syslog(LOG_INFO, "Received reload signal, reconfiguring...\n");
|
||||
// Clean up existing resources
|
||||
cleanup_tc();
|
||||
|
||||
// Free old SSIDs and get new ones
|
||||
if (provided_ssids) {
|
||||
free(provided_ssids);
|
||||
}
|
||||
provided_ssids = getenv("SSIDs");
|
||||
if (!provided_ssids) {
|
||||
syslog(LOG_ERR, "No SSIDs provided on reload\n");
|
||||
return;
|
||||
}
|
||||
|
||||
// Reload SSIDs
|
||||
if (parse_ssids(provided_ssids) != 0) {
|
||||
syslog(LOG_ERR, "Failed to reload SSIDs configuration\n");
|
||||
return;
|
||||
}
|
||||
|
||||
// Free old ports and get new ones
|
||||
if (provided_ports) {
|
||||
free(provided_ports);
|
||||
}
|
||||
provided_ports = getenv("PORTs");
|
||||
if (!provided_ports) {
|
||||
syslog(LOG_ERR, "No PORTs provided on reload\n");
|
||||
return;
|
||||
}
|
||||
|
||||
// Close existing sockets and reopen with new config
|
||||
if (ports) {
|
||||
for (int i = 0; i < port_count; i++) {
|
||||
if (ports[i].sock >= 0) {
|
||||
close(ports[i].sock);
|
||||
}
|
||||
}
|
||||
|
||||
// initialize socket to upstream interface, say "up0v0"
|
||||
port_map = realloc(port_map, (port_map_size + 1) * sizeof(struct port_info));
|
||||
int sock = socket(AF_PACKET, SOCK_RAW, 0);
|
||||
if (sock < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "Failed to create socket for %s\n", upstream);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Get interface index
|
||||
int ifindex = if_nametoindex(upstream);
|
||||
if (ifindex == 0)
|
||||
{
|
||||
syslog(LOG_ERR, "Failed to get ifindex for %s\n", upstream);
|
||||
close(sock);
|
||||
}
|
||||
|
||||
// Store in port_map
|
||||
snprintf(port_map[port_map_size].name, LEN_IFACE + 1, upstream);
|
||||
port_map[port_map_size].sock = sock;
|
||||
port_map[port_map_size].ifindex = ifindex;
|
||||
port_map_size++;
|
||||
syslog(LOG_INFO, "Initialized socket for upstream interface %s", upstream);
|
||||
free(ports);
|
||||
ports = NULL;
|
||||
port_count = 0;
|
||||
}
|
||||
|
||||
// Reload ports
|
||||
if (parse_ports(provided_ports) != 0) {
|
||||
syslog(LOG_ERR, "Failed to reload ports configuration\n");
|
||||
return;
|
||||
}
|
||||
|
||||
// Reapply tc rules
|
||||
if (setup_tc() == 0) {
|
||||
syslog(LOG_INFO, "Reloaded with SSIDs: %s and Ports: %s\n",
|
||||
provided_ssids, provided_ports);
|
||||
} else {
|
||||
syslog(LOG_ERR, "Failed to reload tc configuration\n");
|
||||
}
|
||||
}
|
||||
|
||||
uci_free_context(ctx);
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct iface_info *find_iface_info_by_vlan(int vlan_id)
|
||||
{
|
||||
for (int i = 0; i < iface_map_size; i++)
|
||||
{
|
||||
if (iface_map[i].serial == vlan_id)
|
||||
{
|
||||
char *get_hostname() {
|
||||
static char hostname[256];
|
||||
if (gethostname(hostname, sizeof(hostname)) != 0) {
|
||||
strcpy(hostname, "unknown");
|
||||
}
|
||||
return hostname;
|
||||
}
|
||||
|
||||
struct iface_info *find_iface_info_by_vlan(int vlan_id) {
|
||||
for (int i = 0; i < iface_count; i++) {
|
||||
if (iface_map[i].serial == vlan_id) {
|
||||
return &iface_map[i];
|
||||
}
|
||||
}
|
||||
@@ -277,15 +391,13 @@ struct iface_info *find_iface_info_by_vlan(int vlan_id)
|
||||
}
|
||||
|
||||
void process_packet(unsigned char *user, const struct pcap_pkthdr *header,
|
||||
const unsigned char *packet)
|
||||
{
|
||||
const unsigned char *packet) {
|
||||
int orig_len = header->len;
|
||||
struct ethhdr *eth = (struct ethhdr *)packet;
|
||||
int vlan_id = -1;
|
||||
int eth_offset = sizeof(struct ethhdr);
|
||||
|
||||
if (ntohs(eth->h_proto) != ETH_P_8021Q)
|
||||
{
|
||||
if (ntohs(eth->h_proto) != ETH_P_8021Q) {
|
||||
syslog(LOG_DEBUG,
|
||||
"No VLAN header found in packet (EtherType: 0x%04x)\n",
|
||||
ntohs(eth->h_proto));
|
||||
@@ -297,14 +409,11 @@ void process_packet(unsigned char *user, const struct pcap_pkthdr *header,
|
||||
eth_offset += sizeof(struct vlan_hdr);
|
||||
|
||||
struct iface_info *info = find_iface_info_by_vlan(vlan_id);
|
||||
if (!info)
|
||||
{
|
||||
if (!info) {
|
||||
syslog(LOG_ERR, "No interface info found for VLAN ID %d\n", vlan_id);
|
||||
return;
|
||||
}
|
||||
|
||||
syslog(LOG_INFO, "Received dhcp packet with vlan id %d from iface %s of length: %d", vlan_id, info->iface, header->len);
|
||||
|
||||
char *hostname = get_hostname();
|
||||
int circuit_id_len = strlen(info->bssid) + 1 + strlen(info->essid);
|
||||
int remote_id_len = strlen(hostname);
|
||||
@@ -320,16 +429,13 @@ void process_packet(unsigned char *user, const struct pcap_pkthdr *header,
|
||||
int dhcp_len = ntohs(udp->len) - sizeof(struct udphdr);
|
||||
|
||||
int options_end = -1;
|
||||
for (int i = dhcp_len - 1; i >= 0; i--)
|
||||
{
|
||||
if (dhcp_start[i] == 0xFF)
|
||||
{ // End option
|
||||
for (int i = dhcp_len - 1; i >= 0; i--) {
|
||||
if (dhcp_start[i] == 0xFF) { // End option
|
||||
options_end = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (options_end == -1)
|
||||
{
|
||||
if (options_end == -1) {
|
||||
syslog(LOG_DEBUG, "Could not find DHCP options end tag\n");
|
||||
return;
|
||||
}
|
||||
@@ -339,8 +445,7 @@ void process_packet(unsigned char *user, const struct pcap_pkthdr *header,
|
||||
int orig_options_len = options_end;
|
||||
int new_len = orig_len - 4 - 1 + opt82_len + 1;
|
||||
unsigned char *new_packet = malloc(new_len);
|
||||
if (!new_packet)
|
||||
{
|
||||
if (!new_packet) {
|
||||
syslog(LOG_ERR, "Failed to allocate memory for new packet\n");
|
||||
return;
|
||||
}
|
||||
@@ -396,12 +501,10 @@ void process_packet(unsigned char *user, const struct pcap_pkthdr *header,
|
||||
new_ip->check = 0;
|
||||
unsigned int sum = 0;
|
||||
unsigned short *ip_ptr = (unsigned short *)new_ip;
|
||||
for (int i = 0; i < ip->ihl * 2; i++)
|
||||
{
|
||||
for (int i = 0; i < ip->ihl * 2; i++) {
|
||||
sum += *ip_ptr++;
|
||||
}
|
||||
while (sum >> 16)
|
||||
{
|
||||
while (sum >> 16) {
|
||||
sum = (sum & 0xFFFF) + (sum >> 16);
|
||||
}
|
||||
new_ip->check = ~sum;
|
||||
@@ -421,16 +524,13 @@ void process_packet(unsigned char *user, const struct pcap_pkthdr *header,
|
||||
unsigned char *udp_start = (unsigned char *)new_udp;
|
||||
int udp_total_len = ntohs(new_udp->len);
|
||||
unsigned short *udp_ptr = (unsigned short *)udp_start;
|
||||
for (int i = 0; i < udp_total_len / 2; i++)
|
||||
{
|
||||
for (int i = 0; i < udp_total_len / 2; i++) {
|
||||
sum += *udp_ptr++;
|
||||
}
|
||||
if (udp_total_len % 2)
|
||||
{
|
||||
if (udp_total_len % 2) {
|
||||
sum += *(unsigned char *)udp_ptr;
|
||||
}
|
||||
while (sum >> 16)
|
||||
{
|
||||
while (sum >> 16) {
|
||||
sum = (sum & 0xFFFF) + (sum >> 16);
|
||||
}
|
||||
new_udp->check = ~sum;
|
||||
@@ -442,91 +542,92 @@ void process_packet(unsigned char *user, const struct pcap_pkthdr *header,
|
||||
socket_address.sll_family = AF_PACKET;
|
||||
socket_address.sll_protocol = htons(ETH_P_ALL);
|
||||
|
||||
for (int i = 0; i < port_map_size; i++)
|
||||
{
|
||||
if (!strcmp(info->upstream, port_map[i].name))
|
||||
{
|
||||
socket_address.sll_ifindex = port_map[i].ifindex;
|
||||
if (sendto(port_map[i].sock, new_packet, new_len, 0, (struct sockaddr *)&socket_address,
|
||||
sizeof(socket_address)) < 0)
|
||||
{
|
||||
syslog(LOG_ERR, "Failed to send packet to %s: %s\n",
|
||||
info->upstream, strerror(errno));
|
||||
}
|
||||
else
|
||||
{
|
||||
syslog(LOG_INFO,
|
||||
"Successfully forwarded packet to %s (new length: %d)\n",
|
||||
info->upstream, new_len);
|
||||
}
|
||||
break;
|
||||
for (int i = 0; i < port_count; i++) {
|
||||
socket_address.sll_ifindex = ports[i].ifindex;
|
||||
|
||||
if (sendto(ports[i].sock, new_packet, new_len, 0,
|
||||
(struct sockaddr *)&socket_address,
|
||||
sizeof(socket_address)) < 0) {
|
||||
syslog(LOG_ERR, "Failed to send packet to %s: %s\n",
|
||||
ports[i].name, strerror(errno));
|
||||
} else {
|
||||
syslog(LOG_DEBUG,
|
||||
"Successfully forwarded packet to %s (new length: %d)\n",
|
||||
ports[i].name, new_len);
|
||||
}
|
||||
}
|
||||
|
||||
free(new_packet);
|
||||
}
|
||||
|
||||
void signal_handler(int sig)
|
||||
{
|
||||
switch (sig)
|
||||
{
|
||||
case SIGTERM:
|
||||
case SIGHUP:
|
||||
cleanup();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int main(int argc, char *argv[]) {
|
||||
openlog("dhcp_inject:", LOG_PID | LOG_CONS, LOG_DAEMON);
|
||||
|
||||
signal(SIGTERM, signal_handler);
|
||||
signal(SIGHUP, signal_handler);
|
||||
|
||||
if (parse_uci_config() != 0)
|
||||
{
|
||||
syslog(LOG_ERR, "Failed to parse UCI configuration\n");
|
||||
// Read IFACEs from environment variable
|
||||
char *iface_env = getenv("IFACEs");
|
||||
if (!iface_env) {
|
||||
syslog(LOG_ERR, "No IFACEs provided. Exiting...\n");
|
||||
cleanup();
|
||||
return 1;
|
||||
}
|
||||
total_iface = atoi(iface_env);
|
||||
if (total_iface <= 0) {
|
||||
syslog(LOG_ERR, "Invalid IFACEs value: %s. Exiting...\n", iface_env);
|
||||
cleanup();
|
||||
return 1;
|
||||
}
|
||||
|
||||
for (int i = 0; i < iface_map_size; i++)
|
||||
{
|
||||
if (parse_iwinfo_by_essid(&iface_map[i]) != 0)
|
||||
{
|
||||
syslog(LOG_ERR, "Failed to get iface info for ESSID: %s\n", iface_map[i].essid);
|
||||
cleanup();
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
syslog(LOG_INFO, "iface_info[%d]: iface='%s', freq='%s', essid='%s', bssid='%s', upstream='%s', serial=%d\n",
|
||||
i, iface_map[i].iface, iface_map[i].frequency, iface_map[i].essid, iface_map[i].bssid,
|
||||
iface_map[i].upstream, iface_map[i].serial);
|
||||
}
|
||||
provided_ssids = getenv("SSIDs");
|
||||
syslog(LOG_INFO, "Provided SSIDs: %s\n", provided_ssids);
|
||||
if (!provided_ssids && argc > 1) {
|
||||
provided_ssids = strdup(argv[1]);
|
||||
}
|
||||
if (!provided_ssids) {
|
||||
syslog(LOG_ERR, "No SSIDs provided. Exiting...\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (setup_tc() != 0)
|
||||
{
|
||||
provided_ports = getenv("PORTs");
|
||||
syslog(LOG_INFO, "Provided PORTs: %s\n", provided_ports);
|
||||
if (!provided_ports) {
|
||||
syslog(LOG_ERR, "No PORTs provided. Exiting...\n");
|
||||
cleanup();
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (parse_ssids(provided_ssids) != 0) {
|
||||
syslog(LOG_ERR, "Failed to parse SSIDs\n");
|
||||
cleanup();
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (parse_ports(provided_ports) != 0) {
|
||||
syslog(LOG_ERR, "Failed to parse ports\n");
|
||||
cleanup();
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (setup_tc() != 0) {
|
||||
syslog(LOG_ERR, "Setup failed\n");
|
||||
cleanup();
|
||||
return 1;
|
||||
}
|
||||
|
||||
syslog(LOG_INFO, "Setup complete for SSIDs: %s and Ports: %s\n",
|
||||
provided_ssids, provided_ports);
|
||||
|
||||
char errbuf[PCAP_ERRBUF_SIZE];
|
||||
handle = pcap_open_live("ifb-inject", BUFSIZ, 1, 1000, errbuf);
|
||||
if (handle == NULL)
|
||||
{
|
||||
if (handle == NULL) {
|
||||
syslog(LOG_ERR, "Couldn't open device ifb-inject: %s\n", errbuf);
|
||||
cleanup();
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (pcap_loop(handle, -1, process_packet, NULL) < 0)
|
||||
{
|
||||
if (pcap_loop(handle, -1, process_packet, NULL) < 0) {
|
||||
syslog(LOG_ERR, "pcap_loop failed: %s\n", pcap_geterr(handle));
|
||||
cleanup();
|
||||
return 1;
|
||||
|
||||
@@ -1,27 +1,9 @@
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
#define LEN_ESSID 32
|
||||
#define LEN_BSSID 12
|
||||
#define LEN_IFACE 15
|
||||
#define LEN_FREQ 3
|
||||
|
||||
#define MAX_INTERFACES 48
|
||||
#define MAX_PORTS 8
|
||||
|
||||
#define CONFIG_PATH "/etc/config/dhcpinject"
|
||||
|
||||
#define IWINFO_CMD "iwinfo | grep %s -A2 | grep '.*Channel:.*\\(%s\\..*\\) GHz' -B2 | awk '/ESSID/{print $1} /Access Point/{gsub(/:/, \"\", $3); print $3}'"
|
||||
|
||||
static pcap_t *handle = NULL;
|
||||
|
||||
static int iface_map_size = 0;
|
||||
struct iface_info *iface_map = NULL;
|
||||
static int port_map_size = 0;
|
||||
struct port_info *port_map = NULL;
|
||||
|
||||
// DHCP header structure
|
||||
struct dhcp_packet {
|
||||
@@ -43,15 +25,11 @@ struct dhcp_packet {
|
||||
uint8_t options[];
|
||||
};
|
||||
|
||||
// up4094v4094
|
||||
|
||||
// Structure to hold interface info
|
||||
struct iface_info {
|
||||
char iface[LEN_IFACE + 1];
|
||||
char essid[LEN_ESSID + 1];
|
||||
char bssid[LEN_BSSID + 1];
|
||||
char upstream[LEN_IFACE + 1];
|
||||
char frequency[4];
|
||||
int serial;
|
||||
};
|
||||
|
||||
@@ -63,14 +41,6 @@ struct port_info {
|
||||
|
||||
// VLAN header structure
|
||||
struct vlan_hdr {
|
||||
__be16 h_vlan_TCI; // VLAN Tag Control Information
|
||||
__be16 h_vlan_TCI; // VLAN Tag Control Information
|
||||
__be16 h_vlan_encapsulated_proto; // Encapsulated protocol
|
||||
};
|
||||
|
||||
char *get_hostname() {
|
||||
static char hostname[256];
|
||||
if (gethostname(hostname, sizeof(hostname)) != 0) {
|
||||
strcpy(hostname, "unknown");
|
||||
}
|
||||
return hostname;
|
||||
}
|
||||
|
||||
@@ -1,22 +1,16 @@
|
||||
From 937c4ba769b4d3a0b5cb804e54fd8bece8efac47 Mon Sep 17 00:00:00 2001
|
||||
From: Shubham Vishwakarma <shubhamvis98@fossfrog.in>
|
||||
Date: Mon, 29 Sep 2025 10:35:54 +0530
|
||||
Subject: [PATCH 58/68] ramips: mt7621: add mt7621 indio um-305ax
|
||||
From ec135e7aefac08806fbabb0634a2bd88a169dfc6 Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Date: Sat, 15 Jul 2023 15:25:59 +0200
|
||||
Subject: [PATCH 58/68] ramips: add mt7621_indio_um-305ax
|
||||
|
||||
Changelog:
|
||||
- Fix MAC address assignment for Ethernet ports
|
||||
- Fix Ethernet port configuration (was not working in the current DTS
|
||||
because GPIOs 23 and 24, used for LEDs, are RGMII2 pins)
|
||||
- Add package kmod-7915-firmware to enable Wi-Fi
|
||||
|
||||
Signed-off-by: Shubham Vishwakarma <shubhamvis98@fossfrog.in>
|
||||
Signed-off-by: John Crispin <john@phrozen.org>
|
||||
---
|
||||
target/linux/ath79/image/generic.mk | 22 +--
|
||||
.../ramips/dts/mt7621_indio_um-305ax.dts | 168 ++++++++++++++++++
|
||||
.../ramips/dts/mt7621_indio_um-305ax.dts | 146 ++++++++++++++++++
|
||||
target/linux/ramips/image/mt7621.mk | 11 ++
|
||||
.../mt7621/base-files/etc/board.d/02_network | 6 +
|
||||
.../etc/hotplug.d/ieee80211/10_fix_wifi_mac | 6 +
|
||||
5 files changed, 202 insertions(+), 11 deletions(-)
|
||||
5 files changed, 180 insertions(+), 11 deletions(-)
|
||||
create mode 100644 target/linux/ramips/dts/mt7621_indio_um-305ax.dts
|
||||
|
||||
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
|
||||
@@ -61,30 +55,27 @@ index 5882feafcb..a98a5e816f 100644
|
||||
DEVICE_VENDOR := YunCore
|
||||
diff --git a/target/linux/ramips/dts/mt7621_indio_um-305ax.dts b/target/linux/ramips/dts/mt7621_indio_um-305ax.dts
|
||||
new file mode 100644
|
||||
index 0000000000..42837dd9fe
|
||||
index 0000000000..79cffbdec2
|
||||
--- /dev/null
|
||||
+++ b/target/linux/ramips/dts/mt7621_indio_um-305ax.dts
|
||||
@@ -0,0 +1,168 @@
|
||||
@@ -0,0 +1,146 @@
|
||||
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
+/*
|
||||
+ * Copyright (c) 2025, Shubham Vishwakarma <shubhamvis98@fossfrog.in>
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "mt7621.dtsi"
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/input/input.h>
|
||||
+
|
||||
+/ {
|
||||
+ compatible = "indio,um-305ax", "mediatek,mt7621-soc";
|
||||
+ model = "Indio UM-305AX";
|
||||
+ model = "INDIO UM-305AX";
|
||||
+
|
||||
+ aliases {
|
||||
+ led-boot = &led_green;
|
||||
+ led-failsafe = &led_green;
|
||||
+ led-running = &led_green;
|
||||
+ led-upgrade = &led_green;
|
||||
+ led-failsafe = &led_red;
|
||||
+ led-running = &led_blue;
|
||||
+ led-upgrade = &led_red;
|
||||
+ label-mac-device = &wan_port;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
@@ -93,11 +84,6 @@ index 0000000000..42837dd9fe
|
||||
+ };
|
||||
+
|
||||
+ leds {
|
||||
+ /*
|
||||
+ * GPIO 23 and 24 LEDs won’t work because these pins are part of the RGMII2 pin group.
|
||||
+ * To make the LEDs work, we need to change the &state_default node’s group variable
|
||||
+ * to "rgmii2", which restores LED functionality but disables the Ethernet ports.
|
||||
+ */
|
||||
+ compatible = "gpio-leds";
|
||||
+
|
||||
+ led_blue: blue {
|
||||
@@ -133,7 +119,7 @@ index 0000000000..42837dd9fe
|
||||
+
|
||||
+&state_default {
|
||||
+ gpio {
|
||||
+ groups = "jtag", "wdt";
|
||||
+ groups = "rgmii2";
|
||||
+ function = "gpio";
|
||||
+ };
|
||||
+};
|
||||
@@ -150,19 +136,15 @@ index 0000000000..42837dd9fe
|
||||
+};
|
||||
+
|
||||
+&gmac0 {
|
||||
+ status = "okay";
|
||||
+ nvmem-cells = <&macaddr_offset>;
|
||||
+ nvmem-cell-names = "mac-address";
|
||||
+ mtd-mac-address = <&factory 0x4>;
|
||||
+};
|
||||
+
|
||||
+&switch0 {
|
||||
+ ports {
|
||||
+ port@0 {
|
||||
+ wan_port: port@0 {
|
||||
+ status = "okay";
|
||||
+ label = "wan";
|
||||
+ nvmem-cells = <&macaddr_offset>;
|
||||
+ nvmem-cell-names = "mac-address";
|
||||
+ mac-address-increment = <1>;
|
||||
+ mtd-mac-address = <&factory 0x28>;
|
||||
+ };
|
||||
+
|
||||
+ port@1 {
|
||||
@@ -223,16 +205,6 @@ index 0000000000..42837dd9fe
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&factory {
|
||||
+ compatible = "nvmem-cells";
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+
|
||||
+ macaddr_offset: macaddr@4 {
|
||||
+ reg = <0x4 0x6>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
diff --git a/target/linux/ramips/image/mt7621.mk b/target/linux/ramips/image/mt7621.mk
|
||||
index 962d7ef440..8790a2fa50 100644
|
||||
--- a/target/linux/ramips/image/mt7621.mk
|
||||
@@ -297,5 +269,5 @@ index 3467e783f0..d5bd50fdf7 100644
|
||||
[ "$PHYNBR" = "1" ] && \
|
||||
macaddr_add "$(mtd_get_mac_binary factory 0x4)" 1 > /sys${DEVPATH}/macaddress
|
||||
--
|
||||
2.47.3
|
||||
2.34.1
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
From adbd8be88f9c5af3f79dc106bc0f2ace5eb50768 Mon Sep 17 00:00:00 2001
|
||||
From: jackcybertan <jack.tsai@cybertan.com.tw>
|
||||
Date: Thu, 21 Aug 2025 15:22:51 +0800
|
||||
Subject: [PATCH] sonicfi_rap63xc-211g: enable pstore
|
||||
|
||||
Signed-off-by: jackcybertan <jack.tsai@cybertan.com.tw>
|
||||
---
|
||||
.../ramips/dts/mt7621_sonicfi_rap63xc-211g.dts | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/target/linux/ramips/dts/mt7621_sonicfi_rap63xc-211g.dts b/target/linux/ramips/dts/mt7621_sonicfi_rap63xc-211g.dts
|
||||
index b64ca5708b..d076d682c9 100755
|
||||
--- a/target/linux/ramips/dts/mt7621_sonicfi_rap63xc-211g.dts
|
||||
+++ b/target/linux/ramips/dts/mt7621_sonicfi_rap63xc-211g.dts
|
||||
@@ -79,6 +79,20 @@
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
+
|
||||
+ reserved-memory {
|
||||
+ #address-cells = <1>;
|
||||
+ #size-cells = <1>;
|
||||
+ ranges;
|
||||
+
|
||||
+ ramoops: ramoops@ff80000 {
|
||||
+ compatible = "ramoops";
|
||||
+ reg = <0x0ff80000 0x80000>;
|
||||
+ record-size = <0x20000>;
|
||||
+ console-size = <0x20000>;
|
||||
+ pmsg-size = <0x20000>;
|
||||
+ };
|
||||
+ };
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
From 40894005e2c114664a44abb0ffadb1cb945a88e2 Mon Sep 17 00:00:00 2001
|
||||
From: Antonio Wu <antonio.wu@cybertan.com.tw>
|
||||
Date: Mon, 4 Aug 2025 05:10:41 +0000
|
||||
Subject: [PATCH] add KERNEL_IPQ_MEM_PROFILE for IPQ53XX
|
||||
|
||||
---
|
||||
config/Config-kernel.in | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/config/Config-kernel.in b/config/Config-kernel.in
|
||||
index 3529696559..b7f13eccbe 100644
|
||||
--- a/config/Config-kernel.in
|
||||
+++ b/config/Config-kernel.in
|
||||
@@ -6,7 +6,7 @@ config KERNEL_IPQ_MEM_PROFILE
|
||||
int "Different memory profile "
|
||||
range 0 1024
|
||||
default 512
|
||||
- depends on TARGET_ipq807x || TARGET_ipq60xx || TARGET_ipq50xx || TARGET_ipq95xx
|
||||
+ depends on TARGET_ipq807x || TARGET_ipq60xx || TARGET_ipq50xx || TARGET_ipq95xx || TARGET_ipq53xx
|
||||
help
|
||||
This option select memory profile to be used,which defines
|
||||
the reserved memory configuration used in device tree.
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
From ba5c63cc0cbbacd952a5c2cfd873439bf5adc86a Mon Sep 17 00:00:00 2001
|
||||
From: Tanya Singh <tanya_singh@accton.com>
|
||||
Date: Thu, 18 Sep 2025 13:21:38 +0800
|
||||
Subject: [PATCH] netifd: Support DHCP option 138 and DHCP option 224
|
||||
|
||||
---
|
||||
.../netifd/files/lib/netifd/dhcp.script | 10 ++++++++++
|
||||
.../patches/601-dhcp_opt138_opt224.patch | 20 +++++++++++++++++++
|
||||
2 files changed, 30 insertions(+)
|
||||
create mode 100644 package/utils/busybox/patches/601-dhcp_opt138_opt224.patch
|
||||
|
||||
diff --git a/package/network/config/netifd/files/lib/netifd/dhcp.script b/package/network/config/netifd/files/lib/netifd/dhcp.script
|
||||
index 6fcf139beb..9c4366f48b 100755
|
||||
--- a/package/network/config/netifd/files/lib/netifd/dhcp.script
|
||||
+++ b/package/network/config/netifd/files/lib/netifd/dhcp.script
|
||||
@@ -4,6 +4,8 @@
|
||||
. /lib/functions.sh
|
||||
. /lib/netifd/netifd-proto.sh
|
||||
|
||||
+rm -rf /tmp/dhcp-option-*
|
||||
+
|
||||
set_classless_routes() {
|
||||
local max=128
|
||||
while [ -n "$1" -a -n "$2" -a $max -gt 0 ]; do
|
||||
@@ -111,6 +113,14 @@ case "$1" in
|
||||
;;
|
||||
esac
|
||||
|
||||
+if [ -n "${opt138}" ]; then
|
||||
+ echo -n "${opt138}" > /tmp/dhcp-option-138
|
||||
+fi
|
||||
+
|
||||
+if [ -n "${opt224}" ]; then
|
||||
+ echo -n "${opt224}" > /tmp/dhcp-option-224
|
||||
+fi
|
||||
+
|
||||
# user rules
|
||||
[ -f /etc/udhcpc.user ] && . /etc/udhcpc.user "$@"
|
||||
for f in /etc/udhcpc.user.d/*; do
|
||||
diff --git a/package/utils/busybox/patches/601-dhcp_opt138_opt224.patch b/package/utils/busybox/patches/601-dhcp_opt138_opt224.patch
|
||||
new file mode 100644
|
||||
index 0000000000..38e53be78c
|
||||
--- /dev/null
|
||||
+++ b/package/utils/busybox/patches/601-dhcp_opt138_opt224.patch
|
||||
@@ -0,0 +1,20 @@
|
||||
+--- a/networking/udhcp/common.c 2025-09-18 13:15:38.313248300 +0800
|
||||
++++ b/networking/udhcp/common.c 2025-09-18 13:17:50.078418978 +0800
|
||||
+@@ -55,6 +55,8 @@ const struct dhcp_optflag dhcp_optflags[
|
||||
+ { OPTION_STRING , 0x43 }, /* DHCP_BOOT_FILE */
|
||||
+ //TODO: not a string, but a set of LASCII strings:
|
||||
+ // { OPTION_STRING , 0x4D }, /* DHCP_USER_CLASS */
|
||||
++ { OPTION_IP , 0x8A }, /* DHCP_OPT138 */
|
||||
++ { OPTION_STRING , 0xE0 }, /* DHCP_OPT224 */
|
||||
+ { OPTION_STRING , 0x64 }, /* DHCP_PCODE */
|
||||
+ { OPTION_STRING , 0x65 }, /* DHCP_TCODE */
|
||||
+ #if ENABLE_FEATURE_UDHCP_RFC3397
|
||||
+@@ -124,6 +126,8 @@ const char dhcp_option_strings[] ALIGN1
|
||||
+ "tftp" "\0" /* DHCP_TFTP_SERVER_NAME*/
|
||||
+ "bootfile" "\0" /* DHCP_BOOT_FILE */
|
||||
+ // "userclass" "\0" /* DHCP_USER_CLASS */
|
||||
++ "opt138" "\0" /* DHCP_OPT138 */
|
||||
++ "opt224" "\0" /* DHCP_OPT224 */
|
||||
+ "tzstr" "\0" /* DHCP_PCODE */
|
||||
+ "tzdbstr" "\0" /* DHCP_TCODE */
|
||||
+ #if ENABLE_FEATURE_UDHCP_RFC3397
|
||||
--
|
||||
2.34.1
|
||||
|
||||
@@ -15,6 +15,4 @@ packages:
|
||||
- qca-ssdk-shell
|
||||
- iperf3
|
||||
- sysstat
|
||||
- kmod-cig-poe-judgment
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=0
|
||||
- kmod-cig-poe-judgment
|
||||
|
||||
@@ -14,6 +14,4 @@ packages:
|
||||
- qca-ssdk-shell
|
||||
- iperf3
|
||||
- sysstat
|
||||
- kmod-cig-poe-judgment
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=0
|
||||
- kmod-cig-poe-judgment
|
||||
|
||||
@@ -14,6 +14,4 @@ packages:
|
||||
- qca-ssdk-shell
|
||||
- iperf3
|
||||
- sysstat
|
||||
- kmod-cig-poe-judgment
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=0
|
||||
- kmod-cig-poe-judgment
|
||||
|
||||
@@ -24,6 +24,5 @@ packages:
|
||||
- kmod-iio-ilps22qs
|
||||
- kmod-cig-poe-judgment
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=0
|
||||
CONFIG_BUSYBOX_CUSTOM=y
|
||||
CONFIG_BUSYBOX_CONFIG_STTY=y
|
||||
|
||||
@@ -12,5 +12,3 @@ include:
|
||||
packages:
|
||||
- ipq53xx
|
||||
- qca-ssdk-shell
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=0
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
profile: indio_um-325ax-v2
|
||||
target: ipq50xx
|
||||
subtarget: generic
|
||||
description: Build image for the Indio um-325ax-v2
|
||||
image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-indio_um-325ax-v2-squashfs-sysupgrade.tar
|
||||
feeds:
|
||||
- name: ipq807x
|
||||
path: ../../feeds/ipq807x_v5.4
|
||||
include:
|
||||
- ucentral-ap
|
||||
packages:
|
||||
- ipq50xx
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=512
|
||||
CONFIG_BUSYBOX_CUSTOM=y
|
||||
CONFIG_BUSYBOX_CONFIG_STTY=y
|
||||
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
---
|
||||
profile: indio_um-335ax
|
||||
target: ipq50xx
|
||||
subtarget: generic
|
||||
description: Build image for the Indio um-335ax
|
||||
image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-indio_um-335ax-squashfs-sysupgrade.tar
|
||||
feeds:
|
||||
- name: ipq807x
|
||||
path: ../../feeds/ipq807x_v5.4
|
||||
include:
|
||||
- ucentral-ap
|
||||
packages:
|
||||
- ipq50xx
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=512
|
||||
CONFIG_BUSYBOX_CUSTOM=y
|
||||
CONFIG_BUSYBOX_CONFIG_STTY=y
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
---
|
||||
profile: indio_um-525axm
|
||||
target: ipq50xx
|
||||
subtarget: generic
|
||||
description: Build image for the Indio um-525axm
|
||||
image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-indio_um-525axm-squashfs-sysupgrade.tar
|
||||
feeds:
|
||||
- name: ipq807x
|
||||
path: ../../feeds/ipq807x_v5.4
|
||||
include:
|
||||
- ucentral-ap
|
||||
packages:
|
||||
- ipq50xx
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=512
|
||||
CONFIG_BUSYBOX_CUSTOM=y
|
||||
CONFIG_BUSYBOX_CONFIG_STTY=y
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
profile: indio_um-525axp
|
||||
target: ipq50xx
|
||||
subtarget: generic
|
||||
description: Build image for the Indio um-525axp
|
||||
image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-indio_um-525axp-squashfs-sysupgrade.tar
|
||||
feeds:
|
||||
- name: ipq807x
|
||||
path: ../../feeds/ipq807x_v5.4
|
||||
include:
|
||||
- ucentral-ap
|
||||
packages:
|
||||
- ipq50xx
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=512
|
||||
CONFIG_BUSYBOX_CUSTOM=y
|
||||
CONFIG_BUSYBOX_CONFIG_STTY=y
|
||||
|
||||
|
||||
@@ -13,5 +13,3 @@ packages:
|
||||
- ipq53xx
|
||||
- qca-ssdk-shell
|
||||
- e2fsprogs
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=0
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
---
|
||||
profile: zyxel_nwa50be
|
||||
target: ipq53xx
|
||||
subtarget: generic
|
||||
description: Build image for the zyxel nwa50be
|
||||
image: bin/targets/ipq53xx/generic/openwrt-ipq53xx-zyxel_nwa50be-squashfs-sysupgrade.tar
|
||||
feeds:
|
||||
- name: qca
|
||||
path: ../../feeds/qca-wifi-7
|
||||
packages:
|
||||
- ipq53xx
|
||||
- qca-ssdk-shell
|
||||
include:
|
||||
- ucentral-ap
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=0
|
||||
Reference in New Issue
Block a user