ipq95xx: various updates

* finalize CIG WF198 support
* add Sercomm AP72tip support
* update BDF files
* improve firmware package

Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
John Crispin
2024-02-14 12:57:49 +01:00
parent 460050a114
commit c95b91c399
26 changed files with 4000 additions and 69 deletions

View File

@@ -1,11 +1,11 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=ath12k-firmware
PKG_MIRROR_HASH:=a325f86b1d613f713d2e015abca4a9ff86c8448d4cd540fa022866da2c5aa042
PKG_SOURCE_PROTO:=git
PKG_BRANCH:=main
PKG_SOURCE_URL:=https://github.com/quic/upstream-wifi-fw.git
PKG_MIRROR_HASH:=ade4287ff2935ad1d54e5dabb8e6de28f648d0974fa76238fcc1616235e6773e
PKG_SOURCE_VERSION:=3417bb86645c5ff4c58258db7cc33e43260b4222
PKG_SOURCE_VERSION:=e90d32aaa149800ea79760639cb5ac9ddcfc8281
PKG_MAINTAINER:=John Crispin <john@phrozen.org>
@@ -18,20 +18,59 @@ define Package/ath12k-firmware-default
DEPENDS:=
endef
define Package/ath12k-firmware-qcn92xx-split-phy
$(Package/ath12k-firmware-default)
TITLE:=ath12k firmware for qcn92xx split phy devices
DEPENDS:=@(TARGET_ipq95xx||TARGET_ipq53xx)
endef
define Package/ath12k-firmware-qcn92xx
$(Package/ath12k-firmware-default)
TITLE:=ath12k firmware for qcn92xx devices
DEPENDS:=@TARGET_ipq95xx
DEPENDS:=@(TARGET_ipq95xx||TARGET_ipq53xx)
endef
define Package/ath12k-firmware-ipq53xx
$(Package/ath12k-firmware-default)
TITLE:=ath12k firmware for ipq53xx devices
DEPENDS:=@TARGET_ipq53xx
endef
define Package/ath12k-firmware-ipq53xx-wk-wk
$(Package/ath12k-firmware-default)
TITLE:=ath12k firmware for ipq53xx + wk + wk devices
DEPENDS:=@TARGET_ipq53xx
endef
define Build/Compile
endef
define Package/ath12k-firmware-qcn92xx-split-phy/install
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0
$(CP) $(PKG_BUILD_DIR)/ath12k-firmware/QCN9274/hw2.0_split_phy/1.2.1/WLAN.WBE.1.2.1-00148-QCAHKSWPL_SILICONZ-1/* \
$(1)/lib/firmware/ath12k/QCN92XX/hw1.0
endef
define Package/ath12k-firmware-qcn92xx/install
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw2.0
$(INSTALL_DATA) $(PKG_BUILD_DIR)/ath12k-firmware/QCN9274/hw2.0/1.1.1/WLAN.WBE.1.1.1-00126-QCAHKSWPL_SILICONZ-1/* \
$(1)/lib/firmware/ath12k/QCN92XX/hw2.0
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0
$(CP) $(PKG_BUILD_DIR)/ath12k-firmware/QCN9274/hw2.0/1.2.1/WLAN.WBE.1.2.1-00201-QCAHKSWPL_SILICONZ-1/* \
$(1)/lib/firmware/ath12k/QCN92XX/hw1.0
endef
define Package/ath12k-firmware-ipq53xx/install
$(INSTALL_DIR) $(1)/lib/firmware/IPQ5332/
$(CP) $(PKG_BUILD_DIR)/ath12k-firmware//IPQ5322/hw1.0/1.2.1/WLAN.WBE.1.2.1-00201-QCAHKSWPL_SILICONZ-1/* \
$(1)/lib/firmware/IPQ5332/
endef
define Package/ath12k-firmware-ipq53xx-wk-wk/install
$(INSTALL_DIR) $(1)/lib/firmware/IPQ5332/
$(CP) $(PKG_BUILD_DIR)/ath12k-firmware/IPQ5322_QCN6432_QCN6432/hw1.0/testing/1.3/WLAN.WBE.1.3-02907-QCAHKSWPL_SILICONZ-1/* \
$(1)/lib/firmware/IPQ5332/
endef
$(eval $(call BuildPackage,ath12k-firmware-qcn92xx))
$(eval $(call BuildPackage,ath12k-firmware-qcn92xx-split-phy))
$(eval $(call BuildPackage,ath12k-firmware-ipq53xx))
$(eval $(call BuildPackage,ath12k-firmware-ipq53xx-wk-wk))

View File

@@ -38,10 +38,27 @@ $(call Package/ath12k-wifi-default)
TITLE:=board.bin for CIG WF198
endef
define Package/ath12k-wifi-sercomm-ap72tip
$(call Package/ath12k-wifi-default)
TITLE:=board.bin for Sercomm WIFI-7
endef
define Package/ath12k-wifi-cig-wf198/install
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0
$(INSTALL_DATA) ./regdb.bin $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/
$(INSTALL_DATA) ./board-cig-wf198.bin.qcn9224 $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board.bin
$(INSTALL_DATA) ./regdb.bin $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/
$(INSTALL_DATA) ./board-cig-wf198.bin.ipq53xx $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board.bin
endef
define Package/ath12k-wifi-sercomm-ap72tip/install
$(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0
$(INSTALL_DATA) ./regdb.bin $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/
$(INSTALL_DATA) ./board-sercomm-ap72tip.bin.qcn9224 $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board.bin
$(INSTALL_DATA) ./regdb.bin $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/
$(INSTALL_DATA) ./board-sercomm-ap72tip.bin.ipq53xx $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board.bin
endef
$(eval $(call BuildPackage,ath12k-wifi-qcom-qcn9274))
$(eval $(call BuildPackage,ath12k-wifi-cig-wf198))
$(eval $(call BuildPackage,ath12k-wifi-sercomm-ap72tip))

Binary file not shown.

Binary file not shown.

View File

@@ -21,8 +21,7 @@ DEFAULT_PACKAGES += \
kmod-usb-phy-ipq5018 kmod-usb-dwc3-qcom-internal \
kmod-qca-nss-ppe kmod-qca-ssdk-nohnat kmod-qca-psdk \
kmod-gpio-button-hotplug iwinfo uboot-envtools swconfig \
kmod-ath11k-ahb \
kmod-ath12k ath12k-firmware-qcn92xx wpad-openssl \
kmod-ath12k wpad-openssl \
-procd-ujail
$(eval $(call BuildTarget))

View File

@@ -0,0 +1,18 @@
#!/bin/sh
. /lib/functions/uci-defaults.sh
board_config_update
board=$(board_name)
case "$board" in
sercomm,ap72tip)
ucidef_set_led_netdev "wan_link" "wan_link" "green:phy" "eth0" "link"
ucidef_set_led_netdev "wan_act" "wan_act" "yellow:phy" "eth0" "rx tx"
;;
esac
board_config_flush
exit 0

View File

@@ -2,7 +2,7 @@
. /lib/functions/uci-defaults.sh
ipq95xx_setup_interfaces()
ipq53xx_setup_interfaces()
{
local board="$1"
@@ -10,12 +10,15 @@ ipq95xx_setup_interfaces()
qcom,ipq9574-ap-al02-c4)
ucidef_set_interfaces_lan_wan "eth1 eth2 eth3 eth4 eth5" "eth0"
;;
sercomm,ap72tip)
ucidef_set_interfaces_lan_wan "eth1" "eth0"
;;
esac
}
board_config_update
board=$(board_name)
ipq95xx_setup_interfaces $board
ipq53xx_setup_interfaces $board
board_config_flush
exit 0

View File

@@ -30,7 +30,8 @@ board=$(board_name)
case "$FIRMWARE" in
ath12k/IPQ5332/hw1.0/caldata.bin)
case "$board" in
cig,wf198)
cig,wf198|\
sercomm,ap72tip)
caldata_extract "0:ART" 0x1000 0x20000
;;
esac
@@ -40,6 +41,10 @@ ath12k/QCN92XX/hw1.0/cal-pci-0001:01:00.0.bin)
cig,wf198)
caldata_extract "0:ART" 0x58800 0x2d000
;;
sercomm,ap72tip)
caldata_extract "0:ART" 0x58800 0x2d000
#caldata_extract "0:ART" 0x26800 0x2d000
;;
esac
;;
*)

View File

@@ -456,6 +456,8 @@ CONFIG_GPIO_DEVRES=y
# CONFIG_GPIO_GW_PLD is not set
# CONFIG_GPIO_LATCH is not set
# CONFIG_GPIO_NXP_74HC153 is not set
CONFIG_GPIO_PCA953X=y
# CONFIG_GPIO_PCA953X_IRQ is not set
# CONFIG_GPIO_SAMA5D2_PIOBU is not set
CONFIG_GPIO_SYSFS=y
# CONFIG_GPIO_USB_DETECT is not set

View File

@@ -36,36 +36,6 @@
soc {
pinctrl@1000000 {
spi_0_pins: spi0-pinmux {
spi_clock {
pins = "gpio14";
function = "blsp0_spi";
drive-strength = <2>;
bias-pull-down;
};
spi_mosi {
pins = "gpio15";
function = "blsp0_spi";
drive-strength = <2>;
bias-pull-down;
};
spi_miso {
pins = "gpio16";
function = "blsp0_spi";
drive-strength = <2>;
bias-pull-down;
};
spi_cs {
pins = "gpio17";
function = "blsp0_spi";
drive-strength = <2>;
bias-pull-up;
};
};
serial_0_pins: serial0-pinmux {
pins = "gpio18", "gpio19";
function = "blsp0_uart0";
@@ -103,11 +73,11 @@
};
pwm_pins: pwm_pinmux {
/*mux_1 {
mux_1 {
pins = "gpio26";
function = "pwm2";
drive-strength = <8>;
};*/
};
mux_2 {
pins = "gpio30";
function = "pwm1";
@@ -199,7 +169,6 @@
pinctrl-0 = <&pwm_pins>;
pinctrl-names = "default";
used-pwm-indices = <1>, <1>, <1>, <1>;
dft-pwm-status = <0>, <1>, <1>, <0>;
#pwm-cells = <2>;
status = "ok";
};
@@ -329,21 +298,6 @@
status = "ok";
};
spi@78b5000 {
pinctrl-0 = <&spi_0_pins>;
pinctrl-names = "default";
cs-select = <0>;
status = "ok";
m25p80@0 {
compatible = "n25q128a11";
#address-cells = <1>;
#size-cells = <1>;
reg = <0>;
spi-max-frequency = <50000000>;
};
};
spi_2: spi@78b7000 {
pinctrl-0 = <&spi_2_pins>;
pinctrl-names = "default";

View File

@@ -0,0 +1,396 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* IPQ5332 AP-MI01.2 board device tree source
*
* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#include "ipq5332.dtsi"
/ {
aliases {
serial0 = &blsp1_uart0; /*console*/
serial1 = &blsp1_uart1; /*ble*/
ethernet0 = "/soc/dp1";
ethernet1 = "/soc/dp2";
};
chosen {
stdout-path = "serial0";
};
soc {
pinctrl@1000000 {
serial_0_pins: serial0-pinmux { /*console*/
pins = "gpio18", "gpio19";
function = "blsp0_uart0";
drive-strength = <8>;
bias-pull-up;
};
serial_1_pins: serial1-pinmux { /*ble*/
// pins = "gpio33", "gpio34", "gpio35", "gpio36";
pins = "gpio33", "gpio35";
function = "blsp1_uart2";
drive-strength = <8>;
bias-pull-up;
};
//serial_2_pins: serial2-pinmux { /*gps*/
/* pins = "gpio33", "gpio34", "gpio35", "gpio36";
function = "blsp1_uart1";
drive-strength = <8>;
bias-pull-up;
};*/
i2c_2_pins: i2c-2-pinmux {
pins = "gpio43", "gpio45";
function = "blsp2_i2c0";
drive-strength = <8>;
bias-pull-up;
};
spi_0_pins: spi0-pinmux {
spi_clock {
pins = "gpio14";
function = "blsp0_spi";
drive-strength = <8>;
bias-pull-down;
};
spi_mosi {
pins = "gpio15";
function = "blsp0_spi";
drive-strength = <8>;
bias-pull-down;
};
spi_miso {
pins = "gpio16";
function = "blsp0_spi";
drive-strength = <8>;
bias-pull-down;
};
spi_cs {
pins = "gpio17";
function = "blsp0_spi";
drive-strength = <8>;
bias-pull-up;
};
};
spi_1_pins: spi_1_pins { /* tpm */
mux {
pins = "gpio29", "gpio30", "gpio31", "gpio32";
function = "blsp1_spi0";
drive-strength = <8>;
// bias-disable;
bias-pull-up;
};
};
mdio0_pins: mdio_pinmux {
mux_0 {
pins = "gpio25";
function = "mdc0";
drive-strength = <8>;
bias-disable;
};
mux_1 {
pins = "gpio26";
function = "mdio0";
drive-strength = <8>;
bias-pull-up;
};
};
mdio1_pins: mdio_pinmux {
mux_0 {
pins = "gpio27";
function = "mdc1";
drive-strength = <8>;
bias-disable;
};
mux_1 {
pins = "gpio28";
function = "mdio1";
drive-strength = <8>;
bias-pull-up;
};
};
/*
sfp_pins: sfp_pinmux {
sfp_rx {
pins = "gpio45";
function = "rx1";
bias-disable;
};
sfp_tx {
pins = "gpio24";
function = "gpio";
drive-strength = <8>;
bias-pull-down;
output-low;
};
};*/
};
dp1 {
device_type = "network";
compatible = "qcom,nss-dp";
qcom,id = <1>;
reg = <0x3a500000 0x4000>;
qcom,mactype = <1>;
local-mac-address = [000000000000];
mdio-bus = <&mdio>;
qcom,phy-mdio-addr = <24>;
qcom,link-poll = <1>;
phy-mode = "sgmii";
};
dp2 {
device_type = "network";
compatible = "qcom,nss-dp";
qcom,id = <2>;
reg = <0x3a504000 0x4000>;
qcom,mactype = <1>;
local-mac-address = [000000000000];
qcom,phy-mdio-addr = <0>;
qcom,link-poll = <1>;
phy-mode = "sgmii";
};
/* dp2 {
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 = <30>;
qcom,link-poll = <1>;
phy-mode = "sgmii";
};
*/
mdio:mdio@90000 {
status = "ok";
pinctrl-0 = <&mdio1_pins>;
pinctrl-names = "default";
/*gpio0 for napa, gpio3 for AQR114C*/
phy-reset-gpio = <&tlmm 0 0 &tlmm 3 0>;
phy0: ethernet-phy@0 {
reg = <24>;
};
phy1: ethernet-phy@1 { //aqr114c
reg = <0>;
compatible ="ethernet-phy-ieee802.3-c45";
};
};
ess-instance {
ess-switch@3a000000 {
pinctrl-names = "default";
switch_cpu_bmp = <0x1>; /* cpu port bitmap */
switch_lan_bmp = <0x0>; /* lan port bitmap */
switch_wan_bmp = <0x6>; /* wan port bitmap */
switch_mac_mode = <0xf>; /* mac mode for uniphy instance0*/
switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1*/
// switch_mac_mode1 = <0xe>; /* mac mode for uniphy instance1*/
switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/
qcom,port_phyinfo {
port@0 {
port_id = <1>;
phy_address = <24>;
};
port@1 { //aqr114c
port_id = <2>;
phy_address = <0>;
ethernet-phy-ieee802.3-c45;
};
/* port@1 {
port_id = <2>;
phy_address = <30>;
media-type = "sfp";
};*/
};
};
};
eud@78000 {
status = "disabled";
};
/* 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,txcmpl-ring-start = <4>; /* Tx complete ring start ID */
qcom,txcmpl-rings = <12>; /* Total number of Tx complete rings to be provisioned */
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>, /* Port1 per-core Tx ring map */
<4 5 6 7>; /* used only for packets from vp*/
qcom,txdesc-fc-grp-map = <1 2>; /* 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 */
};
serial@78af000 {
pinctrl-0 = <&serial_0_pins>;
pinctrl-names = "default";
status = "ok";
};
serial@78b0000 {
pinctrl-0 = <&serial_1_pins>;
pinctrl-names = "default";
status = "ok";
};
i2c_2: i2c@78b7000 {
status = "ok";
pinctrl-0 = <&i2c_2_pins>;
pinctrl-names = "default";
};
spi@78b5000 {
pinctrl-0 = <&spi_0_pins>;
pinctrl-names = "default";
cs-select = <0>;
status = "ok";
m25p80@0 {
compatible = "n25q128a11";
#address-cells = <1>;
#size-cells = <1>;
reg = <0>;
spi-max-frequency = <50000000>;
};
};
/*tpm*/
spi@78b6000 {
pinctrl-0 = <&spi_1_pins>;
pinctrl-names = "default";
cs-select = <0>;
status = "ok";
tpm: spi-tpm@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "st,st33htpm-spi";
reg = <0>;
spi-max-frequency = <20000000>;
status = "okay";
};
};
dma@7984000 {
status = "ok";
};
nand@79b0000 {
pinctrl-0 = <&qspi_nand_pins>;
pinctrl-names = "default";
status = "ok";
};
usb3@8A00000 {
status = "ok";
qcom,select-utmi-as-pipe-clk;
dwc3@8A00000 {
/delete-property/ #phy-cells;
/delete-property/ phys;
/delete-property/ phy-names;
};
};
hs_m31phy@7b000 {
status = "ok";
};
phy_x2@4b1000 {
status = "ok";
};
wsi: wsi {
id = <0>;
num_chip = <3>;
};
pcie@18000000 {
status = "ok";
pcie1_rp {
reg = <0 0 0 0 0>;
qcom,mhi@1 {
reg = <0 0 0 0 0>;
qti,disable-rddm-prealloc;
qti,rddm-seg-len = <0x1000>;
#if defined(__CNSS2__)
qrtr_node_id = <0x31>;
memory-region = <0>, <&mhi_region1>;
#else
memory-region = <&qcn9224_pcie1>;
qcom,board_id = <0x16>;
qcom,wsi = <&wsi>;
#endif
};
};
};
};
};

View File

@@ -0,0 +1,164 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* IPQ5332 AP-MI01.2 board device tree source
*
* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
#ifdef __IPQ_MEM_PROFILE_512_MB__
#include "ipq5332-512MB-memory.dtsi"
#else
#include "ipq5332-default-memory.dtsi"
#endif
#include "ipq5332-sercomm-mi01.2.dtsi"
/ {
#address-cells = <0x2>;
#size-cells = <0x2>;
model = "Sercomm WiFi-7";
compatible = "sercomm,ap72tip", "qcom,ipq5332";
interrupt-parent = <&intc>;
aliases {
led-boot = &led_power;
led-failsafe = &led_power;
led-running = &led_power;
led-upgrade = &led_power;
};
soc {
phy@4b0000 {
status = "disabled";
};
pcie@20000000 {
status = "disabled";
pcie0_rp {
reg = <0 0 0 0 0>;
qcom,mhi@2 {
reg = <0 0 0 0 0>;
qti,disable-rddm-prealloc;
qti,rddm-seg-len = <0x1000>;
#if defined(__CNSS2__)
qrtr_node_id = <0x30>;
memory-region = <0>, <&mhi_region0>;
#else
memory-region = <&qcn9224_pcie0>;
qcom,board_id = <0x15>;
qcom,wsi = <&wsi>;
#endif
};
};
};
pinctrl@1000000 {
button_pins: button_pins {
rst_button {
pins = "gpio1";
function = "gpio";
drive-strength = <8>;
bias-pull-up;
};
};
};
gpio_keys {
compatible = "gpio-keys";
pinctrl-0 = <&button_pins>;
pinctrl-names = "default";
button@1 {
label = "rst";
linux,code = <KEY_RESTART>;
gpios = <&tlmm 1 GPIO_ACTIVE_LOW>;
linux,input-type = <1>;
debounce-interval = <60>;
};
};
leds {
compatible = "gpio-leds";
led@25 {
label = "blue:status";
gpios = <&tca6416 9 GPIO_ACTIVE_HIGH>;
default-state = "off";
};
led@24 {
label = "red:status";
gpios = <&tca6416 10 GPIO_ACTIVE_HIGH>;
};
led_power: led@16 {
label = "green:status";
gpios = <&tca6416 11 GPIO_ACTIVE_HIGH>;
};
led@61 {
label = "green:phy";
gpios = <&tca6416 13 GPIO_ACTIVE_HIGH>;
};
led@62 {
label = "yellow:phy";
gpios = <&tca6416 14 GPIO_ACTIVE_HIGH>;
};
};
};
};
&wifi0 {
qcom,rproc = <&q6_wcss_pd1>;
qcom,rproc_rpd = <&q6v5_wcss>;
qcom,multipd_arch;
qcom,userpd-subsys-name = "q6v5_wcss_userpd1";
#if defined(__CNSS2__)
mem-region = <&q6_region>;
#else
memory-region = <&q6_region>;
qcom,wsi = <&wsi>;
#endif
qcom,board_id = <0x16>; //orig:0x12->0x16
status = "ok";
};
&qcn9224_pcie0 {
status = "disabled";
};
&qcn9224_pcie1 {
status = "ok";
};
&mhi_region0 {
status = "disabled";
};
&mhi_region1 {
status = "ok";
};
&wifi1 {
/* QCN9224 radio 5G */
hremote_node = <&qcn9224_pcie0>;
board_id = <0x15>;
status = "disabled";
};
&wifi2 {
/* QCN9224 5G+6G */
hremote_node = <&qcn9224_pcie1>;
qcom,board_id = <0x100f>; //0x16->0x1019
status = "ok";
};
&i2c_0 {
tca6416: gpio@20 {
compatible = "ti,tca6416";
reg = <0x20>;
gpio-controller;
#gpio-cells = <2>;
};
};

