Merge branch 'openwrt:master' into master

This commit is contained in:
Hayzam Sherif 2023-04-19 22:00:00 +05:30 committed by GitHub
commit 792c32f4f2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 126 additions and 447 deletions

View file

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

View file

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

View file

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

View file

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

View file

@ -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);

View file

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

View file

@ -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);

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -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);

View file

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

View file

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

View file

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

View file

@ -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();

View file

@ -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)
{ {

View file

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

View file

@ -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)
{ {

View file

@ -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);

View file

@ -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)
{ {

View file

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

View file

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