Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
fcbc2663c9
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.10 = .125
|
||||
LINUX_KERNEL_HASH-5.10.125 = b9356ea02532c063f0b19a82e67c2afbd7c5460184fce7011222cf8667568f60
|
||||
LINUX_VERSION-5.10 = .127
|
||||
LINUX_KERNEL_HASH-5.10.127 = 419233ee0b1ee1dc2be8abf1b241545d10dad19d95f237180d6ccdc0cd221580
|
||||
|
||||
@ -0,0 +1,205 @@
|
||||
From 4e32024cbb14230af3048e249e84f8c2b25ce45a Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Thu, 28 Oct 2021 15:03:16 +0100
|
||||
Subject: [PATCH] brcmfmac: Read alternative firmware names from DT
|
||||
|
||||
Add the ability to load the names of alternative firmwares from the
|
||||
Device Tree node. This permits separate firmwares for 43436s and 43438
|
||||
and allows downstream firmwares to coexist with upstream.
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/of.c | 36 ++++++++++++++
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/of.h | 7 +++
|
||||
.../broadcom/brcm80211/brcmfmac/sdio.c | 47 +++++++++++++++++--
|
||||
3 files changed, 87 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
|
||||
index 2f7bc3a70c65..c2d6b8a22858 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "debug.h"
|
||||
#include "core.h"
|
||||
#include "common.h"
|
||||
+#include "firmware.h"
|
||||
#include "of.h"
|
||||
|
||||
static int brcmf_of_get_country_codes(struct device *dev,
|
||||
@@ -118,3 +119,38 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
|
||||
sdio->oob_irq_nr = irq;
|
||||
sdio->oob_irq_flags = irqf;
|
||||
}
|
||||
+
|
||||
+struct brcmf_firmware_mapping *
|
||||
+brcmf_of_fwnames(struct device *dev, u32 *fwname_count)
|
||||
+{
|
||||
+ struct device_node *np = dev->of_node;
|
||||
+ struct brcmf_firmware_mapping *fwnames;
|
||||
+ struct device_node *map_np, *fw_np;
|
||||
+ int of_count;
|
||||
+ int count = 0;
|
||||
+
|
||||
+ map_np = of_get_child_by_name(np, "firmwares");
|
||||
+ of_count = of_get_child_count(map_np);
|
||||
+ if (!of_count)
|
||||
+ return NULL;
|
||||
+
|
||||
+ fwnames = devm_kcalloc(dev, of_count,
|
||||
+ sizeof(struct brcmf_firmware_mapping),
|
||||
+ GFP_KERNEL);
|
||||
+
|
||||
+ for_each_child_of_node(map_np, fw_np)
|
||||
+ {
|
||||
+ struct brcmf_firmware_mapping *cur = &fwnames[count];
|
||||
+
|
||||
+ if (of_property_read_u32(fw_np, "chipid", &cur->chipid) ||
|
||||
+ of_property_read_u32(fw_np, "revmask", &cur->revmask))
|
||||
+ continue;
|
||||
+ cur->fw_base = of_get_property(fw_np, "fw_base", NULL);
|
||||
+ if (cur->fw_base)
|
||||
+ count++;
|
||||
+ }
|
||||
+
|
||||
+ *fwname_count = count;
|
||||
+
|
||||
+ return count ? fwnames : NULL;
|
||||
+}
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h
|
||||
index 10bf52253337..5b39a39812d0 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.h
|
||||
@@ -5,9 +5,16 @@
|
||||
#ifdef CONFIG_OF
|
||||
void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
|
||||
struct brcmf_mp_device *settings);
|
||||
+struct brcmf_firmware_mapping *
|
||||
+brcmf_of_fwnames(struct device *dev, u32 *map_count);
|
||||
#else
|
||||
static void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
|
||||
struct brcmf_mp_device *settings)
|
||||
{
|
||||
}
|
||||
+static struct brcmf_firmware_mapping *
|
||||
+brcmf_of_fwnames(struct device *dev, u32 *map_count)
|
||||
+{
|
||||
+ return NULL;
|
||||
+}
|
||||
#endif /* CONFIG_OF */
|
||||
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
index 89de65d32ed5..88c08fee58f6 100644
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||
@@ -35,6 +35,7 @@
|
||||
#include "core.h"
|
||||
#include "common.h"
|
||||
#include "bcdc.h"
|
||||
+#include "of.h"
|
||||
|
||||
#define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500)
|
||||
#define CTL_DONE_TIMEOUT msecs_to_jiffies(2500)
|
||||
@@ -634,7 +635,7 @@ MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH "brcmfmac*-sdio.*.txt");
|
||||
/* per-board firmware binaries */
|
||||
MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH "brcmfmac*-sdio.*.bin");
|
||||
|
||||
-static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = {
|
||||
+static const struct brcmf_firmware_mapping sdio_fwnames[] = {
|
||||
BRCMF_FW_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x0000001F, 43241B0),
|
||||
BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x00000020, 43241B4),
|
||||
@@ -660,6 +661,9 @@ static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = {
|
||||
BRCMF_FW_ENTRY(CY_CC_43752_CHIP_ID, 0xFFFFFFFF, 43752)
|
||||
};
|
||||
|
||||
+static const struct brcmf_firmware_mapping *brcmf_sdio_fwnames = sdio_fwnames;
|
||||
+static u32 brcmf_sdio_fwnames_count = ARRAY_SIZE(sdio_fwnames);
|
||||
+
|
||||
#define TXCTL_CREDITS 2
|
||||
|
||||
static void pkt_align(struct sk_buff *p, int len, int align)
|
||||
@@ -4151,7 +4155,7 @@ int brcmf_sdio_get_fwname(struct device *dev, const char *ext, u8 *fw_name,
|
||||
}
|
||||
fwreq = brcmf_fw_alloc_request(bus_if->chip, bus_if->chiprev,
|
||||
brcmf_sdio_fwnames,
|
||||
- ARRAY_SIZE(brcmf_sdio_fwnames),
|
||||
+ brcmf_sdio_fwnames_count,
|
||||
fwnames, ARRAY_SIZE(fwnames));
|
||||
if (!fwreq)
|
||||
return -ENOMEM;
|
||||
@@ -4207,6 +4211,9 @@ static const struct brcmf_bus_ops brcmf_sdio_bus_ops = {
|
||||
#define BRCMF_SDIO_FW_CODE 0
|
||||
#define BRCMF_SDIO_FW_NVRAM 1
|
||||
|
||||
+static struct brcmf_fw_request *
|
||||
+brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus);
|
||||
+
|
||||
static void brcmf_sdio_firmware_callback(struct device *dev, int err,
|
||||
struct brcmf_fw_request *fwreq)
|
||||
{
|
||||
@@ -4222,6 +4229,22 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
|
||||
|
||||
brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err);
|
||||
|
||||
+ if (err && brcmf_sdio_fwnames != sdio_fwnames) {
|
||||
+ /* Try again with the standard firmware names */
|
||||
+ brcmf_sdio_fwnames = sdio_fwnames;
|
||||
+ brcmf_sdio_fwnames_count = ARRAY_SIZE(sdio_fwnames);
|
||||
+ kfree(fwreq);
|
||||
+ fwreq = brcmf_sdio_prepare_fw_request(bus);
|
||||
+ if (!fwreq) {
|
||||
+ err = -ENOMEM;
|
||||
+ goto fail;
|
||||
+ }
|
||||
+ err = brcmf_fw_get_firmwares(dev, fwreq,
|
||||
+ brcmf_sdio_firmware_callback);
|
||||
+ if (!err)
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (err)
|
||||
goto fail;
|
||||
|
||||
@@ -4430,7 +4453,7 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus)
|
||||
|
||||
fwreq = brcmf_fw_alloc_request(bus->ci->chip, bus->ci->chiprev,
|
||||
brcmf_sdio_fwnames,
|
||||
- ARRAY_SIZE(brcmf_sdio_fwnames),
|
||||
+ brcmf_sdio_fwnames_count,
|
||||
fwnames, ARRAY_SIZE(fwnames));
|
||||
if (!fwreq)
|
||||
return NULL;
|
||||
@@ -4448,6 +4471,9 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
|
||||
struct brcmf_sdio *bus;
|
||||
struct workqueue_struct *wq;
|
||||
struct brcmf_fw_request *fwreq;
|
||||
+ struct brcmf_firmware_mapping *of_fwnames, *fwnames = NULL;
|
||||
+ const int fwname_size = sizeof(struct brcmf_firmware_mapping);
|
||||
+ u32 of_fw_count;
|
||||
|
||||
brcmf_dbg(TRACE, "Enter\n");
|
||||
|
||||
@@ -4530,6 +4556,21 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
|
||||
|
||||
brcmf_dbg(INFO, "completed!!\n");
|
||||
|
||||
+ of_fwnames = brcmf_of_fwnames(sdiodev->dev, &of_fw_count);
|
||||
+ if (of_fwnames)
|
||||
+ fwnames = devm_kcalloc(sdiodev->dev,
|
||||
+ of_fw_count + brcmf_sdio_fwnames_count,
|
||||
+ fwname_size, GFP_KERNEL);
|
||||
+
|
||||
+ if (fwnames) {
|
||||
+ /* The array is scanned in order, so overrides come first */
|
||||
+ memcpy(fwnames, of_fwnames, of_fw_count * fwname_size);
|
||||
+ memcpy(fwnames + of_fw_count, sdio_fwnames,
|
||||
+ brcmf_sdio_fwnames_count * fwname_size);
|
||||
+ brcmf_sdio_fwnames = fwnames;
|
||||
+ brcmf_sdio_fwnames_count += of_fw_count;
|
||||
+ }
|
||||
+
|
||||
fwreq = brcmf_sdio_prepare_fw_request(bus);
|
||||
if (!fwreq) {
|
||||
ret = -ENOMEM;
|
||||
--
|
||||
2.30.2
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
From ef8098cd6cb8b5989afef2e8461fe6ba9570a854 Mon Sep 17 00:00:00 2001
|
||||
From: Josef Schlehofer <pepe.schlehofer@gmail.com>
|
||||
Date: Wed, 24 Nov 2021 12:47:40 +0100
|
||||
Subject: [PATCH] mwifiex: increase the global limit up to 4 SSID
|
||||
|
||||
Firmware for SDIO (88W8997), which is used in Turris MOX SDIO addon [1],
|
||||
allows up to 4 SSID. Unfortunately, driver (even in mainline kernel)
|
||||
has a global limit for all Marvell cards up to 3 SSID.
|
||||
|
||||
Pali Rohár tested this patch and verified that the SDIO Wi-Fi addon works
|
||||
with the 4 SSID. So, let's increase the global limit from 3 to 4.
|
||||
|
||||
Ideally, this patch should be done differently before sending
|
||||
it to Linux kernel. It means that limit definition should be moved to
|
||||
the card-specific structure.
|
||||
|
||||
[1] https://docs.turris.cz/hw/mox/addons/#wi-fi-sdio
|
||||
---
|
||||
drivers/net/wireless/marvell/mwifiex/decl.h | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/marvell/mwifiex/decl.h b/drivers/net/wireless/marvell/mwifiex/decl.h
|
||||
index cdc9972..f9bcbf5 100644
|
||||
--- a/drivers/net/wireless/marvell/mwifiex/decl.h
|
||||
+++ b/drivers/net/wireless/marvell/mwifiex/decl.h
|
||||
@@ -30,7 +30,7 @@
|
||||
#include <net/cfg80211.h>
|
||||
|
||||
#define MWIFIEX_BSS_COEX_COUNT 2
|
||||
-#define MWIFIEX_MAX_BSS_NUM (3)
|
||||
+#define MWIFIEX_MAX_BSS_NUM (4)
|
||||
|
||||
#define MWIFIEX_DMA_ALIGN_SZ 64
|
||||
#define MWIFIEX_RX_HEADROOM 64
|
||||
@@ -112,7 +112,7 @@
|
||||
#define MWIFIEX_RATE_INDEX_OFDM0 4
|
||||
|
||||
#define MWIFIEX_MAX_STA_NUM 3
|
||||
-#define MWIFIEX_MAX_UAP_NUM 3
|
||||
+#define MWIFIEX_MAX_UAP_NUM 4
|
||||
#define MWIFIEX_MAX_P2P_NUM 3
|
||||
|
||||
#define MWIFIEX_A_BAND_START_FREQ 5000
|
||||
--
|
||||
2.30.2
|
||||
|
||||
@ -0,0 +1,200 @@
|
||||
From f7252b1b5755150535af226e806594bbefd45e0f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
|
||||
Date: Sun, 26 Sep 2021 14:39:44 +0200
|
||||
Subject: [PATCH] mwifiex: Print stringified name of command in error log
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Failed hex command number in error log is hard to understand.
|
||||
So add also more human readable stringified command name into error log.
|
||||
|
||||
Signed-off-by: Pali Rohár <pali@kernel.org>
|
||||
---
|
||||
drivers/net/wireless/marvell/mwifiex/cmdevt.c | 96 +++++++++++++++++--
|
||||
drivers/net/wireless/marvell/mwifiex/main.h | 2 +
|
||||
.../wireless/marvell/mwifiex/sta_cmdresp.c | 5 +-
|
||||
.../net/wireless/marvell/mwifiex/uap_cmd.c | 3 +-
|
||||
4 files changed, 95 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/drivers/net/wireless/marvell/mwifiex/cmdevt.c b/drivers/net/wireless/marvell/mwifiex/cmdevt.c
|
||||
index 5a2788955f1c..1b05002330ff 100644
|
||||
--- a/drivers/net/wireless/marvell/mwifiex/cmdevt.c
|
||||
+++ b/drivers/net/wireless/marvell/mwifiex/cmdevt.c
|
||||
@@ -28,6 +28,85 @@
|
||||
|
||||
static void mwifiex_cancel_pending_ioctl(struct mwifiex_adapter *adapter);
|
||||
|
||||
+const char *
|
||||
+mwifiex_cmd_to_str(u16 command)
|
||||
+{
|
||||
+ switch (command) {
|
||||
+ case HostCmd_CMD_GET_HW_SPEC: return "GET_HW_SPEC";
|
||||
+ case HostCmd_CMD_802_11_SCAN: return "SCAN";
|
||||
+ case HostCmd_CMD_802_11_GET_LOG: return "GET_LOG";
|
||||
+ case HostCmd_CMD_MAC_MULTICAST_ADR: return "MAC_MULTICAST_ADR";
|
||||
+ case HostCmd_CMD_802_11_EEPROM_ACCESS: return "EEPROM_ACCESS";
|
||||
+ case HostCmd_CMD_802_11_ASSOCIATE: return "ASSOCIATE";
|
||||
+ case HostCmd_CMD_802_11_SNMP_MIB: return "SNMP_MIB";
|
||||
+ case HostCmd_CMD_MAC_REG_ACCESS: return "MAC_REG_ACCESS";
|
||||
+ case HostCmd_CMD_BBP_REG_ACCESS: return "BBP_REG_ACCESS";
|
||||
+ case HostCmd_CMD_RF_REG_ACCESS: return "RF_REG_ACCESS";
|
||||
+ case HostCmd_CMD_PMIC_REG_ACCESS: return "PMIC_REG_ACCESS";
|
||||
+ case HostCmd_CMD_RF_TX_PWR: return "RF_TX_PWR";
|
||||
+ case HostCmd_CMD_RF_ANTENNA: return "RF_ANTENNA";
|
||||
+ case HostCmd_CMD_802_11_DEAUTHENTICATE: return "DEAUTHENTICATE";
|
||||
+ case HostCmd_CMD_MAC_CONTROL: return "MAC_CONTROL";
|
||||
+ case HostCmd_CMD_802_11_AD_HOC_START: return "AD_HOC_START";
|
||||
+ case HostCmd_CMD_802_11_AD_HOC_JOIN: return "AD_HOC_JOIN";
|
||||
+ case HostCmd_CMD_802_11_AD_HOC_STOP: return "AD_HOC_STOP";
|
||||
+ case HostCmd_CMD_802_11_MAC_ADDRESS: return "MAC_ADDRESS";
|
||||
+ case HostCmd_CMD_802_11D_DOMAIN_INFO: return "DOMAIN_INFO";
|
||||
+ case HostCmd_CMD_802_11_KEY_MATERIAL: return "KEY_MATERIAL";
|
||||
+ case HostCmd_CMD_802_11_BG_SCAN_CONFIG: return "BG_SCAN_CONFIG";
|
||||
+ case HostCmd_CMD_802_11_BG_SCAN_QUERY: return "BG_SCAN_QUERY";
|
||||
+ case HostCmd_CMD_WMM_GET_STATUS: return "WMM_GET_STATUS";
|
||||
+ case HostCmd_CMD_802_11_SUBSCRIBE_EVENT: return "SUBSCRIBE_EVENT";
|
||||
+ case HostCmd_CMD_802_11_TX_RATE_QUERY: return "TX_RATE_QUERY";
|
||||
+ case HostCmd_CMD_802_11_IBSS_COALESCING_STATUS: return "IBSS_COALESCING_STATUS";
|
||||
+ case HostCmd_CMD_MEM_ACCESS: return "MEM_ACCESS";
|
||||
+ case HostCmd_CMD_CFG_DATA: return "CFG_DATA";
|
||||
+ case HostCmd_CMD_VERSION_EXT: return "VERSION_EXT";
|
||||
+ case HostCmd_CMD_MEF_CFG: return "MEF_CFG";
|
||||
+ case HostCmd_CMD_RSSI_INFO: return "RSSI_INFO";
|
||||
+ case HostCmd_CMD_FUNC_INIT: return "FUNC_INIT";
|
||||
+ case HostCmd_CMD_FUNC_SHUTDOWN: return "FUNC_SHUTDOWN";
|
||||
+ case HOST_CMD_APCMD_SYS_RESET: return "SYS_RESET";
|
||||
+ case HostCmd_CMD_UAP_SYS_CONFIG: return "UAP_SYS_CONFIG";
|
||||
+ case HostCmd_CMD_UAP_BSS_START: return "UAP_BSS_START";
|
||||
+ case HostCmd_CMD_UAP_BSS_STOP: return "UAP_BSS_STOP";
|
||||
+ case HOST_CMD_APCMD_STA_LIST: return "STA_LIST";
|
||||
+ case HostCmd_CMD_UAP_STA_DEAUTH: return "UAP_STA_DEAUTH";
|
||||
+ case HostCmd_CMD_11N_CFG: return "11N_CFG";
|
||||
+ case HostCmd_CMD_11N_ADDBA_REQ: return "ADDBA_REQ";
|
||||
+ case HostCmd_CMD_11N_ADDBA_RSP: return "ADDBA_RSP";
|
||||
+ case HostCmd_CMD_11N_DELBA: return "DELBA";
|
||||
+ case HostCmd_CMD_RECONFIGURE_TX_BUFF: return "RECONFIGURE_TX_BUFF";
|
||||
+ case HostCmd_CMD_CHAN_REPORT_REQUEST: return "CHAN_REPORT_REQUEST";
|
||||
+ case HostCmd_CMD_AMSDU_AGGR_CTRL: return "AMSDU_AGGR_CTRL";
|
||||
+ case HostCmd_CMD_TXPWR_CFG: return "TXPWR_CFG";
|
||||
+ case HostCmd_CMD_TX_RATE_CFG: return "TX_RATE_CFG";
|
||||
+ case HostCmd_CMD_ROBUST_COEX: return "ROBUST_COEX";
|
||||
+ case HostCmd_CMD_802_11_PS_MODE_ENH: return "PS_MODE_ENH";
|
||||
+ case HostCmd_CMD_802_11_HS_CFG_ENH: return "HS_CFG_ENH";
|
||||
+ case HostCmd_CMD_P2P_MODE_CFG: return "P2P_MODE_CFG";
|
||||
+ case HostCmd_CMD_CAU_REG_ACCESS: return "CAU_REG_ACCESS";
|
||||
+ case HostCmd_CMD_SET_BSS_MODE: return "SET_BSS_MODE";
|
||||
+ case HostCmd_CMD_PCIE_DESC_DETAILS: return "PCIE_DESC_DETAILS";
|
||||
+ case HostCmd_CMD_802_11_SCAN_EXT: return "SCAN_EXT";
|
||||
+ case HostCmd_CMD_COALESCE_CFG: return "COALESCE_CFG";
|
||||
+ case HostCmd_CMD_MGMT_FRAME_REG: return "MGMT_FRAME_REG";
|
||||
+ case HostCmd_CMD_REMAIN_ON_CHAN: return "REMAIN_ON_CHAN";
|
||||
+ case HostCmd_CMD_GTK_REKEY_OFFLOAD_CFG: return "GTK_REKEY_OFFLOAD_CFG";
|
||||
+ case HostCmd_CMD_11AC_CFG: return "11AC_CFG";
|
||||
+ case HostCmd_CMD_HS_WAKEUP_REASON: return "HS_WAKEUP_REASON";
|
||||
+ case HostCmd_CMD_TDLS_CONFIG: return "TDLS_CONFIG";
|
||||
+ case HostCmd_CMD_MC_POLICY: return "MC_POLICY";
|
||||
+ case HostCmd_CMD_TDLS_OPER: return "TDLS_OPER";
|
||||
+ case HostCmd_CMD_FW_DUMP_EVENT: return "FW_DUMP_EVENT";
|
||||
+ case HostCmd_CMD_SDIO_SP_RX_AGGR_CFG: return "SDIO_SP_RX_AGGR_CFG";
|
||||
+ case HostCmd_CMD_STA_CONFIGURE: return "STA_CONFIGURE";
|
||||
+ case HostCmd_CMD_CHAN_REGION_CFG: return "CHAN_REGION_CFG";
|
||||
+ case HostCmd_CMD_PACKET_AGGR_CTRL: return "PACKET_AGGR_CTRL";
|
||||
+ default: return "UNKNOWN";
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* This function initializes a command node.
|
||||
*
|
||||
@@ -205,8 +284,8 @@ static int mwifiex_dnld_cmd_to_fw(struct mwifiex_private *priv,
|
||||
cmd_code != HostCmd_CMD_FUNC_SHUTDOWN &&
|
||||
cmd_code != HostCmd_CMD_FUNC_INIT) {
|
||||
mwifiex_dbg(adapter, ERROR,
|
||||
- "DNLD_CMD: FW in reset state, ignore cmd %#x\n",
|
||||
- cmd_code);
|
||||
+ "DNLD_CMD: FW in reset state, ignore cmd %s (%#x)\n",
|
||||
+ mwifiex_cmd_to_str(cmd_code), cmd_code);
|
||||
mwifiex_recycle_cmd_node(adapter, cmd_node);
|
||||
queue_work(adapter->workqueue, &adapter->main_work);
|
||||
return -1;
|
||||
@@ -660,8 +739,8 @@ int mwifiex_send_cmd(struct mwifiex_private *priv, u16 cmd_no,
|
||||
/* Return error, since the command preparation failed */
|
||||
if (ret) {
|
||||
mwifiex_dbg(adapter, ERROR,
|
||||
- "PREP_CMD: cmd %#x preparation failed\n",
|
||||
- cmd_no);
|
||||
+ "PREP_CMD: cmd %s (%#x) preparation failed\n",
|
||||
+ mwifiex_cmd_to_str(cmd_no), cmd_no);
|
||||
mwifiex_insert_cmd_to_free_q(adapter, cmd_node);
|
||||
return -1;
|
||||
}
|
||||
@@ -900,8 +979,9 @@ int mwifiex_process_cmdresp(struct mwifiex_adapter *adapter)
|
||||
if (adapter->hw_status == MWIFIEX_HW_STATUS_INITIALIZING) {
|
||||
if (ret) {
|
||||
mwifiex_dbg(adapter, ERROR,
|
||||
- "%s: cmd %#x failed during\t"
|
||||
- "initialization\n", __func__, cmdresp_no);
|
||||
+ "%s: cmd %s (%#x) failed during\t"
|
||||
+ "initialization\n", __func__,
|
||||
+ mwifiex_cmd_to_str(cmdresp_no), cmdresp_no);
|
||||
mwifiex_init_fw_complete(adapter);
|
||||
//if (adapter->if_ops.card_reset)
|
||||
// adapter->if_ops.card_reset(adapter);
|
||||
@@ -1266,8 +1346,8 @@ mwifiex_process_sleep_confirm_resp(struct mwifiex_adapter *adapter,
|
||||
|
||||
if (command != HostCmd_CMD_802_11_PS_MODE_ENH) {
|
||||
mwifiex_dbg(adapter, ERROR,
|
||||
- "%s: rcvd unexpected resp for cmd %#x, result = %x\n",
|
||||
- __func__, command, result);
|
||||
+ "%s: rcvd unexpected resp for cmd %s (%#x), result = %x\n",
|
||||
+ __func__, mwifiex_cmd_to_str(command), command, result);
|
||||
return;
|
||||
}
|
||||
|
||||
diff --git a/drivers/net/wireless/marvell/mwifiex/main.h b/drivers/net/wireless/marvell/mwifiex/main.h
|
||||
index 5923c5c14c8d..0d30f61a9d3c 100644
|
||||
--- a/drivers/net/wireless/marvell/mwifiex/main.h
|
||||
+++ b/drivers/net/wireless/marvell/mwifiex/main.h
|
||||
@@ -1106,6 +1106,8 @@ void mwifiex_cancel_all_pending_cmd(struct mwifiex_adapter *adapter);
|
||||
void mwifiex_cancel_pending_scan_cmd(struct mwifiex_adapter *adapter);
|
||||
void mwifiex_cancel_scan(struct mwifiex_adapter *adapter);
|
||||
|
||||
+const char *mwifiex_cmd_to_str(u16 command);
|
||||
+
|
||||
void mwifiex_recycle_cmd_node(struct mwifiex_adapter *adapter,
|
||||
struct cmd_ctrl_node *cmd_node);
|
||||
|
||||
diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c b/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
|
||||
index 6b5d35d9e69f..ae6554f7b583 100644
|
||||
--- a/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
|
||||
+++ b/drivers/net/wireless/marvell/mwifiex/sta_cmdresp.c
|
||||
@@ -48,8 +48,9 @@ mwifiex_process_cmdresp_error(struct mwifiex_private *priv,
|
||||
struct host_cmd_ds_802_11_ps_mode_enh *pm;
|
||||
|
||||
mwifiex_dbg(adapter, ERROR,
|
||||
- "CMD_RESP: cmd %#x error, result=%#x\n",
|
||||
- resp->command, resp->result);
|
||||
+ "CMD_RESP: cmd %s (%#x) error, result=%#x\n",
|
||||
+ mwifiex_cmd_to_str(le16_to_cpu(resp->command)),
|
||||
+ le16_to_cpu(resp->command), le16_to_cpu(resp->result));
|
||||
|
||||
if (adapter->curr_cmd->wait_q_enabled)
|
||||
adapter->cmd_wait_q.status = -1;
|
||||
diff --git a/drivers/net/wireless/marvell/mwifiex/uap_cmd.c b/drivers/net/wireless/marvell/mwifiex/uap_cmd.c
|
||||
index 18e89777b784..29b8af55f522 100644
|
||||
--- a/drivers/net/wireless/marvell/mwifiex/uap_cmd.c
|
||||
+++ b/drivers/net/wireless/marvell/mwifiex/uap_cmd.c
|
||||
@@ -806,7 +806,8 @@ int mwifiex_uap_prepare_cmd(struct mwifiex_private *priv, u16 cmd_no,
|
||||
break;
|
||||
default:
|
||||
mwifiex_dbg(priv->adapter, ERROR,
|
||||
- "PREP_CMD: unknown cmd %#x\n", cmd_no);
|
||||
+ "PREP_CMD: unknown cmd (%s) %#x\n",
|
||||
+ mwifiex_cmd_to_str(cmd_no), cmd_no);
|
||||
return -1;
|
||||
}
|
||||
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@ -13,7 +13,7 @@ produce a noisy warning.
|
||||
|
||||
--- a/drivers/usb/host/xhci-pci.c
|
||||
+++ b/drivers/usb/host/xhci-pci.c
|
||||
@@ -283,6 +283,7 @@ static void xhci_pci_quirks(struct devic
|
||||
@@ -287,6 +287,7 @@ static void xhci_pci_quirks(struct devic
|
||||
pdev->device == 0x0015) {
|
||||
xhci->quirks |= XHCI_RESET_ON_RESUME;
|
||||
xhci->quirks |= XHCI_ZERO_64B_REGS;
|
||||
|
||||
140
target/linux/ath79/dts/qca9531_asus_rp-ac51.dts
Normal file
140
target/linux/ath79/dts/qca9531_asus_rp-ac51.dts
Normal file
@ -0,0 +1,140 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "qca953x.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
model = "ASUS RP-AC51";
|
||||
compatible = "asus,rp-ac51", "qca,qca9531";
|
||||
|
||||
aliases {
|
||||
led-boot = &led_wps;
|
||||
led-failsafe = &led_wps;
|
||||
led-running = &led_wps;
|
||||
led-upgrade = &led_wps;
|
||||
label-mac-device = ð0;
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
wps {
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
|
||||
reset {
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_power: power {
|
||||
label = "blue:power";
|
||||
gpios = <&gpio 4 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led_wps: wps {
|
||||
label = "red:wps";
|
||||
gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
lan {
|
||||
label = "blue:lan";
|
||||
gpios = <&gpio 1 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
wlan2g {
|
||||
label = "blue:wlan2g";
|
||||
gpios = <&gpio 16 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
wlan5g {
|
||||
label = "blue:wlan5g";
|
||||
gpios = <&gpio 2 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi {
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <50000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x000000 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@40000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x040000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
art: partition@50000 {
|
||||
label = "art";
|
||||
reg = <0x050000 0x10000>;
|
||||
read-only;
|
||||
|
||||
compatible = "nvmem-cells";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
macaddr_art_0: macaddr@0 {
|
||||
reg = <0x0 0x6>;
|
||||
};
|
||||
|
||||
macaddr_art_1002: macaddr@1002 {
|
||||
reg = <0x1002 0x6>;
|
||||
};
|
||||
};
|
||||
|
||||
partition@60000 {
|
||||
compatible = "denx,uimage";
|
||||
label = "firmware";
|
||||
reg = <0x060000 0xfa0000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
status = "okay";
|
||||
|
||||
phy-handle = <&swphy4>;
|
||||
|
||||
nvmem-cells = <&macaddr_art_0>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
ð1 {
|
||||
nvmem-cells = <&macaddr_art_1002>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
};
|
||||
|
||||
&wmac {
|
||||
status = "okay";
|
||||
|
||||
qca,no-eeprom;
|
||||
};
|
||||
156
target/linux/ath79/dts/qca9563_asus_pl-ac56.dts
Normal file
156
target/linux/ath79/dts/qca9563_asus_pl-ac56.dts
Normal file
@ -0,0 +1,156 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
#include "qca956x.dtsi"
|
||||
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
/ {
|
||||
model = "ASUS PL-AC56";
|
||||
compatible = "asus,pl-ac56", "qca,qca9563";
|
||||
|
||||
aliases {
|
||||
led-boot = &led_power;
|
||||
led-failsafe = &led_power;
|
||||
led-upgrade = &led_power;
|
||||
label-mac-device = ð0;
|
||||
};
|
||||
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
reset {
|
||||
linux,code = <BTN_0>;
|
||||
gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
|
||||
wps {
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
|
||||
debounce-interval = <60>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led_power: power {
|
||||
label = "red:power";
|
||||
gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
lan {
|
||||
label = "green:lan";
|
||||
gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
wlan2g {
|
||||
label = "green:wlan2g";
|
||||
gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
wlan5g {
|
||||
label = "green:wlan5g";
|
||||
gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pcie {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&spi {
|
||||
status = "okay";
|
||||
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <50000000>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0x000000 0x40000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@40000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x040000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
art: partition@50000 {
|
||||
label = "art";
|
||||
reg = <0x050000 0x10000>;
|
||||
read-only;
|
||||
|
||||
compatible = "nvmem-cells";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
macaddr_art_1002: macaddr@1002 {
|
||||
reg = <0x1002 0x6>;
|
||||
};
|
||||
};
|
||||
|
||||
partition@60000 {
|
||||
compatible = "denx,uimage";
|
||||
label = "firmware";
|
||||
reg = <0x060000 0xf20000>;
|
||||
};
|
||||
|
||||
partition@f80000 {
|
||||
label = "plc";
|
||||
reg = <0xf80000 0x80000>;
|
||||
read-only;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
status = "okay";
|
||||
|
||||
phy-mask = <0>;
|
||||
|
||||
phy0: ethernet-phy@0 {
|
||||
reg = <0>;
|
||||
phy-mode = "sgmii";
|
||||
qca,mib-poll-interval = <500>;
|
||||
|
||||
qca,ar8327-initvals = <
|
||||
0x04 0x80000080 /* AR8327_REG_PAD0_MODE */
|
||||
0x08 0x01000000 /* AR8327_REG_PAD5_MODE */
|
||||
0x0c 0x07500000 /* AR8327_REG_PAD6_MODE */
|
||||
0x10 0x602613a0 /* AR8327_REG_POWER_ON_STRAP */
|
||||
0x50 0xcc35cc35 /* AR8327_REG_LED_CTRL0 */
|
||||
0x54 0xca35ca35 /* AR8327_REG_LED_CTRL1 */
|
||||
0x58 0xc935c935 /* AR8327_REG_LED_CTRL2 */
|
||||
0x5c 0x03ffff00 /* AR8327_REG_LED_CTRL3 */
|
||||
0x7c 0x0000007e /* AR8327_REG_PORT_STATUS(0) */
|
||||
0x94 0x0000007e /* AR8327_REG_PORT_STATUS(6) */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
ð0 {
|
||||
status = "okay";
|
||||
|
||||
phy-mode = "sgmii";
|
||||
nvmem-cells = <&macaddr_art_1002>;
|
||||
nvmem-cell-names = "mac-address";
|
||||
phy-handle = <&phy0>;
|
||||
};
|
||||
|
||||
&wmac {
|
||||
status = "okay";
|
||||
|
||||
qca,no-eeprom;
|
||||
};
|
||||
@ -56,6 +56,16 @@ alfa-network,tube-2hq)
|
||||
ucidef_set_led_rssi "signal3" "SIGNAL3" "green:signal3" "wlan0" "50" "100"
|
||||
ucidef_set_led_rssi "signal4" "SIGNAL4" "green:signal4" "wlan0" "75" "100"
|
||||
;;
|
||||
asus,pl-ac56)
|
||||
ucidef_set_led_switch "lan" "LAN" "green:lan" "switch0" "0x3e"
|
||||
ucidef_set_led_netdev "wlan2g" "WLAN2G" "green:wlan2g" "wlan1" "link"
|
||||
ucidef_set_led_netdev "wlan5g" "WLAN5G" "green:wlan5g" "wlan0" "link"
|
||||
;;
|
||||
asus,rp-ac51)
|
||||
ucidef_set_led_netdev "lan" "LAN" "blue:lan" "eth0"
|
||||
ucidef_set_led_netdev "wlan2g" "WLAN2G" "blue:wlan2G" "wlan1" "link"
|
||||
ucidef_set_led_netdev "wlan5g" "WLAN5G" "blue:wlan5G" "wlan0" "link"
|
||||
;;
|
||||
asus,rp-ac66)
|
||||
ucidef_set_rssimon "wlan0" "200000" "1"
|
||||
ucidef_set_rssimon "wlan1" "200000" "1"
|
||||
|
||||
@ -19,6 +19,7 @@ ath79_setup_interfaces()
|
||||
araknis,an-700-ap-i-ac|\
|
||||
arduino,yun|\
|
||||
aruba,ap-105|\
|
||||
asus,rp-ac51|\
|
||||
asus,rp-ac66|\
|
||||
avm,fritz1750e|\
|
||||
avm,fritz300e|\
|
||||
@ -127,6 +128,11 @@ ath79_setup_interfaces()
|
||||
ubnt,unifi-ap-outdoor-plus)
|
||||
ucidef_set_interface_lan "eth0 eth1"
|
||||
;;
|
||||
asus,pl-ac56)
|
||||
# port 6 (internal) is the power-line port
|
||||
ucidef_add_switch "switch0" \
|
||||
"0@eth0" "1:lan:1" "2:lan:2" "3:lan:3" "6:lan:4"
|
||||
;;
|
||||
atheros,db120)
|
||||
ucidef_add_switch "switch0" \
|
||||
"0@eth0" "2:lan" "3:lan" "4:lan" "5:lan" "1:wan"
|
||||
|
||||
@ -24,6 +24,9 @@ adtran,bsap1840)
|
||||
ucidef_add_gpio_switch "wifi0_ext_c" "2.4GHz External Antenna C" "509" "1"
|
||||
ucidef_add_gpio_switch "wifi0_int_c" "2.4GHz Internal Antenna C" "510"
|
||||
;;
|
||||
asus,pl-ac56)
|
||||
ucidef_add_gpio_switch "plc_enable" "PLC enable" "14" "1"
|
||||
;;
|
||||
comfast,cf-e5|\
|
||||
telco,t1)
|
||||
ucidef_add_gpio_switch "lte_power" "LTE Power" "14" "1"
|
||||
|
||||
@ -12,6 +12,8 @@ case "$FIRMWARE" in
|
||||
8dev,lima)
|
||||
caldata_extract "art" 0x1000 0x800
|
||||
;;
|
||||
asus,pl-ac56|\
|
||||
asus,rp-ac51|\
|
||||
asus,rp-ac66)
|
||||
caldata_extract "art" 0x1000 0x440
|
||||
;;
|
||||
|
||||
@ -19,6 +19,7 @@ case "$FIRMWARE" in
|
||||
caldata_extract "art" 0x5000 0x844
|
||||
ath10k_patch_mac $(macaddr_add $(mtd_get_mac_binary art 0x0) 2)
|
||||
;;
|
||||
asus,pl-ac56|\
|
||||
asus,rp-ac66|\
|
||||
comfast,cf-wr650ac-v1|\
|
||||
comfast,cf-wr650ac-v2|\
|
||||
@ -174,6 +175,13 @@ case "$FIRMWARE" in
|
||||
;;
|
||||
"ath10k/pre-cal-pci-0000:00:00.0.bin")
|
||||
case $board in
|
||||
asus,rp-ac51|\
|
||||
yuncore,a782|\
|
||||
yuncore,xd4200)
|
||||
caldata_extract "art" 0x5000 0x2f20
|
||||
ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
|
||||
/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
|
||||
;;
|
||||
comfast,cf-e313ac)
|
||||
caldata_extract "art" 0x5000 0x2f20
|
||||
ath10k_patch_mac $(mtd_get_mac_binary art 0x6)
|
||||
@ -249,12 +257,6 @@ case "$FIRMWARE" in
|
||||
ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
|
||||
/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
|
||||
;;
|
||||
yuncore,a782|\
|
||||
yuncore,xd4200)
|
||||
caldata_extract "art" 0x5000 0x2f20
|
||||
ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
|
||||
/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
|
||||
@ -376,6 +376,30 @@ define Device/aruba_ap-105
|
||||
endef
|
||||
TARGET_DEVICES += aruba_ap-105
|
||||
|
||||
define Device/asus_pl-ac56
|
||||
SOC := qca9563
|
||||
DEVICE_VENDOR := ASUS
|
||||
DEVICE_MODEL := PL-AC56
|
||||
DEVICE_VARIANT := A1
|
||||
IMAGE_SIZE := 15488k
|
||||
IMAGES += factory.bin
|
||||
IMAGE/factory.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | \
|
||||
append-rootfs | pad-rootfs
|
||||
DEVICE_PACKAGES := kmod-ath10k-ct-smallbuffers ath10k-firmware-qca988x-ct
|
||||
endef
|
||||
TARGET_DEVICES += asus_pl-ac56
|
||||
|
||||
define Device/asus_rp-ac51
|
||||
SOC := qca9531
|
||||
DEVICE_VENDOR := ASUS
|
||||
DEVICE_MODEL := RP-AC51
|
||||
IMAGE_SIZE := 16000k
|
||||
IMAGES += factory.bin
|
||||
DEVICE_PACKAGES := kmod-ath10k-ct ath10k-firmware-qca9888-ct \
|
||||
-swconfig
|
||||
endef
|
||||
TARGET_DEVICES += asus_rp-ac51
|
||||
|
||||
define Device/asus_rp-ac66
|
||||
SOC := qca9563
|
||||
DEVICE_VENDOR := ASUS
|
||||
|
||||
@ -23,6 +23,7 @@ raspberrypi,model-b-rev2)
|
||||
ucidef_set_interface_lan "eth0"
|
||||
;;
|
||||
|
||||
raspberrypi,model-zero-2 |\
|
||||
raspberrypi,model-zero-w)
|
||||
ucidef_set_interface_lan "wlan0"
|
||||
;;
|
||||
|
||||
@ -20,6 +20,7 @@ set_state() {
|
||||
raspberrypi,3-compute-module |\
|
||||
raspberrypi,model-b |\
|
||||
raspberrypi,model-zero |\
|
||||
raspberrypi,model-zero-2 |\
|
||||
raspberrypi,model-zero-w)
|
||||
status_led="led0"
|
||||
;;
|
||||
|
||||
@ -96,13 +96,15 @@ define Device/rpi-2
|
||||
bcm2709-rpi-2-b bcm2710-rpi-2-b \
|
||||
bcm2710-rpi-3-b bcm2710-rpi-3-b-plus \
|
||||
bcm2711-rpi-4-b bcm2711-rpi-400 \
|
||||
bcm2710-rpi-cm3 bcm2711-rpi-cm4
|
||||
bcm2710-rpi-cm3 bcm2711-rpi-cm4 \
|
||||
bcm2710-rpi-zero-2
|
||||
SUPPORTED_DEVICES := \
|
||||
rpi-2-b rpi-3-b rpi-3-b-plus rpi-cm \
|
||||
rpi-2-b rpi-3-b rpi-3-b-plus rpi-cm rpi-zero-2 \
|
||||
raspberrypi,2-model-b raspberrypi,2-model-b-rev2 \
|
||||
raspberrypi,3-model-b raspberrypi,3-model-b-plus \
|
||||
raspberrypi,3-compute-module raspberrypi,compute-module-3 \
|
||||
raspberrypi,400 raspberrypi,4-compute-module raspberrypi,4-model-b
|
||||
raspberrypi,400 raspberrypi,4-compute-module raspberrypi,4-model-b \
|
||||
raspberrypi,model-zero-2
|
||||
DEVICE_PACKAGES := \
|
||||
cypress-firmware-43430-sdio \
|
||||
cypress-nvram-43430-sdio-rpi-3b \
|
||||
@ -126,12 +128,14 @@ define Device/rpi-3
|
||||
DEVICE_DTS := \
|
||||
broadcom/bcm2710-rpi-2-b \
|
||||
broadcom/bcm2710-rpi-3-b broadcom/bcm2710-rpi-3-b-plus \
|
||||
broadcom/bcm2710-rpi-cm3
|
||||
broadcom/bcm2710-rpi-cm3 \
|
||||
broadcom/bcm2710-rpi-zero-2
|
||||
SUPPORTED_DEVICES := \
|
||||
rpi-3-b rpi-3-b-plus \
|
||||
rpi-3-b rpi-3-b-plus rpi-zero-2 \
|
||||
raspberrypi,2-model-b-rev2 \
|
||||
raspberrypi,3-model-b raspberrypi,3-model-b-plus \
|
||||
raspberrypi,3-compute-module raspberrypi,compute-module-3
|
||||
raspberrypi,3-compute-module raspberrypi,compute-module-3 \
|
||||
raspberrypi,model-zero-2
|
||||
DEVICE_PACKAGES := \
|
||||
cypress-firmware-43430-sdio \
|
||||
cypress-nvram-43430-sdio-rpi-3b \
|
||||
|
||||
@ -70,7 +70,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
nft_trans_table_update(trans) = true;
|
||||
list_add_tail(&trans->list, &ctx->net->nft.commit_list);
|
||||
return 0;
|
||||
@@ -7910,11 +7914,10 @@ static int nf_tables_commit(struct net *
|
||||
@@ -7916,11 +7920,10 @@ static int nf_tables_commit(struct net *
|
||||
switch (trans->msg_type) {
|
||||
case NFT_MSG_NEWTABLE:
|
||||
if (nft_trans_table_update(trans)) {
|
||||
@ -86,7 +86,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||
} else {
|
||||
nft_clear(net, trans->ctx.table);
|
||||
}
|
||||
@@ -8127,11 +8130,9 @@ static int __nf_tables_abort(struct net
|
||||
@@ -8133,11 +8136,9 @@ static int __nf_tables_abort(struct net
|
||||
switch (trans->msg_type) {
|
||||
case NFT_MSG_NEWTABLE:
|
||||
if (nft_trans_table_update(trans)) {
|
||||
|
||||
@ -20,7 +20,7 @@ Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
|
||||
|
||||
#define MDIO_PHYXS_VEND_IF_STATUS 0xe812
|
||||
#define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK GENMASK(7, 3)
|
||||
@@ -330,6 +332,49 @@ static int aqr107_read_rate(struct phy_d
|
||||
@@ -343,6 +345,49 @@ static int aqr107_read_rate(struct phy_d
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -70,7 +70,7 @@ Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
|
||||
static int aqr107_read_status(struct phy_device *phydev)
|
||||
{
|
||||
int val, ret;
|
||||
@@ -460,7 +505,7 @@ static void aqr107_chip_info(struct phy_
|
||||
@@ -473,7 +518,7 @@ static void aqr107_chip_info(struct phy_
|
||||
build_id = FIELD_GET(VEND1_GLOBAL_RSVD_STAT1_FW_BUILD_ID, val);
|
||||
prov_id = FIELD_GET(VEND1_GLOBAL_RSVD_STAT1_PROV_ID, val);
|
||||
|
||||
@ -79,7 +79,7 @@ Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
|
||||
fw_major, fw_minor, build_id, prov_id);
|
||||
}
|
||||
|
||||
@@ -632,6 +677,24 @@ static struct phy_driver aqr_driver[] =
|
||||
@@ -645,6 +690,24 @@ static struct phy_driver aqr_driver[] =
|
||||
.link_change_notify = aqr107_link_change_notify,
|
||||
},
|
||||
{
|
||||
@ -104,7 +104,7 @@ Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
|
||||
PHY_ID_MATCH_MODEL(PHY_ID_AQCS109),
|
||||
.name = "Aquantia AQCS109",
|
||||
.probe = aqr107_probe,
|
||||
@@ -657,6 +720,24 @@ static struct phy_driver aqr_driver[] =
|
||||
@@ -670,6 +733,24 @@ static struct phy_driver aqr_driver[] =
|
||||
.ack_interrupt = aqr_ack_interrupt,
|
||||
.read_status = aqr_read_status,
|
||||
},
|
||||
@ -129,7 +129,7 @@ Signed-off-by: Birger Koblitz <git@birger-koblitz.de>
|
||||
};
|
||||
|
||||
module_phy_driver(aqr_driver);
|
||||
@@ -667,8 +748,10 @@ static struct mdio_device_id __maybe_unu
|
||||
@@ -680,8 +761,10 @@ static struct mdio_device_id __maybe_unu
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR105) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR106) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
|
||||
|
||||
@ -27,7 +27,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
|
||||
#define PHY_ID_AQR813 0x31c31cb2
|
||||
|
||||
#define MDIO_PHYXS_VEND_IF_STATUS 0xe812
|
||||
@@ -123,6 +125,29 @@
|
||||
@@ -125,6 +127,29 @@
|
||||
#define VEND1_GLOBAL_INT_VEND_MASK_GLOBAL2 BIT(1)
|
||||
#define VEND1_GLOBAL_INT_VEND_MASK_GLOBAL3 BIT(0)
|
||||
|
||||
@ -57,7 +57,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
|
||||
struct aqr107_hw_stat {
|
||||
const char *name;
|
||||
int reg;
|
||||
@@ -243,6 +268,51 @@ static int aqr_config_aneg(struct phy_de
|
||||
@@ -256,6 +281,51 @@ static int aqr_config_aneg(struct phy_de
|
||||
return genphy_c45_check_and_restart_aneg(phydev, changed);
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
|
||||
static int aqr_config_intr(struct phy_device *phydev)
|
||||
{
|
||||
bool en = phydev->interrupts == PHY_INTERRUPT_ENABLED;
|
||||
@@ -738,6 +808,30 @@ static struct phy_driver aqr_driver[] =
|
||||
@@ -751,6 +821,30 @@ static struct phy_driver aqr_driver[] =
|
||||
.get_stats = aqr107_get_stats,
|
||||
.link_change_notify = aqr107_link_change_notify,
|
||||
},
|
||||
@ -140,7 +140,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
|
||||
};
|
||||
|
||||
module_phy_driver(aqr_driver);
|
||||
@@ -748,9 +842,11 @@ static struct mdio_device_id __maybe_unu
|
||||
@@ -761,9 +855,11 @@ static struct mdio_device_id __maybe_unu
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR105) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR106) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
|
||||
|
||||
@ -14,7 +14,7 @@ Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
|
||||
|
||||
--- a/drivers/net/phy/aquantia_main.c
|
||||
+++ b/drivers/net/phy/aquantia_main.c
|
||||
@@ -301,10 +301,16 @@ static int aqr_config_aneg_set_prot(stru
|
||||
@@ -314,10 +314,16 @@ static int aqr_config_aneg_set_prot(stru
|
||||
phy_write_mmd(phydev, MDIO_MMD_VEND1, AQUANTIA_VND1_GSTART_RATE,
|
||||
aquantia_syscfg[if_type].start_rate);
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ Add a new entry for AQR113 PHY_ID
|
||||
#define PHY_ID_AQR113C 0x31c31c12
|
||||
#define PHY_ID_AQCS109 0x03a1b5c2
|
||||
#define PHY_ID_AQR405 0x03a1b4b0
|
||||
@@ -827,6 +828,14 @@ static struct phy_driver aqr_driver[] =
|
||||
@@ -840,6 +841,14 @@ static struct phy_driver aqr_driver[] =
|
||||
.get_stats = aqr107_get_stats,
|
||||
},
|
||||
{
|
||||
@ -33,7 +33,7 @@ Add a new entry for AQR113 PHY_ID
|
||||
PHY_ID_MATCH_MODEL(PHY_ID_AQR412),
|
||||
.name = "Aquantia AQR412",
|
||||
.probe = aqr107_probe,
|
||||
@@ -849,6 +858,7 @@ static struct mdio_device_id __maybe_unu
|
||||
@@ -862,6 +871,7 @@ static struct mdio_device_id __maybe_unu
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR106) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
|
||||
|
||||
@ -21,7 +21,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
#define PHY_ID_AQR113 0x31c31c40
|
||||
#define PHY_ID_AQR113C 0x31c31c12
|
||||
#define PHY_ID_AQCS109 0x03a1b5c2
|
||||
@@ -828,6 +830,30 @@ static struct phy_driver aqr_driver[] =
|
||||
@@ -841,6 +843,30 @@ static struct phy_driver aqr_driver[] =
|
||||
.get_stats = aqr107_get_stats,
|
||||
},
|
||||
{
|
||||
@ -52,7 +52,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
PHY_ID_MATCH_MODEL(PHY_ID_AQR113),
|
||||
.name = "Aquantia AQR113",
|
||||
.config_aneg = aqr_config_aneg,
|
||||
@@ -858,6 +884,8 @@ static struct mdio_device_id __maybe_unu
|
||||
@@ -871,6 +897,8 @@ static struct mdio_device_id __maybe_unu
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR106) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
|
||||
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR112) },
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
|
||||
#define QUECTEL_VENDOR_ID 0x2c7c
|
||||
/* These Quectel products use Quectel's vendor ID */
|
||||
@@ -1131,6 +1133,11 @@ static const struct usb_device_id option
|
||||
@@ -1133,6 +1135,11 @@ static const struct usb_device_id option
|
||||
{ USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EG95, 0xff, 0, 0) },
|
||||
{ USB_DEVICE(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_BG96),
|
||||
.driver_info = RSVD(4) },
|
||||
|
||||
@ -23,6 +23,7 @@ CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_PM=y
|
||||
CONFIG_BLK_SCSI_REQUEST=y
|
||||
CONFIG_BOOKE=y
|
||||
CONFIG_BOOKE_WDT=y
|
||||
CONFIG_CLKDEV_LOOKUP=y
|
||||
CONFIG_CLK_QORIQ=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
@ -380,6 +381,7 @@ CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
|
||||
CONFIG_XPS=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
|
||||
@ -23,6 +23,7 @@ CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_BLK_MQ_PCI=y
|
||||
CONFIG_BLK_PM=y
|
||||
CONFIG_BOOKE=y
|
||||
CONFIG_BOOKE_WDT=y
|
||||
CONFIG_CLK_QORIQ=y
|
||||
CONFIG_CLONE_BACKWARDS=y
|
||||
CONFIG_CLZ_TAB=y
|
||||
@ -397,6 +398,7 @@ CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
# CONFIG_VT_HW_CONSOLE_BINDING is not set
|
||||
CONFIG_WATCHDOG_CORE=y
|
||||
# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
|
||||
CONFIG_XPS=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
|
||||
Loading…
Reference in New Issue
Block a user