View File

@@ -0,0 +1,445 @@
// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
/*
* IPQ5332 AP-MI01.2 board device tree source
*
* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#include "ipq5332-sercomm.dtsi"
/ {
aliases {
serial0 = &blsp1_uart0; /*console*/
serial1 = &blsp1_uart1; /*ble*/
ethernet0 = "/soc/dp1";
ethernet1 = "/soc/dp2";
};
chosen {
stdout-path = "serial0";
};
soc {
pinctrl@1000000 {
serial_0_pins: serial0-pinmux { /*console*/
pins = "gpio18", "gpio19";
function = "blsp0_uart0";
drive-strength = <8>;
bias-pull-up;
};
serial_1_pins: serial1-pinmux { /*ble*/
// pins = "gpio33", "gpio34", "gpio35", "gpio36";
pins = "gpio33", "gpio35";
function = "blsp1_uart2";
drive-strength = <8>;
bias-pull-up;
};
//serial_2_pins: serial2-pinmux { /*gps*/
/* pins = "gpio33", "gpio34", "gpio35", "gpio36";
function = "blsp1_uart1";
drive-strength = <8>;
bias-pull-up;
};*/
i2c_0_pins: i2c-0-pinmux {
pins = "gpio43", "gpio45";
function = "blsp2_i2c0";
drive-strength = <8>;
bias-pull-up;
};
spi_0_pins: spi0-pinmux {
spi_clock {
pins = "gpio14";
function = "blsp0_spi";
drive-strength = <8>;
bias-pull-down;
};
spi_mosi {
pins = "gpio15";
function = "blsp0_spi";
drive-strength = <8>;
bias-pull-down;
};
spi_miso {
pins = "gpio16";
function = "blsp0_spi";
drive-strength = <8>;
bias-pull-down;
};
spi_cs {
pins = "gpio17";
function = "blsp0_spi";
drive-strength = <8>;
bias-pull-up;
};
};
spi_1_pins: spi_1_pins { /* tpm */
mux {
pins = "gpio29", "gpio30", "gpio31", "gpio32";
function = "blsp1_spi0";
drive-strength = <8>;
// bias-disable;
bias-pull-up;
};
};
mdio0_pins: mdio_pinmux {
mux_0 {
pins = "gpio25";
function = "mdc0";
drive-strength = <8>;
bias-disable;
};
mux_1 {
pins = "gpio26";
function = "mdio0";
drive-strength = <8>;
bias-pull-up;
};
};
mdio1_pins: mdio_pinmux {
mux_0 {
pins = "gpio27";
function = "mdc1";
drive-strength = <8>;
bias-disable;
};
mux_1 {
pins = "gpio28";
function = "mdio1";
drive-strength = <8>;
bias-pull-up;
};
};
/*
sfp_pins: sfp_pinmux {
sfp_rx {
pins = "gpio45";
function = "rx1";
bias-disable;
};
sfp_tx {
pins = "gpio24";
function = "gpio";
drive-strength = <8>;
bias-pull-down;
output-low;
};
};*/
};
#if 1 //AQR114C
dp1 {
device_type = "network";
compatible = "qcom,nss-dp";
qcom,id = <1>;
reg = <0x3a500000 0x4000>;
qcom,mactype = <1>;
local-mac-address = [000000000000];
mdio-bus = <&mdio>;
qcom,phy-mdio-addr = <24>;
qcom,link-poll = <1>;
phy-mode = "sgmii";
};
dp2 {
device_type = "network";
compatible = "qcom,nss-dp";
qcom,id = <2>;
reg = <0x3a504000 0x4000>;
qcom,mactype = <1>;
local-mac-address = [000000000000];
qcom,phy-mdio-addr = <0>;
qcom,link-poll = <1>;
phy-mode = "sgmii";
};
mdio:mdio@90000 {
status = "ok";
pinctrl-0 = <&mdio1_pins>;
pinctrl-names = "default";
/*gpio0 for napa, gpio3 for AQR114C*/
//phy-reset-gpio = <&tlmm 0 0 &tlmm 3 0>;
phy-reset-gpio = <&tlmm 0 0>;
phy0: ethernet-phy@0 {
reg = <24>;
};
phy1: ethernet-phy@1 { //aqr114c
reg = <0>;
compatible ="ethernet-phy-ieee802.3-c45";
};
};
ess-instance {
ess-switch@3a000000 {
switch_cpu_bmp = <0x1>; /* cpu port bitmap */
switch_lan_bmp = <0x0>; /* lan port bitmap */
switch_wan_bmp = <0x6>; /* wan port bitmap */
switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/
switch_mac_mode1 = <0xf>; /* mac mode for uniphy instance1 114c*/
switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/
qcom,port_phyinfo {
port@0 {
port_id = <1>;
phy_address = <24>;
};
port@1 { //aqr114c
port_id = <2>;
phy_address = <0>;
ethernet-phy-ieee802.3-c45;
};
};
};
};
#else //SFP
dp1 {
device_type = "network";
compatible = "qcom,nss-dp";
qcom,id = <1>;
reg = <0x3a500000 0x4000>;
qcom,mactype = <1>;
local-mac-address = [000000000000];
mdio-bus = <&mdio>;
qcom,phy-mdio-addr = <24>;
qcom,link-poll = <1>;
phy-mode = "sgmii";
};
dp2 {
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 = <30>;
qcom,link-poll = <1>;
phy-mode = "sgmii";
};
mdio:mdio@90000 {
status = "ok";
pinctrl-0 = <&mdio1_pins>;
pinctrl-names = "default";
/*gpio0 for napa, gpio3 for AQR114C*/
//phy-reset-gpio = <&tlmm 0 0 &tlmm 3 0>;
phy-reset-gpio = <&tlmm 0 0>;
phy0: ethernet-phy@0 {
reg = <24>;
};
};
ess-instance {
ess-switch@3a000000 {
switch_cpu_bmp = <0x1>; /* cpu port bitmap */
switch_lan_bmp = <0x0>; /* lan port bitmap */
switch_wan_bmp = <0x6>; /* wan port bitmap */
switch_mac_mode = <0xc>; /* mac mode for uniphy instance0*/
switch_mac_mode1 = <0xe>; /* mac mode for uniphy instance1 sfp PORT_WRAPPER_10GBASE_R*/
// switch_mac_mode1 = <0xc>; /* mac mode for uniphy instance1 sfp PORT_WRAPPER_SGMII_PLUS*/
switch_mac_mode2 = <0xff>; /* mac mode for uniphy instance2*/
qcom,port_phyinfo {
port@0 {
port_id = <1>;
phy_address = <24>;
};
port@1 {
port_id = <2>;
phy_address = <30>;
media-type = "sfp";
};
};
};
};
#endif
nss-macsec0 {
compatible = "qcom,nss-macsec";
phy_addr = <24>;
mdiobus = <&mdio>;
};
eud@78000 {
status = "disabled";
};
/* 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,txcmpl-ring-start = <4>; /* Tx complete ring start ID */
qcom,txcmpl-rings = <12>; /* Total number of Tx complete rings to be provisioned */
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>, /* Port1 per-core Tx ring map */
<4 5 6 7>; /* used only for packets from vp*/
qcom,txdesc-fc-grp-map = <1 2>; /* 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 */
};
serial@78af000 {
pinctrl-0 = <&serial_0_pins>;
pinctrl-names = "default";
status = "ok";
};
serial@78b0000 {
pinctrl-0 = <&serial_1_pins>;
pinctrl-names = "default";
status = "ok";
};
i2c_0: i2c@78b7000 {
status = "ok";
pinctrl-0 = <&i2c_0_pins>;
pinctrl-names = "default";
};
spi@78b5000 {
pinctrl-0 = <&spi_0_pins>;
pinctrl-names = "default";
cs-select = <0>;
status = "ok";
m25p80@0 {
compatible = "n25q128a11";
#address-cells = <1>;
#size-cells = <1>;
reg = <0>;
spi-max-frequency = <50000000>;
};
};
/*tpm*/
spi@78b6000 {
pinctrl-0 = <&spi_1_pins>;
pinctrl-names = "default";
cs-select = <0>;
status = "ok";
tpm: spi-tpm@0 {
#address-cells = <1>;
#size-cells = <1>;
compatible = "st,st33htpm-spi";
reg = <0>;
spi-max-frequency = <20000000>;
status = "okay";
};
};
dma@7984000 {
status = "ok";
};
nand@79b0000 {
pinctrl-0 = <&qspi_nand_pins>;
pinctrl-names = "default";
status = "ok";
};
usb3@8A00000 {
status = "ok";
qcom,select-utmi-as-pipe-clk;
dwc3@8A00000 {
/delete-property/ #phy-cells;
/delete-property/ phys;
/delete-property/ phy-names;
};
};
hs_m31phy@7b000 {
status = "ok";
};
phy_x2@4b1000 {
status = "ok";
};
wsi: wsi {
id = <0>;
num_chip = <3>;
};
pcie@18000000 {
status = "ok";
pcie1_rp {
reg = <0 0 0 0 0>;
qcom,mhi@1 {
reg = <0 0 0 0 0>;
qti,disable-rddm-prealloc;
qti,rddm-seg-len = <0x1000>;
#if defined(__CNSS2__)
qrtr_node_id = <0x31>;
memory-region = <0>, <&mhi_region1>;
#else
memory-region = <&qcn9224_pcie1>;
qcom,board_id = <0x100f>;
qcom,wsi = <&wsi>;
#endif
};
};
};
};
};

