diff --git a/package/qca/qca-ssdk/Makefile b/package/qca/qca-ssdk/Makefile index 487117bb6..582a108e6 100644 --- a/package/qca/qca-ssdk/Makefile +++ b/package/qca/qca-ssdk/Makefile @@ -1,50 +1,32 @@ include $(TOPDIR)/rules.mk PKG_NAME:=qca-ssdk -PKG_RELEASE:=1 +PKG_RELEASE:=$(AUTORELEASE) +PKG_SOURCE_URL:=https://git.codelinaro.org/clo/qsdk/oss/lklm/qca-ssdk.git PKG_SOURCE_PROTO:=git -PKG_SOURCE_URL:=https://source.codeaurora.org/quic/qsdk/oss/lklm/qca-ssdk -PKG_SOURCE_DATE:=2021-04-28 -PKG_SOURCE_VERSION:=c9bc3bc34eaaac78083573524097356e2dcc1b66 -PKG_MIRROR_HASH:=29db78529be32427b8b96fcbfec22a016a243676781ec96d9d65b810944fa405 - -LOCAL_VARIANT=$(patsubst qca-ssdk-%,%,$(patsubst qca-ssdk-%,%,$(BUILD_VARIANT))) +PKG_SOURCE_DATE:=2022-06-15 +PKG_SOURCE_VERSION:=3b28aac762c4d6af0e3ca29b0057755937e412b6 +PKG_MIRROR_HASH:=7ba48088db28ef89559d1993a1ef91bdd0fcf14a12c7d9c9ad7c57eaabd552d7 include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/package.mk -define KernelPackage/qca-ssdk/default-nohnat +define KernelPackage/qca-ssdk-nohnat SECTION:=kernel CATEGORY:=Kernel modules SUBMENU:=Network Devices TITLE:=Kernel driver for QCA SSDK + DEPENDS:=@(TARGET_ipq806x||TARGET_ipq807x||TARGET_ipq60xx) FILES:=$(PKG_BUILD_DIR)/build/bin/qca-ssdk.ko AUTOLOAD:=$(call AutoLoad,30,qca-ssdk) - PROVIDES:=qca-ssdk -endef - -define KernelPackage/qca-ssdk-nohnat -$(call KernelPackage/qca-ssdk/default-nohnat) - DEPENDS:=@(TARGET_ipq806x||TARGET_ipq807x||TARGET_ipq60xx) - VARIANT:=nohnat endef define KernelPackage/qca-ssdk-nohnat/Description This package contains a qca-ssdk driver for QCA chipset endef -define KernelPackage/qca-ssdk-hnat -$(call KernelPackage/qca-ssdk/default-nohnat) - DEPENDS:=@TARGET_ipq40xx +kmod-ipt-extra +kmod-ipt-filter \ - +kmod-ppp +TARGET_ipq40xx:kmod-qca-rfs - TITLE+= (hnat) - VARIANT:=hnat -endef - -define KernelPackage/qca-ssdk-hnat/Description -This package contains a qca-ssdk-hnat driver for QCA chipset -endef +GCC_VERSION=$(shell echo "$(CONFIG_GCC_VERSION)" | sed 's/[^0-9.]*\([0-9.]*\).*/\1/') ifdef CONFIG_TOOLCHAIN_BIN_PATH TOOLCHAIN_BIN_PATH=$(CONFIG_TOOLCHAIN_BIN_PATH) @@ -52,39 +34,28 @@ else TOOLCHAIN_BIN_PATH=$(TOOLCHAIN_DIR)/bin endif -QCASSDK_CONFIG_OPTS+= \ - $(KERNEL_MAKE_FLAGS) \ - KVER=$(LINUX_VERSION) \ - SYS_PATH=$(LINUX_DIR) \ - GCC_VERSION=$(GCC_VERSION) \ - TOOLPREFIX=$(TARGET_CROSS) \ +MAKE_FLAGS+= \ + TARGET_NAME=$(CONFIG_TARGET_NAME) \ TOOL_PATH=$(TOOLCHAIN_BIN_PATH) \ + SYS_PATH=$(LINUX_DIR) \ + TOOLPREFIX=$(TARGET_CROSS) \ + KVER=$(LINUX_VERSION) \ + ARCH=$(LINUX_KARCH) \ TARGET_SUFFIX=$(CONFIG_TARGET_SUFFIX) \ - EXTRA_CFLAGS=-fno-stack-protector -I$(STAGING_DIR)/usr/include + GCC_VERSION=$(GCC_VERSION) \ + EXTRA_CFLAGS='-Wno-error -fno-PIC -fno-stack-protector -I$(STAGING_DIR)/usr/include' \ + $(KERNEL_MAKE_FLAGS) -ifeq ($(LOCAL_VARIANT),hnat) - QCASSDK_CONFIG_OPTS+= HNAT_FEATURE=enable -ifeq ($(BOARD),ipq40xx) - QCASSDK_CONFIG_OPTS+= RFS_FEATURE=enable -endif +ifneq (, $(findstring $(CONFIG_TARGET_BOARD), "ipq60xx" "ipq807x")) + MAKE_FLAGS+= PTP_FEATURE=disable SWCONFIG_FEATURE=disable endif -ifeq ($(BOARD),ipq60xx) - QCASSDK_CONFIG_OPTS+= CHIP_TYPE=CPPE -else ifeq ($(BOARD),ipq807x) - QCASSDK_CONFIG_OPTS+= CHIP_TYPE=HPPE -else - QCASSDK_CONFIG_OPTS+= HK_CHIP=enable +ifeq ($(CONFIG_TARGET_BOARD), "ipq807x") + MAKE_FLAGS+= CHIP_TYPE=HPPE +else ifeq ($(CONFIG_TARGET_BOARD), "ipq60xx") + MAKE_FLAGS+= CHIP_TYPE=CPPE endif -ifneq (, $(findstring $(BOARD), ipq60xx ipq807x)) - QCASSDK_CONFIG_OPTS+= PTP_FEATURE=disable SWCONFIG_FEATURE=disable -endif - -define Build/Compile - $(MAKE) -C $(PKG_BUILD_DIR) $(strip $(QCASSDK_CONFIG_OPTS)) -endef - define Build/InstallDev $(INSTALL_DIR) $(1)/usr/include/qca-ssdk $(INSTALL_DIR) $(1)/usr/include/qca-ssdk/api @@ -109,6 +80,7 @@ define Build/InstallDev $(CP) -rf $(PKG_BUILD_DIR)/include/common/*.h $(1)/usr/include/qca-ssdk $(CP) -rf $(PKG_BUILD_DIR)/include/sal/os/linux/*.h $(1)/usr/include/qca-ssdk $(CP) -rf $(PKG_BUILD_DIR)/include/sal/os/*.h $(1)/usr/include/qca-ssdk + endef define KernelPackage/qca-ssdk-nohnat/install @@ -116,10 +88,4 @@ define KernelPackage/qca-ssdk-nohnat/install $(INSTALL_BIN) ./files/qca-ssdk $(1)/etc/init.d/qca-ssdk endef -define KernelPackage/qca-ssdk-hnat/install - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/qca-ssdk $(1)/etc/init.d/qca-ssdk -endef - $(eval $(call KernelPackage,qca-ssdk-nohnat)) -$(eval $(call KernelPackage,qca-ssdk-hnat)) diff --git a/package/qca/qca-ssdk/patches/0001-SSDK-config-add-kernel-5.10.patch b/package/qca/qca-ssdk/patches/0001-SSDK-config-add-kernel-5.10.patch index 1ee44fa96..8ad541ebf 100644 --- a/package/qca/qca-ssdk/patches/0001-SSDK-config-add-kernel-5.10.patch +++ b/package/qca/qca-ssdk/patches/0001-SSDK-config-add-kernel-5.10.patch @@ -29,10 +29,10 @@ Signed-off-by: Robert Marko endif ifeq ($(ARCH), arm64) --ifeq ($(KVER),$(filter 4.1% 4.4% 4.9% 5.4%,$(KVER))) -+ifeq ($(KVER),$(filter 4.1% 4.4% 4.9% 5.4% 5.10%,$(KVER))) - CPU_CFLAG= -DMODULE -Os -pipe -march=armv8-a -mcpu=cortex-a53+crypto -fno-caller-saves -fno-strict-aliasing -Werror -fno-common -Wno-format-security -Wno-pointer-sign -Wno-unused-but-set-variable -Wno-error=unused-result -mcmodel=large - endif +- ifeq ($(KVER),$(filter 4.1% 4.4% 4.9% 5.4%,$(KVER))) ++ ifeq ($(KVER),$(filter 4.1% 4.4% 4.9% 5.4% 5.10%,$(KVER))) + CPU_CFLAG= -DMODULE -Os -pipe -march=armv8-a -mcpu=cortex-a53+crypto -fno-caller-saves -fno-strict-aliasing -Werror -fno-common -Wno-format-security -Wno-pointer-sign -Wno-unused-but-set-variable -Wno-error=unused-result -mcmodel=large + endif endif --- a/make/linux_opt.mk +++ b/make/linux_opt.mk diff --git a/package/qca/qca-ssdk/patches/0004-platform-use-of_mdio_find_bus-to-get-MDIO-bus.patch b/package/qca/qca-ssdk/patches/0004-platform-use-of_mdio_find_bus-to-get-MDIO-bus.patch index 3bcbcccf6..1382ba140 100644 --- a/package/qca/qca-ssdk/patches/0004-platform-use-of_mdio_find_bus-to-get-MDIO-bus.patch +++ b/package/qca/qca-ssdk/patches/0004-platform-use-of_mdio_find_bus-to-get-MDIO-bus.patch @@ -16,16 +16,18 @@ Signed-off-by: Robert Marko --- a/src/init/ssdk_plat.c +++ b/src/init/ssdk_plat.c -@@ -551,7 +551,6 @@ static int miibus_get(a_uint32_t dev_id) +--- ssdk_plat.c.orig 2022-07-21 14:17:55.010803700 +0300 ++++ ssdk_plat.c 2022-07-21 14:30:42.884803700 +0300 +@@ -734,7 +734,6 @@ static int miibus_get(a_uint32_t dev_id) struct device_node *mdio_node = NULL; struct device_node *switch_node = NULL; struct platform_device *mdio_plat = NULL; -- struct ipq40xx_mdio_data *mdio_data = NULL; +- struct qca_mdio_data *mdio_data = NULL; struct qca_phy_priv *priv; hsl_reg_mode reg_mode = HSL_REG_LOCAL_BUS; priv = qca_phy_priv_global[dev_id]; -@@ -584,12 +583,7 @@ static int miibus_get(a_uint32_t dev_id) - +@@ -769,13 +768,8 @@ static int miibus_get(a_uint32_t dev_id) + if(reg_mode == HSL_REG_LOCAL_BUS) { - mdio_data = dev_get_drvdata(&mdio_plat->dev); @@ -34,7 +36,38 @@ Signed-off-by: Robert Marko - return 1; - } - priv->miibus = mdio_data->mii_bus; -+ priv->miibus = of_mdio_find_bus(mdio_node); - } +- } ++ priv->miibus = of_mdio_find_bus(mdio_node); ++ } else priv->miibus = dev_get_drvdata(&mdio_plat->dev); + +@@ -813,7 +807,6 @@ static int miibus_get(a_uint32_t dev_id) + #else + static int miibus_get(a_uint32_t dev_id) + { +- struct ag71xx_mdio *am; + struct qca_phy_priv *priv = qca_phy_priv_global[dev_id]; + #if defined(CONFIG_OF) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) + struct device_node *mdio_node = NULL; +@@ -829,17 +822,12 @@ static int miibus_get(a_uint32_t dev_id) + SSDK_ERROR("cannot find platform device from mdio node\n"); + return 1; + } +- am = dev_get_drvdata(&mdio_plat->dev); +- if (!am) { +- SSDK_ERROR("cannot get mdio_data reference from device data\n"); +- return 1; +- } +- priv->miibus = am->mii_bus; +- ++ priv->miibus = of_mdio_find_bus(mdio_node); + switch_chip_id_adjuest(dev_id); + #else + struct device *miidev; +- char busid[MII_BUS_ID_SIZE]; ++ struct ag71xx_mdio *am; ++ char busid[MII_BUS_ID_SIZE]; + + snprintf(busid, MII_BUS_ID_SIZE, "%s.%d", + PLATFORM_MDIO_BUS_NAME, PLATFORM_MDIO_BUS_NUM); \ No newline at end of file diff --git a/package/qca/qca-ssdk/patches/0007-SSDK-dts-fix-of_get_mac_address.patch b/package/qca/qca-ssdk/patches/0005-SSDK-dts-fix-of_get_mac_address.patch similarity index 100% rename from package/qca/qca-ssdk/patches/0007-SSDK-dts-fix-of_get_mac_address.patch rename to package/qca/qca-ssdk/patches/0005-SSDK-dts-fix-of_get_mac_address.patch diff --git a/package/qca/qca-ssdk/patches/0006-SSDK-config-add-kernel-5.15.patch b/package/qca/qca-ssdk/patches/0006-SSDK-config-add-kernel-5.15.patch new file mode 100644 index 000000000..a4e1b2782 --- /dev/null +++ b/package/qca/qca-ssdk/patches/0006-SSDK-config-add-kernel-5.15.patch @@ -0,0 +1,56 @@ +From 599f19551dc8db3cb396e4c139a73bd72300ebf5 Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Fri, 24 Dec 2021 19:39:02 +0100 +Subject: [PATCH] SSDK: config: add kernel 5.15 + +This is purely to identify it and be able to set +flags correctly. + +Signed-off-by: Robert Marko +--- + config | 6 +++++- + make/linux_opt.mk | 4 ++-- + 2 files changed, 7 insertions(+), 3 deletions(-) + +--- a/config ++++ b/config +@@ -26,6 +26,10 @@ ifeq ($(KVER),$(filter 5.10%,$(KVER))) + OS_VER=5_10 + endif + ++ifeq ($(KVER),$(filter 5.15%,$(KVER))) ++OS_VER=5_15 ++endif ++ + ifeq ($(KVER), 3.4.0) + OS_VER=3_4 + endif +@@ -127,7 +131,7 @@ endif + endif + + ifeq ($(ARCH), arm64) +- ifeq ($(KVER),$(filter 4.1% 4.4% 4.9% 5.4% 5.10%,$(KVER))) ++ ifeq ($(KVER),$(filter 4.1% 4.4% 4.9% 5.4% 5.10% 5.15%,$(KVER))) + CPU_CFLAG= -DMODULE -Os -pipe -march=armv8-a -mcpu=cortex-a53+crypto -fno-caller-saves -fno-strict-aliasing -Werror -fno-common -Wno-format-security -Wno-pointer-sign -Wno-unused-but-set-variable -Wno-error=unused-result -mcmodel=large + endif + endif +--- a/make/linux_opt.mk ++++ b/make/linux_opt.mk +@@ -388,7 +388,7 @@ ifeq (KSLIB, $(MODULE_TYPE)) + KASAN_SHADOW_SCALE_SHIFT := 3 + endif + +- ifeq ($(OS_VER),$(filter 5_4 5_10, $(OS_VER))) ++ ifeq ($(OS_VER),$(filter 5_4 5_10 5_15, $(OS_VER))) + ifeq ($(ARCH), arm64) + KASAN_OPTION += -DKASAN_SHADOW_SCALE_SHIFT=$(KASAN_SHADOW_SCALE_SHIFT) + endif +@@ -419,7 +419,7 @@ ifeq (KSLIB, $(MODULE_TYPE)) + + endif + +- ifeq ($(OS_VER),$(filter 4_4 5_4 5_10, $(OS_VER))) ++ ifeq ($(OS_VER),$(filter 4_4 5_4 5_10 5_15, $(OS_VER))) + MODULE_CFLAG += -DKVER34 + MODULE_CFLAG += -DKVER32 + MODULE_CFLAG += -DLNX26_22 diff --git a/package/qca/qca-ssdk/patches/0007-qca8081-convert-to-5.11-IRQ-model.patch b/package/qca/qca-ssdk/patches/0007-qca8081-convert-to-5.11-IRQ-model.patch new file mode 100644 index 000000000..b0c272b17 --- /dev/null +++ b/package/qca/qca-ssdk/patches/0007-qca8081-convert-to-5.11-IRQ-model.patch @@ -0,0 +1,83 @@ +From 25ff0ae02accadd7b05f1dae788505f833d5c019 Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Fri, 24 Dec 2021 20:02:32 +0100 +Subject: [PATCH] qca8081: convert to 5.11 IRQ model + +Kernel 5.11 introduced new IRQ handling model for PHY-s, +so provide those if 5.11 or later is used. + +Signed-off-by: Robert Marko +--- + src/hsl/phy/qca808x.c | 46 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 46 insertions(+) + +--- a/src/hsl/phy/qca808x.c ++++ b/src/hsl/phy/qca808x.c +@@ -238,6 +238,7 @@ static int qca808x_config_intr(struct ph + return err; + } + ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0)) + static int qca808x_ack_interrupt(struct phy_device *phydev) + { + int err; +@@ -257,6 +258,47 @@ static int qca808x_ack_interrupt(struct + + return (err < 0) ? err : 0; + } ++#endif ++ ++#if (LINUX_VERSION_CODE > KERNEL_VERSION(5, 11, 0)) ++static irqreturn_t qca808x_handle_interrupt(struct phy_device *phydev) ++{ ++ a_uint16_t irq_status, int_enabled; ++ a_uint32_t dev_id = 0, phy_id = 0; ++ qca808x_priv *priv = phydev->priv; ++ const struct qca808x_phy_info *pdata = priv->phy_info; ++ ++ if (!pdata) { ++ return SW_FAIL; ++ } ++ ++ dev_id = pdata->dev_id; ++ phy_id = pdata->phy_addr; ++ ++ irq_status = qca808x_phy_reg_read(dev_id, phy_id, ++ QCA808X_PHY_INTR_STATUS); ++ if (irq_status < 0) { ++ phy_error(phydev); ++ return IRQ_NONE; ++ } ++ ++ /* Read the current enabled interrupts */ ++ int_enabled = qca808x_phy_reg_read(dev_id, phy_id, ++ QCA808X_PHY_INTR_MASK); ++ if (int_enabled < 0) { ++ phy_error(phydev); ++ return IRQ_NONE; ++ } ++ ++ /* See if this was one of our enabled interrupts */ ++ if (!(irq_status & int_enabled)) ++ return IRQ_NONE; ++ ++ phy_trigger_machine(phydev); ++ ++ return IRQ_HANDLED; ++} ++#endif + + /* switch linux negtiation capability to fal avariable */ + #if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 0, 0)) +@@ -559,7 +601,11 @@ struct phy_driver qca808x_phy_driver = { + .config_intr = qca808x_config_intr, + .config_aneg = qca808x_config_aneg, + .aneg_done = qca808x_aneg_done, ++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 11, 0)) + .ack_interrupt = qca808x_ack_interrupt, ++#else ++ .handle_interrupt = qca808x_handle_interrupt, ++#endif + .read_status = qca808x_read_status, + .suspend = qca808x_suspend, + .resume = qca808x_resume, diff --git a/package/qca/qca-ssdk/patches/0008-add-aquantia-phy-id-113CB0.patch b/package/qca/qca-ssdk/patches/0008-add-aquantia-phy-id-113CB0.patch deleted file mode 100644 index 69b08a819..000000000 --- a/package/qca/qca-ssdk/patches/0008-add-aquantia-phy-id-113CB0.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 440ab349813e5aa9dbeddab4d82ab64ff5347c5f Mon Sep 17 00:00:00 2001 -From: Dirk Buchwalder -Date: Sat, 30 Oct 2021 19:51:06 +0200 -Subject: [PATCH] add aquantia phy id 113CB0 / 0x31c31C12 - -This adds support for the AQR113C with the id -"113CB0 / 0x31c31C12" to the ssdk. - -This is used in the QNAP 301w - -Signed-off-by: Dirk Buchwalder - ---- - include/hsl/phy/hsl_phy.h | 1 + - src/hsl/phy/hsl_phy.c | 1 + - 2 files changed, 2 insertions(+) - ---- a/include/hsl/phy/hsl_phy.h -+++ b/include/hsl/phy/hsl_phy.h -@@ -579,6 +579,7 @@ typedef struct { - #define AQUANTIA_PHY_112 0x03a1b660 - #define AQUANTIA_PHY_113C_A0 0x31c31C10 - #define AQUANTIA_PHY_113C_A1 0x31c31C11 -+#define AQUANTIA_PHY_113CB0 0x31c31C12 - #define AQUANTIA_PHY_112C 0x03a1b792 - - #define PHY_805XV2 0x004DD082 ---- a/src/hsl/phy/hsl_phy.c -+++ b/src/hsl/phy/hsl_phy.c -@@ -235,6 +235,7 @@ phy_type_t hsl_phytype_get_by_phyid(a_ui - case AQUANTIA_PHY_112: - case AQUANTIA_PHY_113C_A0: - case AQUANTIA_PHY_113C_A1: -+ case AQUANTIA_PHY_113CB0: - case AQUANTIA_PHY_112C: - phytype = AQUANTIA_PHY_CHIP; - break; diff --git a/package/qca/qca-ssdk/patches/0008-qca807x-add-a-LED-quirk-for-Xiaomi-AX9000.patch b/package/qca/qca-ssdk/patches/0008-qca807x-add-a-LED-quirk-for-Xiaomi-AX9000.patch new file mode 100644 index 000000000..76f71be46 --- /dev/null +++ b/package/qca/qca-ssdk/patches/0008-qca807x-add-a-LED-quirk-for-Xiaomi-AX9000.patch @@ -0,0 +1,74 @@ +From 86624624c2b593c57999780a3838e6a9fe40b30c Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Tue, 11 Jan 2022 00:28:42 +0100 +Subject: [PATCH] qca807x: add a LED quirk for Xiaomi AX9000 + +Xiaomi AX9000 has a single LED for each of 4 gigabit ethernet ports that +are connected to QCA8075, and that LED is connected to the 100M LED pin. + +So, by default it will only work when in 10 or 100Mbit mode, this is quite +annoying and makes no sense(If they have connected it to the 1000Mbit LED +pin then it would have worked for 10/100 by default as well). + +So, to solve this add a check for system compatible as we cant parse if +from DTS in any other way and set the 100M LED to blink on 1000Base-T +as well. + +Signed-off-by: Robert Marko +--- + include/hsl/phy/malibu_phy.h | 2 ++ + src/hsl/phy/malibu_phy.c | 11 +++++++++++ + 2 files changed, 13 insertions(+) + +diff --git a/include/hsl/phy/malibu_phy.h b/include/hsl/phy/malibu_phy.h +index b7354041..ec7a0621 100755 +--- a/include/hsl/phy/malibu_phy.h ++++ b/include/hsl/phy/malibu_phy.h +@@ -94,6 +94,7 @@ extern "C" + #define MALIBU_DAC_CTRL_MASK 0x380 + #define MALIBU_DAC_CTRL_VALUE 0x280 + #define MALIBU_LED_1000_CTRL1_100_10_MASK 0x30 ++#define MALIBU_LED_100_CTRL1_1000_MASK 0x40 + + #define MALIBU_PHY_EEE_ADV_100M 0x0002 + #define MALIBU_PHY_EEE_ADV_1000M 0x0004 +@@ -118,6 +119,7 @@ extern "C" + #define MALIBU_PHY_MMD7_EGRESS_COUNTER_HIGH 0x802d + #define MALIBU_PHY_MMD7_EGRESS_COUNTER_LOW 0x802e + #define MALIBU_PHY_MMD7_EGRESS_ERROR_COUNTER 0x802f ++#define MALIBU_PHY_MMD7_LED_100_CTRL1 0x8074 + #define MALIBU_PHY_MMD7_LED_1000_CTRL1 0x8076 + + +diff --git a/src/hsl/phy/malibu_phy.c b/src/hsl/phy/malibu_phy.c +index 1f4dba15..2bef9fa3 100644 +--- a/src/hsl/phy/malibu_phy.c ++++ b/src/hsl/phy/malibu_phy.c +@@ -12,6 +12,8 @@ + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + ++#include ++ + #include "sw.h" + #include "fal_port_ctrl.h" + #include "hsl_api.h" +@@ -2726,6 +2728,15 @@ malibu_phy_hw_init(a_uint32_t dev_id, a_uint32_t port_bmp) + led_status |= MALIBU_LED_1000_CTRL1_100_10_MASK; + malibu_phy_mmd_write(dev_id, phy_addr, MALIBU_PHY_MMD7_NUM, + MALIBU_PHY_MMD7_LED_1000_CTRL1, led_status); ++ if (of_machine_is_compatible("xiaomi,ax9000")) { ++ /* add 1000M link LED behavior for Xiaomi AX9000 */ ++ led_status = malibu_phy_mmd_read(dev_id, phy_addr, MALIBU_PHY_MMD7_NUM, ++ MALIBU_PHY_MMD7_LED_100_CTRL1); ++ led_status &= ~MALIBU_LED_100_CTRL1_1000_MASK; ++ led_status |= MALIBU_LED_100_CTRL1_1000_MASK; ++ malibu_phy_mmd_write(dev_id, phy_addr, MALIBU_PHY_MMD7_NUM, ++ MALIBU_PHY_MMD7_LED_100_CTRL1, led_status); ++ } + /*disable Extended next page*/ + phy_data = malibu_phy_reg_read(dev_id, phy_addr, MALIBU_AUTONEG_ADVERT); + phy_data &= ~MALIBU_EXTENDED_NEXT_PAGE_EN; +-- +2.34.1 + diff --git a/package/qca/qca-ssdk/patches/0009-qca807x-add-a-LED-quirk-for-Xiaomi-AX3600.patch b/package/qca/qca-ssdk/patches/0009-qca807x-add-a-LED-quirk-for-Xiaomi-AX3600.patch new file mode 100644 index 000000000..c31ea6da9 --- /dev/null +++ b/package/qca/qca-ssdk/patches/0009-qca807x-add-a-LED-quirk-for-Xiaomi-AX3600.patch @@ -0,0 +1,29 @@ +From 913514b9177e77836f2c8d61fc498b54f54c6775 Mon Sep 17 00:00:00 2001 +From: Robert Marko +Date: Wed, 26 Jan 2022 14:47:33 +0100 +Subject: [PATCH] qca807x: add a LED quirk for Xiaomi AX3600 + +AX3600 requires the same LED quirk so that PHY LED-s will blink even +once Linux resets the PHY. + +So, just check for its compatible. + +Signed-off-by: Robert Marko +--- + src/hsl/phy/malibu_phy.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/src/hsl/phy/malibu_phy.c ++++ b/src/hsl/phy/malibu_phy.c +@@ -2728,8 +2728,9 @@ malibu_phy_hw_init(a_uint32_t dev_id, a_ + led_status |= MALIBU_LED_1000_CTRL1_100_10_MASK; + malibu_phy_mmd_write(dev_id, phy_addr, MALIBU_PHY_MMD7_NUM, + MALIBU_PHY_MMD7_LED_1000_CTRL1, led_status); +- if (of_machine_is_compatible("xiaomi,ax9000")) { +- /* add 1000M link LED behavior for Xiaomi AX9000 */ ++ /* add 1000M link LED behavior for Xiaomi boards */ ++ if (of_machine_is_compatible("xiaomi,ax9000") || ++ of_machine_is_compatible("xiaomi,ax3600")) { + led_status = malibu_phy_mmd_read(dev_id, phy_addr, MALIBU_PHY_MMD7_NUM, + MALIBU_PHY_MMD7_LED_100_CTRL1); + led_status &= ~MALIBU_LED_100_CTRL1_1000_MASK; diff --git a/package/qca/qca-ssdk/patches/0006-fix-mdio-probe-on-ipq806x.patch b/package/qca/qca-ssdk/patches/0010-fix-mdio-probe-on-ipq806x.patch similarity index 73% rename from package/qca/qca-ssdk/patches/0006-fix-mdio-probe-on-ipq806x.patch rename to package/qca/qca-ssdk/patches/0010-fix-mdio-probe-on-ipq806x.patch index 8e802fe2a..0a42dbe7b 100644 --- a/package/qca/qca-ssdk/patches/0006-fix-mdio-probe-on-ipq806x.patch +++ b/package/qca/qca-ssdk/patches/0010-fix-mdio-probe-on-ipq806x.patch @@ -1,9 +1,9 @@ --- a/src/init/ssdk_plat.c +++ b/src/init/ssdk_plat.c @@ -568,7 +568,7 @@ static int miibus_get(a_uint32_t dev_id) - if(reg_mode == HSL_REG_LOCAL_BUS) - mdio_node = of_find_compatible_node(NULL, NULL, "qcom,ipq40xx-mdio"); - else + if (!mdio_node) + mdio_node = of_find_compatible_node(NULL, NULL, "qcom,qca-mdio"); + } else - mdio_node = of_find_compatible_node(NULL, NULL, "virtual,mdio-gpio"); + mdio_node = of_find_compatible_node(NULL, NULL, "qcom,ipq8064-mdio"); diff --git a/package/qca/qca-ssdk/patches/0005-add-kernel-5.4-support.patch b/package/qca/qca-ssdk/patches/0011-add-kernel-5.4-support.patch similarity index 100% rename from package/qca/qca-ssdk/patches/0005-add-kernel-5.4-support.patch rename to package/qca/qca-ssdk/patches/0011-add-kernel-5.4-support.patch diff --git a/package/qca/qca-ssdk/patches/0012-include-fix-compilation-error-for-parse_uci_option.patch b/package/qca/qca-ssdk/patches/0012-include-fix-compilation-error-for-parse_uci_option.patch new file mode 100644 index 000000000..01b8deda9 --- /dev/null +++ b/package/qca/qca-ssdk/patches/0012-include-fix-compilation-error-for-parse_uci_option.patch @@ -0,0 +1,27 @@ +From 8e3500df074625b3eb3a8ed4e8e0b1b116f13d0c Mon Sep 17 00:00:00 2001 +From: Ansuel Smith +Date: Sat, 7 May 2022 19:03:55 +0200 +Subject: [PATCH] include: fix compilation error for parse_uci_option + +Fix missing include for parse_uci_option + +Signed-off-by: Ansuel Smith +--- + include/ref/ref_uci.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/include/ref/ref_uci.h b/include/ref/ref_uci.h +index a42ea153..0906c5ba 100755 +--- a/include/ref/ref_uci.h ++++ b/include/ref/ref_uci.h +@@ -19,6 +19,7 @@ + extern "C" { + #endif /* __cplusplus */ + ++#include + + #if defined(IN_SWCONFIG) + int +-- +2.34.1 + diff --git a/target/linux/ipq60xx/Makefile b/target/linux/ipq60xx/Makefile index 8aeb9605b..42e2737e8 100644 --- a/target/linux/ipq60xx/Makefile +++ b/target/linux/ipq60xx/Makefile @@ -15,8 +15,6 @@ DEFAULT_PACKAGES += \ kmod-usb3 kmod-usb-dwc3 kmod-usb-dwc3-qcom \ kmod-leds-gpio kmod-gpio-button-hotplug \ kmod-ath11k-ahb wpad-openssl uboot-envtools \ - kmod-qca-nss-dp kmod-qca-nss-drv-64 nss-firmware-ipq6018 \ - kmod-qca-nss-drv-pppoe-64 kmod-qca-nss-ecm-64 \ - kmod-qca-nss-drv-bridge-mgr-64 kmod-qca-nss-drv-vlan-mgr-64 + kmod-qca-nss-dp nss-firmware-ipq6018 $(eval $(call BuildTarget)) diff --git a/target/linux/ipq60xx/files/arch/arm64/boot/dts/qcom/ipq6018-qihoo-v6.dts b/target/linux/ipq60xx/files/arch/arm64/boot/dts/qcom/ipq6018-qihoo-v6.dts index a1ed9f41a..d0d659bb4 100644 --- a/target/linux/ipq60xx/files/arch/arm64/boot/dts/qcom/ipq6018-qihoo-v6.dts +++ b/target/linux/ipq60xx/files/arch/arm64/boot/dts/qcom/ipq6018-qihoo-v6.dts @@ -31,25 +31,6 @@ status = "okay"; }; -&blsp1_i2c3 { - pinctrl-0 = <&i2c_1_pins>; - pinctrl-names = "default"; - status = "okay"; -}; - -&blsp1_spi1 { - cs-select = <0>; - status = "okay"; - - flash@0 { - #address-cells = <1>; - #size-cells = <1>; - reg = <0>; - compatible = "micron,n25q128a11", "jedec,spi-nor"; - spi-max-frequency = <50000000>; - }; -}; - &tlmm { i2c_1_pins: i2c-1-pins { pins = "gpio42", "gpio43"; diff --git a/target/linux/ipq60xx/patches-5.15/1000-arm64-dts-add-OpenWrt-DTS-files.patch b/target/linux/ipq60xx/patches-5.15/1000-arm64-dts-add-OpenWrt-DTS-files.patch index 91f4a0e22..61ca310e1 100644 --- a/target/linux/ipq60xx/patches-5.15/1000-arm64-dts-add-OpenWrt-DTS-files.patch +++ b/target/linux/ipq60xx/patches-5.15/1000-arm64-dts-add-OpenWrt-DTS-files.patch @@ -16,7 +16,7 @@ diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefi index 70516508be56..27a7e3f98465 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile -@@ -4,6 +4,7 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8094-sony-xperia-kitakami-karin_windy.dtb +@@ -4,6 +4,8 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8094-sony-xperia-kitakami-karin_windy.dtb dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb dtb-$(CONFIG_ARCH_QCOM) += apq8096-ifc6640.dtb dtb-$(CONFIG_ARCH_QCOM) += ipq6018-cp01-c1.dtb @@ -27,4 +27,3 @@ index 70516508be56..27a7e3f98465 100644 dtb-$(CONFIG_ARCH_QCOM) += ipq8074-hk10-c2.dtb -- 2.37.1 - diff --git a/target/linux/ipq60xx/patches-5.15/600-5.15-qca-nss-ssdk-delete-fdb-entry-using-netdev.patch b/target/linux/ipq60xx/patches-5.15/600-5.15-qca-nss-ssdk-delete-fdb-entry-using-netdev.patch new file mode 100644 index 000000000..041d3a460 --- /dev/null +++ b/target/linux/ipq60xx/patches-5.15/600-5.15-qca-nss-ssdk-delete-fdb-entry-using-netdev.patch @@ -0,0 +1,32 @@ +--- a/include/linux/if_bridge.h ++++ b/include/linux/if_bridge.h +@@ -240,4 +240,7 @@ extern br_get_dst_hook_t __rcu *br_get_d + extern struct net_device *br_fdb_bridge_dev_get_and_hold(struct net_bridge *br); + /* QCA NSS bridge-mgr support - End */ + ++/* QCA NSS SSDK support - Start */ ++extern int br_fdb_delete_by_netdev(struct net_device *dev,const unsigned char *addr, u16 vid); ++/* QCA NSS SSDK support - End */ + #endif +--- a/net/bridge/br_fdb.c ++++ b/net/bridge/br_fdb.c +@@ -1246,6 +1246,19 @@ static int __br_fdb_delete(struct net_br + return err; + } + ++int br_fdb_delete_by_netdev(struct net_device *dev, ++ const unsigned char *addr, u16 vid) ++{ ++ int err; ++ ++ rtnl_lock(); ++ err = br_fdb_delete(NULL, NULL, dev, addr, vid); ++ rtnl_unlock(); ++ ++ return err; ++} ++EXPORT_SYMBOL_GPL(br_fdb_delete_by_netdev); ++ + /* Remove neighbor entry with RTM_DELNEIGH */ + int br_fdb_delete(struct ndmsg *ndm, struct nlattr *tb[], + struct net_device *dev,