Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
@@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-5.15 = .158
|
||||
LINUX_KERNEL_HASH-5.15.158 = f9071c83a4fd8b80af026b48cfc1869bfa25883f9148b92b5dc1e1e1e26dd5c6
|
||||
LINUX_VERSION-5.15 = .161
|
||||
LINUX_KERNEL_HASH-5.15.161 = d629f78680dc4b65e3d78b61406fb7757b960c83c206e63ad8c2606b3e3c474c
|
||||
|
||||
@@ -61,11 +61,21 @@ find_mtd_chardev() {
|
||||
echo "${INDEX:+$PREFIX$INDEX}"
|
||||
}
|
||||
|
||||
get_mac_ascii() {
|
||||
local part="$1"
|
||||
local key="$2"
|
||||
local mac_dirty
|
||||
|
||||
mac_dirty=$(strings "$part" | sed -n 's/^'"$key"'=//p')
|
||||
|
||||
# "canonicalize" mac
|
||||
[ -n "$mac_dirty" ] && macaddr_canonicalize "$mac_dirty"
|
||||
}
|
||||
|
||||
mtd_get_mac_ascii() {
|
||||
local mtdname="$1"
|
||||
local key="$2"
|
||||
local part
|
||||
local mac_dirty
|
||||
|
||||
part=$(find_mtd_part "$mtdname")
|
||||
if [ -z "$part" ]; then
|
||||
@@ -73,10 +83,7 @@ mtd_get_mac_ascii() {
|
||||
return
|
||||
fi
|
||||
|
||||
mac_dirty=$(strings "$part" | sed -n 's/^'"$key"'=//p')
|
||||
|
||||
# "canonicalize" mac
|
||||
[ -n "$mac_dirty" ] && macaddr_canonicalize "$mac_dirty"
|
||||
get_mac_ascii "$part" "$key"
|
||||
}
|
||||
|
||||
mtd_get_mac_encrypted_arcadyan() {
|
||||
@@ -190,6 +197,20 @@ mtd_get_part_size() {
|
||||
done < /proc/mtd
|
||||
}
|
||||
|
||||
mmc_get_mac_ascii() {
|
||||
local part_name="$1"
|
||||
local key="$2"
|
||||
local part
|
||||
|
||||
part=$(find_mmc_part "$part_name")
|
||||
if [ -z "$part" ]; then
|
||||
echo "mmc_get_mac_ascii: partition $part_name not found!" >&2
|
||||
return
|
||||
fi
|
||||
|
||||
get_mac_ascii "$part" "$key"
|
||||
}
|
||||
|
||||
mmc_get_mac_binary() {
|
||||
local part_name="$1"
|
||||
local offset="$2"
|
||||
|
||||
@@ -46,7 +46,8 @@ cetron,ct3003-ubootmod|\
|
||||
cmcc,rax3000m-nand-ubootmod|\
|
||||
h3c,magic-nx30-pro-nmbm|\
|
||||
netgear,wax220|\
|
||||
zbtlink,zbt-z8102ax)
|
||||
zbtlink,zbt-z8102ax|\
|
||||
zbtlink,zbt-z8103ax)
|
||||
ubootenv_add_uci_config "/dev/mtd1" "0x0" "0x20000" "0x20000"
|
||||
;;
|
||||
cmcc,rax3000m)
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mt76
|
||||
PKG_RELEASE=3
|
||||
PKG_RELEASE=1
|
||||
|
||||
PKG_LICENSE:=GPLv2
|
||||
PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
|
||||
PKG_SOURCE_PROTO:=git
|
||||
PKG_SOURCE_DATE:=2024-03-18
|
||||
PKG_SOURCE_VERSION:=2135e201e7a9339e018d4e2d4a33c73266e674d7
|
||||
PKG_MIRROR_HASH:=810f636c60c86e6a426c676c3bf7aaea2f711feb31f4a66889d485112b612745
|
||||
PKG_SOURCE_DATE:=2024-04-03
|
||||
PKG_SOURCE_VERSION:=1e336a8582dce2ef32ddd440d423e9afef961e71
|
||||
PKG_MIRROR_HASH:=f3801af80d5f9c1aa266c9401d4dfa2d501df0382c81fd249150e17dddc70936
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
PKG_USE_NINJA:=0
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
From b108dda7e201994f10c885362b07ff3b6e1e843d Mon Sep 17 00:00:00 2001
|
||||
From: Chad Monroe <chad@monroe.io>
|
||||
Date: Tue, 5 Mar 2024 17:55:35 +0000
|
||||
Subject: [PATCH] wifi: mt76: mt7996: fix size of txpower MCU command
|
||||
|
||||
Fixes issues with scanning and low power output at some rates.
|
||||
|
||||
Fixes: f75e4779d215 ("wifi: mt76: mt7996: add txpower setting support")
|
||||
Signed-off-by: Chad Monroe <chad@monroe.io>
|
||||
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
mt7996/mcu.c | 7 +++++--
|
||||
mt7996/mt7996.h | 1 +
|
||||
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/mt7996/mcu.c
|
||||
+++ b/mt7996/mcu.c
|
||||
@@ -4464,7 +4464,7 @@ int mt7996_mcu_set_txpower_sku(struct mt
|
||||
u8 band_idx;
|
||||
} __packed req = {
|
||||
.tag = cpu_to_le16(UNI_TXPOWER_POWER_LIMIT_TABLE_CTRL),
|
||||
- .len = cpu_to_le16(sizeof(req) + MT7996_SKU_RATE_NUM - 4),
|
||||
+ .len = cpu_to_le16(sizeof(req) + MT7996_SKU_PATH_NUM - 4),
|
||||
.power_ctrl_id = UNI_TXPOWER_POWER_LIMIT_TABLE_CTRL,
|
||||
.power_limit_type = TX_POWER_LIMIT_TABLE_RATE,
|
||||
.band_idx = phy->mt76->band_idx,
|
||||
@@ -4479,7 +4479,7 @@ int mt7996_mcu_set_txpower_sku(struct mt
|
||||
mphy->txpower_cur = tx_power;
|
||||
|
||||
skb = mt76_mcu_msg_alloc(&dev->mt76, NULL,
|
||||
- sizeof(req) + MT7996_SKU_RATE_NUM);
|
||||
+ sizeof(req) + MT7996_SKU_PATH_NUM);
|
||||
if (!skb)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -4503,6 +4503,9 @@ int mt7996_mcu_set_txpower_sku(struct mt
|
||||
/* eht */
|
||||
skb_put_data(skb, &la.eht[0], sizeof(la.eht));
|
||||
|
||||
+ /* padding */
|
||||
+ skb_put_zero(skb, MT7996_SKU_PATH_NUM - MT7996_SKU_RATE_NUM);
|
||||
+
|
||||
return mt76_mcu_skb_send_msg(&dev->mt76, skb,
|
||||
MCU_WM_UNI_CMD(TXPOWER), true);
|
||||
}
|
||||
--- a/mt7996/mt7996.h
|
||||
+++ b/mt7996/mt7996.h
|
||||
@@ -50,6 +50,7 @@
|
||||
#define MT7996_CFEND_RATE_11B 0x03 /* 11B LP, 11M */
|
||||
|
||||
#define MT7996_SKU_RATE_NUM 417
|
||||
+#define MT7996_SKU_PATH_NUM 494
|
||||
|
||||
#define MT7996_MAX_TWT_AGRT 16
|
||||
#define MT7996_MAX_STA_TWT_AGRT 8
|
||||
@@ -1,27 +0,0 @@
|
||||
From b96ab5e62010887a8abee43dbcccf6f4b3fcb269 Mon Sep 17 00:00:00 2001
|
||||
From: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
Date: Tue, 19 Mar 2024 13:05:36 +0100
|
||||
Subject: [PATCH] wifi: mt76: mt7996: fix uninitialized variable in
|
||||
mt7996_irq_tasklet()
|
||||
|
||||
Set intr1 to 0 in mt7996_irq_tasklet() in order to avoid possible
|
||||
uninitialized variable usage if wed is not active for hif2.
|
||||
|
||||
Fixes: 83eafc9251d6 ("wifi: mt76: mt7996: add wed tx support")
|
||||
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
mt7996/mmio.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/mt7996/mmio.c
|
||||
+++ b/mt7996/mmio.c
|
||||
@@ -519,7 +519,7 @@ static void mt7996_irq_tasklet(struct ta
|
||||
struct mt7996_dev *dev = from_tasklet(dev, t, mt76.irq_tasklet);
|
||||
struct mtk_wed_device *wed = &dev->mt76.mmio.wed;
|
||||
struct mtk_wed_device *wed_hif2 = &dev->mt76.mmio.wed_hif2;
|
||||
- u32 i, intr, mask, intr1;
|
||||
+ u32 i, intr, mask, intr1 = 0;
|
||||
|
||||
if (dev->hif2 && mtk_wed_device_active(wed_hif2)) {
|
||||
mtk_wed_device_irq_set_mask(wed_hif2, 0);
|
||||
@@ -1,39 +0,0 @@
|
||||
From 424e9df466cea3bb39a1e92bf95f3efe65472c27 Mon Sep 17 00:00:00 2001
|
||||
From: Howard Hsu <howard-yh.hsu@mediatek.com>
|
||||
Date: Wed, 20 Mar 2024 19:09:14 +0800
|
||||
Subject: [PATCH] wifi: mt76: mt7996: fix potential memory leakage when reading
|
||||
chip temperature
|
||||
|
||||
Without this commit, reading chip temperature will cause memory leakage.
|
||||
|
||||
Fixes: 6879b2e94172 ("wifi: mt76: mt7996: add thermal sensor device support")
|
||||
Reported-by: Ryder Lee <ryder.lee@mediatek.com>
|
||||
Signed-off-by: Howard Hsu <howard-yh.hsu@mediatek.com>
|
||||
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
mt7996/mcu.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/mt7996/mcu.c
|
||||
+++ b/mt7996/mcu.c
|
||||
@@ -3729,6 +3729,7 @@ int mt7996_mcu_get_temperature(struct mt
|
||||
} __packed * res;
|
||||
struct sk_buff *skb;
|
||||
int ret;
|
||||
+ u32 temp;
|
||||
|
||||
ret = mt76_mcu_send_and_get_msg(&phy->dev->mt76, MCU_WM_UNI_CMD(THERMAL),
|
||||
&req, sizeof(req), true, &skb);
|
||||
@@ -3736,8 +3737,10 @@ int mt7996_mcu_get_temperature(struct mt
|
||||
return ret;
|
||||
|
||||
res = (void *)skb->data;
|
||||
+ temp = le32_to_cpu(res->temperature);
|
||||
+ dev_kfree_skb(skb);
|
||||
|
||||
- return le32_to_cpu(res->temperature);
|
||||
+ return temp;
|
||||
}
|
||||
|
||||
int mt7996_mcu_set_thermal_throttling(struct mt7996_phy *phy, u8 state)
|
||||
@@ -1,27 +0,0 @@
|
||||
From 725f531c14597f20645321d8a900796f5a68e135 Mon Sep 17 00:00:00 2001
|
||||
From: Muhammad Usama Anjum <usama.anjum@collabora.com>
|
||||
Date: Fri, 1 Mar 2024 19:44:06 +0500
|
||||
Subject: [PATCH] wifi: mt76: connac: check for null before dereferencing
|
||||
|
||||
The wcid can be NULL. It should be checked for validity before
|
||||
dereferencing it to avoid crash.
|
||||
|
||||
Fixes: 098428c400ff ("wifi: mt76: connac: set correct muar_idx for mt799x chipsets")
|
||||
Signed-off-by: Muhammad Usama Anjum <usama.anjum@collabora.com>
|
||||
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
mt76_connac_mcu.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/mt76_connac_mcu.c
|
||||
+++ b/mt76_connac_mcu.c
|
||||
@@ -283,7 +283,7 @@ __mt76_connac_mcu_alloc_sta_req(struct m
|
||||
};
|
||||
struct sk_buff *skb;
|
||||
|
||||
- if (is_mt799x(dev) && !wcid->sta)
|
||||
+ if (is_mt799x(dev) && wcid && !wcid->sta)
|
||||
hdr.muar_idx = 0xe;
|
||||
|
||||
mt76_connac_mcu_get_wlan_idx(dev, wcid, &hdr.wlan_idx_lo,
|
||||
@@ -1,25 +0,0 @@
|
||||
From 1e336a8582dce2ef32ddd440d423e9afef961e71 Mon Sep 17 00:00:00 2001
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Wed, 3 Apr 2024 13:01:01 +0200
|
||||
Subject: [PATCH] wifi: mt76: connac: use muar idx 0xe for non-mt799x as well
|
||||
|
||||
This is expected by the firmware of older chipsets as well, though it may
|
||||
not have been as strongly required as on mt799x
|
||||
|
||||
Fixes: 098428c400ff ("wifi: mt76: connac: set correct muar_idx for mt799x chipsets")
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
mt76_connac_mcu.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/mt76_connac_mcu.c
|
||||
+++ b/mt76_connac_mcu.c
|
||||
@@ -283,7 +283,7 @@ __mt76_connac_mcu_alloc_sta_req(struct m
|
||||
};
|
||||
struct sk_buff *skb;
|
||||
|
||||
- if (is_mt799x(dev) && wcid && !wcid->sta)
|
||||
+ if (wcid && !wcid->sta)
|
||||
hdr.muar_idx = 0xe;
|
||||
|
||||
mt76_connac_mcu_get_wlan_idx(dev, wcid, &hdr.wlan_idx_lo,
|
||||
@@ -1,99 +0,0 @@
|
||||
From e4de3592c4e3baa82142eff583cb5a761f790709 Mon Sep 17 00:00:00 2001
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Tue, 2 Apr 2024 20:14:34 +0200
|
||||
Subject: [PATCH] wifi: mt76: mt7603: fix tx queue of loopback packets
|
||||
|
||||
Use the correct WMM AC queue instead of the MGMT one to fix potential issues
|
||||
with aggregation sequence number tracking. Drop non-bufferable packets.
|
||||
|
||||
Fixes: fca9615f1a43 ("mt76: mt7603: fix up hardware queue index for PS filtered packets")
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
mt7603/dma.c | 46 ++++++++++++++++++++++++++++++++--------------
|
||||
1 file changed, 32 insertions(+), 14 deletions(-)
|
||||
|
||||
--- a/mt7603/dma.c
|
||||
+++ b/mt7603/dma.c
|
||||
@@ -4,6 +4,13 @@
|
||||
#include "mac.h"
|
||||
#include "../dma.h"
|
||||
|
||||
+static const u8 wmm_queue_map[] = {
|
||||
+ [IEEE80211_AC_BK] = 0,
|
||||
+ [IEEE80211_AC_BE] = 1,
|
||||
+ [IEEE80211_AC_VI] = 2,
|
||||
+ [IEEE80211_AC_VO] = 3,
|
||||
+};
|
||||
+
|
||||
static void
|
||||
mt7603_rx_loopback_skb(struct mt7603_dev *dev, struct sk_buff *skb)
|
||||
{
|
||||
@@ -22,10 +29,10 @@ mt7603_rx_loopback_skb(struct mt7603_dev
|
||||
struct ieee80211_sta *sta;
|
||||
struct mt7603_sta *msta;
|
||||
struct mt76_wcid *wcid;
|
||||
+ u8 tid = 0, hwq = 0;
|
||||
void *priv;
|
||||
int idx;
|
||||
u32 val;
|
||||
- u8 tid = 0;
|
||||
|
||||
if (skb->len < MT_TXD_SIZE + sizeof(struct ieee80211_hdr))
|
||||
goto free;
|
||||
@@ -42,19 +49,36 @@ mt7603_rx_loopback_skb(struct mt7603_dev
|
||||
goto free;
|
||||
|
||||
priv = msta = container_of(wcid, struct mt7603_sta, wcid);
|
||||
- val = le32_to_cpu(txd[0]);
|
||||
- val &= ~(MT_TXD0_P_IDX | MT_TXD0_Q_IDX);
|
||||
- val |= FIELD_PREP(MT_TXD0_Q_IDX, MT_TX_HW_QUEUE_MGMT);
|
||||
- txd[0] = cpu_to_le32(val);
|
||||
|
||||
sta = container_of(priv, struct ieee80211_sta, drv_priv);
|
||||
hdr = (struct ieee80211_hdr *)&skb->data[MT_TXD_SIZE];
|
||||
- if (ieee80211_is_data_qos(hdr->frame_control))
|
||||
+
|
||||
+ hwq = wmm_queue_map[IEEE80211_AC_BE];
|
||||
+ if (ieee80211_is_data_qos(hdr->frame_control)) {
|
||||
tid = *ieee80211_get_qos_ctl(hdr) &
|
||||
- IEEE80211_QOS_CTL_TAG1D_MASK;
|
||||
- skb_set_queue_mapping(skb, tid_to_ac[tid]);
|
||||
+ IEEE80211_QOS_CTL_TAG1D_MASK;
|
||||
+ u8 qid = tid_to_ac[tid];
|
||||
+ hwq = wmm_queue_map[qid];
|
||||
+ skb_set_queue_mapping(skb, qid);
|
||||
+ } else if (ieee80211_is_data(hdr->frame_control)) {
|
||||
+ skb_set_queue_mapping(skb, IEEE80211_AC_BE);
|
||||
+ hwq = wmm_queue_map[IEEE80211_AC_BE];
|
||||
+ } else {
|
||||
+ skb_pull(skb, MT_TXD_SIZE);
|
||||
+ if (!ieee80211_is_bufferable_mmpdu(skb))
|
||||
+ goto free;
|
||||
+ skb_push(skb, MT_TXD_SIZE);
|
||||
+ skb_set_queue_mapping(skb, MT_TXQ_PSD);
|
||||
+ hwq = MT_TX_HW_QUEUE_MGMT;
|
||||
+ }
|
||||
+
|
||||
ieee80211_sta_set_buffered(sta, tid, true);
|
||||
|
||||
+ val = le32_to_cpu(txd[0]);
|
||||
+ val &= ~(MT_TXD0_P_IDX | MT_TXD0_Q_IDX);
|
||||
+ val |= FIELD_PREP(MT_TXD0_Q_IDX, hwq);
|
||||
+ txd[0] = cpu_to_le32(val);
|
||||
+
|
||||
spin_lock_bh(&dev->ps_lock);
|
||||
__skb_queue_tail(&msta->psq, skb);
|
||||
if (skb_queue_len(&msta->psq) >= 64) {
|
||||
@@ -151,12 +175,6 @@ static int mt7603_poll_tx(struct napi_st
|
||||
|
||||
int mt7603_dma_init(struct mt7603_dev *dev)
|
||||
{
|
||||
- static const u8 wmm_queue_map[] = {
|
||||
- [IEEE80211_AC_BK] = 0,
|
||||
- [IEEE80211_AC_BE] = 1,
|
||||
- [IEEE80211_AC_VI] = 2,
|
||||
- [IEEE80211_AC_VO] = 3,
|
||||
- };
|
||||
int ret;
|
||||
int i;
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
From 446f652c967c11d50d9005e2acec97f8b577bb92 Mon Sep 17 00:00:00 2001
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Wed, 3 Apr 2024 11:11:54 +0200
|
||||
Subject: [PATCH] wifi: mt76: mt7603: add wpdma tx eof flag for PSE client
|
||||
reset
|
||||
|
||||
This flag is needed for the PSE client reset. Fixes watchdog reset issues.
|
||||
|
||||
Fixes: c677dda16523 ("wifi: mt76: mt7603: improve watchdog reset reliablity")
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
mt7603/mac.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/mt7603/mac.c
|
||||
+++ b/mt7603/mac.c
|
||||
@@ -1393,6 +1393,7 @@ void mt7603_pse_client_reset(struct mt76
|
||||
MT_CLIENT_RESET_TX_R_E_2_S);
|
||||
|
||||
/* Start PSE client TX abort */
|
||||
+ mt76_set(dev, MT_WPDMA_GLO_CFG, MT_WPDMA_GLO_CFG_FORCE_TX_EOF);
|
||||
mt76_set(dev, addr, MT_CLIENT_RESET_TX_R_E_1);
|
||||
mt76_poll_msec(dev, addr, MT_CLIENT_RESET_TX_R_E_1_S,
|
||||
MT_CLIENT_RESET_TX_R_E_1_S, 500);
|
||||
@@ -5,7 +5,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=hostapd
|
||||
PKG_RELEASE:=6
|
||||
PKG_RELEASE:=7
|
||||
|
||||
PKG_SOURCE_URL:=http://w1.fi/hostap.git
|
||||
PKG_SOURCE_PROTO:=git
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
From a329773522953892d9bb4548482d42fc93fea329 Mon Sep 17 00:00:00 2001
|
||||
From: David Bauer <mail@david-bauer.net>
|
||||
Date: Thu, 27 Jun 2024 18:45:19 +0200
|
||||
Subject: [PATCH] AP: don't ignore probe-requests with invalid DSSS params
|
||||
|
||||
Don't ignore probe requests which contain an invalid DS parameter for the
|
||||
current operating channel.
|
||||
|
||||
As the comment outlines, the drop shall only apply if
|
||||
dot11RadioMeasurementActivated is set to 1.
|
||||
|
||||
However, it was observed Linux clients (Debian 12 / NixOS 23.11)
|
||||
with an Intel 8265 NIC may generate a probe request frame with
|
||||
dot11RadioMeasurementActivated set to false and an invalid DSSS
|
||||
parameter.
|
||||
|
||||
These were also dropped even though they should not have been. They
|
||||
however should not have contained this parameter in the first place.
|
||||
|
||||
Don't drop Probe Requests which contain such an invalid field. This may
|
||||
lead to more probe responses being sent, however it does fix very
|
||||
frequent connection issues for these clients on 2.4 GHz.
|
||||
|
||||
Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
---
|
||||
src/ap/beacon.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -1095,7 +1095,7 @@ void handle_probe_req(struct hostapd_dat
|
||||
* is less likely to see them (Probe Request frame sent on a
|
||||
* neighboring, but partially overlapping, channel).
|
||||
*/
|
||||
- if (elems.ds_params &&
|
||||
+ if (elems.ds_params && 0 &&
|
||||
hapd->iface->current_mode &&
|
||||
(hapd->iface->current_mode->mode == HOSTAPD_MODE_IEEE80211G ||
|
||||
hapd->iface->current_mode->mode == HOSTAPD_MODE_IEEE80211B) &&
|
||||
@@ -17,7 +17,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20210819135931.895976-5-maxi
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1749,7 +1749,7 @@ static irqreturn_t vc4_cec_irq_handler(i
|
||||
@@ -1751,7 +1751,7 @@ static irqreturn_t vc4_cec_irq_handler(i
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20210819135931.895976-5-maxi
|
||||
{
|
||||
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
|
||||
/* clock period in microseconds */
|
||||
@@ -1762,38 +1762,53 @@ static int vc4_hdmi_cec_adap_enable(stru
|
||||
@@ -1764,38 +1764,53 @@ static int vc4_hdmi_cec_adap_enable(stru
|
||||
val |= ((4700 / usecs) << VC4_HDMI_CEC_CNT_TO_4700_US_SHIFT) |
|
||||
((4500 / usecs) << VC4_HDMI_CEC_CNT_TO_4500_US_SHIFT);
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20210819135931.895976-6-maxi
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1754,8 +1754,14 @@ static int vc4_hdmi_cec_enable(struct ce
|
||||
@@ -1756,8 +1756,14 @@ static int vc4_hdmi_cec_enable(struct ce
|
||||
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
|
||||
/* clock period in microseconds */
|
||||
const u32 usecs = 1000000 / CEC_CLOCK_FREQ;
|
||||
@@ -40,7 +40,7 @@ Link: https://patchwork.freedesktop.org/patch/msgid/20210819135931.895976-6-maxi
|
||||
val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
|
||||
VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
|
||||
VC4_HDMI_CEC_CNT_TO_4500_US_MASK);
|
||||
@@ -1798,6 +1804,8 @@ static int vc4_hdmi_cec_disable(struct c
|
||||
@@ -1800,6 +1806,8 @@ static int vc4_hdmi_cec_disable(struct c
|
||||
HDMI_WRITE(HDMI_CEC_CNTRL_5, HDMI_READ(HDMI_CEC_CNTRL_5) |
|
||||
VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Link: https://lore.kernel.org/r/20211025152903.1088803-9-maxime@cerno.tech
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -2387,7 +2387,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
@@ -2389,7 +2389,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
.encoder_type = VC4_ENCODER_TYPE_HDMI0,
|
||||
.debugfs_name = "hdmi0_regs",
|
||||
.card_name = "vc4-hdmi-0",
|
||||
|
||||
@@ -553,7 +553,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
memcpy(&vc4_hdmi->audio.infoframe, ¶ms->cea, sizeof(params->cea));
|
||||
vc4_hdmi_set_audio_infoframe(encoder);
|
||||
|
||||
@@ -1678,6 +1803,8 @@ static void vc4_cec_read_msg(struct vc4_
|
||||
@@ -1680,6 +1805,8 @@ static void vc4_cec_read_msg(struct vc4_
|
||||
struct cec_msg *msg = &vc4_hdmi->cec_rx_msg;
|
||||
unsigned int i;
|
||||
|
||||
@@ -562,7 +562,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
msg->len = 1 + ((cntrl1 & VC4_HDMI_CEC_REC_WRD_CNT_MASK) >>
|
||||
VC4_HDMI_CEC_REC_WRD_CNT_SHIFT);
|
||||
|
||||
@@ -1696,11 +1823,12 @@ static void vc4_cec_read_msg(struct vc4_
|
||||
@@ -1698,11 +1825,12 @@ static void vc4_cec_read_msg(struct vc4_
|
||||
}
|
||||
}
|
||||
|
||||
@@ -577,7 +577,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1);
|
||||
vc4_hdmi->cec_tx_ok = cntrl1 & VC4_HDMI_CEC_TX_STATUS_GOOD;
|
||||
cntrl1 &= ~VC4_HDMI_CEC_START_XMIT_BEGIN;
|
||||
@@ -1709,11 +1837,24 @@ static irqreturn_t vc4_cec_irq_handler_t
|
||||
@@ -1711,11 +1839,24 @@ static irqreturn_t vc4_cec_irq_handler_t
|
||||
return IRQ_WAKE_THREAD;
|
||||
}
|
||||
|
||||
@@ -603,7 +603,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
vc4_hdmi->cec_rx_msg.len = 0;
|
||||
cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1);
|
||||
vc4_cec_read_msg(vc4_hdmi, cntrl1);
|
||||
@@ -1726,6 +1867,18 @@ static irqreturn_t vc4_cec_irq_handler_r
|
||||
@@ -1728,6 +1869,18 @@ static irqreturn_t vc4_cec_irq_handler_r
|
||||
return IRQ_WAKE_THREAD;
|
||||
}
|
||||
|
||||
@@ -622,7 +622,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
static irqreturn_t vc4_cec_irq_handler(int irq, void *priv)
|
||||
{
|
||||
struct vc4_hdmi *vc4_hdmi = priv;
|
||||
@@ -1736,14 +1889,17 @@ static irqreturn_t vc4_cec_irq_handler(i
|
||||
@@ -1738,14 +1891,17 @@ static irqreturn_t vc4_cec_irq_handler(i
|
||||
if (!(stat & VC4_HDMI_CPU_CEC))
|
||||
return IRQ_NONE;
|
||||
|
||||
@@ -642,7 +642,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1752,6 +1908,7 @@ static int vc4_hdmi_cec_enable(struct ce
|
||||
@@ -1754,6 +1910,7 @@ static int vc4_hdmi_cec_enable(struct ce
|
||||
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
|
||||
/* clock period in microseconds */
|
||||
const u32 usecs = 1000000 / CEC_CLOCK_FREQ;
|
||||
@@ -650,7 +650,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
u32 val;
|
||||
int ret;
|
||||
|
||||
@@ -1759,6 +1916,8 @@ static int vc4_hdmi_cec_enable(struct ce
|
||||
@@ -1761,6 +1918,8 @@ static int vc4_hdmi_cec_enable(struct ce
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -659,7 +659,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
val = HDMI_READ(HDMI_CEC_CNTRL_5);
|
||||
val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
|
||||
VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
|
||||
@@ -1789,12 +1948,17 @@ static int vc4_hdmi_cec_enable(struct ce
|
||||
@@ -1791,12 +1950,17 @@ static int vc4_hdmi_cec_enable(struct ce
|
||||
if (!vc4_hdmi->variant->external_irq_controller)
|
||||
HDMI_WRITE(HDMI_CEC_CPU_MASK_CLEAR, VC4_HDMI_CPU_CEC);
|
||||
|
||||
@@ -677,7 +677,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
if (!vc4_hdmi->variant->external_irq_controller)
|
||||
HDMI_WRITE(HDMI_CEC_CPU_MASK_SET, VC4_HDMI_CPU_CEC);
|
||||
@@ -1802,6 +1966,8 @@ static int vc4_hdmi_cec_disable(struct c
|
||||
@@ -1804,6 +1968,8 @@ static int vc4_hdmi_cec_disable(struct c
|
||||
HDMI_WRITE(HDMI_CEC_CNTRL_5, HDMI_READ(HDMI_CEC_CNTRL_5) |
|
||||
VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
|
||||
|
||||
@@ -686,7 +686,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
pm_runtime_put(&vc4_hdmi->pdev->dev);
|
||||
|
||||
return 0;
|
||||
@@ -1818,10 +1984,14 @@ static int vc4_hdmi_cec_adap_enable(stru
|
||||
@@ -1820,10 +1986,14 @@ static int vc4_hdmi_cec_adap_enable(stru
|
||||
static int vc4_hdmi_cec_adap_log_addr(struct cec_adapter *adap, u8 log_addr)
|
||||
{
|
||||
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
|
||||
@@ -701,7 +701,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1830,6 +2000,7 @@ static int vc4_hdmi_cec_adap_transmit(st
|
||||
@@ -1832,6 +2002,7 @@ static int vc4_hdmi_cec_adap_transmit(st
|
||||
{
|
||||
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
|
||||
struct drm_device *dev = vc4_hdmi->connector.dev;
|
||||
@@ -709,7 +709,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
u32 val;
|
||||
unsigned int i;
|
||||
|
||||
@@ -1838,6 +2009,8 @@ static int vc4_hdmi_cec_adap_transmit(st
|
||||
@@ -1840,6 +2011,8 @@ static int vc4_hdmi_cec_adap_transmit(st
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
@@ -718,7 +718,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
for (i = 0; i < msg->len; i += 4)
|
||||
HDMI_WRITE(HDMI_CEC_TX_DATA_1 + (i >> 2),
|
||||
(msg->msg[i]) |
|
||||
@@ -1853,6 +2026,9 @@ static int vc4_hdmi_cec_adap_transmit(st
|
||||
@@ -1855,6 +2028,9 @@ static int vc4_hdmi_cec_adap_transmit(st
|
||||
val |= VC4_HDMI_CEC_START_XMIT_BEGIN;
|
||||
|
||||
HDMI_WRITE(HDMI_CEC_CNTRL_1, val);
|
||||
@@ -728,7 +728,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1867,6 +2043,7 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
@@ -1869,6 +2045,7 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
struct cec_connector_info conn_info;
|
||||
struct platform_device *pdev = vc4_hdmi->pdev;
|
||||
struct device *dev = &pdev->dev;
|
||||
@@ -736,7 +736,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
u32 value;
|
||||
int ret;
|
||||
|
||||
@@ -1887,10 +2064,12 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
@@ -1889,10 +2066,12 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector);
|
||||
cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
|
||||
|
||||
@@ -749,7 +749,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
vc4_hdmi_cec_update_clk_div(vc4_hdmi);
|
||||
|
||||
@@ -1909,7 +2088,9 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
@@ -1911,7 +2090,9 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
if (ret)
|
||||
goto err_remove_cec_rx_handler;
|
||||
} else {
|
||||
@@ -759,7 +759,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
ret = request_threaded_irq(platform_get_irq(pdev, 0),
|
||||
vc4_cec_irq_handler,
|
||||
@@ -2179,6 +2360,7 @@ static int vc4_hdmi_bind(struct device *
|
||||
@@ -2181,6 +2362,7 @@ static int vc4_hdmi_bind(struct device *
|
||||
vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL);
|
||||
if (!vc4_hdmi)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -339,7 +339,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -1912,6 +1973,17 @@ static int vc4_hdmi_cec_enable(struct ce
|
||||
@@ -1914,6 +1975,17 @@ static int vc4_hdmi_cec_enable(struct ce
|
||||
u32 val;
|
||||
int ret;
|
||||
|
||||
@@ -357,7 +357,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
@@ -1958,6 +2030,17 @@ static int vc4_hdmi_cec_disable(struct c
|
||||
@@ -1960,6 +2032,17 @@ static int vc4_hdmi_cec_disable(struct c
|
||||
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
|
||||
unsigned long flags;
|
||||
|
||||
@@ -375,7 +375,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
|
||||
|
||||
if (!vc4_hdmi->variant->external_irq_controller)
|
||||
@@ -1986,6 +2069,17 @@ static int vc4_hdmi_cec_adap_log_addr(st
|
||||
@@ -1988,6 +2071,17 @@ static int vc4_hdmi_cec_adap_log_addr(st
|
||||
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
|
||||
unsigned long flags;
|
||||
|
||||
@@ -393,7 +393,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
|
||||
HDMI_WRITE(HDMI_CEC_CNTRL_1,
|
||||
(HDMI_READ(HDMI_CEC_CNTRL_1) & ~VC4_HDMI_CEC_ADDR_MASK) |
|
||||
@@ -2004,6 +2098,17 @@ static int vc4_hdmi_cec_adap_transmit(st
|
||||
@@ -2006,6 +2100,17 @@ static int vc4_hdmi_cec_adap_transmit(st
|
||||
u32 val;
|
||||
unsigned int i;
|
||||
|
||||
@@ -411,7 +411,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
if (msg->len > 16) {
|
||||
drm_err(dev, "Attempting to transmit too much data (%d)\n", msg->len);
|
||||
return -ENOMEM;
|
||||
@@ -2360,6 +2465,7 @@ static int vc4_hdmi_bind(struct device *
|
||||
@@ -2362,6 +2467,7 @@ static int vc4_hdmi_bind(struct device *
|
||||
vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL);
|
||||
if (!vc4_hdmi)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -69,7 +69,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
if (delayed_work_pending(&vc4_hdmi->scrambling_work))
|
||||
cancel_delayed_work_sync(&vc4_hdmi->scrambling_work);
|
||||
@@ -2523,6 +2517,14 @@ static int vc4_hdmi_bind(struct device *
|
||||
@@ -2525,6 +2519,14 @@ static int vc4_hdmi_bind(struct device *
|
||||
vc4_hdmi->pdev = pdev;
|
||||
vc4_hdmi->variant = variant;
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ Changes from v1:
|
||||
|
||||
--- a/drivers/gpu/drm/drm_probe_helper.c
|
||||
+++ b/drivers/gpu/drm/drm_probe_helper.c
|
||||
@@ -796,6 +796,86 @@ void drm_kms_helper_poll_fini(struct drm
|
||||
@@ -805,6 +805,86 @@ void drm_kms_helper_poll_fini(struct drm
|
||||
}
|
||||
EXPORT_SYMBOL(drm_kms_helper_poll_fini);
|
||||
|
||||
@@ -126,7 +126,7 @@ Changes from v1:
|
||||
/**
|
||||
* drm_helper_hpd_irq_event - hotplug processing
|
||||
* @dev: drm_device
|
||||
@@ -809,9 +889,10 @@ EXPORT_SYMBOL(drm_kms_helper_poll_fini);
|
||||
@@ -818,9 +898,10 @@ EXPORT_SYMBOL(drm_kms_helper_poll_fini);
|
||||
* interrupts for each connector.
|
||||
*
|
||||
* Drivers which support hotplug interrupts for each connector individually and
|
||||
@@ -140,7 +140,7 @@ Changes from v1:
|
||||
*
|
||||
* This function must be called from process context with no mode
|
||||
* setting locks held.
|
||||
@@ -823,9 +904,7 @@ bool drm_helper_hpd_irq_event(struct drm
|
||||
@@ -832,9 +913,7 @@ bool drm_helper_hpd_irq_event(struct drm
|
||||
{
|
||||
struct drm_connector *connector;
|
||||
struct drm_connector_list_iter conn_iter;
|
||||
@@ -150,7 +150,7 @@ Changes from v1:
|
||||
|
||||
if (!dev->mode_config.poll_enabled)
|
||||
return false;
|
||||
@@ -833,37 +912,8 @@ bool drm_helper_hpd_irq_event(struct drm
|
||||
@@ -842,37 +921,8 @@ bool drm_helper_hpd_irq_event(struct drm
|
||||
mutex_lock(&dev->mode_config.mutex);
|
||||
drm_connector_list_iter_begin(dev, &conn_iter);
|
||||
drm_for_each_connector_iter(connector, &conn_iter) {
|
||||
|
||||
@@ -44,7 +44,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -1802,10 +1802,11 @@ static void vc4_hdmi_audio_exit(struct v
|
||||
@@ -1804,10 +1804,11 @@ static void vc4_hdmi_audio_exit(struct v
|
||||
static irqreturn_t vc4_hdmi_hpd_irq_thread(int irq, void *priv)
|
||||
{
|
||||
struct vc4_hdmi *vc4_hdmi = priv;
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
From bcfe73a54afc6871e3dc16f6ca2c626f21fd4e8d Mon Sep 17 00:00:00 2001
|
||||
From: Steve Glendinning <steve.glendinning@smsc.com>
|
||||
Date: Thu, 19 Feb 2015 18:47:12 +0000
|
||||
Subject: [PATCH] smsx95xx: fix crimes against truesize
|
||||
|
||||
smsc95xx is adjusting truesize when it shouldn't, and following a recent patch from Eric this is now triggering warnings.
|
||||
|
||||
This patch stops smsc95xx from changing truesize.
|
||||
|
||||
Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
|
||||
---
|
||||
drivers/net/usb/smsc95xx.c | 10 ++++++++--
|
||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/usb/smsc95xx.c
|
||||
+++ b/drivers/net/usb/smsc95xx.c
|
||||
@@ -67,6 +67,10 @@ static bool turbo_mode = true;
|
||||
module_param(turbo_mode, bool, 0644);
|
||||
MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
|
||||
|
||||
+static bool truesize_mode = false;
|
||||
+module_param(truesize_mode, bool, 0644);
|
||||
+MODULE_PARM_DESC(truesize_mode, "Report larger truesize value");
|
||||
+
|
||||
static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
|
||||
u32 *data, int in_pm)
|
||||
{
|
||||
@@ -1845,7 +1849,8 @@ static int smsc95xx_rx_fixup(struct usbn
|
||||
if (dev->net->features & NETIF_F_RXCSUM)
|
||||
smsc95xx_rx_csum_offload(skb);
|
||||
skb_trim(skb, skb->len - 4); /* remove fcs */
|
||||
- skb->truesize = size + sizeof(struct sk_buff);
|
||||
+ if (truesize_mode)
|
||||
+ skb->truesize = size + sizeof(struct sk_buff);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -1863,7 +1868,8 @@ static int smsc95xx_rx_fixup(struct usbn
|
||||
if (dev->net->features & NETIF_F_RXCSUM)
|
||||
smsc95xx_rx_csum_offload(ax_skb);
|
||||
skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */
|
||||
- ax_skb->truesize = size + sizeof(struct sk_buff);
|
||||
+ if (truesize_mode)
|
||||
+ ax_skb->truesize = size + sizeof(struct sk_buff);
|
||||
|
||||
usbnet_skb_return(dev, ax_skb);
|
||||
}
|
||||
@@ -11,9 +11,9 @@ See: http://forum.kodi.tv/showthread.php?tid=285288
|
||||
|
||||
--- a/drivers/net/usb/smsc95xx.c
|
||||
+++ b/drivers/net/usb/smsc95xx.c
|
||||
@@ -71,6 +71,10 @@ static bool truesize_mode = false;
|
||||
module_param(truesize_mode, bool, 0644);
|
||||
MODULE_PARM_DESC(truesize_mode, "Report larger truesize value");
|
||||
@@ -67,6 +67,10 @@ static bool turbo_mode = true;
|
||||
module_param(turbo_mode, bool, 0644);
|
||||
MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
|
||||
|
||||
+static int packetsize = 2560;
|
||||
+module_param(packetsize, int, 0644);
|
||||
@@ -22,7 +22,7 @@ See: http://forum.kodi.tv/showthread.php?tid=285288
|
||||
static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
|
||||
u32 *data, int in_pm)
|
||||
{
|
||||
@@ -917,13 +921,13 @@ static int smsc95xx_reset(struct usbnet
|
||||
@@ -913,13 +917,13 @@ static int smsc95xx_reset(struct usbnet
|
||||
|
||||
if (!turbo_mode) {
|
||||
burst_cap = 0;
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
|
||||
|
||||
struct smsc95xx_priv {
|
||||
u32 mac_cr;
|
||||
@@ -75,6 +76,10 @@ static int packetsize = 2560;
|
||||
@@ -71,6 +72,10 @@ static int packetsize = 2560;
|
||||
module_param(packetsize, int, 0644);
|
||||
MODULE_PARM_DESC(packetsize, "Override the RX URB packet size");
|
||||
|
||||
@@ -29,7 +29,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
|
||||
static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
|
||||
u32 *data, int in_pm)
|
||||
{
|
||||
@@ -773,6 +778,53 @@ static int smsc95xx_ioctl(struct net_dev
|
||||
@@ -769,6 +774,53 @@ static int smsc95xx_ioctl(struct net_dev
|
||||
return phy_mii_ioctl(netdev->phydev, rq, cmd);
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
|
||||
static void smsc95xx_init_mac_address(struct usbnet *dev)
|
||||
{
|
||||
/* maybe the boot loader passed the MAC address in devicetree */
|
||||
@@ -795,6 +847,10 @@ static void smsc95xx_init_mac_address(st
|
||||
@@ -791,6 +843,10 @@ static void smsc95xx_init_mac_address(st
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1123,7 +1123,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
}
|
||||
--- a/drivers/usb/core/hub.c
|
||||
+++ b/drivers/usb/core/hub.c
|
||||
@@ -5676,7 +5676,7 @@ static void port_event(struct usb_hub *h
|
||||
@@ -5677,7 +5677,7 @@ static void port_event(struct usb_hub *h
|
||||
port_dev->over_current_count++;
|
||||
port_over_current_notify(port_dev);
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
--- a/drivers/firmware/raspberrypi.c
|
||||
+++ b/drivers/firmware/raspberrypi.c
|
||||
@@ -32,6 +32,8 @@ struct rpi_firmware {
|
||||
@@ -33,6 +33,8 @@ struct rpi_firmware {
|
||||
struct kref consumers;
|
||||
};
|
||||
|
||||
@@ -36,7 +36,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
static DEFINE_MUTEX(transaction_lock);
|
||||
|
||||
static void response_callback(struct mbox_client *cl, void *msg)
|
||||
@@ -280,6 +282,7 @@ static int rpi_firmware_probe(struct pla
|
||||
@@ -281,6 +283,7 @@ static int rpi_firmware_probe(struct pla
|
||||
kref_init(&fw->consumers);
|
||||
|
||||
platform_set_drvdata(pdev, fw);
|
||||
@@ -44,7 +44,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
rpi_firmware_print_firmware_revision(fw);
|
||||
rpi_register_hwmon_driver(dev, fw);
|
||||
@@ -308,6 +311,7 @@ static int rpi_firmware_remove(struct pl
|
||||
@@ -309,6 +312,7 @@ static int rpi_firmware_remove(struct pl
|
||||
rpi_clk = NULL;
|
||||
|
||||
rpi_firmware_put(fw);
|
||||
@@ -52,7 +52,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -382,7 +386,18 @@ static struct platform_driver rpi_firmwa
|
||||
@@ -383,7 +387,18 @@ static struct platform_driver rpi_firmwa
|
||||
.shutdown = rpi_firmware_shutdown,
|
||||
.remove = rpi_firmware_remove,
|
||||
};
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/firmware/raspberrypi.c
|
||||
+++ b/drivers/firmware/raspberrypi.c
|
||||
@@ -12,6 +12,7 @@
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/platform_device.h>
|
||||
@@ -21,7 +21,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
#include <linux/slab.h>
|
||||
#include <soc/bcm2835/raspberrypi-firmware.h>
|
||||
|
||||
@@ -179,6 +180,26 @@ int rpi_firmware_property(struct rpi_fir
|
||||
@@ -180,6 +181,26 @@ int rpi_firmware_property(struct rpi_fir
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rpi_firmware_property);
|
||||
|
||||
@@ -48,7 +48,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
static void
|
||||
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
|
||||
{
|
||||
@@ -387,15 +408,32 @@ static struct platform_driver rpi_firmwa
|
||||
@@ -388,15 +409,32 @@ static struct platform_driver rpi_firmwa
|
||||
.remove = rpi_firmware_remove,
|
||||
};
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
|
||||
--- a/drivers/firmware/raspberrypi.c
|
||||
+++ b/drivers/firmware/raspberrypi.c
|
||||
@@ -31,6 +31,7 @@ struct rpi_firmware {
|
||||
@@ -32,6 +32,7 @@ struct rpi_firmware {
|
||||
u32 enabled;
|
||||
|
||||
struct kref consumers;
|
||||
@@ -24,7 +24,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
};
|
||||
|
||||
static struct platform_device *g_pdev;
|
||||
@@ -176,6 +177,12 @@ int rpi_firmware_property(struct rpi_fir
|
||||
@@ -177,6 +178,12 @@ int rpi_firmware_property(struct rpi_fir
|
||||
|
||||
kfree(data);
|
||||
|
||||
@@ -37,7 +37,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rpi_firmware_property);
|
||||
@@ -200,6 +207,27 @@ static int rpi_firmware_notify_reboot(st
|
||||
@@ -201,6 +208,27 @@ static int rpi_firmware_notify_reboot(st
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
|
||||
static void
|
||||
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
|
||||
{
|
||||
@@ -229,6 +257,11 @@ rpi_register_hwmon_driver(struct device
|
||||
@@ -230,6 +258,11 @@ rpi_register_hwmon_driver(struct device
|
||||
|
||||
rpi_hwmon = platform_device_register_data(dev, "raspberrypi-hwmon",
|
||||
-1, NULL, 0);
|
||||
|
||||
@@ -27,7 +27,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
--- a/drivers/firmware/raspberrypi.c
|
||||
+++ b/drivers/firmware/raspberrypi.c
|
||||
@@ -233,6 +233,15 @@ rpi_firmware_print_firmware_revision(str
|
||||
@@ -234,6 +234,15 @@ rpi_firmware_print_firmware_revision(str
|
||||
{
|
||||
time64_t date_and_time;
|
||||
u32 packet;
|
||||
@@ -43,7 +43,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
int ret = rpi_firmware_property(fw,
|
||||
RPI_FIRMWARE_GET_FIRMWARE_REVISION,
|
||||
&packet, sizeof(packet));
|
||||
@@ -242,7 +251,35 @@ rpi_firmware_print_firmware_revision(str
|
||||
@@ -243,7 +252,35 @@ rpi_firmware_print_firmware_revision(str
|
||||
|
||||
/* This is not compatible with y2038 */
|
||||
date_and_time = packet;
|
||||
@@ -80,7 +80,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -339,6 +376,7 @@ static int rpi_firmware_probe(struct pla
|
||||
@@ -340,6 +377,7 @@ static int rpi_firmware_probe(struct pla
|
||||
g_pdev = pdev;
|
||||
|
||||
rpi_firmware_print_firmware_revision(fw);
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
@@ -2615,7 +2615,7 @@ static void bcmgenet_init_tx_ring(struct
|
||||
@@ -2621,7 +2621,7 @@ static void bcmgenet_init_tx_ring(struct
|
||||
|
||||
bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX);
|
||||
bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX);
|
||||
@@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
/* Disable rate control for now */
|
||||
bcmgenet_tdma_ring_writel(priv, index, flow_period_val,
|
||||
TDMA_FLOW_PERIOD);
|
||||
@@ -4083,9 +4083,12 @@ static int bcmgenet_probe(struct platfor
|
||||
@@ -4103,9 +4103,12 @@ static int bcmgenet_probe(struct platfor
|
||||
netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1);
|
||||
|
||||
/* Set default coalescing parameters */
|
||||
|
||||
@@ -20,7 +20,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
|
||||
+++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
|
||||
@@ -292,6 +292,8 @@ int bcmgenet_mii_probe(struct net_device
|
||||
@@ -296,6 +296,8 @@ int bcmgenet_mii_probe(struct net_device
|
||||
/* Communicate the integrated PHY revision */
|
||||
if (priv->internal_phy)
|
||||
phy_flags = priv->gphy_rev;
|
||||
|
||||
@@ -37,7 +37,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
static inline void bcmgenet_writel(u32 value, void __iomem *offset)
|
||||
{
|
||||
@@ -2446,6 +2449,11 @@ static void reset_umac(struct bcmgenet_p
|
||||
@@ -2450,6 +2453,11 @@ static void reset_umac(struct bcmgenet_p
|
||||
bcmgenet_rbuf_ctrl_set(priv, 0);
|
||||
udelay(10);
|
||||
|
||||
@@ -47,5 +47,5 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
+ }
|
||||
+
|
||||
/* issue soft reset and disable MAC while updating its registers */
|
||||
spin_lock_bh(&priv->reg_lock);
|
||||
bcmgenet_umac_writel(priv, CMD_SW_RESET, UMAC_CMD);
|
||||
udelay(2);
|
||||
|
||||
@@ -36,7 +36,7 @@ Co-authored-by: Phil Elwell <phil@raspberrypi.org>
|
||||
MODULE_DESCRIPTION("BCM2835 clock driver");
|
||||
--- a/drivers/firmware/raspberrypi.c
|
||||
+++ b/drivers/firmware/raspberrypi.c
|
||||
@@ -499,7 +499,7 @@ out2:
|
||||
@@ -500,7 +500,7 @@ out2:
|
||||
out1:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/drivers/spi/spi.c
|
||||
+++ b/drivers/spi/spi.c
|
||||
@@ -3492,6 +3492,7 @@ static int __spi_validate_bits_per_word(
|
||||
@@ -3496,6 +3496,7 @@ static int __spi_validate_bits_per_word(
|
||||
*/
|
||||
int spi_setup(struct spi_device *spi)
|
||||
{
|
||||
@@ -40,7 +40,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
unsigned bad_bits, ugly_bits;
|
||||
int status;
|
||||
|
||||
@@ -3513,6 +3514,14 @@ int spi_setup(struct spi_device *spi)
|
||||
@@ -3517,6 +3518,14 @@ int spi_setup(struct spi_device *spi)
|
||||
(SPI_TX_DUAL | SPI_TX_QUAD | SPI_TX_OCTAL |
|
||||
SPI_RX_DUAL | SPI_RX_QUAD | SPI_RX_OCTAL)))
|
||||
return -EINVAL;
|
||||
|
||||
@@ -1,70 +0,0 @@
|
||||
From 87bb6f0edf9a4a14d9b41bcfe97216f74f730b43 Mon Sep 17 00:00:00 2001
|
||||
From: Phil Elwell <phil@raspberrypi.com>
|
||||
Date: Fri, 25 Sep 2020 15:07:23 +0100
|
||||
Subject: [PATCH] net: bcmgenet: Reset RBUF on first open
|
||||
|
||||
If the RBUF logic is not reset when the kernel starts then there
|
||||
may be some data left over from any network boot loader. If the
|
||||
64-byte packet headers are enabled then this can be fatal.
|
||||
|
||||
Extend bcmgenet_dma_disable to do perform the reset, but not when
|
||||
called from bcmgenet_resume in order to preserve a wake packet.
|
||||
|
||||
N.B. This different handling of resume is just based on a hunch -
|
||||
why else wouldn't one reset the RBUF as well as the TBUF? If this
|
||||
isn't the case then it's easy to change the patch to make the RBUF
|
||||
reset unconditional.
|
||||
|
||||
See: https://github.com/raspberrypi/linux/issues/3850
|
||||
|
||||
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
---
|
||||
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 16 ++++++++++++----
|
||||
1 file changed, 12 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
|
||||
@@ -3264,7 +3264,7 @@ static void bcmgenet_get_hw_addr(struct
|
||||
}
|
||||
|
||||
/* Returns a reusable dma control register value */
|
||||
-static u32 bcmgenet_dma_disable(struct bcmgenet_priv *priv)
|
||||
+static u32 bcmgenet_dma_disable(struct bcmgenet_priv *priv, bool flush_rx)
|
||||
{
|
||||
unsigned int i;
|
||||
u32 reg;
|
||||
@@ -3289,6 +3289,14 @@ static u32 bcmgenet_dma_disable(struct b
|
||||
udelay(10);
|
||||
bcmgenet_umac_writel(priv, 0, UMAC_TX_FLUSH);
|
||||
|
||||
+ if (flush_rx) {
|
||||
+ reg = bcmgenet_rbuf_ctrl_get(priv);
|
||||
+ bcmgenet_rbuf_ctrl_set(priv, reg | BIT(0));
|
||||
+ udelay(10);
|
||||
+ bcmgenet_rbuf_ctrl_set(priv, reg);
|
||||
+ udelay(10);
|
||||
+ }
|
||||
+
|
||||
return dma_ctrl;
|
||||
}
|
||||
|
||||
@@ -3352,8 +3360,8 @@ static int bcmgenet_open(struct net_devi
|
||||
|
||||
bcmgenet_set_hw_addr(priv, dev->dev_addr);
|
||||
|
||||
- /* Disable RX/TX DMA and flush TX queues */
|
||||
- dma_ctrl = bcmgenet_dma_disable(priv);
|
||||
+ /* Disable RX/TX DMA and flush TX and RX queues */
|
||||
+ dma_ctrl = bcmgenet_dma_disable(priv, true);
|
||||
|
||||
/* Reinitialize TDMA and RDMA and SW housekeeping */
|
||||
ret = bcmgenet_init_dma(priv);
|
||||
@@ -4212,7 +4220,7 @@ static int bcmgenet_resume(struct device
|
||||
bcmgenet_hfb_create_rxnfc_filter(priv, rule);
|
||||
|
||||
/* Disable RX/TX DMA and flush TX queues */
|
||||
- dma_ctrl = bcmgenet_dma_disable(priv);
|
||||
+ dma_ctrl = bcmgenet_dma_disable(priv, false);
|
||||
|
||||
/* Reinitialize TDMA and RDMA and SW housekeeping */
|
||||
ret = bcmgenet_init_dma(priv);
|
||||
@@ -20,7 +20,7 @@ mechanism to be implemented for OS upgrades.
|
||||
|
||||
--- a/drivers/firmware/raspberrypi.c
|
||||
+++ b/drivers/firmware/raspberrypi.c
|
||||
@@ -193,6 +193,7 @@ static int rpi_firmware_notify_reboot(st
|
||||
@@ -194,6 +194,7 @@ static int rpi_firmware_notify_reboot(st
|
||||
{
|
||||
struct rpi_firmware *fw;
|
||||
struct platform_device *pdev = g_pdev;
|
||||
@@ -28,7 +28,7 @@ mechanism to be implemented for OS upgrades.
|
||||
|
||||
if (!pdev)
|
||||
return 0;
|
||||
@@ -201,8 +202,28 @@ static int rpi_firmware_notify_reboot(st
|
||||
@@ -202,8 +203,28 @@ static int rpi_firmware_notify_reboot(st
|
||||
if (!fw)
|
||||
return 0;
|
||||
|
||||
|
||||
@@ -157,7 +157,7 @@ Signed-off-by: Joerg Quinten <aBUGSworstnightmare@gmail.com>
|
||||
static const struct drm_display_mode innolux_at070tn92_mode = {
|
||||
.clock = 33333,
|
||||
.hdisplay = 800,
|
||||
@@ -4669,6 +4701,9 @@ static const struct of_device_id platfor
|
||||
@@ -4672,6 +4704,9 @@ static const struct of_device_id platfor
|
||||
.compatible = "innolux,at043tn24",
|
||||
.data = &innolux_at043tn24,
|
||||
}, {
|
||||
|
||||
@@ -29,7 +29,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -2370,6 +2376,7 @@ static int vc5_hdmi_init_resources(struc
|
||||
@@ -2372,6 +2378,7 @@ static int vc5_hdmi_init_resources(struc
|
||||
struct platform_device *pdev = vc4_hdmi->pdev;
|
||||
struct device *dev = &pdev->dev;
|
||||
struct resource *res;
|
||||
@@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hdmi");
|
||||
if (!res)
|
||||
@@ -2466,6 +2473,38 @@ static int vc5_hdmi_init_resources(struc
|
||||
@@ -2468,6 +2475,38 @@ static int vc5_hdmi_init_resources(struc
|
||||
return PTR_ERR(vc4_hdmi->reset);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/gpu/drm/panel/panel-simple.c
|
||||
+++ b/drivers/gpu/drm/panel/panel-simple.c
|
||||
@@ -3766,6 +3766,31 @@ static const struct panel_desc qishenglo
|
||||
@@ -3769,6 +3769,31 @@ static const struct panel_desc qishenglo
|
||||
.connector_type = DRM_MODE_CONNECTOR_DPI,
|
||||
};
|
||||
|
||||
@@ -47,7 +47,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
static const struct display_timing rocktech_rk070er9427_timing = {
|
||||
.pixelclock = { 26400000, 33300000, 46800000 },
|
||||
.hactive = { 800, 800, 800 },
|
||||
@@ -4848,6 +4873,9 @@ static const struct of_device_id platfor
|
||||
@@ -4851,6 +4876,9 @@ static const struct of_device_id platfor
|
||||
.compatible = "qishenglong,gopher2b-lcd",
|
||||
.data = &qishenglong_gopher2b_lcd,
|
||||
}, {
|
||||
|
||||
@@ -20,7 +20,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -2558,7 +2558,8 @@ static int vc4_hdmi_bind(struct device *
|
||||
@@ -2560,7 +2560,8 @@ static int vc4_hdmi_bind(struct device *
|
||||
* vc4_hdmi_disable_scrambling() will thus run at boot, make
|
||||
* sure it's disabled, and avoid any inconsistency.
|
||||
*/
|
||||
|
||||
@@ -55,7 +55,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
/* HDMI audio codec callbacks */
|
||||
static void vc4_hdmi_audio_set_mai_clock(struct vc4_hdmi *vc4_hdmi,
|
||||
unsigned int samplerate)
|
||||
@@ -2778,6 +2784,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
@@ -2780,6 +2786,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
.phy_rng_disable = vc5_hdmi_phy_rng_disable,
|
||||
.channel_map = vc5_hdmi_channel_map,
|
||||
.supports_hdr = true,
|
||||
@@ -63,7 +63,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
};
|
||||
|
||||
static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = {
|
||||
@@ -2806,6 +2813,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
@@ -2808,6 +2815,7 @@ static const struct vc4_hdmi_variant bcm
|
||||
.phy_rng_disable = vc5_hdmi_phy_rng_disable,
|
||||
.channel_map = vc5_hdmi_channel_map,
|
||||
.supports_hdr = true,
|
||||
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -2194,7 +2194,6 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
@@ -2196,7 +2196,6 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
struct platform_device *pdev = vc4_hdmi->pdev;
|
||||
struct device *dev = &pdev->dev;
|
||||
unsigned long flags;
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
int ret;
|
||||
|
||||
if (!of_find_property(dev->of_node, "interrupts", NULL)) {
|
||||
@@ -2214,15 +2213,6 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
@@ -2216,15 +2215,6 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector);
|
||||
cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
|
||||
|
||||
@@ -46,7 +46,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
if (vc4_hdmi->variant->external_irq_controller) {
|
||||
ret = request_threaded_irq(platform_get_irq_byname(pdev, "cec-rx"),
|
||||
vc4_cec_irq_handler_rx_bare,
|
||||
@@ -2285,6 +2275,29 @@ static void vc4_hdmi_cec_exit(struct vc4
|
||||
@@ -2287,6 +2277,29 @@ static void vc4_hdmi_cec_exit(struct vc4
|
||||
|
||||
cec_unregister_adapter(vc4_hdmi->cec_adap);
|
||||
}
|
||||
@@ -76,7 +76,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
#else
|
||||
static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi)
|
||||
{
|
||||
@@ -2293,6 +2306,10 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
@@ -2295,6 +2308,10 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
|
||||
static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) {};
|
||||
|
||||
@@ -87,7 +87,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||||
#endif
|
||||
|
||||
static int vc4_hdmi_build_regset(struct vc4_hdmi *vc4_hdmi,
|
||||
@@ -2527,6 +2544,15 @@ static int vc4_hdmi_runtime_resume(struc
|
||||
@@ -2529,6 +2546,15 @@ static int vc4_hdmi_runtime_resume(struc
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com>
|
||||
|
||||
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||||
@@ -2281,7 +2281,7 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
@@ -2283,7 +2283,7 @@ static int vc4_hdmi_cec_init(struct vc4_
|
||||
|
||||
static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) {};
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ Acked-by: Maxime Ripard <maxime@cerno.tech>
|
||||
static const struct drm_display_mode giantplus_gpg482739qs5_mode = {
|
||||
.clock = 9000,
|
||||
.hdisplay = 480,
|
||||
@@ -4711,6 +4737,9 @@ static const struct of_device_id platfor
|
||||
@@ -4714,6 +4740,9 @@ static const struct of_device_id platfor
|
||||
.compatible = "friendlyarm,hd702e",
|
||||
.data = &friendlyarm_hd702e,
|
||||
}, {
|
||||
|
||||
@@ -104,8 +104,8 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
+ if (clk->min_rate > 0 || clk->max_rate < ULONG_MAX)
|
||||
+ clk_set_rate_range_nolock(clk, 0, ULONG_MAX);
|
||||
|
||||
owner = clk->core->owner;
|
||||
kref_put(&clk->core->ref, __clk_release);
|
||||
clk_prepare_unlock();
|
||||
|
||||
--- a/drivers/clk/clk_test.c
|
||||
+++ b/drivers/clk/clk_test.c
|
||||
@@ -760,9 +760,65 @@ static void clk_range_test_multiple_set_
|
||||
|
||||
@@ -79,7 +79,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
return MODE_CLOCK_HIGH;
|
||||
|
||||
if (info->max_tmds_clock && clock > (info->max_tmds_clock * 1000))
|
||||
@@ -3158,14 +3160,6 @@ static int vc4_hdmi_bind(struct device *
|
||||
@@ -3160,14 +3162,6 @@ static int vc4_hdmi_bind(struct device *
|
||||
vc4_hdmi->disable_wifi_frequencies =
|
||||
of_property_read_bool(dev->of_node, "wifi-2.4ghz-coexistence");
|
||||
|
||||
|
||||
@@ -156,7 +156,7 @@ Signed-off-by: Vinod Koul <vkoul@kernel.org>
|
||||
if (priv && (priv->quirks & XHCI_SG_TRB_CACHE_SIZE_QUIRK))
|
||||
--- a/drivers/usb/host/xhci-plat.h
|
||||
+++ b/drivers/usb/host/xhci-plat.h
|
||||
@@ -13,7 +13,6 @@
|
||||
@@ -15,7 +15,6 @@ struct usb_hcd;
|
||||
struct xhci_plat_priv {
|
||||
const char *firmware_name;
|
||||
unsigned long long quirks;
|
||||
|
||||
@@ -25,7 +25,7 @@ Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -1236,6 +1236,34 @@ int __get_mtd_device(struct mtd_info *mt
|
||||
@@ -1238,6 +1238,34 @@ int __get_mtd_device(struct mtd_info *mt
|
||||
EXPORT_SYMBOL_GPL(__get_mtd_device);
|
||||
|
||||
/**
|
||||
|
||||
@@ -31,7 +31,7 @@ Link: https://lore.kernel.org/linux-mtd/20220629125737.14418-2-kernel@kempniu.pl
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -1676,6 +1676,9 @@ int mtd_read_oob(struct mtd_info *mtd, l
|
||||
@@ -1678,6 +1678,9 @@ int mtd_read_oob(struct mtd_info *mtd, l
|
||||
if (!master->_read_oob && (!master->_read || ops->oobbuf))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
@@ -41,7 +41,7 @@ Link: https://lore.kernel.org/linux-mtd/20220629125737.14418-2-kernel@kempniu.pl
|
||||
if (mtd->flags & MTD_SLC_ON_MLC_EMULATION)
|
||||
ret_code = mtd_io_emulated_slc(mtd, from, true, ops);
|
||||
else
|
||||
@@ -1693,6 +1696,8 @@ int mtd_read_oob(struct mtd_info *mtd, l
|
||||
@@ -1695,6 +1698,8 @@ int mtd_read_oob(struct mtd_info *mtd, l
|
||||
return ret_code;
|
||||
if (mtd->ecc_strength == 0)
|
||||
return 0; /* device lacks ecc */
|
||||
|
||||
@@ -17,7 +17,7 @@ Link: https://lore.kernel.org/linux-mtd/20230308082021.870459-4-michael@walle.cc
|
||||
|
||||
--- a/drivers/mtd/mtdcore.c
|
||||
+++ b/drivers/mtd/mtdcore.c
|
||||
@@ -960,8 +960,8 @@ static int mtd_otp_nvmem_add(struct mtd_
|
||||
@@ -962,8 +962,8 @@ static int mtd_otp_nvmem_add(struct mtd_
|
||||
nvmem = mtd_otp_nvmem_register(mtd, "user-otp", size,
|
||||
mtd_nvmem_user_otp_reg_read);
|
||||
if (IS_ERR(nvmem)) {
|
||||
@@ -28,7 +28,7 @@ Link: https://lore.kernel.org/linux-mtd/20230308082021.870459-4-michael@walle.cc
|
||||
}
|
||||
mtd->otp_user_nvmem = nvmem;
|
||||
}
|
||||
@@ -978,7 +978,6 @@ static int mtd_otp_nvmem_add(struct mtd_
|
||||
@@ -980,7 +980,6 @@ static int mtd_otp_nvmem_add(struct mtd_
|
||||
nvmem = mtd_otp_nvmem_register(mtd, "factory-otp", size,
|
||||
mtd_nvmem_fact_otp_reg_read);
|
||||
if (IS_ERR(nvmem)) {
|
||||
@@ -36,7 +36,7 @@ Link: https://lore.kernel.org/linux-mtd/20230308082021.870459-4-michael@walle.cc
|
||||
err = PTR_ERR(nvmem);
|
||||
goto err;
|
||||
}
|
||||
@@ -991,7 +990,7 @@ static int mtd_otp_nvmem_add(struct mtd_
|
||||
@@ -993,7 +992,7 @@ static int mtd_otp_nvmem_add(struct mtd_
|
||||
err:
|
||||
if (mtd->otp_user_nvmem)
|
||||
nvmem_unregister(mtd->otp_user_nvmem);
|
||||
|
||||
@@ -148,7 +148,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
* of_find_node_by_phandle - Find a node given a phandle
|
||||
--- a/drivers/spi/spi.c
|
||||
+++ b/drivers/spi/spi.c
|
||||
@@ -2140,8 +2140,8 @@ of_register_spi_device(struct spi_contro
|
||||
@@ -2144,8 +2144,8 @@ of_register_spi_device(struct spi_contro
|
||||
}
|
||||
|
||||
/* Select device driver */
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
From 472d7b9e8141729ec1e3fe6821b88563f6379533 Mon Sep 17 00:00:00 2001
|
||||
From: Olliver Schinagl <oliver@schinagl.nl>
|
||||
Date: Tue, 30 Aug 2022 15:46:13 +0200
|
||||
Subject: [PATCH] dt-bindings: leds: Expand LED_COLOR_ID definitions
|
||||
|
||||
In commit 853a78a7d6c7 (dt-bindings: leds: Add LED_COLOR_ID definitions,
|
||||
Sun Jun 9 20:19:04 2019 +0200) the most basic color definitions where
|
||||
added. However, there's a little more very common LED colors.
|
||||
|
||||
While the documentation states 'add what is missing', engineers tend to
|
||||
be lazy and will just use what currently exists. So this patch will take
|
||||
(a) list from online retailers [0], [1], [2] and use the common LED colors from
|
||||
there, this being reasonable as this is what is currently available to purchase.
|
||||
|
||||
Note, that LIME seems to be the modern take to 'Yellow-green' or
|
||||
'Yellowish-green' from some older datasheets.
|
||||
|
||||
[0]: https://www.digikey.com/en/products/filter/led-lighting-color/125
|
||||
[1]: https://eu.mouser.com/c/optoelectronics/led-lighting/led-emitters/standard-leds-smd
|
||||
[2]: https://nl.farnell.com/en-NL/c/optoelectronics-displays/led-products/standard-single-colour-leds-under-75ma
|
||||
|
||||
Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
|
||||
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
|
||||
Acked-by: Alexander Dahl <ada@thorsis.com>
|
||||
Acked-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
|
||||
Link: https://lore.kernel.org/r/20220830134613.1564059-1-oliver@schinagl.nl
|
||||
Signed-off-by: Rob Herring <robh@kernel.org>
|
||||
---
|
||||
include/dt-bindings/leds/common.h | 7 ++++++-
|
||||
1 file changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/include/dt-bindings/leds/common.h
|
||||
+++ b/include/dt-bindings/leds/common.h
|
||||
@@ -33,7 +33,12 @@
|
||||
#define LED_COLOR_ID_MULTI 8 /* For multicolor LEDs */
|
||||
#define LED_COLOR_ID_RGB 9 /* For multicolor LEDs that can do arbitrary color,
|
||||
so this would include RGBW and similar */
|
||||
-#define LED_COLOR_ID_MAX 10
|
||||
+#define LED_COLOR_ID_PURPLE 10
|
||||
+#define LED_COLOR_ID_ORANGE 11
|
||||
+#define LED_COLOR_ID_PINK 12
|
||||
+#define LED_COLOR_ID_CYAN 13
|
||||
+#define LED_COLOR_ID_LIME 14
|
||||
+#define LED_COLOR_ID_MAX 15
|
||||
|
||||
/* Standard LED functions */
|
||||
/* Keyboard LEDs, usually it would be input4::capslock etc. */
|
||||
@@ -0,0 +1,29 @@
|
||||
From a067943129b4ec6b835e02cfd5fbef01093c1471 Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Jirman <megi@xff.cz>
|
||||
Date: Sun, 8 Oct 2023 16:40:13 +0200
|
||||
Subject: [PATCH] leds: core: Add more colors from DT bindings to led_colors
|
||||
|
||||
The colors are already part of DT bindings. Make sure the kernel is
|
||||
able to convert them to strings.
|
||||
|
||||
Signed-off-by: Ondrej Jirman <megi@xff.cz>
|
||||
Link: https://lore.kernel.org/r/20231008144014.1180334-1-megi@xff.cz
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
drivers/leds/led-core.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/drivers/leds/led-core.c
|
||||
+++ b/drivers/leds/led-core.c
|
||||
@@ -36,6 +36,11 @@ const char * const led_colors[LED_COLOR_
|
||||
[LED_COLOR_ID_IR] = "ir",
|
||||
[LED_COLOR_ID_MULTI] = "multicolor",
|
||||
[LED_COLOR_ID_RGB] = "rgb",
|
||||
+ [LED_COLOR_ID_PURPLE] = "purple",
|
||||
+ [LED_COLOR_ID_ORANGE] = "orange",
|
||||
+ [LED_COLOR_ID_PINK] = "pink",
|
||||
+ [LED_COLOR_ID_CYAN] = "cyan",
|
||||
+ [LED_COLOR_ID_LIME] = "lime",
|
||||
};
|
||||
EXPORT_SYMBOL_GPL(led_colors);
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
From ec18a2a83b8b9f7e39c80105ea148c769c46227b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Wed, 17 Jan 2024 16:17:36 +0100
|
||||
Subject: [PATCH] dt-bindings: leds: Add FUNCTION defines for per-band WLANs
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Most wireless routers and access points can operate in multiple bands
|
||||
simultaneously. Vendors often equip their devices with per-band LEDs.
|
||||
|
||||
Add defines for those very common functions to allow cleaner & clearer
|
||||
bindings.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Acked-by: Rob Herring <robh@kernel.org>
|
||||
Link: https://lore.kernel.org/r/20240117151736.27440-1-zajec5@gmail.com
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
include/dt-bindings/leds/common.h | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/include/dt-bindings/leds/common.h
|
||||
+++ b/include/dt-bindings/leds/common.h
|
||||
@@ -94,6 +94,9 @@
|
||||
#define LED_FUNCTION_USB "usb"
|
||||
#define LED_FUNCTION_WAN "wan"
|
||||
#define LED_FUNCTION_WLAN "wlan"
|
||||
+#define LED_FUNCTION_WLAN_2GHZ "wlan-2ghz"
|
||||
+#define LED_FUNCTION_WLAN_5GHZ "wlan-5ghz"
|
||||
+#define LED_FUNCTION_WLAN_6GHZ "wlan-6ghz"
|
||||
#define LED_FUNCTION_WPS "wps"
|
||||
|
||||
#endif /* __DT_BINDINGS_LEDS_H */
|
||||
@@ -0,0 +1,35 @@
|
||||
From 64e558500d2d04878b8a6d6578850c475171d6ba Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Fri, 23 Feb 2024 12:22:23 +0100
|
||||
Subject: [PATCH] dt-bindings: leds: Add LED_FUNCTION_WAN_ONLINE for Internet
|
||||
access
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
It's common for routers to have LED indicating link on the WAN port.
|
||||
|
||||
Some devices however have an extra LED that's meant to be used if WAN
|
||||
connection is actually "online" (there is Internet access available).
|
||||
|
||||
It was suggested to add #define for such use case.
|
||||
|
||||
Link: https://lore.kernel.org/linux-devicetree/80e92209-5578-44e7-bd4b-603a29053ddf@collabora.com/T/#u
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
|
||||
Link: https://lore.kernel.org/r/20240223112223.1368-1-zajec5@gmail.com
|
||||
Signed-off-by: Lee Jones <lee@kernel.org>
|
||||
---
|
||||
include/dt-bindings/leds/common.h | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/include/dt-bindings/leds/common.h
|
||||
+++ b/include/dt-bindings/leds/common.h
|
||||
@@ -93,6 +93,7 @@
|
||||
#define LED_FUNCTION_TX "tx"
|
||||
#define LED_FUNCTION_USB "usb"
|
||||
#define LED_FUNCTION_WAN "wan"
|
||||
+#define LED_FUNCTION_WAN_ONLINE "wan-online"
|
||||
#define LED_FUNCTION_WLAN "wlan"
|
||||
#define LED_FUNCTION_WLAN_2GHZ "wlan-2ghz"
|
||||
#define LED_FUNCTION_WLAN_5GHZ "wlan-5ghz"
|
||||
@@ -77,7 +77,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||
|
||||
#include "mtdcore.h"
|
||||
|
||||
@@ -1106,6 +1107,8 @@ int mtd_device_parse_register(struct mtd
|
||||
@@ -1108,6 +1109,8 @@ int mtd_device_parse_register(struct mtd
|
||||
register_reboot_notifier(&mtd->reboot_notifier);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Subject: [PATCH] net/dsa/mv88e6xxx: disable ATU violation
|
||||
|
||||
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
||||
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
||||
@@ -2995,6 +2995,9 @@ static int mv88e6xxx_setup_port(struct m
|
||||
@@ -3005,6 +3005,9 @@ static int mv88e6xxx_setup_port(struct m
|
||||
else
|
||||
reg = 1 << port;
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
*/
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -2855,6 +2855,10 @@ static inline int pskb_trim(struct sk_bu
|
||||
@@ -2870,6 +2870,10 @@ static inline int pskb_trim(struct sk_bu
|
||||
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/**
|
||||
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
|
||||
* @skb: buffer to alter
|
||||
@@ -3005,16 +3009,6 @@ static inline struct sk_buff *dev_alloc_
|
||||
@@ -3020,16 +3024,6 @@ static inline struct sk_buff *dev_alloc_
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -396,7 +396,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
--- a/net/ipv4/route.c
|
||||
+++ b/net/ipv4/route.c
|
||||
@@ -387,6 +387,9 @@ static struct pernet_operations ip_rt_pr
|
||||
@@ -388,6 +388,9 @@ static struct pernet_operations ip_rt_pr
|
||||
|
||||
static int __init ip_rt_proc_init(void)
|
||||
{
|
||||
|
||||
@@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -3346,6 +3348,7 @@ static int packet_create(struct net *net
|
||||
@@ -3345,6 +3347,7 @@ static int packet_create(struct net *net
|
||||
mutex_init(&po->pg_vec_lock);
|
||||
po->rollover = NULL;
|
||||
po->prot_hook.func = packet_rcv;
|
||||
@@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (sock->type == SOCK_PACKET)
|
||||
po->prot_hook.func = packet_rcv_spkt;
|
||||
@@ -3983,6 +3986,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
@@ -3982,6 +3985,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
|
||||
return 0;
|
||||
}
|
||||
@@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
default:
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
@@ -4039,6 +4052,13 @@ static int packet_getsockopt(struct sock
|
||||
@@ -4038,6 +4051,13 @@ static int packet_getsockopt(struct sock
|
||||
case PACKET_VNET_HDR:
|
||||
val = po->has_vnet_hdr;
|
||||
break;
|
||||
|
||||
@@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -2821,7 +2821,7 @@ static inline int pskb_network_may_pull(
|
||||
@@ -2836,7 +2836,7 @@ static inline int pskb_network_may_pull(
|
||||
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
|
||||
*/
|
||||
#ifndef NET_SKB_PAD
|
||||
|
||||
@@ -110,7 +110,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
return -EINVAL;
|
||||
--- a/net/ipv6/route.c
|
||||
+++ b/net/ipv6/route.c
|
||||
@@ -97,6 +97,8 @@ static int ip6_pkt_discard(struct sk_bu
|
||||
@@ -98,6 +98,8 @@ static int ip6_pkt_discard(struct sk_bu
|
||||
static int ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb);
|
||||
static int ip6_pkt_prohibit(struct sk_buff *skb);
|
||||
static int ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk_buff *skb);
|
||||
@@ -119,7 +119,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
static void ip6_link_failure(struct sk_buff *skb);
|
||||
static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,
|
||||
struct sk_buff *skb, u32 mtu,
|
||||
@@ -312,6 +314,18 @@ static const struct rt6_info ip6_prohibi
|
||||
@@ -313,6 +315,18 @@ static const struct rt6_info ip6_prohibi
|
||||
.rt6i_flags = (RTF_REJECT | RTF_NONEXTHOP),
|
||||
};
|
||||
|
||||
@@ -138,7 +138,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
static const struct rt6_info ip6_blk_hole_entry_template = {
|
||||
.dst = {
|
||||
.__refcnt = ATOMIC_INIT(1),
|
||||
@@ -1033,6 +1047,7 @@ static const int fib6_prop[RTN_MAX + 1]
|
||||
@@ -1034,6 +1048,7 @@ static const int fib6_prop[RTN_MAX + 1]
|
||||
[RTN_BLACKHOLE] = -EINVAL,
|
||||
[RTN_UNREACHABLE] = -EHOSTUNREACH,
|
||||
[RTN_PROHIBIT] = -EACCES,
|
||||
@@ -146,7 +146,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
[RTN_THROW] = -EAGAIN,
|
||||
[RTN_NAT] = -EINVAL,
|
||||
[RTN_XRESOLVE] = -EINVAL,
|
||||
@@ -1068,6 +1083,10 @@ static void ip6_rt_init_dst_reject(struc
|
||||
@@ -1069,6 +1084,10 @@ static void ip6_rt_init_dst_reject(struc
|
||||
rt->dst.output = ip6_pkt_prohibit_out;
|
||||
rt->dst.input = ip6_pkt_prohibit;
|
||||
break;
|
||||
@@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
case RTN_THROW:
|
||||
case RTN_UNREACHABLE:
|
||||
default:
|
||||
@@ -4557,6 +4576,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
@@ -4561,6 +4580,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
||||
}
|
||||
|
||||
@@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
/*
|
||||
* Allocate a dst for local (unicast / anycast) address.
|
||||
*/
|
||||
@@ -5044,7 +5074,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
@@ -5048,7 +5078,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
||||
rtm->rtm_type == RTN_BLACKHOLE ||
|
||||
rtm->rtm_type == RTN_PROHIBIT ||
|
||||
@@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
cfg->fc_flags |= RTF_REJECT;
|
||||
|
||||
if (rtm->rtm_type == RTN_LOCAL)
|
||||
@@ -6291,6 +6322,8 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6295,6 +6326,8 @@ static int ip6_route_dev_notify(struct n
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
||||
@@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||
#endif
|
||||
@@ -6302,6 +6335,7 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6306,6 +6339,7 @@ static int ip6_route_dev_notify(struct n
|
||||
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
|
||||
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
|
||||
#endif
|
||||
}
|
||||
@@ -6493,6 +6527,8 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6497,6 +6531,8 @@ static int __net_init ip6_route_net_init
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.fib6_has_custom_rules = false;
|
||||
@@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
|
||||
sizeof(*net->ipv6.ip6_prohibit_entry),
|
||||
GFP_KERNEL);
|
||||
@@ -6503,11 +6539,21 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6507,11 +6543,21 @@ static int __net_init ip6_route_net_init
|
||||
ip6_template_metrics, true);
|
||||
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
|
||||
|
||||
@@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||
ip6_template_metrics, true);
|
||||
@@ -6534,6 +6580,8 @@ out:
|
||||
@@ -6538,6 +6584,8 @@ out:
|
||||
return ret;
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
@@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
out_ip6_prohibit_entry:
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
out_ip6_null_entry:
|
||||
@@ -6553,6 +6601,7 @@ static void __net_exit ip6_route_net_exi
|
||||
@@ -6557,6 +6605,7 @@ static void __net_exit ip6_route_net_exi
|
||||
kfree(net->ipv6.ip6_null_entry);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
@@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||
#endif
|
||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||
@@ -6636,6 +6685,9 @@ void __init ip6_route_init_special_entri
|
||||
@@ -6640,6 +6689,9 @@ void __init ip6_route_init_special_entri
|
||||
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
|
||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
|
||||
@@ -17,7 +17,7 @@ Signed-off-by: Alexander Duyck <alexanderduyck@fb.com>
|
||||
|
||||
--- a/net/core/skbuff.c
|
||||
+++ b/net/core/skbuff.c
|
||||
@@ -4360,6 +4360,15 @@ int skb_gro_receive(struct sk_buff *p, s
|
||||
@@ -4371,6 +4371,15 @@ int skb_gro_receive(struct sk_buff *p, s
|
||||
if (unlikely(p->len + len >= 65536 || NAPI_GRO_CB(skb)->flush))
|
||||
return -E2BIG;
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
|
||||
int (*poll)(struct napi_struct *, int), int weight)
|
||||
{
|
||||
@@ -11384,6 +11459,9 @@ static int dev_cpu_dead(unsigned int old
|
||||
@@ -11385,6 +11460,9 @@ static int dev_cpu_dead(unsigned int old
|
||||
raise_softirq_irqoff(NET_TX_SOFTIRQ);
|
||||
local_irq_enable();
|
||||
|
||||
@@ -172,7 +172,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
#ifdef CONFIG_RPS
|
||||
remsd = oldsd->rps_ipi_list;
|
||||
oldsd->rps_ipi_list = NULL;
|
||||
@@ -11723,6 +11801,7 @@ static int __init net_dev_init(void)
|
||||
@@ -11724,6 +11802,7 @@ static int __init net_dev_init(void)
|
||||
sd->cpu = i;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
|
||||
|
||||
--- a/drivers/net/dsa/mv88e6xxx/chip.c
|
||||
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
|
||||
@@ -6343,6 +6343,7 @@ static int mv88e6xxx_register_switch(str
|
||||
@@ -6385,6 +6385,7 @@ static int mv88e6xxx_register_switch(str
|
||||
ds->ops = &mv88e6xxx_switch_ops;
|
||||
ds->ageing_time_min = chip->info->age_time_coeff;
|
||||
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
From 4a44a52f16ccd3d03e0cb5fb437a5eb31a5f9f05 Mon Sep 17 00:00:00 2001
|
||||
From: David Bauer <mail@david-bauer.net>
|
||||
Date: Mon, 26 Feb 2024 21:39:34 +0100
|
||||
Subject: [PATCH] net l2tp: drop flow hash on forward
|
||||
|
||||
Drop the flow-hash of the skb when forwarding to the L2TP netdev.
|
||||
|
||||
This avoids the L2TP qdisc from using the flow-hash from the outer
|
||||
packet, which is identical for every flow within the tunnel.
|
||||
|
||||
This does not affect every platform but is specific for the ethernet
|
||||
driver. It depends on the platform including L4 information in the
|
||||
flow-hash.
|
||||
|
||||
Signed-off-by: David Bauer <mail@david-bauer.net>
|
||||
---
|
||||
net/l2tp/l2tp_eth.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/net/l2tp/l2tp_eth.c
|
||||
+++ b/net/l2tp/l2tp_eth.c
|
||||
@@ -136,6 +136,9 @@ static void l2tp_eth_dev_recv(struct l2t
|
||||
/* checksums verified by L2TP */
|
||||
skb->ip_summed = CHECKSUM_NONE;
|
||||
|
||||
+ /* drop outer flow-hash */
|
||||
+ skb_clear_hash(skb);
|
||||
+
|
||||
skb_dst_drop(skb);
|
||||
nf_reset_ct(skb);
|
||||
|
||||
@@ -453,6 +453,8 @@ define Device/engenius_eap1300
|
||||
$(call Device/FitImage)
|
||||
DEVICE_VENDOR := EnGenius
|
||||
DEVICE_MODEL := EAP1300
|
||||
DEVICE_ALT0_VENDOR := EnGenius
|
||||
DEVICE_ALT0_MODEL := EAP1300EXT
|
||||
DEVICE_DTS_CONFIG := config@4
|
||||
BOARD_NAME := eap1300
|
||||
SOC := qcom-ipq4018
|
||||
|
||||
269
target/linux/mediatek/dts/mt7981b-zbtlink-zbt-z8103ax.dts
Normal file
269
target/linux/mediatek/dts/mt7981b-zbtlink-zbt-z8103ax.dts
Normal file
@@ -0,0 +1,269 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
#include "mt7981.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Zbtlink ZBT-Z8103AX";
|
||||
compatible = "zbtlink,zbt-z8103ax", "mediatek,mt7981";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart0;
|
||||
led-boot = &led_status_green;
|
||||
led-failsafe = &led_status_red;
|
||||
led-running = &led_status_green;
|
||||
led-upgrade = &led_status_green;
|
||||
label-mac-device = &gmac0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
bootargs = "earlycon=uart8250,mmio32,0x11002000 console=ttyS0,115200n8 loglevel=8";
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0 0x40000000 0 0x10000000>;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
button-mesh {
|
||||
label = "mesh";
|
||||
linux,code = <BTN_0>;
|
||||
linux,input-type = <EV_SW>;
|
||||
gpios = <&pio 0 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
button-reset {
|
||||
label = "reset";
|
||||
linux,code = <KEY_RESTART>;
|
||||
gpios = <&pio 1 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
led-wan {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WAN;
|
||||
gpios = <&pio 8 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-status-blue {
|
||||
color = <LED_COLOR_ID_BLUE>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpios = <&pio 23 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
led_status_green: led-status-green {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpios = <&pio 24 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led_status_red: led-status-red {
|
||||
color = <LED_COLOR_ID_RED>;
|
||||
function = LED_FUNCTION_STATUS;
|
||||
gpios = <&pio 25 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
|
||||
led-wlan2g {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WLAN;
|
||||
gpios = <&pio 34 GPIO_ACTIVE_LOW>;
|
||||
function-enumerator = <0>;
|
||||
linux,default-trigger = "phy0tpt";
|
||||
};
|
||||
|
||||
led-wlan5g {
|
||||
color = <LED_COLOR_ID_GREEN>;
|
||||
function = LED_FUNCTION_WLAN;
|
||||
gpios = <&pio 35 GPIO_ACTIVE_LOW>;
|
||||
function-enumerator = <1>;
|
||||
linux,default-trigger = "phy1tpt";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ð {
|
||||
status = "okay";
|
||||
|
||||
gmac0: mac@0 {
|
||||
/* LAN */
|
||||
compatible = "mediatek,eth-mac";
|
||||
reg = <0>;
|
||||
phy-mode = "2500base-x";
|
||||
|
||||
nvmem-cell-names = "mac-address";
|
||||
nvmem-cells = <&macaddr_factory_4 2>;
|
||||
|
||||
fixed-link {
|
||||
speed = <2500>;
|
||||
full-duplex;
|
||||
pause;
|
||||
};
|
||||
};
|
||||
|
||||
gmac1: mac@1 {
|
||||
/* WAN */
|
||||
compatible = "mediatek,eth-mac";
|
||||
reg = <1>;
|
||||
phy-mode = "gmii";
|
||||
phy-handle = <&int_gbe_phy>;
|
||||
|
||||
nvmem-cell-names = "mac-address";
|
||||
nvmem-cells = <&macaddr_factory_4 3>;
|
||||
};
|
||||
};
|
||||
|
||||
&mdio_bus {
|
||||
switch: switch@1f {
|
||||
compatible = "mediatek,mt7531";
|
||||
reg = <31>;
|
||||
reset-gpios = <&pio 39 GPIO_ACTIVE_HIGH>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-parent = <&pio>;
|
||||
interrupts = <38 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
&spi0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&spi0_flash_pins>;
|
||||
status = "okay";
|
||||
|
||||
spi_nand@0 {
|
||||
compatible = "spi-nand";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
reg = <0>;
|
||||
|
||||
spi-max-frequency = <52000000>;
|
||||
spi-tx-bus-width = <4>;
|
||||
spi-rx-bus-width = <4>;
|
||||
|
||||
partitions {
|
||||
compatible = "fixed-partitions";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "bl2";
|
||||
reg = <0x0000000 0x0100000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@100000 {
|
||||
label = "u-boot-env";
|
||||
reg = <0x100000 0x80000>;
|
||||
};
|
||||
|
||||
partition@180000 {
|
||||
label = "Factory";
|
||||
reg = <0x180000 0x200000>;
|
||||
read-only;
|
||||
|
||||
nvmem-layout {
|
||||
compatible = "fixed-layout";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
eeprom_factory: eeprom@0 {
|
||||
reg = <0x0 0x1000>;
|
||||
};
|
||||
|
||||
macaddr_factory_4: macaddr@4 {
|
||||
compatible = "mac-base";
|
||||
reg = <0x4 0x6>;
|
||||
#nvmem-cell-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
partition@380000 {
|
||||
label = "FIP";
|
||||
reg = <0x380000 0x200000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
partition@580000 {
|
||||
label = "ubi";
|
||||
reg = <0x580000 0x4000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&switch {
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
label = "lan1";
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
label = "lan2";
|
||||
};
|
||||
|
||||
port@2 {
|
||||
reg = <2>;
|
||||
label = "lan3";
|
||||
};
|
||||
|
||||
port@6 {
|
||||
reg = <6>;
|
||||
label = "cpu";
|
||||
ethernet = <&gmac0>;
|
||||
phy-mode = "2500base-x";
|
||||
|
||||
fixed-link {
|
||||
speed = <2500>;
|
||||
full-duplex;
|
||||
pause;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&pio {
|
||||
spi0_flash_pins: spi0-pins {
|
||||
mux {
|
||||
function = "spi";
|
||||
groups = "spi0", "spi0_wp_hold";
|
||||
};
|
||||
|
||||
conf-pu {
|
||||
pins = "SPI0_CS", "SPI0_HOLD", "SPI0_WP";
|
||||
drive-strength = <MTK_DRIVE_8mA>;
|
||||
bias-pull-up = <MTK_PUPD_SET_R1R0_11>;
|
||||
};
|
||||
|
||||
conf-pd {
|
||||
pins = "SPI0_CLK", "SPI0_MOSI", "SPI0_MISO";
|
||||
drive-strength = <MTK_DRIVE_8mA>;
|
||||
bias-pull-down = <MTK_PUPD_SET_R1R0_11>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&uart0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&watchdog {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&wifi {
|
||||
status = "okay";
|
||||
nvmem-cells = <&eeprom_factory>;
|
||||
nvmem-cell-names = "eeprom";
|
||||
};
|
||||
@@ -67,6 +67,9 @@ xiaomi,redmi-router-ax6000-stock|\
|
||||
xiaomi,redmi-router-ax6000-ubootmod)
|
||||
ucidef_set_led_netdev "wan" "wan" "rgb:network" "wan" "link"
|
||||
;;
|
||||
zbtlink,zbt-z8103ax)
|
||||
ucidef_set_led_netdev "wan" "wan" "green:wan" "eth1" "link tx rx"
|
||||
;;
|
||||
zyxel_ex5601-t0-stock|\
|
||||
zyxel,ex5601-t0-ubootmod)
|
||||
ucidef_set_led_netdev "lan" "LAN" "green:lan" "eth0" "link tx rx"
|
||||
|
||||
@@ -15,7 +15,8 @@ mediatek_setup_interfaces()
|
||||
h3c,magic-nx30-pro|\
|
||||
h3c,magic-nx30-pro-nmbm|\
|
||||
imou,lc-hx3001-ubootmod|\
|
||||
nokia,ea0326gmp)
|
||||
nokia,ea0326gmp|\
|
||||
zbtlink,zbt-z8103ax)
|
||||
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3" eth1
|
||||
;;
|
||||
acelink,ew-7886cax)
|
||||
|
||||
@@ -158,6 +158,7 @@ case "$board" in
|
||||
;;
|
||||
routerich,ax3000|\
|
||||
zbtlink,zbt-z8102ax|\
|
||||
zbtlink,zbt-z8103ax|\
|
||||
zyxel,ex5601-t0|\
|
||||
zyxel,ex5601-t0-ubootmod)
|
||||
addr=$(mtd_get_mac_binary "Factory" 0x4)
|
||||
|
||||
@@ -1313,6 +1313,23 @@ define Device/zbtlink_zbt-z8102ax
|
||||
endef
|
||||
TARGET_DEVICES += zbtlink_zbt-z8102ax
|
||||
|
||||
define Device/zbtlink_zbt-z8103ax
|
||||
DEVICE_VENDOR := Zbtlink
|
||||
DEVICE_MODEL := ZBT-Z8103AX
|
||||
DEVICE_DTS := mt7981b-zbtlink-zbt-z8103ax
|
||||
DEVICE_DTS_DIR := ../dts
|
||||
DEVICE_PACKAGES := kmod-mt7981-firmware mt7981-wo-firmware
|
||||
KERNEL_IN_UBI := 1
|
||||
UBINIZE_OPTS := -E 5
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
IMAGE_SIZE := 65536k
|
||||
IMAGES += factory.bin
|
||||
IMAGE/factory.bin := append-ubi | check-size $$(IMAGE_SIZE)
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
endef
|
||||
TARGET_DEVICES += zbtlink_zbt-z8103ax
|
||||
|
||||
define Device/zyxel_ex5601-t0-stock
|
||||
DEVICE_VENDOR := Zyxel
|
||||
DEVICE_MODEL := EX5601-T0
|
||||
|
||||
@@ -11,7 +11,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
||||
|
||||
--- a/drivers/spi/spi.c
|
||||
+++ b/drivers/spi/spi.c
|
||||
@@ -1246,6 +1246,70 @@ static int spi_transfer_wait(struct spi_
|
||||
@@ -1250,6 +1250,70 @@ static int spi_transfer_wait(struct spi_
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -82,7 +82,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
||||
static void _spi_transfer_delay_ns(u32 ns)
|
||||
{
|
||||
if (!ns)
|
||||
@@ -2033,6 +2097,75 @@ void spi_flush_queue(struct spi_controll
|
||||
@@ -2037,6 +2101,75 @@ void spi_flush_queue(struct spi_controll
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
#if defined(CONFIG_OF)
|
||||
@@ -158,7 +158,7 @@ Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
|
||||
static int of_spi_parse_dt(struct spi_controller *ctlr, struct spi_device *spi,
|
||||
struct device_node *nc)
|
||||
{
|
||||
@@ -2151,6 +2284,10 @@ of_register_spi_device(struct spi_contro
|
||||
@@ -2155,6 +2288,10 @@ of_register_spi_device(struct spi_contro
|
||||
if (rc)
|
||||
goto err_out;
|
||||
|
||||
|
||||
@@ -365,7 +365,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
void mtk_rmw(struct mtk_pinctrl *pctl, u8 i, u32 reg, u32 mask, u32 set);
|
||||
--- a/drivers/pinctrl/mediatek/pinctrl-paris.c
|
||||
+++ b/drivers/pinctrl/mediatek/pinctrl-paris.c
|
||||
@@ -574,8 +574,9 @@ static int mtk_hw_get_value_wrap(struct
|
||||
@@ -538,8 +538,9 @@ static int mtk_hw_get_value_wrap(struct
|
||||
ssize_t mtk_pctrl_show_one_pin(struct mtk_pinctrl *hw,
|
||||
unsigned int gpio, char *buf, unsigned int buf_len)
|
||||
{
|
||||
@@ -376,7 +376,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
|
||||
if (gpio >= hw->soc->npins)
|
||||
return -EINVAL;
|
||||
@@ -589,24 +590,39 @@ ssize_t mtk_pctrl_show_one_pin(struct mt
|
||||
@@ -553,24 +554,39 @@ ssize_t mtk_pctrl_show_one_pin(struct mt
|
||||
pinmux -= hw->soc->nfuncs;
|
||||
|
||||
mtk_pinconf_bias_get_combo(hw, desc, &pullup, &pullen);
|
||||
@@ -433,7 +433,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
}
|
||||
len += scnprintf(buf + len, buf_len - len,
|
||||
"%03d: %1d%1d%1d%1d%02d%1d%1d%1d%1d",
|
||||
@@ -624,6 +640,8 @@ ssize_t mtk_pctrl_show_one_pin(struct mt
|
||||
@@ -588,6 +604,8 @@ ssize_t mtk_pctrl_show_one_pin(struct mt
|
||||
if (r1 != -1) {
|
||||
len += scnprintf(buf + len, buf_len - len, " (%1d %1d)\n",
|
||||
r1, r0);
|
||||
@@ -442,7 +442,7 @@ Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
||||
} else {
|
||||
len += scnprintf(buf + len, buf_len - len, "\n");
|
||||
}
|
||||
@@ -966,6 +984,12 @@ int mtk_paris_pinctrl_probe(struct platf
|
||||
@@ -930,6 +948,12 @@ int mtk_paris_pinctrl_probe(struct platf
|
||||
|
||||
hw->nbase = hw->soc->nbase_names;
|
||||
|
||||
|
||||
@@ -33,9 +33,15 @@
|
||||
keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
wps {
|
||||
label = "wps";
|
||||
gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_WPS_BUTTON>;
|
||||
};
|
||||
|
||||
reset {
|
||||
label = "reset";
|
||||
gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
|
||||
gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_RESTART>;
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user