File diff suppressed because it is too large Load Diff

View File

@@ -8,6 +8,18 @@ define Device/cig_wf198
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-cig-wf198
DEVICE_PACKAGES := ath12k-wifi-cig-wf198 ath12k-firmware-qcn92xx-split-phy ath12k-firmware-ipq53xx
endef
TARGET_DEVICES += cig_wf198
define Device/sercomm_ap72tip
DEVICE_TITLE := Sercomm AP72 TIP
DEVICE_DTS := ipq5332-sercomm-ap72tip
DEVICE_DTS_CONFIG := config@mi01.2-qcn9160-c1
IMAGES := sysupgrade.tar nand-factory.bin nand-factory.ubi
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-sercomm-ap72tip ath12k-firmware-qcn92xx-split-phy ath12k-firmware-ipq53xx
endef
TARGET_DEVICES += sercomm_ap72tip

View File

@@ -0,0 +1,40 @@
Index: linux-5.4.213-qsdk-b2d40c94fad765a48c03f492d669aeecbbb9b617/drivers/pwm/pwm-ipq.c
===================================================================
--- linux-5.4.213-qsdk-b2d40c94fad765a48c03f492d669aeecbbb9b617.orig/drivers/pwm/pwm-ipq.c
+++ linux-5.4.213-qsdk-b2d40c94fad765a48c03f492d669aeecbbb9b617/drivers/pwm/pwm-ipq.c
@@ -110,6 +110,7 @@ struct ipq_pwm_chip {
static ssize_t count;
static uint32_t used_pwm[MAX_PWM_DEVICES];
+//static uint32_t dft_pwm[MAX_PWM_DEVICES];
static const uint32_t pwm_ctrl_register[] = {
ADSS_GLB_PWM0_CTRL_REG,
@@ -330,6 +331,7 @@ static int ipq_pwm_probe(struct platform
struct device *dev;
unsigned int base_index;
int ret;
+ //unsigned int i;
const void *dev_data;
unsigned long src_freq = SRC_FREQ;
struct resource *res = NULL;
@@ -387,6 +389,19 @@ static int ipq_pwm_probe(struct platform
dev_err(dev, "pwmchip_add() failed: %d\n", ret);
return ret;
}
+
+ /*count = of_property_count_u32_elems(dev->of_node, "dft-pwm-status");
+ if (!of_property_read_u32_array(dev->of_node, "dft-pwm-status",
+ dft_pwm, count)) {
+ for(i = 0; i < count; i++) {
+ if(dft_pwm[i] > 0) {
+ ipq_pwm_request(&(pwm->chip), &(pwm->chip.pwms[i]));
+ ipq_pwm_config(&(pwm->chip), &(pwm->chip.pwms[i]), 500000000, 1000000000);
+ }
+ }
+ }*/
+ ipq_pwm_request(&(pwm->chip), &(pwm->chip.pwms[1]));
+ ipq_pwm_config(&(pwm->chip), &(pwm->chip.pwms[1]), 500000000, 1000000000);
return 0;
}

View File

@@ -0,0 +1,42 @@
Index: linux-5.4.213-qsdk-b2d40c94fad765a48c03f492d669aeecbbb9b617/arch/arm64/boot/dts/qcom/ipq5332.dtsi
===================================================================
--- linux-5.4.213-qsdk-b2d40c94fad765a48c03f492d669aeecbbb9b617.orig/arch/arm64/boot/dts/qcom/ipq5332.dtsi
+++ linux-5.4.213-qsdk-b2d40c94fad765a48c03f492d669aeecbbb9b617/arch/arm64/boot/dts/qcom/ipq5332.dtsi
@@ -918,15 +918,6 @@
};
};
- button_pins: button_pins {
- wps_button {
- pins = "gpio35";
- function = "gpio";
- drive-strength = <8>;
- bias-pull-up;
- };
- };
-
bt_pins: bt_pins {
PTA_0 {
pins = "gpio49";
@@ -2577,21 +2568,6 @@
device-license-termination;
};
- gpio_keys {
- compatible = "gpio-keys";
- pinctrl-0 = <&button_pins>;
- pinctrl-names = "default";
- status = "ok";
-
- button@1 {
- label = "wps";
- linux,code = <KEY_WPS_BUTTON>;
- gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
- linux,input-type = <1>;
- debounce-interval = <60>;
- };
- };
-
pmu {
compatible = "arm,cortex-a53-pmu";
interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;

View File

@@ -0,0 +1,66 @@
Index: linux-5.4.213-qsdk-b2d40c94fad765a48c03f492d669aeecbbb9b617/drivers/net/phy/aquantia_main.c
===================================================================
--- linux-5.4.213-qsdk-b2d40c94fad765a48c03f492d669aeecbbb9b617.orig/drivers/net/phy/aquantia_main.c
+++ linux-5.4.213-qsdk-b2d40c94fad765a48c03f492d669aeecbbb9b617/drivers/net/phy/aquantia_main.c
@@ -31,6 +31,9 @@
#define PHY_ID_AQCS109 0x03a1b5c2
#define PHY_ID_AQR405 0x03a1b4b0
+#define PHY_ID_AQR114C 0x31c31c22
+#define PHY_ID_AQR114C_B1 0x31c31c23
+
#define MDIO_PHYXS_VEND_IF_STATUS 0xe812
#define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK GENMASK(7, 3)
#define MDIO_PHYXS_VEND_IF_STATUS_TYPE_KR 0
@@ -1101,6 +1104,42 @@ static struct phy_driver aqr_driver[] =
.ack_interrupt = aqr_ack_interrupt,
.read_status = aqr_read_status,
},
+{
+ PHY_ID_MATCH_MODEL(PHY_ID_AQR114C),
+ .name = "Aquantia AQR114C",
+ .probe = aqr107_probe,
+ .config_init = aqr107_config_init,
+ .config_aneg = aqr_config_aneg,
+ .config_intr = aqr_config_intr,
+ .ack_interrupt = aqr_ack_interrupt,
+ .read_status = aqr107_read_status,
+ .get_tunable = aqr107_get_tunable,
+ .set_tunable = aqr107_set_tunable,
+ .suspend = aqr107_suspend,
+ .resume = aqr107_resume,
+ .get_sset_count = aqr107_get_sset_count,
+ .get_strings = aqr107_get_strings,
+ .get_stats = aqr107_get_stats,
+ .link_change_notify = aqr107_link_change_notify,
+},
+{
+ PHY_ID_MATCH_MODEL(PHY_ID_AQR114C_B1),
+ .name = "Aquantia AQR114C_B1",
+ .probe = aqr107_probe,
+ .config_init = aqr107_config_init,
+ .config_aneg = aqr_config_aneg,
+ .config_intr = aqr_config_intr,
+ .ack_interrupt = aqr_ack_interrupt,
+ .read_status = aqr107_read_status,
+ .get_tunable = aqr107_get_tunable,
+ .set_tunable = aqr107_set_tunable,
+ .suspend = aqr107_suspend,
+ .resume = aqr107_resume,
+ .get_sset_count = aqr107_get_sset_count,
+ .get_strings = aqr107_get_strings,
+ .get_stats = aqr107_get_stats,
+ .link_change_notify = aqr107_link_change_notify,
+},
};
module_phy_driver(aqr_driver);
@@ -1120,6 +1159,8 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR113C) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQCS109) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR405) },
+ { PHY_ID_MATCH_MODEL(PHY_ID_AQR114C) },
+ { PHY_ID_MATCH_MODEL(PHY_ID_AQR114C_B1) },
{ }
};

