qca-ssdk: add kernel 5.15 support

This commit is contained in:
lean 2022-09-12 13:48:20 +08:00
parent 771d6973ac
commit ddc3641e5b
16 changed files with 373 additions and 132 deletions

View File

@ -1,50 +1,32 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=qca-ssdk 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_PROTO:=git
PKG_SOURCE_URL:=https://source.codeaurora.org/quic/qsdk/oss/lklm/qca-ssdk PKG_SOURCE_DATE:=2022-06-15
PKG_SOURCE_DATE:=2021-04-28 PKG_SOURCE_VERSION:=3b28aac762c4d6af0e3ca29b0057755937e412b6
PKG_SOURCE_VERSION:=c9bc3bc34eaaac78083573524097356e2dcc1b66 PKG_MIRROR_HASH:=7ba48088db28ef89559d1993a1ef91bdd0fcf14a12c7d9c9ad7c57eaabd552d7
PKG_MIRROR_HASH:=29db78529be32427b8b96fcbfec22a016a243676781ec96d9d65b810944fa405
LOCAL_VARIANT=$(patsubst qca-ssdk-%,%,$(patsubst qca-ssdk-%,%,$(BUILD_VARIANT)))
include $(INCLUDE_DIR)/kernel.mk include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
define KernelPackage/qca-ssdk/default-nohnat define KernelPackage/qca-ssdk-nohnat
SECTION:=kernel SECTION:=kernel
CATEGORY:=Kernel modules CATEGORY:=Kernel modules
SUBMENU:=Network Devices SUBMENU:=Network Devices
TITLE:=Kernel driver for QCA SSDK TITLE:=Kernel driver for QCA SSDK
DEPENDS:=@(TARGET_ipq806x||TARGET_ipq807x||TARGET_ipq60xx)
FILES:=$(PKG_BUILD_DIR)/build/bin/qca-ssdk.ko FILES:=$(PKG_BUILD_DIR)/build/bin/qca-ssdk.ko
AUTOLOAD:=$(call AutoLoad,30,qca-ssdk) 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 endef
define KernelPackage/qca-ssdk-nohnat/Description define KernelPackage/qca-ssdk-nohnat/Description
This package contains a qca-ssdk driver for QCA chipset This package contains a qca-ssdk driver for QCA chipset
endef endef
define KernelPackage/qca-ssdk-hnat GCC_VERSION=$(shell echo "$(CONFIG_GCC_VERSION)" | sed 's/[^0-9.]*\([0-9.]*\).*/\1/')
$(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
ifdef CONFIG_TOOLCHAIN_BIN_PATH ifdef CONFIG_TOOLCHAIN_BIN_PATH
TOOLCHAIN_BIN_PATH=$(CONFIG_TOOLCHAIN_BIN_PATH) TOOLCHAIN_BIN_PATH=$(CONFIG_TOOLCHAIN_BIN_PATH)
@ -52,39 +34,28 @@ else
TOOLCHAIN_BIN_PATH=$(TOOLCHAIN_DIR)/bin TOOLCHAIN_BIN_PATH=$(TOOLCHAIN_DIR)/bin
endif endif
QCASSDK_CONFIG_OPTS+= \ MAKE_FLAGS+= \
$(KERNEL_MAKE_FLAGS) \ TARGET_NAME=$(CONFIG_TARGET_NAME) \
KVER=$(LINUX_VERSION) \
SYS_PATH=$(LINUX_DIR) \
GCC_VERSION=$(GCC_VERSION) \
TOOLPREFIX=$(TARGET_CROSS) \
TOOL_PATH=$(TOOLCHAIN_BIN_PATH) \ TOOL_PATH=$(TOOLCHAIN_BIN_PATH) \
SYS_PATH=$(LINUX_DIR) \
TOOLPREFIX=$(TARGET_CROSS) \
KVER=$(LINUX_VERSION) \
ARCH=$(LINUX_KARCH) \
TARGET_SUFFIX=$(CONFIG_TARGET_SUFFIX) \ 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) ifneq (, $(findstring $(CONFIG_TARGET_BOARD), "ipq60xx" "ipq807x"))
QCASSDK_CONFIG_OPTS+= HNAT_FEATURE=enable MAKE_FLAGS+= PTP_FEATURE=disable SWCONFIG_FEATURE=disable
ifeq ($(BOARD),ipq40xx)
QCASSDK_CONFIG_OPTS+= RFS_FEATURE=enable
endif
endif endif
ifeq ($(BOARD),ipq60xx) ifeq ($(CONFIG_TARGET_BOARD), "ipq807x")
QCASSDK_CONFIG_OPTS+= CHIP_TYPE=CPPE MAKE_FLAGS+= CHIP_TYPE=HPPE
else ifeq ($(BOARD),ipq807x) else ifeq ($(CONFIG_TARGET_BOARD), "ipq60xx")
QCASSDK_CONFIG_OPTS+= CHIP_TYPE=HPPE MAKE_FLAGS+= CHIP_TYPE=CPPE
else
QCASSDK_CONFIG_OPTS+= HK_CHIP=enable
endif 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 define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk $(INSTALL_DIR) $(1)/usr/include/qca-ssdk
$(INSTALL_DIR) $(1)/usr/include/qca-ssdk/api $(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/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/linux/*.h $(1)/usr/include/qca-ssdk
$(CP) -rf $(PKG_BUILD_DIR)/include/sal/os/*.h $(1)/usr/include/qca-ssdk $(CP) -rf $(PKG_BUILD_DIR)/include/sal/os/*.h $(1)/usr/include/qca-ssdk
endef endef
define KernelPackage/qca-ssdk-nohnat/install 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 $(INSTALL_BIN) ./files/qca-ssdk $(1)/etc/init.d/qca-ssdk
endef 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-nohnat))
$(eval $(call KernelPackage,qca-ssdk-hnat))

View File

@ -29,10 +29,10 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
endif endif
ifeq ($(ARCH), arm64) 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%,$(KVER)))
+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%,$(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 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
endif endif
--- a/make/linux_opt.mk --- a/make/linux_opt.mk
+++ b/make/linux_opt.mk +++ b/make/linux_opt.mk

View File

@ -16,16 +16,18 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
--- a/src/init/ssdk_plat.c --- a/src/init/ssdk_plat.c
+++ b/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 *mdio_node = NULL;
struct device_node *switch_node = NULL; struct device_node *switch_node = NULL;
struct platform_device *mdio_plat = 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; struct qca_phy_priv *priv;
hsl_reg_mode reg_mode = HSL_REG_LOCAL_BUS; hsl_reg_mode reg_mode = HSL_REG_LOCAL_BUS;
priv = qca_phy_priv_global[dev_id]; 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) if(reg_mode == HSL_REG_LOCAL_BUS)
{ {
- mdio_data = dev_get_drvdata(&mdio_plat->dev); - mdio_data = dev_get_drvdata(&mdio_plat->dev);
@ -34,7 +36,38 @@ Signed-off-by: Robert Marko <robimarko@gmail.com>
- return 1; - return 1;
- } - }
- priv->miibus = mdio_data->mii_bus; - priv->miibus = mdio_data->mii_bus;
+ priv->miibus = of_mdio_find_bus(mdio_node); - }
} + priv->miibus = of_mdio_find_bus(mdio_node);
+ }
else else
priv->miibus = dev_get_drvdata(&mdio_plat->dev); 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);

View File

@ -0,0 +1,56 @@
From 599f19551dc8db3cb396e4c139a73bd72300ebf5 Mon Sep 17 00:00:00 2001
From: Robert Marko <robimarko@gmail.com>
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 <robimarko@gmail.com>
---
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

View File

@ -0,0 +1,83 @@
From 25ff0ae02accadd7b05f1dae788505f833d5c019 Mon Sep 17 00:00:00 2001
From: Robert Marko <robimarko@gmail.com>
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 <robimarko@gmail.com>
---
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,

View File

@ -1,37 +0,0 @@
From 440ab349813e5aa9dbeddab4d82ab64ff5347c5f Mon Sep 17 00:00:00 2001
From: Dirk Buchwalder <buchwalder@posteo.de>
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 <buchwalder@posteo.de>
---
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;

View File

@ -0,0 +1,74 @@
From 86624624c2b593c57999780a3838e6a9fe40b30c Mon Sep 17 00:00:00 2001
From: Robert Marko <robimarko@gmail.com>
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 <robimarko@gmail.com>
---
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 <linux/of.h>
+
#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

View File

@ -0,0 +1,29 @@
From 913514b9177e77836f2c8d61fc498b54f54c6775 Mon Sep 17 00:00:00 2001
From: Robert Marko <robimarko@gmail.com>
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 <robimarko@gmail.com>
---
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;

View File

@ -1,9 +1,9 @@
--- a/src/init/ssdk_plat.c --- a/src/init/ssdk_plat.c
+++ b/src/init/ssdk_plat.c +++ b/src/init/ssdk_plat.c
@@ -568,7 +568,7 @@ static int miibus_get(a_uint32_t dev_id) @@ -568,7 +568,7 @@ static int miibus_get(a_uint32_t dev_id)
if(reg_mode == HSL_REG_LOCAL_BUS) if (!mdio_node)
mdio_node = of_find_compatible_node(NULL, NULL, "qcom,ipq40xx-mdio"); mdio_node = of_find_compatible_node(NULL, NULL, "qcom,qca-mdio");
else } else
- mdio_node = of_find_compatible_node(NULL, NULL, "virtual,mdio-gpio"); - mdio_node = of_find_compatible_node(NULL, NULL, "virtual,mdio-gpio");
+ mdio_node = of_find_compatible_node(NULL, NULL, "qcom,ipq8064-mdio"); + mdio_node = of_find_compatible_node(NULL, NULL, "qcom,ipq8064-mdio");

View File

@ -0,0 +1,27 @@
From 8e3500df074625b3eb3a8ed4e8e0b1b116f13d0c Mon Sep 17 00:00:00 2001
From: Ansuel Smith <ansuelsmth@gmail.com>
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 <ansuelsmth@gmail.com>
---
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 <linux/switch.h>
#if defined(IN_SWCONFIG)
int
--
2.34.1

View File

@ -15,8 +15,6 @@ DEFAULT_PACKAGES += \
kmod-usb3 kmod-usb-dwc3 kmod-usb-dwc3-qcom \ kmod-usb3 kmod-usb-dwc3 kmod-usb-dwc3-qcom \
kmod-leds-gpio kmod-gpio-button-hotplug \ kmod-leds-gpio kmod-gpio-button-hotplug \
kmod-ath11k-ahb wpad-openssl uboot-envtools \ kmod-ath11k-ahb wpad-openssl uboot-envtools \
kmod-qca-nss-dp kmod-qca-nss-drv-64 nss-firmware-ipq6018 \ kmod-qca-nss-dp 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
$(eval $(call BuildTarget)) $(eval $(call BuildTarget))

View File

@ -31,25 +31,6 @@
status = "okay"; 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 { &tlmm {
i2c_1_pins: i2c-1-pins { i2c_1_pins: i2c-1-pins {
pins = "gpio42", "gpio43"; pins = "gpio42", "gpio43";

View File

@ -16,7 +16,7 @@ diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefi
index 70516508be56..27a7e3f98465 100644 index 70516508be56..27a7e3f98465 100644
--- a/arch/arm64/boot/dts/qcom/Makefile --- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/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-db820c.dtb
dtb-$(CONFIG_ARCH_QCOM) += apq8096-ifc6640.dtb dtb-$(CONFIG_ARCH_QCOM) += apq8096-ifc6640.dtb
dtb-$(CONFIG_ARCH_QCOM) += ipq6018-cp01-c1.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 dtb-$(CONFIG_ARCH_QCOM) += ipq8074-hk10-c2.dtb
-- --
2.37.1 2.37.1

View File

@ -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,