Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2024-05-12 13:05:27 +08:00
commit 43d537b6a7
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
24 changed files with 549 additions and 79 deletions

View File

@ -1,16 +1,16 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mt76
PKG_RELEASE=2
PKG_RELEASE=1
PKG_LICENSE:=GPLv2
PKG_LICENSE_FILES:=
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
PKG_SOURCE_PROTO:=git
PKG_SOURCE_DATE:=2023-09-11
PKG_SOURCE_VERSION:=f1e1e67d97d1e9a8bb01b59ab20c45ebc985a958
PKG_MIRROR_HASH:=41fde79de5bec3aaafdb64658475a1fa99bc483b8122e6aad9b2aa8aa8edfce6
PKG_SOURCE_DATE:=2023-12-18
PKG_SOURCE_VERSION:=bebd9cffc2aeb2cecb40aadbb8c6eab3bdf7971b
PKG_MIRROR_HASH:=580261755bc3f251b8bc5f7f610274693c067432187570694d2f2ccab0edb62b
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
PKG_USE_NINJA:=0
@ -318,6 +318,38 @@ define KernelPackage/mt7921e
AUTOLOAD:=$(call AutoProbe,mt7921e)
endef
define KernelPackage/mt7996e
$(KernelPackage/mt76-default)
TITLE:=MediaTek MT7996E wireless driver
DEPENDS+=@PCI_SUPPORT +kmod-mt76-connac +kmod-hwmon-core
FILES:= $(PKG_BUILD_DIR)/mt7996/mt7996e.ko
AUTOLOAD:=$(call AutoProbe,mt7996e)
endef
define KernelPackage/mt7925-common
$(KernelPackage/mt76-default)
TITLE:=MediaTek MT7925 wireless driver common code
HIDDEN:=1
DEPENDS+=+kmod-mt792x-common +@DRIVER_11AX_SUPPORT +kmod-hwmon-core
FILES:= $(PKG_BUILD_DIR)/mt7925/mt7925-common.ko
endef
define KernelPackage/mt7925u
$(KernelPackage/mt76-default)
TITLE:=MediaTek MT7925U wireless driver
DEPENDS+=+kmod-mt792x-usb +kmod-mt7925-common
FILES:= $(PKG_BUILD_DIR)/mt7925/mt7925u.ko
AUTOLOAD:=$(call AutoProbe,mt7921u)
endef
define KernelPackage/mt7925e
$(KernelPackage/mt76-default)
TITLE:=MediaTek MT7925e wireless driver
DEPENDS+=@PCI_SUPPORT +kmod-mt7925-common
FILES:= $(PKG_BUILD_DIR)/mt7925/mt7925e.ko
AUTOLOAD:=$(call AutoProbe,mt7921e)
endef
define Package/mt76-test
SECTION:=devel
CATEGORY:=Development
@ -426,6 +458,18 @@ endif
ifdef CONFIG_PACKAGE_kmod-mt7921e
PKG_MAKE_FLAGS += CONFIG_MT7921E=m
endif
ifdef CONFIG_PACKAGE_kmod-mt7996e
PKG_MAKE_FLAGS += CONFIG_MT7996E=m
endif
ifdef CONFIG_PACKAGE_kmod-mt7925-common
PKG_MAKE_FLAGS += CONFIG_MT7925_COMMON=m
endif
ifdef CONFIG_PACKAGE_kmod-mt7925u
PKG_MAKE_FLAGS += CONFIG_MT7925U=m
endif
ifdef CONFIG_PACKAGE_kmod-mt7925e
PKG_MAKE_FLAGS += CONFIG_MT7925E=m
endif
define Build/Compile
+$(KERNEL_MAKE) $(PKG_JOBS) \
@ -606,8 +650,12 @@ $(eval $(call KernelPackage,mt7922-firmware))
$(eval $(call KernelPackage,mt792x-common))
$(eval $(call KernelPackage,mt792x-usb))
$(eval $(call KernelPackage,mt7921-common))
$(eval $(call KernelPackage,mt7925-common))
$(eval $(call KernelPackage,mt7921u))
$(eval $(call KernelPackage,mt7921s))
$(eval $(call KernelPackage,mt7921e))
$(eval $(call KernelPackage,mt7925u))
$(eval $(call KernelPackage,mt7925e))
$(eval $(call KernelPackage,mt7996e))
$(eval $(call KernelPackage,mt76))
$(eval $(call BuildPackage,mt76-test))

View File

@ -1,24 +0,0 @@
From 9c7b98c03173a1a201d74203a81b344a0cd637ac Mon Sep 17 00:00:00 2001
From: Lorenzo Bianconi <lorenzo@kernel.org>
Date: Mon, 18 Sep 2023 12:29:07 +0200
Subject: [PATCH] net: ethernet: mtk_wed: rename mtk_rxbm_desc in
mtk_wed_bm_desc
Rename mtk_rxbm_desc structure in mtk_wed_bm_desc since it will be used
even on tx side by MT7988 SoC.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
---
--- a/mt7915/mmio.c
+++ b/mt7915/mmio.c
@@ -591,7 +591,7 @@ static void mt7915_mmio_wed_release_rx_b
static u32 mt7915_mmio_wed_init_rx_buf(struct mtk_wed_device *wed, int size)
{
- struct mtk_rxbm_desc *desc = wed->rx_buf_ring.desc;
+ struct mtk_wed_bm_desc *desc = wed->rx_buf_ring.desc;
struct mt76_txwi_cache *t = NULL;
struct mt7915_dev *dev;
struct mt76_queue *q;

View File

@ -0,0 +1,26 @@
From 786a339bac36d8e53eb8b540e79221d20011ab2a Mon Sep 17 00:00:00 2001
From: Felix Fietkau <nbd@nbd.name>
Date: Sat, 3 Feb 2024 14:21:58 +0100
Subject: [PATCH] wifi: mt76: mt7996: fix fortify warning
Copy cck and ofdm separately in order to avoid __read_overflow2_field
warning.
Fixes: f75e4779d215 ("wifi: mt76: mt7996: add txpower setting support")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
mt7996/mcu.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/mt7996/mcu.c
+++ b/mt7996/mcu.c
@@ -4477,7 +4477,8 @@ int mt7996_mcu_set_txpower_sku(struct mt
skb_put_data(skb, &req, sizeof(req));
/* cck and ofdm */
- skb_put_data(skb, &la.cck, sizeof(la.cck) + sizeof(la.ofdm));
+ skb_put_data(skb, &la.cck, sizeof(la.cck));
+ skb_put_data(skb, &la.ofdm, sizeof(la.ofdm));
/* ht20 */
skb_put_data(skb, &la.mcs[0], 8);
/* ht40 */

View File

@ -0,0 +1,38 @@
From bc37a7ebc267e400fc4e9886b7197b4b866763d1 Mon Sep 17 00:00:00 2001
From: Lorenzo Bianconi <lorenzo@kernel.org>
Date: Thu, 21 Dec 2023 10:41:18 +0100
Subject: [PATCH] wifi: mt76: mt7996: fix fw loading timeout
Fix the following firmware loading error due to a wrong dma register
configuration if wed is disabled.
[ 8.245881] mt7996e_hif 0001:01:00.0: assign IRQ: got 128
[ 8.251308] mt7996e_hif 0001:01:00.0: enabling device (0000 -> 0002)
[ 8.257674] mt7996e_hif 0001:01:00.0: enabling bus mastering
[ 8.263488] mt7996e 0000:01:00.0: assign IRQ: got 126
[ 8.268537] mt7996e 0000:01:00.0: enabling device (0000 -> 0002)
[ 8.274551] mt7996e 0000:01:00.0: enabling bus mastering
[ 28.648773] mt7996e 0000:01:00.0: Message 00000010 (seq 1) timeout
[ 28.654959] mt7996e 0000:01:00.0: Failed to get patch semaphore
[ 29.661033] mt7996e: probe of 0000:01:00.0 failed with error -11
Suggested-by: Sujuan Chen" <sujuan.chen@mediatek.com>
Fixes: 4920a3a1285f ("wifi: mt76: mt7996: set DMA mask to 36 bits for boards with more than 4GB of RAM")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
mt7996/dma.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/mt7996/dma.c
+++ b/mt7996/dma.c
@@ -237,7 +237,8 @@ void mt7996_dma_start(struct mt7996_dev
MT_WFDMA0_GLO_CFG_TX_DMA_EN |
MT_WFDMA0_GLO_CFG_RX_DMA_EN |
MT_WFDMA0_GLO_CFG_OMIT_TX_INFO |
- MT_WFDMA0_GLO_CFG_OMIT_RX_INFO_PFET2);
+ MT_WFDMA0_GLO_CFG_OMIT_RX_INFO_PFET2 |
+ MT_WFDMA0_GLO_CFG_EXT_EN);
if (dev->hif2)
mt76_set(dev, MT_WFDMA0_GLO_CFG + hif1_ofs,

View File

@ -0,0 +1,60 @@
From 025d5734caba6fa1fd96b57c19c61e42e601815b Mon Sep 17 00:00:00 2001
From: Peter Chiu <chui-hao.chiu@mediatek.com>
Date: Fri, 26 Jan 2024 17:09:12 +0800
Subject: [PATCH] wifi: mt76: mt7996: check txs format before getting skb by
pid
The PPDU TXS does not include the error bit so it cannot use to report
status to mac80211. This patch fixes issue that STA wrongly detects if AP
is still alive.
Fixes: 2569ea5326e2 ("wifi: mt76: mt7996: enable PPDU-TxS to host")
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
mt7996/mac.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
--- a/mt7996/mac.c
+++ b/mt7996/mac.c
@@ -1188,25 +1188,28 @@ mt7996_mac_add_txs_skb(struct mt7996_dev
struct ieee80211_tx_info *info;
struct sk_buff_head list;
struct rate_info rate = {};
- struct sk_buff *skb;
+ struct sk_buff *skb = NULL;
bool cck = false;
u32 txrate, txs, mode, stbc;
txs = le32_to_cpu(txs_data[0]);
mt76_tx_status_lock(mdev, &list);
- skb = mt76_tx_status_skb_get(mdev, wcid, pid, &list);
- if (skb) {
- info = IEEE80211_SKB_CB(skb);
- if (!(txs & MT_TXS0_ACK_ERROR_MASK))
- info->flags |= IEEE80211_TX_STAT_ACK;
-
- info->status.ampdu_len = 1;
- info->status.ampdu_ack_len =
- !!(info->flags & IEEE80211_TX_STAT_ACK);
+ /* only report MPDU TXS */
+ if (le32_get_bits(txs_data[0], MT_TXS0_TXS_FORMAT) == 0) {
+ skb = mt76_tx_status_skb_get(mdev, wcid, pid, &list);
+ if (skb) {
+ info = IEEE80211_SKB_CB(skb);
+ if (!(txs & MT_TXS0_ACK_ERROR_MASK))
+ info->flags |= IEEE80211_TX_STAT_ACK;
+
+ info->status.ampdu_len = 1;
+ info->status.ampdu_ack_len =
+ !!(info->flags & IEEE80211_TX_STAT_ACK);
- info->status.rates[0].idx = -1;
+ info->status.rates[0].idx = -1;
+ }
}
if (mtk_wed_device_active(&dev->mt76.mmio.wed) && wcid->sta) {

View File

@ -0,0 +1,38 @@
From d75eac9f5531e484fbbabf2652922976e15a7a7a Mon Sep 17 00:00:00 2001
From: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date: Tue, 16 Jan 2024 10:48:54 +0800
Subject: [PATCH] wifi: mt76: mt7921: fix incorrect type conversion for CLC
command
clc->len is defined as 32 bits in length, so it must also be
operated on with 32 bits, not 16 bits.
Fixes: fa6ad88e023d ("wifi: mt76: mt7921: fix country count limitation for CLC")
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202312112104.Zkc3QUHr-lkp@intel.com/
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
mt7921/mcu.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/mt7921/mcu.c
+++ b/mt7921/mcu.c
@@ -1272,7 +1272,7 @@ int __mt7921_mcu_set_clc(struct mt792x_d
.mtcl_conf = mt792x_acpi_get_mtcl_conf(&dev->phy, alpha2),
};
int ret, valid_cnt = 0;
- u16 buf_len = 0;
+ u32 buf_len = 0;
u8 *pos;
if (!clc)
@@ -1283,7 +1283,7 @@ int __mt7921_mcu_set_clc(struct mt792x_d
if (mt76_find_power_limits_node(&dev->mt76))
req.cap |= CLC_CAP_DTS_EN;
- buf_len = le16_to_cpu(clc->len) - sizeof(*clc);
+ buf_len = le32_to_cpu(clc->len) - sizeof(*clc);
pos = clc->data;
while (buf_len > 16) {
struct mt7921_clc_rule *rule = (struct mt7921_clc_rule *)pos;

View File

@ -0,0 +1,28 @@
From 841bf82e99581f648325bee570de98892cad894f Mon Sep 17 00:00:00 2001
From: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Date: Wed, 7 Feb 2024 11:31:23 +0800
Subject: [PATCH] wifi: mt76: fix the issue of missing txpwr settings from
ch153 to ch177
Because the number of channels to be configured is calculated using the %,
and it results in 0 when there's an exact division, this leads to some
channels not having their tx power configured.
Fixes: 7801da338856 ("wifi: mt76: mt7921: enable set txpower for UNII-4")
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.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
@@ -2101,7 +2101,7 @@ mt76_connac_mcu_rate_txpower_band(struct
int j, msg_len, num_ch;
struct sk_buff *skb;
- num_ch = i == batch_size - 1 ? n_chan % batch_len : batch_len;
+ num_ch = i == batch_size - 1 ? n_chan - i * batch_len : batch_len;
msg_len = sizeof(tx_power_tlv) + num_ch * sizeof(sku_tlbv);
skb = mt76_mcu_msg_alloc(dev, NULL, msg_len);
if (!skb) {

View File

@ -0,0 +1,56 @@
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
@@ -4456,7 +4456,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,
@@ -4471,7 +4471,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;
@@ -4495,6 +4495,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

View File

@ -0,0 +1,27 @@
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
@@ -499,7 +499,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);

View File

@ -0,0 +1,39 @@
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
@@ -3721,6 +3721,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);
@@ -3728,8 +3729,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)

View File

@ -13,7 +13,7 @@
aliases {
led-boot = &led_blue;
led-failsafe = &led_red;
led-running = &led_green;
led-running = &led_blue;
led-upgrade = &led_red;
};
@ -278,7 +278,6 @@
label = "red";
color = <LED_COLOR_ID_RED>;
function = LED_FUNCTION_INDICATOR;
linux,default-trigger = "none";
reg = <0>;
};
@ -286,7 +285,6 @@
label = "green";
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_INDICATOR;
linux,default-trigger = "none";
reg = <1>;
};
@ -294,7 +292,6 @@
label = "blue";
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_INDICATOR;
linux,default-trigger = "default-on";
reg = <2>;
};
};

View File

@ -44,13 +44,13 @@
gpios = <&qcom_pinmux 19 GPIO_ACTIVE_HIGH>;
};
lan2_green {
label = "green:lan2";
lan1_green {
label = "green:lan1";
gpios = <&qcom_pinmux 23 GPIO_ACTIVE_HIGH>;
};
lan1_green {
label = "green:lan1";
lan2_green {
label = "green:lan2";
gpios = <&qcom_pinmux 24 GPIO_ACTIVE_HIGH>;
};
@ -59,13 +59,13 @@
gpios = <&qcom_pinmux 26 GPIO_ACTIVE_LOW>;
};
lan2_orange {
label = "orange:lan2";
lan1_orange {
label = "orange:lan1";
gpios = <&qcom_pinmux 60 GPIO_ACTIVE_HIGH>;
};
lan1_orange {
label = "orange:lan1";
lan2_orange {
label = "orange:lan2";
gpios = <&qcom_pinmux 62 GPIO_ACTIVE_HIGH>;
};
};

View File

@ -9,6 +9,8 @@
compatible = "enterasys,ws-ap3710i";
aliases {
ethernet0 = &enet0;
ethernet1 = &enet2;
led-boot = &led_power_green;
led-failsafe = &led_power_red;
led-running = &led_power_green;
@ -16,6 +18,11 @@
label-mac-device = &enet0;
};
chosen {
bootargs-override = "console=ttyS0,115200";
stdout-path = &serial0;
};
memory {
device_type = "memory";
};
@ -74,7 +81,7 @@
#size-cells = <1>;
partition@0 {
compatible = "denx,fit";
compatible = "denx,uimage";
reg = <0x0 0x1d80000>;
label = "firmware";
};
@ -145,6 +152,13 @@
ranges = <0x2000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000
0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>;
reg = <0 0xffe09000 0 0x1000>;
/* Filled by U-Boot */
bus-range = <0x00 0x01>;
dma-ranges = <0x2000000 0x00 0xfff00000 0x00 0xffe00000
0x00 0x100000 0x42000000 0x00 0x00 0x00
0x00 0x00 0x10000000>;
pcie@0 {
ranges = <0x2000000 0x0 0xa0000000
0x2000000 0x0 0xa0000000
@ -160,6 +174,13 @@
reg = <0 0xffe0a000 0 0x1000>;
ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000
0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>;
/* Filled by U-Boot */
bus-range = <0x00 0x01>;
dma-ranges = <0x2000000 0x00 0xfff00000 0x00
0xffe00000 0x00 0x100000 0x42000000
0x00 0x00 0x00 0x00 0x00 0x10000000>;
pcie@0 {
ranges = <0x2000000 0x0 0x80000000
0x2000000 0x0 0x80000000
@ -174,6 +195,87 @@
};
/include/ "fsl/p1020si-post.dtsi"
/ {
cpus {
PowerPC,P1020@0 {
bus-frequency = <399999996>;
timebase-frequency = <50000000>;
clock-frequency = <799999992>;
d-cache-block-size = <0x20>;
d-cache-size = <0x8000>;
d-cache-sets = <0x80>;
i-cache-block-size = <0x20>;
i-cache-size = <0x8000>;
i-cache-sets = <0x80>;
cpu-release-addr = <0x0 0x0ffff280>;
status = "okay";
enable-method = "spin-table";
};
PowerPC,P1020@1 {
bus-frequency = <399999996>;
timebase-frequency = <50000000>;
clock-frequency = <799999992>;
d-cache-block-size = <0x20>;
d-cache-size = <0x8000>;
d-cache-sets = <0x80>;
i-cache-block-size = <0x20>;
i-cache-size = <0x8000>;
i-cache-sets = <0x80>;
cpu-release-addr = <0x0 0x0ffff2a0>;
status = "disabled";
enable-method = "spin-table";
};
};
memory {
reg = <0x0 0x0 0x0 0x10000000>;
};
reserved-memory {
#address-cells = <2>;
#size-cells = <2>;
ranges;
cpu1-bootpage@ff00000 {
/* Reserve upper 1 MB for second-core-bootpage */
reg = <0x0 0xff00000 0x0 0x100000>;
};
};
soc@ffe00000 {
bus-frequency = <399999996>;
serial@4600 {
clock-frequency = <399999996>;
};
serial@4500 {
clock-frequency = <399999996>;
};
pic@40000 {
clock-frequency = <399999996>;
};
};
localbus@ffe05000 {
bus-frequency = <24999999>;
};
};
&enet0 {
rx-stash-idx = <0x00>;
rx-stash-len = <0x60>;
bd-stash;
};
&enet2 {
rx-stash-idx = <0x00>;
rx-stash-len = <0x60>;
bd-stash;
};
/*
* For the OpenWrt 22.03 release, since Linux 5.10.138 now uses
* aliases to determine PCI domain numbers, drop aliases so as not to

View File

@ -62,7 +62,11 @@ define Device/enterasys_ws-ap3710i
DEVICE_VENDOR := Enterasys
DEVICE_MODEL := WS-AP3710i
BLOCKSIZE := 128k
KERNEL = kernel-bin | lzma | fit lzma $(KDIR)/image-$$(DEVICE_DTS).dtb
KERNEL_NAME := simpleImage.ws-ap3710i
KERNEL_ENTRY := 0x1000000
KERNEL_LOADADDR := 0x1000000
KERNEL = kernel-bin | uImage none
KERNEL_INITRAMFS := kernel-bin | uImage none
IMAGES := sysupgrade.bin
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
endef

View File

@ -1,5 +1,5 @@
BOARDNAME:=P1020
KERNEL_IMAGES:=simpleImage.ws-ap3825i
KERNEL_IMAGES:=simpleImage.ws-ap3710i simpleImage.ws-ap3825i
define Target/Description
Build firmware images for Freescale P1020 based boards.

View File

@ -28,3 +28,33 @@
obj-$(CONFIG_CORENET_GENERIC) += corenet_generic.o
obj-$(CONFIG_FB_FSL_DIU) += t1042rdb_diu.o
obj-$(CONFIG_RED_15W_REV1) += red15w_rev1.o
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -164,6 +164,7 @@ src-plat-$(CONFIG_PPC_POWERNV) += pserie
src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
+src-plat-$(CONFIG_WS_AP3710I) += simpleboot.c fixed-head.S
src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
@@ -345,6 +346,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm
image-$(CONFIG_TQM8560) += cuImage.tqm8560
image-$(CONFIG_KSI8560) += cuImage.ksi8560
image-$(CONFIG_TL_WDR4900_V1) += simpleImage.tl-wdr4900-v1
+image-$(CONFIG_WS_AP3710I) += simpleImage.ws-ap3710i
# Board ports in arch/powerpc/platform/86xx/Kconfig
image-$(CONFIG_MVME7100) += dtbImage.mvme7100
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -326,7 +326,8 @@ adder875-redboot)
platformo="$object/fixed-head.o $object/redboot-8xx.o"
binary=y
;;
-simpleboot-tl-wdr4900-v1)
+simpleboot-tl-wdr4900-v1|\
+simpleboot-ws-ap3710i)
platformo="$object/fixed-head.o $object/simpleboot.o"
link_address='0x1000000'
binary=y

View File

@ -37,29 +37,23 @@ WS-AP3825i AP.
obj-$(CONFIG_RED_15W_REV1) += red15w_rev1.o
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -164,6 +164,7 @@ src-plat-$(CONFIG_PPC_POWERNV) += pserie
src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
+src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
src-plat-$(CONFIG_PPC_MICROWATT) += fixed-head.S microwatt.c
@@ -345,6 +346,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm
image-$(CONFIG_TQM8560) += cuImage.tqm8560
@@ -347,6 +347,7 @@ image-$(CONFIG_TQM8560) += cuImage.tqm
image-$(CONFIG_KSI8560) += cuImage.ksi8560
image-$(CONFIG_TL_WDR4900_V1) += simpleImage.tl-wdr4900-v1
image-$(CONFIG_WS_AP3710I) += simpleImage.ws-ap3710i
+image-$(CONFIG_WS_AP3825I) += simpleImage.ws-ap3825i
# Board ports in arch/powerpc/platform/86xx/Kconfig
image-$(CONFIG_MVME7100) += dtbImage.mvme7100
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -326,6 +326,7 @@ adder875-redboot)
platformo="$object/fixed-head.o $object/redboot-8xx.o"
@@ -327,7 +327,8 @@ adder875-redboot)
binary=y
;;
+simpleboot-ws-ap3825i|\
simpleboot-tl-wdr4900-v1)
simpleboot-tl-wdr4900-v1|\
-simpleboot-ws-ap3710i)
+simpleboot-ws-ap3710i|\
+simpleboot-ws-ap3825i)
platformo="$object/fixed-head.o $object/simpleboot.o"
link_address='0x1000000'
binary=y

View File

@ -30,21 +30,21 @@
obj-$(CONFIG_CORENET_GENERIC) += corenet_generic.o
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -346,6 +346,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm
image-$(CONFIG_TQM8560) += cuImage.tqm8560
@@ -347,6 +347,7 @@ image-$(CONFIG_TQM8560) += cuImage.tqm
image-$(CONFIG_KSI8560) += cuImage.ksi8560
image-$(CONFIG_TL_WDR4900_V1) += simpleImage.tl-wdr4900-v1
image-$(CONFIG_WS_AP3710I) += simpleImage.ws-ap3710i
+image-$(CONFIG_WS_AP3715I) += simpleImage.ws-ap3715i
image-$(CONFIG_WS_AP3825I) += simpleImage.ws-ap3825i
# Board ports in arch/powerpc/platform/86xx/Kconfig
image-$(CONFIG_MVME7100) += dtbImage.mvme7100
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -326,6 +326,7 @@ adder875-redboot)
platformo="$object/fixed-head.o $object/redboot-8xx.o"
binary=y
@@ -328,6 +328,7 @@ adder875-redboot)
;;
simpleboot-tl-wdr4900-v1|\
simpleboot-ws-ap3710i|\
+simpleboot-ws-ap3715i|\
simpleboot-ws-ap3825i|\
simpleboot-tl-wdr4900-v1)
simpleboot-ws-ap3825i)
platformo="$object/fixed-head.o $object/simpleboot.o"
link_address='0x1000000'

View File

@ -35,7 +35,7 @@
src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
+src-plat-$(CONFIG_BR200_WP) += simpleboot.c fixed-head.S
src-plat-$(CONFIG_TL_WDR4900_V1) += simpleboot.c fixed-head.S
src-plat-$(CONFIG_WS_AP3825I) += simpleboot.c fixed-head.S
src-plat-$(CONFIG_WS_AP3710I) += simpleboot.c fixed-head.S
@@ -345,6 +346,7 @@ image-$(CONFIG_TQM8548) += cuImage.tqm
image-$(CONFIG_TQM8555) += cuImage.tqm8555
@ -43,8 +43,8 @@
image-$(CONFIG_KSI8560) += cuImage.ksi8560
+image-$(CONFIG_BR200_WP) += simpleImage.br200-wp
image-$(CONFIG_TL_WDR4900_V1) += simpleImage.tl-wdr4900-v1
image-$(CONFIG_WS_AP3710I) += simpleImage.ws-ap3710i
image-$(CONFIG_WS_AP3715I) += simpleImage.ws-ap3715i
image-$(CONFIG_WS_AP3825I) += simpleImage.ws-ap3825i
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -326,6 +326,7 @@ adder875-redboot)
@ -52,6 +52,6 @@
binary=y
;;
+simpleboot-br200-wp|\
simpleboot-tl-wdr4900-v1|\
simpleboot-ws-ap3710i|\
simpleboot-ws-ap3715i|\
simpleboot-ws-ap3825i|\
simpleboot-tl-wdr4900-v1)

View File

@ -155,6 +155,12 @@ static void rtl83xx_setup_bpdu_traps(struct rtl838x_switch_priv *priv)
priv->r->set_receive_management_action(i, BPDU, TRAP2CPU);
}
static void rtl83xx_setup_lldp_traps(struct rtl838x_switch_priv *priv)
{
for (int i = 0; i < priv->cpu_port; i++)
priv->r->set_receive_management_action(i, LLDP, TRAP2CPU);
}
static void rtl83xx_port_set_salrn(struct rtl838x_switch_priv *priv,
int port, bool enable)
{
@ -207,6 +213,7 @@ static int rtl83xx_setup(struct dsa_switch *ds)
rtl83xx_vlan_setup(priv);
rtl83xx_setup_bpdu_traps(priv);
rtl83xx_setup_lldp_traps(priv);
ds->configure_vlan_while_not_filtering = true;

View File

@ -1678,9 +1678,9 @@ void rtl838x_set_receive_management_action(int port, rma_ctrl_t type, action_typ
sw_w32_mask(3 << ((port & 0xf) << 1), (action & 0x3) << ((port & 0xf) << 1),
RTL838X_RMA_PTP_CTRL + ((port >> 4) << 2));
break;
case LLTP:
case LLDP:
sw_w32_mask(3 << ((port & 0xf) << 1), (action & 0x3) << ((port & 0xf) << 1),
RTL838X_RMA_LLTP_CTRL + ((port >> 4) << 2));
RTL838X_RMA_LLDP_CTRL + ((port >> 4) << 2));
break;
default:
break;

View File

@ -425,7 +425,7 @@ typedef enum {
PTP,
PTP_UDP,
PTP_ETH2,
LLTP,
LLDP,
EAPOL,
GRATARP,
} rma_ctrl_t;
@ -449,10 +449,10 @@ typedef enum {
#define RTL930X_RMA_PTP_CTRL (0x9E88)
#define RTL931X_RMA_PTP_CTRL (0x8834)
#define RTL838X_RMA_LLTP_CTRL (0x4340)
#define RTL839X_RMA_LLTP_CTRL (0x124C)
#define RTL930X_RMA_LLTP_CTRL (0x9EFC)
#define RTL931X_RMA_LLTP_CTRL (0x8918)
#define RTL838X_RMA_LLDP_CTRL (0x4340)
#define RTL839X_RMA_LLDP_CTRL (0x124C)
#define RTL930X_RMA_LLDP_CTRL (0x9EFC)
#define RTL931X_RMA_LLDP_CTRL (0x8918)
#define RTL930X_RMA_EAPOL_CTRL (0x9F08)
#define RTL931X_RMA_EAPOL_CTRL (0x8930)

View File

@ -1814,9 +1814,9 @@ void rtl839x_set_receive_management_action(int port, rma_ctrl_t type, action_typ
sw_w32_mask(3 << ((port & 0xf) << 1), (action & 0x3) << ((port & 0xf) << 1),
RTL839X_RMA_PTP_CTRL + ((port >> 4) << 2));
break;
case LLTP:
case LLDP:
sw_w32_mask(3 << ((port & 0xf) << 1), (action & 0x3) << ((port & 0xf) << 1),
RTL839X_RMA_LLTP_CTRL + ((port >> 4) << 2));
RTL839X_RMA_LLDP_CTRL + ((port >> 4) << 2));
break;
default:
break;

View File

@ -516,8 +516,8 @@ void rtl931x_set_receive_management_action(int port, rma_ctrl_t type, action_typ
case PTP_ETH2:
sw_w32_mask(3, value, RTL931X_RMA_PTP_CTRL + (port << 2));
break;
case LLTP:
sw_w32_mask(7 << ((port % 10) * 3), value << ((port % 10) * 3), RTL931X_RMA_LLTP_CTRL + ((port / 10) << 2));
case LLDP:
sw_w32_mask(7 << ((port % 10) * 3), value << ((port % 10) * 3), RTL931X_RMA_LLDP_CTRL + ((port / 10) << 2));
break;
case EAPOL:
sw_w32_mask(7 << ((port % 10) * 3), value << ((port % 10) * 3), RTL931X_RMA_EAPOL_CTRL + ((port / 10) << 2));