Merge branch 'openwrt:master' into master
This commit is contained in:
commit
792c32f4f2
27 changed files with 126 additions and 447 deletions
|
@ -1,2 +1,2 @@
|
||||||
LINUX_VERSION-5.15 = .106
|
LINUX_VERSION-5.15 = .107
|
||||||
LINUX_KERNEL_HASH-5.15.106 = 84e6934f828033570966e2a56fe8b72dc6e1409be296c66f4bf3c8ca6e3c8fe4
|
LINUX_KERNEL_HASH-5.15.107 = 19370e769045681f52cceedb14ecda97e89b1b058133a0c8ad45d35ffbc5afa8
|
||||||
|
|
|
@ -1446,8 +1446,7 @@ define KernelPackage/qrtr
|
||||||
DEPENDS:=@!LINUX_5_10
|
DEPENDS:=@!LINUX_5_10
|
||||||
KCONFIG:=CONFIG_QRTR
|
KCONFIG:=CONFIG_QRTR
|
||||||
FILES:= \
|
FILES:= \
|
||||||
$(LINUX_DIR)/net/qrtr/qrtr.ko \
|
$(LINUX_DIR)/net/qrtr/qrtr.ko
|
||||||
$(LINUX_DIR)/net/qrtr/ns.ko
|
|
||||||
AUTOLOAD:=$(call AutoProbe,qrtr)
|
AUTOLOAD:=$(call AutoProbe,qrtr)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
|
@ -8,16 +8,16 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=mwlwifi
|
PKG_NAME:=mwlwifi
|
||||||
PKG_RELEASE=3
|
PKG_RELEASE=1
|
||||||
|
|
||||||
PKG_LICENSE:=ISC
|
PKG_LICENSE:=ISC
|
||||||
PKG_LICENSE_FILES:=
|
PKG_LICENSE_FILES:=
|
||||||
|
|
||||||
PKG_SOURCE_URL:=https://github.com/kaloz/mwlwifi
|
PKG_SOURCE_URL:=https://github.com/kaloz/mwlwifi
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_DATE:=2020-02-06
|
PKG_SOURCE_DATE:=2023-03-11
|
||||||
PKG_SOURCE_VERSION:=a2fd00bb74c35820dfe233d762690c0433a87ef5
|
PKG_SOURCE_VERSION:=c916ac13376d1b0801f3f787277fa47ce6b694eb
|
||||||
PKG_MIRROR_HASH:=0eda0e774a87e58e611d6436350e1cf2be3de50fddde334909a07a15b0c9862b
|
PKG_MIRROR_HASH:=b95001b60fe5c28f08be5a52b65276d99877be57e567ad7afab95860f6aff57d
|
||||||
|
|
||||||
PKG_MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
|
PKG_MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
|
||||||
PKG_BUILD_PARALLEL:=1
|
PKG_BUILD_PARALLEL:=1
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
From 182391a3c96ff6ad79bbba0758338a16a66abbd8 Mon Sep 17 00:00:00 2001
|
|
||||||
From: DENG Qingfang <dengqf6@mail2.sysu.edu.cn>
|
|
||||||
Date: Wed, 12 Feb 2020 14:18:58 +0800
|
|
||||||
Subject: [PATCH] Fix driver loading with backports 5.3+
|
|
||||||
|
|
||||||
Commit 747796b2f126 did not solve the issue that it crashes when an older kernel
|
|
||||||
with a newer backport tries loading it, because it only detects kernel version.
|
|
||||||
|
|
||||||
As net/cfg80211.h in 5.3+ defines VENDOR_CMD_RAW_DATA, use it as a condition.
|
|
||||||
|
|
||||||
Signed-off-by: DENG Qingfang <dqfext@gmail.com>
|
|
||||||
---
|
|
||||||
vendor_cmd.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/vendor_cmd.c
|
|
||||||
+++ b/vendor_cmd.c
|
|
||||||
@@ -92,7 +92,7 @@ static const struct wiphy_vendor_command
|
|
||||||
.subcmd = MWL_VENDOR_CMD_SET_BF_TYPE},
|
|
||||||
.flags = WIPHY_VENDOR_CMD_NEED_NETDEV,
|
|
||||||
.doit = mwl_vendor_cmd_set_bf_type,
|
|
||||||
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0))
|
|
||||||
+#ifdef VENDOR_CMD_RAW_DATA
|
|
||||||
.policy = mwl_vendor_attr_policy,
|
|
||||||
#endif
|
|
||||||
},
|
|
||||||
@@ -101,7 +101,7 @@ static const struct wiphy_vendor_command
|
|
||||||
.subcmd = MWL_VENDOR_CMD_GET_BF_TYPE},
|
|
||||||
.flags = WIPHY_VENDOR_CMD_NEED_NETDEV,
|
|
||||||
.doit = mwl_vendor_cmd_get_bf_type,
|
|
||||||
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,3,0))
|
|
||||||
+#ifdef VENDOR_CMD_RAW_DATA
|
|
||||||
.policy = mwl_vendor_attr_policy,
|
|
||||||
#endif
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
From 392f8e9d798acff3079e753dd881e272f6150d74 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
Date: Wed, 30 Mar 2022 19:32:38 +0200
|
|
||||||
Subject: [PATCH] mwlwifi: remove MODULE_SUPPORTED_DEVICE
|
|
||||||
|
|
||||||
Kernel 5.12 finally removed all MODULE_SUPPORTED_DEVICE references and
|
|
||||||
support for it as it was never actually implemented and was safe to
|
|
||||||
drop it completely.
|
|
||||||
|
|
||||||
So, do the same in order to compile in 5.12 and newer.
|
|
||||||
|
|
||||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
---
|
|
||||||
hif/pcie/pcie.c | 2 --
|
|
||||||
1 file changed, 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/hif/pcie/pcie.c
|
|
||||||
+++ b/hif/pcie/pcie.c
|
|
||||||
@@ -31,7 +31,6 @@
|
|
||||||
#include "hif/pcie/rx_ndp.h"
|
|
||||||
|
|
||||||
#define PCIE_DRV_DESC "Marvell Mac80211 Wireless PCIE Network Driver"
|
|
||||||
-#define PCIE_DEV_NAME "Marvell 802.11ac PCIE Adapter"
|
|
||||||
|
|
||||||
#define MAX_WAIT_FW_COMPLETE_ITERATIONS 10000
|
|
||||||
#define CHECK_BA_TRAFFIC_TIME 300 /* msec */
|
|
||||||
@@ -1641,5 +1640,4 @@ MODULE_DESCRIPTION(PCIE_DRV_DESC);
|
|
||||||
MODULE_VERSION(PCIE_DRV_VERSION);
|
|
||||||
MODULE_AUTHOR("Marvell Semiconductor, Inc.");
|
|
||||||
MODULE_LICENSE("GPL v2");
|
|
||||||
-MODULE_SUPPORTED_DEVICE(PCIE_DEV_NAME);
|
|
||||||
MODULE_DEVICE_TABLE(pci, pcie_id_tbl);
|
|
|
@ -1,39 +0,0 @@
|
||||||
From 16e51cb83f9fa1717383c9d67f5531df7348347c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
Date: Wed, 30 Mar 2022 19:51:56 +0200
|
|
||||||
Subject: [PATCH] mwlwifi: replace get/set_fs() calls
|
|
||||||
|
|
||||||
Since kernel 5.9 the get/set_fs() call implementation have started to get
|
|
||||||
dropped from individual architectures, ARM64 one got dropped in 5.11.
|
|
||||||
|
|
||||||
Replace the get/set_fs() calls with force_uaccess_begin/end() to allow
|
|
||||||
compiling on newer kernels.
|
|
||||||
There is no need to add kernel version checks as the replacement functions
|
|
||||||
are available since kernel 5.9.
|
|
||||||
|
|
||||||
Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
|
||||||
---
|
|
||||||
hif/pcie/pcie.c | 5 ++---
|
|
||||||
1 file changed, 2 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
--- a/hif/pcie/pcie.c
|
|
||||||
+++ b/hif/pcie/pcie.c
|
|
||||||
@@ -1293,8 +1293,7 @@ static void pcie_bf_mimo_ctrl_decode(str
|
|
||||||
char *buf = &str_buf[0];
|
|
||||||
mm_segment_t oldfs;
|
|
||||||
|
|
||||||
- oldfs = get_fs();
|
|
||||||
- set_fs(KERNEL_DS);
|
|
||||||
+ oldfs = force_uaccess_begin();
|
|
||||||
|
|
||||||
buf += sprintf(buf, "\nMAC: %pM\n", bf_mimo_ctrl->rec_mac);
|
|
||||||
buf += sprintf(buf, "SU_0_MU_1: %d\n", bf_mimo_ctrl->type);
|
|
||||||
@@ -1314,7 +1313,7 @@ static void pcie_bf_mimo_ctrl_decode(str
|
|
||||||
filename, (unsigned int)fp_data);
|
|
||||||
}
|
|
||||||
|
|
||||||
- set_fs(oldfs);
|
|
||||||
+ force_uaccess_end(oldfs);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void pcie_process_account(struct ieee80211_hw *hw)
|
|
|
@ -19,7 +19,7 @@ Signed-off-by: Robert Marko <robert.marko@sartura.hr>
|
||||||
|
|
||||||
--- a/hif/pcie/pcie.c
|
--- a/hif/pcie/pcie.c
|
||||||
+++ b/hif/pcie/pcie.c
|
+++ b/hif/pcie/pcie.c
|
||||||
@@ -570,7 +570,8 @@ static struct device_node *pcie_get_devi
|
@@ -573,7 +573,8 @@ static struct device_node *pcie_get_devi
|
||||||
struct device_node *dev_node;
|
struct device_node *dev_node;
|
||||||
|
|
||||||
dev_node = pci_bus_to_OF_node(pcie_priv->pdev->bus);
|
dev_node = pci_bus_to_OF_node(pcie_priv->pdev->bus);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
--- a/core.c
|
--- a/core.c
|
||||||
+++ b/core.c
|
+++ b/core.c
|
||||||
@@ -692,7 +692,7 @@ static void mwl_chnl_switch_event(struct
|
@@ -706,7 +706,7 @@ static void mwl_chnl_switch_event(struct
|
||||||
vif = container_of((void *)mwl_vif, struct ieee80211_vif,
|
vif = container_of((void *)mwl_vif, struct ieee80211_vif,
|
||||||
drv_priv);
|
drv_priv);
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
||||||
spin_unlock_bh(&priv->vif_lock);
|
spin_unlock_bh(&priv->vif_lock);
|
||||||
--- a/debugfs.c
|
--- a/debugfs.c
|
||||||
+++ b/debugfs.c
|
+++ b/debugfs.c
|
||||||
@@ -462,9 +462,9 @@ static ssize_t mwl_debugfs_vif_read(stru
|
@@ -455,9 +455,9 @@ static ssize_t mwl_debugfs_vif_read(stru
|
||||||
switch (vif->type) {
|
switch (vif->type) {
|
||||||
case NL80211_IFTYPE_AP:
|
case NL80211_IFTYPE_AP:
|
||||||
len += scnprintf(p + len, size - len, "type: ap\n");
|
len += scnprintf(p + len, size - len, "type: ap\n");
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
len += scnprintf(p + len, size - len,
|
len += scnprintf(p + len, size - len,
|
||||||
"ssid: %s\n", ssid);
|
"ssid: %s\n", ssid);
|
||||||
len += scnprintf(p + len, size - len,
|
len += scnprintf(p + len, size - len,
|
||||||
@@ -486,8 +486,8 @@ static ssize_t mwl_debugfs_vif_read(stru
|
@@ -479,8 +479,8 @@ static ssize_t mwl_debugfs_vif_read(stru
|
||||||
"type: unknown\n");
|
"type: unknown\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
len += scnprintf(p + len, size - len,
|
len += scnprintf(p + len, size - len,
|
||||||
"channel: %d: width: %d\n",
|
"channel: %d: width: %d\n",
|
||||||
chan_def->chan->hw_value,
|
chan_def->chan->hw_value,
|
||||||
@@ -573,28 +573,28 @@ static ssize_t mwl_debugfs_sta_read(stru
|
@@ -564,28 +564,28 @@ static ssize_t mwl_debugfs_sta_read(stru
|
||||||
"amsdu cap: 0x%02x\n",
|
"amsdu cap: 0x%02x\n",
|
||||||
sta_info->amsdu_ctrl.cap);
|
sta_info->amsdu_ctrl.cap);
|
||||||
}
|
}
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
if (priv->chip_type == MWL8997)
|
if (priv->chip_type == MWL8997)
|
||||||
ether_addr_copy(pcmd->start_cmd.bssid, mwl_vif->bssid);
|
ether_addr_copy(pcmd->start_cmd.bssid, mwl_vif->bssid);
|
||||||
pcmd->start_cmd.bss_type = 1;
|
pcmd->start_cmd.bss_type = 1;
|
||||||
@@ -2085,7 +2086,7 @@ int mwl_fwcmd_set_beacon(struct ieee8021
|
@@ -2091,7 +2092,7 @@ int mwl_fwcmd_set_beacon(struct ieee8021
|
||||||
if (mwl_fwcmd_set_wsc_ie(hw, b_inf->ie_wsc_len, b_inf->ie_wsc_ptr))
|
if (mwl_fwcmd_set_wsc_ie(hw, b_inf->ie_wsc_len, b_inf->ie_wsc_ptr))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
if (b_inf->cap_info & WLAN_CAPABILITY_SPECTRUM_MGMT)
|
if (b_inf->cap_info & WLAN_CAPABILITY_SPECTRUM_MGMT)
|
||||||
@@ -2147,38 +2148,38 @@ int mwl_fwcmd_set_new_stn_add(struct iee
|
@@ -2153,38 +2154,38 @@ int mwl_fwcmd_set_new_stn_add(struct iee
|
||||||
ether_addr_copy(pcmd->mac_addr, sta->addr);
|
ether_addr_copy(pcmd->mac_addr, sta->addr);
|
||||||
|
|
||||||
if (hw->conf.chandef.chan->band == NL80211_BAND_2GHZ)
|
if (hw->conf.chandef.chan->band == NL80211_BAND_2GHZ)
|
||||||
|
@ -161,7 +161,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
pcmd->is_qos_sta = sta->wme;
|
pcmd->is_qos_sta = sta->wme;
|
||||||
@@ -2234,38 +2235,38 @@ int mwl_fwcmd_set_new_stn_add_sc4(struct
|
@@ -2240,38 +2241,38 @@ int mwl_fwcmd_set_new_stn_add_sc4(struct
|
||||||
ether_addr_copy(pcmd->mac_addr, sta->addr);
|
ether_addr_copy(pcmd->mac_addr, sta->addr);
|
||||||
|
|
||||||
if (hw->conf.chandef.chan->band == NL80211_BAND_2GHZ)
|
if (hw->conf.chandef.chan->band == NL80211_BAND_2GHZ)
|
||||||
|
@ -214,7 +214,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
pcmd->is_qos_sta = sta->wme;
|
pcmd->is_qos_sta = sta->wme;
|
||||||
@@ -2782,9 +2783,9 @@ int mwl_fwcmd_create_ba(struct ieee80211
|
@@ -2788,9 +2789,9 @@ int mwl_fwcmd_create_ba(struct ieee80211
|
||||||
pcmd->ba_info.create_params.flags = cpu_to_le32(ba_flags);
|
pcmd->ba_info.create_params.flags = cpu_to_le32(ba_flags);
|
||||||
pcmd->ba_info.create_params.queue_id = stream->idx;
|
pcmd->ba_info.create_params.queue_id = stream->idx;
|
||||||
pcmd->ba_info.create_params.param_info =
|
pcmd->ba_info.create_params.param_info =
|
||||||
|
@ -226,7 +226,7 @@
|
||||||
IEEE80211_HT_AMPDU_PARM_DENSITY);
|
IEEE80211_HT_AMPDU_PARM_DENSITY);
|
||||||
if (direction == BA_FLAG_DIRECTION_UP) {
|
if (direction == BA_FLAG_DIRECTION_UP) {
|
||||||
pcmd->ba_info.create_params.reset_seq_no = 0;
|
pcmd->ba_info.create_params.reset_seq_no = 0;
|
||||||
@@ -2794,9 +2795,9 @@ int mwl_fwcmd_create_ba(struct ieee80211
|
@@ -2800,9 +2801,9 @@ int mwl_fwcmd_create_ba(struct ieee80211
|
||||||
pcmd->ba_info.create_params.current_seq = cpu_to_le16(0);
|
pcmd->ba_info.create_params.current_seq = cpu_to_le16(0);
|
||||||
}
|
}
|
||||||
if (priv->chip_type == MWL8964 &&
|
if (priv->chip_type == MWL8964 &&
|
||||||
|
@ -288,7 +288,7 @@
|
||||||
{
|
{
|
||||||
switch (vif->type) {
|
switch (vif->type) {
|
||||||
case NL80211_IFTYPE_AP:
|
case NL80211_IFTYPE_AP:
|
||||||
@@ -583,10 +583,10 @@ static int mwl_mac80211_sta_add(struct i
|
@@ -584,10 +584,10 @@ static int mwl_mac80211_sta_add(struct i
|
||||||
if (vif->type == NL80211_IFTYPE_MESH_POINT)
|
if (vif->type == NL80211_IFTYPE_MESH_POINT)
|
||||||
sta_info->is_mesh_node = true;
|
sta_info->is_mesh_node = true;
|
||||||
|
|
||||||
|
@ -301,7 +301,7 @@
|
||||||
sta_info->amsdu_ctrl.cap = MWL_AMSDU_SIZE_8K;
|
sta_info->amsdu_ctrl.cap = MWL_AMSDU_SIZE_8K;
|
||||||
else
|
else
|
||||||
sta_info->amsdu_ctrl.cap = MWL_AMSDU_SIZE_4K;
|
sta_info->amsdu_ctrl.cap = MWL_AMSDU_SIZE_4K;
|
||||||
@@ -668,7 +668,7 @@ static int mwl_mac80211_sta_remove(struc
|
@@ -669,7 +669,7 @@ static int mwl_mac80211_sta_remove(struc
|
||||||
|
|
||||||
static int mwl_mac80211_conf_tx(struct ieee80211_hw *hw,
|
static int mwl_mac80211_conf_tx(struct ieee80211_hw *hw,
|
||||||
struct ieee80211_vif *vif,
|
struct ieee80211_vif *vif,
|
||||||
|
@ -310,15 +310,7 @@
|
||||||
const struct ieee80211_tx_queue_params *params)
|
const struct ieee80211_tx_queue_params *params)
|
||||||
{
|
{
|
||||||
struct mwl_priv *priv = hw->priv;
|
struct mwl_priv *priv = hw->priv;
|
||||||
@@ -768,6 +768,7 @@ static int mwl_mac80211_ampdu_action(str
|
@@ -928,4 +928,5 @@ const struct ieee80211_ops mwl_mac80211_
|
||||||
spin_lock_bh(&priv->stream_lock);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
+ break;
|
|
||||||
case IEEE80211_AMPDU_RX_STOP:
|
|
||||||
if (priv->chip_type == MWL8964) {
|
|
||||||
struct mwl_ampdu_stream tmp;
|
|
||||||
@@ -930,4 +931,5 @@ const struct ieee80211_ops mwl_mac80211_
|
|
||||||
.pre_channel_switch = mwl_mac80211_chnl_switch,
|
.pre_channel_switch = mwl_mac80211_chnl_switch,
|
||||||
.sw_scan_start = mwl_mac80211_sw_scan_start,
|
.sw_scan_start = mwl_mac80211_sw_scan_start,
|
||||||
.sw_scan_complete = mwl_mac80211_sw_scan_complete,
|
.sw_scan_complete = mwl_mac80211_sw_scan_complete,
|
||||||
|
@ -370,7 +362,7 @@
|
||||||
case TX_RATE_FORMAT_LEGACY:
|
case TX_RATE_FORMAT_LEGACY:
|
||||||
--- a/hif/pcie/tx.c
|
--- a/hif/pcie/tx.c
|
||||||
+++ b/hif/pcie/tx.c
|
+++ b/hif/pcie/tx.c
|
||||||
@@ -157,7 +157,7 @@ static int pcie_txbd_ring_create(struct
|
@@ -153,7 +153,7 @@ static int pcie_txbd_ring_create(struct
|
||||||
wiphy_info(priv->hw->wiphy,
|
wiphy_info(priv->hw->wiphy,
|
||||||
"TX ring: - base: %p, pbase: 0x%x, len: %d\n",
|
"TX ring: - base: %p, pbase: 0x%x, len: %d\n",
|
||||||
pcie_priv->txbd_ring_vbase,
|
pcie_priv->txbd_ring_vbase,
|
||||||
|
@ -379,7 +371,7 @@
|
||||||
pcie_priv->txbd_ring_size);
|
pcie_priv->txbd_ring_size);
|
||||||
|
|
||||||
for (num = 0; num < PCIE_MAX_TXRX_BD; num++) {
|
for (num = 0; num < PCIE_MAX_TXRX_BD; num++) {
|
||||||
@@ -1153,7 +1153,7 @@ void pcie_tx_xmit(struct ieee80211_hw *h
|
@@ -1091,7 +1091,7 @@ void pcie_tx_xmit(struct ieee80211_hw *h
|
||||||
index = SYSADPT_TX_WMM_QUEUES - index - 1;
|
index = SYSADPT_TX_WMM_QUEUES - index - 1;
|
||||||
txpriority = index;
|
txpriority = index;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||||
|
|
||||||
--- a/drivers/usb/host/xhci.c
|
--- a/drivers/usb/host/xhci.c
|
||||||
+++ b/drivers/usb/host/xhci.c
|
+++ b/drivers/usb/host/xhci.c
|
||||||
@@ -1618,6 +1618,109 @@ command_cleanup:
|
@@ -1622,6 +1622,109 @@ command_cleanup:
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -125,7 +125,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||||
* non-error returns are a promise to giveback() the urb later
|
* non-error returns are a promise to giveback() the urb later
|
||||||
* we drop ownership so next owner (or urb unlink) can get it
|
* we drop ownership so next owner (or urb unlink) can get it
|
||||||
*/
|
*/
|
||||||
@@ -5457,6 +5560,7 @@ static const struct hc_driver xhci_hc_dr
|
@@ -5461,6 +5564,7 @@ static const struct hc_driver xhci_hc_dr
|
||||||
.endpoint_reset = xhci_endpoint_reset,
|
.endpoint_reset = xhci_endpoint_reset,
|
||||||
.check_bandwidth = xhci_check_bandwidth,
|
.check_bandwidth = xhci_check_bandwidth,
|
||||||
.reset_bandwidth = xhci_reset_bandwidth,
|
.reset_bandwidth = xhci_reset_bandwidth,
|
||||||
|
|
|
@ -226,7 +226,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||||
}
|
}
|
||||||
--- a/drivers/usb/host/xhci.c
|
--- a/drivers/usb/host/xhci.c
|
||||||
+++ b/drivers/usb/host/xhci.c
|
+++ b/drivers/usb/host/xhci.c
|
||||||
@@ -876,8 +876,8 @@ static void xhci_clear_command_ring(stru
|
@@ -880,8 +880,8 @@ static void xhci_clear_command_ring(stru
|
||||||
seg = ring->deq_seg;
|
seg = ring->deq_seg;
|
||||||
do {
|
do {
|
||||||
memset(seg->trbs, 0,
|
memset(seg->trbs, 0,
|
||||||
|
@ -237,7 +237,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
|
||||||
cpu_to_le32(~TRB_CYCLE);
|
cpu_to_le32(~TRB_CYCLE);
|
||||||
seg = seg->next;
|
seg = seg->next;
|
||||||
} while (seg != ring->deq_seg);
|
} while (seg != ring->deq_seg);
|
||||||
@@ -888,7 +888,7 @@ static void xhci_clear_command_ring(stru
|
@@ -892,7 +892,7 @@ static void xhci_clear_command_ring(stru
|
||||||
ring->enq_seg = ring->deq_seg;
|
ring->enq_seg = ring->deq_seg;
|
||||||
ring->enqueue = ring->dequeue;
|
ring->enqueue = ring->dequeue;
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ it on BCM4708 family.
|
||||||
/* called during probe() after chip reset completes */
|
/* called during probe() after chip reset completes */
|
||||||
--- a/drivers/usb/host/xhci.c
|
--- a/drivers/usb/host/xhci.c
|
||||||
+++ b/drivers/usb/host/xhci.c
|
+++ b/drivers/usb/host/xhci.c
|
||||||
@@ -157,6 +157,49 @@ int xhci_start(struct xhci_hcd *xhci)
|
@@ -158,6 +158,49 @@ int xhci_start(struct xhci_hcd *xhci)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ it on BCM4708 family.
|
||||||
/*
|
/*
|
||||||
* Reset a halted HC.
|
* Reset a halted HC.
|
||||||
*
|
*
|
||||||
@@ -607,10 +650,20 @@ static int xhci_init(struct usb_hcd *hcd
|
@@ -611,10 +654,20 @@ static int xhci_init(struct usb_hcd *hcd
|
||||||
|
|
||||||
static int xhci_run_finished(struct xhci_hcd *xhci)
|
static int xhci_run_finished(struct xhci_hcd *xhci)
|
||||||
{
|
{
|
||||||
|
@ -114,7 +114,7 @@ it on BCM4708 family.
|
||||||
xhci->shared_hcd->state = HC_STATE_RUNNING;
|
xhci->shared_hcd->state = HC_STATE_RUNNING;
|
||||||
xhci->cmd_ring_state = CMD_RING_STATE_RUNNING;
|
xhci->cmd_ring_state = CMD_RING_STATE_RUNNING;
|
||||||
|
|
||||||
@@ -620,6 +673,10 @@ static int xhci_run_finished(struct xhci
|
@@ -624,6 +677,10 @@ static int xhci_run_finished(struct xhci
|
||||||
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
|
||||||
"Finished xhci_run for USB3 roothub");
|
"Finished xhci_run for USB3 roothub");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
[ -e /lib/firmware/$FIRMWARE ] && exit 0
|
||||||
|
|
||||||
|
. /lib/functions/caldata.sh
|
||||||
|
|
||||||
|
caldata_extract_swap() {
|
||||||
|
local part=$1
|
||||||
|
local offset=$2
|
||||||
|
local count=$3
|
||||||
|
local mtd
|
||||||
|
|
||||||
|
mtd=$(find_mtd_chardev $part)
|
||||||
|
[ -n "$mtd" ] || caldata_die "no mtd device found for partition $part"
|
||||||
|
|
||||||
|
offset=$(($offset / 2))
|
||||||
|
count=$(($count / 2))
|
||||||
|
|
||||||
|
dd if=$mtd of=/lib/firmware/$FIRMWARE bs=2 skip=$offset count=$count conv=swab 2>/dev/null || \
|
||||||
|
caldata_die "failed to extract calibration data from $mtd"
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$FIRMWARE" in
|
||||||
|
"ath9k-eeprom-pci-0000:00:01.0.bin")
|
||||||
|
case "$(board_name)" in
|
||||||
|
huawei,hg556a-b)
|
||||||
|
caldata_extract_swap "cal_data" 0x1e000 0xeb8
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
caldata_die "board $board is not supported yet"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
|
@ -119,20 +119,14 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
ath9k-fixup {
|
ath9k-leds {
|
||||||
compatible = "brcm,ath9k-fixup";
|
compatible = "gpio-leds";
|
||||||
reg = <0x30000000 0x8000000>;
|
|
||||||
|
|
||||||
pci-dev = <1>;
|
wlan {
|
||||||
|
label = "red:wlan";
|
||||||
nvmem-cells = <&macaddr_cfe_6a0>;
|
gpios = <&ath9k 2 GPIO_ACTIVE_HIGH>;
|
||||||
nvmem-cell-names = "mac-address";
|
linux,default-trigger = "phy0tpt";
|
||||||
mac-address-increment = <1>;
|
};
|
||||||
|
|
||||||
ath,eeprom = <&cal_data 0x1e000>;
|
|
||||||
ath,endian-check;
|
|
||||||
ath,led-pin = <2>;
|
|
||||||
ath,led-active-high;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -164,6 +158,20 @@
|
||||||
|
|
||||||
&pci {
|
&pci {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
ath9k: wifi@1,0 {
|
||||||
|
compatible = "pci168c,0029";
|
||||||
|
reg = <0x0800 0 0 0 0>;
|
||||||
|
|
||||||
|
qca,no-eeprom;
|
||||||
|
|
||||||
|
nvmem-cells = <&macaddr_cfe_6a0>;
|
||||||
|
nvmem-cell-names = "mac-address";
|
||||||
|
mac-address-increment = <1>;
|
||||||
|
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
gpio-controller;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&pflash {
|
&pflash {
|
||||||
|
@ -207,6 +215,16 @@
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cal_data {
|
||||||
|
compatible = "nvmem-cells";
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <1>;
|
||||||
|
|
||||||
|
cal_data_1e000: cal@1e000 {
|
||||||
|
reg = <0x1e000 0xeb8>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
&cfe {
|
&cfe {
|
||||||
compatible = "nvmem-cells";
|
compatible = "nvmem-cells";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
|
|
@ -283,16 +283,14 @@
|
||||||
|
|
||||||
pci: pci@fffe1000 {
|
pci: pci@fffe1000 {
|
||||||
compatible = "brcm,bcm6348-pci";
|
compatible = "brcm,bcm6348-pci";
|
||||||
reg = <0xfffe1000 0x200>,
|
reg = <0xfffe1000 0x200>;
|
||||||
<0x08000000 0x10000>;
|
|
||||||
reg-names = "pci",
|
|
||||||
"pci-io";
|
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
bus-range = <0x00 0x01>;
|
bus-range = <0x00 0x01>;
|
||||||
ranges = <0x2000000 0 0x30000000 0x30000000 0 0x8000000>;
|
ranges = <0x2000000 0 0x30000000 0x30000000 0 0x8000000>,
|
||||||
|
<0x1000000 0 0x08000000 0x08000000 0 0x0010000>;
|
||||||
linux,pci-probe-only = <1>;
|
linux,pci-probe-only = <1>;
|
||||||
|
|
||||||
interrupt-parent = <&periph_intc>;
|
interrupt-parent = <&periph_intc>;
|
||||||
|
|
|
@ -412,16 +412,14 @@
|
||||||
|
|
||||||
pci: pci@10001000 {
|
pci: pci@10001000 {
|
||||||
compatible = "brcm,bcm6348-pci";
|
compatible = "brcm,bcm6348-pci";
|
||||||
reg = <0x10001000 0x200>,
|
reg = <0x10001000 0x200>;
|
||||||
<0x08000000 0x10000>;
|
|
||||||
reg-names = "pci",
|
|
||||||
"pci-io";
|
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
|
|
||||||
device_type = "pci";
|
device_type = "pci";
|
||||||
bus-range = <0x00 0x01>;
|
bus-range = <0x00 0x01>;
|
||||||
ranges = <0x2000000 0 0x30000000 0x30000000 0 0x8000000>;
|
ranges = <0x2000000 0 0x30000000 0x30000000 0 0x8000000>,
|
||||||
|
<0x1000000 0 0x08000000 0x08000000 0 0x0010000>;
|
||||||
linux,pci-probe-only = <1>;
|
linux,pci-probe-only = <1>;
|
||||||
|
|
||||||
interrupt-parent = <&periph_intc>;
|
interrupt-parent = <&periph_intc>;
|
||||||
|
|
|
@ -1,242 +0,0 @@
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
/*
|
|
||||||
* ATH9K Fixup Driver
|
|
||||||
*
|
|
||||||
* Copyright (C) 2020 Álvaro Fernández Rojas <noltari@gmail.com>
|
|
||||||
* Copyright (C) 2014 Jonas Gorski <jonas.gorski@gmail.com>
|
|
||||||
* Copyright (C) 2008 Maxime Bizon <mbizon@freebox.fr>
|
|
||||||
* Copyright (C) 2008 Florian Fainelli <f.fainelli@gmail.com>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <linux/delay.h>
|
|
||||||
#include <linux/etherdevice.h>
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/kernel.h>
|
|
||||||
#include <linux/mtd/mtd.h>
|
|
||||||
#include <linux/of_net.h>
|
|
||||||
#include <linux/of_platform.h>
|
|
||||||
#include <linux/pci.h>
|
|
||||||
#include <linux/types.h>
|
|
||||||
#include <linux/ath9k_platform.h>
|
|
||||||
|
|
||||||
#define ATH9K_MAX_FIXUPS 2
|
|
||||||
|
|
||||||
#define ATH9K_DEF_LED_PIN -1
|
|
||||||
#define ATH9K_DEF_PCI_DEV 255
|
|
||||||
|
|
||||||
struct ath9k_fixup {
|
|
||||||
struct device *dev;
|
|
||||||
struct resource *mem_res;
|
|
||||||
u32 pci_dev;
|
|
||||||
u8 mac[ETH_ALEN];
|
|
||||||
struct ath9k_platform_data pdata;
|
|
||||||
};
|
|
||||||
|
|
||||||
static int ath9k_num_fixups;
|
|
||||||
static struct ath9k_fixup *ath9k_fixups[ATH9K_MAX_FIXUPS];
|
|
||||||
|
|
||||||
static void ath9k_pci_fixup(struct pci_dev *dev)
|
|
||||||
{
|
|
||||||
void __iomem *mem;
|
|
||||||
struct ath9k_fixup *priv = NULL;
|
|
||||||
struct ath9k_platform_data *pdata = NULL;
|
|
||||||
struct pci_dev *bridge = pci_upstream_bridge(dev);
|
|
||||||
u16 *cal_data = NULL;
|
|
||||||
u16 cmd;
|
|
||||||
u32 bar0;
|
|
||||||
u32 val;
|
|
||||||
unsigned i;
|
|
||||||
int rc;
|
|
||||||
|
|
||||||
for (i = 0; i < ath9k_num_fixups; i++) {
|
|
||||||
if (ath9k_fixups[i]->pci_dev != PCI_SLOT(dev->devfn))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
priv = ath9k_fixups[i];
|
|
||||||
cal_data = priv->pdata.eeprom_data;
|
|
||||||
pdata = &priv->pdata;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cal_data == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (*cal_data != 0xa55a) {
|
|
||||||
pr_err("pci %s: invalid calibration data\n", pci_name(dev));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pr_info("pci %s: fixup device configuration\n", pci_name(dev));
|
|
||||||
|
|
||||||
val = priv->mem_res->start;
|
|
||||||
mem = ioremap(priv->mem_res->start, resource_size(priv->mem_res));
|
|
||||||
if (!mem) {
|
|
||||||
pr_err("pci %s: ioremap error\n", pci_name(dev));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bridge) {
|
|
||||||
rc = pci_enable_device(bridge);
|
|
||||||
if (rc < 0)
|
|
||||||
pr_err("pci %s: bridge enable error\n", pci_name(dev));
|
|
||||||
}
|
|
||||||
|
|
||||||
pci_read_config_dword(dev, PCI_BASE_ADDRESS_0, &bar0);
|
|
||||||
pci_read_config_dword(dev, PCI_BASE_ADDRESS_0, &bar0);
|
|
||||||
pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, val);
|
|
||||||
|
|
||||||
pci_read_config_word(dev, PCI_COMMAND, &cmd);
|
|
||||||
cmd |= PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY;
|
|
||||||
pci_write_config_word(dev, PCI_COMMAND, cmd);
|
|
||||||
|
|
||||||
/* set offset to first reg address */
|
|
||||||
cal_data += 3;
|
|
||||||
while(*cal_data != 0xffff) {
|
|
||||||
u32 reg;
|
|
||||||
|
|
||||||
reg = *cal_data++;
|
|
||||||
val = *cal_data++;
|
|
||||||
val |= (*cal_data++) << 16;
|
|
||||||
|
|
||||||
writel(val, mem + reg);
|
|
||||||
udelay(100);
|
|
||||||
}
|
|
||||||
|
|
||||||
pci_read_config_dword(dev, PCI_VENDOR_ID, &val);
|
|
||||||
dev->vendor = val & 0xffff;
|
|
||||||
dev->device = (val >> 16) & 0xffff;
|
|
||||||
|
|
||||||
pci_read_config_dword(dev, PCI_CLASS_REVISION, &val);
|
|
||||||
dev->revision = val & 0xff;
|
|
||||||
dev->class = val >> 8; /* upper 3 bytes */
|
|
||||||
|
|
||||||
pci_read_config_word(dev, PCI_COMMAND, &cmd);
|
|
||||||
cmd &= ~(PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY);
|
|
||||||
pci_write_config_word(dev, PCI_COMMAND, cmd);
|
|
||||||
|
|
||||||
pci_write_config_dword(dev, PCI_BASE_ADDRESS_0, bar0);
|
|
||||||
|
|
||||||
if (bridge)
|
|
||||||
pci_disable_device(bridge);
|
|
||||||
|
|
||||||
iounmap(mem);
|
|
||||||
|
|
||||||
dev->dev.platform_data = pdata;
|
|
||||||
}
|
|
||||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATHEROS, PCI_ANY_ID, ath9k_pci_fixup);
|
|
||||||
|
|
||||||
static int ath9k_mtd_eeprom(struct ath9k_fixup *priv)
|
|
||||||
{
|
|
||||||
struct device *dev = priv->dev;
|
|
||||||
struct device_node *node = dev->of_node;
|
|
||||||
struct device_node *mtd_np = NULL;
|
|
||||||
struct mtd_info *the_mtd;
|
|
||||||
phandle phandle;
|
|
||||||
size_t eeprom_readlen;
|
|
||||||
const char *part;
|
|
||||||
const __be32 *list;
|
|
||||||
int ret, i;
|
|
||||||
|
|
||||||
list = of_get_property(node, "ath,eeprom", &i);
|
|
||||||
if (!list || (i != (2 * sizeof(*list))))
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
phandle = be32_to_cpup(list++);
|
|
||||||
if (phandle)
|
|
||||||
mtd_np = of_find_node_by_phandle(phandle);
|
|
||||||
if (!mtd_np)
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
part = of_get_property(mtd_np, "label", NULL);
|
|
||||||
if (!part)
|
|
||||||
part = mtd_np->name;
|
|
||||||
|
|
||||||
the_mtd = get_mtd_device_nm(part);
|
|
||||||
if (IS_ERR(the_mtd))
|
|
||||||
return -ENODEV;
|
|
||||||
|
|
||||||
ret = mtd_read(the_mtd, be32_to_cpup(list),
|
|
||||||
ATH9K_PLAT_EEP_MAX_WORDS * sizeof(u16),
|
|
||||||
&eeprom_readlen, (void *) priv->pdata.eeprom_data);
|
|
||||||
put_mtd_device(the_mtd);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int ath9k_fixup_probe(struct platform_device *pdev)
|
|
||||||
{
|
|
||||||
struct device *dev = &pdev->dev;
|
|
||||||
struct device_node *node = dev->of_node;
|
|
||||||
struct ath9k_fixup *priv;
|
|
||||||
struct resource *res;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (ath9k_num_fixups >= ATH9K_MAX_FIXUPS)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
||||||
if (!res)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
|
|
||||||
if (!priv)
|
|
||||||
return -ENOMEM;
|
|
||||||
|
|
||||||
priv->dev = dev;
|
|
||||||
priv->mem_res = res;
|
|
||||||
|
|
||||||
ret = of_property_read_u32(node, "pci-dev", &priv->pci_dev);
|
|
||||||
if (ret)
|
|
||||||
priv->pci_dev = ATH9K_DEF_PCI_DEV;
|
|
||||||
|
|
||||||
ret = ath9k_mtd_eeprom(priv);
|
|
||||||
if (ret)
|
|
||||||
return ret;
|
|
||||||
|
|
||||||
priv->pdata.endian_check = of_property_read_bool(node,
|
|
||||||
"ath,endian-check");
|
|
||||||
ret = of_property_read_s32(node, "ath,led-pin", &priv->pdata.led_pin);
|
|
||||||
if (ret)
|
|
||||||
priv->pdata.led_pin = ATH9K_DEF_LED_PIN;
|
|
||||||
priv->pdata.led_active_high = of_property_read_bool(node,
|
|
||||||
"ath,led-active-high");
|
|
||||||
|
|
||||||
of_get_mac_address(node, priv->mac);
|
|
||||||
if (is_valid_ether_addr(priv->mac)) {
|
|
||||||
dev_info(dev, "mtd mac %pM\n", priv->mac);
|
|
||||||
} else {
|
|
||||||
random_ether_addr(priv->mac);
|
|
||||||
dev_info(dev, "random mac %pM\n", priv->mac);
|
|
||||||
}
|
|
||||||
|
|
||||||
priv->pdata.macaddr = priv->mac;
|
|
||||||
|
|
||||||
ath9k_fixups[ath9k_num_fixups] = priv;
|
|
||||||
ath9k_num_fixups++;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct of_device_id ath9k_fixup_of_match[] = {
|
|
||||||
{ .compatible = "brcm,ath9k-fixup" },
|
|
||||||
{ /* sentinel */ }
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_driver ath9k_fixup_driver = {
|
|
||||||
.probe = ath9k_fixup_probe,
|
|
||||||
.driver = {
|
|
||||||
.name = "ath9k-fixup",
|
|
||||||
.of_match_table = ath9k_fixup_of_match,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
int __init ath9k_fixup_init(void)
|
|
||||||
{
|
|
||||||
int ret = platform_driver_register(&ath9k_fixup_driver);
|
|
||||||
if (ret)
|
|
||||||
pr_err("ath9k_fixup: Error registering platform driver!\n");
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
late_initcall(ath9k_fixup_init);
|
|
|
@ -335,10 +335,7 @@ static struct pci_ops bcm6348_pci_ops = {
|
||||||
.write = bcm6348_pci_write,
|
.write = bcm6348_pci_write,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource bcm6348_pci_io_resource = {
|
static struct resource bcm6348_pci_io_resource;
|
||||||
.name = "BCM6348 PCI IO space",
|
|
||||||
.flags = IORESOURCE_IO,
|
|
||||||
};
|
|
||||||
static struct resource bcm6348_pci_mem_resource;
|
static struct resource bcm6348_pci_mem_resource;
|
||||||
static struct resource bcm6348_pci_busn_resource;
|
static struct resource bcm6348_pci_busn_resource;
|
||||||
|
|
||||||
|
@ -732,26 +729,13 @@ static int bcm6348_pci_probe(struct platform_device *pdev)
|
||||||
|
|
||||||
of_pci_check_probe_only();
|
of_pci_check_probe_only();
|
||||||
|
|
||||||
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pci");
|
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
priv->pci = devm_ioremap_resource(dev, res);
|
priv->pci = devm_ioremap_resource(dev, res);
|
||||||
if (IS_ERR(priv->pci))
|
if (IS_ERR(priv->pci))
|
||||||
return PTR_ERR(priv->pci);
|
return PTR_ERR(priv->pci);
|
||||||
|
|
||||||
priv->pcmcia = priv->pci + PCMCIA_OFFSET;
|
priv->pcmcia = priv->pci + PCMCIA_OFFSET;
|
||||||
|
|
||||||
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "pci-io");
|
|
||||||
if (!res)
|
|
||||||
return -EINVAL;
|
|
||||||
#ifdef CONFIG_CARDBUS
|
|
||||||
bcm6348_pci_io_resource.start = res->start;
|
|
||||||
bcm6348_pci_io_resource.end = res->end - (resource_size(res) >> 1);
|
|
||||||
bcm6348_cb_io_resource.start = res->start + (resource_size(res) >> 1);
|
|
||||||
bcm6348_cb_io_resource.end = res->end;
|
|
||||||
#else
|
|
||||||
bcm6348_pci_io_resource.start = res->start;
|
|
||||||
bcm6348_pci_io_resource.end = res->end;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
priv->irq = platform_get_irq(pdev, 0);
|
priv->irq = platform_get_irq(pdev, 0);
|
||||||
if (!priv->irq)
|
if (!priv->irq)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
@ -773,6 +757,12 @@ static int bcm6348_pci_probe(struct platform_device *pdev)
|
||||||
of_pci_parse_bus_range(np, &bcm6348_pci_busn_resource);
|
of_pci_parse_bus_range(np, &bcm6348_pci_busn_resource);
|
||||||
pci_add_resource(&resources, &bcm6348_pci_busn_resource);
|
pci_add_resource(&resources, &bcm6348_pci_busn_resource);
|
||||||
|
|
||||||
|
#ifdef CONFIG_CARDBUS
|
||||||
|
bcm6348_cb_io_resource.start = bcm6348_pci_io_resource.start + (resource_size(&bcm6348_pci_io_resource) >> 1);
|
||||||
|
bcm6348_cb_io_resource.end = bcm6348_pci_io_resource.end;
|
||||||
|
bcm6348_pci_io_resource.end = bcm6348_pci_io_resource.end - (resource_size(&bcm6348_pci_io_resource) >> 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Configuration accesses are done through IO space, remap 4
|
* Configuration accesses are done through IO space, remap 4
|
||||||
* first bytes to access it from CPU.
|
* first bytes to access it from CPU.
|
||||||
|
|
|
@ -324,7 +324,7 @@ define Device/sercomm-nand
|
||||||
endef
|
endef
|
||||||
|
|
||||||
### Package helpers ###
|
### Package helpers ###
|
||||||
ATH9K_PACKAGES := kmod-ath9k wpad-basic-mbedtls
|
ATH9K_PACKAGES := kmod-ath9k kmod-owl-loader wpad-basic-mbedtls
|
||||||
B43_PACKAGES := kmod-b43 wpad-basic-mbedtls
|
B43_PACKAGES := kmod-b43 wpad-basic-mbedtls
|
||||||
USB1_PACKAGES := kmod-usb-ohci kmod-usb-ledtrig-usbport
|
USB1_PACKAGES := kmod-usb-ohci kmod-usb-ledtrig-usbport
|
||||||
USB2_PACKAGES := $(USB1_PACKAGES) kmod-usb2
|
USB2_PACKAGES := $(USB1_PACKAGES) kmod-usb2
|
||||||
|
|
|
@ -3,4 +3,4 @@
|
||||||
@@ -1,2 +1,3 @@
|
@@ -1,2 +1,3 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-only
|
# SPDX-License-Identifier: GPL-2.0-only
|
||||||
obj-y += setup.o irq.o dma.o
|
obj-y += setup.o irq.o dma.o
|
||||||
+obj-y += ath9k-fixup.o b43-sprom.o
|
+obj-y += b43-sprom.o
|
||||||
|
|
|
@ -612,7 +612,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||||
mem_cgroup_id_remove(memcg);
|
mem_cgroup_id_remove(memcg);
|
||||||
--- a/mm/memory.c
|
--- a/mm/memory.c
|
||||||
+++ b/mm/memory.c
|
+++ b/mm/memory.c
|
||||||
@@ -4778,6 +4778,27 @@ static inline void mm_account_fault(stru
|
@@ -4792,6 +4792,27 @@ static inline void mm_account_fault(stru
|
||||||
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, regs, address);
|
perf_sw_event(PERF_COUNT_SW_PAGE_FAULTS_MIN, 1, regs, address);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -640,7 +640,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||||
/*
|
/*
|
||||||
* By the time we get here, we already hold the mm semaphore
|
* By the time we get here, we already hold the mm semaphore
|
||||||
*
|
*
|
||||||
@@ -4809,11 +4830,15 @@ vm_fault_t handle_mm_fault(struct vm_are
|
@@ -4823,11 +4844,15 @@ vm_fault_t handle_mm_fault(struct vm_are
|
||||||
if (flags & FAULT_FLAG_USER)
|
if (flags & FAULT_FLAG_USER)
|
||||||
mem_cgroup_enter_user_fault();
|
mem_cgroup_enter_user_fault();
|
||||||
|
|
||||||
|
|
|
@ -92,7 +92,7 @@ Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
|
||||||
mark_page_accessed(page);
|
mark_page_accessed(page);
|
||||||
}
|
}
|
||||||
rss[mm_counter(page)]--;
|
rss[mm_counter(page)]--;
|
||||||
@@ -4781,8 +4781,8 @@ static inline void mm_account_fault(stru
|
@@ -4795,8 +4795,8 @@ static inline void mm_account_fault(stru
|
||||||
#ifdef CONFIG_LRU_GEN
|
#ifdef CONFIG_LRU_GEN
|
||||||
static void lru_gen_enter_fault(struct vm_area_struct *vma)
|
static void lru_gen_enter_fault(struct vm_area_struct *vma)
|
||||||
{
|
{
|
||||||
|
|
|
@ -87,7 +87,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
stmmac_clear_tx_descriptors(priv, queue);
|
stmmac_clear_tx_descriptors(priv, queue);
|
||||||
|
|
||||||
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg,
|
||||||
@@ -7407,6 +7402,25 @@ int stmmac_suspend(struct device *dev)
|
@@ -7411,6 +7406,25 @@ int stmmac_suspend(struct device *dev)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(stmmac_suspend);
|
EXPORT_SYMBOL_GPL(stmmac_suspend);
|
||||||
|
|
||||||
|
@ -113,7 +113,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
/**
|
/**
|
||||||
* stmmac_reset_queues_param - reset queue parameters
|
* stmmac_reset_queues_param - reset queue parameters
|
||||||
* @priv: device pointer
|
* @priv: device pointer
|
||||||
@@ -7417,22 +7431,11 @@ static void stmmac_reset_queues_param(st
|
@@ -7421,22 +7435,11 @@ static void stmmac_reset_queues_param(st
|
||||||
u32 tx_cnt = priv->plat->tx_queues_to_use;
|
u32 tx_cnt = priv->plat->tx_queues_to_use;
|
||||||
u32 queue;
|
u32 queue;
|
||||||
|
|
||||||
|
|
|
@ -1199,7 +1199,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
ch = &priv->channel[queue];
|
ch = &priv->channel[queue];
|
||||||
|
|
||||||
if (!rx_q->xsk_pool && !tx_q->xsk_pool)
|
if (!rx_q->xsk_pool && !tx_q->xsk_pool)
|
||||||
@@ -6914,8 +6918,8 @@ int stmmac_reinit_ringparam(struct net_d
|
@@ -6918,8 +6922,8 @@ int stmmac_reinit_ringparam(struct net_d
|
||||||
if (netif_running(dev))
|
if (netif_running(dev))
|
||||||
stmmac_release(dev);
|
stmmac_release(dev);
|
||||||
|
|
||||||
|
@ -1210,7 +1210,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
|
|
||||||
if (netif_running(dev))
|
if (netif_running(dev))
|
||||||
ret = stmmac_open(dev);
|
ret = stmmac_open(dev);
|
||||||
@@ -7353,7 +7357,7 @@ int stmmac_suspend(struct device *dev)
|
@@ -7357,7 +7361,7 @@ int stmmac_suspend(struct device *dev)
|
||||||
stmmac_disable_all_queues(priv);
|
stmmac_disable_all_queues(priv);
|
||||||
|
|
||||||
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
|
||||||
|
@ -1219,7 +1219,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
|
|
||||||
if (priv->eee_enabled) {
|
if (priv->eee_enabled) {
|
||||||
priv->tx_path_in_lpi_mode = false;
|
priv->tx_path_in_lpi_mode = false;
|
||||||
@@ -7404,7 +7408,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
|
@@ -7408,7 +7412,7 @@ EXPORT_SYMBOL_GPL(stmmac_suspend);
|
||||||
|
|
||||||
static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
|
static void stmmac_reset_rx_queue(struct stmmac_priv *priv, u32 queue)
|
||||||
{
|
{
|
||||||
|
@ -1228,7 +1228,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
|
|
||||||
rx_q->cur_rx = 0;
|
rx_q->cur_rx = 0;
|
||||||
rx_q->dirty_rx = 0;
|
rx_q->dirty_rx = 0;
|
||||||
@@ -7412,7 +7416,7 @@ static void stmmac_reset_rx_queue(struct
|
@@ -7416,7 +7420,7 @@ static void stmmac_reset_rx_queue(struct
|
||||||
|
|
||||||
static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
|
static void stmmac_reset_tx_queue(struct stmmac_priv *priv, u32 queue)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1150,7 +1150,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org>
|
||||||
dma_desc_error:
|
dma_desc_error:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@@ -7499,7 +7615,7 @@ int stmmac_resume(struct device *dev)
|
@@ -7503,7 +7619,7 @@ int stmmac_resume(struct device *dev)
|
||||||
stmmac_reset_queues_param(priv);
|
stmmac_reset_queues_param(priv);
|
||||||
|
|
||||||
stmmac_free_tx_skbufs(priv);
|
stmmac_free_tx_skbufs(priv);
|
||||||
|
|
|
@ -235,7 +235,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
if (!pe)
|
if (!pe)
|
||||||
--- a/mm/vmalloc.c
|
--- a/mm/vmalloc.c
|
||||||
+++ b/mm/vmalloc.c
|
+++ b/mm/vmalloc.c
|
||||||
@@ -3962,6 +3962,8 @@ static const struct seq_operations vmall
|
@@ -3964,6 +3964,8 @@ static const struct seq_operations vmall
|
||||||
|
|
||||||
static int __init proc_vmalloc_init(void)
|
static int __init proc_vmalloc_init(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=cmake
|
PKG_NAME:=cmake
|
||||||
PKG_VERSION:=3.26.0
|
PKG_VERSION:=3.26.3
|
||||||
PKG_VERSION_MAJOR:=$(word 1,$(subst ., ,$(PKG_VERSION))).$(word 2,$(subst ., ,$(PKG_VERSION)))
|
PKG_VERSION_MAJOR:=$(word 1,$(subst ., ,$(PKG_VERSION))).$(word 2,$(subst ., ,$(PKG_VERSION)))
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_CPE_ID:=cpe:/a:kitware:cmake
|
PKG_CPE_ID:=cpe:/a:kitware:cmake
|
||||||
|
@ -15,7 +15,7 @@ PKG_CPE_ID:=cpe:/a:kitware:cmake
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||||
PKG_SOURCE_URL:=https://github.com/Kitware/CMake/releases/download/v$(PKG_VERSION)/ \
|
PKG_SOURCE_URL:=https://github.com/Kitware/CMake/releases/download/v$(PKG_VERSION)/ \
|
||||||
https://cmake.org/files/v$(PKG_VERSION_MAJOR)/
|
https://cmake.org/files/v$(PKG_VERSION_MAJOR)/
|
||||||
PKG_HASH:=4256613188857e95700621f7cdaaeb954f3546a9249e942bc2f9b3c26e381365
|
PKG_HASH:=bbd8d39217509d163cb544a40d6428ac666ddc83e22905d3e52c925781f0f659
|
||||||
|
|
||||||
HOST_BUILD_PARALLEL:=1
|
HOST_BUILD_PARALLEL:=1
|
||||||
HOST_CONFIGURE_PARALLEL:=1
|
HOST_CONFIGURE_PARALLEL:=1
|
||||||
|
|
|
@ -3,18 +3,16 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=dwarves
|
PKG_NAME:=dwarves
|
||||||
PKG_VERSION:=1.24
|
PKG_VERSION:=1.25
|
||||||
PKG_RELEASE:=$(AUTORELEASE)
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||||
PKG_SOURCE_URL:=https://fedorapeople.org/~acme/dwarves/
|
PKG_SOURCE_URL:=https://fedorapeople.org/~acme/dwarves/
|
||||||
PKG_HASH:=576bc112b95937dfbcd347c423696ee9e1992a338fdca1acacca736fd95f69c2
|
PKG_HASH:=e7d45955f6f4eca25a4c8c3bd6611059b35dc217e45976681d7db170fccdec4a
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0-only
|
PKG_LICENSE:=GPL-2.0-only
|
||||||
PKG_LICENSE_FILES:=COPYING
|
PKG_LICENSE_FILES:=COPYING
|
||||||
|
|
||||||
HOST_BUILD_PARALLEL:=1
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/host-build.mk
|
include $(INCLUDE_DIR)/host-build.mk
|
||||||
include $(INCLUDE_DIR)/cmake.mk
|
include $(INCLUDE_DIR)/cmake.mk
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue