mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 17:42:41 +00:00
Compare commits
8 Commits
staging-pk
...
staging-WI
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
77c66e36ea | ||
|
|
cabb53373c | ||
|
|
feb410ddc3 | ||
|
|
43a8dd1303 | ||
|
|
188f6b33e0 | ||
|
|
27e4eb3685 | ||
|
|
aec24f68df | ||
|
|
d2c0a60442 |
2
.github/workflows/build-dev.yml
vendored
2
.github/workflows/build-dev.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
target: [ 'cig_wf189h', 'cig_wf189w', 'cig_wf660a', 'cig_wf672', 'cig_wf186h', 'cig_wf186w', 'cig_wf188n', 'cig_wf189', 'cig_wf196', 'cig_wf196', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'sonicfi_rap630w-312g', 'sonicfi_rap63xc-211g', 'sonicfi_rap630c-311g', 'sonicfi_rap630w-311g', 'sonicfi_rap630w-211g', 'sonicfi_rap650c', 'sonicfi_rap7110c-341x', 'sonicfi_rap750e-h', 'sonicfi_rap750e-s', 'sonicfi_rap750w-311a', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap105', 'edgecore_eap111', 'edgecore_eap112', 'edgecore_oap101', 'edgecore_oap101-6e', 'edgecore_oap101e', 'edgecore_oap101e-6e', 'edgecore_oap103', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4x_3', 'hfcl_ion4xi_w', 'hfcl_ion4x_w', 'indio_um-305ax', 'senao_iap4300m', 'senao_iap2300m', 'senao_jeap6500', 'udaya_a6-id2', 'udaya_a6-od2', 'yuncore_ax820', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655', 'emplus_wap588m', 'zyxel_nwa130be', 'sercomm_ap72tip-v4' ]
|
||||
target: [ 'cig_wf189h', 'cig_wf189w', 'cig_wf660a', 'cig_wf672', 'cig_wf186h', 'cig_wf186w', 'cig_wf188n', 'cig_wf189', 'cig_wf196', 'cig_wf196', 'cybertan_eww631-a1', 'cybertan_eww631-b1', 'sonicfi_rap630w-312g', 'sonicfi_rap63xc-211g', 'sonicfi_rap630c-311g', 'sonicfi_rap630w-311g', 'sonicfi_rap630w-211g', 'sonicfi_rap650c', 'sonicfi_rap7110c-341x', 'sonicfi_rap750e-h', 'sonicfi_rap750e-s', 'sonicfi_rap750w-311a', 'edgecore_eap101', 'edgecore_eap102', 'edgecore_eap104', 'edgecore_eap105', 'edgecore_eap111', 'edgecore_eap112', 'edgecore_oap101', 'edgecore_oap101-6e', 'edgecore_oap101e', 'edgecore_oap101e-6e', 'edgecore_oap103', 'hfcl_ion4xe', 'hfcl_ion4xi', 'hfcl_ion4x', 'hfcl_ion4x_2', 'hfcl_ion4x_3', 'hfcl_ion4xi_w', 'hfcl_ion4x_w', 'indio_um-305ax', 'senao_iap4300m', 'senao_iap2300m', 'senao_jeap6500', 'udaya_a6-id2', 'udaya_a6-od2', 'yuncore_ax820', 'yuncore_ax840', 'yuncore_fap640', 'yuncore_fap650', 'yuncore_fap655', 'emplus_wap588m', 'emplus_wap581', 'zyxel_nwa130be', 'sercomm_ap72tip-v4' ]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
|
||||
@@ -63,7 +63,8 @@ ALLWIFIBOARDS:= \
|
||||
yuncore-fap655 \
|
||||
udaya-a6-id2 \
|
||||
udaya-a6-od2 \
|
||||
meshpp-s618
|
||||
meshpp-s618 \
|
||||
emplus-wap581
|
||||
|
||||
ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ath11k-wifi-$(BOARD))
|
||||
|
||||
@@ -426,6 +427,7 @@ $(eval $(call generate-ath11k-wifi-package,yuncore-fap655,YunCore FAP655))
|
||||
$(eval $(call generate-ath11k-wifi-package,udaya-a6-id2,Udaya A6-ID2))
|
||||
$(eval $(call generate-ath11k-wifi-package,udaya-a6-od2,Udaya A6-OD2))
|
||||
$(eval $(call generate-ath11k-wifi-package,wallys-dr5018,Wallys DR5018))
|
||||
$(eval $(call generate-ath11k-wifi-package,emplus-wap581,emplus-wap581))
|
||||
|
||||
$(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
|
||||
$(eval $(call BuildPackage,ath11k-wifi-qcom-ipq5018))
|
||||
|
||||
BIN
feeds/ipq807x_v5.4/ath11k-wifi/board-emplus-wap581.bin.IPQ5018
Normal file
BIN
feeds/ipq807x_v5.4/ath11k-wifi/board-emplus-wap581.bin.IPQ5018
Normal file
Binary file not shown.
BIN
feeds/ipq807x_v5.4/ath11k-wifi/board-emplus-wap581.bin.QCN6122
Normal file
BIN
feeds/ipq807x_v5.4/ath11k-wifi/board-emplus-wap581.bin.QCN6122
Normal file
Binary file not shown.
@@ -68,6 +68,9 @@ qcom_setup_interfaces()
|
||||
glinet,b3000)
|
||||
ucidef_add_switch "switch1" "6u@eth1" "1:wan" "2:lan" "3:lan"
|
||||
;;
|
||||
emplus,wap581)
|
||||
ucidef_set_interface_wan "eth0 eth1"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
@@ -140,6 +140,7 @@ ath11k/IPQ5018/hw1.0/caldata.bin)
|
||||
udaya,a6-od2|\
|
||||
wallys,dr5018|\
|
||||
yuncore,fap655|\
|
||||
emplus,wap581|\
|
||||
glinet,b3000)
|
||||
caldata_extract "0:ART" 0x1000 0x20000
|
||||
;;
|
||||
@@ -163,6 +164,7 @@ ath11k/qcn6122/hw1.0/caldata_1.bin)
|
||||
udaya,a6-od2|\
|
||||
hfcl,ion4xi_w|\
|
||||
wallys,dr5018|\
|
||||
emplus,wap581|\
|
||||
yuncore,fap655)
|
||||
caldata_extract "0:ART" 0x26800 0x20000
|
||||
;;
|
||||
|
||||
@@ -91,6 +91,7 @@ platform_check_image() {
|
||||
edgecore,oap101|\
|
||||
edgecore,oap101-6e|\
|
||||
edgecore,oap101e|\
|
||||
emplus,wap581|\
|
||||
edgecore,oap101e-6e)
|
||||
[ "$magic_long" = "73797375" ] && return 0
|
||||
;;
|
||||
@@ -138,6 +139,7 @@ platform_do_upgrade() {
|
||||
optimcloud,d60-5g|\
|
||||
optimcloud,d50|\
|
||||
optimcloud,d50-5g|\
|
||||
emplus,wap581|\
|
||||
yuncore,fap655)
|
||||
[ -f /proc/boot_info/rootfs/upgradepartition ] && {
|
||||
CI_UBIPART="$(cat /proc/boot_info/rootfs/upgradepartition)"
|
||||
|
||||
@@ -0,0 +1,831 @@
|
||||
/dts-v1/;
|
||||
/* Copyright (c) 2018-2021, The Linux Foundation. All rights reserved.
|
||||
*
|
||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "ipq5018.dtsi"
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
#address-cells = <0x2>;
|
||||
#size-cells = <0x2>;
|
||||
model = "Emplus WAP581";
|
||||
compatible = "emplus,wap581", "qcom,ipq5018-mp03.3", "qcom,ipq5018";
|
||||
interrupt-parent = <&intc>;
|
||||
|
||||
aliases {
|
||||
serial0 = &blsp1_uart1;
|
||||
ethernet0 = "/soc/dp1";
|
||||
ethernet1 = "/soc/dp2";
|
||||
};
|
||||
|
||||
chosen {
|
||||
bootargs = "console=ttyMSM0,115200,n8 rw init=/init";
|
||||
bootargs-append = " swiotlb=1 coherent_pool=2M";
|
||||
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 | 13MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | M3 Dump | 0x4E000000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | QDSS | 0x4E100000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | data | 0x4E200000 | 13MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | M3 Dump | 0x4EF00000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | QDSS | 0x4F000000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | |
|
||||
* | Rest of the memory for Linux |
|
||||
* | |
|
||||
* +===================================================+
|
||||
*/
|
||||
q6_mem_regions: q6_mem_regions@4B000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4B000000 0x0 0x4100000>;
|
||||
};
|
||||
|
||||
q6_code_data: q6_code_data@4B000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4B000000 0x0 0x1400000>;
|
||||
};
|
||||
|
||||
q6_ipq5018_data: q6_ipq5018_data@4C400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4C400000 0x0 0xD00000>;
|
||||
};
|
||||
|
||||
m3_dump: m3_dump@4D100000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D100000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_etr_region: q6_etr_dump@4D200000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D200000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_data1: q6_qcn6122_data1@4D300000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D300000 0x0 0xD00000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E000000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E100000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E100000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_data2: q6_qcn6122_data2@4E200000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E200000 0x0 0xD00000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6122_2: m3_dump_qcn6122_2@4EF00000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4EF00000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_etr_2: q6_qcn6122_etr_2@4F000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4F000000 0x0 0x100000>;
|
||||
};
|
||||
#else
|
||||
/* 512MB/1GB Profiles
|
||||
* +==========+==============+=========================+
|
||||
* | | | |
|
||||
* | Region | Start Offset | Size |
|
||||
* | | | |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | NSS | 0x40000000 | 16MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | Linux | 0x41000000 | Depends on total memory |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | uboot | 0x4A600000 | 4MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | SBL | 0x4AA00000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | smem | 0x4AB00000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | TZ | 0x4AC00000 | 4MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | Q6 | | |
|
||||
* | code/ | 0x4B000000 | 20MB |
|
||||
* | data | | |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | data | 0x4C400000 | 13MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | M3 Dump | 0x4D100000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | QDSS | 0x4D200000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | IPQ5018 | | |
|
||||
* | Caldb | 0x4D300000 | 2MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | data | 0x4D500000 | 13MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | M3 Dump | 0x4E200000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | QDSS | 0x4E300000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_1| | |
|
||||
* | Caldb | 0x4E400000 | 5MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | data | 0x4E900000 | 13MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | M3 Dump | 0x4F600000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | QDSS | 0x4F700000 | 1MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | QCN6122_2| | |
|
||||
* | Caldb | 0x4F800000 | 5MB |
|
||||
* +----------+--------------+-------------------------+
|
||||
* | |
|
||||
* | Rest of the memory for Linux |
|
||||
* | |
|
||||
* +===================================================+
|
||||
*/
|
||||
|
||||
q6_mem_regions: q6_mem_regions@4B000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4B000000 0x0 0x4D00000>;
|
||||
};
|
||||
|
||||
q6_code_data: q6_code_data@4B000000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4B000000 0x0 01400000>;
|
||||
};
|
||||
|
||||
q6_ipq5018_data: q6_ipq5018_data@4C400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4C400000 0x0 0xD00000>;
|
||||
};
|
||||
|
||||
m3_dump: m3_dump@4D100000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D100000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_etr_region: q6_etr_dump@4D200000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D200000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_caldb_region: q6_caldb_region@4D300000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D300000 0x0 0x200000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_data1: q6_qcn6122_data1@4D500000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4D500000 0x0 0xD00000>;
|
||||
};
|
||||
|
||||
m3_dump_qcn6122_1: m3_dump_qcn6122_1@4E200000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E200000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_etr_1: q6_qcn6122_etr_1@4E300000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E300000 0x0 0x100000>;
|
||||
};
|
||||
|
||||
q6_qcn6122_caldb_1: q6_qcn6122_caldb_1@4E400000 {
|
||||
no-map;
|
||||
reg = <0x0 0x4E400000 0x0 0x500000>;
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
soc {
|
||||
serial@78af000 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
qpic_bam: dma@7984000{
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
nand: qpic-nand@79b0000 {
|
||||
pinctrl-0 = <&qspi_nand_pins>;
|
||||
pinctrl-names = "default";
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
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 = <0>;
|
||||
};
|
||||
|
||||
ethernet-phy@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
|
||||
ethernet-phy@2 {
|
||||
reg = <2>;
|
||||
};
|
||||
|
||||
ethernet-phy@3 {
|
||||
reg = <3>;
|
||||
};
|
||||
|
||||
ethernet-phy@4 {
|
||||
reg = <4>;
|
||||
};
|
||||
};
|
||||
|
||||
ess-instance {
|
||||
num_devices = <0x2>;
|
||||
ess-switch@0x39c00000 {
|
||||
compatible = "qcom,ess-switch-ipq50xx";
|
||||
device_id = <0>;
|
||||
switch_mac_mode = <0xf>; /* mac mode for uniphy instance*/
|
||||
cmnblk_clk = "internal_96MHz"; /* cmnblk clk*/
|
||||
qcom,port_phyinfo {
|
||||
port@0 {
|
||||
port_id = <1>;
|
||||
phy_address = <7>;
|
||||
};
|
||||
port@1 {
|
||||
port_id = <2>;
|
||||
forced-speed = <1000>;
|
||||
forced-duplex = <1>;
|
||||
};
|
||||
};
|
||||
led_source@0 {
|
||||
source = <0>;
|
||||
mode = "normal";
|
||||
speed = "all";
|
||||
blink_en = "enable";
|
||||
active = "high";
|
||||
};
|
||||
};
|
||||
|
||||
ess-switch1@1 {
|
||||
compatible = "qcom,ess-switch-qca83xx";
|
||||
device_id = <1>;
|
||||
switch_access_mode = "mdio";
|
||||
mdio-bus = <&mdio1>;
|
||||
reset_gpio = <&tlmm 0x27 0>;
|
||||
switch_cpu_bmp = <0x40>; /* cpu port bitmap */
|
||||
switch_lan_bmp = <0x3e>; /* 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 = <0>;
|
||||
};
|
||||
port@1 {
|
||||
port_id = <2>;
|
||||
phy_address = <1>;
|
||||
};
|
||||
port@2 {
|
||||
port_id = <3>;
|
||||
phy_address = <2>;
|
||||
};
|
||||
port@3 {
|
||||
port_id = <4>;
|
||||
phy_address = <3>;
|
||||
};
|
||||
port@4 {
|
||||
port_id = <5>;
|
||||
phy_address = <4>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
wifi0: wifi@c000000 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
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";
|
||||
qcom,rx-page-mode = <0>;
|
||||
};
|
||||
|
||||
dp2 {
|
||||
device_type = "network";
|
||||
compatible = "qcom,nss-dp";
|
||||
clocks = <&gcc GCC_SNOC_GMAC1_AXI_CLK>;
|
||||
clock-names = "nss-snoc-gmac-axi-clk";
|
||||
qcom,id = <2>;
|
||||
reg = <0x39D00000 0x10000>;
|
||||
interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
|
||||
qcom,mactype = <2>;
|
||||
local-mac-address = [000000000000];
|
||||
phy-mode = "sgmii";
|
||||
qcom,rx-page-mode = <0>;
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
pinctrl-0 = <&leds_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
led@28 {
|
||||
label = "led_blue";
|
||||
gpios = <&tlmm 28 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led@38 {
|
||||
label = "led_red";
|
||||
gpios = <&tlmm 38 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
};
|
||||
|
||||
led@46 {
|
||||
label = "led_green";
|
||||
gpios = <&tlmm 46 GPIO_ACTIVE_HIGH>;
|
||||
default-state = "off";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
nss-macsec1 {
|
||||
compatible = "qcom,nss-macsec";
|
||||
phy_addr = <0x1c>;
|
||||
mdiobus = <&mdio1>;
|
||||
};
|
||||
|
||||
lpass: lpass@0xA000000{
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
pcm_lb: pcm_lb@0 {
|
||||
status = "disabled";
|
||||
};
|
||||
gpio_keys {
|
||||
compatible = "gpio-keys";
|
||||
pinctrl-0 = <&button_pins>;
|
||||
pinctrl-names = "default";
|
||||
button@1 {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&tlmm 27 GPIO_ACTIVE_LOW>;
|
||||
linux,input-type = <1>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
qcom,test@0 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
thermal-zones {
|
||||
status = "ok";
|
||||
};
|
||||
};
|
||||
|
||||
&tlmm {
|
||||
pinctrl-0 = <&blsp0_uart_pins>;
|
||||
pinctrl-names = "default";
|
||||
|
||||
blsp0_uart_pins: uart_pins {
|
||||
blsp0_uart_rx_tx {
|
||||
pins = "gpio20", "gpio21";
|
||||
function = "blsp0_uart0";
|
||||
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 {
|
||||
pins = "gpio4", "gpio5", "gpio6", "gpio7";
|
||||
function = "qspi_data";
|
||||
drive-strength = <8>;
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
mdio1_pins: mdio_pinmux {
|
||||
mux_0 {
|
||||
pins = "gpio36";
|
||||
function = "mdc";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
|
||||
mux_1 {
|
||||
pins = "gpio37";
|
||||
function = "mdio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
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 = "gpio27";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
leds_pins: leds_pins {
|
||||
led_blue {
|
||||
pins = "gpio28";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
led_red { /* POWER_LED */
|
||||
pins = "gpio38";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
|
||||
led_green { /* 2G_LED */
|
||||
pins = "gpio46";
|
||||
function = "gpio";
|
||||
drive-strength = <8>;
|
||||
bias-pull-down;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&soc {
|
||||
|
||||
|
||||
};
|
||||
|
||||
&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
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
&i2c_0 {
|
||||
pinctrl-0 = <&i2c_pins>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
&wifi0 {
|
||||
/* IPQ5018 */
|
||||
qcom,multipd_arch;
|
||||
qcom,userpd-subsys-name = "q6v5_wcss_userpd1";
|
||||
qcom,rproc = <&q6_wcss_pd1>;
|
||||
#ifdef __IPQ_MEM_PROFILE_256_MB__
|
||||
qcom,tgt-mem-mode = <2>;
|
||||
#else
|
||||
qcom,tgt-mem-mode = <1>;
|
||||
#endif
|
||||
qcom,board_id = <0x23>;
|
||||
#ifdef __CNSS2__
|
||||
qcom,bdf-addr = <0x4C400000 0x4C400000 0x4C400000 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4D300000 0x4D300000 0 0 0>;
|
||||
qcom,caldb-size = <0x200000>;
|
||||
mem-region = <&q6_ipq5018_data>;
|
||||
#else
|
||||
memory-region = <&q6_ipq5018_data>;
|
||||
#endif
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&wifi1 {
|
||||
/* QCN6122 5G */
|
||||
qcom,multipd_arch;
|
||||
qcom,userpd-subsys-name = "q6v5_wcss_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 = <0x4D500000 0x4D500000 0x4D300000 0x0 0x0>;
|
||||
qcom,caldb-addr = <0x4E400000 0x4E400000 0 0 0>;
|
||||
qcom,caldb-size = <0x500000>;
|
||||
mem-region = <&q6_qcn6122_data1>;
|
||||
#else
|
||||
memory-region = <&q6_qcn6122_data1>;
|
||||
#endif
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&dwc_0 {
|
||||
/delete-property/ #phy-cells;
|
||||
/delete-property/ phys;
|
||||
/delete-property/ phy-names;
|
||||
};
|
||||
|
||||
&hs_m31phy_0 {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&eud {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&pcie_x1 {
|
||||
perst-gpio = <&tlmm 18 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
&pcie_x2 {
|
||||
perst-gpio = <&tlmm 18 GPIO_ACTIVE_LOW>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&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 >;
|
||||
};
|
||||
};
|
||||
|
||||
&qfprom {
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
&tsens {
|
||||
status = "ok";
|
||||
};
|
||||
@@ -228,3 +228,16 @@ define Device/glinet_b3000
|
||||
IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand
|
||||
endef
|
||||
TARGET_DEVICES += glinet_b3000
|
||||
|
||||
define Device/emplus_wap581
|
||||
DEVICE_TITLE := Emplus WAP581
|
||||
DEVICE_DTS := qcom-ipq5018-emplus-wap581
|
||||
SUPPORTED_DEVICES := emplus,wap581
|
||||
DEVICE_PACKAGES := ath11k-wifi-emplus-wap581 ath11k-firmware-ipq50xx-map-spruce
|
||||
DEVICE_DTS_CONFIG := config@mp03.3
|
||||
IMAGES := sysupgrade.tar nand-factory.bin
|
||||
IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata
|
||||
IMAGE/nand-factory.bin := append-ubi | qsdk-ipq-factory-nand
|
||||
endef
|
||||
TARGET_DEVICES += emplus_wap581
|
||||
|
||||
|
||||
@@ -832,6 +832,13 @@ morse_hostapd_add_bss(){
|
||||
morse_override_hostapd_set_bss_options hostapd_cfg "$_phy" "$vif" || return 1
|
||||
json_get_vars wds wds_bridge sae_pwe dtim_period max_listen_int start_disabled
|
||||
|
||||
local network_config network_values
|
||||
json_get_values network_values network
|
||||
network_config=$(echo "$network_values" | cut -d' ' -f1)
|
||||
|
||||
if [ "$wds" -gt 0 ] && [ -z "$wds_bridge" ]; then
|
||||
wds_bridge="${network_config%%[0-9]*}"
|
||||
fi
|
||||
|
||||
raw_block=
|
||||
json_for_each_item morse_hostapd_add_raw raws
|
||||
|
||||
25
feeds/qca-wifi-7/cig-platform-pkg/cig-poe-judgment/Makefile
Normal file
25
feeds/qca-wifi-7/cig-platform-pkg/cig-poe-judgment/Makefile
Normal file
@@ -0,0 +1,25 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=cig-poe-judgment
|
||||
PKG_RELEASE:=1
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
define KernelPackage/cig-poe-judgment
|
||||
SUBMENU:=Other modules
|
||||
TITLE:=CIG POE judgment
|
||||
FILES:=$(PKG_BUILD_DIR)/cig_poe_judgment.ko
|
||||
AUTOLOAD:=$(call AutoLoad,99,cig_poe_judgment)
|
||||
endef
|
||||
|
||||
define KernelPackage/cig-poe-judgment/description
|
||||
Find POE type
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
$(KERNEL_MAKE) M="$(PKG_BUILD_DIR)" modules
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,cig-poe-judgment))
|
||||
@@ -0,0 +1 @@
|
||||
obj-m += cig_poe_judgment.o
|
||||
@@ -0,0 +1,252 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/kthread.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/irqreturn.h>
|
||||
#include <linux/of_gpio.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
#define GPIO_MAX 8
|
||||
#define INT_MODE_MASK 0xf0
|
||||
#define DETECT_MODE1 0x3
|
||||
#define DETECT_MODE2 0x4
|
||||
|
||||
enum POE_TYPE {
|
||||
POE_TYPE_AT = 1,
|
||||
POE_TYPE_AF,
|
||||
POE_TYPE_BT,
|
||||
POE_TYPE_DC,
|
||||
POE_TYPE_MAX
|
||||
};
|
||||
|
||||
struct poe_irq_data
|
||||
{
|
||||
struct device *dev;
|
||||
int irq;
|
||||
struct tasklet_struct tasklet;
|
||||
int poe_type;
|
||||
};
|
||||
|
||||
static void *poe_gpio_base;
|
||||
static void *pse_gpio_base;
|
||||
struct poe_irq_data *data = NULL;
|
||||
u32 mode;
|
||||
|
||||
static const struct of_device_id my_of_ids[] = {
|
||||
{.compatible = "poe-judge"},
|
||||
{},
|
||||
};
|
||||
|
||||
MODULE_DEVICE_TABLE(of,my_of_ids);
|
||||
|
||||
static int poe_info_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
const char *type_str = "invalid";
|
||||
|
||||
switch (data->poe_type) {
|
||||
case POE_TYPE_AT:
|
||||
type_str = "AT";
|
||||
break;
|
||||
case POE_TYPE_AF:
|
||||
type_str = "AF";
|
||||
break;
|
||||
case POE_TYPE_BT:
|
||||
type_str = "BT";
|
||||
break;
|
||||
case POE_TYPE_DC:
|
||||
type_str = "DC";
|
||||
break;
|
||||
}
|
||||
|
||||
seq_printf(m, "%s\n", type_str);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void poe_tasklet_func(unsigned long data)
|
||||
{
|
||||
struct poe_irq_data *irq_data = (struct poe_irq_data *)data;
|
||||
|
||||
writel(0x3, pse_gpio_base+4);
|
||||
irq_data->poe_type = POE_TYPE_BT;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static irqreturn_t gpio_key1_irq_handler(int irq, void *dev_id)
|
||||
{
|
||||
struct poe_irq_data *data = (struct poe_irq_data *)dev_id;
|
||||
|
||||
disable_irq_nosync(data->irq);
|
||||
tasklet_schedule(&data->tasklet);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static int poe_info_proc_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, poe_info_proc_show, NULL);
|
||||
}
|
||||
|
||||
static const struct proc_ops poe_info_proc_fops = {
|
||||
.proc_open = poe_info_proc_open,
|
||||
.proc_read = seq_read,
|
||||
.proc_lseek = seq_lseek,
|
||||
.proc_release = single_release,
|
||||
};
|
||||
|
||||
static int gpio_key_probe(struct platform_device *dev)
|
||||
{
|
||||
int ret = 0;
|
||||
int irq = (-1);
|
||||
int val = 0;
|
||||
int gpio_id = 0;
|
||||
int gpio[GPIO_MAX] = {0}, gpio_val[GPIO_MAX] = {0};
|
||||
int num;
|
||||
char name[16];
|
||||
struct device_node *np = dev->dev.of_node;
|
||||
|
||||
if (of_property_read_u32(np, "detect-mode", &mode)) {
|
||||
pr_err("Failed to read detect mode\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
data = devm_kzalloc(&dev->dev, sizeof(struct poe_irq_data), GFP_KERNEL);
|
||||
if (!data)
|
||||
{
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (mode & INT_MODE_MASK) {
|
||||
poe_gpio_base = ioremap(0x1017004, 8);
|
||||
pse_gpio_base = ioremap(0x1026000, 8);
|
||||
|
||||
writel(0x2c1, pse_gpio_base);
|
||||
writel(0x0, pse_gpio_base+4);
|
||||
|
||||
|
||||
data->dev = &dev->dev;
|
||||
dev_set_drvdata(&dev->dev, data);
|
||||
|
||||
gpio_id = of_get_named_gpio(dev->dev.of_node, "detect_gpio", 0);
|
||||
if (gpio_id < 0)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
tasklet_init(&data->tasklet, poe_tasklet_func, (unsigned long)data);
|
||||
|
||||
ret = devm_gpio_request_one(&dev->dev, gpio_id, GPIOF_IN, "poe_judge");
|
||||
if(ret)
|
||||
{
|
||||
pr_err("GPIO23 request failed, ret:%d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
val = readl(poe_gpio_base);
|
||||
if(val == 1)
|
||||
{
|
||||
pr_info("poe type is af or bt,close pse first\n");
|
||||
data->poe_type = POE_TYPE_AF;
|
||||
}
|
||||
else
|
||||
{
|
||||
data->poe_type = POE_TYPE_AT;
|
||||
}
|
||||
|
||||
irq = gpio_to_irq(gpio_id);
|
||||
data->irq = irq;
|
||||
|
||||
ret = devm_request_any_context_irq(&dev->dev, data->irq,
|
||||
gpio_key1_irq_handler,
|
||||
IRQF_TRIGGER_FALLING,
|
||||
"poe_judge", data);
|
||||
if (ret)
|
||||
{
|
||||
pr_err("Request irq fail %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
} else {
|
||||
if (mode == DETECT_MODE1 || mode == DETECT_MODE2) {
|
||||
num = 3;
|
||||
} else {
|
||||
pr_err("Wrong poe detect mode\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
for (int i = 0; i < num; i++) {
|
||||
sprintf(name, "detect-gpio%d", i+1);
|
||||
gpio[i] = of_get_named_gpio(np, name, 0);
|
||||
ret = gpio_request(gpio[i], name);
|
||||
if (ret) {
|
||||
pr_err("Can not request gpio %d\n", i+1);
|
||||
return ret;
|
||||
}
|
||||
gpio_direction_input(gpio[i]);
|
||||
gpio_val[i] = gpio_get_value_cansleep(gpio[i]);
|
||||
}
|
||||
|
||||
if (mode == DETECT_MODE1){
|
||||
if (gpio_val[0] > 0) {
|
||||
data->poe_type = POE_TYPE_DC;
|
||||
} else if (gpio_val[1] > 0){
|
||||
if (gpio_val[2] == 0) {
|
||||
data->poe_type = POE_TYPE_AT;
|
||||
} else {
|
||||
data->poe_type = POE_TYPE_AF;
|
||||
}
|
||||
}
|
||||
}else if (mode == DETECT_MODE2){
|
||||
switch (gpio_val[0] | (gpio_val[1] << 1) | (gpio_val[2] << 2)) {
|
||||
case 3:
|
||||
data->poe_type = POE_TYPE_AT;
|
||||
break;
|
||||
case 4:
|
||||
data->poe_type = POE_TYPE_BT;
|
||||
break;
|
||||
case 7:
|
||||
data->poe_type = POE_TYPE_AF;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!proc_create("poe_info", 0444, NULL, &poe_info_proc_fops)) {
|
||||
pr_err("Failed to create proc entry for poe_info\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int gpio_key_remove(struct platform_device *dev)
|
||||
{
|
||||
remove_proc_entry("poe_info", NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct platform_driver poe_judge_driver =
|
||||
{
|
||||
.driver = {
|
||||
.name = "poe_judge",
|
||||
.of_match_table = my_of_ids,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = gpio_key_probe,
|
||||
.remove = gpio_key_remove,
|
||||
};
|
||||
|
||||
module_platform_driver(poe_judge_driver);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("Poe type judgment driver");
|
||||
MODULE_AUTHOR("huangyunxiang<huangyunxiang@cigtech.com>");
|
||||
@@ -236,6 +236,15 @@
|
||||
};
|
||||
};
|
||||
|
||||
poe {
|
||||
compatible = "poe-judge";
|
||||
detect-mode = <0x3>;
|
||||
detect-gpio1 = <&tlmm 25 GPIO_ACTIVE_HIGH>;
|
||||
detect-gpio2 = <&tlmm 43 GPIO_ACTIVE_HIGH>;
|
||||
detect-gpio3 = <&tlmm 29 GPIO_ACTIVE_HIGH>;
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
wsi: wsi {
|
||||
id = <0>;
|
||||
num_chip = <2>;
|
||||
|
||||
@@ -298,6 +298,13 @@
|
||||
};
|
||||
};
|
||||
|
||||
poe {
|
||||
compatible = "poe-judge";
|
||||
detect-mode = <0x11>;
|
||||
detect_gpio = <&tlmm 0x17 0>;
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
ess-instance {
|
||||
num_devices = <0x2>;
|
||||
|
||||
|
||||
@@ -298,6 +298,13 @@
|
||||
};
|
||||
};
|
||||
|
||||
poe {
|
||||
compatible = "poe-judge";
|
||||
detect-mode = <0x11>;
|
||||
detect_gpio = <&tlmm 0x17 0>;
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
ess-instance {
|
||||
num_devices = <0x2>;
|
||||
|
||||
|
||||
@@ -234,6 +234,15 @@
|
||||
};
|
||||
};
|
||||
|
||||
poe {
|
||||
compatible = "poe-judge";
|
||||
detect-mode = <0x4>;
|
||||
detect-gpio1 = <&extgpio 0 0>;
|
||||
detect-gpio2 = <&extgpio 1 0>;
|
||||
detect-gpio3 = <&extgpio 2 0>;
|
||||
status = "ok";
|
||||
};
|
||||
|
||||
wsi: wsi {
|
||||
id = <0>;
|
||||
num_chip = <2>;
|
||||
@@ -538,7 +547,6 @@
|
||||
pinctrl-0 = <&pwm_pins>;
|
||||
pinctrl-names = "default";
|
||||
dft-pwm-status = <0>, <0>, <1>, <0>;
|
||||
poe_type_pin = <&extgpio 0 0 &extgpio 1 0 &extgpio 2 0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
||||
@@ -89,6 +89,7 @@ cig,wf186h|\
|
||||
cig,wf196|\
|
||||
cig,wf188n|\
|
||||
emplus,wap385c|\
|
||||
emplus,wap581|\
|
||||
emplus,wap386v2|\
|
||||
yuncore,ax840|\
|
||||
yuncore,fap655)
|
||||
|
||||
42
feeds/ucentral/poe/Makefile
Normal file
42
feeds/ucentral/poe/Makefile
Normal file
@@ -0,0 +1,42 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=poe
|
||||
PKG_VERSION:=1.0
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
ifeq ($(CONFIG_TARGET_ipq50xx_generic_DEVICE_sonicfi_rap630w_311g),y)
|
||||
TARGET_CFLAGS += -DPLATFORM_EWW631_B1=1
|
||||
endif
|
||||
|
||||
define Package/poe
|
||||
SECTION:=utils
|
||||
CATEGORY:=Utilities
|
||||
TITLE:=Turn on/off PoE ports with TSP23861 chipset
|
||||
DEPENDS:= +libubox +libubus +libuci +libi2c
|
||||
endef
|
||||
|
||||
define Package/poe/description
|
||||
Turn on/off PoE ports
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
mkdir -p $(PKG_BUILD_DIR)
|
||||
$(CP) ./src/* $(PKG_BUILD_DIR)/
|
||||
endef
|
||||
|
||||
|
||||
define Package/poe/install
|
||||
$(INSTALL_DIR) $(1)
|
||||
$(INSTALL_DIR) $(1)/etc/config $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/poe.init $(1)/etc/init.d/poe
|
||||
$(INSTALL_BIN) ./files/poe.config $(1)/etc/config/poe
|
||||
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) $(PKG_BUILD_DIR)/tps23861-poe-ctrl $(1)/usr/bin
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,poe))
|
||||
0
feeds/ucentral/poe/files/poe.config
Normal file
0
feeds/ucentral/poe/files/poe.config
Normal file
33
feeds/ucentral/poe/files/poe.init
Normal file
33
feeds/ucentral/poe/files/poe.init
Normal file
@@ -0,0 +1,33 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
|
||||
START=10
|
||||
|
||||
tps23861_poe_ctrl () {
|
||||
local section="$1"
|
||||
local num mode
|
||||
config_get num "$section" port_num
|
||||
config_get mode "$section" admin_mode
|
||||
|
||||
if [ "$mode" == "1" ]; then
|
||||
output=$(tps23861-poe-ctrl -p "${num}" -P on)
|
||||
echo "<6>${output}" > "/dev/kmsg"
|
||||
else
|
||||
output=$(tps23861-poe-ctrl -p "${num}" -P off)
|
||||
echo "<6>${output}" > "/dev/kmsg"
|
||||
fi
|
||||
}
|
||||
|
||||
start(){
|
||||
. /lib/functions.sh
|
||||
|
||||
board=$(board_name)
|
||||
case $board in
|
||||
sonicfi,rap630w-311g|\
|
||||
cybertan,eww631-b1)
|
||||
config_load poe
|
||||
config_foreach tps23861_poe_ctrl port
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
}
|
||||
26
feeds/ucentral/poe/src/Makefile
Normal file
26
feeds/ucentral/poe/src/Makefile
Normal file
@@ -0,0 +1,26 @@
|
||||
CFLAGS += -Wall -g
|
||||
|
||||
INCLUDES =
|
||||
|
||||
LDFLAGS = -lubus -lubox -li2c
|
||||
|
||||
LIBS =
|
||||
|
||||
SRCS = tps23861-poe-ctrl.c \
|
||||
|
||||
OBJS = $(SRCS:.c=.o)
|
||||
|
||||
MAIN = tps23861-poe-ctrl
|
||||
|
||||
|
||||
all: $(MAIN)
|
||||
|
||||
$(MAIN): $(OBJS)
|
||||
$(CC) $(CFLAGS) $(INCLUDES) -o $(MAIN) $(OBJS) $(LDFLAGS) $(LIBS)
|
||||
|
||||
.c.o:
|
||||
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
|
||||
|
||||
clean:
|
||||
$(RM) *.o *~ $(MAIN) $(TEST)
|
||||
|
||||
215
feeds/ucentral/poe/src/tps23861-poe-ctrl.c
Normal file
215
feeds/ucentral/poe/src/tps23861-poe-ctrl.c
Normal file
@@ -0,0 +1,215 @@
|
||||
/*
|
||||
* User-space daemon formonitoring and managing PoE ports with
|
||||
* TI TPS23861 chips. based on the Linux Kernel TPS23861
|
||||
* HWMON driver.
|
||||
*/
|
||||
|
||||
#include <stdio.h> /* Standard input/output definitions */
|
||||
#include <string.h> /* String function definitions */
|
||||
#include <unistd.h> /* UNIX standard function definitions */
|
||||
#include <fcntl.h> /* File control definitions */
|
||||
#include <errno.h> /* Error number definitions */
|
||||
#include <sys/ioctl.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/i2c-dev.h> /* uapi/linux/i2c-dev.h */
|
||||
|
||||
#include <libubox/ulog.h>
|
||||
|
||||
#define TPS23861_I2C_ADDR 0x20
|
||||
#define DETECT_CLASS_RESTART 0x18
|
||||
#define POWER_ENABLE 0x19
|
||||
#define POWER_ON_SHIFT 0
|
||||
#define POWER_OFF_SHIFT 4
|
||||
|
||||
typedef unsigned char u8;
|
||||
|
||||
#if defined(PLATFORM_EWW631_B1)
|
||||
#define TPS23861_NUM_PORTS 1
|
||||
#endif
|
||||
|
||||
#define CONVERT_PORT_NUM(x) (1 << ((u8)x-1))
|
||||
|
||||
unsigned int PORT_POWER_STATUS[TPS23861_NUM_PORTS];
|
||||
|
||||
int i2c_handler = -1;
|
||||
#define ULOG_DBG(fmt, ...) ulog(LOG_DEBUG, fmt, ## __VA_ARGS__)
|
||||
|
||||
int open_device(void)
|
||||
{
|
||||
int fd, fset;
|
||||
|
||||
fd = open("/dev/i2c-0", O_RDWR);
|
||||
fset = fcntl(fd, F_SETFL, 0);
|
||||
if (fset < 0)
|
||||
printf("fcntl failed!\n");
|
||||
|
||||
//if (isatty(STDIN_FILENO) == 0)
|
||||
// printf("standard input is not a terminal device\n");
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
||||
int access_salve(int fd)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if((ret = ioctl(fd, I2C_SLAVE, TPS23861_I2C_ADDR)) < 0)
|
||||
{
|
||||
printf("%s: Failed to access slave bus[%s]\n",__func__, strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
// Write to an I2C slave device's register:
|
||||
int i2c_write(u8 slave_addr, u8 reg, u8 data)
|
||||
{
|
||||
u8 outbuf[2];
|
||||
|
||||
struct i2c_msg msgs[1];
|
||||
struct i2c_rdwr_ioctl_data msgset[1];
|
||||
|
||||
outbuf[0] = reg;
|
||||
outbuf[1] = data;
|
||||
|
||||
msgs[0].addr = slave_addr;
|
||||
msgs[0].flags = 0;
|
||||
msgs[0].len = 2;
|
||||
msgs[0].buf = outbuf;
|
||||
|
||||
msgset[0].msgs = msgs;
|
||||
msgset[0].nmsgs = 1;
|
||||
|
||||
if (ioctl(i2c_handler, I2C_RDWR, &msgset) < 0) {
|
||||
perror("ioctl(I2C_RDWR) in i2c_write");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void poe_set_PowerOnOff(u8 port, u8 on_off) {
|
||||
u8 value;
|
||||
u8 portBit;
|
||||
portBit = CONVERT_PORT_NUM(port+1);
|
||||
|
||||
if(on_off == 0) {
|
||||
value = (portBit << POWER_OFF_SHIFT);
|
||||
PORT_POWER_STATUS[port] = 0;
|
||||
} else {
|
||||
value = (portBit << POWER_ON_SHIFT);
|
||||
PORT_POWER_STATUS[port] = 1;
|
||||
}
|
||||
|
||||
ULOG_DBG("set Port%d Power Status [%d] portBit 0x[%x] value 0x[%x]\n", port+1, PORT_POWER_STATUS[port], portBit, value);
|
||||
|
||||
if(i2c_write(TPS23861_I2C_ADDR, POWER_ENABLE, value) < 0)
|
||||
{
|
||||
ULOG_ERR("Set port%d power on-off error (0x19)\n", port);
|
||||
}
|
||||
}
|
||||
|
||||
void RestartPortDetectClass(u8 port)
|
||||
{
|
||||
u8 value;
|
||||
|
||||
value = (1 << port) | (1 << (port + 4));
|
||||
ULOG_DBG("RestartPortDetectClass value 0x%x\n", value);
|
||||
if(i2c_write(TPS23861_I2C_ADDR, DETECT_CLASS_RESTART, value) < 0) {
|
||||
ULOG_ERR("Set port%d detection and class on error\n",port);
|
||||
}
|
||||
}
|
||||
|
||||
int usage(const char *progname)
|
||||
{
|
||||
fprintf(stderr, "Usage: %s -p <1-3> -P <on|off> [options]\n"
|
||||
"Required options:\n"
|
||||
" -p <1-3>: Select port number (Only port 1 is supported)\n"
|
||||
" -P <on|off>: Set PSE function state <on|off>\n"
|
||||
"Optional options:\n"
|
||||
" -d Enable debug mode\n"
|
||||
"\n", progname);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int setPSE(int port ,char *optarg)
|
||||
{
|
||||
int ret = 0;
|
||||
i2c_handler = open_device();
|
||||
if (i2c_handler < 0) {
|
||||
ULOG_ERR("open i2c-0 device error!\n");
|
||||
goto EXIT;
|
||||
}
|
||||
|
||||
ret = access_salve(i2c_handler);
|
||||
if (ret < 0)
|
||||
{
|
||||
ULOG_ERR("The i2c-0 access error\n");
|
||||
goto EXIT;
|
||||
}
|
||||
|
||||
if(!strncmp("on", optarg, 2)) {
|
||||
printf("Enable port%d PSE function\n", port);
|
||||
RestartPortDetectClass(port-1);
|
||||
}
|
||||
else if (!strncmp("off", optarg, 3)) {
|
||||
printf("Disable port%d PSE function\n", port);
|
||||
poe_set_PowerOnOff(port-1, 0);
|
||||
}
|
||||
else {
|
||||
ULOG_ERR("[Set] Do not accept this optarg!!!\n");
|
||||
ret = 1;
|
||||
}
|
||||
EXIT:
|
||||
close(i2c_handler);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int ch, ret = 0, port = 0;
|
||||
char *PSE = NULL;
|
||||
if (argc == 1) {
|
||||
return usage(argv[0]);
|
||||
}
|
||||
|
||||
|
||||
ulog_open(ULOG_STDIO | ULOG_SYSLOG, LOG_DAEMON, "tps23861");
|
||||
ulog_threshold(LOG_INFO);
|
||||
|
||||
while ((ch = getopt(argc, argv, "dp:P:")) != -1) {
|
||||
switch (ch) {
|
||||
case 'd':
|
||||
printf("tps23861-i2c-control ulog_threshold set to debug level\n");
|
||||
ulog_threshold(LOG_DEBUG);
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
port = atoi(optarg);
|
||||
break;
|
||||
|
||||
case 'P':
|
||||
PSE = optarg;
|
||||
break;
|
||||
|
||||
default:
|
||||
ret = usage(argv[0]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (port < 1 || port > 3) {
|
||||
ret = usage(argv[0]);
|
||||
}
|
||||
else {
|
||||
if (PSE) {
|
||||
setPSE(port, PSE);
|
||||
}
|
||||
else {
|
||||
ret = usage(argv[0]);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
@@ -4,10 +4,10 @@ PKG_NAME:=ucentral-client
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_URL=https://github.com/Telecominfraproject/wlan-ucentral-client.git
|
||||
PKG_MIRROR_HASH:=20d0573e5460ae9780307ab9d54234bb75d3b98fb36806f896819918087b14df
|
||||
PKG_MIRROR_HASH:=7dfeaedf141a6377de2dc6bcd646b1640201f204db42af52777d018700bc991c
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2024-10-20
|
||||
PKG_SOURCE_VERSION:=8c45f965c30d1cf11e3a5a625a5e2baf3178697f
|
||||
PKG_SOURCE_DATE:=2025-06-27
|
||||
PKG_SOURCE_VERSION:=08a842d9921196821a19d52b9061db6c428aab3f
|
||||
|
||||
PKG_LICENSE:=BSD-3-Clause
|
||||
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
|
||||
. /lib/functions.sh
|
||||
|
||||
board=$(board_name)
|
||||
case $board in
|
||||
sonicfi,rap630w-311g|\
|
||||
cybertan,eww631-b1)
|
||||
for num in $(seq 1 3)
|
||||
do
|
||||
uci add poe port
|
||||
uci set poe.@port[-1]='port'
|
||||
eval uci set poe.@port[-1].port_num='${num}'
|
||||
uci set poe.@port[-1].admin_mode='1'
|
||||
done
|
||||
uci commit
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
@@ -13,3 +13,4 @@ packages:
|
||||
- ipq53xx
|
||||
- ftm
|
||||
- qca-ssdk-shell
|
||||
- kmod-cig-poe-judgment
|
||||
|
||||
@@ -12,3 +12,4 @@ include:
|
||||
packages:
|
||||
- ipq53xx
|
||||
- qca-ssdk-shell
|
||||
- kmod-cig-poe-judgment
|
||||
|
||||
@@ -12,3 +12,4 @@ include:
|
||||
packages:
|
||||
- ipq53xx
|
||||
- qca-ssdk-shell
|
||||
- kmod-cig-poe-judgment
|
||||
|
||||
@@ -21,3 +21,4 @@ packages:
|
||||
- kmod-gpio-pca953x
|
||||
- kmod-hwmon-tmp103
|
||||
- kmod-iio-ilps22qs
|
||||
- kmod-cig-poe-judgment
|
||||
|
||||
27
profiles/emplus_wap581.yml
Normal file
27
profiles/emplus_wap581.yml
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
profile: emplus_wap581
|
||||
target: ipq50xx
|
||||
subtarget: generic
|
||||
description: Build image for Emplus WAP581
|
||||
image: bin/targets/ipq50xx/generic/openwrt-ipq50xx-emplus_wap581-squashfs-sysupgrade.tar
|
||||
feeds:
|
||||
- name: ipq807x
|
||||
path: ../../feeds/ipq807x_v5.4
|
||||
include:
|
||||
- ucentral-ap
|
||||
packages:
|
||||
- ipq50xx
|
||||
- iperf3
|
||||
- lscpu
|
||||
- tree
|
||||
diffconfig: |
|
||||
CONFIG_KERNEL_IPQ_MEM_PROFILE=512
|
||||
CONFIG_BUSYBOX_CUSTOM=y
|
||||
CONFIG_BUSYBOX_CONFIG_TFTP=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_TFTP_GET=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_TFTP_PUT=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_TFTP_BLOCKSIZE=y
|
||||
CONFIG_BUSYBOX_CONFIG_FEATURE_TFTP_PROGRESS_BAR=y
|
||||
CONFIG_BUSYBOX_CONFIG_MPSTAT=y
|
||||
CONFIG_BUSYBOX_CONFIG_PSTREE=y
|
||||
|
||||
@@ -10,5 +10,6 @@ feeds:
|
||||
packages:
|
||||
- ipq50xx
|
||||
- cooling
|
||||
- poe
|
||||
include:
|
||||
- ucentral-ap
|
||||
|
||||
Reference in New Issue
Block a user