View File

@@ -0,0 +1,28 @@
Index: qca-ssdk-09cba788ef5680e3e5b9deaa376da8d6bc13a7ec/include/hsl/phy/hsl_phy.h
===================================================================
--- qca-ssdk-09cba788ef5680e3e5b9deaa376da8d6bc13a7ec.orig/include/hsl/phy/hsl_phy.h
+++ qca-ssdk-09cba788ef5680e3e5b9deaa376da8d6bc13a7ec/include/hsl/phy/hsl_phy.h
@@ -609,6 +609,9 @@ typedef struct {
#define AQUANTIA_PHY_113C_B0 0x31c31C12
#define AQUANTIA_PHY_113C_B1 0x31c31C13
#define AQUANTIA_PHY_112C 0x03a1b792
+/*sercomm*/
+#define AQUANTIA_PHY_114C 0x31c31c22
+#define AQUANTIA_PHY_114C_B1 0x31c31c23
#define RTL_PHY 0X001CCAF3
#define PHY_805XV2 0x004DD082
Index: qca-ssdk-09cba788ef5680e3e5b9deaa376da8d6bc13a7ec/src/hsl/phy/hsl_phy.c
===================================================================
--- qca-ssdk-09cba788ef5680e3e5b9deaa376da8d6bc13a7ec.orig/src/hsl/phy/hsl_phy.c
+++ qca-ssdk-09cba788ef5680e3e5b9deaa376da8d6bc13a7ec/src/hsl/phy/hsl_phy.c
@@ -285,6 +286,9 @@ phy_type_t hsl_phytype_get_by_phyid(a_ui
case AQUANTIA_PHY_113C_B0:
case AQUANTIA_PHY_113C_B1:
case AQUANTIA_PHY_112C:
+ /*sercomm*/
+ case AQUANTIA_PHY_114C:
+ case AQUANTIA_PHY_114C_B1:
phytype = AQUANTIA_PHY_CHIP;
break;
case QCA8030_PHY:

View File

@@ -702,7 +702,7 @@ index 18cafe60a2..a860c557de 100644
echo "generic patches directory is present. please move your patches to the pending directory" ; \
exit 1; \
fi
+ifneq ($(CONFIG_TARGET_ipq807x)$(CONFIG_TARGET_ipq60xx)$(CONFIG_TARGET_ipq50xx)$(CONFIG_TARGET_ipq95xx),y)
+ifneq ($(CONFIG_TARGET_ipq807x)$(CONFIG_TARGET_ipq60xx)$(CONFIG_TARGET_ipq50xx)$(CONFIG_TARGET_ipq95xx)$(CONFIG_TARGET_ipq53xx),y)
$(call PatchDir,$(LINUX_DIR),$(GENERIC_BACKPORT_DIR),generic-backport/)
$(call PatchDir,$(LINUX_DIR),$(GENERIC_PATCH_DIR),generic/)
$(call PatchDir,$(LINUX_DIR),$(GENERIC_HACK_DIR),generic-hack/)
@@ -714,7 +714,7 @@ index 18cafe60a2..a860c557de 100644
echo "All kernel patches must start with either generic/ or platform/"; \
false; \
}
+ifneq ($(CONFIG_TARGET_ipq807x)$(CONFIG_TARGET_ipq60xx)$(CONFIG_TARGET_ipq50xx)$(CONFIG_TARGET_ipq95xx),y)
+ifneq ($(CONFIG_TARGET_ipq807x)$(CONFIG_TARGET_ipq60xx)$(CONFIG_TARGET_ipq50xx)$(CONFIG_TARGET_ipq95xx)$(CONFIG_TARGET_ipq53xx),y)
$(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(GENERIC_BACKPORT_DIR),generic-backport/)
$(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(GENERIC_PATCH_DIR),generic/)
$(call Quilt/RefreshDir,$(PKG_BUILD_DIR),$(GENERIC_HACK_DIR),generic-hack/)
@@ -749,7 +749,7 @@ index b5e3e7ff6f..36e1377617 100644
endif
GENERIC_PLATFORM_DIR := $(TOPDIR)/target/linux/generic
+ifeq ($(CONFIG_TARGET_ipq807x)$(CONFIG_TARGET_ipq60xx)$(CONFIG_TARGET_ipq50xx)$(CONFIG_TARGET_ipq95xx),y)
+ifeq ($(CONFIG_TARGET_ipq807x)$(CONFIG_TARGET_ipq60xx)$(CONFIG_TARGET_ipq50xx)$(CONFIG_TARGET_ipq95xx)$(CONFIG_TARGET_ipq53xx),y)
+GENERIC_BACKPORT_DIR :=
+GENERIC_PATCH_DIR :=
+GENERIC_HACK_DIR :=
@@ -765,7 +765,7 @@ index b5e3e7ff6f..36e1377617 100644
__config_list = $(firstword $(wildcard $(call __config_name_list,$(1))))
find_kernel_config=$(if $(__config_list),$(__config_list),$(lastword $(__config_name_list)))
+ifeq ($(CONFIG_TARGET_ipq807x)$(CONFIG_TARGET_ipq60xx)$(CONFIG_TARGET_ipq50xx)$(CONFIG_TARGET_ipq95xx),y)
+ifeq ($(CONFIG_TARGET_ipq807x)$(CONFIG_TARGET_ipq60xx)$(CONFIG_TARGET_ipq50xx)$(CONFIG_TARGET_ipq95xx)$(CONFIG_TARGET_ipq53xx),y)
+GENERIC_LINUX_CONFIG:=$(GENERIC_PLATFORM_DIR)/config-5.4-qsdk
+else
GENERIC_LINUX_CONFIG = $(call find_kernel_config,$(GENERIC_PLATFORM_DIR))

View File

@@ -16,7 +16,7 @@ index dc89de2035..dd1d0760f8 100644
endef
endif
+ifeq ($(CONFIG_LINUX_4_4)$(CONFIG_TARGET_ipq95xx),y)
+ifeq ($(CONFIG_LINUX_4_4)$(CONFIG_TARGET_ipq95xx)$(CONFIG_TARGET_ipq53xx),y)
+ define Package/base-files/ipq807x-support
+ rm -f $(1)/lib/upgrade/nand.sh
+ endef

View File

@@ -20,7 +20,7 @@ index e2fe4c8bad..4bdd955832 100644
-DUCI_SUPPORT=OFF \
-DULOOP_SUPPORT=OFF
+ifeq ($(CONFIG_TARGET_ipq95xx),y)
+ifeq ($(CONFIG_TARGET_ipq95xx)$(CONFIG_TARGET_ipq53xx),y)
+TARGET_CFLAGS += -DQCA_WIFI_7
+endif
+

View File

@@ -21,7 +21,7 @@ index daf1f1740a..ec9733780d 100644
+LINUX_KERNEL_HASH-5.4.158 = 6e018fecdc8fc24553756e582d83b82d65b10a6b03ef36262a24911f839b8d59
+endif
+
+ifeq ($(CONFIG_TARGET_ipq95xx),y)
+ifeq ($(CONFIG_TARGET_ipq95xx)$(CONFIG_TARGET_ipq53xx),y)
+LINUX_VERSION-5.4 = .213
+LINUX_KERNEL_HASH-5.4.213 = d13de2f5e02569eebeb40ee9373fc0b4d0bf6b69595b38ea95c1f878a5bd0447
+endif

View File

@@ -58,7 +58,7 @@ index 5cae355e68..a999d58f93 100644
+ -DDEBUG_SUPPORT=ON \
+ -DLOG_SUPPORT=OFF
ifeq ($(CONFIG_TARGET_ipq95xx),y)
ifeq ($(CONFIG_TARGET_ipq95xx)$(CONFIG_TARGET_ipq53xx),y)
TARGET_CFLAGS += -DQCA_WIFI_7
@@ -73,115 +85,40 @@ define Package/libucode
DEPENDS:=+libjson-c