[][openwrt][update the patches in accordance with the new naming rules]
[Description]
Change all mtk patches in accordance with the new naming rules
"999-20xx-" : Basic Part
"999-21xx-" : Slow Speed I/O
"999-22xx-" : Slow Speed I/O
"999-23xx-" : SPI & Storage
"999-24xx-" : SPI & Storage
"999-25xx-" : Advanced features
"999-26xx-" : High Speed I/O
"999-27xx-" : Networking
"999-28xx-" : MISC
"999-29xx-" : Uncategorized
[Release-log]
N/A
Change-Id: I245da3b0e5b7299b42473c20cc6f0899cffc1ad2
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7530987
diff --git a/target/linux/mediatek/patches-5.4/0001-cpufreq-add-the-missing-platform-driver-unregister.patch b/target/linux/mediatek/patches-5.4/0001-cpufreq-add-the-missing-platform-driver-unregister.patch
deleted file mode 100644
index fdf953d..0000000
--- a/target/linux/mediatek/patches-5.4/0001-cpufreq-add-the-missing-platform-driver-unregister.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
-index 927ebc5..03bb7b5 100644
---- a/drivers/cpufreq/mediatek-cpufreq.c
-+++ b/drivers/cpufreq/mediatek-cpufreq.c
-@@ -573,6 +573,7 @@ static int __init mtk_cpufreq_driver_init(void)
- pdev = platform_device_register_simple("mtk-cpufreq", -1, NULL, 0);
- if (IS_ERR(pdev)) {
- pr_err("failed to register mtk-cpufreq platform device\n");
-+ platform_driver_unregister(&mtk_cpufreq_platdrv);
- return PTR_ERR(pdev);
- }
-
diff --git a/target/linux/mediatek/patches-5.4/0006-powerdomain-add-mt7988-support.patch b/target/linux/mediatek/patches-5.4/0006-powerdomain-add-mt7988-support.patch
deleted file mode 100644
index 7fc4f1d..0000000
--- a/target/linux/mediatek/patches-5.4/0006-powerdomain-add-mt7988-support.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-diff --git a/drivers/soc/mediatek/Makefile b/drivers/soc/mediatek/Makefile
-index b017330..1c485e3 100644
---- a/drivers/soc/mediatek/Makefile
-+++ b/drivers/soc/mediatek/Makefile
-@@ -3,3 +3,4 @@ obj-$(CONFIG_MTK_CMDQ) += mtk-cmdq-helper.o
- obj-$(CONFIG_MTK_INFRACFG) += mtk-infracfg.o
- obj-$(CONFIG_MTK_PMIC_WRAP) += mtk-pmic-wrap.o
- obj-$(CONFIG_MTK_SCPSYS) += mtk-scpsys.o
-+obj-$(CONFIG_MTK_SCPSYS) += mtk-pm-domains.o
diff --git a/target/linux/mediatek/patches-5.4/0020-dts-mt7622-enable-new-mtk-snand-for-ubi.patch b/target/linux/mediatek/patches-5.4/0020-dts-mt7622-enable-new-mtk-snand-for-ubi.patch
deleted file mode 100644
index 3a9e061..0000000
--- a/target/linux/mediatek/patches-5.4/0020-dts-mt7622-enable-new-mtk-snand-for-ubi.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
-+++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
-@@ -567,6 +567,20 @@
- status = "disabled";
- };
-
-+ snand: snfi@1100d000 {
-+ compatible = "mediatek,mt7622-snand";
-+ reg = <0 0x1100d000 0 0x1000>, <0 0x1100e000 0 0x1000>;
-+ reg-names = "nfi", "ecc";
-+ interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
-+ clocks = <&pericfg CLK_PERI_NFI_PD>,
-+ <&pericfg CLK_PERI_SNFI_PD>,
-+ <&pericfg CLK_PERI_NFIECC_PD>;
-+ clock-names = "nfi_clk", "pad_clk", "ecc_clk";
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ status = "disabled";
-+ };
-+
- nor_flash: spi@11014000 {
- compatible = "mediatek,mt7622-nor",
- "mediatek,mt8173-nor";
diff --git a/target/linux/mediatek/patches-5.4/0021-dts-mt7622-remove-cooling-device.patch b/target/linux/mediatek/patches-5.4/0021-dts-mt7622-remove-cooling-device.patch
deleted file mode 100644
index efcc14f..0000000
--- a/target/linux/mediatek/patches-5.4/0021-dts-mt7622-remove-cooling-device.patch
+++ /dev/null
@@ -1,31 +0,0 @@
---- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
-+++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
-@@ -167,25 +167,6 @@
- };
- };
-
-- cooling-maps {
-- map0 {
-- trip = <&cpu_passive>;
-- cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-- <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-- };
--
-- map1 {
-- trip = <&cpu_active>;
-- cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-- <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-- };
--
-- map2 {
-- trip = <&cpu_hot>;
-- cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
-- <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
-- };
-- };
- };
- };
-
---
-2.29.2
-
diff --git a/target/linux/mediatek/patches-5.4/0200-show_model_name_in_cpuinfo_on_arm64.patch b/target/linux/mediatek/patches-5.4/0200-show_model_name_in_cpuinfo_on_arm64.patch
deleted file mode 100644
index 98e5ab6..0000000
--- a/target/linux/mediatek/patches-5.4/0200-show_model_name_in_cpuinfo_on_arm64.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Index: linux-5.4.70/arch/arm64/kernel/cpuinfo.c
-===================================================================
---- linux-5.4.70.orig/arch/arm64/kernel/cpuinfo.c
-+++ linux-5.4.70/arch/arm64/kernel/cpuinfo.c
-@@ -139,9 +139,8 @@ static int c_show(struct seq_file *m, vo
- * "processor". Give glibc what it expects.
- */
- seq_printf(m, "processor\t: %d\n", i);
-- if (compat)
-- seq_printf(m, "model name\t: ARMv8 Processor rev %d (%s)\n",
-- MIDR_REVISION(midr), COMPAT_ELF_PLATFORM);
-+ seq_printf(m, "model name\t: ARMv8 Processor rev %d (%s)\n",
-+ MIDR_REVISION(midr), COMPAT_ELF_PLATFORM);
-
- seq_printf(m, "BogoMIPS\t: %lu.%02lu\n",
- loops_per_jiffy / (500000UL/HZ),
diff --git a/target/linux/mediatek/patches-5.4/0491-mtd-spinand-macronix-suppress-mx35lf1ge4ab-warning-log.patch b/target/linux/mediatek/patches-5.4/0491-mtd-spinand-macronix-suppress-mx35lf1ge4ab-warning-log.patch
deleted file mode 100644
index 7951d63..0000000
--- a/target/linux/mediatek/patches-5.4/0491-mtd-spinand-macronix-suppress-mx35lf1ge4ab-warning-log.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/mtd/nand/spi/macronix.c
-+++ b/drivers/mtd/nand/spi/macronix.c
-@@ -86,7 +86,7 @@ static int mx35lf1ge4ab_ecc_get_status(s
- if (mx35lf1ge4ab_get_eccsr(spinand, &eccsr))
- return nand->eccreq.strength;
-
-- if (WARN_ON(eccsr > nand->eccreq.strength || !eccsr))
-+ if (eccsr > nand->eccreq.strength || !eccsr)
- return nand->eccreq.strength;
-
- return eccsr;
diff --git a/target/linux/mediatek/patches-5.4/0504-macsec-revert-async-support.patch b/target/linux/mediatek/patches-5.4/0504-macsec-revert-async-support.patch
deleted file mode 100644
index d52db50..0000000
--- a/target/linux/mediatek/patches-5.4/0504-macsec-revert-async-support.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/drivers/net/macsec.c
-+++ b/drivers/net/macsec.c
-@@ -1309,8 +1309,7 @@
- struct crypto_aead *tfm;
- int ret;
-
-- /* Pick a sync gcm(aes) cipher to ensure order is preserved. */
-- tfm = crypto_alloc_aead("gcm(aes)", 0, CRYPTO_ALG_ASYNC);
-+ tfm = crypto_alloc_aead("gcm(aes)", 0, 0);
-
- if (IS_ERR(tfm))
- return tfm;
diff --git a/target/linux/mediatek/patches-5.4/0666-spi-mtk-nor-fix-timeout-calculation-overflow.patch b/target/linux/mediatek/patches-5.4/0666-spi-mtk-nor-fix-timeout-calculation-overflow.patch
deleted file mode 100644
index 86b2089..0000000
--- a/target/linux/mediatek/patches-5.4/0666-spi-mtk-nor-fix-timeout-calculation-overflow.patch
+++ /dev/null
@@ -1,179 +0,0 @@
-From patchwork Tue Sep 22 11:49:02 2020
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-X-Patchwork-Submitter: Chuanhong Guo <gch981213@gmail.com>
-X-Patchwork-Id: 11792387
-Return-Path:
- <SRS0=i66O=C7=lists.infradead.org=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@kernel.org>
-Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org
- [172.30.200.123])
- by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 21EB0618
- for <patchwork-linux-arm@patchwork.kernel.org>;
- Tue, 22 Sep 2020 11:51:33 +0000 (UTC)
-Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134])
- (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
- (No client certificate requested)
- by mail.kernel.org (Postfix) with ESMTPS id E15FF221EB
- for <patchwork-linux-arm@patchwork.kernel.org>;
- Tue, 22 Sep 2020 11:51:32 +0000 (UTC)
-Authentication-Results: mail.kernel.org;
- dkim=pass (2048-bit key) header.d=lists.infradead.org
- header.i=@lists.infradead.org header.b="KBg/skkC";
- dkim=fail reason="signature verification failed" (2048-bit key)
- header.d=gmail.com header.i=@gmail.com header.b="Gtqp4rrT"
-DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E15FF221EB
-Authentication-Results: mail.kernel.org;
- dmarc=fail (p=none dis=none) header.from=gmail.com
-Authentication-Results: mail.kernel.org;
- spf=none
- smtp.mailfrom=linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org
-DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
- d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding:
- Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive:
- List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To:From:
- Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender
- :Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner;
- bh=Xg61WV47qNPjINdHDPnF6T3q8GN8f9evwhTMdYR0Zqs=; b=KBg/skkCvnF7/8AlleTay0p/H2
- hC4Lzo+slWhX5/eepUEXzhTr5ORf4Dx9gD65UEuordKQKFpg6Y9ApoGaYtmBJ0vABdAZt+oVG4sFf
- K3z3CYV6EZ5qvwsZt53Xm3YsHojgu+Lnc/MGgGWBRjCtTP7gshm480pZ0w6ADgHvrym5hNajUF6+5
- zMm5Wwq34jxUApGU7k5FAPsvO5ctYCuhECq/mLB6tplCVh3/+XLdSiHMUlY17fh+xs732kgaDotuQ
- QYgXtDmMB1pVKCq5cf3Bcuz7Ww47vLSx4rBxtdB/vpp2w9SdrU6K8Q7DuJ3+XrGfbMhKtBU5ektA8
- GxEUUaKw==;
-Received: from localhost ([::1] helo=merlin.infradead.org)
- by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux))
- id 1kKgo2-0000Ze-Fb; Tue, 22 Sep 2020 11:50:00 +0000
-Received: from mail-pg1-x543.google.com ([2607:f8b0:4864:20::543])
- by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux))
- id 1kKgnr-0000Vv-6z; Tue, 22 Sep 2020 11:49:49 +0000
-Received: by mail-pg1-x543.google.com with SMTP id o25so6798387pgm.0;
- Tue, 22 Sep 2020 04:49:46 -0700 (PDT)
-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
- h=from:to:cc:subject:date:message-id:mime-version
- :content-transfer-encoding;
- bh=EJwpKrbgqo/Jc/SWHvyAGB9CrpkZ5L1Hzq9tInFHTYk=;
- b=Gtqp4rrTgM1+bYxfUQXe+lfPcgHRW6GccdN42Iszl6ozMbezvftl1BUcKE22S6eFW3
- Vs+lcKZN9Eh9C53YAAd0cuZYhJ2GqlfGNLA/9SyB7s/gIwHqO9Cuu17YpB9dAFfEUxoS
- 825uUcTeRe6BTagZAh2/MBluiMY3TszRi94MbOftxUg+wSqp0wMAPe9RN0gAEc/l2xgK
- 8PhXbZv3uItI4QqoKYiz93vrF/zYhj+oGTI44g2li2fpAgCNL7lXCpSE2C9NsEe+YqTw
- aO5A3W8t4jvp8oCJEvr/MWY1ZZLd1fVJ17W3aGXoDi/7EUcAvX9G5Ee7U68UXGMtty/d
- z5Nw==
-X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
- d=1e100.net; s=20161025;
- h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version
- :content-transfer-encoding;
- bh=EJwpKrbgqo/Jc/SWHvyAGB9CrpkZ5L1Hzq9tInFHTYk=;
- b=XhcpP16zYyJr/qCT9JbO3fn8RyfI44xJL3hvgNrlcr4ljkEZ4TF6OfyhjdEZYeeA3C
- kLlWuAqrSn6mweuhS2LZ0BV5QL/YYaVO4wP4B/y3j+tNbnW3JNM0NtEY19pOtaM4vYK/
- tPuNxld5RvJWxQ9BLs8hH6y7j/ob6oDug170P5YkwK6Wa/FLCi2bw92/vldhdnFP/Nny
- 1bbiWRVls1Ra/Q3z90tGViMkBdlcff6MI9DR5M6a1HTQN7kN9rLDCMGs3r9XVComY07N
- ECbrZbL+iJwuRuT43RAUxE72X/Pn0WYD20unzITf8bta92usNDRgEuxc1bLyL+uHxgUk
- YQKA==
-X-Gm-Message-State: AOAM531Xr1Bg4uwupCAPpH4eBWVrXGALjIWa+5AVNZ8w6ltS4BGgWv6b
- e4g6ycKnUp/KalpJhOMi90o=
-X-Google-Smtp-Source:
- ABdhPJx36OliaaLkiX3ZeZNNWgd/qSKiRor2X0eeHScDrjMSi5bTiEzAfX5j7hkQgqz8ZUT0qqLRNA==
-X-Received: by 2002:a63:1863:: with SMTP id 35mr3131307pgy.413.1600775385014;
- Tue, 22 Sep 2020 04:49:45 -0700 (PDT)
-Received: from guoguo-omen.lan ([156.96.148.94])
- by smtp.gmail.com with ESMTPSA id r4sm2223750pjf.4.2020.09.22.04.49.42
- (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
- Tue, 22 Sep 2020 04:49:44 -0700 (PDT)
-From: Chuanhong Guo <gch981213@gmail.com>
-To: linux-spi@vger.kernel.org
-Subject: [PATCH v2] spi: spi-mtk-nor: fix timeout calculation overflow
-Date: Tue, 22 Sep 2020 19:49:02 +0800
-Message-Id: <20200922114905.2942859-1-gch981213@gmail.com>
-X-Mailer: git-send-email 2.26.2
-MIME-Version: 1.0
-X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3
-X-CRM114-CacheID: sfid-20200922_074948_345420_69207EBE
-X-CRM114-Status: GOOD ( 12.60 )
-X-Spam-Score: 2.6 (++)
-X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary:
- Content analysis details: (2.6 points)
- pts rule name description
- ---- ----------------------
- --------------------------------------------------
- 2.6 RCVD_IN_SBL RBL: Received via a relay in Spamhaus SBL
- [156.96.148.94 listed in zen.spamhaus.org]
- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/,
- no trust [2607:f8b0:4864:20:0:0:0:543 listed in]
- [list.dnswl.org]
- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail
- provider [gch981213[at]gmail.com]
- 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends
- in digit [gch981213[at]gmail.com]
- -0.0 SPF_PASS SPF: sender matches SPF record
- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record
- -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
- -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from
- author's domain
- -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from
- envelope-from domain
- 0.1 DKIM_SIGNED Message has a DKIM or DK signature,
- not necessarily
- valid
-X-BeenThere: linux-arm-kernel@lists.infradead.org
-X-Mailman-Version: 2.1.29
-Precedence: list
-List-Id: <linux-arm-kernel.lists.infradead.org>
-List-Unsubscribe:
- <http://lists.infradead.org/mailman/options/linux-arm-kernel>,
- <mailto:linux-arm-kernel-request@lists.infradead.org?subject=unsubscribe>
-List-Archive: <http://lists.infradead.org/pipermail/linux-arm-kernel/>
-List-Post: <mailto:linux-arm-kernel@lists.infradead.org>
-List-Help: <mailto:linux-arm-kernel-request@lists.infradead.org?subject=help>
-List-Subscribe:
- <http://lists.infradead.org/mailman/listinfo/linux-arm-kernel>,
- <mailto:linux-arm-kernel-request@lists.infradead.org?subject=subscribe>
-Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
- Mark Brown <broonie@kernel.org>, linux-mediatek@lists.infradead.org,
- bayi.cheng@mediatek.com, Matthias Brugger <matthias.bgg@gmail.com>,
- Chuanhong Guo <gch981213@gmail.com>, linux-arm-kernel@lists.infradead.org
-Sender: "linux-arm-kernel" <linux-arm-kernel-bounces@lists.infradead.org>
-Errors-To:
- linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org
-
-CLK_TO_US macro is used to calculate potential transfer time for various
-timeout handling. However it overflows on transfer bigger than 512 bytes
-because it first did (len * 8 * 1000000).
-This controller typically operates at 45MHz. This patch did 2 things:
-1. calculate clock / 1000000 first
-2. add a 4M transfer size cap so that the final timeout in DMA reading
- doesn't overflow
-
-Fixes: 881d1ee9fe81f ("spi: add support for mediatek spi-nor controller")
-Cc: <stable@vger.kernel.org>
-Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
----
-
-Change since v1: fix transfer size cap to 4M
-
- drivers/spi/spi-mtk-nor.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/spi/spi-mtk-nor.c b/drivers/spi/spi-mtk-nor.c
-index 6e6ca2b8e6c82..62f5ff2779884 100644
---- a/drivers/spi/spi-mtk-nor.c
-+++ b/drivers/spi/spi-mtk-nor.c
-@@ -89,7 +89,7 @@
- // Buffered page program can do one 128-byte transfer
- #define MTK_NOR_PP_SIZE 128
-
--#define CLK_TO_US(sp, clkcnt) ((clkcnt) * 1000000 / sp->spi_freq)
-+#define CLK_TO_US(sp, clkcnt) DIV_ROUND_UP(clkcnt, sp->spi_freq / 1000000)
-
- struct mtk_nor {
- struct spi_controller *ctlr;
-@@ -177,6 +177,10 @@ static int mtk_nor_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op)
- if ((op->addr.nbytes == 3) || (op->addr.nbytes == 4)) {
- if ((op->data.dir == SPI_MEM_DATA_IN) &&
- mtk_nor_match_read(op)) {
-+ // limit size to prevent timeout calculation overflow
-+ if (op->data.nbytes > 0x400000)
-+ op->data.nbytes = 0x400000;
-+
- if ((op->addr.val & MTK_NOR_DMA_ALIGN_MASK) ||
- (op->data.nbytes < MTK_NOR_DMA_ALIGN))
- op->data.nbytes = 1;
diff --git a/target/linux/mediatek/patches-5.4/0667-spi-mediatek-fix-timeout-for-large-data.patch b/target/linux/mediatek/patches-5.4/0667-spi-mediatek-fix-timeout-for-large-data.patch
deleted file mode 100644
index a04f5d6..0000000
--- a/target/linux/mediatek/patches-5.4/0667-spi-mediatek-fix-timeout-for-large-data.patch
+++ /dev/null
@@ -1,34 +0,0 @@
---- a/drivers/spi/spi-mt65xx.c
-+++ b/drivers/spi/spi-mt65xx.c
-@@ -720,6 +720,23 @@ static irqreturn_t mtk_spi_interrupt(int
- return IRQ_HANDLED;
- }
-
-+static int mtk_spi_mem_adjust_op_size(struct spi_mem *mem,
-+ struct spi_mem_op *op)
-+{
-+ int opcode_len;
-+
-+ if(!op->data.nbytes)
-+ return 0;
-+
-+ if (op->data.dir != SPI_MEM_NO_DATA) {
-+ opcode_len = 1 + op->addr.nbytes + op->dummy.nbytes;
-+ if (opcode_len + op->data.nbytes > MTK_SPI_IPM_PACKET_SIZE)
-+ op->data.nbytes = MTK_SPI_IPM_PACKET_SIZE -opcode_len;
-+ }
-+
-+ return 0;
-+}
-+
- static bool mtk_spi_mem_supports_op(struct spi_mem *mem,
- const struct spi_mem_op *op)
- {
-@@ -946,6 +963,7 @@ err_exit:
- }
-
- static const struct spi_controller_mem_ops mtk_spi_mem_ops = {
-+ .adjust_op_size = mtk_spi_mem_adjust_op_size,
- .supports_op = mtk_spi_mem_supports_op,
- .exec_op = mtk_spi_mem_exec_op,
- };
diff --git a/target/linux/mediatek/patches-5.4/0668-spi-mediatek-fix-dma-unmap-twice.patch b/target/linux/mediatek/patches-5.4/0668-spi-mediatek-fix-dma-unmap-twice.patch
deleted file mode 100644
index 31562bf..0000000
--- a/target/linux/mediatek/patches-5.4/0668-spi-mediatek-fix-dma-unmap-twice.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- a/drivers/spi/spi-mt65xx.c
-+++ b/drivers/spi/spi-mt65xx.c
-@@ -946,12 +946,10 @@ static int mtk_spi_mem_exec_op(struct sp
- reg_val &= ~SPI_CMD_RX_DMA;
- writel(reg_val, mdata->base + SPI_CMD_REG);
-
-+unmap_rx_dma:
- if (op->data.dir == SPI_MEM_DATA_IN)
- dma_unmap_single(mdata->dev, mdata->rx_dma,
- op->data.nbytes, DMA_FROM_DEVICE);
--unmap_rx_dma:
-- dma_unmap_single(mdata->dev, mdata->rx_dma,
-- op->data.nbytes, DMA_FROM_DEVICE);
- unmap_tx_dma:
- dma_unmap_single(mdata->dev, mdata->tx_dma,
- tx_size, DMA_TO_DEVICE);
diff --git a/target/linux/mediatek/patches-5.4/0669-fix-SPIM-NAND-and-NOR-probing.patch b/target/linux/mediatek/patches-5.4/0669-fix-SPIM-NAND-and-NOR-probing.patch
deleted file mode 100644
index 582771b..0000000
--- a/target/linux/mediatek/patches-5.4/0669-fix-SPIM-NAND-and-NOR-probing.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- a/drivers/spi/spi-mt65xx.c
-+++ b/drivers/spi/spi-mt65xx.c
-@@ -1073,7 +1073,7 @@ static int mtk_spi_probe(struct platform
- goto err_put_master;
- }
-
--/*
-+
- mdata->parent_clk = devm_clk_get(&pdev->dev, "parent-clk");
- if (IS_ERR(mdata->parent_clk)) {
- ret = PTR_ERR(mdata->parent_clk);
-@@ -1101,17 +1101,17 @@ static int mtk_spi_probe(struct platform
- goto err_put_master;
- }
-
-- ret = clk_set_parent(mdata->sel_clk, mdata->parent_clk);
-+ /*ret = clk_set_parent(mdata->sel_clk, mdata->parent_clk);
- if (ret < 0) {
- dev_err(&pdev->dev, "failed to clk_set_parent (%d)\n", ret);
- clk_disable_unprepare(mdata->spi_clk);
- goto err_put_master;
- }
-
-- clk_disable_unprepare(mdata->spi_clk);
-+ clk_disable_unprepare(mdata->sel_clk);*/
-+
-+ //pm_runtime_enable(&pdev->dev);
-
-- pm_runtime_enable(&pdev->dev);
--*/
- ret = devm_spi_register_master(&pdev->dev, master);
- if (ret) {
- dev_err(&pdev->dev, "failed to register master (%d)\n", ret);
diff --git a/target/linux/mediatek/patches-5.4/0701-fix-mtk-nfi-driver-dependency.patch b/target/linux/mediatek/patches-5.4/0701-fix-mtk-nfi-driver-dependency.patch
deleted file mode 100644
index 3023076..0000000
--- a/target/linux/mediatek/patches-5.4/0701-fix-mtk-nfi-driver-dependency.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/drivers/spi/Kconfig
-+++ b/drivers/spi/Kconfig
-@@ -429,6 +429,7 @@ config SPI_MT65XX
-
- config SPI_MTK_SNFI
- tristate "MediaTek SPI NAND interface"
-+ depends on MTD
- select MTD_SPI_NAND
- help
- This selects the SPI NAND FLASH interface(SNFI),
diff --git a/target/linux/mediatek/patches-5.4/0920-kernel-MT7988-fix-spi-dma-unmap.patch b/target/linux/mediatek/patches-5.4/0920-kernel-MT7988-fix-spi-dma-unmap.patch
deleted file mode 100644
index 5129e37..0000000
--- a/target/linux/mediatek/patches-5.4/0920-kernel-MT7988-fix-spi-dma-unmap.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 38d0cd2179791e27f06e1cfc6773f35b699ee99a Mon Sep 17 00:00:00 2001
-From: liya Li <ot_liya.li@mediatek.com>
-Date: Thu, 2 Feb 2023 14:26:39 +0800
-Subject: [PATCH] [WCNCR00293802][kernel][MT7988] fix spi dma unmap
-
-[Description]
-Use dma_unmap_single before memcpy to ensure that
-CPU can get the latest and correct data
-
-[Release-log]
-N/A
-
-Signed-off-by: liya Li <ot_liya.li@mediatek.com>
-Change-Id: Ib0b51e34e289c670f0d020fb62a15078ed116203
----
- drivers/spi/spi-mt65xx.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
-index 1b272d15cc..2034d19790 100644
---- a/drivers/spi/spi-mt65xx.c
-+++ b/drivers/spi/spi-mt65xx.c
-@@ -978,12 +978,12 @@ static int mtk_spi_mem_exec_op(struct spi_mem *mem,
-
- unmap_rx_dma:
- if (op->data.dir == SPI_MEM_DATA_IN) {
-+ dma_unmap_single(mdata->dev, mdata->rx_dma,
-+ op->data.nbytes, DMA_FROM_DEVICE);
- if(!IS_ALIGNED((size_t)op->data.buf.in, 4)) {
- memcpy(op->data.buf.in, rx_tmp_buf, op->data.nbytes);
- kfree(rx_tmp_buf);
- }
-- dma_unmap_single(mdata->dev, mdata->rx_dma,
-- op->data.nbytes, DMA_FROM_DEVICE);
- }
- unmap_tx_dma:
- dma_unmap_single(mdata->dev, mdata->tx_dma,
---
-2.18.0
-
diff --git a/target/linux/mediatek/patches-5.4/0961-dual-image-mount-rootfs.patch b/target/linux/mediatek/patches-5.4/0961-dual-image-mount-rootfs.patch
deleted file mode 100755
index 99f72c0..0000000
--- a/target/linux/mediatek/patches-5.4/0961-dual-image-mount-rootfs.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Index: linux-5.4.224/init/do_mounts.c
-===================================================================
---- linux-5.4.224.orig/init/do_mounts.c
-+++ linux-5.4.224/init/do_mounts.c
-@@ -576,7 +576,8 @@ void __init mount_root(void)
- }
- #endif
- #ifdef CONFIG_MTD_ROOTFS_ROOT_DEV
-- if (!mount_ubi_rootfs())
-+ extern bool dual_boot;
-+ if (!dual_boot && !mount_ubi_rootfs())
- return;
- #endif
- #ifdef CONFIG_BLOCK
-Index: linux-5.4.224/kernel/boot_param.c
-===================================================================
---- linux-5.4.224.orig/kernel/boot_param.c
-+++ linux-5.4.224/kernel/boot_param.c
-@@ -10,7 +10,7 @@
-
- #define BOOT_PARAM_STR_MAX_LEN 256
-
--static bool dual_boot;
-+bool dual_boot;
- module_param(dual_boot, bool, 0444);
-
- static bool no_split_rootfs_data;
diff --git a/target/linux/mediatek/patches-5.4/2000-misc-add-mtk-platform.patch b/target/linux/mediatek/patches-5.4/2000-misc-add-mtk-platform.patch
deleted file mode 100644
index f280e10..0000000
--- a/target/linux/mediatek/patches-5.4/2000-misc-add-mtk-platform.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff -urN a/drivers/misc/Kconfig b/drivers/misc/Kconfig
---- a/drivers/misc/Kconfig 2021-06-29 15:10:00.970788831 +0800
-+++ b/drivers/misc/Kconfig 2021-06-29 15:09:41.579158152 +0800
-@@ -481,4 +481,5 @@
- source "drivers/misc/ocxl/Kconfig"
- source "drivers/misc/cardreader/Kconfig"
- source "drivers/misc/habanalabs/Kconfig"
-+source "drivers/misc/mediatek/Kconfig"
- endmenu
-diff -urN a/drivers/misc/Makefile b/drivers/misc/Makefile
---- a/drivers/misc/Makefile 2021-06-29 15:10:15.150518461 +0800
-+++ b/drivers/misc/Makefile 2021-06-29 15:09:46.939056121 +0800
-@@ -57,3 +57,4 @@
- obj-$(CONFIG_PVPANIC) += pvpanic.o
- obj-$(CONFIG_HABANA_AI) += habanalabs/
- obj-$(CONFIG_XILINX_SDFEC) += xilinx_sdfec.o
-+obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/
diff --git a/target/linux/mediatek/patches-5.4/400-mtd-add-mtk-snand-driver.patch b/target/linux/mediatek/patches-5.4/400-mtd-add-mtk-snand-driver.patch
deleted file mode 100644
index f283bd2..0000000
--- a/target/linux/mediatek/patches-5.4/400-mtd-add-mtk-snand-driver.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- a/drivers/mtd/Kconfig
-+++ b/drivers/mtd/Kconfig
-@@ -230,6 +230,8 @@ source "drivers/mtd/hyperbus/Kconfig"
-
- source "drivers/mtd/nmbm/Kconfig"
-
-+source "drivers/mtd/mtk-snand/Kconfig"
-+
- source "drivers/mtd/composite/Kconfig"
-
- endif # MTD
---- a/drivers/mtd/Makefile
-+++ b/drivers/mtd/Makefile
-@@ -35,5 +35,7 @@ obj-$(CONFIG_MTD_HYPERBUS) += hyperbus/
-
- obj-y += nmbm/
-
-+obj-$(CONFIG_MTK_SPI_NAND) += mtk-snand/
-+
- # Composite drivers must be loaded last
- obj-y += composite/
diff --git a/target/linux/mediatek/patches-5.4/415-mtd-spinand-fix-F50L1G41LB-ecc-check.patch b/target/linux/mediatek/patches-5.4/415-mtd-spinand-fix-F50L1G41LB-ecc-check.patch
deleted file mode 100644
index e4e51bb..0000000
--- a/target/linux/mediatek/patches-5.4/415-mtd-spinand-fix-F50L1G41LB-ecc-check.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/drivers/mtd/nand/spi/gigadevice.c
-+++ b/drivers/mtd/nand/spi/gigadevice.c
-@@ -263,8 +263,7 @@ static const struct spinand_info gigadev
- &write_cache_variants,
- &update_cache_variants),
- 0,
-- SPINAND_ECCINFO(&gd5fxgq4xa_ooblayout,
-- gd5fxgq4xa_ecc_get_status)),
-+ SPINAND_ECCINFO(&gd5fxgq4xa_ooblayout, NULL)),
- SPINAND_INFO("GD5F1GQ4xA",
- SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xf1),
- NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
diff --git a/target/linux/mediatek/patches-5.4/416-mtd-spinor-support-EN25QX128A.patch b/target/linux/mediatek/patches-5.4/416-mtd-spinor-support-EN25QX128A.patch
deleted file mode 100644
index 2985532..0000000
--- a/target/linux/mediatek/patches-5.4/416-mtd-spinor-support-EN25QX128A.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/drivers/mtd/spi-nor/spi-nor.c 2022-12-14 15:29:28.587567592 +0800
-+++ b/drivers/mtd/spi-nor/spi-nor.c 2022-12-14 15:04:52.625250000 +0800
-@@ -2246,6 +2246,9 @@ static const struct flash_info spi_nor_i
- { "en25qh64", INFO(0x1c7017, 0, 64 * 1024, 128,
- SECT_4K | SPI_NOR_DUAL_READ) },
- { "en25qh128", INFO(0x1c7018, 0, 64 * 1024, 256, 0) },
-+ { "en25qx128", INFO(0x1c7118, 0, 64 * 1024, 256,
-+ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
-+ SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) },
- { "en25qh256", INFO(0x1c7019, 0, 64 * 1024, 512, 0) },
- { "en25s64", INFO(0x1c3817, 0, 64 * 1024, 128, SECT_4K) },
-
diff --git a/target/linux/mediatek/patches-5.4/492-mtd-tests-fix-pagetest-load.patch b/target/linux/mediatek/patches-5.4/492-mtd-tests-fix-pagetest-load.patch
deleted file mode 100644
index f10b5c5..0000000
--- a/target/linux/mediatek/patches-5.4/492-mtd-tests-fix-pagetest-load.patch
+++ /dev/null
@@ -1,42 +0,0 @@
---- a/drivers/mtd/tests/pagetest.c 2022-11-28 16:08:26.978090509 +0800
-+++ b/drivers/mtd/tests/pagetest.c 2022-11-28 16:10:04.351026850 +0800
-@@ -25,6 +25,10 @@ static int dev = -EINVAL;
- module_param(dev, int, S_IRUGO);
- MODULE_PARM_DESC(dev, "MTD device number to use");
-
-+static int count = 10000;
-+module_param(count, int, 0444);
-+MODULE_PARM_DESC(count, "Number of operations to do (default is 10000)");
-+
- static struct mtd_info *mtd;
- static unsigned char *twopages;
- static unsigned char *writebuf;
-@@ -331,7 +335,7 @@ static int __init mtd_pagetest_init(void
- return -EINVAL;
- }
-
-- pr_info("MTD device: %d\n", dev);
-+ pr_info("MTD device: %d count:%d\n", dev, count);
-
- mtd = get_mtd_device(NULL, dev);
- if (IS_ERR(mtd)) {
-@@ -376,6 +380,7 @@ static int __init mtd_pagetest_init(void
- if (err)
- goto out;
-
-+LOOP:
- /* Erase all eraseblocks */
- pr_info("erasing whole device\n");
- err = mtdtest_erase_good_eraseblocks(mtd, bbt, 0, ebcnt);
-@@ -435,7 +440,10 @@ static int __init mtd_pagetest_init(void
- if (err)
- goto out;
-
-- pr_info("finished with %d errors\n", errcnt);
-+ pr_info("finished with %d errors count:%d\n", errcnt, count);
-+
-+ if (count-- > 0)
-+ goto LOOP;
- out:
-
- kfree(bbt);
diff --git a/target/linux/mediatek/patches-5.4/7000-fix-race-inside-napi-enable.patch b/target/linux/mediatek/patches-5.4/7000-fix-race-inside-napi-enable.patch
deleted file mode 100644
index 052f40c..0000000
--- a/target/linux/mediatek/patches-5.4/7000-fix-race-inside-napi-enable.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH v2] napi: fix race inside napi_enable
-From: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
-Date: Sat, 18 Sep 2021 16:52:32 +0800
-Message-Id: <20210918085232.71436-1-xuanzhuo@linux.alibaba.com>
-To: netdev@vger.kernel.org, linyunsheng@huawei.com
-Cc: "David S. Miller" <davem@davemloft.net>, Jakub Kicinski <kuba@kernel.org>, Eric Dumazet <edumazet@google.com>, Daniel Borkmann <daniel@iogearbox.net>, Antoine Tenart <atenart@kernel.org>, Alexander Lobakin <alobakin@pm.me>, Wei Wang <weiwan@google.com>, Taehee Yoo <ap420073@gmail.com>,Björn Töpel <bjorn@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Kumar Kartikeya Dwivedi <memxor@gmail.com>, Neil Horman <nhorman@redhat.com>, Dust Li <dust.li@linux.alibaba.com>
-List-Id: <netdev.vger.kernel.org>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-The process will cause napi.state to contain NAPI_STATE_SCHED and
-not in the poll_list, which will cause napi_disable() to get stuck.
-
-The prefix "NAPI_STATE_" is removed in the figure below, and
-NAPI_STATE_HASHED is ignored in napi.state.
-
- CPU0 | CPU1 | napi.state
-===============================================================================
-napi_disable() | | SCHED | NPSVC
-napi_enable() | |
-{ | |
- smp_mb__before_atomic(); | |
- clear_bit(SCHED, &n->state); | | NPSVC
- | napi_schedule_prep() | SCHED | NPSVC
- | napi_poll() |
- | napi_complete_done() |
- | { |
- | if (n->state & (NPSVC | | (1)
- | _BUSY_POLL))) |
- | return false; |
- | ................ |
- | } | SCHED | NPSVC
- | |
- clear_bit(NPSVC, &n->state); | | SCHED
-} | |
- | |
-napi_schedule_prep() | | SCHED | MISSED (2)
-
-(1) Here return direct. Because of NAPI_STATE_NPSVC exists.
-(2) NAPI_STATE_SCHED exists. So not add napi.poll_list to sd->poll_list
-
-Since NAPI_STATE_SCHED already exists and napi is not in the
-sd->poll_list queue, NAPI_STATE_SCHED cannot be cleared and will always
-exist.
-
-1. This will cause this queue to no longer receive packets.
-2. If you encounter napi_disable under the protection of rtnl_lock, it
- will cause the entire rtnl_lock to be locked, affecting the overall
- system.
-
-This patch uses cmpxchg to implement napi_enable(), which ensures that
-there will be no race due to the separation of clear two bits.
-
-Fixes: 2d8bff12699abc ("netpoll: Close race condition between poll_one_napi and napi_disable")
-Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
-Reviewed-by: Dust Li <dust.li@linux.alibaba.com>
----
- net/core/dev.c | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/net/core/dev.c b/net/core/dev.c
-index 74fd402d26dd..7ee9fecd3aff 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -6923,12 +6923,16 @@ EXPORT_SYMBOL(napi_disable);
- */
- void napi_enable(struct napi_struct *n)
- {
-- BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
-- smp_mb__before_atomic();
-- clear_bit(NAPI_STATE_SCHED, &n->state);
-- clear_bit(NAPI_STATE_NPSVC, &n->state);
-- if (n->dev->threaded && n->thread)
-- set_bit(NAPI_STATE_THREADED, &n->state);
-+ unsigned long val, new;
-+
-+ do {
-+ val = READ_ONCE(n->state);
-+ BUG_ON(!test_bit(NAPI_STATE_SCHED, &val));
-+
-+ new = val & ~(NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC);
-+ if (n->dev->threaded && n->thread)
-+ new |= NAPIF_STATE_THREADED;
-+ } while (cmpxchg(&n->state, val, new) != val);
- }
- EXPORT_SYMBOL(napi_enable);
-
-
---
-2.31.0
-
-
diff --git a/target/linux/mediatek/patches-5.4/7001-net-make-napi-disable-symmetric-with-enable.patch b/target/linux/mediatek/patches-5.4/7001-net-make-napi-disable-symmetric-with-enable.patch
deleted file mode 100644
index ac84ffc..0000000
--- a/target/linux/mediatek/patches-5.4/7001-net-make-napi-disable-symmetric-with-enable.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH v2] net: make napi_disable() symmetric with enable
-From: Jakub Kicinski <kuba@kernel.org>
-Date: Fri, 24 Sep 2021 13:24:53 -0700
-Message-Id: <20210924202453.1051687-1-kuba@kernel.org>
-To: davem@davemloft.net
-Cc: netdev@vger.kernel.org, eric.dumazet@gmail.com, weiwan@google.com, xuanzhuo@linux.alibaba.com, Jakub Kicinski <kuba@kernel.org>
-List-Id: <netdev.vger.kernel.org>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-Commit 3765996e4f0b ("napi: fix race inside napi_enable") fixed
-an ordering bug in napi_enable() and made the napi_enable() diverge
-from napi_disable(). The state transitions done on disable are
-not symmetric to enable.
-
-There is no known bug in napi_disable() this is just refactoring.
-
-Eric suggests we can also replace msleep(1) with a more opportunistic
-usleep_range().
-
-Signed-off-by: Jakub Kicinski <kuba@kernel.org>
----
- net/core/dev.c | 17 ++++++++++++-----
- 1 file changed, 12 insertions(+), 5 deletions(-)
-
-diff --git a/net/core/dev.c b/net/core/dev.c
-index f24c3a9..f0a556a 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -6386,18 +6386,25 @@ EXPORT_SYMBOL(netif_napi_add);
-
- void napi_disable(struct napi_struct *n)
- {
-+ unsigned long val, new;
-+
- might_sleep();
- set_bit(NAPI_STATE_DISABLE, &n->state);
-
-- while (test_and_set_bit(NAPI_STATE_SCHED, &n->state))
-- msleep(1);
-- while (test_and_set_bit(NAPI_STATE_NPSVC, &n->state))
-- msleep(1);
-+ do {
-+ val = READ_ONCE(n->state);
-+ if (val & (NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC)) {
-+ usleep_range(20, 200);
-+ continue;
-+ }
-+
-+ new = val | NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC;
-+ new &= ~(NAPIF_STATE_THREADED);
-+ } while (cmpxchg(&n->state, val, new) != val);
-
- hrtimer_cancel(&n->timer);
-
- clear_bit(NAPI_STATE_DISABLE, &n->state);
-- clear_bit(NAPI_STATE_THREADED, &n->state);
- }
- EXPORT_SYMBOL(napi_disable);
-
---
-2.31.1
diff --git a/target/linux/mediatek/patches-5.4/7002-net-fix-premature-exit-from-napi-state-polling-in-napi-disable-v2.patch b/target/linux/mediatek/patches-5.4/7002-net-fix-premature-exit-from-napi-state-polling-in-napi-disable-v2.patch
deleted file mode 100644
index 0daf233..0000000
--- a/target/linux/mediatek/patches-5.4/7002-net-fix-premature-exit-from-napi-state-polling-in-napi-disable-v2.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From git@z Thu Jan 1 00:00:00 1970
-Subject: [PATCH v2] net: fix premature exit from NAPI state polling in napi_disable()
-From: Alexander Lobakin <alexandr.lobakin@intel.com>
-Date: Wed, 10 Nov 2021 20:56:05 +0100
-Message-Id: <20211110195605.1304-1-alexandr.lobakin@intel.com>
-To: "David S. Miller" <davem@davemloft.net>, Jakub Kicinski <kuba@kernel.org>
-Cc: Alexander Lobakin <alexandr.lobakin@intel.com>, Jesse Brandeburg <jesse.brandeburg@intel.com>, Maciej Fijalkowski <maciej.fijalkowski@intel.com>, Michal Swiatkowski <michal.swiatkowski@intel.com>, Xuan Zhuo <xuanzhuo@linux.alibaba.com>, Antoine Tenart <atenart@kernel.org>, Eric Dumazet <edumazet@google.com>, Wei Wang <weiwan@google.com>,Björn Töpel <bjorn@kernel.org>, netdev@vger.kernel.org, linux-kernel@vger.kernel.org
-List-Id: <linux-kernel.vger.kernel.org>
-MIME-Version: 1.0
-Content-Type: text/plain; charset="utf-8"
-Content-Transfer-Encoding: 7bit
-
-Commit 719c57197010 ("net: make napi_disable() symmetric with
-enable") accidentally introduced a bug sometimes leading to a kernel
-BUG when bringing an iface up/down under heavy traffic load.
-
-Prior to this commit, napi_disable() was polling n->state until
-none of (NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC) is set and then
-always flip them. Now there's a possibility to get away with the
-NAPIF_STATE_SCHE unset as 'continue' drops us to the cmpxchg()
-call with an unitialized variable, rather than straight to
-another round of the state check.
-
-Error path looks like:
-
-napi_disable():
-unsigned long val, new; /* new is uninitialized */
-
-do {
- val = READ_ONCE(n->state); /* NAPIF_STATE_NPSVC and/or
- NAPIF_STATE_SCHED is set */
- if (val & (NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC)) { /* true */
- usleep_range(20, 200);
- continue; /* go straight to the condition check */
- }
- new = val | <...>
-} while (cmpxchg(&n->state, val, new) != val); /* state == val, cmpxchg()
- writes garbage */
-
-napi_enable():
-do {
- val = READ_ONCE(n->state);
- BUG_ON(!test_bit(NAPI_STATE_SCHED, &val)); /* 50/50 boom */
-<...>
-
-while the typical BUG splat is like:
-
-[ 172.652461] ------------[ cut here ]------------
-[ 172.652462] kernel BUG at net/core/dev.c:6937!
-[ 172.656914] invalid opcode: 0000 [#1] PREEMPT SMP PTI
-[ 172.661966] CPU: 36 PID: 2829 Comm: xdp_redirect_cp Tainted: G I 5.15.0 #42
-[ 172.670222] Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.02.01.0014.082620210524 08/26/2021
-[ 172.680646] RIP: 0010:napi_enable+0x5a/0xd0
-[ 172.684832] Code: 07 49 81 cc 00 01 00 00 4c 89 e2 48 89 d8 80 e6 fb f0 48 0f b1 55 10 48 39 c3 74 10 48 8b 5d 10 f6 c7 04 75 3d f6 c3 01 75 b4 <0f> 0b 5b 5d 41 5c c3 65 ff 05 b8 e5 61 53 48 c7 c6 c0 f3 34 ad 48
-[ 172.703578] RSP: 0018:ffffa3c9497477a8 EFLAGS: 00010246
-[ 172.708803] RAX: ffffa3c96615a014 RBX: 0000000000000000 RCX: ffff8a4b575301a0
-< snip >
-[ 172.782403] Call Trace:
-[ 172.784857] <TASK>
-[ 172.786963] ice_up_complete+0x6f/0x210 [ice]
-[ 172.791349] ice_xdp+0x136/0x320 [ice]
-[ 172.795108] ? ice_change_mtu+0x180/0x180 [ice]
-[ 172.799648] dev_xdp_install+0x61/0xe0
-[ 172.803401] dev_xdp_attach+0x1e0/0x550
-[ 172.807240] dev_change_xdp_fd+0x1e6/0x220
-[ 172.811338] do_setlink+0xee8/0x1010
-[ 172.814917] rtnl_setlink+0xe5/0x170
-[ 172.818499] ? bpf_lsm_binder_set_context_mgr+0x10/0x10
-[ 172.823732] ? security_capable+0x36/0x50
-< snip >
-
-Fix this by replacing 'do { } while (cmpxchg())' with an "infinite"
-for-loop with an explicit break.
-
-From v1 [0]:
- - just use a for-loop to simplify both the fix and the existing
- code (Eric).
-
-[0] https://lore.kernel.org/netdev/20211110191126.1214-1-alexandr.lobakin@intel.com
-
-Fixes: 719c57197010 ("net: make napi_disable() symmetric with enable")
-Suggested-by: Eric Dumazet <edumazet@google.com> # for-loop
-Signed-off-by: Alexander Lobakin <alexandr.lobakin@intel.com>
-Reviewed-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
-Reviewed-by: Eric Dumazet <edumazet@google.com>
----
- net/core/dev.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/net/core/dev.c b/net/core/dev.c
-index c8f7c15..fe2c856 100644
---- a/net/core/dev.c
-+++ b/net/core/dev.c
-@@ -6391,7 +6391,7 @@ void napi_disable(struct napi_struct *n)
- might_sleep();
- set_bit(NAPI_STATE_DISABLE, &n->state);
-
-- do {
-+ for ( ; ; ) {
- val = READ_ONCE(n->state);
- if (val & (NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC)) {
- usleep_range(20, 200);
-@@ -6400,7 +6400,10 @@ void napi_disable(struct napi_struct *n)
-
- new = val | NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC;
- new &= ~(NAPIF_STATE_THREADED);
-- } while (cmpxchg(&n->state, val, new) != val);
-+
-+ if (cmpxchg(&n->state, val, new) == val)
-+ break;
-+ }
-
- hrtimer_cancel(&n->timer);
-
diff --git a/target/linux/mediatek/patches-5.4/740-add-gpy211-phy-support.patch b/target/linux/mediatek/patches-5.4/740-add-gpy211-phy-support.patch
deleted file mode 100644
index 2496084..0000000
--- a/target/linux/mediatek/patches-5.4/740-add-gpy211-phy-support.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Index: linux-5.4.119/drivers/net/phy/Kconfig
-===================================================================
---- linux-5.4.119.orig/drivers/net/phy/Kconfig
-+++ linux-5.4.119/drivers/net/phy/Kconfig
-@@ -468,6 +468,11 @@ config FIXED_PHY
-
- Currently tested with mpc866ads and mpc8349e-mitx.
-
-+config GPY211_PHY
-+ tristate "GPY211 PHY"
-+ ---help---
-+ Supports the Intel GPY211 PHY with rate adaption.
-+
- config ICPLUS_PHY
- tristate "ICPlus PHYs"
- ---help---
-Index: linux-5.4.119/drivers/net/phy/Makefile
-===================================================================
---- linux-5.4.119.orig/drivers/net/phy/Makefile
-+++ linux-5.4.119/drivers/net/phy/Makefile
-@@ -86,6 +86,7 @@ obj-$(CONFIG_DP83TC811_PHY) += dp83tc811
- obj-$(CONFIG_DP83848_PHY) += dp83848.o
- obj-$(CONFIG_DP83867_PHY) += dp83867.o
- obj-$(CONFIG_FIXED_PHY) += fixed_phy.o
-+obj-$(CONFIG_GPY211_PHY) += gpy211.o
- obj-$(CONFIG_ICPLUS_PHY) += icplus.o
- obj-$(CONFIG_INTEL_XWAY_PHY) += intel-xway.o
- obj-$(CONFIG_LSI_ET1011C_PHY) += et1011c.o
diff --git a/target/linux/mediatek/patches-5.4/745-en8801sc-gphy-support.patch b/target/linux/mediatek/patches-5.4/745-en8801sc-gphy-support.patch
deleted file mode 100644
index 6de04c3..0000000
--- a/target/linux/mediatek/patches-5.4/745-en8801sc-gphy-support.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Index: drivers/net/phy/Kconfig
-===================================================================
---- a/drivers/net/phy/Kconfig
-+++ b/drivers/net/phy/Kconfig
-@@ -350,6 +350,11 @@ config AIROHA_EN8801S_PHY
- depends on HWMON || HWMON=n
- select MDIO_I2C
-
-+config AIROHA_EN8801SC_PHY
-+ tristate "Drivers for Airoha EN8801S Gigabit PHYs for MediaTek SoC."
-+ ---help---
-+ Currently supports the Airoha EN8801S PHY for MediaTek SoC.
-+
- config AIROHA_EN8811H_PHY
- tristate "Drivers for Airoha EN8811H 2.5G Gigabit PHY"
- ---help---
-Index: drivers/net/phy/Makefile
-===================================================================
---- a/drivers/net/phy/Makefile
-+++ b/drivers/net/phy/Makefile
-@@ -68,5 +68,6 @@ ifdef CONFIG_HWMON
- aquantia-objs += aquantia_hwmon.o
- endif
-+obj-$(CONFIG_AIROHA_EN8801SC_PHY) += en8801sc.o
- obj-$(CONFIG_AIROHA_EN8811H_PHY) += air_en8811h.o
- obj-$(CONFIG_AQUANTIA_PHY) += aquantia.o
- obj-$(CONFIG_AX88796B_PHY) += ax88796b.o
diff --git a/target/linux/mediatek/patches-5.4/746-add-mediatek-2p5ge-phy-support.patch b/target/linux/mediatek/patches-5.4/746-add-mediatek-2p5ge-phy-support.patch
deleted file mode 100644
index 161e90f..0000000
--- a/target/linux/mediatek/patches-5.4/746-add-mediatek-2p5ge-phy-support.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- a/drivers/net/phy/Kconfig
-+++ b/drivers/net/phy/Kconfig
-@@ -431,6 +431,11 @@ config MEDIATEK_GE_SOC_PHY
- present in the SoCs efuse and will dynamically calibrate VCM
- (common-mode voltage) during startup.
-
-+config MEDIATEK_2P5GE_PHY
-+ tristate "MediaTek 2.5Gb Ethernet PHYs"
-+ ---help---
-+ Supports MediaTek internal 2.5Gb Ethernet PHYs.
-+
- config MICREL_PHY
- tristate "Micrel PHYs"
- ---help---
---- a/drivers/net/phy/Makefile
-+++ b/drivers/net/phy/Makefile
-@@ -79,6 +79,7 @@ obj-$(CONFIG_MARVELL_PHY) += marvell.o
- obj-$(CONFIG_MARVELL_10G_PHY) += marvell10g.o
- obj-$(CONFIG_MEDIATEK_GE_PHY) += mediatek-ge.o
- obj-$(CONFIG_MEDIATEK_GE_SOC_PHY) += mediatek-ge-soc.o
-+obj-$(CONFIG_MEDIATEK_2P5GE_PHY)+= mediatek-2p5ge.o
- obj-$(CONFIG_MESON_GXL_PHY) += meson-gxl.o
- obj-$(CONFIG_MICREL_KS8995MA) += spi_ks8995.o
- obj-$(CONFIG_MICREL_PHY) += micrel.o
diff --git a/target/linux/mediatek/patches-5.4/8001-PATCH-2-4-dt-bindings-phy-Add-PHY_TYPE_DP-definition.patch b/target/linux/mediatek/patches-5.4/8001-PATCH-2-4-dt-bindings-phy-Add-PHY_TYPE_DP-definition.patch
deleted file mode 100644
index f83e220..0000000
--- a/target/linux/mediatek/patches-5.4/8001-PATCH-2-4-dt-bindings-phy-Add-PHY_TYPE_DP-definition.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 8a79db5e83a5d52c74e6f3c40d6f312cf899213e Mon Sep 17 00:00:00 2001
-From: Jyri Sarha <jsarha@ti.com>
-Date: Wed, 8 Jan 2020 10:30:07 +0200
-Subject: [PATCH 1/5] dt-bindings: phy: Add PHY_TYPE_DP definition
-
-Add definition for DisplayPort phy type.
-
-Signed-off-by: Jyri Sarha <jsarha@ti.com>
-Reviewed-by: Roger Quadros <rogerq@ti.com>
-Reviewed-by: Kishon Vijay Abraham I <kishon@ti.com>
-Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
----
- include/dt-bindings/phy/phy.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/include/dt-bindings/phy/phy.h b/include/dt-bindings/phy/phy.h
-index b6a1eaf1b339..1f3f866fae7b 100644
---- a/include/dt-bindings/phy/phy.h
-+++ b/include/dt-bindings/phy/phy.h
-@@ -16,5 +16,6 @@
- #define PHY_TYPE_USB2 3
- #define PHY_TYPE_USB3 4
- #define PHY_TYPE_UFS 5
-+#define PHY_TYPE_DP 6
-
- #endif /* _DT_BINDINGS_PHY */
---
-2.18.0
-
diff --git a/target/linux/mediatek/patches-5.4/8002-PATCH-3-4-dt-bindings-phy-Add-PHY_TYPE_XPCS-definition.patch b/target/linux/mediatek/patches-5.4/8002-PATCH-3-4-dt-bindings-phy-Add-PHY_TYPE_XPCS-definition.patch
deleted file mode 100644
index 7bd1ca7..0000000
--- a/target/linux/mediatek/patches-5.4/8002-PATCH-3-4-dt-bindings-phy-Add-PHY_TYPE_XPCS-definition.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From c5d3cdad688ed75fb311a3a671eb30ba7106d7d3 Mon Sep 17 00:00:00 2001
-From: Dilip Kota <eswara.kota@linux.intel.com>
-Date: Tue, 19 May 2020 14:19:19 +0800
-Subject: [PATCH 2/5] dt-bindings: phy: Add PHY_TYPE_XPCS definition
-
-Add definition for Ethernet PCS phy type.
-
-Signed-off-by: Dilip Kota <eswara.kota@linux.intel.com>
-Acked-by: Rob Herring <robh@kernel.org>
-Acked-By: Vinod Koul <vkoul@kernel.org>
-Link: https://lore.kernel.org/r/6091f0d2a1046f1e3656d9e33b6cc433d5465eaf.1589868358.git.eswara.kota@linux.intel.com
-Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com>
----
- include/dt-bindings/phy/phy.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/include/dt-bindings/phy/phy.h b/include/dt-bindings/phy/phy.h
-index 1f3f866fae7b..3727ef72138b 100644
---- a/include/dt-bindings/phy/phy.h
-+++ b/include/dt-bindings/phy/phy.h
-@@ -17,5 +17,6 @@
- #define PHY_TYPE_USB3 4
- #define PHY_TYPE_UFS 5
- #define PHY_TYPE_DP 6
-+#define PHY_TYPE_XPCS 7
-
- #endif /* _DT_BINDINGS_PHY */
---
-2.18.0
-
diff --git a/target/linux/mediatek/patches-5.4/8003-PATCH-4-4-dt-bindings-phy-Add-DT-bindings-for-Xilinx-ZynqMP-PS.patch b/target/linux/mediatek/patches-5.4/8003-PATCH-4-4-dt-bindings-phy-Add-DT-bindings-for-Xilinx-ZynqMP-PS.patch
deleted file mode 100644
index ef5df66..0000000
--- a/target/linux/mediatek/patches-5.4/8003-PATCH-4-4-dt-bindings-phy-Add-DT-bindings-for-Xilinx-ZynqMP-PS.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From cea0f76a483d1270ac6f6513964e3e75193dda48 Mon Sep 17 00:00:00 2001
-From: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>
-Date: Mon, 29 Jun 2020 15:00:52 +0300
-Subject: [PATCH 3/5] dt-bindings: phy: Add DT bindings for Xilinx ZynqMP PSGTR
- PHY
-
-Add DT bindings for the Xilinx ZynqMP PHY. ZynqMP SoCs have a High Speed
-Processing System Gigabit Transceiver which provides PHY capabilities to
-USB, SATA, PCIE, Display Port and Ehernet SGMII controllers.
-
-Signed-off-by: Anurag Kumar Vulisha <anurag.kumar.vulisha@xilinx.com>
-Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-Reviewed-by: Rob Herring <robh@kernel.org>
-Link: https://lore.kernel.org/r/20200629120054.29338-2-laurent.pinchart@ideasonboard.com
-Signed-off-by: Vinod Koul <vkoul@kernel.org>
----
- include/dt-bindings/phy/phy.h | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/include/dt-bindings/phy/phy.h b/include/dt-bindings/phy/phy.h
-index 3727ef72138b..36e8c241cf48 100644
---- a/include/dt-bindings/phy/phy.h
-+++ b/include/dt-bindings/phy/phy.h
-@@ -18,5 +18,6 @@
- #define PHY_TYPE_UFS 5
- #define PHY_TYPE_DP 6
- #define PHY_TYPE_XPCS 7
-+#define PHY_TYPE_SGMII 8
-
- #endif /* _DT_BINDINGS_PHY */
---
-2.18.0
-
diff --git a/target/linux/mediatek/patches-5.4/9103-drivers-spi-mt65xx-add-dts-buswidth-flow.patch b/target/linux/mediatek/patches-5.4/9103-drivers-spi-mt65xx-add-dts-buswidth-flow.patch
deleted file mode 100644
index 31ceb83..0000000
--- a/target/linux/mediatek/patches-5.4/9103-drivers-spi-mt65xx-add-dts-buswidth-flow.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/spi/spi-mt65xx.c
-+++ b/drivers/spi/spi-mt65xx.c
-@@ -1080,7 +1080,7 @@ static int mtk_spi_probe(struct platform
- master->flags = SPI_MASTER_MUST_TX;
-
- if (mdata->dev_comp->ipm_design)
-- master->mode_bits |= SPI_LOOP;
-+ master->mode_bits |= SPI_LOOP | SPI_RX_DUAL | SPI_TX_DUAL | SPI_RX_QUAD | SPI_TX_QUAD;
-
- if (mdata->dev_comp->ipm_design) {
- mdata->dev = dev;
diff --git a/target/linux/mediatek/patches-5.4/745-mdiobus-add-c45.patch b/target/linux/mediatek/patches-5.4/999-1600-mdiobus-add-c45.patch
similarity index 86%
rename from target/linux/mediatek/patches-5.4/745-mdiobus-add-c45.patch
rename to target/linux/mediatek/patches-5.4/999-1600-mdiobus-add-c45.patch
index 93c00b8..acc6d2a 100644
--- a/target/linux/mediatek/patches-5.4/745-mdiobus-add-c45.patch
+++ b/target/linux/mediatek/patches-5.4/999-1600-mdiobus-add-c45.patch
@@ -1,3 +1,12 @@
+From abf7f24a61f01977b657285d6425b1185354a29a Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:05:59 +0800
+Subject: [PATCH] [backport-networking-generic][999-1600-mdiobus-add-c45.patch]
+
+---
+ include/linux/mdio.h | 49 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 49 insertions(+)
+
diff --git a/include/linux/mdio.h b/include/linux/mdio.h
index 0f1f784de..006d1c1e9 100644
--- a/include/linux/mdio.h
@@ -68,5 +77,5 @@
int mdiobus_unregister_device(struct mdio_device *mdiodev);
bool mdiobus_is_registered_device(struct mii_bus *bus, int addr);
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/999-1700-macsec-revert-async-support.patch b/target/linux/mediatek/patches-5.4/999-1700-macsec-revert-async-support.patch
new file mode 100644
index 0000000..3212b6b
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-1700-macsec-revert-async-support.patch
@@ -0,0 +1,27 @@
+From 8b45e5c6b6b419305ef893e1dfdd4c69c020958b Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:05:59 +0800
+Subject: [PATCH]
+ [backport-networking-drivers][999-1700-macsec-revert-async-support.patch]
+
+---
+ drivers/net/macsec.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/drivers/net/macsec.c b/drivers/net/macsec.c
+index f729f55f6..e3f03c89c 100644
+--- a/drivers/net/macsec.c
++++ b/drivers/net/macsec.c
+@@ -1311,8 +1311,7 @@ static struct crypto_aead *macsec_alloc_tfm(char *key, int key_len, int icv_len)
+ struct crypto_aead *tfm;
+ int ret;
+
+- /* Pick a sync gcm(aes) cipher to ensure order is preserved. */
+- tfm = crypto_alloc_aead("gcm(aes)", 0, CRYPTO_ALG_ASYNC);
++ tfm = crypto_alloc_aead("gcm(aes)", 0, 0);
+
+ if (IS_ERR(tfm))
+ return tfm;
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/741-add-default-setting-to-dsa-unused-port.patch b/target/linux/mediatek/patches-5.4/999-1701-add-default-setting-to-dsa-unused-port.patch
similarity index 71%
rename from target/linux/mediatek/patches-5.4/741-add-default-setting-to-dsa-unused-port.patch
rename to target/linux/mediatek/patches-5.4/999-1701-add-default-setting-to-dsa-unused-port.patch
index 7769ebd..888a312 100644
--- a/target/linux/mediatek/patches-5.4/741-add-default-setting-to-dsa-unused-port.patch
+++ b/target/linux/mediatek/patches-5.4/999-1701-add-default-setting-to-dsa-unused-port.patch
@@ -1,8 +1,19 @@
-Index: linux-5.4.124/drivers/net/dsa/mt7530.c
-===================================================================
---- linux-5.4.124.orig/drivers/net/dsa/mt7530.c
-+++ linux-5.4.124/drivers/net/dsa/mt7530.c
-@@ -1021,6 +1021,9 @@ mt7530_stp_state_set(struct dsa_switch *
+From e3dd6804fa642a733b7a6932d60bb83b6363555c Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:05:59 +0800
+Subject: [PATCH]
+ [backport-networking-drivers][999-1701-add-default-setting-to-dsa-unused-port.patch]
+
+---
+ drivers/net/dsa/mt7530.c | 62 ++++++++++++++++++++++++++++++++++++++--
+ drivers/net/dsa/mt7530.h | 1 +
+ 2 files changed, 60 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
+index 8ce3d51e8..008432d5c 100644
+--- a/drivers/net/dsa/mt7530.c
++++ b/drivers/net/dsa/mt7530.c
+@@ -1022,6 +1022,9 @@ mt7530_stp_state_set(struct dsa_switch *ds, int port, u8 state)
struct mt7530_priv *priv = ds->priv;
u32 stp_state;
@@ -12,10 +23,11 @@
switch (state) {
case BR_STATE_DISABLED:
stp_state = MT7530_STP_DISABLED;
-@@ -1676,10 +1679,58 @@ mt7530_setup(struct dsa_switch *ds)
+@@ -1674,11 +1677,59 @@ mt7530_setup(struct dsa_switch *ds)
+ return 0;
}
- static int
++static int
+setup_unused_ports(struct dsa_switch *ds, u32 pm)
+{
+ struct mt7530_priv *priv = ds->priv;
@@ -62,7 +74,7 @@
+ return 0;
+}
+
-+static int
+ static int
mt7531_setup(struct dsa_switch *ds)
{
struct mt7530_priv *priv = ds->priv;
@@ -71,7 +83,7 @@
u32 val, id;
int ret, i;
-@@ -1767,7 +1818,9 @@ mt7531_setup(struct dsa_switch *ds)
+@@ -1766,7 +1817,9 @@ mt7531_setup(struct dsa_switch *ds)
mt7530_set(priv, MT7531_DBG_CNT(i), MT7531_DIS_CLR);
@@ -82,7 +94,7 @@
mt753x_cpu_port_enable(ds, i);
else
mt7530_port_disable(ds, i);
-@@ -1777,6 +1830,9 @@ mt7531_setup(struct dsa_switch *ds)
+@@ -1776,6 +1829,9 @@ mt7531_setup(struct dsa_switch *ds)
PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
}
@@ -92,7 +104,7 @@
ds->configure_vlan_while_not_filtering = true;
/* Flush the FDB table */
-@@ -2101,7 +2157,7 @@ mt7531_mac_config(struct dsa_switch *ds,
+@@ -2100,7 +2156,7 @@ mt7531_mac_config(struct dsa_switch *ds, int port, unsigned int mode,
case PHY_INTERFACE_MODE_RGMII_RXID:
case PHY_INTERFACE_MODE_RGMII_TXID:
dp = dsa_to_port(ds, port);
@@ -101,7 +113,7 @@
return mt7531_rgmii_setup(priv, port, interface, phydev);
case PHY_INTERFACE_MODE_SGMII:
return mt7531_sgmii_setup_mode_an(priv, port, interface);
-@@ -2641,7 +2697,7 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -2640,7 +2696,7 @@ mt7530_probe(struct mdio_device *mdiodev)
if (!priv)
return -ENOMEM;
@@ -110,10 +122,10 @@
if (!priv->ds)
return -ENOMEM;
-Index: linux-5.4.124/drivers/net/dsa/mt7530.h
-===================================================================
---- linux-5.4.124.orig/drivers/net/dsa/mt7530.h
-+++ linux-5.4.124/drivers/net/dsa/mt7530.h
+diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h
+index 6424bc90e..aa758b2d2 100644
+--- a/drivers/net/dsa/mt7530.h
++++ b/drivers/net/dsa/mt7530.h
@@ -10,6 +10,7 @@
#define MT7530_CPU_PORT 6
#define MT7530_NUM_FDB_RECORDS 2048
@@ -122,3 +134,6 @@
enum mt753x_id {
ID_MT7530 = 0,
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/742-net-dsa-add-MT7531-Gigabit-Ethernet-PHY-setting.patch b/target/linux/mediatek/patches-5.4/999-1702-net-dsa-add-MT7531-Gigabit-Ethernet-PHY-setting.patch
similarity index 97%
rename from target/linux/mediatek/patches-5.4/742-net-dsa-add-MT7531-Gigabit-Ethernet-PHY-setting.patch
rename to target/linux/mediatek/patches-5.4/999-1702-net-dsa-add-MT7531-Gigabit-Ethernet-PHY-setting.patch
index 948bb69..bf4cef7 100644
--- a/target/linux/mediatek/patches-5.4/742-net-dsa-add-MT7531-Gigabit-Ethernet-PHY-setting.patch
+++ b/target/linux/mediatek/patches-5.4/999-1702-net-dsa-add-MT7531-Gigabit-Ethernet-PHY-setting.patch
@@ -1,8 +1,38 @@
-Index: linux-5.4.124/drivers/net/dsa/mt7530.c
-===================================================================
---- linux-5.4.124.orig/drivers/net/dsa/mt7530.c
-+++ linux-5.4.124/drivers/net/dsa/mt7530.c
-@@ -1830,6 +1830,8 @@ mt7531_setup(struct dsa_switch *ds)
+From b736c4488d00e4b6e363220746c666176c12ea90 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:05:59 +0800
+Subject: [PATCH]
+ [backport-networking-drivers][999-1702-net-dsa-add-MT7531-Gigabit-Ethernet-PHY-setting.patch]
+
+---
+ drivers/net/dsa/Makefile | 3 +-
+ drivers/net/dsa/mt7530.c | 2 +
+ drivers/net/dsa/mt7530.h | 1 +
+ drivers/net/dsa/mt7531_phy.c | 1378 ++++++++++++++++++++++++++++++++++
+ drivers/net/dsa/mt7531_phy.h | 262 +++++++
+ 5 files changed, 1645 insertions(+), 1 deletion(-)
+ create mode 100644 drivers/net/dsa/mt7531_phy.c
+ create mode 100644 drivers/net/dsa/mt7531_phy.h
+
+diff --git a/drivers/net/dsa/Makefile b/drivers/net/dsa/Makefile
+index ae70b7962..0aa10bc3d 100644
+--- a/drivers/net/dsa/Makefile
++++ b/drivers/net/dsa/Makefile
+@@ -6,7 +6,8 @@ ifdef CONFIG_NET_DSA_LOOP
+ obj-$(CONFIG_FIXED_PHY) += dsa_loop_bdinfo.o
+ endif
+ obj-$(CONFIG_NET_DSA_LANTIQ_GSWIP) += lantiq_gswip.o
+-obj-$(CONFIG_NET_DSA_MT7530) += mt7530.o
++obj-$(CONFIG_NET_DSA_MT7530) += mt7530-dsa.o
++mt7530-dsa-objs := mt7530.o mt7531_phy.o
+ obj-$(CONFIG_NET_DSA_MV88E6060) += mv88e6060.o
+ obj-$(CONFIG_NET_DSA_QCA8K) += qca8k.o
+ obj-$(CONFIG_NET_DSA_REALTEK_SMI) += realtek-smi.o
+diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
+index 008432d5c..e4c021eeb 100644
+--- a/drivers/net/dsa/mt7530.c
++++ b/drivers/net/dsa/mt7530.c
+@@ -1829,6 +1829,8 @@ mt7531_setup(struct dsa_switch *ds)
PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
}
@@ -11,20 +41,21 @@
/* Group and enable unused ports as a standalone dumb switch. */
setup_unused_ports(ds, unused_pm);
-Index: linux-5.4.124/drivers/net/dsa/mt7530.h
-===================================================================
---- linux-5.4.124.orig/drivers/net/dsa/mt7530.h
-+++ linux-5.4.124/drivers/net/dsa/mt7530.h
-@@ -782,4 +782,5 @@ static inline void INIT_MT7530_DUMMY_POL
+diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h
+index aa758b2d2..8f1e827ff 100644
+--- a/drivers/net/dsa/mt7530.h
++++ b/drivers/net/dsa/mt7530.h
+@@ -782,4 +782,5 @@ static inline void INIT_MT7530_DUMMY_POLL(struct mt7530_dummy_poll *p,
p->reg = reg;
}
+int mt7531_phy_setup(struct dsa_switch *ds);
#endif /* __MT7530_H */
-Index: linux-5.4.124/drivers/net/dsa/mt7531_phy.c
-===================================================================
+diff --git a/drivers/net/dsa/mt7531_phy.c b/drivers/net/dsa/mt7531_phy.c
+new file mode 100644
+index 000000000..a5c1e7d54
--- /dev/null
-+++ linux-5.4.124/drivers/net/dsa/mt7531_phy.c
++++ b/drivers/net/dsa/mt7531_phy.c
@@ -0,0 +1,1378 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
@@ -1404,10 +1435,11 @@
+
+ return ret;
+}
-Index: linux-5.4.124/drivers/net/dsa/mt7531_phy.h
-===================================================================
+diff --git a/drivers/net/dsa/mt7531_phy.h b/drivers/net/dsa/mt7531_phy.h
+new file mode 100644
+index 000000000..4cacabf54
--- /dev/null
-+++ linux-5.4.124/drivers/net/dsa/mt7531_phy.h
++++ b/drivers/net/dsa/mt7531_phy.h
@@ -0,0 +1,262 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
@@ -1671,17 +1703,6 @@
+ DSP_MAX = 0x3e,
+};
+#endif /* _MT753X_REGS_H_ */
-Index: linux-5.4.124/drivers/net/dsa/Makefile
-===================================================================
---- linux-5.4.124.orig/drivers/net/dsa/Makefile
-+++ linux-5.4.124/drivers/net/dsa/Makefile
-@@ -6,7 +6,8 @@ ifdef CONFIG_NET_DSA_LOOP
- obj-$(CONFIG_FIXED_PHY) += dsa_loop_bdinfo.o
- endif
- obj-$(CONFIG_NET_DSA_LANTIQ_GSWIP) += lantiq_gswip.o
--obj-$(CONFIG_NET_DSA_MT7530) += mt7530.o
-+obj-$(CONFIG_NET_DSA_MT7530) += mt7530-dsa.o
-+mt7530-dsa-objs := mt7530.o mt7531_phy.o
- obj-$(CONFIG_NET_DSA_MV88E6060) += mv88e6060.o
- obj-$(CONFIG_NET_DSA_QCA8K) += qca8k.o
- obj-$(CONFIG_NET_DSA_REALTEK_SMI) += realtek-smi.o
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/744-en8811h-2p5gphy-support.patch b/target/linux/mediatek/patches-5.4/999-1703-en8811h-2p5gphy-support.patch
similarity index 97%
rename from target/linux/mediatek/patches-5.4/744-en8811h-2p5gphy-support.patch
rename to target/linux/mediatek/patches-5.4/999-1703-en8811h-2p5gphy-support.patch
index 5a3e423..5e3c619 100644
--- a/target/linux/mediatek/patches-5.4/744-en8811h-2p5gphy-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-1703-en8811h-2p5gphy-support.patch
@@ -1,10 +1,25 @@
+From b5aa08e6dd4e06ffd3fb4de2ffc6af1e3da0bce4 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:00 +0800
+Subject: [PATCH]
+ [backport-networking-drivers][999-1703-en8811h-2p5gphy-support.patch]
+
+---
+ drivers/net/phy/Kconfig | 5 +
+ drivers/net/phy/Makefile | 1 +
+ drivers/net/phy/air_en8811h.c | 702 ++++++++++++++++++++++++++++++++++
+ drivers/net/phy/air_en8811h.h | 151 ++++++++
+ 4 files changed, 859 insertions(+)
+ create mode 100644 drivers/net/phy/air_en8811h.c
+ create mode 100644 drivers/net/phy/air_en8811h.h
+
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
-index 207046b..21a4497 100644
+index 170dd00cd..5eeccfee2 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
-@@ -350,6 +350,11 @@ config AIROHA_EN8801SC_PHY
- ---help---
- Currently supports the Airoha EN8801S PHY for MT7981 SoC.
+@@ -345,6 +345,11 @@ config SFP
+ depends on HWMON || HWMON=n
+ select MDIO_I2C
+config AIROHA_EN8811H_PHY
+ tristate "Drivers for Airoha EN8811H 2.5G Gigabit PHY"
@@ -15,10 +30,10 @@
tristate "Analog Devices Industrial Ethernet PHYs"
help
diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
-index 1b13c02..744b249 100644
+index 2368c1d19..8ea612a85 100644
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
-@@ -71,6 +71,7 @@ ifdef CONFIG_AQUANTIA_PHY_FW_DOWNLOAD
+@@ -67,6 +67,7 @@ aquantia-objs += aquantia_main.o
ifdef CONFIG_HWMON
aquantia-objs += aquantia_hwmon.o
endif
@@ -28,7 +43,7 @@
obj-$(CONFIG_AT803X_PHY) += at803x.o
diff --git a/drivers/net/phy/air_en8811h.c b/drivers/net/phy/air_en8811h.c
new file mode 100644
-index 0000000..cf564fc
+index 000000000..cf564fc04
--- /dev/null
+++ b/drivers/net/phy/air_en8811h.c
@@ -0,0 +1,702 @@
@@ -736,7 +751,7 @@
+module_exit(en8811h_phy_driver_unregister);
diff --git a/drivers/net/phy/air_en8811h.h b/drivers/net/phy/air_en8811h.h
new file mode 100644
-index 0000000..1c91627
+index 000000000..1c9162795
--- /dev/null
+++ b/drivers/net/phy/air_en8811h.h
@@ -0,0 +1,151 @@
@@ -891,3 +906,6 @@
+} AIR_LED_MODE_T;
+
+#endif /* End of __EN8811H_MD32_H */
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/747-net-phy-aquantia-add-AQR113C.patch b/target/linux/mediatek/patches-5.4/999-1704-net-phy-aquantia-add-AQR113C.patch
similarity index 76%
rename from target/linux/mediatek/patches-5.4/747-net-phy-aquantia-add-AQR113C.patch
rename to target/linux/mediatek/patches-5.4/999-1704-net-phy-aquantia-add-AQR113C.patch
index d99d75f..46960d6 100644
--- a/target/linux/mediatek/patches-5.4/747-net-phy-aquantia-add-AQR113C.patch
+++ b/target/linux/mediatek/patches-5.4/999-1704-net-phy-aquantia-add-AQR113C.patch
@@ -1,5 +1,15 @@
+From 23e3cea0589cd65b9c405f23720e4ba8b1264cb3 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:00 +0800
+Subject: [PATCH]
+ [backport-networking-drivers][999-1704-net-phy-aquantia-add-AQR113C.patch]
+
+---
+ drivers/net/phy/aquantia_main.c | 45 +++++++++++++++------------------
+ 1 file changed, 21 insertions(+), 24 deletions(-)
+
diff --git a/drivers/net/phy/aquantia_main.c b/drivers/net/phy/aquantia_main.c
-index 75d8351..ac8dd8e 100644
+index 75d8351ee..e7495c9a7 100644
--- a/drivers/net/phy/aquantia_main.c
+++ b/drivers/net/phy/aquantia_main.c
@@ -22,6 +22,7 @@
@@ -10,7 +20,7 @@
#define MDIO_PHYXS_VEND_IF_STATUS 0xe812
#define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK GENMASK(7, 3)
-@@ -268,17 +268,6 @@ static int aqr_read_status(struct phy_device *phydev)
+@@ -303,17 +304,6 @@ static int aqr_read_status(struct phy_device *phydev)
return genphy_c45_read_status(phydev);
}
@@ -28,7 +38,7 @@
static int aqr107_read_rate(struct phy_device *phydev)
{
int val;
-@@ -353,13 +342,7 @@ static int aqr107_read_status(struct phy_device *phydev)
+@@ -388,13 +378,7 @@ static int aqr107_read_status(struct phy_device *phydev)
break;
}
@@ -43,7 +53,7 @@
return aqr107_read_rate(phydev);
}
-@@ -500,9 +483,6 @@ static int aqr107_config_init(struct phy_device *phydev)
+@@ -516,9 +500,6 @@ static int aqr107_config_init(struct phy_device *phydev)
if (!ret)
aqr107_chip_info(phydev);
@@ -53,7 +63,7 @@
return aqr107_set_downshift(phydev, MDIO_AN_VEND_PROV_DOWNSHIFT_DFLT);
}
-@@ -527,9 +507,6 @@ static int aqcs109_config_init(struct phy_device *phydev)
+@@ -543,9 +524,6 @@ static int aqcs109_config_init(struct phy_device *phydev)
if (ret)
return ret;
@@ -63,7 +73,7 @@
return aqr107_set_downshift(phydev, MDIO_AN_VEND_PROV_DOWNSHIFT_DFLT);
}
-@@ -695,6 +696,24 @@ static struct phy_driver aqr_driver[] = {
+@@ -695,6 +673,24 @@ static struct phy_driver aqr_driver[] = {
.ack_interrupt = aqr_ack_interrupt,
.read_status = aqr_read_status,
},
@@ -88,7 +98,7 @@
};
module_phy_driver(aqr_driver);
-@@ -707,6 +726,7 @@ static struct mdio_device_id __maybe_unused aqr_tbl[] = {
+@@ -707,6 +703,7 @@ static struct mdio_device_id __maybe_unused aqr_tbl[] = {
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR107) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQCS109) },
{ PHY_ID_MATCH_MODEL(PHY_ID_AQR405) },
@@ -96,3 +106,6 @@
{ }
};
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/748-add-netlink-support-for-dsa.patch b/target/linux/mediatek/patches-5.4/999-1705-add-netlink-support-for-dsa.patch
similarity index 84%
rename from target/linux/mediatek/patches-5.4/748-add-netlink-support-for-dsa.patch
rename to target/linux/mediatek/patches-5.4/999-1705-add-netlink-support-for-dsa.patch
index 8853324..3f9adab 100644
--- a/target/linux/mediatek/patches-5.4/748-add-netlink-support-for-dsa.patch
+++ b/target/linux/mediatek/patches-5.4/999-1705-add-netlink-support-for-dsa.patch
@@ -1,8 +1,24 @@
-Index: linux-5.4.203/drivers/net/dsa/Makefile
-===================================================================
---- linux-5.4.203.orig/drivers/net/dsa/Makefile
-+++ linux-5.4.203/drivers/net/dsa/Makefile
-@@ -7,7 +7,7 @@ obj-$(CONFIG_FIXED_PHY) += dsa_loop_bdi
+From 3e75ca66195dec023ca2e837ff748c317fd7ac26 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:00 +0800
+Subject: [PATCH]
+ [backport-networking-drivers][999-1705-add-netlink-support-for-dsa.patch]
+
+---
+ drivers/net/dsa/Makefile | 2 +-
+ drivers/net/dsa/mt7530.c | 24 ++-
+ drivers/net/dsa/mt7530.h | 8 +
+ drivers/net/dsa/mt7530_nl.c | 311 ++++++++++++++++++++++++++++++++++++
+ drivers/net/dsa/mt7530_nl.h | 49 ++++++
+ 5 files changed, 386 insertions(+), 8 deletions(-)
+ create mode 100644 drivers/net/dsa/mt7530_nl.c
+ create mode 100644 drivers/net/dsa/mt7530_nl.h
+
+diff --git a/drivers/net/dsa/Makefile b/drivers/net/dsa/Makefile
+index 0aa10bc3d..ef563c6c1 100644
+--- a/drivers/net/dsa/Makefile
++++ b/drivers/net/dsa/Makefile
+@@ -7,7 +7,7 @@ obj-$(CONFIG_FIXED_PHY) += dsa_loop_bdinfo.o
endif
obj-$(CONFIG_NET_DSA_LANTIQ_GSWIP) += lantiq_gswip.o
obj-$(CONFIG_NET_DSA_MT7530) += mt7530-dsa.o
@@ -11,40 +27,40 @@
obj-$(CONFIG_NET_DSA_MV88E6060) += mv88e6060.o
obj-$(CONFIG_NET_DSA_QCA8K) += qca8k.o
obj-$(CONFIG_NET_DSA_REALTEK_SMI) += realtek-smi.o
-Index: linux-5.4.203/drivers/net/dsa/mt7530.c
-===================================================================
---- linux-5.4.203.orig/drivers/net/dsa/mt7530.c
-+++ linux-5.4.203/drivers/net/dsa/mt7530.c
+diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
+index e4c021eeb..63f8a632b 100644
+--- a/drivers/net/dsa/mt7530.c
++++ b/drivers/net/dsa/mt7530.c
@@ -21,6 +21,7 @@
#include <net/dsa.h>
-
+
#include "mt7530.h"
+#include "mt7530_nl.h"
-
+
/* String, offset, and register size in bytes if different from 4 bytes */
static const struct mt7530_mib_desc mt7530_mib[] = {
-@@ -222,7 +223,7 @@ mt7530_mii_read(struct mt7530_priv *priv
+@@ -222,7 +223,7 @@ mt7530_mii_read(struct mt7530_priv *priv, u32 reg)
return (hi << 16) | (lo & 0xffff);
}
-
+
-static void
+void
mt7530_write(struct mt7530_priv *priv, u32 reg, u32 val)
{
struct mii_bus *bus = priv->bus;
-@@ -255,7 +256,7 @@ _mt7530_read(struct mt7530_dummy_poll *p
+@@ -255,7 +256,7 @@ _mt7530_read(struct mt7530_dummy_poll *p)
return val;
}
-
+
-static u32
+u32
mt7530_read(struct mt7530_priv *priv, u32 reg)
{
struct mt7530_dummy_poll p;
-@@ -614,7 +615,7 @@ static int mt7530_phy_write(struct dsa_s
+@@ -614,7 +615,7 @@ static int mt7530_phy_write(struct dsa_switch *ds, int port, int regnum,
return mdiobus_write_nested(priv->bus, port, regnum, val);
}
-
+
-static int
+int
mt7531_ind_c45_phy_read(struct mt7530_priv *priv, int port, int devad,
@@ -53,7 +69,7 @@
@@ -663,7 +664,7 @@ out:
return ret;
}
-
+
-static int
+int
mt7531_ind_c45_phy_write(struct mt7530_priv *priv, int port, int devad,
@@ -62,7 +78,7 @@
@@ -711,7 +712,7 @@ out:
return ret;
}
-
+
-static int
+int
mt7531_ind_c22_phy_read(struct mt7530_priv *priv, int port, int regnum)
@@ -71,24 +87,24 @@
@@ -749,7 +750,7 @@ out:
return ret;
}
-
+
-static int
+int
mt7531_ind_c22_phy_write(struct mt7530_priv *priv, int port, int regnum,
u16 data)
{
-@@ -2690,6 +2691,7 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -2691,6 +2692,7 @@ mt7530_probe(struct mdio_device *mdiodev)
{
struct mt7530_priv *priv;
struct device_node *dn;
+ int ret;
-
+
dn = mdiodev->dev.of_node;
-
-@@ -2765,7 +2767,13 @@ mt7530_probe(struct mdio_device *mdiodev
+
+@@ -2766,7 +2768,13 @@ mt7530_probe(struct mdio_device *mdiodev)
mutex_init(&priv->reg_mutex);
dev_set_drvdata(&mdiodev->dev, priv);
-
+
- return dsa_register_switch(priv->ds);
+ ret = dsa_register_switch(priv->ds);
+ if (ret)
@@ -98,24 +114,24 @@
+
+ return 0;
}
-
+
static void
-@@ -2786,6 +2794,8 @@ mt7530_remove(struct mdio_device *mdiode
-
+@@ -2787,6 +2795,8 @@ mt7530_remove(struct mdio_device *mdiodev)
+
dsa_unregister_switch(priv->ds);
mutex_destroy(&priv->reg_mutex);
+
+ mt7530_nl_exit();
}
-
+
static struct mdio_driver mt7530_mdio_driver = {
-Index: linux-5.4.203/drivers/net/dsa/mt7530.h
-===================================================================
---- linux-5.4.203.orig/drivers/net/dsa/mt7530.h
-+++ linux-5.4.203/drivers/net/dsa/mt7530.h
-@@ -783,4 +783,12 @@ static inline void INIT_MT7530_DUMMY_POL
+diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h
+index 8f1e827ff..130d7e5ec 100644
+--- a/drivers/net/dsa/mt7530.h
++++ b/drivers/net/dsa/mt7530.h
+@@ -783,4 +783,12 @@ static inline void INIT_MT7530_DUMMY_POLL(struct mt7530_dummy_poll *p,
}
-
+
int mt7531_phy_setup(struct dsa_switch *ds);
+u32 mt7530_read(struct mt7530_priv *priv, u32 reg);
+void mt7530_write(struct mt7530_priv *priv, u32 reg, u32 val);
@@ -126,10 +142,11 @@
+
+
#endif /* __MT7530_H */
-Index: linux-5.4.203/drivers/net/dsa/mt7530_nl.c
-===================================================================
+diff --git a/drivers/net/dsa/mt7530_nl.c b/drivers/net/dsa/mt7530_nl.c
+new file mode 100644
+index 000000000..676adef70
--- /dev/null
-+++ linux-5.4.203/drivers/net/dsa/mt7530_nl.c
++++ b/drivers/net/dsa/mt7530_nl.c
@@ -0,0 +1,311 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
@@ -442,10 +459,11 @@
+ sw_priv = NULL;
+ genl_unregister_family(&mt7530_nl_family);
+}
-Index: linux-5.4.203/drivers/net/dsa/mt7530_nl.h
-===================================================================
+diff --git a/drivers/net/dsa/mt7530_nl.h b/drivers/net/dsa/mt7530_nl.h
+new file mode 100644
+index 000000000..4619288c2
--- /dev/null
-+++ linux-5.4.203/drivers/net/dsa/mt7530_nl.h
++++ b/drivers/net/dsa/mt7530_nl.h
@@ -0,0 +1,49 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
@@ -496,3 +514,6 @@
+#endif /* __KERNEL__ */
+
+#endif /* _MT7530_NL_H_ */
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/749-net-dsa-support-mt7988.patch b/target/linux/mediatek/patches-5.4/999-1706-net-dsa-support-mt7988.patch
similarity index 83%
rename from target/linux/mediatek/patches-5.4/749-net-dsa-support-mt7988.patch
rename to target/linux/mediatek/patches-5.4/999-1706-net-dsa-support-mt7988.patch
index 7c468d8..c53c205 100644
--- a/target/linux/mediatek/patches-5.4/749-net-dsa-support-mt7988.patch
+++ b/target/linux/mediatek/patches-5.4/999-1706-net-dsa-support-mt7988.patch
@@ -1,19 +1,30 @@
-Index: linux-5.4.203/drivers/net/dsa/mt7530.c
-===================================================================
---- linux-5.4.203.orig/drivers/net/dsa/mt7530.c
-+++ linux-5.4.203/drivers/net/dsa/mt7530.c
+From 90508a46a0fd6416dcaad2c7f0ef25a5a421bf4f Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:00 +0800
+Subject: [PATCH]
+ [backport-networking-drivers][999-1706-net-dsa-support-mt7988.patch]
+
+---
+ drivers/net/dsa/mt7530.c | 191 ++++++++++++++++++++++++++++++++-------
+ drivers/net/dsa/mt7530.h | 11 ++-
+ 2 files changed, 164 insertions(+), 38 deletions(-)
+
+diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
+index 63f8a632b..2cd5dae9c 100644
+--- a/drivers/net/dsa/mt7530.c
++++ b/drivers/net/dsa/mt7530.c
@@ -19,6 +19,7 @@
#include <linux/reset.h>
#include <linux/gpio/consumer.h>
#include <net/dsa.h>
+#include <linux/of_address.h>
-
+
#include "mt7530.h"
#include "mt7530_nl.h"
-@@ -170,28 +171,44 @@ core_clear(struct mt7530_priv *priv, u32
+@@ -170,28 +171,44 @@ core_clear(struct mt7530_priv *priv, u32 reg, u32 val)
core_rmw(priv, reg, val, 0);
}
-
+
+static void
+mtk_w32(struct mt7530_priv *priv, u32 val, unsigned reg)
+{
@@ -32,21 +43,12 @@
struct mii_bus *bus = priv->bus;
u16 page, r, lo, hi;
- int ret;
--
++ int ret = 0;
+
- page = (reg >> 6) & 0x3ff;
- r = (reg >> 2) & 0xf;
- lo = val & 0xffff;
- hi = val >> 16;
--
-- /* MT7530 uses 31 as the pseudo port */
-- ret = bus->write(bus, 0x1f, 0x1f, page);
-- if (ret < 0)
-- goto err;
-+ int ret = 0;
-
-- ret = bus->write(bus, 0x1f, r, lo);
-- if (ret < 0)
-- goto err;
+ if (priv->direct_access){
+ mtk_w32(priv, val, reg);
+ } else {
@@ -54,26 +56,33 @@
+ r = (reg >> 2) & 0xf;
+ lo = val & 0xffff;
+ hi = val >> 16;
-+
+
+- /* MT7530 uses 31 as the pseudo port */
+- ret = bus->write(bus, 0x1f, 0x1f, page);
+- if (ret < 0)
+- goto err;
+ /* MT7530 uses 31 as the pseudo port */
+ ret = bus->write(bus, 0x1f, 0x1f, page);
+ if (ret < 0)
+ goto err;
-+
+
+- ret = bus->write(bus, 0x1f, r, lo);
+- if (ret < 0)
+- goto err;
+ ret = bus->write(bus, 0x1f, r, lo);
+ if (ret < 0)
+ goto err;
-
+
- ret = bus->write(bus, 0x1f, 0x10, hi);
+ ret = bus->write(bus, 0x1f, 0x10, hi);
+ }
err:
if (ret < 0)
dev_err(&bus->dev,
-@@ -206,21 +223,25 @@ mt7530_mii_read(struct mt7530_priv *priv
+@@ -206,21 +223,25 @@ mt7530_mii_read(struct mt7530_priv *priv, u32 reg)
u16 page, r, lo, hi;
int ret;
-
+
- page = (reg >> 6) & 0x3ff;
- r = (reg >> 2) & 0xf;
+ if (priv->direct_access){
@@ -81,7 +90,7 @@
+ } else {
+ page = (reg >> 6) & 0x3ff;
+ r = (reg >> 2) & 0xf;
-
+
- /* MT7530 uses 31 as the pseudo port */
- ret = bus->write(bus, 0x1f, 0x1f, page);
- if (ret < 0) {
@@ -96,19 +105,19 @@
+ "failed to read mt7530 register\n");
+ return ret;
+ }
-
+
- lo = bus->read(bus, 0x1f, r);
- hi = bus->read(bus, 0x1f, 0x10);
+ lo = bus->read(bus, 0x1f, r);
+ hi = bus->read(bus, 0x1f, 0x10);
-
+
- return (hi << 16) | (lo & 0xffff);
+ return (hi << 16) | (lo & 0xffff);
+ }
}
-
+
void
-@@ -1906,9 +1927,9 @@ mt7531_phy_supported(struct dsa_switch *
+@@ -1907,9 +1928,9 @@ mt7531_phy_supported(struct dsa_switch *ds, int port,
if (mt7531_is_rgmii_port(priv, port))
return phy_interface_mode_is_rgmii(state->interface);
fallthrough;
@@ -121,7 +130,7 @@
goto unsupported;
break;
default:
-@@ -2017,6 +2038,13 @@ static void mt7531_sgmii_validate(struct
+@@ -2018,6 +2039,13 @@ static void mt7531_sgmii_validate(struct mt7530_priv *priv, int port,
phylink_set(supported, 1000baseX_Full);
phylink_set(supported, 2500baseX_Full);
phylink_set(supported, 2500baseT_Full);
@@ -134,8 +143,8 @@
+ phylink_set(supported, 10000baseER_Full);
}
}
-
-@@ -2165,6 +2193,8 @@ mt7531_mac_config(struct dsa_switch *ds,
+
+@@ -2166,6 +2194,8 @@ mt7531_mac_config(struct dsa_switch *ds, int port, unsigned int mode,
case PHY_INTERFACE_MODE_NA:
case PHY_INTERFACE_MODE_1000BASEX:
case PHY_INTERFACE_MODE_2500BASEX:
@@ -143,8 +152,8 @@
+ case PHY_INTERFACE_MODE_10GKR:
if (phylink_autoneg_inband(mode))
return -EINVAL;
-
-@@ -2302,8 +2332,8 @@ static void mt753x_phylink_mac_link_up(s
+
+@@ -2303,8 +2333,8 @@ static void mt753x_phylink_mac_link_up(struct dsa_switch *ds, int port,
/* MT753x MAC works in 1G full duplex mode for all up-clocked
* variants.
*/
@@ -155,10 +164,10 @@
speed = SPEED_1000;
duplex = DUPLEX_FULL;
}
-@@ -2402,8 +2432,8 @@ mt753x_phylink_validate(struct dsa_switc
-
+@@ -2403,8 +2433,8 @@ mt753x_phylink_validate(struct dsa_switch *ds, int port,
+
phylink_set_port_modes(mask);
-
+
- if (state->interface != PHY_INTERFACE_MODE_TRGMII ||
- !phy_interface_mode_is_8023z(state->interface)) {
+ if (state->interface != PHY_INTERFACE_MODE_TRGMII || state->interface != PHY_INTERFACE_MODE_USXGMII ||
@@ -166,10 +175,10 @@
phylink_set(mask, 10baseT_Half);
phylink_set(mask, 10baseT_Full);
phylink_set(mask, 100baseT_Half);
-@@ -2607,6 +2637,66 @@ mt753x_phy_write(struct dsa_switch *ds,
+@@ -2608,6 +2638,66 @@ mt753x_phy_write(struct dsa_switch *ds, int port, int regnum, u16 val)
return priv->info->phy_write(ds, port, regnum, val);
}
-
+
+static int
+mt7988_pad_setup(struct dsa_switch *ds, phy_interface_t interface)
+{
@@ -233,7 +242,7 @@
static const struct dsa_switch_ops mt7530_switch_ops = {
.get_tag_protocol = mtk_get_tag_protocol,
.setup = mt753x_setup,
-@@ -2676,12 +2766,28 @@ static const struct mt753x_info mt753x_t
+@@ -2677,12 +2767,28 @@ static const struct mt753x_info mt753x_table[] = {
.mac_pcs_an_restart = mt7531_sgmii_restart_an,
.mac_pcs_link_up = mt7531_sgmii_link_up_force,
},
@@ -253,7 +262,7 @@
+ },
+
};
-
+
static const struct of_device_id mt7530_of_match[] = {
{ .compatible = "mediatek,mt7621", .data = &mt753x_table[ID_MT7621], },
{ .compatible = "mediatek,mt7530", .data = &mt753x_table[ID_MT7530], },
@@ -262,18 +271,18 @@
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(of, mt7530_of_match);
-@@ -2691,6 +2797,7 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -2692,6 +2798,7 @@ mt7530_probe(struct mdio_device *mdiodev)
{
struct mt7530_priv *priv;
struct device_node *dn;
+ struct device_node *switch_node = NULL;
int ret;
-
+
dn = mdiodev->dev.of_node;
-@@ -2760,6 +2867,16 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -2761,6 +2868,16 @@ mt7530_probe(struct mdio_device *mdiodev)
}
}
-
+
+ switch_node = of_find_node_by_name(NULL, "switch0");
+ if(switch_node) {
+ priv->base = of_iomap(switch_node, 0);
@@ -287,48 +296,47 @@
priv->bus = mdiodev->bus;
priv->dev = &mdiodev->dev;
priv->ds->priv = priv;
-@@ -2768,9 +2885,12 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -2769,9 +2886,12 @@ mt7530_probe(struct mdio_device *mdiodev)
dev_set_drvdata(&mdiodev->dev, priv);
-
+
ret = dsa_register_switch(priv->ds);
- if (ret)
- return ret;
--
+ if (ret) {
+ if(priv->base)
+ iounmap(priv->base);
-+
+
+ return ret;
+ }
mt7530_nl_init(&priv);
-
+
return 0;
-@@ -2795,6 +2915,9 @@ mt7530_remove(struct mdio_device *mdiode
+@@ -2796,6 +2916,9 @@ mt7530_remove(struct mdio_device *mdiodev)
dsa_unregister_switch(priv->ds);
mutex_destroy(&priv->reg_mutex);
-
+
+ if(priv->base)
+ iounmap(priv->base);
+
mt7530_nl_exit();
}
-
-Index: linux-5.4.203/drivers/net/dsa/mt7530.h
-===================================================================
---- linux-5.4.203.orig/drivers/net/dsa/mt7530.h
-+++ linux-5.4.203/drivers/net/dsa/mt7530.h
+
+diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h
+index 130d7e5ec..7b175c5f2 100644
+--- a/drivers/net/dsa/mt7530.h
++++ b/drivers/net/dsa/mt7530.h
@@ -16,6 +16,7 @@ enum mt753x_id {
ID_MT7530 = 0,
ID_MT7621 = 1,
ID_MT7531 = 2,
+ ID_MT7988 = 3,
};
-
+
#define NUM_TRGMII_CTRL 5
@@ -51,11 +52,11 @@ enum mt753x_id {
#define MT7531_MIRROR_PORT_SET(x) (((x) & MIRROR_MASK) << 16)
#define MT7531_CPU_PMAP_MASK GENMASK(7, 0)
-
+
-#define MT753X_MIRROR_REG(id) (((id) == ID_MT7531) ? \
+#define MT753X_MIRROR_REG(id) ((((id) == ID_MT7531) || ((id) == ID_MT7988)) ? \
MT7531_CFC : MT7530_MFC)
@@ -338,7 +346,7 @@
-#define MT753X_MIRROR_MASK(id) (((id) == ID_MT7531) ? \
+#define MT753X_MIRROR_MASK(id) ((((id) == ID_MT7531) || ((id) == ID_MT7988)) ? \
MT7531_MIRROR_MASK : MIRROR_MASK)
-
+
/* Registers for BPDU and PAE frame control*/
@@ -261,7 +262,7 @@ enum mt7530_vlan_port_attr {
MT7531_FORCE_DPX | \
@@ -358,3 +366,6 @@
const struct mt753x_info *info;
unsigned int id;
bool mcm;
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/750-add-mdio-bus-for-gphy-calibration.patch b/target/linux/mediatek/patches-5.4/999-1707-add-mdio-bus-for-gphy-calibration.patch
old mode 100755
new mode 100644
similarity index 82%
rename from target/linux/mediatek/patches-5.4/750-add-mdio-bus-for-gphy-calibration.patch
rename to target/linux/mediatek/patches-5.4/999-1707-add-mdio-bus-for-gphy-calibration.patch
index e3efa34..cfa2a0c
--- a/target/linux/mediatek/patches-5.4/750-add-mdio-bus-for-gphy-calibration.patch
+++ b/target/linux/mediatek/patches-5.4/999-1707-add-mdio-bus-for-gphy-calibration.patch
@@ -1,11 +1,21 @@
-Index: linux-5.4.215/drivers/net/dsa/mt7530.c
-===================================================================
---- linux-5.4.215.orig/drivers/net/dsa/mt7530.c
-+++ linux-5.4.215/drivers/net/dsa/mt7530.c
-@@ -847,6 +847,117 @@ mt7531_ind_phy_write(struct dsa_switch *
+From c816d165754d8fd002478cce6eb774b9390c795f Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:01 +0800
+Subject: [PATCH]
+ [backport-networking-drivers][999-1707-add-mdio-bus-for-gphy-calibration.patch]
+
+---
+ drivers/net/dsa/mt7530.c | 115 +++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 115 insertions(+)
+
+diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
+index 2cd5dae9c..290a2e77a 100644
+--- a/drivers/net/dsa/mt7530.c
++++ b/drivers/net/dsa/mt7530.c
+@@ -847,6 +847,117 @@ mt7531_ind_phy_write(struct dsa_switch *ds, int port, int regnum,
return ret;
}
-
+
+static int mt753x_mdio_read(struct mii_bus *bus, int addr, int regnum)
+{
+ struct mt7530_priv *priv = bus->priv;
@@ -120,14 +130,17 @@
static void
mt7530_get_strings(struct dsa_switch *ds, int port, u32 stringset,
uint8_t *data)
-@@ -2694,6 +2805,10 @@ mt7988_setup(struct dsa_switch *ds)
+@@ -2695,6 +2806,10 @@ mt7988_setup(struct dsa_switch *ds)
if (ret < 0)
return ret;
-
+
+ ret = mt753x_setup_mdio(ds);
+ if (ret < 0)
+ dev_err(priv->dev, "mt753x_setup_mdio failed\n");
+
return 0;
}
+
+--
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/754-net-phy-add-5GBASER.patch b/target/linux/mediatek/patches-5.4/999-1708-net-phy-add-5GBASER.patch
similarity index 72%
rename from target/linux/mediatek/patches-5.4/754-net-phy-add-5GBASER.patch
rename to target/linux/mediatek/patches-5.4/999-1708-net-phy-add-5GBASER.patch
index 8165303..b112bdb 100644
--- a/target/linux/mediatek/patches-5.4/754-net-phy-add-5GBASER.patch
+++ b/target/linux/mediatek/patches-5.4/999-1708-net-phy-add-5GBASER.patch
@@ -1,16 +1,29 @@
+From 4df7f1c284d2c63bc78c2a517e510a8d250dd4c4 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:01 +0800
+Subject: [PATCH]
+ [backport-networking-drivers][999-1708-net-phy-add-5GBASER.patch]
+
+---
+ drivers/net/phy/marvell10g.c | 4 ++++
+ drivers/net/phy/phylink.c | 4 ++++
+ drivers/net/phy/sfp-bus.c | 3 +++
+ include/linux/phy.h | 3 +++
+ 4 files changed, 14 insertions(+)
+
diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c
-index daed73a..7d080d5 100644
+index 512f27b0b..1e4631761 100644
--- a/drivers/net/phy/marvell10g.c
+++ b/drivers/net/phy/marvell10g.c
-@@ -516,6 +516,7 @@ static void mv3310_update_interface(struct phy_device *phydev)
-
+@@ -386,6 +386,7 @@ static void mv3310_update_interface(struct phy_device *phydev)
+ {
if ((phydev->interface == PHY_INTERFACE_MODE_SGMII ||
phydev->interface == PHY_INTERFACE_MODE_2500BASEX ||
+ phydev->interface == PHY_INTERFACE_MODE_5GBASER ||
phydev->interface == PHY_INTERFACE_MODE_10GKR) && phydev->link) {
/* The PHY automatically switches its serdes interface (and
* active PHYXS instance) between Cisco SGMII, 10GBase-KR and
-@@ -527,6 +528,9 @@ static void mv3310_update_interface(struct phy_device *phydev)
+@@ -397,6 +398,9 @@ static void mv3310_update_interface(struct phy_device *phydev)
case SPEED_10000:
phydev->interface = PHY_INTERFACE_MODE_10GKR;
break;
@@ -21,7 +34,7 @@
phydev->interface = PHY_INTERFACE_MODE_2500BASEX;
break;
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
-index b3f25a9..6a38a1c 100644
+index b3f25a939..f360d9225 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -299,6 +299,10 @@ static int phylink_parse_mode(struct phylink *pl, struct fwnode_handle *fwnode)
@@ -36,10 +49,10 @@
phylink_set(pl->supported, 10baseT_Half);
phylink_set(pl->supported, 10baseT_Full);
diff --git a/drivers/net/phy/sfp-bus.c b/drivers/net/phy/sfp-bus.c
-index 0d5ac2a..a702c9b 100644
+index 42f0441f2..a2f451c31 100644
--- a/drivers/net/phy/sfp-bus.c
+++ b/drivers/net/phy/sfp-bus.c
-@@ -302,6 +302,9 @@ phy_interface_t sfp_select_interface(struct sfp_bus *bus,
+@@ -389,6 +389,9 @@ phy_interface_t sfp_select_interface(struct sfp_bus *bus,
phylink_test(link_modes, 10000baseT_Full))
return PHY_INTERFACE_MODE_10GKR;
@@ -50,10 +63,10 @@
return PHY_INTERFACE_MODE_2500BASEX;
diff --git a/include/linux/phy.h b/include/linux/phy.h
-index 34bdd16..77fad08 100644
+index 19444cd96..a1070d60e 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
-@@ -98,6 +98,7 @@ typedef enum {
+@@ -97,6 +97,7 @@ typedef enum {
PHY_INTERFACE_MODE_TRGMII,
PHY_INTERFACE_MODE_1000BASEX,
PHY_INTERFACE_MODE_2500BASEX,
@@ -61,7 +74,7 @@
PHY_INTERFACE_MODE_RXAUI,
PHY_INTERFACE_MODE_XAUI,
/* 10GBASE-KR, XFI, SFI - single lane 10G Serdes */
-@@ -172,6 +173,8 @@ static inline const char *phy_modes(phy_interface_t interface)
+@@ -171,6 +172,8 @@ static inline const char *phy_modes(phy_interface_t interface)
return "1000base-x";
case PHY_INTERFACE_MODE_2500BASEX:
return "2500base-x";
@@ -70,3 +83,6 @@
case PHY_INTERFACE_MODE_RXAUI:
return "rxaui";
case PHY_INTERFACE_MODE_XAUI:
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/755-net-phy-sfp-add-rollball-support.patch b/target/linux/mediatek/patches-5.4/999-1709-net-phy-sfp-add-rollball-support.patch
similarity index 91%
rename from target/linux/mediatek/patches-5.4/755-net-phy-sfp-add-rollball-support.patch
rename to target/linux/mediatek/patches-5.4/999-1709-net-phy-sfp-add-rollball-support.patch
index 5841992..bac49cf 100644
--- a/target/linux/mediatek/patches-5.4/755-net-phy-sfp-add-rollball-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-1709-net-phy-sfp-add-rollball-support.patch
@@ -1,131 +1,436 @@
---- a/drivers/net/phy/mdio-i2c.c
-+++ b/drivers/net/phy/mdio-i2c.c
-@@ -12,6 +12,7 @@
- #include <linux/i2c.h>
- #include <linux/mdio/mdio-i2c.h>
- #include <linux/phy.h>
-+#include <linux/sfp.h>
+From 1631a36b9ac022ce6ffb58b039a7e85ad3414ed5 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:01 +0800
+Subject: [PATCH]
+ [backport-networking-drivers][999-1709-net-phy-sfp-add-rollball-support.patch]
+
+---
+ drivers/net/phy/marvell.c | 2 +-
+ drivers/net/phy/marvell10g.c | 168 +++++++++++++--
+ drivers/net/phy/mdio-i2c.c | 309 +++++++++++++++++++++++++++-
+ drivers/net/phy/phylink.c | 74 +++++--
+ drivers/net/phy/sfp-bus.c | 102 +---------
+ drivers/net/phy/sfp.c | 373 +++++++++++++++++++++++++++++-----
+ drivers/net/phy/sfp.h | 11 +-
+ include/linux/mdio/mdio-i2c.h | 10 +-
+ 8 files changed, 874 insertions(+), 175 deletions(-)
+
+diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
+index 49801c2eb..f25881745 100644
+--- a/drivers/net/phy/marvell.c
++++ b/drivers/net/phy/marvell.c
+@@ -2175,7 +2175,7 @@ static struct phy_driver marvell_drivers[] = {
+ .phy_id = MARVELL_PHY_ID_88E1111,
+ .phy_id_mask = MARVELL_PHY_ID_MASK,
+ .name = "Marvell 88E1111",
+- /* PHY_GBIT_FEATURES */
++ .features = PHY_GBIT_FEATURES,
+ .probe = marvell_probe,
+ .config_init = &m88e1111_config_init,
+ .config_aneg = &marvell_config_aneg,
+diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c
+index 1e4631761..7d080d52e 100644
+--- a/drivers/net/phy/marvell10g.c
++++ b/drivers/net/phy/marvell10g.c
+@@ -32,6 +32,15 @@
+ #define MV_PHY_ALASKA_NBT_QUIRK_REV (MARVELL_PHY_ID_88X3310 | 0xa)
- /*
- * I2C bus addresses 0x50 and 0x51 are normally an EEPROM, which is
-@@ -28,7 +29,7 @@ static unsigned int i2c_mii_phy_addr(int
- return phy_id + 0x40;
+ enum {
++ MV_PMA_21X0_PORT_CTRL = 0xc04a,
++ MV_PMA_21X0_PORT_CTRL_SWRST = BIT(15),
++ MV_PMA_21X0_PORT_CTRL_MACTYPE_MASK = 0x7,
++ MV_PMA_21X0_PORT_CTRL_MACTYPE_USXGMII = 0x0,
++ MV_PMA_2180_PORT_CTRL_MACTYPE_DXGMII = 0x1,
++ MV_PMA_2180_PORT_CTRL_MACTYPE_QXGMII = 0x2,
++ MV_PMA_21X0_PORT_CTRL_MACTYPE_5GBASER = 0x4,
++ MV_PMA_21X0_PORT_CTRL_MACTYPE_5GBASER_NO_SGMII_AN = 0x5,
++ MV_PMA_21X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH = 0x6,
+ MV_PMA_BOOT = 0xc050,
+ MV_PMA_BOOT_FATAL = BIT(0),
+
+@@ -53,7 +62,18 @@ enum {
+
+ /* Vendor2 MMD registers */
+ MV_V2_PORT_CTRL = 0xf001,
+- MV_V2_PORT_CTRL_PWRDOWN = 0x0800,
++ MV_V2_PORT_CTRL_PWRDOWN = BIT(11),
++ MV_V2_33X0_PORT_CTRL_SWRST = BIT(15),
++ MV_V2_33X0_PORT_CTRL_MACTYPE_MASK = 0x7,
++ MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI = 0x0,
++ MV_V2_3310_PORT_CTRL_MACTYPE_XAUI_RATE_MATCH = 0x1,
++ MV_V2_3340_PORT_CTRL_MACTYPE_RXAUI_NO_SGMII_AN = 0x1,
++ MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI_RATE_MATCH = 0x2,
++ MV_V2_3310_PORT_CTRL_MACTYPE_XAUI = 0x3,
++ MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER = 0x4,
++ MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_NO_SGMII_AN = 0x5,
++ MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH = 0x6,
++ MV_V2_33X0_PORT_CTRL_MACTYPE_USXGMII = 0x7,
+ MV_V2_TEMP_CTRL = 0xf08a,
+ MV_V2_TEMP_CTRL_MASK = 0xc000,
+ MV_V2_TEMP_CTRL_SAMPLE = 0x0000,
+@@ -62,11 +82,24 @@ enum {
+ MV_V2_TEMP_UNKNOWN = 0x9600, /* unknown function */
+ };
+
++struct mv3310_chip {
++ int (*get_mactype)(struct phy_device *phydev);
++ int (*init_interface)(struct phy_device *phydev, int mactype);
++};
++
+ struct mv3310_priv {
++ bool rate_match;
++ phy_interface_t const_interface;
++
+ struct device *hwmon_dev;
+ char *hwmon_name;
+ };
+
++static const struct mv3310_chip *to_mv3310_chip(struct phy_device *phydev)
++{
++ return phydev->drv->driver_data;
++}
++
+ #ifdef CONFIG_HWMON
+ static umode_t mv3310_hwmon_is_visible(const void *data,
+ enum hwmon_sensor_types type,
+@@ -155,13 +188,6 @@ static int mv3310_hwmon_config(struct phy_device *phydev, bool enable)
+ MV_V2_TEMP_CTRL_MASK, val);
}
--static int i2c_mii_read(struct mii_bus *bus, int phy_id, int reg)
-+static int i2c_mii_read_default(struct mii_bus *bus, int phy_id, int reg)
+-static void mv3310_hwmon_disable(void *data)
+-{
+- struct phy_device *phydev = data;
+-
+- mv3310_hwmon_config(phydev, false);
+-}
+-
+ static int mv3310_hwmon_probe(struct phy_device *phydev)
{
- struct i2c_adapter *i2c = bus->priv;
- struct i2c_msg msgs[2];
-@@ -62,7 +63,8 @@ static int i2c_mii_read(struct mii_bus *
- return data[0] << 8 | data[1];
+ struct device *dev = &phydev->mdio.dev;
+@@ -185,10 +211,6 @@ static int mv3310_hwmon_probe(struct phy_device *phydev)
+ if (ret)
+ return ret;
+
+- ret = devm_add_action_or_reset(dev, mv3310_hwmon_disable, phydev);
+- if (ret)
+- return ret;
+-
+ priv->hwmon_dev = devm_hwmon_device_register_with_info(dev,
+ priv->hwmon_name, phydev,
+ &mv3310_hwmon_chip_info, NULL);
+@@ -262,6 +284,11 @@ static int mv3310_probe(struct phy_device *phydev)
+ return phy_sfp_probe(phydev, &mv3310_sfp_ops);
}
--static int i2c_mii_write(struct mii_bus *bus, int phy_id, int reg, u16 val)
-+static int i2c_mii_write_default(struct mii_bus *bus, int phy_id, int reg,
-+ u16 val)
++static void mv3310_remove(struct phy_device *phydev)
++{
++ mv3310_hwmon_config(phydev, false);
++}
++
+ static int mv3310_suspend(struct phy_device *phydev)
{
- struct i2c_adapter *i2c = bus->priv;
- struct i2c_msg msg;
-@@ -91,9 +93,288 @@ static int i2c_mii_write(struct mii_bus
- return ret < 0 ? ret : 0;
+ return phy_set_bits_mmd(phydev, MDIO_MMD_VEND2, MV_V2_PORT_CTRL,
+@@ -297,8 +324,84 @@ static bool mv3310_has_pma_ngbaset_quirk(struct phy_device *phydev)
+ MV_PHY_ALASKA_NBT_QUIRK_MASK) == MV_PHY_ALASKA_NBT_QUIRK_REV;
}
--struct mii_bus *mdio_i2c_alloc(struct device *parent, struct i2c_adapter *i2c)
-+/* RollBall SFPs do not access internal PHY via I2C address 0x56, but
-+ * instead via address 0x51, when SFP page is set to 0x03 and password to
-+ * 0xffffffff.
-+ *
-+ * address size contents description
-+ * ------- ---- -------- -----------
-+ * 0x80 1 CMD 0x01/0x02/0x04 for write/read/done
-+ * 0x81 1 DEV Clause 45 device
-+ * 0x82 2 REG Clause 45 register
-+ * 0x84 2 VAL Register value
-+ */
-+#define ROLLBALL_PHY_I2C_ADDR 0x51
-+
-+#define ROLLBALL_PASSWORD (SFP_VSL + 3)
-+
-+#define ROLLBALL_CMD_ADDR 0x80
-+#define ROLLBALL_DATA_ADDR 0x81
++static int mv2110_get_mactype(struct phy_device *phydev)
++{
++ int mactype;
+
-+#define ROLLBALL_CMD_WRITE 0x01
-+#define ROLLBALL_CMD_READ 0x02
-+#define ROLLBALL_CMD_DONE 0x04
++ mactype = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MV_PMA_21X0_PORT_CTRL);
++ if (mactype < 0)
++ return mactype;
+
-+#define SFP_PAGE_ROLLBALL_MDIO 3
++ return mactype & MV_PMA_21X0_PORT_CTRL_MACTYPE_MASK;
++}
+
-+static int __i2c_transfer_err(struct i2c_adapter *i2c, struct i2c_msg *msgs,
-+ int num)
++static int mv3310_get_mactype(struct phy_device *phydev)
+{
-+ int ret;
++ int mactype;
+
-+ ret = __i2c_transfer(i2c, msgs, num);
-+ if (ret < 0)
-+ return ret;
-+ else if (ret != num)
-+ return -EIO;
-+ else
-+ return 0;
++ mactype = phy_read_mmd(phydev, MDIO_MMD_VEND2, MV_V2_PORT_CTRL);
++ if (mactype < 0)
++ return mactype;
++
++ return mactype & MV_V2_33X0_PORT_CTRL_MACTYPE_MASK;
+}
+
-+static int __i2c_rollball_get_page(struct i2c_adapter *i2c, int bus_addr,
-+ u8 *page)
++static int mv2110_init_interface(struct phy_device *phydev, int mactype)
+{
-+ struct i2c_msg msgs[2];
-+ u8 addr = SFP_PAGE;
++ struct mv3310_priv *priv = dev_get_drvdata(&phydev->mdio.dev);
+
-+ msgs[0].addr = bus_addr;
-+ msgs[0].flags = 0;
-+ msgs[0].len = 1;
-+ msgs[0].buf = &addr;
++ priv->rate_match = false;
+
-+ msgs[1].addr = bus_addr;
-+ msgs[1].flags = I2C_M_RD;
-+ msgs[1].len = 1;
-+ msgs[1].buf = page;
++ if (mactype == MV_PMA_21X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH)
++ priv->rate_match = true;
+
-+ return __i2c_transfer_err(i2c, msgs, 2);
++ if (mactype == MV_PMA_21X0_PORT_CTRL_MACTYPE_USXGMII)
++ priv->const_interface = PHY_INTERFACE_MODE_USXGMII;
++ else if (mactype == MV_PMA_21X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH)
++ priv->const_interface = PHY_INTERFACE_MODE_10GKR;
++ else if (mactype == MV_PMA_21X0_PORT_CTRL_MACTYPE_5GBASER ||
++ mactype == MV_PMA_21X0_PORT_CTRL_MACTYPE_5GBASER_NO_SGMII_AN)
++ priv->const_interface = PHY_INTERFACE_MODE_NA;
++ else
++ return -EINVAL;
++
++ return 0;
+}
+
-+static int __i2c_rollball_set_page(struct i2c_adapter *i2c, int bus_addr,
-+ u8 page)
++static int mv3310_init_interface(struct phy_device *phydev, int mactype)
+{
-+ struct i2c_msg msg;
-+ u8 buf[2];
++ struct mv3310_priv *priv = dev_get_drvdata(&phydev->mdio.dev);
+
-+ buf[0] = SFP_PAGE;
-+ buf[1] = page;
++ priv->rate_match = false;
+
-+ msg.addr = bus_addr;
-+ msg.flags = 0;
-+ msg.len = 2;
-+ msg.buf = buf;
++ if (mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH ||
++ mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI_RATE_MATCH ||
++ mactype == MV_V2_3310_PORT_CTRL_MACTYPE_XAUI_RATE_MATCH)
++ priv->rate_match = true;
+
-+ return __i2c_transfer_err(i2c, &msg, 1);
-+}
++ if (mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_USXGMII)
++ priv->const_interface = PHY_INTERFACE_MODE_USXGMII;
++ else if (mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH ||
++ mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_NO_SGMII_AN ||
++ mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER)
++ priv->const_interface = PHY_INTERFACE_MODE_10GKR;
++ else if (mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI_RATE_MATCH ||
++ mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI)
++ priv->const_interface = PHY_INTERFACE_MODE_RXAUI;
++ else if (mactype == MV_V2_3310_PORT_CTRL_MACTYPE_XAUI_RATE_MATCH ||
++ mactype == MV_V2_3310_PORT_CTRL_MACTYPE_XAUI)
++ priv->const_interface = PHY_INTERFACE_MODE_XAUI;
++ else
++ return -EINVAL;
+
-+/* In order to not interfere with other SFP code (which possibly may manipulate
-+ * SFP_PAGE), for every transfer we do this:
-+ * 1. lock the bus
-+ * 2. save content of SFP_PAGE
-+ * 3. set SFP_PAGE to 3
-+ * 4. do the transfer
-+ * 5. restore original SFP_PAGE
-+ * 6. unlock the bus
-+ * Note that one might think that steps 2 to 5 could be theoretically done all
-+ * in one call to i2c_transfer (by constructing msgs array in such a way), but
-+ * unfortunately tests show that this does not work :-( Changed SFP_PAGE does
-+ * not take into account until i2c_transfer() is done.
-+ */
-+static int i2c_transfer_rollball(struct i2c_adapter *i2c,
-+ struct i2c_msg *msgs, int num)
-+{
-+ int ret, main_err = 0;
-+ u8 saved_page;
++ return 0;
++}
+
-+ i2c_lock_bus(i2c, I2C_LOCK_SEGMENT);
+ static int mv3310_config_init(struct phy_device *phydev)
+ {
++ const struct mv3310_chip *chip = to_mv3310_chip(phydev);
++ int err, mactype;
++
+ /* Check that the PHY interface type is compatible */
+ if (phydev->interface != PHY_INTERFACE_MODE_SGMII &&
+ phydev->interface != PHY_INTERFACE_MODE_2500BASEX &&
+@@ -307,6 +410,16 @@ static int mv3310_config_init(struct phy_device *phydev)
+ phydev->interface != PHY_INTERFACE_MODE_10GKR)
+ return -ENODEV;
+
++ mactype = chip->get_mactype(phydev);
++ if (mactype < 0)
++ return mactype;
++
++ err = chip->init_interface(phydev, mactype);
++ if (err) {
++ phydev_err(phydev, "MACTYPE configuration invalid\n");
++ return err;
++ }
++
+ return 0;
+ }
+
+@@ -384,6 +497,23 @@ static int mv3310_aneg_done(struct phy_device *phydev)
+
+ static void mv3310_update_interface(struct phy_device *phydev)
+ {
++ struct mv3310_priv *priv = dev_get_drvdata(&phydev->mdio.dev);
++
++ if (!phydev->link)
++ return;
++
++ /* In all of the "* with Rate Matching" modes the PHY interface is fixed
++ * at 10Gb. The PHY adapts the rate to actual wire speed with help of
++ * internal 16KB buffer.
++ *
++ * In USXGMII mode the PHY interface mode is also fixed.
++ */
++ if (priv->rate_match ||
++ priv->const_interface == PHY_INTERFACE_MODE_USXGMII) {
++ phydev->interface = priv->const_interface;
++ return;
++ }
++
+ if ((phydev->interface == PHY_INTERFACE_MODE_SGMII ||
+ phydev->interface == PHY_INTERFACE_MODE_2500BASEX ||
+ phydev->interface == PHY_INTERFACE_MODE_5GBASER ||
+@@ -503,11 +633,22 @@ static int mv3310_read_status(struct phy_device *phydev)
+ return 0;
+ }
+
++static const struct mv3310_chip mv3310_type = {
++ .get_mactype = mv3310_get_mactype,
++ .init_interface = mv3310_init_interface,
++};
++
++static const struct mv3310_chip mv2111_type = {
++ .get_mactype = mv2110_get_mactype,
++ .init_interface = mv2110_init_interface,
++};
++
+ static struct phy_driver mv3310_drivers[] = {
+ {
+ .phy_id = MARVELL_PHY_ID_88X3310,
+ .phy_id_mask = MARVELL_PHY_ID_MASK,
+ .name = "mv88x3310",
++ .driver_data = &mv3310_type,
+ .get_features = mv3310_get_features,
+ .soft_reset = genphy_no_soft_reset,
+ .config_init = mv3310_config_init,
+@@ -517,11 +658,13 @@ static struct phy_driver mv3310_drivers[] = {
+ .config_aneg = mv3310_config_aneg,
+ .aneg_done = mv3310_aneg_done,
+ .read_status = mv3310_read_status,
++ .remove = mv3310_remove,
+ },
+ {
+ .phy_id = MARVELL_PHY_ID_88E2110,
+ .phy_id_mask = MARVELL_PHY_ID_MASK,
+ .name = "mv88x2110",
++ .driver_data = &mv2111_type,
+ .probe = mv3310_probe,
+ .suspend = mv3310_suspend,
+ .resume = mv3310_resume,
+@@ -530,6 +673,7 @@ static struct phy_driver mv3310_drivers[] = {
+ .config_aneg = mv3310_config_aneg,
+ .aneg_done = mv3310_aneg_done,
+ .read_status = mv3310_read_status,
++ .remove = mv3310_remove,
+ },
+ };
+
+diff --git a/drivers/net/phy/mdio-i2c.c b/drivers/net/phy/mdio-i2c.c
+index 09200a70b..85db63c33 100644
+--- a/drivers/net/phy/mdio-i2c.c
++++ b/drivers/net/phy/mdio-i2c.c
+@@ -12,6 +12,7 @@
+ #include <linux/i2c.h>
+ #include <linux/mdio/mdio-i2c.h>
+ #include <linux/phy.h>
++#include <linux/sfp.h>
+
+ /*
+ * I2C bus addresses 0x50 and 0x51 are normally an EEPROM, which is
+@@ -28,7 +29,7 @@ static unsigned int i2c_mii_phy_addr(int phy_id)
+ return phy_id + 0x40;
+ }
+
+-static int i2c_mii_read(struct mii_bus *bus, int phy_id, int reg)
++static int i2c_mii_read_default(struct mii_bus *bus, int phy_id, int reg)
+ {
+ struct i2c_adapter *i2c = bus->priv;
+ struct i2c_msg msgs[2];
+@@ -62,7 +63,8 @@ static int i2c_mii_read(struct mii_bus *bus, int phy_id, int reg)
+ return data[0] << 8 | data[1];
+ }
+
+-static int i2c_mii_write(struct mii_bus *bus, int phy_id, int reg, u16 val)
++static int i2c_mii_write_default(struct mii_bus *bus, int phy_id, int reg,
++ u16 val)
+ {
+ struct i2c_adapter *i2c = bus->priv;
+ struct i2c_msg msg;
+@@ -91,9 +93,288 @@ static int i2c_mii_write(struct mii_bus *bus, int phy_id, int reg, u16 val)
+ return ret < 0 ? ret : 0;
+ }
+
+-struct mii_bus *mdio_i2c_alloc(struct device *parent, struct i2c_adapter *i2c)
++/* RollBall SFPs do not access internal PHY via I2C address 0x56, but
++ * instead via address 0x51, when SFP page is set to 0x03 and password to
++ * 0xffffffff.
++ *
++ * address size contents description
++ * ------- ---- -------- -----------
++ * 0x80 1 CMD 0x01/0x02/0x04 for write/read/done
++ * 0x81 1 DEV Clause 45 device
++ * 0x82 2 REG Clause 45 register
++ * 0x84 2 VAL Register value
++ */
++#define ROLLBALL_PHY_I2C_ADDR 0x51
++
++#define ROLLBALL_PASSWORD (SFP_VSL + 3)
++
++#define ROLLBALL_CMD_ADDR 0x80
++#define ROLLBALL_DATA_ADDR 0x81
++
++#define ROLLBALL_CMD_WRITE 0x01
++#define ROLLBALL_CMD_READ 0x02
++#define ROLLBALL_CMD_DONE 0x04
++
++#define SFP_PAGE_ROLLBALL_MDIO 3
++
++static int __i2c_transfer_err(struct i2c_adapter *i2c, struct i2c_msg *msgs,
++ int num)
++{
++ int ret;
++
++ ret = __i2c_transfer(i2c, msgs, num);
++ if (ret < 0)
++ return ret;
++ else if (ret != num)
++ return -EIO;
++ else
++ return 0;
++}
++
++static int __i2c_rollball_get_page(struct i2c_adapter *i2c, int bus_addr,
++ u8 *page)
++{
++ struct i2c_msg msgs[2];
++ u8 addr = SFP_PAGE;
++
++ msgs[0].addr = bus_addr;
++ msgs[0].flags = 0;
++ msgs[0].len = 1;
++ msgs[0].buf = &addr;
++
++ msgs[1].addr = bus_addr;
++ msgs[1].flags = I2C_M_RD;
++ msgs[1].len = 1;
++ msgs[1].buf = page;
++
++ return __i2c_transfer_err(i2c, msgs, 2);
++}
++
++static int __i2c_rollball_set_page(struct i2c_adapter *i2c, int bus_addr,
++ u8 page)
++{
++ struct i2c_msg msg;
++ u8 buf[2];
++
++ buf[0] = SFP_PAGE;
++ buf[1] = page;
++
++ msg.addr = bus_addr;
++ msg.flags = 0;
++ msg.len = 2;
++ msg.buf = buf;
++
++ return __i2c_transfer_err(i2c, &msg, 1);
++}
++
++/* In order to not interfere with other SFP code (which possibly may manipulate
++ * SFP_PAGE), for every transfer we do this:
++ * 1. lock the bus
++ * 2. save content of SFP_PAGE
++ * 3. set SFP_PAGE to 3
++ * 4. do the transfer
++ * 5. restore original SFP_PAGE
++ * 6. unlock the bus
++ * Note that one might think that steps 2 to 5 could be theoretically done all
++ * in one call to i2c_transfer (by constructing msgs array in such a way), but
++ * unfortunately tests show that this does not work :-( Changed SFP_PAGE does
++ * not take into account until i2c_transfer() is done.
++ */
++static int i2c_transfer_rollball(struct i2c_adapter *i2c,
++ struct i2c_msg *msgs, int num)
++{
++ int ret, main_err = 0;
++ u8 saved_page;
++
++ i2c_lock_bus(i2c, I2C_LOCK_SEGMENT);
+
+ /* save original page */
+ ret = __i2c_rollball_get_page(i2c, msgs->addr, &saved_page);
@@ -317,7 +622,7 @@
if (!i2c_check_functionality(i2c, I2C_FUNC_I2C))
return ERR_PTR(-EINVAL);
-@@ -104,10 +385,28 @@ struct mii_bus *mdio_i2c_alloc(struct de
+@@ -104,10 +385,28 @@ struct mii_bus *mdio_i2c_alloc(struct device *parent, struct i2c_adapter *i2c)
snprintf(mii->id, MII_BUS_ID_SIZE, "i2c:%s", dev_name(parent));
mii->parent = parent;
@@ -348,27 +653,11 @@
return mii;
}
EXPORT_SYMBOL_GPL(mdio_i2c_alloc);
---- a/include/linux/mdio/mdio-i2c.h
-+++ b/include/linux/mdio/mdio-i2c.h
-@@ -11,6 +11,14 @@ struct device;
- struct i2c_adapter;
- struct mii_bus;
-
--struct mii_bus *mdio_i2c_alloc(struct device *parent, struct i2c_adapter *i2c);
-+enum mdio_i2c_proto {
-+ MDIO_I2C_NONE,
-+ MDIO_I2C_MARVELL_C22,
-+ MDIO_I2C_C45,
-+ MDIO_I2C_ROLLBALL,
-+};
-+
-+struct mii_bus *mdio_i2c_alloc(struct device *parent, struct i2c_adapter *i2c,
-+ enum mdio_i2c_proto protocol);
-
- #endif
+diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
+index f360d9225..67f34ed4c 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
-@@ -483,62 +483,105 @@ static void phylink_resolve(struct work_
+@@ -483,62 +483,105 @@ static void phylink_resolve(struct work_struct *w)
struct phylink *pl = container_of(w, struct phylink, resolve);
struct phylink_link_state link_state;
struct net_device *ndev = pl->netdev;
@@ -498,6 +787,8 @@
mod_timer(&pl->link_poll, jiffies + HZ);
if (pl->phydev)
phy_start(pl->phydev);
+diff --git a/drivers/net/phy/sfp-bus.c b/drivers/net/phy/sfp-bus.c
+index a2f451c31..4be24406b 100644
--- a/drivers/net/phy/sfp-bus.c
+++ b/drivers/net/phy/sfp-bus.c
@@ -10,12 +10,6 @@
@@ -645,7 +936,7 @@
if (ops && ops->module_insert)
ret = ops->module_insert(bus->upstream, id);
diff --git a/drivers/net/phy/sfp.c b/drivers/net/phy/sfp.c
-index f8d1742..4d07752 100644
+index f8d1742e0..0fdf5d6d4 100644
--- a/drivers/net/phy/sfp.c
+++ b/drivers/net/phy/sfp.c
@@ -165,6 +165,7 @@ static const enum gpiod_flags gpio_flags[] = {
@@ -715,7 +1006,7 @@
return false;
}
-@@ -303,6 +334,180 @@ static const struct of_device_id sfp_of_match[] = {
+@@ -303,6 +325,180 @@ static const struct of_device_id sfp_of_match[] = {
};
MODULE_DEVICE_TABLE(of, sfp_of_match);
@@ -896,7 +1187,7 @@
static unsigned long poll_jiffies;
static unsigned int sfp_gpio_get_state(struct sfp *sfp)
-@@ -414,9 +619,6 @@ static int sfp_i2c_write(struct sfp *sfp, bool a2, u8 dev_addr, void *buf,
+@@ -414,9 +610,6 @@ static int sfp_i2c_write(struct sfp *sfp, bool a2, u8 dev_addr, void *buf,
static int sfp_i2c_configure(struct sfp *sfp, struct i2c_adapter *i2c)
{
@@ -906,7 +1197,7 @@
if (!i2c_check_functionality(i2c, I2C_FUNC_I2C))
return -EINVAL;
-@@ -424,7 +626,15 @@ static int sfp_i2c_configure(struct sfp *sfp, struct i2c_adapter *i2c)
+@@ -424,7 +617,15 @@ static int sfp_i2c_configure(struct sfp *sfp, struct i2c_adapter *i2c)
sfp->read = sfp_i2c_read;
sfp->write = sfp_i2c_write;
@@ -923,7 +1214,7 @@
if (IS_ERR(i2c_mii))
return PTR_ERR(i2c_mii);
-@@ -442,6 +652,12 @@ static int sfp_i2c_configure(struct sfp *sfp, struct i2c_adapter *i2c)
+@@ -442,6 +643,12 @@ static int sfp_i2c_configure(struct sfp *sfp, struct i2c_adapter *i2c)
return 0;
}
@@ -936,7 +1227,7 @@
/* Interface */
static int sfp_read(struct sfp *sfp, bool a2, u8 addr, void *buf, size_t len)
{
-@@ -487,17 +703,18 @@ static void sfp_soft_set_state(struct sfp *sfp, unsigned int state)
+@@ -487,17 +694,18 @@ static void sfp_soft_set_state(struct sfp *sfp, unsigned int state)
static void sfp_soft_start_poll(struct sfp *sfp)
{
const struct sfp_eeprom_id *id = &sfp->id;
@@ -964,7 +1255,7 @@
if (sfp->state_soft_mask & (SFP_F_LOS | SFP_F_TX_FAULT) &&
!sfp->need_poll)
-@@ -511,10 +728,11 @@ static void sfp_soft_stop_poll(struct sfp *sfp)
+@@ -511,10 +719,11 @@ static void sfp_soft_stop_poll(struct sfp *sfp)
static unsigned int sfp_get_state(struct sfp *sfp)
{
@@ -979,7 +1270,7 @@
state |= sfp_soft_get_state(sfp);
return state;
-@@ -1448,12 +1666,12 @@ static void sfp_sm_phy_detach(struct sfp *sfp)
+@@ -1448,12 +1657,12 @@ static void sfp_sm_phy_detach(struct sfp *sfp)
sfp->mod_phy = NULL;
}
@@ -994,7 +1285,7 @@
if (phy == ERR_PTR(-ENODEV))
return PTR_ERR(phy);
if (IS_ERR(phy)) {
-@@ -1548,6 +1766,14 @@ static void sfp_sm_fault(struct sfp *sfp, unsigned int next_state, bool warn)
+@@ -1548,6 +1757,14 @@ static void sfp_sm_fault(struct sfp *sfp, unsigned int next_state, bool warn)
}
}
@@ -1009,7 +1300,7 @@
/* Probe a SFP for a PHY device if the module supports copper - the PHY
* normally sits at I2C bus address 0x56, and may either be a clause 22
* or clause 45 PHY.
-@@ -1563,36 +1789,52 @@ static int sfp_sm_probe_for_phy(struct sfp *sfp)
+@@ -1563,36 +1780,52 @@ static int sfp_sm_probe_for_phy(struct sfp *sfp)
{
int err = 0;
@@ -1076,7 +1367,7 @@
/* The module appears not to implement bus address
* 0xa2, so assume that the module powers up in the
* indicated mode.
-@@ -1609,13 +1851,21 @@ static int sfp_module_parse_power(struct sfp *sfp)
+@@ -1609,13 +1842,21 @@ static int sfp_module_parse_power(struct sfp *sfp)
}
}
@@ -1100,7 +1391,7 @@
power_mW / 1000, (power_mW / 100) % 10);
return 0;
}
-@@ -1692,7 +1942,7 @@ static int sfp_sm_mod_probe(struct sfp *sfp, bool report)
+@@ -1692,7 +1933,7 @@ static int sfp_sm_mod_probe(struct sfp *sfp, bool report)
{
/* SFP module inserted - read I2C data */
struct sfp_eeprom_id id;
@@ -1109,7 +1400,7 @@
u8 check;
int ret;
-@@ -1747,10 +1997,16 @@ static int sfp_sm_mod_probe(struct sfp *sfp, bool report)
+@@ -1747,10 +1988,16 @@ static int sfp_sm_mod_probe(struct sfp *sfp, bool report)
*/
cotsworks = !memcmp(id.base.vendor_name, "COTSWORKS ", 16);
@@ -1127,7 +1418,7 @@
dev_warn(sfp->dev,
"EEPROM base structure checksum failure (0x%02x != 0x%02x)\n",
check, id.base.cc_base);
-@@ -1819,11 +2075,33 @@ static int sfp_sm_mod_probe(struct sfp *sfp, bool report)
+@@ -1819,11 +2066,33 @@ static int sfp_sm_mod_probe(struct sfp *sfp, bool report)
if (ret < 0)
return ret;
@@ -1165,7 +1456,7 @@
return 0;
}
-@@ -1936,7 +2214,8 @@ static void sfp_sm_module(struct sfp *sfp, unsigned int event)
+@@ -1936,7 +2205,8 @@ static void sfp_sm_module(struct sfp *sfp, unsigned int event)
break;
/* Report the module insertion to the upstream device */
@@ -1175,7 +1466,7 @@
if (err < 0) {
sfp_sm_mod_next(sfp, SFP_MOD_ERROR, 0);
break;
-@@ -1995,6 +2274,8 @@ static void sfp_sm_main(struct sfp *sfp, unsigned int event)
+@@ -1995,6 +2265,8 @@ static void sfp_sm_main(struct sfp *sfp, unsigned int event)
sfp_module_stop(sfp->sfp_bus);
if (sfp->mod_phy)
sfp_sm_phy_detach(sfp);
@@ -1184,7 +1475,7 @@
sfp_module_tx_disable(sfp);
sfp_soft_stop_poll(sfp);
sfp_sm_next(sfp, SFP_S_DOWN, 0);
-@@ -2018,9 +2299,10 @@ static void sfp_sm_main(struct sfp *sfp, unsigned int event)
+@@ -2018,9 +2290,10 @@ static void sfp_sm_main(struct sfp *sfp, unsigned int event)
/* We need to check the TX_FAULT state, which is not defined
* while TX_DISABLE is asserted. The earliest we want to do
@@ -1197,7 +1488,7 @@
break;
case SFP_S_WAIT:
-@@ -2034,8 +2316,8 @@ static void sfp_sm_main(struct sfp *sfp, unsigned int event)
+@@ -2034,8 +2307,8 @@ static void sfp_sm_main(struct sfp *sfp, unsigned int event)
* deasserting.
*/
timeout = sfp->module_t_start_up;
@@ -1208,7 +1499,7 @@
else
timeout = 1;
-@@ -2057,6 +2339,12 @@ static void sfp_sm_main(struct sfp *sfp, unsigned int event)
+@@ -2057,6 +2330,12 @@ static void sfp_sm_main(struct sfp *sfp, unsigned int event)
sfp->sm_fault_retries == N_FAULT_INIT);
} else if (event == SFP_E_TIMEOUT || event == SFP_E_TX_CLEAR) {
init_done:
@@ -1221,7 +1512,7 @@
sfp->sm_phy_retries = R_PHY_RETRY;
goto phy_probe;
}
-@@ -2409,6 +2697,8 @@ static int sfp_probe(struct platform_device *pdev)
+@@ -2409,6 +2688,8 @@ static int sfp_probe(struct platform_device *pdev)
return PTR_ERR(sfp->gpio[i]);
}
@@ -1230,6 +1521,8 @@
sfp->get_state = sfp_gpio_get_state;
sfp->set_state = sfp_gpio_set_state;
+diff --git a/drivers/net/phy/sfp.h b/drivers/net/phy/sfp.h
+index b83f70526..f533e2dd6 100644
--- a/drivers/net/phy/sfp.h
+++ b/drivers/net/phy/sfp.h
@@ -6,6 +6,14 @@
@@ -1247,7 +1540,7 @@
struct sfp_socket_ops {
void (*attach)(struct sfp *sfp);
void (*detach)(struct sfp *sfp);
-@@ -20,7 +27,8 @@ int sfp_add_phy(struct sfp_bus *bus, str
+@@ -20,7 +28,8 @@ int sfp_add_phy(struct sfp_bus *bus, struct phy_device *phydev);
void sfp_remove_phy(struct sfp_bus *bus);
void sfp_link_up(struct sfp_bus *bus);
void sfp_link_down(struct sfp_bus *bus);
@@ -1257,285 +1550,26 @@
void sfp_module_remove(struct sfp_bus *bus);
int sfp_module_start(struct sfp_bus *bus);
void sfp_module_stop(struct sfp_bus *bus);
- --- a/drivers/net/phy/marvell.c
-+++ b/drivers/net/phy/marvell.c
-@@ -2175,7 +2175,7 @@ static struct phy_driver marvell_drivers[] = {
- .phy_id = MARVELL_PHY_ID_88E1111,
- .phy_id_mask = MARVELL_PHY_ID_MASK,
- .name = "Marvell 88E1111",
-- /* PHY_GBIT_FEATURES */
-+ .features = PHY_GBIT_FEATURES,
- .probe = marvell_probe,
- .config_init = &m88e1111_config_init,
- .config_aneg = &marvell_config_aneg,
---- a/drivers/net/phy/marvell10g.c
-+++ b/drivers/net/phy/marvell10g.c
-@@ -32,6 +32,15 @@
- #define MV_PHY_ALASKA_NBT_QUIRK_REV (MARVELL_PHY_ID_88X3310 | 0xa)
-
- enum {
-+ MV_PMA_21X0_PORT_CTRL = 0xc04a,
-+ MV_PMA_21X0_PORT_CTRL_SWRST = BIT(15),
-+ MV_PMA_21X0_PORT_CTRL_MACTYPE_MASK = 0x7,
-+ MV_PMA_21X0_PORT_CTRL_MACTYPE_USXGMII = 0x0,
-+ MV_PMA_2180_PORT_CTRL_MACTYPE_DXGMII = 0x1,
-+ MV_PMA_2180_PORT_CTRL_MACTYPE_QXGMII = 0x2,
-+ MV_PMA_21X0_PORT_CTRL_MACTYPE_5GBASER = 0x4,
-+ MV_PMA_21X0_PORT_CTRL_MACTYPE_5GBASER_NO_SGMII_AN = 0x5,
-+ MV_PMA_21X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH = 0x6,
- MV_PMA_BOOT = 0xc050,
- MV_PMA_BOOT_FATAL = BIT(0),
-
-@@ -53,7 +62,18 @@ enum {
-
- /* Vendor2 MMD registers */
- MV_V2_PORT_CTRL = 0xf001,
-- MV_V2_PORT_CTRL_PWRDOWN = 0x0800,
-+ MV_V2_PORT_CTRL_PWRDOWN = BIT(11),
-+ MV_V2_33X0_PORT_CTRL_SWRST = BIT(15),
-+ MV_V2_33X0_PORT_CTRL_MACTYPE_MASK = 0x7,
-+ MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI = 0x0,
-+ MV_V2_3310_PORT_CTRL_MACTYPE_XAUI_RATE_MATCH = 0x1,
-+ MV_V2_3340_PORT_CTRL_MACTYPE_RXAUI_NO_SGMII_AN = 0x1,
-+ MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI_RATE_MATCH = 0x2,
-+ MV_V2_3310_PORT_CTRL_MACTYPE_XAUI = 0x3,
-+ MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER = 0x4,
-+ MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_NO_SGMII_AN = 0x5,
-+ MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH = 0x6,
-+ MV_V2_33X0_PORT_CTRL_MACTYPE_USXGMII = 0x7,
- MV_V2_TEMP_CTRL = 0xf08a,
- MV_V2_TEMP_CTRL_MASK = 0xc000,
- MV_V2_TEMP_CTRL_SAMPLE = 0x0000,
-@@ -62,11 +82,24 @@ enum {
- MV_V2_TEMP_UNKNOWN = 0x9600, /* unknown function */
- };
-
-+struct mv3310_chip {
-+ int (*get_mactype)(struct phy_device *phydev);
-+ int (*init_interface)(struct phy_device *phydev, int mactype);
-+};
-+
- struct mv3310_priv {
-+ bool rate_match;
-+ phy_interface_t const_interface;
-+
- struct device *hwmon_dev;
- char *hwmon_name;
- };
-
-+static const struct mv3310_chip *to_mv3310_chip(struct phy_device *phydev)
-+{
-+ return phydev->drv->driver_data;
-+}
-+
- #ifdef CONFIG_HWMON
- static umode_t mv3310_hwmon_is_visible(const void *data,
- enum hwmon_sensor_types type,
-@@ -155,13 +188,6 @@ static int mv3310_hwmon_config(struct ph
- MV_V2_TEMP_CTRL_MASK, val);
- }
-
--static void mv3310_hwmon_disable(void *data)
--{
-- struct phy_device *phydev = data;
--
-- mv3310_hwmon_config(phydev, false);
--}
--
- static int mv3310_hwmon_probe(struct phy_device *phydev)
- {
- struct device *dev = &phydev->mdio.dev;
-@@ -185,10 +211,6 @@ static int mv3310_hwmon_probe(struct phy
- if (ret)
- return ret;
-
-- ret = devm_add_action_or_reset(dev, mv3310_hwmon_disable, phydev);
-- if (ret)
-- return ret;
--
- priv->hwmon_dev = devm_hwmon_device_register_with_info(dev,
- priv->hwmon_name, phydev,
- &mv3310_hwmon_chip_info, NULL);
-@@ -262,6 +284,11 @@ static int mv3310_probe(struct phy_devic
- return phy_sfp_probe(phydev, &mv3310_sfp_ops);
- }
-
-+static void mv3310_remove(struct phy_device *phydev)
-+{
-+ mv3310_hwmon_config(phydev, false);
-+}
-+
- static int mv3310_suspend(struct phy_device *phydev)
- {
- return phy_set_bits_mmd(phydev, MDIO_MMD_VEND2, MV_V2_PORT_CTRL,
-@@ -297,8 +324,84 @@ static bool mv3310_has_pma_ngbaset_quirk
- MV_PHY_ALASKA_NBT_QUIRK_MASK) == MV_PHY_ALASKA_NBT_QUIRK_REV;
- }
-
-+static int mv2110_get_mactype(struct phy_device *phydev)
-+{
-+ int mactype;
-+
-+ mactype = phy_read_mmd(phydev, MDIO_MMD_PMAPMD, MV_PMA_21X0_PORT_CTRL);
-+ if (mactype < 0)
-+ return mactype;
-+
-+ return mactype & MV_PMA_21X0_PORT_CTRL_MACTYPE_MASK;
-+}
-+
-+static int mv3310_get_mactype(struct phy_device *phydev)
-+{
-+ int mactype;
-+
-+ mactype = phy_read_mmd(phydev, MDIO_MMD_VEND2, MV_V2_PORT_CTRL);
-+ if (mactype < 0)
-+ return mactype;
-+
-+ return mactype & MV_V2_33X0_PORT_CTRL_MACTYPE_MASK;
-+}
-+
-+static int mv2110_init_interface(struct phy_device *phydev, int mactype)
-+{
-+ struct mv3310_priv *priv = dev_get_drvdata(&phydev->mdio.dev);
-+
-+ priv->rate_match = false;
-+
-+ if (mactype == MV_PMA_21X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH)
-+ priv->rate_match = true;
-+
-+ if (mactype == MV_PMA_21X0_PORT_CTRL_MACTYPE_USXGMII)
-+ priv->const_interface = PHY_INTERFACE_MODE_USXGMII;
-+ else if (mactype == MV_PMA_21X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH)
-+ priv->const_interface = PHY_INTERFACE_MODE_10GKR;
-+ else if (mactype == MV_PMA_21X0_PORT_CTRL_MACTYPE_5GBASER ||
-+ mactype == MV_PMA_21X0_PORT_CTRL_MACTYPE_5GBASER_NO_SGMII_AN)
-+ priv->const_interface = PHY_INTERFACE_MODE_NA;
-+ else
-+ return -EINVAL;
-+
-+ return 0;
-+}
-+
-+static int mv3310_init_interface(struct phy_device *phydev, int mactype)
-+{
-+ struct mv3310_priv *priv = dev_get_drvdata(&phydev->mdio.dev);
-+
-+ priv->rate_match = false;
-+
-+ if (mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH ||
-+ mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI_RATE_MATCH ||
-+ mactype == MV_V2_3310_PORT_CTRL_MACTYPE_XAUI_RATE_MATCH)
-+ priv->rate_match = true;
-+
-+ if (mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_USXGMII)
-+ priv->const_interface = PHY_INTERFACE_MODE_USXGMII;
-+ else if (mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_RATE_MATCH ||
-+ mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER_NO_SGMII_AN ||
-+ mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_10GBASER)
-+ priv->const_interface = PHY_INTERFACE_MODE_10GKR;
-+ else if (mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI_RATE_MATCH ||
-+ mactype == MV_V2_33X0_PORT_CTRL_MACTYPE_RXAUI)
-+ priv->const_interface = PHY_INTERFACE_MODE_RXAUI;
-+ else if (mactype == MV_V2_3310_PORT_CTRL_MACTYPE_XAUI_RATE_MATCH ||
-+ mactype == MV_V2_3310_PORT_CTRL_MACTYPE_XAUI)
-+ priv->const_interface = PHY_INTERFACE_MODE_XAUI;
-+ else
-+ return -EINVAL;
-+
-+ return 0;
-+}
-+
- static int mv3310_config_init(struct phy_device *phydev)
- {
-+ const struct mv3310_chip *chip = to_mv3310_chip(phydev);
-+ int err, mactype;
-+
- /* Check that the PHY interface type is compatible */
- if (phydev->interface != PHY_INTERFACE_MODE_SGMII &&
- phydev->interface != PHY_INTERFACE_MODE_2500BASEX &&
-@@ -307,6 +410,16 @@ static int mv3310_config_init(struct phy
- phydev->interface != PHY_INTERFACE_MODE_10GKR)
- return -ENODEV;
-
-+ mactype = chip->get_mactype(phydev);
-+ if (mactype < 0)
-+ return mactype;
-+
-+ err = chip->init_interface(phydev, mactype);
-+ if (err) {
-+ phydev_err(phydev, "MACTYPE configuration invalid\n");
-+ return err;
-+ }
-+
- return 0;
- }
-
-@@ -384,6 +497,23 @@ static int mv3310_aneg_done(struct phy_d
-
- static void mv3310_update_interface(struct phy_device *phydev)
- {
-+ struct mv3310_priv *priv = dev_get_drvdata(&phydev->mdio.dev);
-+
-+ if (!phydev->link)
-+ return;
-+
-+ /* In all of the "* with Rate Matching" modes the PHY interface is fixed
-+ * at 10Gb. The PHY adapts the rate to actual wire speed with help of
-+ * internal 16KB buffer.
-+ *
-+ * In USXGMII mode the PHY interface mode is also fixed.
-+ */
-+ if (priv->rate_match ||
-+ priv->const_interface == PHY_INTERFACE_MODE_USXGMII) {
-+ phydev->interface = priv->const_interface;
-+ return;
-+ }
-+
- if ((phydev->interface == PHY_INTERFACE_MODE_SGMII ||
- phydev->interface == PHY_INTERFACE_MODE_2500BASEX ||
- phydev->interface == PHY_INTERFACE_MODE_5GBASER ||
-@@ -503,11 +633,22 @@ static int mv3310_read_status(struct phy
- return 0;
- }
+diff --git a/include/linux/mdio/mdio-i2c.h b/include/linux/mdio/mdio-i2c.h
+index 751dab281..1c2114068 100644
+--- a/include/linux/mdio/mdio-i2c.h
++++ b/include/linux/mdio/mdio-i2c.h
+@@ -11,6 +11,14 @@ struct device;
+ struct i2c_adapter;
+ struct mii_bus;
-+static const struct mv3310_chip mv3310_type = {
-+ .get_mactype = mv3310_get_mactype,
-+ .init_interface = mv3310_init_interface,
-+};
-+
-+static const struct mv3310_chip mv2111_type = {
-+ .get_mactype = mv2110_get_mactype,
-+ .init_interface = mv2110_init_interface,
+-struct mii_bus *mdio_i2c_alloc(struct device *parent, struct i2c_adapter *i2c);
++enum mdio_i2c_proto {
++ MDIO_I2C_NONE,
++ MDIO_I2C_MARVELL_C22,
++ MDIO_I2C_C45,
++ MDIO_I2C_ROLLBALL,
+};
+
- static struct phy_driver mv3310_drivers[] = {
- {
- .phy_id = MARVELL_PHY_ID_88X3310,
- .phy_id_mask = MARVELL_PHY_ID_MASK,
- .name = "mv88x3310",
-+ .driver_data = &mv3310_type,
- .get_features = mv3310_get_features,
- .soft_reset = genphy_no_soft_reset,
- .config_init = mv3310_config_init,
-@@ -517,11 +658,13 @@ static struct phy_driver mv3310_drivers[
- .config_aneg = mv3310_config_aneg,
- .aneg_done = mv3310_aneg_done,
- .read_status = mv3310_read_status,
-+ .remove = mv3310_remove,
- },
- {
- .phy_id = MARVELL_PHY_ID_88E2110,
- .phy_id_mask = MARVELL_PHY_ID_MASK,
- .name = "mv88x2110",
-+ .driver_data = &mv2111_type,
- .probe = mv3310_probe,
- .suspend = mv3310_suspend,
- .resume = mv3310_resume,
-@@ -530,6 +673,7 @@ static struct phy_driver mv3310_drivers[
- .config_aneg = mv3310_config_aneg,
- .aneg_done = mv3310_aneg_done,
- .read_status = mv3310_read_status,
-+ .remove = mv3310_remove,
- },
- };
++struct mii_bus *mdio_i2c_alloc(struct device *parent, struct i2c_adapter *i2c,
++ enum mdio_i2c_proto protocol);
+ #endif
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/757-net-phy-add-phylink-pcs-support.patch b/target/linux/mediatek/patches-5.4/999-1710-net-phy-add-phylink-pcs-support.patch
similarity index 96%
rename from target/linux/mediatek/patches-5.4/757-net-phy-add-phylink-pcs-support.patch
rename to target/linux/mediatek/patches-5.4/999-1710-net-phy-add-phylink-pcs-support.patch
index 99e4141..8f298c3 100644
--- a/target/linux/mediatek/patches-5.4/757-net-phy-add-phylink-pcs-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-1710-net-phy-add-phylink-pcs-support.patch
@@ -1,5 +1,16 @@
+From 45878f8001b0ad75c5497a999a43b5901c1e03a6 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:01 +0800
+Subject: [PATCH]
+ [backport-networking-drivers][999-1710-net-phy-add-phylink-pcs-support.patch]
+
+---
+ drivers/net/phy/phylink.c | 306 ++++++++++++++++++++++++++++++--------
+ include/linux/phylink.h | 195 ++++++++++++++++++++++++
+ 2 files changed, 443 insertions(+), 58 deletions(-)
+
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
-index 67f34ed..ead9b37 100644
+index 67f34ed4c..9c76517ea 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -40,8 +40,9 @@ enum {
@@ -446,7 +457,7 @@
clear_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state);
phylink_run_resolve(pl);
-@@ -1055,10 +1238,19 @@ void phylink_start(struct phylink *pl)
+@@ -1055,10 +1239,19 @@ void phylink_start(struct phylink *pl)
irq = 0;
}
if (irq <= 0)
@@ -469,7 +480,7 @@
mod_timer(&pl->link_poll, jiffies + HZ);
if (pl->phydev)
phy_start(pl->phydev);
-@@ -1202,7 +1394,7 @@ int phylink_ethtool_ksettings_get(struct phylink *pl,
+@@ -1202,7 +1395,7 @@ int phylink_ethtool_ksettings_get(struct phylink *pl,
if (pl->phydev)
break;
@@ -478,7 +489,7 @@
/* The MAC is reporting the link results from its own PCS
* layer via in-band status. Report these as the current
-@@ -1314,7 +1506,7 @@ int phylink_ethtool_ksettings_set(struct phylink *pl,
+@@ -1314,7 +1507,7 @@ int phylink_ethtool_ksettings_set(struct phylink *pl,
if (pl->cur_link_an_mode == MLO_AN_INBAND &&
!test_bit(PHYLINK_DISABLE_STOPPED, &pl->phylink_disable_state)) {
phylink_mac_config(pl, &pl->link_config);
@@ -487,7 +498,7 @@
}
mutex_unlock(&pl->state_mutex);
-@@ -1341,7 +1533,7 @@ int phylink_ethtool_nway_reset(struct phylink *pl)
+@@ -1341,7 +1534,7 @@ int phylink_ethtool_nway_reset(struct phylink *pl)
if (pl->phydev)
ret = phy_restart_aneg(pl->phydev);
@@ -496,7 +507,7 @@
return ret;
}
-@@ -1410,7 +1602,7 @@ int phylink_ethtool_set_pauseparam(struct phylink *pl,
+@@ -1410,7 +1603,7 @@ int phylink_ethtool_set_pauseparam(struct phylink *pl,
case MLO_AN_INBAND:
phylink_mac_config(pl, config);
@@ -505,7 +516,7 @@
break;
}
}
-@@ -1621,10 +1813,7 @@ static int phylink_mii_read(struct phylink *pl, unsigned int phy_id,
+@@ -1621,10 +1814,7 @@ static int phylink_mii_read(struct phylink *pl, unsigned int phy_id,
case MLO_AN_INBAND:
if (phy_id == 0) {
@@ -517,7 +528,7 @@
val = phylink_mii_emul_read(reg, &state);
}
break;
-@@ -2010,7 +2010,7 @@ static int phylink_sfp_config(struct phylink *pl, u8 mode,
+@@ -1820,7 +2010,7 @@ static int phylink_sfp_config(struct phylink *pl, u8 mode,
if (changed && !test_bit(PHYLINK_DISABLE_STOPPED,
&pl->phylink_disable_state))
@@ -527,7 +538,7 @@
return ret;
}
diff --git a/include/linux/phylink.h b/include/linux/phylink.h
-index 8229f56..ba0f09d 100644
+index 8229f56a1..ba0f09d02 100644
--- a/include/linux/phylink.h
+++ b/include/linux/phylink.h
@@ -63,17 +63,23 @@ enum phylink_op_type {
@@ -782,3 +793,6 @@
struct phylink *phylink_create(struct phylink_config *, struct fwnode_handle *,
phy_interface_t iface,
const struct phylink_mac_ops *ops);
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/758-net-phy-add-phylink-pcs-decode-helper.patch b/target/linux/mediatek/patches-5.4/999-1711-net-phy-add-phylink-pcs-decode-helper.patch
similarity index 93%
rename from target/linux/mediatek/patches-5.4/758-net-phy-add-phylink-pcs-decode-helper.patch
rename to target/linux/mediatek/patches-5.4/999-1711-net-phy-add-phylink-pcs-decode-helper.patch
index 164578a..1c7ff1c 100644
--- a/target/linux/mediatek/patches-5.4/758-net-phy-add-phylink-pcs-decode-helper.patch
+++ b/target/linux/mediatek/patches-5.4/999-1711-net-phy-add-phylink-pcs-decode-helper.patch
@@ -1,5 +1,23 @@
+From 318f81610f630a026fd5ca0d4da7e34df25df663 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:02 +0800
+Subject: [PATCH]
+ [backport-networking-drivers][999-1711-net-phy-add-phylink-pcs-decode-helper.patch]
+
+---
+ drivers/net/phy/Makefile | 3 +-
+ drivers/net/phy/linkmode.c | 95 +++++++++++++++++++
+ drivers/net/phy/phylink.c | 188 +++++++++++++++++++++++++++++++++++++
+ include/linux/linkmode.h | 6 ++
+ include/linux/mii.h | 39 ++++++++
+ include/linux/phylink.h | 30 ++++++
+ include/uapi/linux/mdio.h | 26 +++++
+ include/uapi/linux/mii.h | 17 ++++
+ 8 files changed, 403 insertions(+), 1 deletion(-)
+ create mode 100644 drivers/net/phy/linkmode.c
+
diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
-index 799ff9c..54ad7e8 100644
+index 8ea612a85..437ff2a2c 100644
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -1,7 +1,8 @@
@@ -14,7 +32,7 @@
ifdef CONFIG_MDIO_DEVICE
diff --git a/drivers/net/phy/linkmode.c b/drivers/net/phy/linkmode.c
new file mode 100644
-index 0000000..a5a347b
+index 000000000..a5a347bca
--- /dev/null
+++ b/drivers/net/phy/linkmode.c
@@ -0,0 +1,95 @@
@@ -114,10 +132,10 @@
+}
+EXPORT_SYMBOL_GPL(linkmode_set_pause);
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
-index ead9b37..fec6d0e 100644
+index 9c76517ea..6b63b9839 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
-@@ -2184,4 +2184,192 @@ void phylink_helper_basex_speed(struct phylink_link_state *state)
+@@ -2185,4 +2185,192 @@ void phylink_helper_basex_speed(struct phylink_link_state *state)
}
EXPORT_SYMBOL_GPL(phylink_helper_basex_speed);
@@ -311,7 +329,7 @@
+
MODULE_LICENSE("GPL v2");
diff --git a/include/linux/linkmode.h b/include/linux/linkmode.h
-index a99c588..d38da4e 100644
+index a99c58866..d38da4e89 100644
--- a/include/linux/linkmode.h
+++ b/include/linux/linkmode.h
@@ -82,4 +82,10 @@ static inline int linkmode_equal(const unsigned long *src1,
@@ -326,7 +344,7 @@
+
#endif /* __LINKMODE_H */
diff --git a/include/linux/mii.h b/include/linux/mii.h
-index 4ce8901..54b7f64 100644
+index 4ce8901a1..54b7f64b0 100644
--- a/include/linux/mii.h
+++ b/include/linux/mii.h
@@ -485,6 +485,45 @@ static inline u32 linkmode_adv_to_lcl_adv_t(unsigned long *advertising)
@@ -376,7 +394,7 @@
* mii_advertise_flowctrl - get flow control advertisement flags
* @cap: Flow control capabilities (FLOW_CTRL_RX, FLOW_CTRL_TX or both)
diff --git a/include/linux/phylink.h b/include/linux/phylink.h
-index ba0f09d..48ff9fe 100644
+index ba0f09d02..48ff9fead 100644
--- a/include/linux/phylink.h
+++ b/include/linux/phylink.h
@@ -490,4 +490,34 @@ int phylink_mii_ioctl(struct phylink *, struct ifreq *, int);
@@ -415,7 +433,7 @@
+ uint16_t lpa);
#endif
diff --git a/include/uapi/linux/mdio.h b/include/uapi/linux/mdio.h
-index 4bcb41c..3f302e2 100644
+index 4bcb41c71..3f302e252 100644
--- a/include/uapi/linux/mdio.h
+++ b/include/uapi/linux/mdio.h
@@ -324,4 +324,30 @@ static inline __u16 mdio_phy_id_c45(int prtad, int devad)
@@ -450,7 +468,7 @@
+
#endif /* _UAPI__LINUX_MDIO_H__ */
diff --git a/include/uapi/linux/mii.h b/include/uapi/linux/mii.h
-index 51b48e4..90f9b4e 100644
+index 51b48e4be..90f9b4e1b 100644
--- a/include/uapi/linux/mii.h
+++ b/include/uapi/linux/mii.h
@@ -131,6 +131,23 @@
@@ -477,3 +495,6 @@
/* 1000BASE-T Control register */
#define ADVERTISE_1000FULL 0x0200 /* Advertise 1000BASE-T full duplex */
#define ADVERTISE_1000HALF 0x0100 /* Advertise 1000BASE-T half duplex */
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2000-show_model_name_in_cpuinfo_on_arm64.patch b/target/linux/mediatek/patches-5.4/999-2000-show_model_name_in_cpuinfo_on_arm64.patch
new file mode 100644
index 0000000..12ad322
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2000-show_model_name_in_cpuinfo_on_arm64.patch
@@ -0,0 +1,29 @@
+From 9fb8ad91c5e221d44089ca908311842d61c8f289 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:02 +0800
+Subject: [PATCH]
+ [basic-part][999-2000-show_model_name_in_cpuinfo_on_arm64.patch]
+
+---
+ arch/arm64/kernel/cpuinfo.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
+index 90b35011a..4324f12a2 100644
+--- a/arch/arm64/kernel/cpuinfo.c
++++ b/arch/arm64/kernel/cpuinfo.c
+@@ -139,9 +139,8 @@ static int c_show(struct seq_file *m, void *v)
+ * "processor". Give glibc what it expects.
+ */
+ seq_printf(m, "processor\t: %d\n", i);
+- if (compat)
+- seq_printf(m, "model name\t: ARMv8 Processor rev %d (%s)\n",
+- MIDR_REVISION(midr), COMPAT_ELF_PLATFORM);
++ seq_printf(m, "model name\t: ARMv8 Processor rev %d (%s)\n",
++ MIDR_REVISION(midr), COMPAT_ELF_PLATFORM);
+
+ seq_printf(m, "BogoMIPS\t: %lu.%02lu\n",
+ loops_per_jiffy / (500000UL/HZ),
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/1023-kgdb-add-interrupt-control.patch b/target/linux/mediatek/patches-5.4/999-2001-kgdb-add-interrupt-control.patch
similarity index 76%
rename from target/linux/mediatek/patches-5.4/1023-kgdb-add-interrupt-control.patch
rename to target/linux/mediatek/patches-5.4/999-2001-kgdb-add-interrupt-control.patch
index e0ee954..7973173 100644
--- a/target/linux/mediatek/patches-5.4/1023-kgdb-add-interrupt-control.patch
+++ b/target/linux/mediatek/patches-5.4/999-2001-kgdb-add-interrupt-control.patch
@@ -1,5 +1,14 @@
+From 766f65096433dde206cdfa19c2cd644be6beaf32 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:02 +0800
+Subject: [PATCH] [basic-part][999-2001-kgdb-add-interrupt-control.patch]
+
+---
+ arch/arm64/kernel/kgdb.c | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
diff --git a/arch/arm64/kernel/kgdb.c b/arch/arm64/kernel/kgdb.c
-index 1a157ca..258fe4b 100644
+index 1a157ca33..258fe4b38 100644
--- a/arch/arm64/kernel/kgdb.c
+++ b/arch/arm64/kernel/kgdb.c
@@ -18,6 +18,10 @@
@@ -40,3 +49,6 @@
kgdb_handle_exception(0, SIGTRAP, 0, regs);
return DBG_HOOK_HANDLED;
}
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0001-clk-mtk-add-mt7986-support.patch b/target/linux/mediatek/patches-5.4/999-2010-clk-mtk-add-mt7986-support.patch
similarity index 79%
rename from target/linux/mediatek/patches-5.4/0001-clk-mtk-add-mt7986-support.patch
rename to target/linux/mediatek/patches-5.4/999-2010-clk-mtk-add-mt7986-support.patch
index 930e88b..0708076 100644
--- a/target/linux/mediatek/patches-5.4/0001-clk-mtk-add-mt7986-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2010-clk-mtk-add-mt7986-support.patch
@@ -1,11 +1,21 @@
+From cd39b20ca69be67d38a2366e64c496f157f12672 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:02 +0800
+Subject: [PATCH] [basic-part][999-2010-clk-mtk-add-mt7986-support.patch]
+
+---
+ drivers/clk/mediatek/Kconfig | 9 +++++++++
+ drivers/clk/mediatek/Makefile | 2 ++
+ 2 files changed, 11 insertions(+)
+
diff --git a/drivers/clk/mediatek/Kconfig b/drivers/clk/mediatek/Kconfig
-index 7efc361..5f11280 100644
+index 7efc3617b..1c48fe9f5 100644
--- a/drivers/clk/mediatek/Kconfig
+++ b/drivers/clk/mediatek/Kconfig
@@ -258,6 +258,15 @@ config COMMON_CLK_MT7629_HIFSYS
This driver supports MediaTek MT7629 HIFSYS clocks providing
to PCI-E and USB.
-
+
+config COMMON_CLK_MT7986
+ bool "Clock driver for MediaTek MT7986"
+ depends on ARCH_MEDIATEK || COMPILE_TEST
@@ -19,7 +29,7 @@
bool "Clock driver for MediaTek MT8135"
depends on (ARCH_MEDIATEK && ARM) || COMPILE_TEST
diff --git a/drivers/clk/mediatek/Makefile b/drivers/clk/mediatek/Makefile
-index 8cdb76a..8c392f4 100644
+index 8cdb76a5c..8c392f4ef 100644
--- a/drivers/clk/mediatek/Makefile
+++ b/drivers/clk/mediatek/Makefile
@@ -39,6 +39,7 @@ obj-$(CONFIG_COMMON_CLK_MT7622_AUDSYS) += clk-mt7622-aud.o
@@ -37,5 +47,5 @@
+obj-y += clk-bringup.o
\ No newline at end of file
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/0002-clk-mtk-add-mt7981-support.patch b/target/linux/mediatek/patches-5.4/999-2011-clk-mtk-add-mt7981-support.patch
similarity index 75%
rename from target/linux/mediatek/patches-5.4/0002-clk-mtk-add-mt7981-support.patch
rename to target/linux/mediatek/patches-5.4/999-2011-clk-mtk-add-mt7981-support.patch
index 72f9e8a..7bf43f4 100644
--- a/target/linux/mediatek/patches-5.4/0002-clk-mtk-add-mt7981-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2011-clk-mtk-add-mt7981-support.patch
@@ -1,5 +1,15 @@
+From 0c59e472d0ace19f00d06b4ccf5dba6a7831c001 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:03 +0800
+Subject: [PATCH] [basic-part][999-2011-clk-mtk-add-mt7981-support.patch]
+
+---
+ drivers/clk/mediatek/Kconfig | 8 ++++++++
+ drivers/clk/mediatek/Makefile | 1 +
+ 2 files changed, 9 insertions(+)
+
diff --git a/drivers/clk/mediatek/Kconfig b/drivers/clk/mediatek/Kconfig
-index 1c48fe9..23393d5 100644
+index 1c48fe9f5..23393d5ec 100644
--- a/drivers/clk/mediatek/Kconfig
+++ b/drivers/clk/mediatek/Kconfig
@@ -267,6 +267,14 @@ config COMMON_CLK_MT7986
@@ -18,7 +28,7 @@
bool "Clock driver for MediaTek MT8135"
depends on (ARCH_MEDIATEK && ARM) || COMPILE_TEST
diff --git a/drivers/clk/mediatek/Makefile b/drivers/clk/mediatek/Makefile
-index 8c392f4..ffe0850 100644
+index 8c392f4ef..ffe0850e1 100644
--- a/drivers/clk/mediatek/Makefile
+++ b/drivers/clk/mediatek/Makefile
@@ -40,6 +40,7 @@ obj-$(CONFIG_COMMON_CLK_MT7629) += clk-mt7629.o
@@ -30,5 +40,5 @@
obj-$(CONFIG_COMMON_CLK_MT8173) += clk-mt8173.o
obj-$(CONFIG_COMMON_CLK_MT8183) += clk-mt8183.o
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/0003-clk-mtk-add-mt7988-support.patch b/target/linux/mediatek/patches-5.4/999-2012-clk-mtk-add-mt7988-support.patch
similarity index 78%
rename from target/linux/mediatek/patches-5.4/0003-clk-mtk-add-mt7988-support.patch
rename to target/linux/mediatek/patches-5.4/999-2012-clk-mtk-add-mt7988-support.patch
index e673148..d29a023 100644
--- a/target/linux/mediatek/patches-5.4/0003-clk-mtk-add-mt7988-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2012-clk-mtk-add-mt7988-support.patch
@@ -1,5 +1,15 @@
+From 63786d6f950d63c586b4efac77d3244b959ba5a6 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:03 +0800
+Subject: [PATCH] [basic-part][999-2012-clk-mtk-add-mt7988-support.patch]
+
+---
+ drivers/clk/mediatek/Kconfig | 8 ++++++++
+ drivers/clk/mediatek/Makefile | 3 ++-
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
diff --git a/drivers/clk/mediatek/Kconfig b/drivers/clk/mediatek/Kconfig
-index 23393d5..cf3a53e 100644
+index 23393d5ec..cf3a53e9b 100644
--- a/drivers/clk/mediatek/Kconfig
+++ b/drivers/clk/mediatek/Kconfig
@@ -275,6 +275,14 @@ config COMMON_CLK_MT7981
@@ -18,7 +28,7 @@
bool "Clock driver for MediaTek MT8135"
depends on (ARCH_MEDIATEK && ARM) || COMPILE_TEST
diff --git a/drivers/clk/mediatek/Makefile b/drivers/clk/mediatek/Makefile
-index ffe0850..43ca85d 100644
+index ffe0850e1..43ca85d10 100644
--- a/drivers/clk/mediatek/Makefile
+++ b/drivers/clk/mediatek/Makefile
@@ -41,6 +41,7 @@ obj-$(CONFIG_COMMON_CLK_MT7629_ETHSYS) += clk-mt7629-eth.o
@@ -36,3 +46,6 @@
-obj-y += clk-bringup.o
\ No newline at end of file
+obj-y += clk-bringup.o
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0005-clk-mtk-add-chg-shift-control.patch b/target/linux/mediatek/patches-5.4/999-2013-clk-mtk-add-chg-shift-control.patch
similarity index 69%
rename from target/linux/mediatek/patches-5.4/0005-clk-mtk-add-chg-shift-control.patch
rename to target/linux/mediatek/patches-5.4/999-2013-clk-mtk-add-chg-shift-control.patch
index 4a9ff6f..7853f41 100644
--- a/target/linux/mediatek/patches-5.4/0005-clk-mtk-add-chg-shift-control.patch
+++ b/target/linux/mediatek/patches-5.4/999-2013-clk-mtk-add-chg-shift-control.patch
@@ -1,5 +1,15 @@
+From e640a8767e5ab047b8a4c89041ee3872132ce38a Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:03 +0800
+Subject: [PATCH] [basic-part][999-2013-clk-mtk-add-chg-shift-control.patch]
+
+---
+ drivers/clk/mediatek/clk-mtk.h | 1 +
+ drivers/clk/mediatek/clk-pll.c | 5 ++++-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
diff --git a/drivers/clk/mediatek/clk-mtk.h b/drivers/clk/mediatek/clk-mtk.h
-index c3d6756..d84c45d 100644
+index c3d6756b0..d84c45d75 100644
--- a/drivers/clk/mediatek/clk-mtk.h
+++ b/drivers/clk/mediatek/clk-mtk.h
@@ -231,6 +231,7 @@ struct mtk_pll_data {
@@ -11,7 +21,7 @@
const char *parent_name;
};
diff --git a/drivers/clk/mediatek/clk-pll.c b/drivers/clk/mediatek/clk-pll.c
-index f440f2c..db318fe 100644
+index f440f2cd0..db318fe1c 100644
--- a/drivers/clk/mediatek/clk-pll.c
+++ b/drivers/clk/mediatek/clk-pll.c
@@ -136,7 +136,10 @@ static void mtk_pll_set_rate_regs(struct mtk_clk_pll *pll, u32 pcw,
@@ -26,3 +36,6 @@
writel(chg, pll->pcw_chg_addr);
if (pll->tuner_addr)
writel(val + 1, pll->tuner_addr);
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/401-pinctrl-add-mt7986-driver.patch b/target/linux/mediatek/patches-5.4/999-2020-pinctrl-add-mt7986-driver.patch
similarity index 72%
rename from target/linux/mediatek/patches-5.4/401-pinctrl-add-mt7986-driver.patch
rename to target/linux/mediatek/patches-5.4/999-2020-pinctrl-add-mt7986-driver.patch
index a02873d..ba9e2bb 100644
--- a/target/linux/mediatek/patches-5.4/401-pinctrl-add-mt7986-driver.patch
+++ b/target/linux/mediatek/patches-5.4/999-2020-pinctrl-add-mt7986-driver.patch
@@ -1,5 +1,15 @@
+From 1cbd50ca51ad80b9c2527c1aaccb57b92dd6d635 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:03 +0800
+Subject: [PATCH] [basic-part][999-2020-pinctrl-add-mt7986-driver.patch]
+
+---
+ drivers/pinctrl/mediatek/Kconfig | 7 +++++++
+ drivers/pinctrl/mediatek/Makefile | 1 +
+ 2 files changed, 8 insertions(+)
+
diff --git a/drivers/pinctrl/mediatek/Kconfig b/drivers/pinctrl/mediatek/Kconfig
-index 701f9af..9109f91 100644
+index 701f9af63..9109f911a 100644
--- a/drivers/pinctrl/mediatek/Kconfig
+++ b/drivers/pinctrl/mediatek/Kconfig
@@ -100,6 +100,13 @@ config PINCTRL_MT7622
@@ -17,7 +27,7 @@
bool "Mediatek MT8173 pin control"
depends on OF
diff --git a/drivers/pinctrl/mediatek/Makefile b/drivers/pinctrl/mediatek/Makefile
-index a74325a..d408585 100644
+index a74325abd..d4085859a 100644
--- a/drivers/pinctrl/mediatek/Makefile
+++ b/drivers/pinctrl/mediatek/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_PINCTRL_MT6797) += pinctrl-mt6797.o
@@ -28,3 +38,6 @@
obj-$(CONFIG_PINCTRL_MT8173) += pinctrl-mt8173.o
obj-$(CONFIG_PINCTRL_MT8183) += pinctrl-mt8183.o
obj-$(CONFIG_PINCTRL_MT8516) += pinctrl-mt8516.o
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/401-pinctrl-enable-mt7988-pinctrl-config.patch b/target/linux/mediatek/patches-5.4/999-2021-pinctrl-enable-mt7988-pinctrl-config.patch
similarity index 62%
rename from target/linux/mediatek/patches-5.4/401-pinctrl-enable-mt7988-pinctrl-config.patch
rename to target/linux/mediatek/patches-5.4/999-2021-pinctrl-enable-mt7988-pinctrl-config.patch
index 01f01f6..84f0b84 100644
--- a/target/linux/mediatek/patches-5.4/401-pinctrl-enable-mt7988-pinctrl-config.patch
+++ b/target/linux/mediatek/patches-5.4/999-2021-pinctrl-enable-mt7988-pinctrl-config.patch
@@ -1,8 +1,19 @@
+From c0566aeb32196514614c335efb3e280595da99c3 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:04 +0800
+Subject: [PATCH]
+ [basic-part][999-2021-pinctrl-enable-mt7988-pinctrl-config.patch]
+
+---
+ drivers/pinctrl/mediatek/Kconfig | 7 +++++++
+ drivers/pinctrl/mediatek/Makefile | 1 +
+ 2 files changed, 8 insertions(+)
+
diff --git a/drivers/pinctrl/mediatek/Kconfig b/drivers/pinctrl/mediatek/Kconfig
-index e7ec276..b6341dd 100644
+index 9109f911a..a2223dbe0 100644
--- a/drivers/pinctrl/mediatek/Kconfig
+++ b/drivers/pinctrl/mediatek/Kconfig
-@@ -112,6 +112,13 @@ config PINCTRL_MT7986
+@@ -107,6 +107,13 @@ config PINCTRL_MT7986
default ARM64 && ARCH_MEDIATEK
select PINCTRL_MTK_MOORE
@@ -17,14 +28,17 @@
bool "Mediatek MT8173 pin control"
depends on OF
diff --git a/drivers/pinctrl/mediatek/Makefile b/drivers/pinctrl/mediatek/Makefile
-index e6813cf..6e28df9 100644
+index d4085859a..6526efc2c 100644
--- a/drivers/pinctrl/mediatek/Makefile
+++ b/drivers/pinctrl/mediatek/Makefile
-@@ -17,6 +17,7 @@ obj-$(CONFIG_PINCTRL_MT7623) += pinctrl-mt7623.o
+@@ -16,6 +16,7 @@ obj-$(CONFIG_PINCTRL_MT7622) += pinctrl-mt7622.o
+ obj-$(CONFIG_PINCTRL_MT7623) += pinctrl-mt7623.o
obj-$(CONFIG_PINCTRL_MT7629) += pinctrl-mt7629.o
- obj-$(CONFIG_PINCTRL_MT7981) += pinctrl-mt7981.o
obj-$(CONFIG_PINCTRL_MT7986) += pinctrl-mt7986.o
+obj-$(CONFIG_PINCTRL_MT7988) += pinctrl-mt7988.o
obj-$(CONFIG_PINCTRL_MT8173) += pinctrl-mt8173.o
obj-$(CONFIG_PINCTRL_MT8183) += pinctrl-mt8183.o
obj-$(CONFIG_PINCTRL_MT8516) += pinctrl-mt8516.o
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/402-pinctrl-add-mt7981-driver.patch b/target/linux/mediatek/patches-5.4/999-2022-pinctrl-add-mt7981-driver.patch
similarity index 74%
rename from target/linux/mediatek/patches-5.4/402-pinctrl-add-mt7981-driver.patch
rename to target/linux/mediatek/patches-5.4/999-2022-pinctrl-add-mt7981-driver.patch
index 9e67ee7..10f0938 100644
--- a/target/linux/mediatek/patches-5.4/402-pinctrl-add-mt7981-driver.patch
+++ b/target/linux/mediatek/patches-5.4/999-2022-pinctrl-add-mt7981-driver.patch
@@ -1,15 +1,15 @@
-From 1b529849f324edec053a34292e3f874bde8f7401 Mon Sep 17 00:00:00 2001
+From af29af4ab3fb39d3884ea9f7352e672c89093c3b Mon Sep 17 00:00:00 2001
From: Sam Shih <sam.shih@mediatek.com>
-Date: Fri, 25 Jun 2021 15:43:55 +0800
-Subject: [PATCH] Add mt7981 pinctrl driver support
+Date: Fri, 2 Jun 2023 13:06:04 +0800
+Subject: [PATCH] [basic-part][999-2022-pinctrl-add-mt7981-driver.patch]
---
- drivers/pinctrl/mediatek/Kconfig | 7 +++++++
+ drivers/pinctrl/mediatek/Kconfig | 5 +++++
drivers/pinctrl/mediatek/Makefile | 1 +
- 2 files changed, 8 insertions(+)
+ 2 files changed, 6 insertions(+)
diff --git a/drivers/pinctrl/mediatek/Kconfig b/drivers/pinctrl/mediatek/Kconfig
-index 9109f91..d40aee5 100644
+index a2223dbe0..b6341dd83 100644
--- a/drivers/pinctrl/mediatek/Kconfig
+++ b/drivers/pinctrl/mediatek/Kconfig
@@ -100,6 +100,11 @@ config PINCTRL_MT7622
@@ -25,7 +25,7 @@
bool "Mediatek MT7986 pin control"
depends on OF
diff --git a/drivers/pinctrl/mediatek/Makefile b/drivers/pinctrl/mediatek/Makefile
-index d408585..e6813cf 100644
+index 6526efc2c..b80ef66da 100644
--- a/drivers/pinctrl/mediatek/Makefile
+++ b/drivers/pinctrl/mediatek/Makefile
@@ -15,6 +15,7 @@ obj-$(CONFIG_PINCTRL_MT6797) += pinctrl-mt6797.o
@@ -34,8 +34,8 @@
obj-$(CONFIG_PINCTRL_MT7629) += pinctrl-mt7629.o
+obj-$(CONFIG_PINCTRL_MT7981) += pinctrl-mt7981.o
obj-$(CONFIG_PINCTRL_MT7986) += pinctrl-mt7986.o
+ obj-$(CONFIG_PINCTRL_MT7988) += pinctrl-mt7988.o
obj-$(CONFIG_PINCTRL_MT8173) += pinctrl-mt8173.o
- obj-$(CONFIG_PINCTRL_MT8183) += pinctrl-mt8183.o
--
-2.6.4
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/999-2040-powerdomain-add-mt7988-support.patch b/target/linux/mediatek/patches-5.4/999-2040-powerdomain-add-mt7988-support.patch
new file mode 100644
index 0000000..33f4ae6
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2040-powerdomain-add-mt7988-support.patch
@@ -0,0 +1,21 @@
+From c04a931b0f3f8c1af74197ef22a9cbcb96697c9f Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:04 +0800
+Subject: [PATCH] [basic-part][999-2040-powerdomain-add-mt7988-support.patch]
+
+---
+ drivers/soc/mediatek/Makefile | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/soc/mediatek/Makefile b/drivers/soc/mediatek/Makefile
+index b01733074..1c485e3ba 100644
+--- a/drivers/soc/mediatek/Makefile
++++ b/drivers/soc/mediatek/Makefile
+@@ -3,3 +3,4 @@ obj-$(CONFIG_MTK_CMDQ) += mtk-cmdq-helper.o
+ obj-$(CONFIG_MTK_INFRACFG) += mtk-infracfg.o
+ obj-$(CONFIG_MTK_PMIC_WRAP) += mtk-pmic-wrap.o
+ obj-$(CONFIG_MTK_SCPSYS) += mtk-scpsys.o
++obj-$(CONFIG_MTK_SCPSYS) += mtk-pm-domains.o
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0960-watchdog-add-mt7986-assert.patch b/target/linux/mediatek/patches-5.4/999-2050-watchdog-add-mt7986-assert.patch
similarity index 95%
rename from target/linux/mediatek/patches-5.4/0960-watchdog-add-mt7986-assert.patch
rename to target/linux/mediatek/patches-5.4/999-2050-watchdog-add-mt7986-assert.patch
index 619fc10..2b0f938 100644
--- a/target/linux/mediatek/patches-5.4/0960-watchdog-add-mt7986-assert.patch
+++ b/target/linux/mediatek/patches-5.4/999-2050-watchdog-add-mt7986-assert.patch
@@ -1,5 +1,14 @@
+From d02a2cf00764f83a9efdc08685381ee9167b0a9e Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:04 +0800
+Subject: [PATCH] [basic-part][999-2050-watchdog-add-mt7986-assert.patch]
+
+---
+ drivers/watchdog/mtk_wdt.c | 202 +++++++++++++++++++++++++++++++++++--
+ 1 file changed, 193 insertions(+), 9 deletions(-)
+
diff --git a/drivers/watchdog/mtk_wdt.c b/drivers/watchdog/mtk_wdt.c
-index 9c3d003..30127d1 100644
+index 9c3d00332..30127d1e7 100644
--- a/drivers/watchdog/mtk_wdt.c
+++ b/drivers/watchdog/mtk_wdt.c
@@ -9,6 +9,8 @@
@@ -326,3 +335,6 @@
-MODULE_VERSION(DRV_VERSION);
+MODULE_VERSION(DRV_VERSION);
\ No newline at end of file
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0111-mt7986-trng-add-rng-support.patch b/target/linux/mediatek/patches-5.4/999-2100-mt7986-trng-add-rng-support.patch
similarity index 68%
rename from target/linux/mediatek/patches-5.4/0111-mt7986-trng-add-rng-support.patch
rename to target/linux/mediatek/patches-5.4/999-2100-mt7986-trng-add-rng-support.patch
index 1b132a3..bef2e1c 100644
--- a/target/linux/mediatek/patches-5.4/0111-mt7986-trng-add-rng-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2100-mt7986-trng-add-rng-support.patch
@@ -1,18 +1,14 @@
-From 6d4a858d6f7db2a86f6513a543feb8f7b8a8b4c1 Mon Sep 17 00:00:00 2001
-From: "Mingming.Su" <Mingming.Su@mediatek.com>
-Date: Wed, 30 Jun 2021 16:59:32 +0800
-Subject: [PATCH] mt7986: trng: add rng support
+From 28b23dd56546943c99dc4e884576e629b417fb6d Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:05 +0800
+Subject: [PATCH] [slow-speed-io][999-2100-mt7986-trng-add-rng-support.patch]
-1. Add trng compatible name for MT7986
-2. Fix mtk_rng_wait_ready() function
-
-Signed-off-by: Mingming.Su <Mingming.Su@mediatek.com>
---
drivers/char/hw_random/mtk-rng.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/char/hw_random/mtk-rng.c b/drivers/char/hw_random/mtk-rng.c
-index e649be5a5..496adb0a0 100644
+index 6670516fa..a8bd06da7 100644
--- a/drivers/char/hw_random/mtk-rng.c
+++ b/drivers/char/hw_random/mtk-rng.c
@@ -22,7 +22,7 @@
@@ -33,7 +29,7 @@
}
static int mtk_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait)
-@@ -181,6 +181,7 @@ static UNIVERSAL_DEV_PM_OPS(mtk_rng_pm_ops, mtk_rng_runtime_suspend,
+@@ -186,6 +186,7 @@ static const struct dev_pm_ops mtk_rng_pm_ops = {
#endif /* CONFIG_PM */
static const struct of_device_id mtk_rng_match[] = {
@@ -42,5 +38,5 @@
{},
};
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/1661-Add-trngv2-driver-support.patch b/target/linux/mediatek/patches-5.4/999-2101-Add-trngv2-driver-support.patch
similarity index 95%
rename from target/linux/mediatek/patches-5.4/1661-Add-trngv2-driver-support.patch
rename to target/linux/mediatek/patches-5.4/999-2101-Add-trngv2-driver-support.patch
index 7c09a71..2169d20 100644
--- a/target/linux/mediatek/patches-5.4/1661-Add-trngv2-driver-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2101-Add-trngv2-driver-support.patch
@@ -1,7 +1,7 @@
-From ae5611b1b7a857edb3d9c8e900b550c76f7c236e Mon Sep 17 00:00:00 2001
-From: "Mingming.Su" <Mingming.Su@mediatek.com>
-Date: Fri, 17 Dec 2021 20:27:34 +0800
-Subject: [PATCH] Add trngv2 driver support
+From cff177b10455d17fec2c2a412a4f5491af3be315 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:05 +0800
+Subject: [PATCH] [slow-speed-io][999-2101-Add-trngv2-driver-support.patch]
---
drivers/char/hw_random/mtk-rng.c | 105 +++++++++++++++++++++++--------
@@ -181,5 +181,5 @@
};
MODULE_DEVICE_TABLE(of, mtk_rng_match);
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/1662-trng-Add-trng-support-for-mt7988.patch b/target/linux/mediatek/patches-5.4/999-2102-trng-Add-trng-support-for-mt7988.patch
similarity index 77%
rename from target/linux/mediatek/patches-5.4/1662-trng-Add-trng-support-for-mt7988.patch
rename to target/linux/mediatek/patches-5.4/999-2102-trng-Add-trng-support-for-mt7988.patch
index a8f1dfe..80d3df8 100644
--- a/target/linux/mediatek/patches-5.4/1662-trng-Add-trng-support-for-mt7988.patch
+++ b/target/linux/mediatek/patches-5.4/999-2102-trng-Add-trng-support-for-mt7988.patch
@@ -1,11 +1,9 @@
-From cbd37bfc8221c1a81d235ddfb1898536a821c650 Mon Sep 17 00:00:00 2001
-From: "mingming.su" <Mingming.Su@mediatek.com>
-Date: Wed, 7 Sep 2022 15:44:46 +0800
-Subject: [PATCH] trng: Add trng support for mt7988
+From a63382c6164e5c856057a394f53c91cb0d79222f Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:05 +0800
+Subject: [PATCH]
+ [slow-speed-io][999-2102-trng-Add-trng-support-for-mt7988.patch]
-Add trng support for mt7988.
-
-Signed-off-by: mingming.su <Mingming.Su@mediatek.com>
---
drivers/char/hw_random/mtk-rng.c | 5 +++++
1 file changed, 5 insertions(+)
@@ -34,5 +32,5 @@
{},
};
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/9019-drivers-char-tpm-Add-calibration-example-for-SPI-TPM-module.patch b/target/linux/mediatek/patches-5.4/999-2103-drivers-char-tpm-Add-calibration-example-for-SPI-TPM-module.patch
similarity index 74%
rename from target/linux/mediatek/patches-5.4/9019-drivers-char-tpm-Add-calibration-example-for-SPI-TPM-module.patch
rename to target/linux/mediatek/patches-5.4/999-2103-drivers-char-tpm-Add-calibration-example-for-SPI-TPM-module.patch
index 5635f55..47ac32a 100644
--- a/target/linux/mediatek/patches-5.4/9019-drivers-char-tpm-Add-calibration-example-for-SPI-TPM-module.patch
+++ b/target/linux/mediatek/patches-5.4/999-2103-drivers-char-tpm-Add-calibration-example-for-SPI-TPM-module.patch
@@ -1,19 +1,20 @@
-From 6110010f7b88392a3094f2aaec91ee54151cde2a Mon Sep 17 00:00:00 2001
-From: "SkyLake.Huang" <skylake.huang@mediatek.com>
-Date: Thu, 23 Jun 2022 18:43:02 +0800
-Subject: [PATCH] drivers: char: tpm: Add calibration example for SPI TPM
- module
+From daaf90f34aa73625585f56d766e51c7b718bebc3 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:05 +0800
+Subject: [PATCH]
+ [slow-speed-io][999-2103-drivers-char-tpm-Add-calibration-example-for-SPI-TPM-module.patch]
-Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
---
drivers/char/tpm/tpm_tis_core.c | 19 +++++++++++++++++++
drivers/char/tpm/tpm_tis_core.h | 2 ++
drivers/char/tpm/tpm_tis_spi.c | 7 +++++++
3 files changed, 28 insertions(+)
+diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
+index 70f785994..b9898a56d 100644
--- a/drivers/char/tpm/tpm_tis_core.c
+++ b/drivers/char/tpm/tpm_tis_core.c
-@@ -817,6 +817,21 @@ static const struct tpm_class_ops tpm_ti
+@@ -817,6 +817,21 @@ static const struct tpm_class_ops tpm_tis = {
.clk_enable = tpm_tis_clkrun_enable,
};
@@ -35,7 +36,7 @@
int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq,
const struct tpm_tis_phy_ops *phy_ops,
acpi_handle acpi_dev_handle)
-@@ -864,6 +879,10 @@ int tpm_tis_core_init(struct device *dev
+@@ -864,6 +879,10 @@ int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq,
if (chip->ops->clk_enable != NULL)
chip->ops->clk_enable(chip, true);
@@ -46,6 +47,8 @@
if (wait_startup(chip, 0) != 0) {
rc = -ENODEV;
goto out_err;
+diff --git a/drivers/char/tpm/tpm_tis_core.h b/drivers/char/tpm/tpm_tis_core.h
+index 7337819f5..7bb0bc8b6 100644
--- a/drivers/char/tpm/tpm_tis_core.h
+++ b/drivers/char/tpm/tpm_tis_core.h
@@ -106,6 +106,7 @@ struct tpm_tis_phy_ops {
@@ -64,9 +67,11 @@
int tpm_tis_core_init(struct device *dev, struct tpm_tis_data *priv, int irq,
const struct tpm_tis_phy_ops *phy_ops,
acpi_handle acpi_dev_handle);
+diff --git a/drivers/char/tpm/tpm_tis_spi.c b/drivers/char/tpm/tpm_tis_spi.c
+index 19513e622..3be2d53a5 100644
--- a/drivers/char/tpm/tpm_tis_spi.c
+++ b/drivers/char/tpm/tpm_tis_spi.c
-@@ -184,12 +184,19 @@ static int tpm_tis_spi_write32(struct tp
+@@ -184,12 +184,19 @@ static int tpm_tis_spi_write32(struct tpm_tis_data *data, u32 addr, u32 value)
return rc;
}
@@ -86,3 +91,6 @@
};
static int tpm_tis_spi_probe(struct spi_device *dev)
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0900-i2c-busses-add-mt7986-support.patch b/target/linux/mediatek/patches-5.4/999-2110-i2c-busses-add-mt7986-support.patch
similarity index 75%
rename from target/linux/mediatek/patches-5.4/0900-i2c-busses-add-mt7986-support.patch
rename to target/linux/mediatek/patches-5.4/999-2110-i2c-busses-add-mt7986-support.patch
index a375842..e97ff9b 100644
--- a/target/linux/mediatek/patches-5.4/0900-i2c-busses-add-mt7986-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2110-i2c-busses-add-mt7986-support.patch
@@ -1,11 +1,20 @@
+From 64902a41254881d559a2f1e4d2966f16e4a7f98a Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:06 +0800
+Subject: [PATCH] [slow-speed-io][999-2110-i2c-busses-add-mt7986-support.patch]
+
+---
+ drivers/i2c/busses/i2c-mt65xx.c | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
diff --git a/drivers/i2c/busses/i2c-mt65xx.c b/drivers/i2c/busses/i2c-mt65xx.c
-index e1ef012..4fd4721 100644
+index 5587e7c54..14d96c876 100644
--- a/drivers/i2c/busses/i2c-mt65xx.c
+++ b/drivers/i2c/busses/i2c-mt65xx.c
@@ -289,6 +289,19 @@ static const struct mtk_i2c_compatible mt7622_compat = {
.ltiming_adjust = 0,
};
-
+
+static const struct mtk_i2c_compatible mt7986_compat = {
+ .quirks = &mt7622_i2c_quirks,
+ .regs = mt_i2c_regs_v1,
@@ -30,3 +39,6 @@
{ .compatible = "mediatek,mt8173-i2c", .data = &mt8173_compat },
{ .compatible = "mediatek,mt8183-i2c", .data = &mt8183_compat },
{}
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0901-i2c-busses-add-mt7981-support.patch b/target/linux/mediatek/patches-5.4/999-2111-i2c-busses-add-mt7981-support.patch
similarity index 79%
rename from target/linux/mediatek/patches-5.4/0901-i2c-busses-add-mt7981-support.patch
rename to target/linux/mediatek/patches-5.4/999-2111-i2c-busses-add-mt7981-support.patch
index f79d2f8..ba37f4a 100644
--- a/target/linux/mediatek/patches-5.4/0901-i2c-busses-add-mt7981-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2111-i2c-busses-add-mt7981-support.patch
@@ -1,5 +1,14 @@
+From c4ad4b0aa7fb10beb510b99caba9cd027a88a723 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:06 +0800
+Subject: [PATCH] [slow-speed-io][999-2111-i2c-busses-add-mt7981-support.patch]
+
+---
+ drivers/i2c/busses/i2c-mt65xx.c | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
diff --git a/drivers/i2c/busses/i2c-mt65xx.c b/drivers/i2c/busses/i2c-mt65xx.c
-index e1ef012..4fd4721 100644
+index 14d96c876..995e8bbaf 100644
--- a/drivers/i2c/busses/i2c-mt65xx.c
+++ b/drivers/i2c/busses/i2c-mt65xx.c
@@ -157,7 +157,7 @@ static const u16 mt_i2c_regs_v1[] = {
@@ -39,5 +48,5 @@
{ .compatible = "mediatek,mt8173-i2c", .data = &mt8173_compat },
{ .compatible = "mediatek,mt8183-i2c", .data = &mt8183_compat },
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/500-auxadc-add-auxadc-32k-clk.patch b/target/linux/mediatek/patches-5.4/999-2120-auxadc-add-auxadc-32k-clk.patch
similarity index 73%
rename from target/linux/mediatek/patches-5.4/500-auxadc-add-auxadc-32k-clk.patch
rename to target/linux/mediatek/patches-5.4/999-2120-auxadc-add-auxadc-32k-clk.patch
index dc0dd2f..2125916 100644
--- a/target/linux/mediatek/patches-5.4/500-auxadc-add-auxadc-32k-clk.patch
+++ b/target/linux/mediatek/patches-5.4/999-2120-auxadc-add-auxadc-32k-clk.patch
@@ -1,5 +1,14 @@
+From ab1b6a5a856d2ade01ce7f677dc8943ffc476c35 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:06 +0800
+Subject: [PATCH] [slow-speed-io][999-2120-auxadc-add-auxadc-32k-clk.patch]
+
+---
+ drivers/iio/adc/mt6577_auxadc.c | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
diff --git a/drivers/iio/adc/mt6577_auxadc.c b/drivers/iio/adc/mt6577_auxadc.c
-index 2449d91..b8a43eb 100644
+index 9cdb9084c..34f94554f 100644
--- a/drivers/iio/adc/mt6577_auxadc.c
+++ b/drivers/iio/adc/mt6577_auxadc.c
@@ -42,6 +42,7 @@ struct mtk_auxadc_compatible {
@@ -10,7 +19,7 @@
struct mutex lock;
const struct mtk_auxadc_compatible *dev_comp;
};
-@@ -214,6 +215,12 @@ static int __maybe_unused mt6577_auxadc_resume(struct device *dev)
+@@ -222,6 +223,12 @@ static int __maybe_unused mt6577_auxadc_resume(struct device *dev)
return ret;
}
@@ -23,7 +32,7 @@
mt6577_auxadc_mod_reg(adc_dev->reg_base + MT6577_AUXADC_MISC,
MT6577_AUXADC_PDN_EN, 0);
mdelay(MT6577_AUXADC_POWER_READY_MS);
-@@ -228,6 +235,8 @@ static int __maybe_unused mt6577_auxadc_suspend(struct device *dev)
+@@ -236,6 +243,8 @@ static int __maybe_unused mt6577_auxadc_suspend(struct device *dev)
mt6577_auxadc_mod_reg(adc_dev->reg_base + MT6577_AUXADC_MISC,
0, MT6577_AUXADC_PDN_EN);
@@ -32,7 +41,7 @@
clk_disable_unprepare(adc_dev->adc_clk);
return 0;
-@@ -272,6 +281,17 @@ static int mt6577_auxadc_probe(struct platform_device *pdev)
+@@ -280,6 +289,17 @@ static int mt6577_auxadc_probe(struct platform_device *pdev)
return ret;
}
@@ -50,7 +59,7 @@
adc_clk_rate = clk_get_rate(adc_dev->adc_clk);
if (!adc_clk_rate) {
ret = -EINVAL;
-@@ -301,6 +321,7 @@ static int mt6577_auxadc_probe(struct platform_device *pdev)
+@@ -309,6 +329,7 @@ err_power_off:
mt6577_auxadc_mod_reg(adc_dev->reg_base + MT6577_AUXADC_MISC,
0, MT6577_AUXADC_PDN_EN);
err_disable_clk:
@@ -58,7 +67,7 @@
clk_disable_unprepare(adc_dev->adc_clk);
return ret;
}
-@@ -315,6 +336,7 @@ static int mt6577_auxadc_remove(struct platform_device *pdev)
+@@ -323,6 +344,7 @@ static int mt6577_auxadc_remove(struct platform_device *pdev)
mt6577_auxadc_mod_reg(adc_dev->reg_base + MT6577_AUXADC_MISC,
0, MT6577_AUXADC_PDN_EN);
@@ -66,3 +75,6 @@
clk_disable_unprepare(adc_dev->adc_clk);
return 0;
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0930-pwm-add-mt7986-support.patch b/target/linux/mediatek/patches-5.4/999-2130-pwm-add-mt7986-support.patch
similarity index 72%
rename from target/linux/mediatek/patches-5.4/0930-pwm-add-mt7986-support.patch
rename to target/linux/mediatek/patches-5.4/999-2130-pwm-add-mt7986-support.patch
index a791d3a..dac5409 100644
--- a/target/linux/mediatek/patches-5.4/0930-pwm-add-mt7986-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2130-pwm-add-mt7986-support.patch
@@ -1,11 +1,20 @@
+From dcce03b49e8bac8a2c371c24dbcc9a6922861b8a Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:07 +0800
+Subject: [PATCH] [slow-speed-io][999-2130-pwm-add-mt7986-support.patch]
+
+---
+ drivers/pwm/pwm-mediatek.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
diff --git a/drivers/pwm/pwm-mediatek.c b/drivers/pwm/pwm-mediatek.c
-index b94e0d0..35a0db2 100644
+index b94e0d09c..35a0db2ff 100644
--- a/drivers/pwm/pwm-mediatek.c
+++ b/drivers/pwm/pwm-mediatek.c
@@ -302,6 +302,11 @@ static const struct pwm_mediatek_of_data mt7629_pwm_data = {
.pwm45_fixup = false,
};
-
+
+static const struct pwm_mediatek_of_data mt7986_pwm_data = {
+ .num_pwms = 2,
+ .pwm45_fixup = false,
@@ -22,3 +31,6 @@
{ .compatible = "mediatek,mt8516-pwm", .data = &mt8516_pwm_data },
{ },
};
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0931-pwm-add-mt7981-support.patch b/target/linux/mediatek/patches-5.4/999-2131-pwm-add-mt7981-support.patch
similarity index 83%
rename from target/linux/mediatek/patches-5.4/0931-pwm-add-mt7981-support.patch
rename to target/linux/mediatek/patches-5.4/999-2131-pwm-add-mt7981-support.patch
index 0de7966..e137dc4 100644
--- a/target/linux/mediatek/patches-5.4/0931-pwm-add-mt7981-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2131-pwm-add-mt7981-support.patch
@@ -1,8 +1,17 @@
+From c6dc9128df3673041cade417331ad2579e669520 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:07 +0800
+Subject: [PATCH] [slow-speed-io][999-2131-pwm-add-mt7981-support.patch]
+
+---
+ drivers/pwm/pwm-mediatek.c | 51 +++++++++++++++++++++++++++++++++++---
+ 1 file changed, 48 insertions(+), 3 deletions(-)
+
diff --git a/drivers/pwm/pwm-mediatek.c b/drivers/pwm/pwm-mediatek.c
-index 7c56ee2..3a5a456 100644
+index 35a0db2ff..f4393bd46 100644
--- a/drivers/pwm/pwm-mediatek.c
+++ b/drivers/pwm/pwm-mediatek.c
-@@ -33,10 +32,13 @@
+@@ -32,10 +32,13 @@
#define PWM45THRES_FIXUP 0x34
#define PWM_CLK_DIV_MAX 7
@@ -16,7 +25,7 @@
};
/**
-@@ -57,10 +59,14 @@ struct pwm_mediatek_chip {
+@@ -56,10 +59,14 @@ struct pwm_mediatek_chip {
const struct pwm_mediatek_of_data *soc;
};
@@ -32,7 +41,7 @@
static inline struct pwm_mediatek_chip *
to_pwm_mediatek_chip(struct pwm_chip *chip)
{
-@@ -108,14 +114,38 @@ static void pwm_mediatek_clk_disable(struct pwm_chip *chip,
+@@ -107,14 +114,38 @@ static void pwm_mediatek_clk_disable(struct pwm_chip *chip,
static inline u32 pwm_mediatek_readl(struct pwm_mediatek_chip *chip,
unsigned int num, unsigned int offset)
{
@@ -73,7 +82,7 @@
}
static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm,
-@@ -281,36 +311,49 @@ static int pwm_mediatek_remove(struct platform_device *pdev)
+@@ -280,36 +311,49 @@ static int pwm_mediatek_remove(struct platform_device *pdev)
static const struct pwm_mediatek_of_data mt2712_pwm_data = {
.num_pwms = 8,
.pwm45_fixup = false,
@@ -123,7 +132,7 @@
};
static const struct of_device_id pwm_mediatek_of_match[] = {
-@@ -319,6 +362,7 @@ static const struct of_device_id pwm_mediatek_of_match[] = {
+@@ -318,6 +362,7 @@ static const struct of_device_id pwm_mediatek_of_match[] = {
{ .compatible = "mediatek,mt7623-pwm", .data = &mt7623_pwm_data },
{ .compatible = "mediatek,mt7628-pwm", .data = &mt7628_pwm_data },
{ .compatible = "mediatek,mt7629-pwm", .data = &mt7629_pwm_data },
@@ -131,3 +140,6 @@
{ .compatible = "mediatek,mt7986-pwm", .data = &mt7986_pwm_data },
{ .compatible = "mediatek,mt8516-pwm", .data = &mt8516_pwm_data },
{ },
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0932-add-pwm-feature-in-mt7988-project.patch b/target/linux/mediatek/patches-5.4/999-2132-add-pwm-feature-in-mt7988-project.patch
similarity index 70%
rename from target/linux/mediatek/patches-5.4/0932-add-pwm-feature-in-mt7988-project.patch
rename to target/linux/mediatek/patches-5.4/999-2132-add-pwm-feature-in-mt7988-project.patch
index 8268e7d..afa7720 100644
--- a/target/linux/mediatek/patches-5.4/0932-add-pwm-feature-in-mt7988-project.patch
+++ b/target/linux/mediatek/patches-5.4/999-2132-add-pwm-feature-in-mt7988-project.patch
@@ -1,9 +1,19 @@
+From 1ad5b06d70ce07cd377d6a9580b922b1fa68e674 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:07 +0800
+Subject: [PATCH]
+ [slow-speed-io][999-2132-add-pwm-feature-in-mt7988-project.patch]
+
+---
+ drivers/pwm/pwm-mediatek.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
diff --git a/drivers/pwm/pwm-mediatek.c b/drivers/pwm/pwm-mediatek.c
-index 3a5a456..6d6206e 100644
+index f4393bd46..9701092e7 100644
--- a/drivers/pwm/pwm-mediatek.c
+++ b/drivers/pwm/pwm-mediatek.c
@@ -350,6 +350,12 @@ static const struct pwm_mediatek_of_data mt7986_pwm_data = {
- .reg_ver = REG_V2,
+ .reg_ver = REG_V1,
};
+static const struct pwm_mediatek_of_data mt7988_pwm_data = {
@@ -23,3 +33,6 @@
{ .compatible = "mediatek,mt8516-pwm", .data = &mt8516_pwm_data },
{ },
};
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0950-pwm-mediatek-add-longer-period-support.patch b/target/linux/mediatek/patches-5.4/999-2133-pwm-mediatek-add-longer-period-support.patch
similarity index 85%
rename from target/linux/mediatek/patches-5.4/0950-pwm-mediatek-add-longer-period-support.patch
rename to target/linux/mediatek/patches-5.4/999-2133-pwm-mediatek-add-longer-period-support.patch
index 0934ae2..79afa46 100644
--- a/target/linux/mediatek/patches-5.4/0950-pwm-mediatek-add-longer-period-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2133-pwm-mediatek-add-longer-period-support.patch
@@ -1,5 +1,15 @@
+From 58d5a373d2d42b5292c1c2242133bcf0b082c6e0 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:07 +0800
+Subject: [PATCH]
+ [slow-speed-io][999-2133-pwm-mediatek-add-longer-period-support.patch]
+
+---
+ drivers/pwm/pwm-mediatek.c | 34 ++++++++++++++++++++++++++++++----
+ 1 file changed, 30 insertions(+), 4 deletions(-)
+
diff --git a/drivers/pwm/pwm-mediatek.c b/drivers/pwm/pwm-mediatek.c
-index 9701092..79d15a9 100644
+index 9701092e7..79d15a9c0 100644
--- a/drivers/pwm/pwm-mediatek.c
+++ b/drivers/pwm/pwm-mediatek.c
@@ -152,8 +152,11 @@ static int pwm_mediatek_config(struct pwm_chip *chip, struct pwm_device *pwm,
@@ -63,3 +73,6 @@
pwm_mediatek_writel(pc, pwm->hwpwm, reg_width, cnt_period);
pwm_mediatek_writel(pc, pwm->hwpwm, reg_thres, cnt_duty);
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/6001-mtk-thermal-add-lvts-support.patch b/target/linux/mediatek/patches-5.4/999-2140-mtk-thermal-add-lvts-support.patch
similarity index 71%
rename from target/linux/mediatek/patches-5.4/6001-mtk-thermal-add-lvts-support.patch
rename to target/linux/mediatek/patches-5.4/999-2140-mtk-thermal-add-lvts-support.patch
index 1591144..a9ca6d7 100644
--- a/target/linux/mediatek/patches-5.4/6001-mtk-thermal-add-lvts-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2140-mtk-thermal-add-lvts-support.patch
@@ -1,5 +1,15 @@
+From 23c38736374866e0f1423dde94ac6e80eb644132 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:08 +0800
+Subject: [PATCH] [slow-speed-io][999-2140-mtk-thermal-add-lvts-support.patch]
+
+---
+ drivers/thermal/Kconfig | 5 +++++
+ drivers/thermal/Makefile | 1 +
+ 2 files changed, 6 insertions(+)
+
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
-index 001a21ab..67d3da48 100644
+index 001a21abc..67d3da488 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -348,6 +348,11 @@ config MTK_THERMAL
@@ -15,7 +25,7 @@
depends on X86 || X86_INTEL_QUARK || COMPILE_TEST
source "drivers/thermal/intel/Kconfig"
diff --git a/drivers/thermal/Makefile b/drivers/thermal/Makefile
-index 74a37c7f..6be9ff19 100644
+index 74a37c7f8..6be9ff194 100644
--- a/drivers/thermal/Makefile
+++ b/drivers/thermal/Makefile
@@ -51,6 +51,7 @@ obj-$(CONFIG_QCOM_TSENS) += qcom/
@@ -26,3 +36,6 @@
obj-$(CONFIG_GENERIC_ADC_THERMAL) += thermal-generic-adc.o
obj-$(CONFIG_ZX2967_THERMAL) += zx2967_thermal.o
obj-$(CONFIG_UNIPHIER_THERMAL) += uniphier_thermal.o
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0400-sound-add-some-helpers-to-control-mtk_memif.patch b/target/linux/mediatek/patches-5.4/999-2150-sound-add-some-helpers-to-control-mtk_memif.patch
similarity index 87%
rename from target/linux/mediatek/patches-5.4/0400-sound-add-some-helpers-to-control-mtk_memif.patch
rename to target/linux/mediatek/patches-5.4/999-2150-sound-add-some-helpers-to-control-mtk_memif.patch
index ddeb5a4..85c5ceb 100644
--- a/target/linux/mediatek/patches-5.4/0400-sound-add-some-helpers-to-control-mtk_memif.patch
+++ b/target/linux/mediatek/patches-5.4/999-2150-sound-add-some-helpers-to-control-mtk_memif.patch
@@ -1,6 +1,20 @@
+From 21c1013ecce400652b42489935190df542c9fa4b Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:08 +0800
+Subject: [PATCH]
+ [slow-speed-io][999-2150-sound-add-some-helpers-to-control-mtk_memif.patch]
+
+---
+ sound/soc/mediatek/common/mtk-afe-fe-dai.c | 216 +++++++++++++++++++++
+ sound/soc/mediatek/common/mtk-afe-fe-dai.h | 16 ++
+ sound/soc/mediatek/common/mtk-base-afe.h | 28 ++-
+ 3 files changed, 259 insertions(+), 1 deletion(-)
+
+diff --git a/sound/soc/mediatek/common/mtk-afe-fe-dai.c b/sound/soc/mediatek/common/mtk-afe-fe-dai.c
+index 10ea4fdbe..309dc1ef6 100644
--- a/sound/soc/mediatek/common/mtk-afe-fe-dai.c
+++ b/sound/soc/mediatek/common/mtk-afe-fe-dai.c
-@@ -361,6 +361,222 @@
+@@ -361,6 +361,222 @@ int mtk_afe_dai_resume(struct snd_soc_dai *dai)
}
EXPORT_SYMBOL_GPL(mtk_afe_dai_resume);
@@ -223,9 +237,11 @@
MODULE_DESCRIPTION("Mediatek simple fe dai operator");
MODULE_AUTHOR("Garlic Tseng <garlic.tseng@mediatek.com>");
MODULE_LICENSE("GPL v2");
+diff --git a/sound/soc/mediatek/common/mtk-afe-fe-dai.h b/sound/soc/mediatek/common/mtk-afe-fe-dai.h
+index 55074fb98..507e3e7c3 100644
--- a/sound/soc/mediatek/common/mtk-afe-fe-dai.h
+++ b/sound/soc/mediatek/common/mtk-afe-fe-dai.h
-@@ -34,4 +34,20 @@
+@@ -34,4 +34,20 @@ int mtk_dynamic_irq_release(struct mtk_base_afe *afe, int irq_id);
int mtk_afe_dai_suspend(struct snd_soc_dai *dai);
int mtk_afe_dai_resume(struct snd_soc_dai *dai);
@@ -246,9 +262,11 @@
+int mtk_memif_set_pbuf_size(struct mtk_base_afe *afe,
+ int id, int pbuf_size);
#endif
+diff --git a/sound/soc/mediatek/common/mtk-base-afe.h b/sound/soc/mediatek/common/mtk-base-afe.h
+index 60cb609a9..a8cf44d98 100644
--- a/sound/soc/mediatek/common/mtk-base-afe.h
+++ b/sound/soc/mediatek/common/mtk-base-afe.h
-@@ -16,21 +16,38 @@
+@@ -16,21 +16,38 @@ struct mtk_base_memif_data {
const char *name;
int reg_ofs_base;
int reg_ofs_cur;
@@ -288,7 +306,7 @@
};
struct mtk_base_irq_data {
-@@ -84,6 +101,12 @@
+@@ -84,6 +101,12 @@ struct mtk_base_afe {
unsigned int rate);
int (*irq_fs)(struct snd_pcm_substream *substream,
unsigned int rate);
@@ -301,7 +319,7 @@
void *platform_priv;
};
-@@ -95,6 +118,9 @@
+@@ -95,6 +118,9 @@ struct mtk_base_afe_memif {
const struct mtk_base_memif_data *data;
int irq_usage;
int const_irq;
@@ -311,3 +329,6 @@
};
struct mtk_base_afe_irq {
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0401-sound-refine-hw-params-and-hw-prepare.patch b/target/linux/mediatek/patches-5.4/999-2151-sound-refine-hw-params-and-hw-prepare.patch
similarity index 87%
rename from target/linux/mediatek/patches-5.4/0401-sound-refine-hw-params-and-hw-prepare.patch
rename to target/linux/mediatek/patches-5.4/999-2151-sound-refine-hw-params-and-hw-prepare.patch
index 3e24d51..f097f4a 100644
--- a/target/linux/mediatek/patches-5.4/0401-sound-refine-hw-params-and-hw-prepare.patch
+++ b/target/linux/mediatek/patches-5.4/999-2151-sound-refine-hw-params-and-hw-prepare.patch
@@ -1,3 +1,15 @@
+From 35cc92b8996980021f881a202b8e1233ca41eb0d Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:08 +0800
+Subject: [PATCH]
+ [slow-speed-io][999-2151-sound-refine-hw-params-and-hw-prepare.patch]
+
+---
+ sound/soc/mediatek/common/mtk-afe-fe-dai.c | 143 +++++++++++----------
+ 1 file changed, 77 insertions(+), 66 deletions(-)
+
+diff --git a/sound/soc/mediatek/common/mtk-afe-fe-dai.c b/sound/soc/mediatek/common/mtk-afe-fe-dai.c
+index 309dc1ef6..e761cb66b 100644
--- a/sound/soc/mediatek/common/mtk-afe-fe-dai.c
+++ b/sound/soc/mediatek/common/mtk-afe-fe-dai.c
@@ -6,11 +6,13 @@
@@ -14,7 +26,7 @@
#include "mtk-afe-fe-dai.h"
#include "mtk-base-afe.h"
-@@ -120,50 +122,64 @@
+@@ -120,50 +122,64 @@ int mtk_afe_fe_hw_params(struct snd_pcm_substream *substream,
{
struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
@@ -49,10 +61,7 @@
- 1, msb_at_bit33, memif->data->msb_shift);
+ if (afe->request_dram_resource)
+ afe->request_dram_resource(afe->dev);
-
-- /* set channel */
-- if (memif->data->mono_shift >= 0) {
-- unsigned int mono = (params_channels(params) == 1) ? 1 : 0;
++
+ dev_dbg(afe->dev, "%s(), %s, ch %d, rate %d, fmt %d, dma_addr %pad, dma_area %p, dma_bytes 0x%zx\n",
+ __func__, memif->data->name,
+ channels, rate, format,
@@ -74,9 +83,12 @@
+ return ret;
+ }
+ /* set channel */
+- if (memif->data->mono_shift >= 0) {
+- unsigned int mono = (params_channels(params) == 1) ? 1 : 0;
+-
- mtk_regmap_update_bits(afe->regmap, memif->data->mono_reg,
- 1, mono, memif->data->mono_shift);
-+ /* set channel */
+ ret = mtk_memif_set_channel(afe, id, channels);
+ if (ret) {
+ dev_err(afe->dev, "%s(), error, id %d, set channel %d, ret %d\n",
@@ -112,7 +124,7 @@
return 0;
}
-@@ -172,6 +188,11 @@
+@@ -172,6 +188,11 @@ EXPORT_SYMBOL_GPL(mtk_afe_fe_hw_params);
int mtk_afe_fe_hw_free(struct snd_pcm_substream *substream,
struct snd_soc_dai *dai)
{
@@ -124,7 +136,7 @@
return snd_pcm_lib_free_pages(substream);
}
EXPORT_SYMBOL_GPL(mtk_afe_fe_hw_free);
-@@ -182,20 +203,25 @@
+@@ -182,20 +203,25 @@ int mtk_afe_fe_trigger(struct snd_pcm_substream *substream, int cmd,
struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct snd_pcm_runtime * const runtime = substream->runtime;
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
@@ -154,7 +166,7 @@
/* set irq counter */
mtk_regmap_update_bits(afe->regmap, irq_data->irq_cnt_reg,
-@@ -219,15 +245,19 @@
+@@ -219,15 +245,19 @@ int mtk_afe_fe_trigger(struct snd_pcm_substream *substream, int cmd,
return 0;
case SNDRV_PCM_TRIGGER_STOP:
case SNDRV_PCM_TRIGGER_SUSPEND:
@@ -177,7 +189,7 @@
default:
return -EINVAL;
}
-@@ -239,34 +269,15 @@
+@@ -239,34 +269,15 @@ int mtk_afe_fe_prepare(struct snd_pcm_substream *substream,
{
struct snd_soc_pcm_runtime *rtd = substream->private_data;
struct mtk_base_afe *afe = snd_soc_dai_get_drvdata(dai);
@@ -219,3 +231,6 @@
return 0;
}
EXPORT_SYMBOL_GPL(mtk_afe_fe_prepare);
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0402-sound-add-mt7986-driver.patch b/target/linux/mediatek/patches-5.4/999-2152-sound-add-mt7986-driver.patch
similarity index 70%
rename from target/linux/mediatek/patches-5.4/0402-sound-add-mt7986-driver.patch
rename to target/linux/mediatek/patches-5.4/999-2152-sound-add-mt7986-driver.patch
index 973f565..41eb05e 100644
--- a/target/linux/mediatek/patches-5.4/0402-sound-add-mt7986-driver.patch
+++ b/target/linux/mediatek/patches-5.4/999-2152-sound-add-mt7986-driver.patch
@@ -1,6 +1,18 @@
+From 593cfdef7ef160c49db5c7ae315cb963f32a947a Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:08 +0800
+Subject: [PATCH] [slow-speed-io][999-2152-sound-add-mt7986-driver.patch]
+
+---
+ sound/soc/mediatek/Kconfig | 30 ++++++++++++++++++++++++++++++
+ sound/soc/mediatek/Makefile | 1 +
+ 2 files changed, 31 insertions(+)
+
+diff --git a/sound/soc/mediatek/Kconfig b/sound/soc/mediatek/Kconfig
+index 111e44b64..25e392428 100644
--- a/sound/soc/mediatek/Kconfig
+++ b/sound/soc/mediatek/Kconfig
-@@ -53,6 +53,36 @@
+@@ -53,6 +53,36 @@ config SND_SOC_MT6797_MT6351
Select Y if you have such device.
If unsure select "N".
@@ -37,6 +49,8 @@
config SND_SOC_MT8173
tristate "ASoC support for Mediatek MT8173 chip"
depends on ARCH_MEDIATEK
+diff --git a/sound/soc/mediatek/Makefile b/sound/soc/mediatek/Makefile
+index 76032cae6..9690326b2 100644
--- a/sound/soc/mediatek/Makefile
+++ b/sound/soc/mediatek/Makefile
@@ -2,5 +2,6 @@
@@ -46,3 +60,6 @@
+obj-$(CONFIG_SND_SOC_MT79XX) += mt79xx/
obj-$(CONFIG_SND_SOC_MT8173) += mt8173/
obj-$(CONFIG_SND_SOC_MT8183) += mt8183/
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0801-mtk-sd-add-mt7986-support.patch b/target/linux/mediatek/patches-5.4/999-2300-mtk-sd-add-mt7986-support.patch
similarity index 60%
rename from target/linux/mediatek/patches-5.4/0801-mtk-sd-add-mt7986-support.patch
rename to target/linux/mediatek/patches-5.4/999-2300-mtk-sd-add-mt7986-support.patch
index 6b76993..5a36ab0 100644
--- a/target/linux/mediatek/patches-5.4/0801-mtk-sd-add-mt7986-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2300-mtk-sd-add-mt7986-support.patch
@@ -1,6 +1,17 @@
+From b4ad228b3e415f980932a2200d93b56f135e6bc8 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:09 +0800
+Subject: [PATCH] [spi-and-storage][999-2300-mtk-sd-add-mt7986-support.patch]
+
+---
+ drivers/mmc/host/mtk-sd.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
+index 1254a5650..b25e8567f 100644
--- a/drivers/mmc/host/mtk-sd.c
+++ b/drivers/mmc/host/mtk-sd.c
-@@ -508,6 +508,18 @@ static const struct mtk_mmc_compatible m
+@@ -508,6 +508,18 @@ static const struct mtk_mmc_compatible mt7622_compat = {
.support_64g = false,
};
@@ -19,7 +30,7 @@
static const struct mtk_mmc_compatible mt8516_compat = {
.clk_div_bits = 12,
.hs400_tune = false,
-@@ -537,6 +549,7 @@ static const struct of_device_id msdc_of
+@@ -537,6 +549,7 @@ static const struct of_device_id msdc_of_ids[] = {
{ .compatible = "mediatek,mt2701-mmc", .data = &mt2701_compat},
{ .compatible = "mediatek,mt2712-mmc", .data = &mt2712_compat},
{ .compatible = "mediatek,mt7622-mmc", .data = &mt7622_compat},
@@ -27,3 +38,6 @@
{ .compatible = "mediatek,mt8516-mmc", .data = &mt8516_compat},
{ .compatible = "mediatek,mt7620-mmc", .data = &mt7620_compat},
{}
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0802-mtk-sd-Add-subsys-clock-control.patch b/target/linux/mediatek/patches-5.4/999-2301-mtk-sd-Add-subsys-clock-control.patch
similarity index 81%
rename from target/linux/mediatek/patches-5.4/0802-mtk-sd-Add-subsys-clock-control.patch
rename to target/linux/mediatek/patches-5.4/999-2301-mtk-sd-Add-subsys-clock-control.patch
index 8732cef..9ac8a25 100644
--- a/target/linux/mediatek/patches-5.4/0802-mtk-sd-Add-subsys-clock-control.patch
+++ b/target/linux/mediatek/patches-5.4/999-2301-mtk-sd-Add-subsys-clock-control.patch
@@ -1,3 +1,15 @@
+From 80d83b8abe9bc8878ba7a40b4e399b8ea2ff8ad2 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:09 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2301-mtk-sd-Add-subsys-clock-control.patch]
+
+---
+ drivers/mmc/host/mtk-sd.c | 76 +++++++++++++++++++++++++++++----------
+ 1 file changed, 58 insertions(+), 18 deletions(-)
+
+diff --git a/drivers/mmc/host/mtk-sd.c b/drivers/mmc/host/mtk-sd.c
+index b25e8567f..ef344a4bd 100644
--- a/drivers/mmc/host/mtk-sd.c
+++ b/drivers/mmc/host/mtk-sd.c
@@ -33,6 +33,7 @@
@@ -17,7 +29,7 @@
u32 mclk; /* mmc subsystem clock frequency */
u32 src_clk_freq; /* source clock frequency */
unsigned char timing;
-@@ -745,6 +748,7 @@ static void msdc_set_timeout(struct msdc
+@@ -745,6 +748,7 @@ static void msdc_set_timeout(struct msdc_host *host, u32 ns, u32 clks)
static void msdc_gate_clock(struct msdc_host *host)
{
@@ -25,7 +37,7 @@
clk_disable_unprepare(host->src_clk_cg);
clk_disable_unprepare(host->src_clk);
clk_disable_unprepare(host->bus_clk);
-@@ -753,10 +757,18 @@ static void msdc_gate_clock(struct msdc_
+@@ -753,10 +757,18 @@ static void msdc_gate_clock(struct msdc_host *host)
static void msdc_ungate_clock(struct msdc_host *host)
{
@@ -44,7 +56,7 @@
while (!(readl(host->base + MSDC_CFG) & MSDC_CFG_CKSTB))
cpu_relax();
}
-@@ -2195,6 +2207,50 @@ static void msdc_of_property_parse(struc
+@@ -2195,6 +2207,50 @@ static void msdc_of_property_parse(struct platform_device *pdev,
host->hs400_cmd_resp_sel_rising = false;
}
@@ -95,7 +107,7 @@
static int msdc_drv_probe(struct platform_device *pdev)
{
struct mmc_host *mmc;
-@@ -2235,25 +2291,9 @@ static int msdc_drv_probe(struct platfor
+@@ -2235,25 +2291,9 @@ static int msdc_drv_probe(struct platform_device *pdev)
if (ret)
goto host_free;
@@ -123,3 +135,6 @@
host->reset = devm_reset_control_get_optional_exclusive(&pdev->dev,
"hrst");
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0490-mtd-spinand-winbond-Support-for-W25MxxGV-W25NxxKV-series.patch b/target/linux/mediatek/patches-5.4/999-2330-mtd-spinand-winbond-Support-for-W25MxxGV-W25NxxKV-series.patch
similarity index 86%
rename from target/linux/mediatek/patches-5.4/0490-mtd-spinand-winbond-Support-for-W25MxxGV-W25NxxKV-series.patch
rename to target/linux/mediatek/patches-5.4/999-2330-mtd-spinand-winbond-Support-for-W25MxxGV-W25NxxKV-series.patch
index 6d2a4b8..42467b6 100644
--- a/target/linux/mediatek/patches-5.4/0490-mtd-spinand-winbond-Support-for-W25MxxGV-W25NxxKV-series.patch
+++ b/target/linux/mediatek/patches-5.4/999-2330-mtd-spinand-winbond-Support-for-W25MxxGV-W25NxxKV-series.patch
@@ -1,3 +1,15 @@
+From 2c71a01b9363f44ca077ec0e27b6a06a15617497 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:14 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2330-mtd-spinand-winbond-Support-for-W25MxxGV-W25NxxKV-series.patch]
+
+---
+ drivers/mtd/nand/spi/winbond.c | 129 ++++++++++++++++++++++++++++++++-
+ 1 file changed, 127 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/mtd/nand/spi/winbond.c b/drivers/mtd/nand/spi/winbond.c
+index 766844283..6473b0367 100644
--- a/drivers/mtd/nand/spi/winbond.c
+++ b/drivers/mtd/nand/spi/winbond.c
@@ -15,6 +15,23 @@
@@ -24,7 +36,7 @@
static SPINAND_OP_VARIANTS(read_cache_variants,
SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
-@@ -31,6 +48,29 @@ static SPINAND_OP_VARIANTS(update_cache_
+@@ -31,6 +48,29 @@ static SPINAND_OP_VARIANTS(update_cache_variants,
SPINAND_PROG_LOAD_X4(false, 0, NULL, 0),
SPINAND_PROG_LOAD(false, 0, NULL, 0));
@@ -54,7 +66,7 @@
static int w25m02gv_ooblayout_ecc(struct mtd_info *mtd, int section,
struct mtd_oob_region *region)
{
-@@ -74,9 +114,61 @@ static int w25m02gv_select_target(struct
+@@ -74,9 +114,61 @@ static int w25m02gv_select_target(struct spinand_device *spinand,
return spi_mem_exec_op(spinand->spimem, &op);
}
@@ -117,7 +129,7 @@
NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 2),
NAND_ECCREQ(1, 512),
SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
-@@ -85,8 +177,18 @@ static const struct spinand_info winbond
+@@ -85,8 +177,18 @@ static const struct spinand_info winbond_spinand_table[] = {
0,
SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL),
SPINAND_SELECT_TARGET(w25m02gv_select_target)),
@@ -137,7 +149,7 @@
NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
NAND_ECCREQ(1, 512),
SPINAND_INFO_OP_VARIANTS(&read_cache_variants,
-@@ -94,6 +196,29 @@ static const struct spinand_info winbond
+@@ -94,6 +196,29 @@ static const struct spinand_info winbond_spinand_table[] = {
&update_cache_variants),
0,
SPINAND_ECCINFO(&w25m02gv_ooblayout, NULL)),
@@ -167,3 +179,6 @@
};
static int winbond_spinand_init(struct spinand_device *spinand)
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2331-mtd-spinand-macronix-suppress-mx35lf1ge4ab-warning-log.patch b/target/linux/mediatek/patches-5.4/999-2331-mtd-spinand-macronix-suppress-mx35lf1ge4ab-warning-log.patch
new file mode 100644
index 0000000..b19492b
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2331-mtd-spinand-macronix-suppress-mx35lf1ge4ab-warning-log.patch
@@ -0,0 +1,26 @@
+From 6d8d4dc76ac31cfdecef99c72aad6a65f963d4a0 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:14 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2331-mtd-spinand-macronix-suppress-mx35lf1ge4ab-warning-log.patch]
+
+---
+ drivers/mtd/nand/spi/macronix.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/mtd/nand/spi/macronix.c b/drivers/mtd/nand/spi/macronix.c
+index 25319b4f8..d3ae24ecc 100644
+--- a/drivers/mtd/nand/spi/macronix.c
++++ b/drivers/mtd/nand/spi/macronix.c
+@@ -86,7 +86,7 @@ static int mx35lf1ge4ab_ecc_get_status(struct spinand_device *spinand,
+ if (mx35lf1ge4ab_get_eccsr(spinand, &eccsr))
+ return nand->eccreq.strength;
+
+- if (WARN_ON(eccsr > nand->eccreq.strength || !eccsr))
++ if (eccsr > nand->eccreq.strength || !eccsr)
+ return nand->eccreq.strength;
+
+ return eccsr;
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2332-mtd-add-mtk-snand-driver.patch b/target/linux/mediatek/patches-5.4/999-2332-mtd-add-mtk-snand-driver.patch
new file mode 100644
index 0000000..a020a2f
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2332-mtd-add-mtk-snand-driver.patch
@@ -0,0 +1,38 @@
+From 6fa8802185f08391dd3eb6e0609268e1108a7f57 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:15 +0800
+Subject: [PATCH] [spi-and-storage][999-2332-mtd-add-mtk-snand-driver.patch]
+
+---
+ drivers/mtd/Kconfig | 2 ++
+ drivers/mtd/Makefile | 2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/drivers/mtd/Kconfig b/drivers/mtd/Kconfig
+index 3ed42b402..4b6f9d851 100644
+--- a/drivers/mtd/Kconfig
++++ b/drivers/mtd/Kconfig
+@@ -230,6 +230,8 @@ source "drivers/mtd/hyperbus/Kconfig"
+
+ source "drivers/mtd/nmbm/Kconfig"
+
++source "drivers/mtd/mtk-snand/Kconfig"
++
+ source "drivers/mtd/composite/Kconfig"
+
+ endif # MTD
+diff --git a/drivers/mtd/Makefile b/drivers/mtd/Makefile
+index f27f66784..df786f994 100644
+--- a/drivers/mtd/Makefile
++++ b/drivers/mtd/Makefile
+@@ -35,5 +35,7 @@ obj-$(CONFIG_MTD_HYPERBUS) += hyperbus/
+
+ obj-y += nmbm/
+
++obj-$(CONFIG_MTK_SPI_NAND) += mtk-snand/
++
+ # Composite drivers must be loaded last
+ obj-y += composite/
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/412-mtd-spinand-gigadevice-Add-support-for-F50L1G41LB-and-GD5F1GQ5UExxG.patch b/target/linux/mediatek/patches-5.4/999-2333-mtd-spinand-gigadevice-Add-support-for-F50L1G41LB-and-GD5F1GQ5UExxG.patch
similarity index 70%
rename from target/linux/mediatek/patches-5.4/412-mtd-spinand-gigadevice-Add-support-for-F50L1G41LB-and-GD5F1GQ5UExxG.patch
rename to target/linux/mediatek/patches-5.4/999-2333-mtd-spinand-gigadevice-Add-support-for-F50L1G41LB-and-GD5F1GQ5UExxG.patch
index 32bce58..d37dd56 100644
--- a/target/linux/mediatek/patches-5.4/412-mtd-spinand-gigadevice-Add-support-for-F50L1G41LB-and-GD5F1GQ5UExxG.patch
+++ b/target/linux/mediatek/patches-5.4/999-2333-mtd-spinand-gigadevice-Add-support-for-F50L1G41LB-and-GD5F1GQ5UExxG.patch
@@ -1,6 +1,18 @@
+From 39ee4e9fb5fd3ce678223147df9d9bef0ce822cd Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:15 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2333-mtd-spinand-gigadevice-Add-support-for-F50L1G41LB-and-GD5F1GQ5UExxG.patch]
+
+---
+ drivers/mtd/nand/spi/gigadevice.c | 21 ++++++++++++++++++++-
+ 1 file changed, 20 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/mtd/nand/spi/gigadevice.c b/drivers/mtd/nand/spi/gigadevice.c
+index 937a04ce6..ce88f0c91 100644
--- a/drivers/mtd/nand/spi/gigadevice.c
+++ b/drivers/mtd/nand/spi/gigadevice.c
-@@ -39,6 +39,15 @@ static SPINAND_OP_VARIANTS(read_cache_va
+@@ -39,6 +39,15 @@ static SPINAND_OP_VARIANTS(read_cache_variants_f,
SPINAND_PAGE_READ_FROM_CACHE_OP_3A(true, 0, 1, NULL, 0),
SPINAND_PAGE_READ_FROM_CACHE_OP_3A(false, 0, 0, NULL, 0));
@@ -16,7 +28,7 @@
static SPINAND_OP_VARIANTS(write_cache_variants,
SPINAND_PROG_LOAD_X4(true, 0, NULL, 0),
SPINAND_PROG_LOAD(true, 0, NULL, 0));
-@@ -265,6 +274,16 @@ static int gd5fxgq4ufxxg_ecc_get_status(
+@@ -236,6 +245,16 @@ static int gd5fxgq4ufxxg_ecc_get_status(struct spinand_device *spinand,
}
static const struct spinand_info gigadevice_spinand_table[] = {
@@ -33,7 +45,7 @@
SPINAND_INFO("GD5F1GQ4xA",
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xf1),
NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
-@@ -337,7 +356,7 @@ static const struct spinand_info gigadev
+@@ -290,7 +309,7 @@ static const struct spinand_info gigadevice_spinand_table[] = {
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x51),
NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
NAND_ECCREQ(4, 512),
@@ -42,3 +54,6 @@
&write_cache_variants,
&update_cache_variants),
SPINAND_HAS_QE_BIT,
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/413-mtd-spinand-gigadevice-Add-support-for-GD5FxGQxUExxG-GD5FxGQxUExxH-and-GD5FxGMxUExxG-series.patch b/target/linux/mediatek/patches-5.4/999-2334-mtd-spinand-gigadevice-Add-support-for-GD5FxGQxUExxG-GD5FxGQxUExxH-and-GD5FxGMxUExxG-series.patch
similarity index 86%
rename from target/linux/mediatek/patches-5.4/413-mtd-spinand-gigadevice-Add-support-for-GD5FxGQxUExxG-GD5FxGQxUExxH-and-GD5FxGMxUExxG-series.patch
rename to target/linux/mediatek/patches-5.4/999-2334-mtd-spinand-gigadevice-Add-support-for-GD5FxGQxUExxG-GD5FxGQxUExxH-and-GD5FxGMxUExxG-series.patch
index 83e4c71..c609bd7 100644
--- a/target/linux/mediatek/patches-5.4/413-mtd-spinand-gigadevice-Add-support-for-GD5FxGQxUExxG-GD5FxGQxUExxH-and-GD5FxGMxUExxG-series.patch
+++ b/target/linux/mediatek/patches-5.4/999-2334-mtd-spinand-gigadevice-Add-support-for-GD5FxGQxUExxG-GD5FxGQxUExxH-and-GD5FxGMxUExxG-series.patch
@@ -1,6 +1,18 @@
+From b8ffe42101eb8abfb6530396e0c74a85b43eed44 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:15 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2334-mtd-spinand-gigadevice-Add-support-for-GD5FxGQxUExxG-GD5FxGQxUExxH-and-GD5FxGMxUExxG-series.patch]
+
+---
+ drivers/mtd/nand/spi/gigadevice.c | 98 +++++++++++++++++++++++++++++--
+ 1 file changed, 94 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/mtd/nand/spi/gigadevice.c b/drivers/mtd/nand/spi/gigadevice.c
+index ce88f0c91..a4e89529d 100644
--- a/drivers/mtd/nand/spi/gigadevice.c
+++ b/drivers/mtd/nand/spi/gigadevice.c
-@@ -39,8 +39,9 @@ static SPINAND_OP_VARIANTS(read_cache_va
+@@ -39,8 +39,9 @@ static SPINAND_OP_VARIANTS(read_cache_variants_f,
SPINAND_PAGE_READ_FROM_CACHE_OP_3A(true, 0, 1, NULL, 0),
SPINAND_PAGE_READ_FROM_CACHE_OP_3A(false, 0, 0, NULL, 0));
@@ -12,7 +24,7 @@
SPINAND_PAGE_READ_FROM_CACHE_QUADIO_OP(0, 2, NULL, 0),
SPINAND_PAGE_READ_FROM_CACHE_X4_OP(0, 1, NULL, 0),
SPINAND_PAGE_READ_FROM_CACHE_DUALIO_OP(0, 1, NULL, 0),
-@@ -48,6 +49,15 @@ static SPINAND_OP_VARIANTS(gd5f1gq5_read
+@@ -48,6 +49,15 @@ static SPINAND_OP_VARIANTS(gd5f1gq5_read_cache_variants,
SPINAND_PAGE_READ_FROM_CACHE_OP(true, 0, 1, NULL, 0),
SPINAND_PAGE_READ_FROM_CACHE_OP(false, 0, 1, NULL, 0));
@@ -28,7 +40,7 @@
static SPINAND_OP_VARIANTS(write_cache_variants,
SPINAND_PROG_LOAD_X4(true, 0, NULL, 0),
SPINAND_PROG_LOAD(true, 0, NULL, 0));
-@@ -249,7 +259,7 @@ static const struct spinand_info gigadev
+@@ -249,7 +259,7 @@ static const struct spinand_info gigadevice_spinand_table[] = {
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0x01),
NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
NAND_ECCREQ(8, 512),
@@ -37,7 +49,7 @@
&write_cache_variants,
&update_cache_variants),
0,
-@@ -309,7 +319,87 @@ static const struct spinand_info gigadev
+@@ -309,7 +319,87 @@ static const struct spinand_info gigadevice_spinand_table[] = {
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x51),
NAND_MEMORG(1, 2048, 128, 64, 1024, 20, 1, 1, 1),
NAND_ECCREQ(4, 512),
@@ -126,3 +138,6 @@
&write_cache_variants,
&update_cache_variants),
SPINAND_HAS_QE_BIT,
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/414-mtd-spinand-fix-gigadevice-read-dummy.patch b/target/linux/mediatek/patches-5.4/999-2335-mtd-spinand-fix-gigadevice-read-dummy.patch
similarity index 68%
rename from target/linux/mediatek/patches-5.4/414-mtd-spinand-fix-gigadevice-read-dummy.patch
rename to target/linux/mediatek/patches-5.4/999-2335-mtd-spinand-fix-gigadevice-read-dummy.patch
index 5c5af56..977c65c 100644
--- a/target/linux/mediatek/patches-5.4/414-mtd-spinand-fix-gigadevice-read-dummy.patch
+++ b/target/linux/mediatek/patches-5.4/999-2335-mtd-spinand-fix-gigadevice-read-dummy.patch
@@ -1,6 +1,18 @@
+From be41be0e740933fa976ad2990b94ef1e62542a8e Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:15 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2335-mtd-spinand-fix-gigadevice-read-dummy.patch]
+
+---
+ drivers/mtd/nand/spi/gigadevice.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/mtd/nand/spi/gigadevice.c b/drivers/mtd/nand/spi/gigadevice.c
+index a4e89529d..b163ea5dc 100644
--- a/drivers/mtd/nand/spi/gigadevice.c
+++ b/drivers/mtd/nand/spi/gigadevice.c
-@@ -379,7 +379,7 @@ static const struct spinand_info gigadev
+@@ -379,7 +379,7 @@ static const struct spinand_info gigadevice_spinand_table[] = {
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x31),
NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
NAND_ECCREQ(4, 512),
@@ -9,7 +21,7 @@
&write_cache_variants,
&update_cache_variants),
SPINAND_HAS_QE_BIT,
-@@ -389,17 +389,17 @@ static const struct spinand_info gigadev
+@@ -389,17 +389,17 @@ static const struct spinand_info gigadevice_spinand_table[] = {
SPINAND_ID(SPINAND_READID_METHOD_OPCODE_DUMMY, 0x32),
NAND_MEMORG(1, 2048, 64, 64, 2048, 40, 1, 1, 1),
NAND_ECCREQ(4, 512),
@@ -30,3 +42,6 @@
&write_cache_variants,
&update_cache_variants),
SPINAND_HAS_QE_BIT,
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2336-mtd-spinand-fix-F50L1G41LB-ecc-check.patch b/target/linux/mediatek/patches-5.4/999-2336-mtd-spinand-fix-F50L1G41LB-ecc-check.patch
new file mode 100644
index 0000000..644c6b3
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2336-mtd-spinand-fix-F50L1G41LB-ecc-check.patch
@@ -0,0 +1,27 @@
+From c93adec4ad0e8ca47f1a622fb3a5ae445251af36 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:16 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2336-mtd-spinand-fix-F50L1G41LB-ecc-check.patch]
+
+---
+ drivers/mtd/nand/spi/gigadevice.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/drivers/mtd/nand/spi/gigadevice.c b/drivers/mtd/nand/spi/gigadevice.c
+index b163ea5dc..6ee569de2 100644
+--- a/drivers/mtd/nand/spi/gigadevice.c
++++ b/drivers/mtd/nand/spi/gigadevice.c
+@@ -263,8 +263,7 @@ static const struct spinand_info gigadevice_spinand_table[] = {
+ &write_cache_variants,
+ &update_cache_variants),
+ 0,
+- SPINAND_ECCINFO(&gd5fxgq4xa_ooblayout,
+- gd5fxgq4xa_ecc_get_status)),
++ SPINAND_ECCINFO(&gd5fxgq4xa_ooblayout, NULL)),
+ SPINAND_INFO("GD5F1GQ4xA",
+ SPINAND_ID(SPINAND_READID_METHOD_OPCODE_ADDR, 0xf1),
+ NAND_MEMORG(1, 2048, 64, 64, 1024, 20, 1, 1, 1),
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2337-mtd-spinor-support-EN25QX128A.patch b/target/linux/mediatek/patches-5.4/999-2337-mtd-spinor-support-EN25QX128A.patch
new file mode 100644
index 0000000..239d246
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2337-mtd-spinor-support-EN25QX128A.patch
@@ -0,0 +1,27 @@
+From 6e915b8dd6ddb6f56ebf23123c26fb90fd5f5198 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:16 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2337-mtd-spinor-support-EN25QX128A.patch]
+
+---
+ drivers/mtd/spi-nor/spi-nor.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
+index 2599bbea8..8d2bc03cd 100644
+--- a/drivers/mtd/spi-nor/spi-nor.c
++++ b/drivers/mtd/spi-nor/spi-nor.c
+@@ -2249,6 +2249,9 @@ static const struct flash_info spi_nor_ids[] = {
+ { "en25qh64", INFO(0x1c7017, 0, 64 * 1024, 128,
+ SECT_4K | SPI_NOR_DUAL_READ) },
+ { "en25qh128", INFO(0x1c7018, 0, 64 * 1024, 256, 0) },
++ { "en25qx128", INFO(0x1c7118, 0, 64 * 1024, 256,
++ SECT_4K | SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ |
++ SPI_NOR_HAS_LOCK | SPI_NOR_HAS_TB) },
+ { "en25qh256", INFO(0x1c7019, 0, 64 * 1024, 512, 0) },
+ { "en25s64", INFO(0x1c3817, 0, 64 * 1024, 128, SECT_4K) },
+
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2338-mtd-tests-fix-pagetest-load.patch b/target/linux/mediatek/patches-5.4/999-2338-mtd-tests-fix-pagetest-load.patch
new file mode 100644
index 0000000..776d990
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2338-mtd-tests-fix-pagetest-load.patch
@@ -0,0 +1,56 @@
+From eaa6d1a21a8ea3c68498ef4ff0cf91d109e4d821 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:16 +0800
+Subject: [PATCH] [spi-and-storage][999-2338-mtd-tests-fix-pagetest-load.patch]
+
+---
+ drivers/mtd/tests/pagetest.c | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/mtd/tests/pagetest.c b/drivers/mtd/tests/pagetest.c
+index 8eb40b6e6..d1c8a932e 100644
+--- a/drivers/mtd/tests/pagetest.c
++++ b/drivers/mtd/tests/pagetest.c
+@@ -25,6 +25,10 @@ static int dev = -EINVAL;
+ module_param(dev, int, S_IRUGO);
+ MODULE_PARM_DESC(dev, "MTD device number to use");
+
++static int count = 10000;
++module_param(count, int, 0444);
++MODULE_PARM_DESC(count, "Number of operations to do (default is 10000)");
++
+ static struct mtd_info *mtd;
+ static unsigned char *twopages;
+ static unsigned char *writebuf;
+@@ -331,7 +335,7 @@ static int __init mtd_pagetest_init(void)
+ return -EINVAL;
+ }
+
+- pr_info("MTD device: %d\n", dev);
++ pr_info("MTD device: %d count:%d\n", dev, count);
+
+ mtd = get_mtd_device(NULL, dev);
+ if (IS_ERR(mtd)) {
+@@ -376,6 +380,7 @@ static int __init mtd_pagetest_init(void)
+ if (err)
+ goto out;
+
++LOOP:
+ /* Erase all eraseblocks */
+ pr_info("erasing whole device\n");
+ err = mtdtest_erase_good_eraseblocks(mtd, bbt, 0, ebcnt);
+@@ -435,7 +440,10 @@ static int __init mtd_pagetest_init(void)
+ if (err)
+ goto out;
+
+- pr_info("finished with %d errors\n", errcnt);
++ pr_info("finished with %d errors count:%d\n", errcnt, count);
++
++ if (count-- > 0)
++ goto LOOP;
+ out:
+
+ kfree(bbt);
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/9017-drivers-mtd-spinand-Add-calibration-support-for-spinand.patch b/target/linux/mediatek/patches-5.4/999-2339-drivers-mtd-spinand-Add-calibration-support-for-spinand.patch
similarity index 87%
rename from target/linux/mediatek/patches-5.4/9017-drivers-mtd-spinand-Add-calibration-support-for-spinand.patch
rename to target/linux/mediatek/patches-5.4/999-2339-drivers-mtd-spinand-Add-calibration-support-for-spinand.patch
index 374531b..cf785fe 100644
--- a/target/linux/mediatek/patches-5.4/9017-drivers-mtd-spinand-Add-calibration-support-for-spinand.patch
+++ b/target/linux/mediatek/patches-5.4/999-2339-drivers-mtd-spinand-Add-calibration-support-for-spinand.patch
@@ -1,9 +1,9 @@
-From 6bd88d34cb5a5cb1d7c544c9f5b430105b000308 Mon Sep 17 00:00:00 2001
-From: "SkyLake.Huang" <skylake.huang@mediatek.com>
-Date: Thu, 23 Jun 2022 18:39:56 +0800
-Subject: [PATCH] drivers: mtd: spinand: Add calibration support for spinand
+From ddd2951e2f35477a81fb882a976a5a1fe981883d Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:17 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2339-drivers-mtd-spinand-Add-calibration-support-for-spinand.patch]
-Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
---
drivers/mtd/nand/spi/core.c | 58 +++++++++++++++++++++++++++++++++++++
1 file changed, 58 insertions(+)
@@ -85,5 +85,5 @@
if (ret)
goto err_free_bufs;
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/9018-drivers-mtd-spi-nor-Add-calibration-support-for-spi-nor.patch b/target/linux/mediatek/patches-5.4/999-2340-drivers-mtd-spi-nor-Add-calibration-support-for-spi-nor.patch
similarity index 68%
rename from target/linux/mediatek/patches-5.4/9018-drivers-mtd-spi-nor-Add-calibration-support-for-spi-nor.patch
rename to target/linux/mediatek/patches-5.4/999-2340-drivers-mtd-spi-nor-Add-calibration-support-for-spi-nor.patch
index fd1bd1a..b6a4255 100644
--- a/target/linux/mediatek/patches-5.4/9018-drivers-mtd-spi-nor-Add-calibration-support-for-spi-nor.patch
+++ b/target/linux/mediatek/patches-5.4/999-2340-drivers-mtd-spi-nor-Add-calibration-support-for-spi-nor.patch
@@ -1,16 +1,18 @@
-From b242e30661dac5c1c127999600029cd5b3f6b458 Mon Sep 17 00:00:00 2001
-From: "SkyLake.Huang" <skylake.huang@mediatek.com>
-Date: Thu, 23 Jun 2022 18:40:59 +0800
-Subject: [PATCH] drivers: mtd: spi-nor: Add calibration support for spi-nor
+From f392188951839efae7807b6287a62c78d1ed0088 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:17 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2340-drivers-mtd-spi-nor-Add-calibration-support-for-spi-nor.patch]
-Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
---
- drivers/mtd/spi-nor/spi-nor.c | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
+ drivers/mtd/spi-nor/spi-nor.c | 40 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
+diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
+index 8d2bc03cd..198b57a92 100644
--- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -4897,6 +4897,35 @@ static void spi_nor_debugfs_init(struct
+@@ -4899,6 +4899,35 @@ static void spi_nor_debugfs_init(struct spi_nor *nor,
info->id_len, info->id);
}
@@ -46,7 +48,7 @@
static const struct flash_info *spi_nor_get_flash_info(struct spi_nor *nor,
const char *name)
{
-@@ -4971,6 +5000,17 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -4973,6 +5002,17 @@ int spi_nor_scan(struct spi_nor *nor, const char *name,
if (!nor->bouncebuf)
return -ENOMEM;
@@ -64,3 +66,6 @@
info = spi_nor_get_flash_info(nor, name);
if (IS_ERR(info))
return PTR_ERR(info);
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/8004-nvmem-core-Add-functions-to-make-number-reading-easy.patch b/target/linux/mediatek/patches-5.4/999-2350-nvmem-core-Add-functions-to-make-number-reading-easy.patch
similarity index 69%
rename from target/linux/mediatek/patches-5.4/8004-nvmem-core-Add-functions-to-make-number-reading-easy.patch
rename to target/linux/mediatek/patches-5.4/999-2350-nvmem-core-Add-functions-to-make-number-reading-easy.patch
index 969ec3f..a4147dd 100644
--- a/target/linux/mediatek/patches-5.4/8004-nvmem-core-Add-functions-to-make-number-reading-easy.patch
+++ b/target/linux/mediatek/patches-5.4/999-2350-nvmem-core-Add-functions-to-make-number-reading-easy.patch
@@ -1,65 +1,16 @@
-From 8dc0b1158dcffd78ea2b3a5604b82ee826de687b Mon Sep 17 00:00:00 2001
-From: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Date: Mon, 8 Nov 2021 13:58:51 +0800
-Subject: [PATCH 1/5] nvmem: core: Add functions to make number reading easy
+From 21a99150a566b69edc7f3b9bc369bb4525e04acd Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:17 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2350-nvmem-core-Add-functions-to-make-number-reading-easy.patch]
-Sometimes the clients of nvmem just want to get a number out of
-nvmem. They don't want to think about exactly how many bytes the nvmem
-cell took up. They just want the number. Let's make it easy.
-
-In general this concept is useful because nvmem space is precious and
-usually the fewest bits are allocated that will hold a given value on
-a given system. However, even though small numbers might be fine on
-one system that doesn't mean that logically the number couldn't be
-bigger. Imagine nvmem containing a max frequency for a component. On
-one system perhaps that fits in 16 bits. On another system it might
-fit in 32 bits. The code reading this number doesn't care--it just
-wants the number.
-
-We'll provide two functions: nvmem_cell_read_variable_le_u32() and
-nvmem_cell_read_variable_le_u64().
-
-Comparing these to the existing functions like nvmem_cell_read_u32():
-* These new functions have no problems if the value was stored in
- nvmem in fewer bytes. It's OK to use these function as long as the
- value stored will fit in 32-bits (or 64-bits).
-* These functions avoid problems that the earlier APIs had with bit
- offsets. For instance, you can't use nvmem_cell_read_u32() to read a
- value has nbits=32 and bit_offset=4 because the nvmem cell must be
- at least 5 bytes big to hold this value. The new API accounts for
- this and works fine.
-* These functions make it very explicit that they assume that the
- number was stored in little endian format. The old functions made
- this assumption whenever bit_offset was non-zero (see
- nvmem_shift_read_buffer_in_place()) but didn't whenever the
- bit_offset was zero.
-
-NOTE: it's assumed that we don't need an 8-bit or 16-bit version of
-this function. The 32-bit version of the function can be used to read
-8-bit or 16-bit data.
-
-At the moment, I'm only adding the "unsigned" versions of these
-functions, but if it ends up being useful someone could add a "signed"
-version that did 2's complement sign extension.
-
-At the moment, I'm only adding the "little endian" versions of these
-functions. Adding the "big endian" version would require adding "big
-endian" support to nvmem_shift_read_buffer_in_place().
-
-Signed-off-by: Douglas Anderson <dianders@chromium.org>
-Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
-Link: https://lore.kernel.org/r/20210330111241.19401-7-srinivas.kandagatla@linaro.org
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
-Signed-off-by: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Change-Id: I3e1d96ec1680812d5e24681c79852c9b36899559
---
drivers/nvmem/core.c | 161 +++++++++++++++++++++++++++------
include/linux/nvmem-consumer.h | 15 +++
2 files changed, 150 insertions(+), 26 deletions(-)
diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c
-index c0f4324d8f7c..e26b25b5c288 100644
+index 19ac0d055..f65305b6d 100644
--- a/drivers/nvmem/core.c
+++ b/drivers/nvmem/core.c
@@ -1102,16 +1102,8 @@ int nvmem_cell_write(struct nvmem_cell *cell, void *buf, size_t len)
@@ -270,10 +221,10 @@
/**
* nvmem_device_cell_read() - Read a given nvmem device and cell
diff --git a/include/linux/nvmem-consumer.h b/include/linux/nvmem-consumer.h
-index 5c17cb733224..e328c0f7eef3 100644
+index 0f490b288..227b93158 100644
--- a/include/linux/nvmem-consumer.h
+++ b/include/linux/nvmem-consumer.h
-@@ -63,6 +63,10 @@ void *nvmem_cell_read(struct nvmem_cell *cell, size_t *len);
+@@ -64,6 +64,10 @@ void *nvmem_cell_read(struct nvmem_cell *cell, size_t *len);
int nvmem_cell_write(struct nvmem_cell *cell, void *buf, size_t len);
int nvmem_cell_read_u16(struct device *dev, const char *cell_id, u16 *val);
int nvmem_cell_read_u32(struct device *dev, const char *cell_id, u32 *val);
@@ -284,7 +235,7 @@
/* direct nvmem device read/write interface */
struct nvmem_device *nvmem_device_get(struct device *dev, const char *name);
-@@ -134,6 +138,17 @@ static inline int nvmem_cell_read_u32(struct device *dev,
+@@ -135,6 +139,17 @@ static inline int nvmem_cell_read_u32(struct device *dev,
{
return -EOPNOTSUPP;
}
@@ -303,5 +254,5 @@
static inline struct nvmem_device *nvmem_device_get(struct device *dev,
const char *name)
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/8005-nvmem-mtk-efuse-support-minimum-one-byte-access-stri.patch b/target/linux/mediatek/patches-5.4/999-2351-nvmem-mtk-efuse-support-minimum-one-byte-access-stri.patch
similarity index 62%
rename from target/linux/mediatek/patches-5.4/8005-nvmem-mtk-efuse-support-minimum-one-byte-access-stri.patch
rename to target/linux/mediatek/patches-5.4/999-2351-nvmem-mtk-efuse-support-minimum-one-byte-access-stri.patch
index 8de4c2a..c042918 100644
--- a/target/linux/mediatek/patches-5.4/8005-nvmem-mtk-efuse-support-minimum-one-byte-access-stri.patch
+++ b/target/linux/mediatek/patches-5.4/999-2351-nvmem-mtk-efuse-support-minimum-one-byte-access-stri.patch
@@ -1,21 +1,15 @@
-From 44ae4ed142265a6d50a9d3e6f4c395f97b6849ab Mon Sep 17 00:00:00 2001
-From: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Date: Sat, 6 Nov 2021 20:06:30 +0800
-Subject: [PATCH 2/5] nvmem: mtk-efuse: support minimum one byte access stride
- and granularity
+From 6b7498e172d4458499a3ba406bf7975478f46d21 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:17 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2351-nvmem-mtk-efuse-support-minimum-one-byte-access-stri.patch]
-In order to support nvmem bits property, should support minimum 1 byte
-read stride and minimum 1 byte read granularity at the same time.
-
-Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
-Signed-off-by: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Change-Id: Iafe1ebf195d58a3e9e3518913f795d14a01dfd3b
---
drivers/nvmem/mtk-efuse.c | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drivers/nvmem/mtk-efuse.c b/drivers/nvmem/mtk-efuse.c
-index 856d9c3fc38e..2e728fed0b49 100644
+index 856d9c3fc..2e728fed0 100644
--- a/drivers/nvmem/mtk-efuse.c
+++ b/drivers/nvmem/mtk-efuse.c
@@ -19,11 +19,12 @@ static int mtk_reg_read(void *context,
@@ -47,5 +41,5 @@
econfig.reg_write = mtk_reg_write;
econfig.size = resource_size(res);
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/0666-add-spimem-support-to-mtk-spi.patch b/target/linux/mediatek/patches-5.4/999-2361-add-spimem-support-to-mtk-spi.patch
similarity index 94%
rename from target/linux/mediatek/patches-5.4/0666-add-spimem-support-to-mtk-spi.patch
rename to target/linux/mediatek/patches-5.4/999-2361-add-spimem-support-to-mtk-spi.patch
index d50aa25..2d2aeaa 100644
--- a/target/linux/mediatek/patches-5.4/0666-add-spimem-support-to-mtk-spi.patch
+++ b/target/linux/mediatek/patches-5.4/999-2361-add-spimem-support-to-mtk-spi.patch
@@ -1,21 +1,16 @@
-From 675b477b2a50b2fb97f35944756f89644bf70092 Mon Sep 17 00:00:00 2001
-From: Qii Wang <qii.wang@mediatek.com>
-Date: Tue, 5 Jan 2021 16:48:39 +0800
-Subject: [PATCH] spi: mediatek: support IPM Design
+From 85e3059aee9943eddfd2b7c9fc83481751005c09 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:18 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2361-add-spimem-support-to-mtk-spi.patch]
-[Description]
-1. support sigle mode;
-2. support dual/quad mode with spi-mem framework.
-
-Signed-off-by: Leilk Liu <leilk.liu@mediatek.com>
-Reviewed-by: Qii Wang <qii.wang@mediatek.com>
---
drivers/spi/spi-mt65xx.c | 395 +++++++++++++++++++++--
include/linux/platform_data/spi-mt65xx.h | 2 +-
2 files changed, 370 insertions(+), 27 deletions(-)
diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
-index 8acf24f7c..9183c64e4 100644
+index 29d44f5d5..dbb471769 100644
--- a/drivers/spi/spi-mt65xx.c
+++ b/drivers/spi/spi-mt65xx.c
@@ -17,6 +17,7 @@
@@ -282,8 +277,8 @@
+ mtk_spi_prepare_transfer(master, xfer->speed_hz);
mtk_spi_setup_packet(master);
- cnt = xfer->len / 4;
-@@ -455,7 +553,7 @@ static int mtk_spi_dma_transfer(struct spi_master *master,
+ if (xfer->tx_buf) {
+@@ -456,7 +554,7 @@ static int mtk_spi_dma_transfer(struct spi_master *master,
mdata->cur_transfer = xfer;
mdata->num_xfered = 0;
@@ -292,7 +287,7 @@
cmd = readl(mdata->base + SPI_CMD_REG);
if (xfer->tx_buf)
-@@ -532,6 +630,13 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id)
+@@ -533,6 +631,13 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id)
else
mdata->state = MTK_SPI_IDLE;
@@ -306,7 +301,7 @@
if (!master->can_dma(master, NULL, trans)) {
if (trans->rx_buf) {
cnt = mdata->xfer_len / 4;
-@@ -615,12 +720,241 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id)
+@@ -616,12 +721,241 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id)
return IRQ_HANDLED;
}
@@ -549,7 +544,7 @@
int i, irq, ret, addr_bits;
master = spi_alloc_master(&pdev->dev, sizeof(*mdata));
-@@ -629,7 +963,7 @@ static int mtk_spi_probe(struct platform_device *pdev)
+@@ -630,7 +964,7 @@ static int mtk_spi_probe(struct platform_device *pdev)
return -ENOMEM;
}
@@ -558,7 +553,7 @@
master->dev.of_node = pdev->dev.of_node;
master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST;
-@@ -648,9 +982,25 @@ static int mtk_spi_probe(struct platform_device *pdev)
+@@ -649,9 +983,25 @@ static int mtk_spi_probe(struct platform_device *pdev)
mdata = spi_master_get_devdata(master);
mdata->dev_comp = of_id->data;
@@ -584,7 +579,7 @@
if (mdata->dev_comp->need_pad_sel) {
mdata->pad_num = of_property_count_u32_elems(
pdev->dev.of_node,
-@@ -683,15 +1033,7 @@ static int mtk_spi_probe(struct platform_device *pdev)
+@@ -684,15 +1034,7 @@ static int mtk_spi_probe(struct platform_device *pdev)
}
platform_set_drvdata(pdev, master);
@@ -601,7 +596,7 @@
if (IS_ERR(mdata->base)) {
ret = PTR_ERR(mdata->base);
goto err_put_master;
-@@ -713,6 +1055,7 @@ static int mtk_spi_probe(struct platform_device *pdev)
+@@ -714,6 +1056,7 @@ static int mtk_spi_probe(struct platform_device *pdev)
goto err_put_master;
}
@@ -609,7 +604,7 @@
mdata->parent_clk = devm_clk_get(&pdev->dev, "parent-clk");
if (IS_ERR(mdata->parent_clk)) {
ret = PTR_ERR(mdata->parent_clk);
-@@ -750,7 +1093,7 @@ static int mtk_spi_probe(struct platform_device *pdev)
+@@ -751,7 +1094,7 @@ static int mtk_spi_probe(struct platform_device *pdev)
clk_disable_unprepare(mdata->spi_clk);
pm_runtime_enable(&pdev->dev);
@@ -632,5 +627,5 @@
};
#endif
--
-2.17.1
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/999-2362-spi-mtk-nor-fix-timeout-calculation-overflow.patch b/target/linux/mediatek/patches-5.4/999-2362-spi-mtk-nor-fix-timeout-calculation-overflow.patch
new file mode 100644
index 0000000..d7f7d9b
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2362-spi-mtk-nor-fix-timeout-calculation-overflow.patch
@@ -0,0 +1,37 @@
+From 2231dfcbcffef50846a9c240651c62771d7e33b0 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:18 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2362-spi-mtk-nor-fix-timeout-calculation-overflow.patch]
+
+---
+ drivers/spi/spi-mtk-nor.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/spi/spi-mtk-nor.c b/drivers/spi/spi-mtk-nor.c
+index c15a99105..4f72f08c0 100644
+--- a/drivers/spi/spi-mtk-nor.c
++++ b/drivers/spi/spi-mtk-nor.c
+@@ -89,7 +89,7 @@
+ // Buffered page program can do one 128-byte transfer
+ #define MTK_NOR_PP_SIZE 128
+
+-#define CLK_TO_US(sp, clkcnt) ((clkcnt) * 1000000 / sp->spi_freq)
++#define CLK_TO_US(sp, clkcnt) DIV_ROUND_UP(clkcnt, sp->spi_freq / 1000000)
+
+ struct mtk_nor {
+ struct spi_controller *ctlr;
+@@ -177,6 +177,10 @@ static int mtk_nor_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op)
+ if ((op->addr.nbytes == 3) || (op->addr.nbytes == 4)) {
+ if ((op->data.dir == SPI_MEM_DATA_IN) &&
+ mtk_nor_match_read(op)) {
++ // limit size to prevent timeout calculation overflow
++ if (op->data.nbytes > 0x400000)
++ op->data.nbytes = 0x400000;
++
+ if ((op->addr.val & MTK_NOR_DMA_ALIGN_MASK) ||
+ (op->data.nbytes < MTK_NOR_DMA_ALIGN))
+ op->data.nbytes = 1;
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2363-spi-mediatek-fix-timeout-for-large-data.patch b/target/linux/mediatek/patches-5.4/999-2363-spi-mediatek-fix-timeout-for-large-data.patch
new file mode 100644
index 0000000..2a05ef3
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2363-spi-mediatek-fix-timeout-for-large-data.patch
@@ -0,0 +1,49 @@
+From 8efe8045522d7bd790b9ae7408c64f497a54e643 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:18 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2363-spi-mediatek-fix-timeout-for-large-data.patch]
+
+---
+ drivers/spi/spi-mt65xx.c | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
+index dbb471769..871eff03f 100644
+--- a/drivers/spi/spi-mt65xx.c
++++ b/drivers/spi/spi-mt65xx.c
+@@ -721,6 +721,23 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id)
+ return IRQ_HANDLED;
+ }
+
++static int mtk_spi_mem_adjust_op_size(struct spi_mem *mem,
++ struct spi_mem_op *op)
++{
++ int opcode_len;
++
++ if(!op->data.nbytes)
++ return 0;
++
++ if (op->data.dir != SPI_MEM_NO_DATA) {
++ opcode_len = 1 + op->addr.nbytes + op->dummy.nbytes;
++ if (opcode_len + op->data.nbytes > MTK_SPI_IPM_PACKET_SIZE)
++ op->data.nbytes = MTK_SPI_IPM_PACKET_SIZE -opcode_len;
++ }
++
++ return 0;
++}
++
+ static bool mtk_spi_mem_supports_op(struct spi_mem *mem,
+ const struct spi_mem_op *op)
+ {
+@@ -947,6 +964,7 @@ err_exit:
+ }
+
+ static const struct spi_controller_mem_ops mtk_spi_mem_ops = {
++ .adjust_op_size = mtk_spi_mem_adjust_op_size,
+ .supports_op = mtk_spi_mem_supports_op,
+ .exec_op = mtk_spi_mem_exec_op,
+ };
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2364-spi-mediatek-fix-dma-unmap-twice.patch b/target/linux/mediatek/patches-5.4/999-2364-spi-mediatek-fix-dma-unmap-twice.patch
new file mode 100644
index 0000000..997e16f
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2364-spi-mediatek-fix-dma-unmap-twice.patch
@@ -0,0 +1,31 @@
+From 548735b3ae97333e3630febcf15298304aa42dcf Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:19 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2364-spi-mediatek-fix-dma-unmap-twice.patch]
+
+---
+ drivers/spi/spi-mt65xx.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
+index 871eff03f..3a8f67f1e 100644
+--- a/drivers/spi/spi-mt65xx.c
++++ b/drivers/spi/spi-mt65xx.c
+@@ -947,12 +947,10 @@ static int mtk_spi_mem_exec_op(struct spi_mem *mem,
+ reg_val &= ~SPI_CMD_RX_DMA;
+ writel(reg_val, mdata->base + SPI_CMD_REG);
+
++unmap_rx_dma:
+ if (op->data.dir == SPI_MEM_DATA_IN)
+ dma_unmap_single(mdata->dev, mdata->rx_dma,
+ op->data.nbytes, DMA_FROM_DEVICE);
+-unmap_rx_dma:
+- dma_unmap_single(mdata->dev, mdata->rx_dma,
+- op->data.nbytes, DMA_FROM_DEVICE);
+ unmap_tx_dma:
+ dma_unmap_single(mdata->dev, mdata->tx_dma,
+ tx_size, DMA_TO_DEVICE);
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2365-fix-SPIM-NAND-and-NOR-probing.patch b/target/linux/mediatek/patches-5.4/999-2365-fix-SPIM-NAND-and-NOR-probing.patch
new file mode 100644
index 0000000..02e460a
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2365-fix-SPIM-NAND-and-NOR-probing.patch
@@ -0,0 +1,48 @@
+From 1a41f923f66c03c40e6703dd69f8bfbe2791ce70 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:19 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2365-fix-SPIM-NAND-and-NOR-probing.patch]
+
+---
+ drivers/spi/spi-mt65xx.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
+index 3a8f67f1e..05697e1d1 100644
+--- a/drivers/spi/spi-mt65xx.c
++++ b/drivers/spi/spi-mt65xx.c
+@@ -1072,7 +1072,7 @@ static int mtk_spi_probe(struct platform_device *pdev)
+ goto err_put_master;
+ }
+
+-/*
++
+ mdata->parent_clk = devm_clk_get(&pdev->dev, "parent-clk");
+ if (IS_ERR(mdata->parent_clk)) {
+ ret = PTR_ERR(mdata->parent_clk);
+@@ -1100,17 +1100,17 @@ static int mtk_spi_probe(struct platform_device *pdev)
+ goto err_put_master;
+ }
+
+- ret = clk_set_parent(mdata->sel_clk, mdata->parent_clk);
++ /*ret = clk_set_parent(mdata->sel_clk, mdata->parent_clk);
+ if (ret < 0) {
+ dev_err(&pdev->dev, "failed to clk_set_parent (%d)\n", ret);
+ clk_disable_unprepare(mdata->spi_clk);
+ goto err_put_master;
+ }
+
+- clk_disable_unprepare(mdata->spi_clk);
++ clk_disable_unprepare(mdata->sel_clk);*/
++
++ //pm_runtime_enable(&pdev->dev);
+
+- pm_runtime_enable(&pdev->dev);
+-*/
+ ret = devm_spi_register_master(&pdev->dev, master);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to register master (%d)\n", ret);
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0670-fix-SPIM-dma-buffer-not-aligned.patch b/target/linux/mediatek/patches-5.4/999-2366-fix-SPIM-dma-buffer-not-aligned.patch
similarity index 68%
rename from target/linux/mediatek/patches-5.4/0670-fix-SPIM-dma-buffer-not-aligned.patch
rename to target/linux/mediatek/patches-5.4/999-2366-fix-SPIM-dma-buffer-not-aligned.patch
index d4534e7..fed7675 100644
--- a/target/linux/mediatek/patches-5.4/0670-fix-SPIM-dma-buffer-not-aligned.patch
+++ b/target/linux/mediatek/patches-5.4/999-2366-fix-SPIM-dma-buffer-not-aligned.patch
@@ -1,6 +1,18 @@
+From 475f064022a716bda4574406d8365627c3bcf131 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:19 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2366-fix-SPIM-dma-buffer-not-aligned.patch]
+
+---
+ drivers/spi/spi-mt65xx.c | 33 +++++++++++++++++++++++----------
+ 1 file changed, 23 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
+index 05697e1d1..2883dc908 100644
--- a/drivers/spi/spi-mt65xx.c
+++ b/drivers/spi/spi-mt65xx.c
-@@ -184,7 +184,7 @@ static const struct mtk_spi_compatible m
+@@ -184,7 +184,7 @@ static const struct mtk_spi_compatible mt8183_compat = {
*/
static const struct mtk_chip_config mtk_default_chip_info = {
.sample_sel = 0,
@@ -9,7 +21,7 @@
};
static const struct of_device_id mtk_spi_of_match[] = {
-@@ -730,8 +730,11 @@ static int mtk_spi_mem_adjust_op_size(st
+@@ -731,8 +731,11 @@ static int mtk_spi_mem_adjust_op_size(struct spi_mem *mem,
if (op->data.dir != SPI_MEM_NO_DATA) {
opcode_len = 1 + op->addr.nbytes + op->dummy.nbytes;
@@ -22,7 +34,7 @@
}
return 0;
-@@ -758,10 +761,6 @@ static bool mtk_spi_mem_supports_op(stru
+@@ -759,10 +762,6 @@ static bool mtk_spi_mem_supports_op(struct spi_mem *mem,
return false;
}
@@ -33,7 +45,7 @@
return true;
}
-@@ -820,6 +819,7 @@ static int mtk_spi_mem_exec_op(struct sp
+@@ -821,6 +820,7 @@ static int mtk_spi_mem_exec_op(struct spi_mem *mem,
struct mtk_spi *mdata = spi_master_get_devdata(mem->spi->master);
u32 reg_val, nio = 1, tx_size;
char *tx_tmp_buf;
@@ -41,7 +53,7 @@
int ret = 0;
mdata->use_spimem = true;
-@@ -914,10 +914,18 @@ static int mtk_spi_mem_exec_op(struct sp
+@@ -915,10 +915,18 @@ static int mtk_spi_mem_exec_op(struct spi_mem *mem,
}
if (op->data.dir == SPI_MEM_DATA_IN) {
@@ -63,7 +75,7 @@
if (dma_mapping_error(mdata->dev, mdata->rx_dma)) {
ret = -ENOMEM;
goto unmap_tx_dma;
-@@ -947,9 +955,14 @@ static int mtk_spi_mem_exec_op(struct sp
+@@ -948,9 +956,14 @@ static int mtk_spi_mem_exec_op(struct spi_mem *mem,
writel(reg_val, mdata->base + SPI_CMD_REG);
unmap_rx_dma:
@@ -79,3 +91,6 @@
unmap_tx_dma:
dma_unmap_single(mdata->dev, mdata->tx_dma,
tx_size, DMA_TO_DEVICE);
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2367-fix-mtk-nfi-driver-dependency.patch b/target/linux/mediatek/patches-5.4/999-2367-fix-mtk-nfi-driver-dependency.patch
new file mode 100644
index 0000000..9ef3678
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2367-fix-mtk-nfi-driver-dependency.patch
@@ -0,0 +1,25 @@
+From 8a165fdcdddc69e2bc048636695521d5b6966ff7 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:19 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2367-fix-mtk-nfi-driver-dependency.patch]
+
+---
+ drivers/spi/Kconfig | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
+index b26bf6b46..4b97ca45c 100644
+--- a/drivers/spi/Kconfig
++++ b/drivers/spi/Kconfig
+@@ -429,6 +429,7 @@ config SPI_MT65XX
+
+ config SPI_MTK_SNFI
+ tristate "MediaTek SPI NAND interface"
++ depends on MTD
+ select MTD_SPI_NAND
+ help
+ This selects the SPI NAND FLASH interface(SNFI),
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2368-kernel-MT7988-fix-spi-dma-unmap.patch b/target/linux/mediatek/patches-5.4/999-2368-kernel-MT7988-fix-spi-dma-unmap.patch
new file mode 100644
index 0000000..4774cb3
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2368-kernel-MT7988-fix-spi-dma-unmap.patch
@@ -0,0 +1,32 @@
+From f715b301cff26297a1f4af71e6982de3d56673dd Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:20 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2368-kernel-MT7988-fix-spi-dma-unmap.patch]
+
+---
+ drivers/spi/spi-mt65xx.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
+index 2883dc908..b03257132 100644
+--- a/drivers/spi/spi-mt65xx.c
++++ b/drivers/spi/spi-mt65xx.c
+@@ -957,12 +957,12 @@ static int mtk_spi_mem_exec_op(struct spi_mem *mem,
+
+ unmap_rx_dma:
+ if (op->data.dir == SPI_MEM_DATA_IN) {
++ dma_unmap_single(mdata->dev, mdata->rx_dma,
++ op->data.nbytes, DMA_FROM_DEVICE);
+ if(!IS_ALIGNED((size_t)op->data.buf.in, 4)) {
+ memcpy(op->data.buf.in, rx_tmp_buf, op->data.nbytes);
+ kfree(rx_tmp_buf);
+ }
+- dma_unmap_single(mdata->dev, mdata->rx_dma,
+- op->data.nbytes, DMA_FROM_DEVICE);
+ }
+ unmap_tx_dma:
+ dma_unmap_single(mdata->dev, mdata->tx_dma,
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/9009-Add-spi-runtime-PM-support.patch b/target/linux/mediatek/patches-5.4/999-2369-Add-spi-runtime-PM-support.patch
similarity index 84%
rename from target/linux/mediatek/patches-5.4/9009-Add-spi-runtime-PM-support.patch
rename to target/linux/mediatek/patches-5.4/999-2369-Add-spi-runtime-PM-support.patch
index 8371b57..92dbb42 100644
--- a/target/linux/mediatek/patches-5.4/9009-Add-spi-runtime-PM-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2369-Add-spi-runtime-PM-support.patch
@@ -1,22 +1,14 @@
-From 0c1e4af01506c913cc54e63f66bb5470f50790c7 Mon Sep 17 00:00:00 2001
-From: Leilk Liu <leilk.liu@mediatek.com>
-Date: Tue, 13 Jul 2021 21:45:59 +0800
-Subject: [PATCH] [Add spi runtime PM support]
+From c8ea5f2bbc2ece3efcb7b8c704a7bee4c5f7adef Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:20 +0800
+Subject: [PATCH] [spi-and-storage][999-2369-Add-spi-runtime-PM-support.patch]
-[Description]
-Add ahb clk and enable runtime pm
-
-[Release-log]
-N/A
-
-Change-Id: I0529f6e829f5fc4c5880508971c97b9434820340
-Signed-off-by: Leilk Liu <leilk.liu@mediatek.com>
---
drivers/spi/spi-mt65xx.c | 77 ++++++++++++++++++++++++++++++++++------
1 file changed, 67 insertions(+), 10 deletions(-)
diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
-index 7e54984..ff2d825 100644
+index b03257132..7c3ee3381 100644
--- a/drivers/spi/spi-mt65xx.c
+++ b/drivers/spi/spi-mt65xx.c
@@ -119,6 +119,8 @@ struct mtk_spi_compatible {
@@ -74,7 +66,7 @@
},
{ .compatible = "mediatek,mt2701-spi",
.data = (void *)&mtk_common_compat,
-@@ -992,7 +1006,7 @@ static int mtk_spi_probe(struct platform_device *pdev)
+@@ -993,7 +1007,7 @@ static int mtk_spi_probe(struct platform_device *pdev)
return -ENOMEM;
}
@@ -83,7 +75,7 @@
master->dev.of_node = pdev->dev.of_node;
master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST;
-@@ -1106,22 +1120,40 @@ static int mtk_spi_probe(struct platform_device *pdev)
+@@ -1107,22 +1121,40 @@ static int mtk_spi_probe(struct platform_device *pdev)
goto err_put_master;
}
@@ -127,7 +119,7 @@
ret = devm_spi_register_master(&pdev->dev, master);
if (ret) {
-@@ -1201,8 +1233,11 @@ static int mtk_spi_suspend(struct device *dev)
+@@ -1202,8 +1234,11 @@ static int mtk_spi_suspend(struct device *dev)
if (ret)
return ret;
@@ -140,7 +132,7 @@
return ret;
}
-@@ -1214,6 +1249,14 @@ static int mtk_spi_resume(struct device *dev)
+@@ -1215,6 +1250,14 @@ static int mtk_spi_resume(struct device *dev)
struct mtk_spi *mdata = spi_master_get_devdata(master);
if (!pm_runtime_suspended(dev)) {
@@ -155,7 +147,7 @@
ret = clk_prepare_enable(mdata->spi_clk);
if (ret < 0) {
dev_err(dev, "failed to enable spi_clk (%d)\n", ret);
-@@ -1222,8 +1265,11 @@ static int mtk_spi_resume(struct device *dev)
+@@ -1223,8 +1266,11 @@ static int mtk_spi_resume(struct device *dev)
}
ret = spi_master_resume(master);
@@ -168,7 +160,7 @@
return ret;
}
-@@ -1237,6 +1283,9 @@ static int mtk_spi_runtime_suspend(struct device *dev)
+@@ -1238,6 +1284,9 @@ static int mtk_spi_runtime_suspend(struct device *dev)
clk_disable_unprepare(mdata->spi_clk);
@@ -178,7 +170,7 @@
return 0;
}
-@@ -1246,6 +1295,14 @@ static int mtk_spi_runtime_resume(struct device *dev)
+@@ -1247,6 +1296,14 @@ static int mtk_spi_runtime_resume(struct device *dev)
struct mtk_spi *mdata = spi_master_get_devdata(master);
int ret;
@@ -194,5 +186,5 @@
if (ret < 0) {
dev_err(dev, "failed to enable spi_clk (%d)\n", ret);
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/9011-Modify-tick_delay-for-spi-work-safety.patch b/target/linux/mediatek/patches-5.4/999-2370-Modify-tick_delay-for-spi-work-safety.patch
similarity index 64%
rename from target/linux/mediatek/patches-5.4/9011-Modify-tick_delay-for-spi-work-safety.patch
rename to target/linux/mediatek/patches-5.4/999-2370-Modify-tick_delay-for-spi-work-safety.patch
index dd73f82..7adee7d 100644
--- a/target/linux/mediatek/patches-5.4/9011-Modify-tick_delay-for-spi-work-safety.patch
+++ b/target/linux/mediatek/patches-5.4/999-2370-Modify-tick_delay-for-spi-work-safety.patch
@@ -1,14 +1,15 @@
-From 02205bef8a645d4374d2869e3a5a5a1d7c2e693a Mon Sep 17 00:00:00 2001
-From: Qii Wang <qii.wang@mediatek.com>
-Date: Sat, 14 May 2022 14:18:13 +0800
-Subject: [PATCH] [Modify tick_delay for spi work safety]
+From adcc9739e6457df20339161299cf267de9699a2e Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:20 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2370-Modify-tick_delay-for-spi-work-safety.patch]
---
drivers/spi/spi-mt65xx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
-index bef03bd8c..c19e2d4d7 100644
+index 7c3ee3381..83a2417a8 100644
--- a/drivers/spi/spi-mt65xx.c
+++ b/drivers/spi/spi-mt65xx.c
@@ -195,7 +195,7 @@ static const struct mtk_spi_compatible mt8183_compat = {
@@ -21,5 +22,5 @@
static const struct of_device_id mtk_spi_of_match[] = {
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/9013-drivers-spi-mt65xx-Move-chip_config-to-driver-priv.patch b/target/linux/mediatek/patches-5.4/999-2371-drivers-spi-mt65xx-Move-chip_config-to-driver-priv.patch
similarity index 92%
rename from target/linux/mediatek/patches-5.4/9013-drivers-spi-mt65xx-Move-chip_config-to-driver-priv.patch
rename to target/linux/mediatek/patches-5.4/999-2371-drivers-spi-mt65xx-Move-chip_config-to-driver-priv.patch
index d64f376..47611e5 100644
--- a/target/linux/mediatek/patches-5.4/9013-drivers-spi-mt65xx-Move-chip_config-to-driver-priv.patch
+++ b/target/linux/mediatek/patches-5.4/999-2371-drivers-spi-mt65xx-Move-chip_config-to-driver-priv.patch
@@ -1,10 +1,9 @@
-From 45ec6dfcc5f48127d5bd440fb615bbf48f3fc9c1 Mon Sep 17 00:00:00 2001
-From: "SkyLake.Huang" <skylake.huang@mediatek.com>
-Date: Thu, 23 Jun 2022 18:29:51 +0800
-Subject: [PATCH] drivers: spi-mt65xx: Move chip_config to driver's private
- data
+From 8fc345d6238b0fb81f6737d21ca9d7efb1dd1489 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:20 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2371-drivers-spi-mt65xx-Move-chip_config-to-driver-priv.patch]
-Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
---
drivers/spi/spi-mt65xx.c | 31 +++++++++++-------------
include/linux/platform_data/spi-mt65xx.h | 17 -------------
@@ -12,7 +11,7 @@
delete mode 100644 include/linux/platform_data/spi-mt65xx.h
diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
-index c19e2d4d7..0afd00891 100644
+index 83a2417a8..32a0b0264 100644
--- a/drivers/spi/spi-mt65xx.c
+++ b/drivers/spi/spi-mt65xx.c
@@ -14,7 +14,6 @@
@@ -138,5 +137,5 @@
-};
-#endif
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/9014-drivers-spi-Add-support-for-dynamic-calibration.patch b/target/linux/mediatek/patches-5.4/999-2372-drivers-spi-Add-support-for-dynamic-calibration.patch
similarity index 87%
rename from target/linux/mediatek/patches-5.4/9014-drivers-spi-Add-support-for-dynamic-calibration.patch
rename to target/linux/mediatek/patches-5.4/999-2372-drivers-spi-Add-support-for-dynamic-calibration.patch
index 750c87b..d438084 100644
--- a/target/linux/mediatek/patches-5.4/9014-drivers-spi-Add-support-for-dynamic-calibration.patch
+++ b/target/linux/mediatek/patches-5.4/999-2372-drivers-spi-Add-support-for-dynamic-calibration.patch
@@ -1,17 +1,19 @@
-From a84c53fce4ccd67c147dcbb2dcf4fdeceab05981 Mon Sep 17 00:00:00 2001
-From: "SkyLake.Huang" <skylake.huang@mediatek.com>
-Date: Thu, 23 Jun 2022 18:35:52 +0800
-Subject: [PATCH] drivers: spi: Add support for dynamic calibration
+From a7d7d3c4d6a949135a34dff1e987a52de9f227b7 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:21 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2372-drivers-spi-Add-support-for-dynamic-calibration.patch]
-Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
---
- drivers/spi/spi.c | 137 ++++++++++++++++++++++++++++++++++++++++
+ drivers/spi/spi.c | 141 ++++++++++++++++++++++++++++++++++++++++
include/linux/spi/spi.h | 42 ++++++++++++
- 2 files changed, 179 insertions(+)
+ 2 files changed, 183 insertions(+)
+diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
+index e562735a3..28bad4a8b 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -1109,6 +1109,74 @@ static int spi_transfer_wait(struct spi_
+@@ -1109,6 +1109,74 @@ static int spi_transfer_wait(struct spi_controller *ctlr,
return 0;
}
@@ -86,7 +88,7 @@
static void _spi_transfer_delay_ns(u32 ns)
{
if (!ns)
-@@ -1720,6 +1788,75 @@ void spi_flush_queue(struct spi_controll
+@@ -1720,6 +1788,75 @@ void spi_flush_queue(struct spi_controller *ctlr)
/*-------------------------------------------------------------------------*/
#if defined(CONFIG_OF)
@@ -162,7 +164,7 @@
static int of_spi_parse_dt(struct spi_controller *ctlr, struct spi_device *spi,
struct device_node *nc)
{
-@@ -1841,6 +1978,10 @@ of_register_spi_device(struct spi_contro
+@@ -1841,6 +1978,10 @@ of_register_spi_device(struct spi_controller *ctlr, struct device_node *nc)
if (rc)
goto err_out;
@@ -173,6 +175,8 @@
/* Store a pointer to the node in the device structure */
of_node_get(nc);
spi->dev.of_node = nc;
+diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h
+index 7067f85ce..5330cd9b0 100644
--- a/include/linux/spi/spi.h
+++ b/include/linux/spi/spi.h
@@ -264,6 +264,40 @@ struct spi_driver {
@@ -228,7 +232,7 @@
int (*fw_translate_cs)(struct spi_controller *ctlr, unsigned cs);
};
-@@ -1369,6 +1408,9 @@ spi_register_board_info(struct spi_board
+@@ -1369,6 +1408,9 @@ spi_register_board_info(struct spi_board_info const *info, unsigned n)
{ return 0; }
#endif
@@ -238,3 +242,6 @@
/* If you're hotplugging an adapter with devices (parport, usb, etc)
* use spi_new_device() to describe each device. You can also call
* spi_unregister_device() to start making that device vanish, but
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/9015-drivers-spi-mem-Add-spi-calibration-hook.patch b/target/linux/mediatek/patches-5.4/999-2373-drivers-spi-mem-Add-spi-calibration-hook.patch
similarity index 82%
rename from target/linux/mediatek/patches-5.4/9015-drivers-spi-mem-Add-spi-calibration-hook.patch
rename to target/linux/mediatek/patches-5.4/999-2373-drivers-spi-mem-Add-spi-calibration-hook.patch
index dcea7de..c16f87e 100644
--- a/target/linux/mediatek/patches-5.4/9015-drivers-spi-mem-Add-spi-calibration-hook.patch
+++ b/target/linux/mediatek/patches-5.4/999-2373-drivers-spi-mem-Add-spi-calibration-hook.patch
@@ -1,9 +1,9 @@
-From a4f235c3a3c4d25aa6a4417ce64831ca0b38c324 Mon Sep 17 00:00:00 2001
-From: "SkyLake.Huang" <skylake.huang@mediatek.com>
-Date: Thu, 23 Jun 2022 18:37:55 +0800
-Subject: [PATCH] drivers: spi-mem: Add spi calibration hook
+From 945b61ae2d00d59eacebb70496ce9bc530767929 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:21 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2373-drivers-spi-mem-Add-spi-calibration-hook.patch]
-Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
---
drivers/spi/spi-mem.c | 8 ++++++++
include/linux/spi/spi-mem.h | 4 ++++
@@ -44,5 +44,5 @@
struct spi_mem_dirmap_desc *
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/9016-drivers-spi-mt65xx-Add-controller-calibration-parameter.patch b/target/linux/mediatek/patches-5.4/999-2374-drivers-spi-mt65xx-Add-controller-calibration-parameter.patch
similarity index 78%
rename from target/linux/mediatek/patches-5.4/9016-drivers-spi-mt65xx-Add-controller-calibration-parameter.patch
rename to target/linux/mediatek/patches-5.4/999-2374-drivers-spi-mt65xx-Add-controller-calibration-parameter.patch
index 2c51aa9..f39b229 100644
--- a/target/linux/mediatek/patches-5.4/9016-drivers-spi-mt65xx-Add-controller-calibration-parameter.patch
+++ b/target/linux/mediatek/patches-5.4/999-2374-drivers-spi-mt65xx-Add-controller-calibration-parameter.patch
@@ -1,15 +1,15 @@
-From ac9ed3898b80a81ce220a682749767ef189094a8 Mon Sep 17 00:00:00 2001
-From: "SkyLake.Huang" <skylake.huang@mediatek.com>
-Date: Thu, 23 Jun 2022 18:39:03 +0800
-Subject: [PATCH] drivers: spi-mt65xx: Add controller's calibration paramter
+From 6411311c9df3bce87ad46650053eb52cf12be889 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:21 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2374-drivers-spi-mt65xx-Add-controller-calibration-parameter.patch]
-Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com>
---
drivers/spi/spi-mt65xx.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
-index 0afd00891..1b272d15c 100644
+index 32a0b0264..2034d1979 100644
--- a/drivers/spi/spi-mt65xx.c
+++ b/drivers/spi/spi-mt65xx.c
@@ -727,6 +727,21 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id)
@@ -44,5 +44,5 @@
if (!of_id) {
dev_err(&pdev->dev, "failed to probe of_node\n");
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/9102-spi-update-driver.patch b/target/linux/mediatek/patches-5.4/999-2375-spi-update-driver.patch
similarity index 91%
rename from target/linux/mediatek/patches-5.4/9102-spi-update-driver.patch
rename to target/linux/mediatek/patches-5.4/999-2375-spi-update-driver.patch
index 4900733..48e7187 100644
--- a/target/linux/mediatek/patches-5.4/9102-spi-update-driver.patch
+++ b/target/linux/mediatek/patches-5.4/999-2375-spi-update-driver.patch
@@ -1,3 +1,14 @@
+From f8707b14c517f9402456c3c1e98f64d0eb8a4af5 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:21 +0800
+Subject: [PATCH] [spi-and-storage][999-2375-spi-update-driver.patch]
+
+---
+ drivers/spi/spi-mt65xx.c | 414 ++++++++++++++++++++++-----------------
+ 1 file changed, 231 insertions(+), 183 deletions(-)
+
+diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
+index 2034d1979..b80f8dcd9 100644
--- a/drivers/spi/spi-mt65xx.c
+++ b/drivers/spi/spi-mt65xx.c
@@ -12,7 +12,7 @@
@@ -71,7 +82,7 @@
struct completion spimem_done;
bool use_spimem;
struct device *dev;
-@@ -154,21 +152,10 @@ static const struct mtk_spi_compatible m
+@@ -154,21 +152,10 @@ static const struct mtk_spi_compatible mt2712_compat = {
.must_tx = true,
};
@@ -94,7 +105,7 @@
};
static const struct mtk_spi_compatible mt6765_compat = {
-@@ -194,13 +181,25 @@ static const struct mtk_spi_compatible m
+@@ -194,13 +181,25 @@ static const struct mtk_spi_compatible mt8183_compat = {
.enhance_timing = true,
};
@@ -122,7 +133,7 @@
{ .compatible = "mediatek,mt2701-spi",
.data = (void *)&mtk_common_compat,
},
-@@ -228,6 +227,12 @@ static const struct of_device_id mtk_spi
+@@ -228,6 +227,12 @@ static const struct of_device_id mtk_spi_of_match[] = {
{ .compatible = "mediatek,mt8183-spi",
.data = (void *)&mt8183_compat,
},
@@ -135,7 +146,7 @@
{}
};
MODULE_DEVICE_TABLE(of, mtk_spi_of_match);
-@@ -256,27 +261,30 @@ static int mtk_spi_hw_init(struct spi_ma
+@@ -256,27 +261,30 @@ static int mtk_spi_hw_init(struct spi_master *master,
cpha = spi->mode & SPI_CPHA ? 1 : 0;
cpol = spi->mode & SPI_CPOL ? 1 : 0;
@@ -176,7 +187,7 @@
reg_val = readl(mdata->base + SPI_CMD_REG);
if (mdata->dev_comp->ipm_design) {
/* SPI transfer without idle time until packet length done */
-@@ -375,12 +383,11 @@ static void mtk_spi_set_cs(struct spi_de
+@@ -375,12 +383,11 @@ static void mtk_spi_set_cs(struct spi_device *spi, bool enable)
static void mtk_spi_prepare_transfer(struct spi_master *master,
u32 speed_hz)
{
@@ -192,7 +203,7 @@
else
div = 1;
-@@ -388,13 +395,19 @@ static void mtk_spi_prepare_transfer(str
+@@ -388,13 +395,19 @@ static void mtk_spi_prepare_transfer(struct spi_master *master,
cs_time = sck_time * 2;
if (mdata->dev_comp->enhance_timing) {
@@ -214,7 +225,7 @@
reg_val |= (((cs_time - 1) & 0xffff)
<< SPI_ADJUST_CFG0_CS_SETUP_OFFSET);
writel(reg_val, mdata->base + SPI_CFG0_REG);
-@@ -453,14 +466,17 @@ static void mtk_spi_enable_transfer(stru
+@@ -453,14 +466,17 @@ static void mtk_spi_enable_transfer(struct spi_master *master)
writel(cmd, mdata->base + SPI_CMD_REG);
}
@@ -238,7 +249,7 @@
return mult_delta;
}
-@@ -472,22 +488,22 @@ static void mtk_spi_update_mdata_len(str
+@@ -472,22 +488,22 @@ static void mtk_spi_update_mdata_len(struct spi_master *master)
if (mdata->tx_sgl_len && mdata->rx_sgl_len) {
if (mdata->tx_sgl_len > mdata->rx_sgl_len) {
@@ -265,7 +276,7 @@
mdata->xfer_len = mdata->rx_sgl_len - mult_delta;
mdata->rx_sgl_len = mult_delta;
}
-@@ -598,6 +614,19 @@ static int mtk_spi_transfer_one(struct s
+@@ -598,6 +614,19 @@ static int mtk_spi_transfer_one(struct spi_master *master,
struct spi_device *spi,
struct spi_transfer *xfer)
{
@@ -285,7 +296,7 @@
if (master->can_dma(master, spi, xfer))
return mtk_spi_dma_transfer(master, spi, xfer);
else
-@@ -618,8 +647,9 @@ static int mtk_spi_setup(struct spi_devi
+@@ -618,8 +647,9 @@ static int mtk_spi_setup(struct spi_device *spi)
{
struct mtk_spi *mdata = spi_master_get_devdata(spi->master);
@@ -297,7 +308,7 @@
return 0;
}
-@@ -747,9 +777,6 @@ static int mtk_spi_mem_adjust_op_size(st
+@@ -747,9 +777,6 @@ static int mtk_spi_mem_adjust_op_size(struct spi_mem *mem,
{
int opcode_len;
@@ -307,7 +318,7 @@
if (op->data.dir != SPI_MEM_NO_DATA) {
opcode_len = 1 + op->addr.nbytes + op->dummy.nbytes;
if (opcode_len + op->data.nbytes > MTK_SPI_IPM_PACKET_SIZE) {
-@@ -765,8 +792,7 @@ static int mtk_spi_mem_adjust_op_size(st
+@@ -765,8 +792,7 @@ static int mtk_spi_mem_adjust_op_size(struct spi_mem *mem,
static bool mtk_spi_mem_supports_op(struct spi_mem *mem,
const struct spi_mem_op *op)
{
@@ -317,7 +328,7 @@
return false;
if (op->addr.nbytes && op->dummy.nbytes &&
-@@ -814,13 +840,18 @@ static int mtk_spi_transfer_wait(struct
+@@ -814,13 +840,18 @@ static int mtk_spi_transfer_wait(struct spi_mem *mem,
const struct spi_mem_op *op)
{
struct mtk_spi *mdata = spi_master_get_devdata(mem->spi->master);
@@ -340,7 +351,7 @@
ms += ms + 1000; /* 1s tolerance */
if (ms > UINT_MAX)
-@@ -839,9 +870,8 @@ static int mtk_spi_mem_exec_op(struct sp
+@@ -839,9 +870,8 @@ static int mtk_spi_mem_exec_op(struct spi_mem *mem,
const struct spi_mem_op *op)
{
struct mtk_spi *mdata = spi_master_get_devdata(mem->spi->master);
@@ -352,7 +363,7 @@
int ret = 0;
mdata->use_spimem = true;
-@@ -887,9 +917,11 @@ static int mtk_spi_mem_exec_op(struct sp
+@@ -887,9 +917,11 @@ static int mtk_spi_mem_exec_op(struct spi_mem *mem,
op->dummy.buswidth == 4 ||
op->data.buswidth == 4)
nio = 4;
@@ -365,7 +376,7 @@
reg_val |= SPI_CFG3_IPM_HALF_DUPLEX_EN;
if (op->data.dir == SPI_MEM_DATA_IN)
-@@ -902,11 +934,13 @@ static int mtk_spi_mem_exec_op(struct sp
+@@ -902,11 +934,13 @@ static int mtk_spi_mem_exec_op(struct spi_mem *mem,
if (op->data.dir == SPI_MEM_DATA_OUT)
tx_size += op->data.nbytes;
@@ -381,7 +392,7 @@
tx_tmp_buf[0] = op->cmd.opcode;
-@@ -937,12 +971,15 @@ static int mtk_spi_mem_exec_op(struct sp
+@@ -937,12 +971,15 @@ static int mtk_spi_mem_exec_op(struct spi_mem *mem,
if (op->data.dir == SPI_MEM_DATA_IN) {
if(!IS_ALIGNED((size_t)op->data.buf.in, 4)) {
@@ -402,7 +413,7 @@
mdata->rx_dma = dma_map_single(mdata->dev,
rx_tmp_buf,
-@@ -950,7 +987,7 @@ static int mtk_spi_mem_exec_op(struct sp
+@@ -950,7 +987,7 @@ static int mtk_spi_mem_exec_op(struct spi_mem *mem,
DMA_FROM_DEVICE);
if (dma_mapping_error(mdata->dev, mdata->rx_dma)) {
ret = -ENOMEM;
@@ -428,7 +439,7 @@
unmap_tx_dma:
dma_unmap_single(mdata->dev, mdata->tx_dma,
tx_size, DMA_TO_DEVICE);
-@@ -1003,19 +1042,19 @@ static const struct spi_controller_mem_o
+@@ -1003,19 +1042,19 @@ static const struct spi_controller_mem_ops mtk_spi_mem_ops = {
static int mtk_spi_probe(struct platform_device *pdev)
{
@@ -452,7 +463,7 @@
master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LSB_FIRST;
master->set_cs = mtk_spi_set_cs;
-@@ -1023,23 +1062,16 @@ static int mtk_spi_probe(struct platform
+@@ -1023,23 +1062,16 @@ static int mtk_spi_probe(struct platform_device *pdev)
master->transfer_one = mtk_spi_transfer_one;
master->can_dma = mtk_spi_can_dma;
master->setup = mtk_spi_setup;
@@ -478,7 +489,7 @@
if (mdata->dev_comp->enhance_timing)
master->mode_bits |= SPI_CS_HIGH;
-@@ -1050,27 +1082,23 @@ static int mtk_spi_probe(struct platform
+@@ -1050,27 +1082,23 @@ static int mtk_spi_probe(struct platform_device *pdev)
if (mdata->dev_comp->ipm_design)
master->mode_bits |= SPI_LOOP;
@@ -511,7 +522,7 @@
sizeof(u32), GFP_KERNEL);
if (!mdata->pad_sel) {
ret = -ENOMEM;
-@@ -1078,11 +1106,11 @@ static int mtk_spi_probe(struct platform
+@@ -1078,11 +1106,11 @@ static int mtk_spi_probe(struct platform_device *pdev)
}
for (i = 0; i < mdata->pad_num; i++) {
@@ -525,7 +536,7 @@
i, mdata->pad_sel[i]);
ret = -EINVAL;
goto err_put_master;
-@@ -1103,122 +1131,118 @@ static int mtk_spi_probe(struct platform
+@@ -1103,122 +1131,118 @@ static int mtk_spi_probe(struct platform_device *pdev)
goto err_put_master;
}
@@ -702,7 +713,7 @@
err_put_master:
spi_master_put(master);
-@@ -1229,11 +1253,22 @@ static int mtk_spi_remove(struct platfor
+@@ -1229,11 +1253,22 @@ static int mtk_spi_remove(struct platform_device *pdev)
{
struct spi_master *master = platform_get_drvdata(pdev);
struct mtk_spi *mdata = spi_master_get_devdata(master);
@@ -726,7 +737,7 @@
return 0;
}
-@@ -1250,8 +1285,7 @@ static int mtk_spi_suspend(struct device
+@@ -1250,8 +1285,7 @@ static int mtk_spi_suspend(struct device *dev)
if (!pm_runtime_suspended(dev)) {
clk_disable_unprepare(mdata->spi_clk);
@@ -736,7 +747,7 @@
}
return ret;
-@@ -1264,26 +1298,24 @@ static int mtk_spi_resume(struct device
+@@ -1264,26 +1298,24 @@ static int mtk_spi_resume(struct device *dev)
struct mtk_spi *mdata = spi_master_get_devdata(master);
if (!pm_runtime_suspended(dev)) {
@@ -771,7 +782,7 @@
}
return ret;
-@@ -1296,10 +1328,13 @@ static int mtk_spi_runtime_suspend(struc
+@@ -1296,10 +1328,13 @@ static int mtk_spi_runtime_suspend(struct device *dev)
struct spi_master *master = dev_get_drvdata(dev);
struct mtk_spi *mdata = spi_master_get_devdata(master);
@@ -788,7 +799,7 @@
return 0;
}
-@@ -1310,18 +1345,31 @@ static int mtk_spi_runtime_resume(struct
+@@ -1310,18 +1345,31 @@ static int mtk_spi_runtime_resume(struct device *dev)
struct mtk_spi *mdata = spi_master_get_devdata(master);
int ret;
@@ -827,3 +838,6 @@
}
return 0;
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2376-drivers-spi-mt65xx-add-dts-buswidth-flow.patch b/target/linux/mediatek/patches-5.4/999-2376-drivers-spi-mt65xx-add-dts-buswidth-flow.patch
new file mode 100644
index 0000000..ffe6003
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2376-drivers-spi-mt65xx-add-dts-buswidth-flow.patch
@@ -0,0 +1,26 @@
+From 89740f80939ddd9b73648da2a97c8f31ae16050a Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:22 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2376-drivers-spi-mt65xx-add-dts-buswidth-flow.patch]
+
+---
+ drivers/spi/spi-mt65xx.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c
+index b80f8dcd9..ac95e26c1 100644
+--- a/drivers/spi/spi-mt65xx.c
++++ b/drivers/spi/spi-mt65xx.c
+@@ -1080,7 +1080,7 @@ static int mtk_spi_probe(struct platform_device *pdev)
+ master->flags = SPI_MASTER_MUST_TX;
+
+ if (mdata->dev_comp->ipm_design)
+- master->mode_bits |= SPI_LOOP;
++ master->mode_bits |= SPI_LOOP | SPI_RX_DUAL | SPI_TX_DUAL | SPI_RX_QUAD | SPI_TX_QUAD;
+
+ if (mdata->dev_comp->ipm_design) {
+ mdata->dev = dev;
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0322-fix-dirty-race-between-do_tmpfile.patch b/target/linux/mediatek/patches-5.4/999-2380-fix-dirty-race-between-do_tmpfile.patch
similarity index 88%
rename from target/linux/mediatek/patches-5.4/0322-fix-dirty-race-between-do_tmpfile.patch
rename to target/linux/mediatek/patches-5.4/999-2380-fix-dirty-race-between-do_tmpfile.patch
index 94ce9bd..63943f8 100644
--- a/target/linux/mediatek/patches-5.4/0322-fix-dirty-race-between-do_tmpfile.patch
+++ b/target/linux/mediatek/patches-5.4/999-2380-fix-dirty-race-between-do_tmpfile.patch
@@ -1,4 +1,15 @@
+From d08d34636d1384d5ddb141e0bb72afa591c12118 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:22 +0800
+Subject: [PATCH]
+ [spi-and-storage][999-2380-fix-dirty-race-between-do_tmpfile.patch]
+
+---
+ fs/ubifs/dir.c | 60 +++++++++++++++++++++++++-------------------------
+ 1 file changed, 30 insertions(+), 30 deletions(-)
+
diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
+index 332c0b02a..97b231c43 100644
--- a/fs/ubifs/dir.c
+++ b/fs/ubifs/dir.c
@@ -356,6 +356,32 @@ out_budg:
@@ -98,3 +109,6 @@
static int ubifs_link(struct dentry *old_dentry, struct inode *dir,
struct dentry *dentry)
{
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2500-cpufreq-add-the-missing-platform-driver-unregister.patch b/target/linux/mediatek/patches-5.4/999-2500-cpufreq-add-the-missing-platform-driver-unregister.patch
new file mode 100644
index 0000000..b03956f
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2500-cpufreq-add-the-missing-platform-driver-unregister.patch
@@ -0,0 +1,25 @@
+From 074bd5464b2e05ad5c8ed9ba0442a8abdfd4e2fc Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:22 +0800
+Subject: [PATCH]
+ [adv-feature][999-2500-cpufreq-add-the-missing-platform-driver-unregister.patch]
+
+---
+ drivers/cpufreq/mediatek-cpufreq.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
+index 927ebc582..03bb7b58d 100644
+--- a/drivers/cpufreq/mediatek-cpufreq.c
++++ b/drivers/cpufreq/mediatek-cpufreq.c
+@@ -573,6 +573,7 @@ static int __init mtk_cpufreq_driver_init(void)
+ pdev = platform_device_register_simple("mtk-cpufreq", -1, NULL, 0);
+ if (IS_ERR(pdev)) {
+ pr_err("failed to register mtk-cpufreq platform device\n");
++ platform_driver_unregister(&mtk_cpufreq_platdrv);
+ return PTR_ERR(pdev);
+ }
+
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0002-cpufreq-Enable-clocks-and-regulators.patch b/target/linux/mediatek/patches-5.4/999-2501-cpufreq-Enable-clocks-and-regulators.patch
similarity index 85%
rename from target/linux/mediatek/patches-5.4/0002-cpufreq-Enable-clocks-and-regulators.patch
rename to target/linux/mediatek/patches-5.4/999-2501-cpufreq-Enable-clocks-and-regulators.patch
index 2fa9359..ca84955 100644
--- a/target/linux/mediatek/patches-5.4/0002-cpufreq-Enable-clocks-and-regulators.patch
+++ b/target/linux/mediatek/patches-5.4/999-2501-cpufreq-Enable-clocks-and-regulators.patch
@@ -1,5 +1,15 @@
+From 31b16ccb455139f23e4989c0795564350774c8c6 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:22 +0800
+Subject: [PATCH]
+ [adv-feature][999-2501-cpufreq-Enable-clocks-and-regulators.patch]
+
+---
+ drivers/cpufreq/mediatek-cpufreq.c | 41 +++++++++++++++++++++++++++---
+ 1 file changed, 37 insertions(+), 4 deletions(-)
+
diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
-index 03bb7b5..010a947 100644
+index 03bb7b58d..010a947a6 100644
--- a/drivers/cpufreq/mediatek-cpufreq.c
+++ b/drivers/cpufreq/mediatek-cpufreq.c
@@ -351,6 +351,12 @@ static int mtk_cpu_dvfs_info_init(struct mtk_cpu_dvfs_info *info, int cpu)
@@ -86,3 +96,6 @@
dev_pm_opp_of_cpumask_remove_table(&info->cpus);
}
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0003-cpufreq-add-mt7988a-spim-snand-support.patch b/target/linux/mediatek/patches-5.4/999-2502-cpufreq-add-mt7988a-spim-snand-support.patch
similarity index 94%
rename from target/linux/mediatek/patches-5.4/0003-cpufreq-add-mt7988a-spim-snand-support.patch
rename to target/linux/mediatek/patches-5.4/999-2502-cpufreq-add-mt7988a-spim-snand-support.patch
index ee87f4e..b40509d 100644
--- a/target/linux/mediatek/patches-5.4/0003-cpufreq-add-mt7988a-spim-snand-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2502-cpufreq-add-mt7988a-spim-snand-support.patch
@@ -1,5 +1,15 @@
+From 8abbdaf99bd93b9009482e49c94455d5c10a29f6 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:23 +0800
+Subject: [PATCH]
+ [adv-feature][999-2502-cpufreq-add-mt7988a-spim-snand-support.patch]
+
+---
+ drivers/cpufreq/mediatek-cpufreq.c | 83 +++++++++++++++++++++++++++++-
+ 1 file changed, 81 insertions(+), 2 deletions(-)
+
diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
-index 010a947..291f629 100644
+index 010a947a6..b23b6d2b4 100644
--- a/drivers/cpufreq/mediatek-cpufreq.c
+++ b/drivers/cpufreq/mediatek-cpufreq.c
@@ -38,6 +38,7 @@ struct mtk_cpu_dvfs_info {
@@ -210,3 +220,6 @@
{ }
};
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0007-cpufreq-mtk-vbining-add-mt7988-support.patch b/target/linux/mediatek/patches-5.4/999-2503-cpufreq-mtk-vbining-add-mt7988-support.patch
similarity index 78%
rename from target/linux/mediatek/patches-5.4/0007-cpufreq-mtk-vbining-add-mt7988-support.patch
rename to target/linux/mediatek/patches-5.4/999-2503-cpufreq-mtk-vbining-add-mt7988-support.patch
index aa31f22..032d163 100644
--- a/target/linux/mediatek/patches-5.4/0007-cpufreq-mtk-vbining-add-mt7988-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2503-cpufreq-mtk-vbining-add-mt7988-support.patch
@@ -1,5 +1,15 @@
+From 96af4d1381b43bafba252d38c2a344f1011de638 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:23 +0800
+Subject: [PATCH]
+ [adv-feature][999-2503-cpufreq-mtk-vbining-add-mt7988-support.patch]
+
+---
+ drivers/cpufreq/mediatek-cpufreq.c | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
diff --git a/drivers/cpufreq/mediatek-cpufreq.c b/drivers/cpufreq/mediatek-cpufreq.c
-index b23b6d2..147a224 100644
+index b23b6d2b4..c22945100 100644
--- a/drivers/cpufreq/mediatek-cpufreq.c
+++ b/drivers/cpufreq/mediatek-cpufreq.c
@@ -15,6 +15,7 @@
@@ -45,3 +55,6 @@
ret = dev_pm_opp_init_cpufreq_table(info->cpu_dev, &freq_table);
if (ret) {
pr_err("failed to init cpufreq table for cpu%d: %d\n",
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0950-add-pmic-config.patch b/target/linux/mediatek/patches-5.4/999-2530-add-pmic-config.patch
similarity index 76%
rename from target/linux/mediatek/patches-5.4/0950-add-pmic-config.patch
rename to target/linux/mediatek/patches-5.4/999-2530-add-pmic-config.patch
index f5384f3..0194261 100644
--- a/target/linux/mediatek/patches-5.4/0950-add-pmic-config.patch
+++ b/target/linux/mediatek/patches-5.4/999-2530-add-pmic-config.patch
@@ -1,5 +1,15 @@
+From 4ff5fd6b2d7df7b572bce364d6a1853665e378ac Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:23 +0800
+Subject: [PATCH] [adv-feature][999-2530-add-pmic-config.patch]
+
+---
+ drivers/regulator/Kconfig | 10 ++++++++++
+ drivers/regulator/Makefile | 1 +
+ 2 files changed, 11 insertions(+)
+
diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig
-index 3ee6353..2e393a7 100644
+index 3ee63531f..5c573ced5 100644
--- a/drivers/regulator/Kconfig
+++ b/drivers/regulator/Kconfig
@@ -798,6 +798,16 @@ config REGULATOR_RT5033
@@ -20,7 +30,7 @@
tristate "Samsung S2MPA01 voltage regulator"
depends on MFD_SEC_CORE
diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile
-index 2210ba5..bf75b77 100644
+index 2210ba56f..bf75b7755 100644
--- a/drivers/regulator/Makefile
+++ b/drivers/regulator/Makefile
@@ -100,6 +100,7 @@ obj-$(CONFIG_REGULATOR_RC5T583) += rc5t583-regulator.o
@@ -32,5 +42,5 @@
obj-$(CONFIG_REGULATOR_S2MPS11) += s2mps11.o
obj-$(CONFIG_REGULATOR_S5M8767) += s5m8767.o
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/999-2550-dual-image-mount-rootfs.patch b/target/linux/mediatek/patches-5.4/999-2550-dual-image-mount-rootfs.patch
new file mode 100644
index 0000000..350e7d3
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2550-dual-image-mount-rootfs.patch
@@ -0,0 +1,40 @@
+From 7be8614176dc79bc242a12b7669f330058e36df6 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:24 +0800
+Subject: [PATCH] [adv-feature][999-2550-dual-image-mount-rootfs.patch]
+
+---
+ init/do_mounts.c | 3 ++-
+ kernel/boot_param.c | 2 +-
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/init/do_mounts.c b/init/do_mounts.c
+index cd5fca8aa..2dfc0dac7 100644
+--- a/init/do_mounts.c
++++ b/init/do_mounts.c
+@@ -576,7 +576,8 @@ void __init mount_root(void)
+ }
+ #endif
+ #ifdef CONFIG_MTD_ROOTFS_ROOT_DEV
+- if (!mount_ubi_rootfs())
++ extern bool dual_boot;
++ if (!dual_boot && !mount_ubi_rootfs())
+ return;
+ #endif
+ #ifdef CONFIG_BLOCK
+diff --git a/kernel/boot_param.c b/kernel/boot_param.c
+index 3dfe828bc..cc0b2b8b0 100644
+--- a/kernel/boot_param.c
++++ b/kernel/boot_param.c
+@@ -10,7 +10,7 @@
+
+ #define BOOT_PARAM_STR_MAX_LEN 256
+
+-static bool dual_boot;
++bool dual_boot;
+ module_param(dual_boot, bool, 0444);
+
+ static bool no_split_rootfs_data;
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/1015-pcie-add-pcie-gen3-upstream-driver.patch b/target/linux/mediatek/patches-5.4/999-2600-pcie-add-pcie-gen3-upstream-driver.patch
similarity index 76%
rename from target/linux/mediatek/patches-5.4/1015-pcie-add-pcie-gen3-upstream-driver.patch
rename to target/linux/mediatek/patches-5.4/999-2600-pcie-add-pcie-gen3-upstream-driver.patch
index 4b99d9d..6e5b96a 100644
--- a/target/linux/mediatek/patches-5.4/1015-pcie-add-pcie-gen3-upstream-driver.patch
+++ b/target/linux/mediatek/patches-5.4/999-2600-pcie-add-pcie-gen3-upstream-driver.patch
@@ -1,5 +1,16 @@
+From 99a6452c7481de2f1a36699dd60361c49602cc77 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:24 +0800
+Subject: [PATCH]
+ [high-speed-io][999-2600-pcie-add-pcie-gen3-upstream-driver.patch]
+
+---
+ drivers/pci/controller/Kconfig | 13 +++++++++++++
+ drivers/pci/controller/Makefile | 1 +
+ 2 files changed, 14 insertions(+)
+
diff --git a/drivers/pci/controller/Kconfig b/drivers/pci/controller/Kconfig
-index 70e0782..67988f8 100644
+index 70e078238..67988f868 100644
--- a/drivers/pci/controller/Kconfig
+++ b/drivers/pci/controller/Kconfig
@@ -241,6 +241,19 @@ config PCIE_MEDIATEK
@@ -23,7 +34,7 @@
bool "Mobiveil AXI PCIe controller"
depends on ARCH_ZYNQMP || COMPILE_TEST
diff --git a/drivers/pci/controller/Makefile b/drivers/pci/controller/Makefile
-index a2a22c9..54a496a 100644
+index a2a22c9d9..54a496a68 100644
--- a/drivers/pci/controller/Makefile
+++ b/drivers/pci/controller/Makefile
@@ -27,6 +27,7 @@ obj-$(CONFIG_PCIE_ROCKCHIP) += pcie-rockchip.o
@@ -34,3 +45,6 @@
obj-$(CONFIG_PCIE_MOBIVEIL) += pcie-mobiveil.o
obj-$(CONFIG_PCIE_TANGO_SMP8759) += pcie-tango.o
obj-$(CONFIG_VMD) += vmd.o
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/1024-pcie-add-multi-MSI-support.patch b/target/linux/mediatek/patches-5.4/999-2601-pcie-add-multi-MSI-support.patch
similarity index 75%
rename from target/linux/mediatek/patches-5.4/1024-pcie-add-multi-MSI-support.patch
rename to target/linux/mediatek/patches-5.4/999-2601-pcie-add-multi-MSI-support.patch
index 5cf486c..80ce145 100644
--- a/target/linux/mediatek/patches-5.4/1024-pcie-add-multi-MSI-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2601-pcie-add-multi-MSI-support.patch
@@ -1,8 +1,17 @@
+From f001395855db2d04f499a2e2936f1d54dcaab225 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:24 +0800
+Subject: [PATCH] [high-speed-io][999-2601-pcie-add-multi-MSI-support.patch]
+
+---
+ drivers/pci/controller/pcie-mediatek.c | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
diff --git a/drivers/pci/controller/pcie-mediatek.c b/drivers/pci/controller/pcie-mediatek.c
-index 2a54fa7a3..132b3204c 100644
+index db3672917..44a046005 100644
--- a/drivers/pci/controller/pcie-mediatek.c
+++ b/drivers/pci/controller/pcie-mediatek.c
-@@ -446,24 +446,24 @@ static int mtk_pcie_irq_domain_alloc(struct irq_domain *domain, unsigned int vir
+@@ -440,24 +440,24 @@ static int mtk_pcie_irq_domain_alloc(struct irq_domain *domain, unsigned int vir
unsigned int nr_irqs, void *args)
{
struct mtk_pcie_port *port = domain->host_data;
@@ -36,7 +45,7 @@
return 0;
}
-@@ -501,7 +501,7 @@ static struct irq_chip mtk_msi_irq_chip = {
+@@ -495,7 +495,7 @@ static struct irq_chip mtk_msi_irq_chip = {
static struct msi_domain_info mtk_msi_domain_info = {
.flags = (MSI_FLAG_USE_DEF_DOM_OPS | MSI_FLAG_USE_DEF_CHIP_OPS |
@@ -45,7 +54,7 @@
.chip = &mtk_msi_irq_chip,
};
-@@ -633,14 +633,14 @@ static void mtk_pcie_intr_handler(struct irq_desc *desc)
+@@ -627,14 +627,14 @@ static void mtk_pcie_intr_handler(struct irq_desc *desc)
if (status & MSI_STATUS){
unsigned long imsi_status;
@@ -62,3 +71,6 @@
}
}
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/8000-PATCH-1-4-tphy-support-type-switch-by-pericfg.patch b/target/linux/mediatek/patches-5.4/999-2610-PATCH-1-4-tphy-support-type-switch-by-pericfg.patch
similarity index 77%
rename from target/linux/mediatek/patches-5.4/8000-PATCH-1-4-tphy-support-type-switch-by-pericfg.patch
rename to target/linux/mediatek/patches-5.4/999-2610-PATCH-1-4-tphy-support-type-switch-by-pericfg.patch
index 032ef35..bf3a3c7 100644
--- a/target/linux/mediatek/patches-5.4/8000-PATCH-1-4-tphy-support-type-switch-by-pericfg.patch
+++ b/target/linux/mediatek/patches-5.4/999-2610-PATCH-1-4-tphy-support-type-switch-by-pericfg.patch
@@ -1,21 +1,15 @@
-From 34687407776d46f08926b91f118adc484c4ac231 Mon Sep 17 00:00:00 2001
-From: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Date: Fri, 17 Sep 2021 15:56:53 +0800
-Subject: [PATCH 1/8] phy: phy-mtk-tphy: support type switch by pericfg
+From 3ef64d448a36853279de5324f9bf00041b9f3ce5 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:25 +0800
+Subject: [PATCH]
+ [high-speed-io][999-2610-PATCH-1-4-tphy-support-type-switch-by-pericfg.patch]
-Add support type switch between USB3, PCIe, SATA and SGMII by
-pericfg register, this is used to take the place of efuse or
-jumper.
-
-Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
-Signed-off-by: Vinod Koul <vkoul@kernel.org>
-Signed-off-by: Zhanyong Wang <zhanyong.wang@mediatek.com>
---
drivers/phy/mediatek/phy-mtk-tphy.c | 83 ++++++++++++++++++++++++++++-
1 file changed, 81 insertions(+), 2 deletions(-)
diff --git a/drivers/phy/mediatek/phy-mtk-tphy.c b/drivers/phy/mediatek/phy-mtk-tphy.c
-index cb2ed3b25068..a59fe65f69e5 100644
+index d1ecf0880..c6e073401 100644
--- a/drivers/phy/mediatek/phy-mtk-tphy.c
+++ b/drivers/phy/mediatek/phy-mtk-tphy.c
@@ -10,6 +10,7 @@
@@ -26,9 +20,9 @@
#include <linux/module.h>
#include <linux/of_address.h>
#include <linux/of_device.h>
-@@ -263,6 +264,14 @@
- #define RG_CDR_BIRLTD0_GEN3_MSK GENMASK(4, 0)
- #define RG_CDR_BIRLTD0_GEN3_VAL(x) (0x1f & (x))
+@@ -268,6 +269,14 @@
+ #define HIF_SYSCFG1 0x14
+ #define HIF_SYSCFG1_PHY2_MASK (0x3 << 20)
+/* PHY switch between pcie/usb3/sgmii/sata */
+#define USB_PHY_SWITCH_CTRL 0x0
@@ -41,7 +35,7 @@
enum mtk_phy_version {
MTK_PHY_V1 = 1,
MTK_PHY_V2,
-@@ -296,7 +305,10 @@ struct mtk_phy_instance {
+@@ -301,7 +310,10 @@ struct mtk_phy_instance {
};
struct clk *ref_clk; /* reference clock of anolog phy */
u32 index;
@@ -53,7 +47,7 @@
int eye_src;
int eye_vrt;
int eye_term;
-@@ -890,6 +902,64 @@ static void u2_phy_props_set(struct mtk_tphy *tphy,
+@@ -900,6 +912,64 @@ static void u2_phy_props_set(struct mtk_tphy *tphy,
}
}
@@ -118,7 +112,7 @@
static int mtk_phy_init(struct phy *phy)
{
struct mtk_phy_instance *instance = phy_get_drvdata(phy);
-@@ -922,6 +992,9 @@ static int mtk_phy_init(struct phy *phy)
+@@ -932,6 +1002,9 @@ static int mtk_phy_init(struct phy *phy)
case PHY_TYPE_SATA:
sata_phy_instance_init(tphy, instance);
break;
@@ -128,7 +122,7 @@
default:
dev_err(tphy->dev, "incompatible PHY type\n");
return -EINVAL;
-@@ -1010,7 +1083,8 @@ static struct phy *mtk_phy_xlate(struct device *dev,
+@@ -1020,7 +1093,8 @@ static struct phy *mtk_phy_xlate(struct device *dev,
if (!(instance->type == PHY_TYPE_USB2 ||
instance->type == PHY_TYPE_USB3 ||
instance->type == PHY_TYPE_PCIE ||
@@ -138,7 +132,7 @@
dev_err(dev, "unsupported device type: %d\n", instance->type);
return ERR_PTR(-EINVAL);
}
-@@ -1025,6 +1099,7 @@ static struct phy *mtk_phy_xlate(struct device *dev,
+@@ -1035,6 +1109,7 @@ static struct phy *mtk_phy_xlate(struct device *dev,
}
phy_parse_property(tphy, instance);
@@ -146,7 +140,7 @@
return instance->phy;
}
-@@ -1163,6 +1238,10 @@ static int mtk_tphy_probe(struct platform_device *pdev)
+@@ -1183,6 +1258,10 @@ static int mtk_tphy_probe(struct platform_device *pdev)
retval = PTR_ERR(instance->ref_clk);
goto put_child;
}
@@ -158,5 +152,5 @@
provider = devm_of_phy_provider_register(dev, mtk_phy_xlate);
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/8006-phy-phy-mtk-tphy-add-support-efuse-setting.patch b/target/linux/mediatek/patches-5.4/999-2611-phy-phy-mtk-tphy-add-support-efuse-setting.patch
similarity index 88%
rename from target/linux/mediatek/patches-5.4/8006-phy-phy-mtk-tphy-add-support-efuse-setting.patch
rename to target/linux/mediatek/patches-5.4/999-2611-phy-phy-mtk-tphy-add-support-efuse-setting.patch
index 05eb738..1f958e8 100644
--- a/target/linux/mediatek/patches-5.4/8006-phy-phy-mtk-tphy-add-support-efuse-setting.patch
+++ b/target/linux/mediatek/patches-5.4/999-2611-phy-phy-mtk-tphy-add-support-efuse-setting.patch
@@ -1,21 +1,15 @@
-From a2eaa93a5887ddd20af0373244481139627d0d77 Mon Sep 17 00:00:00 2001
-From: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Date: Mon, 8 Nov 2021 14:51:38 +0800
-Subject: [PATCH 2/8] phy: phy-mtk-tphy: add support efuse setting
+From 004157ce74543694981c461e95ac0cc1fa8721d7 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:25 +0800
+Subject: [PATCH]
+ [high-speed-io][999-2611-phy-phy-mtk-tphy-add-support-efuse-setting.patch]
-Due to some SoCs have a bit shift issue that will drop a bit for usb3
-phy or pcie phy, fix it by adding software efuse reading and setting,
-but only support it optionally for versoin.
-
-Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
-Signed-off-by: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Change-Id: Ibf88868668b3889f18c7930531981400cac732f1
---
drivers/phy/mediatek/phy-mtk-tphy.c | 195 ++++++++++++++++++++++++++++
1 file changed, 195 insertions(+)
diff --git a/drivers/phy/mediatek/phy-mtk-tphy.c b/drivers/phy/mediatek/phy-mtk-tphy.c
-index a59fe65f69e5..ce2731b2f5ff 100644
+index c6e073401..fcf8c845f 100644
--- a/drivers/phy/mediatek/phy-mtk-tphy.c
+++ b/drivers/phy/mediatek/phy-mtk-tphy.c
@@ -12,6 +12,7 @@
@@ -26,7 +20,7 @@
#include <linux/of_address.h>
#include <linux/of_device.h>
#include <linux/phy/phy.h>
-@@ -39,11 +40,16 @@
+@@ -41,11 +42,16 @@
#define SSUSB_SIFSLV_V2_U3PHYD 0x200
#define SSUSB_SIFSLV_V2_U3PHYA 0x400
@@ -43,7 +37,7 @@
#define PA1_RG_VRT_SEL GENMASK(14, 12)
#define PA1_RG_VRT_SEL_VAL(x) ((0x7 & (x)) << 12)
#define PA1_RG_TERM_SEL GENMASK(10, 8)
-@@ -115,6 +121,8 @@
+@@ -117,6 +123,8 @@
#define P3C_RG_SWRST_U3_PHYD_FORCE_EN BIT(24)
#define U3P_U3_PHYA_REG0 0x000
@@ -52,7 +46,7 @@
#define P3A_RG_CLKDRV_OFF GENMASK(3, 2)
#define P3A_RG_CLKDRV_OFF_VAL(x) ((0x3 & (x)) << 2)
-@@ -169,6 +177,25 @@
+@@ -171,6 +179,25 @@
#define P3D_RG_FWAKE_TH GENMASK(21, 16)
#define P3D_RG_FWAKE_TH_VAL(x) ((0x3f & (x)) << 16)
@@ -78,7 +72,7 @@
#define U3P_U3_PHYD_CDR1 0x05c
#define P3D_RG_CDR_BIR_LTD1 GENMASK(28, 24)
#define P3D_RG_CDR_BIR_LTD1_VAL(x) ((0x1f & (x)) << 24)
-@@ -275,11 +302,23 @@
+@@ -280,11 +307,23 @@
enum mtk_phy_version {
MTK_PHY_V1 = 1,
MTK_PHY_V2,
@@ -102,7 +96,7 @@
enum mtk_phy_version version;
};
-@@ -304,6 +343,10 @@ struct mtk_phy_instance {
+@@ -309,6 +348,10 @@ struct mtk_phy_instance {
struct u3phy_banks u3_banks;
};
struct clk *ref_clk; /* reference clock of anolog phy */
@@ -113,7 +107,7 @@
u32 index;
u32 type;
struct regmap *type_sw;
-@@ -960,6 +1003,139 @@ static int phy_type_set(struct mtk_phy_instance *instance)
+@@ -970,6 +1013,139 @@ static int phy_type_set(struct mtk_phy_instance *instance)
return 0;
}
@@ -253,7 +247,7 @@
static int mtk_phy_init(struct phy *phy)
{
struct mtk_phy_instance *instance = phy_get_drvdata(phy);
-@@ -978,6 +1154,8 @@ static int mtk_phy_init(struct phy *phy)
+@@ -988,6 +1164,8 @@ static int mtk_phy_init(struct phy *phy)
return ret;
}
@@ -262,7 +256,7 @@
switch (instance->type) {
case PHY_TYPE_USB2:
u2_phy_instance_init(tphy, instance);
-@@ -1062,6 +1240,7 @@ static struct phy *mtk_phy_xlate(struct device *dev,
+@@ -1072,6 +1250,7 @@ static struct phy *mtk_phy_xlate(struct device *dev,
struct mtk_phy_instance *instance = NULL;
struct device_node *phy_np = args->np;
int index;
@@ -270,7 +264,7 @@
if (args->args_count != 1) {
dev_err(dev, "invalid number of cells in 'phy' property\n");
-@@ -1098,6 +1277,10 @@ static struct phy *mtk_phy_xlate(struct device *dev,
+@@ -1108,6 +1287,10 @@ static struct phy *mtk_phy_xlate(struct device *dev,
return ERR_PTR(-EINVAL);
}
@@ -281,7 +275,7 @@
phy_parse_property(tphy, instance);
phy_type_set(instance);
-@@ -1120,14 +1303,26 @@ static const struct mtk_phy_pdata tphy_v1_pdata = {
+@@ -1130,14 +1313,26 @@ static const struct mtk_phy_pdata tphy_v1_pdata = {
static const struct mtk_phy_pdata tphy_v2_pdata = {
.avoid_rx_sen_degradation = false,
@@ -309,5 +303,5 @@
{ .compatible = "mediatek,mt2701-u3phy", .data = &tphy_v1_pdata },
{ .compatible = "mediatek,mt2712-u3phy", .data = &tphy_v2_pdata },
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/8007-phy-phy-mtk-tphy-Add-PCIe-2-lane-efuse-support.patch b/target/linux/mediatek/patches-5.4/999-2612-phy-phy-mtk-tphy-Add-PCIe-2-lane-efuse-support.patch
similarity index 88%
rename from target/linux/mediatek/patches-5.4/8007-phy-phy-mtk-tphy-Add-PCIe-2-lane-efuse-support.patch
rename to target/linux/mediatek/patches-5.4/999-2612-phy-phy-mtk-tphy-Add-PCIe-2-lane-efuse-support.patch
index 1c6711f..1a70ada 100644
--- a/target/linux/mediatek/patches-5.4/8007-phy-phy-mtk-tphy-Add-PCIe-2-lane-efuse-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2612-phy-phy-mtk-tphy-Add-PCIe-2-lane-efuse-support.patch
@@ -1,21 +1,18 @@
-From 2abe803824f0331c42eb9853199d5f147cee3a06 Mon Sep 17 00:00:00 2001
-From: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Date: Tue, 25 Jan 2022 16:50:47 +0800
-Subject: [PATCH 3/8] phy: phy-mtk-tphy: Add PCIe 2 lane efuse support
+From e63fdeaa652ad5fd8d7a591e346abe587fd9bede Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:25 +0800
+Subject: [PATCH]
+ [high-speed-io][999-2612-phy-phy-mtk-tphy-Add-PCIe-2-lane-efuse-support.patch]
-Add PCIe 2 lane efuse support in tphy driver.
-
-Signed-off-by: Jie Yang <jieyy.yang@mediatek.com>
-Signed-off-by: Zhanyong Wang <zhanyong.wang@mediatek.com>
---
drivers/phy/mediatek/phy-mtk-tphy.c | 140 ++++++++++++++++++++++++++++
1 file changed, 140 insertions(+)
diff --git a/drivers/phy/mediatek/phy-mtk-tphy.c b/drivers/phy/mediatek/phy-mtk-tphy.c
-index ce2731b2f5ff..b855e759b0da 100644
+index fcf8c845f..6c07885be 100644
--- a/drivers/phy/mediatek/phy-mtk-tphy.c
+++ b/drivers/phy/mediatek/phy-mtk-tphy.c
-@@ -40,6 +40,15 @@
+@@ -42,6 +42,15 @@
#define SSUSB_SIFSLV_V2_U3PHYD 0x200
#define SSUSB_SIFSLV_V2_U3PHYA 0x400
@@ -31,7 +28,7 @@
#define U3P_MISC_REG1 0x04
#define MR1_EFUSE_AUTO_LOAD_DIS BIT(6)
-@@ -303,6 +312,7 @@ enum mtk_phy_version {
+@@ -308,6 +317,7 @@ enum mtk_phy_version {
MTK_PHY_V1 = 1,
MTK_PHY_V2,
MTK_PHY_V3,
@@ -39,7 +36,7 @@
};
struct mtk_phy_pdata {
-@@ -347,6 +357,9 @@ struct mtk_phy_instance {
+@@ -352,6 +362,9 @@ struct mtk_phy_instance {
u32 efuse_intr;
u32 efuse_tx_imp;
u32 efuse_rx_imp;
@@ -49,7 +46,7 @@
u32 index;
u32 type;
struct regmap *type_sw;
-@@ -890,6 +903,36 @@ static void phy_v2_banks_init(struct mtk_tphy *tphy,
+@@ -900,6 +913,36 @@ static void phy_v2_banks_init(struct mtk_tphy *tphy,
}
}
@@ -86,7 +83,7 @@
static void phy_parse_property(struct mtk_tphy *tphy,
struct mtk_phy_instance *instance)
{
-@@ -1072,6 +1115,40 @@ static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instanc
+@@ -1082,6 +1125,40 @@ static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instanc
dev_info(dev, "u3 efuse - intr %x, rx_imp %x, tx_imp %x\n",
instance->efuse_intr, instance->efuse_rx_imp,
instance->efuse_tx_imp);
@@ -127,7 +124,7 @@
break;
default:
dev_err(dev, "no sw efuse for type %d\n", instance->type);
-@@ -1105,6 +1182,31 @@ static void phy_efuse_set(struct mtk_phy_instance *instance)
+@@ -1115,6 +1192,31 @@ static void phy_efuse_set(struct mtk_phy_instance *instance)
break;
case PHY_TYPE_USB3:
@@ -159,7 +156,7 @@
case PHY_TYPE_PCIE:
tmp = readl(u3_banks->phyd + U3P_U3_PHYD_RSV);
tmp |= P3D_RG_EFUSE_AUTO_LOAD_DIS;
-@@ -1129,6 +1231,35 @@ static void phy_efuse_set(struct mtk_phy_instance *instance)
+@@ -1139,6 +1241,35 @@ static void phy_efuse_set(struct mtk_phy_instance *instance)
pr_err("%s set efuse, tx_imp %x, rx_imp %x intr %x\n",
__func__, instance->efuse_tx_imp,
instance->efuse_rx_imp, instance->efuse_intr);
@@ -195,7 +192,7 @@
break;
default:
dev_warn(dev, "no sw efuse for type %d\n", instance->type);
-@@ -1272,6 +1403,8 @@ static struct phy *mtk_phy_xlate(struct device *dev,
+@@ -1282,6 +1413,8 @@ static struct phy *mtk_phy_xlate(struct device *dev,
phy_v1_banks_init(tphy, instance);
} else if (tphy->pdata->version == MTK_PHY_V2) {
phy_v2_banks_init(tphy, instance);
@@ -204,7 +201,7 @@
} else {
dev_err(dev, "phy version is not supported\n");
return ERR_PTR(-EINVAL);
-@@ -1323,12 +1456,19 @@ static const struct mtk_phy_pdata mt8195_pdata = {
+@@ -1333,12 +1466,19 @@ static const struct mtk_phy_pdata mt8195_pdata = {
.version = MTK_PHY_V3,
};
@@ -225,5 +222,5 @@
};
MODULE_DEVICE_TABLE(of, mtk_tphy_id_table);
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/8008-phy-phy-mtk-tphy-add-auto-load-valid-check-mechanism.patch b/target/linux/mediatek/patches-5.4/999-2613-phy-phy-mtk-tphy-add-auto-load-valid-check-mechanism.patch
similarity index 81%
rename from target/linux/mediatek/patches-5.4/8008-phy-phy-mtk-tphy-add-auto-load-valid-check-mechanism.patch
rename to target/linux/mediatek/patches-5.4/999-2613-phy-phy-mtk-tphy-add-auto-load-valid-check-mechanism.patch
index e84ca6c..64e68c3 100644
--- a/target/linux/mediatek/patches-5.4/8008-phy-phy-mtk-tphy-add-auto-load-valid-check-mechanism.patch
+++ b/target/linux/mediatek/patches-5.4/999-2613-phy-phy-mtk-tphy-add-auto-load-valid-check-mechanism.patch
@@ -1,21 +1,18 @@
-From 355e7f114a47819c3c6545a97ad308d627da5d1a Mon Sep 17 00:00:00 2001
-From: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Date: Tue, 25 Jan 2022 19:03:34 +0800
-Subject: [PATCH 4/8] phy: phy-mtk-tphy: add auto-load-valid check mechanism
- support
+From 0e03f2c1ade35e8d40c87425414d0a6ccef0439c Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:25 +0800
+Subject: [PATCH]
+ [high-speed-io][999-2613-phy-phy-mtk-tphy-add-auto-load-valid-check-mechanism.patch]
-add auto-load-valid check mechanism support
-
-Signed-off-by: Zhanyong Wang <zhanyong.wang@mediatek.com>
---
drivers/phy/mediatek/phy-mtk-tphy.c | 67 +++++++++++++++++++++++++++--
1 file changed, 64 insertions(+), 3 deletions(-)
diff --git a/drivers/phy/mediatek/phy-mtk-tphy.c b/drivers/phy/mediatek/phy-mtk-tphy.c
-index b855e759b0da..a5b17a1aed5c 100644
+index 6c07885be..149464f37 100644
--- a/drivers/phy/mediatek/phy-mtk-tphy.c
+++ b/drivers/phy/mediatek/phy-mtk-tphy.c
-@@ -354,9 +354,13 @@ struct mtk_phy_instance {
+@@ -359,9 +359,13 @@ struct mtk_phy_instance {
};
struct clk *ref_clk; /* reference clock of anolog phy */
u32 efuse_sw_en;
@@ -29,7 +26,7 @@
u32 efuse_intr_ln1;
u32 efuse_tx_imp_ln1;
u32 efuse_rx_imp_ln1;
-@@ -1050,6 +1054,7 @@ static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instanc
+@@ -1060,6 +1064,7 @@ static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instanc
{
struct device *dev = &instance->phy->dev;
int ret = 0;
@@ -37,7 +34,7 @@
dev_err(dev, "try to get sw efuse\n");
-@@ -1068,6 +1073,20 @@ static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instanc
+@@ -1078,6 +1083,20 @@ static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instanc
switch (instance->type) {
case PHY_TYPE_USB2:
@@ -58,7 +55,7 @@
ret = nvmem_cell_read_variable_le_u32(dev, "intr", &instance->efuse_intr);
if (ret) {
dev_err(dev, "fail to get u2 intr efuse, %d\n", ret);
-@@ -1085,6 +1104,20 @@ static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instanc
+@@ -1095,6 +1114,20 @@ static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instanc
break;
case PHY_TYPE_USB3:
case PHY_TYPE_PCIE:
@@ -79,7 +76,7 @@
ret = nvmem_cell_read_variable_le_u32(dev, "intr", &instance->efuse_intr);
if (ret) {
dev_err(dev, "fail to get u3 intr efuse, %d\n", ret);
-@@ -1119,6 +1152,20 @@ static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instanc
+@@ -1129,6 +1162,20 @@ static int phy_efuse_get(struct mtk_tphy *tphy, struct mtk_phy_instance *instanc
if (tphy->pdata->version != MTK_PHY_V4)
break;
@@ -100,7 +97,7 @@
ret = nvmem_cell_read_variable_le_u32(dev, "intr_ln1", &instance->efuse_intr_ln1);
if (ret) {
dev_err(dev, "fail to get u3 lane1 intr efuse, %d\n", ret);
-@@ -1170,6 +1217,10 @@ static void phy_efuse_set(struct mtk_phy_instance *instance)
+@@ -1180,6 +1227,10 @@ static void phy_efuse_set(struct mtk_phy_instance *instance)
switch (instance->type) {
case PHY_TYPE_USB2:
@@ -111,7 +108,7 @@
tmp = readl(u2_banks->misc + U3P_MISC_REG1);
tmp |= MR1_EFUSE_AUTO_LOAD_DIS;
writel(tmp, u2_banks->misc + U3P_MISC_REG1);
-@@ -1182,6 +1233,10 @@ static void phy_efuse_set(struct mtk_phy_instance *instance)
+@@ -1192,6 +1243,10 @@ static void phy_efuse_set(struct mtk_phy_instance *instance)
break;
case PHY_TYPE_USB3:
@@ -122,7 +119,7 @@
tmp = readl(u3_banks->phyd + U3P_U3_PHYD_RSV);
tmp |= P3D_RG_EFUSE_AUTO_LOAD_DIS;
writel(tmp, u3_banks->phyd + U3P_U3_PHYD_RSV);
-@@ -1208,6 +1263,10 @@ static void phy_efuse_set(struct mtk_phy_instance *instance)
+@@ -1218,6 +1273,10 @@ static void phy_efuse_set(struct mtk_phy_instance *instance)
break;
case PHY_TYPE_PCIE:
@@ -133,7 +130,7 @@
tmp = readl(u3_banks->phyd + U3P_U3_PHYD_RSV);
tmp |= P3D_RG_EFUSE_AUTO_LOAD_DIS;
writel(tmp, u3_banks->phyd + U3P_U3_PHYD_RSV);
-@@ -1232,9 +1291,11 @@ static void phy_efuse_set(struct mtk_phy_instance *instance)
+@@ -1242,9 +1301,11 @@ static void phy_efuse_set(struct mtk_phy_instance *instance)
__func__, instance->efuse_tx_imp,
instance->efuse_rx_imp, instance->efuse_intr);
@@ -149,5 +146,5 @@
tmp = readl(u3_banks->phyd + SSUSB_LN1_OFFSET + U3P_U3_PHYD_RSV);
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/8009-tphy-one-setting-of-TTSSC-Freq-Dev-for-all-IC-cases.patch b/target/linux/mediatek/patches-5.4/999-2614-tphy-one-setting-of-TTSSC-Freq-Dev-for-all-IC-cases.patch
similarity index 77%
rename from target/linux/mediatek/patches-5.4/8009-tphy-one-setting-of-TTSSC-Freq-Dev-for-all-IC-cases.patch
rename to target/linux/mediatek/patches-5.4/999-2614-tphy-one-setting-of-TTSSC-Freq-Dev-for-all-IC-cases.patch
index 36362f5..ef3b3a6 100644
--- a/target/linux/mediatek/patches-5.4/8009-tphy-one-setting-of-TTSSC-Freq-Dev-for-all-IC-cases.patch
+++ b/target/linux/mediatek/patches-5.4/999-2614-tphy-one-setting-of-TTSSC-Freq-Dev-for-all-IC-cases.patch
@@ -1,20 +1,18 @@
-From 3295585b4e77f4a365bd1a4e17d8be6ee504584a Mon Sep 17 00:00:00 2001
-From: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Date: Sat, 15 Oct 2022 17:38:54 +0800
-Subject: [PATCH 5/8] tphy: one setting of TTSSC-Freq-Dev for all IC cases
+From a977dbd79bc888d32fb974f328efa650722590c2 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:26 +0800
+Subject: [PATCH]
+ [high-speed-io][999-2614-tphy-one-setting-of-TTSSC-Freq-Dev-for-all-IC-cases.patch]
-try to use one setting of TTSSC-Freq-Dev to covery all IC cases
-
-Signed-off-by: Zhanyong Wang <zhanyong.wang@mediatek.com>
---
drivers/phy/mediatek/phy-mtk-tphy.c | 37 +++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/drivers/phy/mediatek/phy-mtk-tphy.c b/drivers/phy/mediatek/phy-mtk-tphy.c
-index a5b17a1aed5c..49a2625c1fc1 100644
+index 149464f37..e7ed93799 100644
--- a/drivers/phy/mediatek/phy-mtk-tphy.c
+++ b/drivers/phy/mediatek/phy-mtk-tphy.c
-@@ -219,6 +219,14 @@
+@@ -221,6 +221,14 @@
#define P3D_RG_RXDET_STB2_SET_P3 GENMASK(8, 0)
#define P3D_RG_RXDET_STB2_SET_P3_VAL(x) (0x1ff & (x))
@@ -29,7 +27,7 @@
#define U3P_SPLLC_XTALCTL3 0x018
#define XC3_RG_U3_XTAL_RX_PWD BIT(9)
#define XC3_RG_U3_FRC_XTAL_RX_PWD BIT(8)
-@@ -373,6 +381,8 @@ struct mtk_phy_instance {
+@@ -378,6 +386,8 @@ struct mtk_phy_instance {
int eye_vrt;
int eye_term;
bool bc12_en;
@@ -38,7 +36,7 @@
};
struct mtk_tphy {
-@@ -514,6 +524,20 @@ static void u3_phy_instance_init(struct mtk_tphy *tphy,
+@@ -520,6 +530,20 @@ static void u3_phy_instance_init(struct mtk_tphy *tphy,
tmp |= P3D_RG_RXDET_STB2_SET_P3_VAL(0x10);
writel(tmp, u3_banks->phyd + U3P_U3_PHYD_RXDET2);
@@ -59,7 +57,7 @@
dev_dbg(tphy->dev, "%s(%d)\n", __func__, instance->index);
}
-@@ -942,6 +966,19 @@ static void phy_parse_property(struct mtk_tphy *tphy,
+@@ -952,6 +976,19 @@ static void phy_parse_property(struct mtk_tphy *tphy,
{
struct device *dev = &instance->phy->dev;
@@ -80,5 +78,5 @@
return;
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/8010-phy-phy-mtk-xsphy-support-type-switch-by-pericfg.patch b/target/linux/mediatek/patches-5.4/999-2615-phy-phy-mtk-xsphy-support-type-switch-by-pericfg.patch
similarity index 89%
rename from target/linux/mediatek/patches-5.4/8010-phy-phy-mtk-xsphy-support-type-switch-by-pericfg.patch
rename to target/linux/mediatek/patches-5.4/999-2615-phy-phy-mtk-xsphy-support-type-switch-by-pericfg.patch
index c20e930..fcd38ac 100644
--- a/target/linux/mediatek/patches-5.4/8010-phy-phy-mtk-xsphy-support-type-switch-by-pericfg.patch
+++ b/target/linux/mediatek/patches-5.4/999-2615-phy-phy-mtk-xsphy-support-type-switch-by-pericfg.patch
@@ -1,5 +1,15 @@
+From 50cefacc6c001eea1d9b1c78ba27304566f304f1 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:26 +0800
+Subject: [PATCH]
+ [high-speed-io][999-2615-phy-phy-mtk-xsphy-support-type-switch-by-pericfg.patch]
+
+---
+ drivers/phy/mediatek/phy-mtk-xsphy.c | 81 +++++++++++++++++++++++++++-
+ 1 file changed, 80 insertions(+), 1 deletion(-)
+
diff --git a/drivers/phy/mediatek/phy-mtk-xsphy.c b/drivers/phy/mediatek/phy-mtk-xsphy.c
-index 8c51131..e77092c 100644
+index 8c5113194..e77092c3e 100644
--- a/drivers/phy/mediatek/phy-mtk-xsphy.c
+++ b/drivers/phy/mediatek/phy-mtk-xsphy.c
@@ -12,10 +12,12 @@
@@ -140,3 +150,6 @@
}
provider = devm_of_phy_provider_register(dev, mtk_phy_xlate);
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/9000-PATCH-1-1-xHCI-change-compliance-mode-de-emphasis-default-as-g.patch b/target/linux/mediatek/patches-5.4/999-2620-PATCH-1-1-xHCI-change-compliance-mode-de-emphasis-default-as-g.patch
similarity index 80%
rename from target/linux/mediatek/patches-5.4/9000-PATCH-1-1-xHCI-change-compliance-mode-de-emphasis-default-as-g.patch
rename to target/linux/mediatek/patches-5.4/999-2620-PATCH-1-1-xHCI-change-compliance-mode-de-emphasis-default-as-g.patch
index 9d1ca10..8d3cb7c 100644
--- a/target/linux/mediatek/patches-5.4/9000-PATCH-1-1-xHCI-change-compliance-mode-de-emphasis-default-as-g.patch
+++ b/target/linux/mediatek/patches-5.4/999-2620-PATCH-1-1-xHCI-change-compliance-mode-de-emphasis-default-as-g.patch
@@ -1,21 +1,16 @@
-From 0df9413c8ff0df4ed69b6e1577d7cd5fd2d72e5e Mon Sep 17 00:00:00 2001
+From 9ef2a9d208fba86dfbc06d4f2f743562bd14c145 Mon Sep 17 00:00:00 2001
From: Sam Shih <sam.shih@mediatek.com>
-Date: Tue, 25 Oct 2022 18:25:25 +0800
-Subject: [PATCH 1/3] xHCI: change compliance mode de-emphasis default as gen1
+Date: Fri, 2 Jun 2023 13:06:26 +0800
+Subject: [PATCH]
+ [high-speed-io][999-2620-PATCH-1-1-xHCI-change-compliance-mode-de-emphasis-default-as-g.patch]
-Port0 is using Gen2 Phy for 10GHz, and Port0 is running
-on 5GHz actually. hence to change compliance mode de-
-emphasis default as Gen1.
-
-Signed-off-by: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Signed-off-by: Sam Shih <sam.shih@mediatek.com>
---
drivers/usb/host/xhci-mtk.c | 18 +++++++++++++++++-
drivers/usb/host/xhci-mtk.h | 1 +
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c
-index 5c0eb35cd007..77ddb8c05500 100644
+index 5c0eb35cd..77ddb8c05 100644
--- a/drivers/usb/host/xhci-mtk.c
+++ b/drivers/usb/host/xhci-mtk.c
@@ -22,6 +22,11 @@
@@ -65,7 +60,7 @@
if (ret) {
dev_err(dev, "failed to parse uwk property\n");
diff --git a/drivers/usb/host/xhci-mtk.h b/drivers/usb/host/xhci-mtk.h
-index 2f702342de66..8a884e7b481b 100644
+index 2f702342d..8a884e7b4 100644
--- a/drivers/usb/host/xhci-mtk.h
+++ b/drivers/usb/host/xhci-mtk.h
@@ -156,6 +156,7 @@ struct xhci_hcd_mtk {
@@ -77,5 +72,5 @@
static inline struct xhci_hcd_mtk *hcd_to_mtk(struct usb_hcd *hcd)
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/9001-PATCH-1-2-xHCI-MT7986-USB-2.0-USBIF-compliance-toolkit.patch b/target/linux/mediatek/patches-5.4/999-2621-PATCH-1-2-xHCI-MT7986-USB-2.0-USBIF-compliance-toolkit.patch
similarity index 86%
rename from target/linux/mediatek/patches-5.4/9001-PATCH-1-2-xHCI-MT7986-USB-2.0-USBIF-compliance-toolkit.patch
rename to target/linux/mediatek/patches-5.4/999-2621-PATCH-1-2-xHCI-MT7986-USB-2.0-USBIF-compliance-toolkit.patch
index 07b87fc..07bbe57 100644
--- a/target/linux/mediatek/patches-5.4/9001-PATCH-1-2-xHCI-MT7986-USB-2.0-USBIF-compliance-toolkit.patch
+++ b/target/linux/mediatek/patches-5.4/999-2621-PATCH-1-2-xHCI-MT7986-USB-2.0-USBIF-compliance-toolkit.patch
@@ -1,11 +1,9 @@
-From 083b79c977495cafc70c5d044db1f3f6c0587b1c Mon Sep 17 00:00:00 2001
-From: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Date: Mon, 15 Aug 2022 12:40:22 +0800
-Subject: [PATCH 2/3] xHCI: MT79xx USB 2.0 USBIF compliance toolkit
+From f6aea6b89ce99b4f490fe1e1062b88042096703e Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:26 +0800
+Subject: [PATCH]
+ [high-speed-io][999-2621-PATCH-1-2-xHCI-MT7986-USB-2.0-USBIF-compliance-toolkit.patch]
-MT79xx USB 2.0 USBIF compliance toolkit
-
-Signed-off-by: Zhanyong Wang <zhanyong.wang@mediatek.com>
---
drivers/usb/host/Kconfig | 9 +++++++++
drivers/usb/host/Makefile | 10 ++++++++++
@@ -16,7 +14,7 @@
6 files changed, 32 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
-index 79b2e79dddd0..12b1bf9aa043 100644
+index 79b2e79dd..12b1bf9aa 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -69,6 +69,15 @@ config USB_XHCI_MTK
@@ -36,7 +34,7 @@
tristate "xHCI support for Marvell Armada 375/38x/37xx"
select USB_XHCI_PLATFORM
diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile
-index b191361257cc..f064f836db2b 100644
+index b19136125..f064f836d 100644
--- a/drivers/usb/host/Makefile
+++ b/drivers/usb/host/Makefile
@@ -21,6 +21,16 @@ endif
@@ -57,7 +55,7 @@
xhci-plat-hcd-y := xhci-plat.o
diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c
-index 77ddb8c05500..7a200793169b 100644
+index 77ddb8c05..7a2007931 100644
--- a/drivers/usb/host/xhci-mtk.c
+++ b/drivers/usb/host/xhci-mtk.c
@@ -18,10 +18,10 @@
@@ -90,7 +88,7 @@
pm_runtime_put_noidle(&dev->dev);
pm_runtime_disable(&dev->dev);
diff --git a/drivers/usb/host/xhci-mtk.h b/drivers/usb/host/xhci-mtk.h
-index 8a884e7b481b..e815d7091acc 100644
+index 8a884e7b4..e815d7091 100644
--- a/drivers/usb/host/xhci-mtk.h
+++ b/drivers/usb/host/xhci-mtk.h
@@ -157,6 +157,13 @@ struct xhci_hcd_mtk {
@@ -108,10 +106,10 @@
static inline struct xhci_hcd_mtk *hcd_to_mtk(struct usb_hcd *hcd)
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
-index 5ce16a259e61..b6f8383f7371 100644
+index b8915790a..dd1b520af 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
-@@ -713,7 +713,7 @@ EXPORT_SYMBOL_GPL(xhci_run);
+@@ -714,7 +714,7 @@ EXPORT_SYMBOL_GPL(xhci_run);
* Disable device contexts, disable IRQs, and quiesce the HC.
* Reset the HC, finish any completed transactions, and cleanup memory.
*/
@@ -121,10 +119,10 @@
u32 temp;
struct xhci_hcd *xhci = hcd_to_xhci(hcd);
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
-index 0dc448630197..80b3124c43e2 100644
+index e696f1508..07f904167 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
-@@ -2070,6 +2070,7 @@ int xhci_halt(struct xhci_hcd *xhci);
+@@ -2073,6 +2073,7 @@ int xhci_halt(struct xhci_hcd *xhci);
int xhci_start(struct xhci_hcd *xhci);
int xhci_reset(struct xhci_hcd *xhci, u64 timeout_us);
int xhci_run(struct usb_hcd *hcd);
@@ -133,5 +131,5 @@
void xhci_shutdown(struct usb_hcd *hcd);
void xhci_init_driver(struct hc_driver *drv,
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/9002-PATCH-1-1-usb-add-embedded-Host-feature-support.patch b/target/linux/mediatek/patches-5.4/999-2622-PATCH-1-1-usb-add-embedded-Host-feature-support.patch
similarity index 77%
rename from target/linux/mediatek/patches-5.4/9002-PATCH-1-1-usb-add-embedded-Host-feature-support.patch
rename to target/linux/mediatek/patches-5.4/999-2622-PATCH-1-1-usb-add-embedded-Host-feature-support.patch
index c4970eb..b27509a 100644
--- a/target/linux/mediatek/patches-5.4/9002-PATCH-1-1-usb-add-embedded-Host-feature-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2622-PATCH-1-1-usb-add-embedded-Host-feature-support.patch
@@ -1,18 +1,9 @@
-From be6839b4144867c7ea6ffbedb6c6a2a42976e16d Mon Sep 17 00:00:00 2001
-From: Zhanyong Wang <zhanyong.wang@mediatek.com>
-Date: Thu, 17 Jun 2021 16:09:04 +0800
-Subject: [PATCH 3/3] usb: add embedded Host feature support
+From 32950d08c99f51e88a2db8dd30c5076a4947de24 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:27 +0800
+Subject: [PATCH]
+ [high-speed-io][999-2622-PATCH-1-1-usb-add-embedded-Host-feature-support.patch]
-add EH(Embedded Host) feature for PET authentication
-1. need CONFIG_USB_OTG_WHITELIST enable
- CONFIG_USB_OTG_WHITELIST=y
-
-2. host device tree node need include "tpl-support" keyword
- &xhci {
- tpl-support;
- }
-
-Signed-off-by: Zhanyong Wang <zhanyong.wang@mediatek.com>
---
drivers/usb/core/hub.c | 9 +++++---
drivers/usb/core/otg_whitelist.h | 39 ++++++++++++++++++++++++++++++++
@@ -20,10 +11,10 @@
3 files changed, 47 insertions(+), 3 deletions(-)
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
-index 4cf0dc7f330d..f2f330606d0c 100644
+index f787e9771..7687711f1 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
-@@ -2422,6 +2422,8 @@ static int usb_enumerate_device(struct usb_device *udev)
+@@ -2424,6 +2424,8 @@ static int usb_enumerate_device(struct usb_device *udev)
if (err < 0)
dev_dbg(&udev->dev, "HNP fail, %d\n", err);
}
@@ -32,7 +23,7 @@
return -ENOTSUPP;
}
-@@ -4779,9 +4781,10 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,
+@@ -4781,9 +4783,10 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,
goto fail;
}
if (r) {
@@ -47,7 +38,7 @@
continue;
}
diff --git a/drivers/usb/core/otg_whitelist.h b/drivers/usb/core/otg_whitelist.h
-index 2ae90158ded7..a8dd221334c1 100644
+index 2ae90158d..a8dd22133 100644
--- a/drivers/usb/core/otg_whitelist.h
+++ b/drivers/usb/core/otg_whitelist.h
@@ -39,9 +39,44 @@ static struct usb_device_id whitelist_table[] = {
@@ -107,10 +98,10 @@
}
diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c
-index d4345657945d..2a4b73a658f9 100644
+index 7a2007931..19b54c343 100644
--- a/drivers/usb/host/xhci-mtk.c
+++ b/drivers/usb/host/xhci-mtk.c
-@@ -571,6 +571,8 @@ static int xhci_mtk_probe(struct platform_device *pdev)
+@@ -575,6 +575,8 @@ static int xhci_mtk_probe(struct platform_device *pdev)
goto disable_device_wakeup;
}
@@ -120,5 +111,5 @@
if (ret)
goto put_usb3_hcd;
--
-2.18.0
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/0100-hwnat_Kconfig_Makefile.patch b/target/linux/mediatek/patches-5.4/999-2705-hwnat_Kconfig_Makefile.patch
old mode 100755
new mode 100644
similarity index 61%
rename from target/linux/mediatek/patches-5.4/0100-hwnat_Kconfig_Makefile.patch
rename to target/linux/mediatek/patches-5.4/999-2705-hwnat_Kconfig_Makefile.patch
index e0ac7ab..fbb8410
--- a/target/linux/mediatek/patches-5.4/0100-hwnat_Kconfig_Makefile.patch
+++ b/target/linux/mediatek/patches-5.4/999-2705-hwnat_Kconfig_Makefile.patch
@@ -1,6 +1,18 @@
---- a/net/Kconfig 2020-04-29 17:25:49.750444000 +0800
-+++ b/net/Kconfig 2020-04-29 17:42:40.950424000 +0800
-@@ -451,6 +451,18 @@
+From bc06d56dc89af9d13d3b993dae0de46e76dfc3a7 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:28 +0800
+Subject: [PATCH] [networking][999-2705-hwnat_Kconfig_Makefile.patch]
+
+---
+ net/Kconfig | 12 ++++++++++++
+ net/Makefile | 3 +++
+ 2 files changed, 15 insertions(+)
+
+diff --git a/net/Kconfig b/net/Kconfig
+index 46d9b3827..123e4bc28 100644
+--- a/net/Kconfig
++++ b/net/Kconfig
+@@ -460,6 +460,18 @@ config FAILOVER
migration of VMs with direct attached VFs by failing over to the
paravirtual datapath when the VF is unplugged.
@@ -19,9 +31,11 @@
endif # if NET
# Used by archs to tell that they support BPF JIT compiler plus which flavour.
---- a/net/Makefile 2020-04-23 16:36:46.000000000 +0800
-+++ b/net/Makefile 2020-04-29 17:42:58.106487000 +0800
-@@ -62,6 +62,9 @@
+diff --git a/net/Makefile b/net/Makefile
+index 9603e98f0..673f0a664 100644
+--- a/net/Makefile
++++ b/net/Makefile
+@@ -62,6 +62,9 @@ endif
obj-$(CONFIG_6LOWPAN) += 6lowpan/
obj-$(CONFIG_IEEE802154) += ieee802154/
obj-$(CONFIG_MAC802154) += mac802154/
@@ -31,3 +45,6 @@
ifeq ($(CONFIG_NET),y)
obj-$(CONFIG_SYSCTL) += sysctl_net.o
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/0505-crypto-add-eip197-inside-secure-support.patch b/target/linux/mediatek/patches-5.4/999-2706-crypto-add-eip197-inside-secure-support.patch
similarity index 82%
rename from target/linux/mediatek/patches-5.4/0505-crypto-add-eip197-inside-secure-support.patch
rename to target/linux/mediatek/patches-5.4/999-2706-crypto-add-eip197-inside-secure-support.patch
index 8b9ccce..a144c36 100644
--- a/target/linux/mediatek/patches-5.4/0505-crypto-add-eip197-inside-secure-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2706-crypto-add-eip197-inside-secure-support.patch
@@ -1,6 +1,19 @@
+From 7baac266ec5e64236ff94447286a9cc74815d259 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:28 +0800
+Subject: [PATCH]
+ [networking][999-2706-crypto-add-eip197-inside-secure-support.patch]
+
+---
+ drivers/crypto/inside-secure/safexcel.c | 69 ++++++++++++++++++++++---
+ drivers/crypto/inside-secure/safexcel.h | 15 ++++++
+ 2 files changed, 78 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/crypto/inside-secure/safexcel.c b/drivers/crypto/inside-secure/safexcel.c
+index 647c5a0c1..6f4fc15b7 100644
--- a/drivers/crypto/inside-secure/safexcel.c
+++ b/drivers/crypto/inside-secure/safexcel.c
-@@ -304,6 +304,11 @@
+@@ -304,6 +304,11 @@ static void eip197_init_firmware(struct safexcel_crypto_priv *priv)
/* Enable access to all IFPP program memories */
writel(EIP197_PE_ICE_RAM_CTRL_FPP_PROG_EN,
EIP197_PE(priv) + EIP197_PE_ICE_RAM_CTRL(pe));
@@ -12,7 +25,7 @@
}
}
-@@ -403,13 +408,13 @@
+@@ -403,13 +408,13 @@ static int eip197_load_firmwares(struct safexcel_crypto_priv *priv)
const struct firmware *fw[FW_NB];
char fw_path[37], *dir = NULL;
int i, j, ret = 0, pe;
@@ -28,7 +41,7 @@
else
return -ENODEV;
-@@ -442,6 +447,9 @@
+@@ -442,6 +447,9 @@ retry_fw:
ipuesz = eip197_write_firmware(priv, fw[FW_IPUE]);
@@ -38,7 +51,7 @@
if (eip197_start_firmware(priv, ipuesz, ifppsz, minifw)) {
dev_dbg(priv->dev, "Firmware loaded successfully\n");
return 0;
-@@ -592,6 +600,11 @@
+@@ -592,6 +600,11 @@ static int safexcel_hw_init(struct safexcel_crypto_priv *priv)
*/
if (priv->flags & SAFEXCEL_HW_EIP197) {
val = readl(EIP197_HIA_AIC(priv) + EIP197_HIA_MST_CTRL);
@@ -50,7 +63,7 @@
val |= EIP197_MST_CTRL_TX_MAX_CMD(5);
writel(val, EIP197_HIA_AIC(priv) + EIP197_HIA_MST_CTRL);
}
-@@ -792,6 +805,12 @@
+@@ -792,6 +805,12 @@ static int safexcel_hw_init(struct safexcel_crypto_priv *priv)
return ret;
}
@@ -63,7 +76,7 @@
return safexcel_hw_setup_cdesc_rings(priv) ?:
safexcel_hw_setup_rdesc_rings(priv) ?:
0;
-@@ -1498,6 +1517,9 @@
+@@ -1498,6 +1517,9 @@ static int safexcel_probe_generic(void *pdev,
hwopt = readl(EIP197_GLOBAL(priv) + EIP197_OPTIONS);
hiaopt = readl(EIP197_HIA_AIC(priv) + EIP197_HIA_OPTIONS);
@@ -73,7 +86,7 @@
if (priv->flags & SAFEXCEL_HW_EIP197) {
/* EIP197 */
peopt = readl(EIP197_PE(priv) + EIP197_PE_OPTIONS(0));
-@@ -1516,8 +1538,37 @@
+@@ -1516,8 +1538,37 @@ static int safexcel_probe_generic(void *pdev,
EIP197_N_RINGS_MASK;
if (hiaopt & EIP197_HIA_OPT_HAS_PE_ARB)
priv->flags |= EIP197_PE_ARB;
@@ -112,7 +125,7 @@
/* If not a full TRC, then assume simple TRC */
if (!(hwopt & EIP197_OPT_HAS_TRC))
priv->flags |= EIP197_SIMPLE_TRC;
-@@ -1555,13 +1606,14 @@
+@@ -1555,13 +1606,14 @@ static int safexcel_probe_generic(void *pdev,
EIP197_PE_EIP96_OPTIONS(0));
/* Print single info line describing what we just detected */
@@ -129,7 +142,7 @@
safexcel_configure(priv);
-@@ -1690,6 +1742,7 @@
+@@ -1690,6 +1742,7 @@ static int safexcel_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
struct safexcel_crypto_priv *priv;
@@ -137,7 +150,7 @@
int ret;
priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
-@@ -1701,7 +1754,11 @@
+@@ -1701,7 +1754,11 @@ static int safexcel_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, priv);
@@ -150,6 +163,8 @@
if (IS_ERR(priv->base)) {
dev_err(dev, "failed to get resource\n");
return PTR_ERR(priv->base);
+diff --git a/drivers/crypto/inside-secure/safexcel.h b/drivers/crypto/inside-secure/safexcel.h
+index c031c197e..e9909c336 100644
--- a/drivers/crypto/inside-secure/safexcel.h
+++ b/drivers/crypto/inside-secure/safexcel.h
@@ -22,6 +22,7 @@
@@ -202,7 +217,7 @@
/* EIP197_STRC_CONFIG */
#define EIP197_STRC_CONFIG_INIT BIT(31)
#define EIP197_STRC_CONFIG_LARGE_REC(s) (s<<8)
-@@ -777,6 +788,7 @@
+@@ -777,6 +788,7 @@ enum safexcel_flags {
EIP197_PE_ARB = BIT(2),
EIP197_ICE = BIT(3),
EIP197_SIMPLE_TRC = BIT(4),
@@ -210,7 +225,7 @@
};
struct safexcel_hwconfig {
-@@ -784,7 +796,10 @@
+@@ -784,7 +796,10 @@ struct safexcel_hwconfig {
int hwver;
int hiaver;
int ppver;
@@ -221,3 +236,6 @@
int hwdataw;
int hwcfsize;
int hwrfsize;
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/1001-mtkhnat-ipv6-fix-pskb-expand-head-limitation.patch b/target/linux/mediatek/patches-5.4/999-2707-mtkhnat-ipv6-fix-pskb-expand-head-limitation.patch
similarity index 66%
rename from target/linux/mediatek/patches-5.4/1001-mtkhnat-ipv6-fix-pskb-expand-head-limitation.patch
rename to target/linux/mediatek/patches-5.4/999-2707-mtkhnat-ipv6-fix-pskb-expand-head-limitation.patch
index 72719c8..879e79d 100644
--- a/target/linux/mediatek/patches-5.4/1001-mtkhnat-ipv6-fix-pskb-expand-head-limitation.patch
+++ b/target/linux/mediatek/patches-5.4/999-2707-mtkhnat-ipv6-fix-pskb-expand-head-limitation.patch
@@ -1,5 +1,15 @@
+From 5583834362f5a9050e701e324f6a9b4d7bf5fcdf Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:29 +0800
+Subject: [PATCH]
+ [networking][999-2707-mtkhnat-ipv6-fix-pskb-expand-head-limitation.patch]
+
+---
+ net/core/skbuff.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
-index 5ba1c72f..f4239459 100644
+index 409f33e16..d91b2dfe2 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -69,6 +69,7 @@
@@ -20,3 +30,6 @@
/*
* if shinfo is shared we must drop the old head gracefully, but if it
* is not we can just drop the old head and let the existing refcount
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/1002-mtkhnat-add-support-for-virtual-interface-acceleration.patch b/target/linux/mediatek/patches-5.4/999-2708-mtkhnat-add-support-for-virtual-interface-acceleration.patch
similarity index 76%
rename from target/linux/mediatek/patches-5.4/1002-mtkhnat-add-support-for-virtual-interface-acceleration.patch
rename to target/linux/mediatek/patches-5.4/999-2708-mtkhnat-add-support-for-virtual-interface-acceleration.patch
index 150087a..4d21ebd 100644
--- a/target/linux/mediatek/patches-5.4/1002-mtkhnat-add-support-for-virtual-interface-acceleration.patch
+++ b/target/linux/mediatek/patches-5.4/999-2708-mtkhnat-add-support-for-virtual-interface-acceleration.patch
@@ -1,8 +1,21 @@
+From fd6e50fdeb1d943b889a5aa093790a798ae598d3 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:29 +0800
+Subject: [PATCH]
+ [networking][999-2708-mtkhnat-add-support-for-virtual-interface-acceleration.patch]
+
+---
+ include/net/netfilter/nf_flow_table.h | 3 +++
+ net/8021q/vlan_dev.c | 1 +
+ net/ipv6/ip6_tunnel.c | 24 ++++++++++++++++++++++++
+ net/ipv6/sit.c | 24 ++++++++++++++++++++++++
+ 4 files changed, 52 insertions(+)
+
diff --git a/include/net/netfilter/nf_flow_table.h b/include/net/netfilter/nf_flow_table.h
-index 3d73c0c..960ade1 100644
+index 16dbf5461..4cb73a7cb 100644
--- a/include/net/netfilter/nf_flow_table.h
+++ b/include/net/netfilter/nf_flow_table.h
-@@ -92,9 +92,12 @@ struct flow_offload {
+@@ -94,9 +94,12 @@ struct flow_offload {
#define FLOW_OFFLOAD_PATH_VLAN BIT(1)
#define FLOW_OFFLOAD_PATH_PPPOE BIT(2)
#define FLOW_OFFLOAD_PATH_DSA BIT(3)
@@ -16,10 +29,10 @@
u8 eth_src[ETH_ALEN];
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c
-index be6801524..c51af70f6 100644
+index f973bec77..dbb3cea5c 100644
--- a/net/8021q/vlan_dev.c
+++ b/net/8021q/vlan_dev.c
-@@ -761,6 +761,7 @@ static int vlan_dev_flow_offload_check(struct flow_offload_hw_path *path)
+@@ -764,6 +764,7 @@ static int vlan_dev_flow_offload_check(struct flow_offload_hw_path *path)
path->flags |= FLOW_OFFLOAD_PATH_VLAN;
path->vlan_proto = vlan->vlan_proto;
path->vlan_id = vlan->vlan_id;
@@ -28,7 +41,7 @@
if (vlan->real_dev->netdev_ops->ndo_flow_offload_check)
diff --git a/net/ipv6/ip6_tunnel.c b/net/ipv6/ip6_tunnel.c
-index 1b7e3141c..da4e34f74 100644
+index 71ef26e60..f8302fdd5 100644
--- a/net/ipv6/ip6_tunnel.c
+++ b/net/ipv6/ip6_tunnel.c
@@ -57,6 +57,11 @@
@@ -43,7 +56,7 @@
MODULE_AUTHOR("Ville Nuorvala");
MODULE_DESCRIPTION("IPv6 tunneling device");
MODULE_LICENSE("GPL");
-@@ -1880,6 +1885,22 @@ int ip6_tnl_get_iflink(const struct net_device *dev)
+@@ -1889,6 +1894,22 @@ int ip6_tnl_get_iflink(const struct net_device *dev)
}
EXPORT_SYMBOL(ip6_tnl_get_iflink);
@@ -66,7 +79,7 @@
int ip6_tnl_encap_add_ops(const struct ip6_tnl_encap_ops *ops,
unsigned int num)
{
-@@ -1941,6 +1962,9 @@ static const struct net_device_ops ip6_tnl_netdev_ops = {
+@@ -1950,6 +1971,9 @@ static const struct net_device_ops ip6_tnl_netdev_ops = {
.ndo_change_mtu = ip6_tnl_change_mtu,
.ndo_get_stats = ip6_get_stats,
.ndo_get_iflink = ip6_tnl_get_iflink,
@@ -77,7 +90,7 @@
#define IPXIPX_FEATURES (NETIF_F_SG | \
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
-index 98954830c..42b6e8c4c 100644
+index 117960895..0844a95e3 100644
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -52,6 +52,11 @@
@@ -92,7 +105,7 @@
/*
This version of net/ipv6/sit.c is cloned of net/ipv4/ip_gre.c
-@@ -1345,6 +1350,22 @@ ipip6_tunnel_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
+@@ -1342,6 +1347,22 @@ done:
return err;
}
@@ -115,7 +128,7 @@
static const struct net_device_ops ipip6_netdev_ops = {
.ndo_init = ipip6_tunnel_init,
.ndo_uninit = ipip6_tunnel_uninit,
-@@ -1352,6 +1373,9 @@ static const struct net_device_ops ipip6_netdev_ops = {
+@@ -1349,6 +1370,9 @@ static const struct net_device_ops ipip6_netdev_ops = {
.ndo_do_ioctl = ipip6_tunnel_ioctl,
.ndo_get_stats64 = ip_tunnel_get_stats64,
.ndo_get_iflink = ip_tunnel_get_iflink,
@@ -125,3 +138,6 @@
};
static void ipip6_dev_free(struct net_device *dev)
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2709-fix-race-inside-napi-enable.patch b/target/linux/mediatek/patches-5.4/999-2709-fix-race-inside-napi-enable.patch
new file mode 100644
index 0000000..0d90686
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2709-fix-race-inside-napi-enable.patch
@@ -0,0 +1,39 @@
+From f57826291fc2ff833c01b39c01fa5b74b69485da Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:29 +0800
+Subject: [PATCH] [networking][999-2709-fix-race-inside-napi-enable.patch]
+
+---
+ net/core/dev.c | 16 ++++++++++------
+ 1 file changed, 10 insertions(+), 6 deletions(-)
+
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 81892cd83..503af0034 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -6413,12 +6413,16 @@ EXPORT_SYMBOL(napi_disable);
+ */
+ void napi_enable(struct napi_struct *n)
+ {
+- BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
+- smp_mb__before_atomic();
+- clear_bit(NAPI_STATE_SCHED, &n->state);
+- clear_bit(NAPI_STATE_NPSVC, &n->state);
+- if (n->dev->threaded && n->thread)
+- set_bit(NAPI_STATE_THREADED, &n->state);
++ unsigned long val, new;
++
++ do {
++ val = READ_ONCE(n->state);
++ BUG_ON(!test_bit(NAPI_STATE_SCHED, &val));
++
++ new = val & ~(NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC);
++ if (n->dev->threaded && n->thread)
++ new |= NAPIF_STATE_THREADED;
++ } while (cmpxchg(&n->state, val, new) != val);
+ }
+ EXPORT_SYMBOL(napi_enable);
+
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2710-net-make-napi-disable-symmetric-with-enable.patch b/target/linux/mediatek/patches-5.4/999-2710-net-make-napi-disable-symmetric-with-enable.patch
new file mode 100644
index 0000000..0de5a63
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2710-net-make-napi-disable-symmetric-with-enable.patch
@@ -0,0 +1,48 @@
+From 8e758bb3fc5eee316843eeaad1601ee44ce1c899 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:30 +0800
+Subject: [PATCH]
+ [networking][999-2710-net-make-napi-disable-symmetric-with-enable.patch]
+
+---
+ net/core/dev.c | 17 ++++++++++++-----
+ 1 file changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 503af0034..cccd7b407 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -6389,18 +6389,25 @@ EXPORT_SYMBOL(netif_napi_add);
+
+ void napi_disable(struct napi_struct *n)
+ {
++ unsigned long val, new;
++
+ might_sleep();
+ set_bit(NAPI_STATE_DISABLE, &n->state);
+
+- while (test_and_set_bit(NAPI_STATE_SCHED, &n->state))
+- msleep(1);
+- while (test_and_set_bit(NAPI_STATE_NPSVC, &n->state))
+- msleep(1);
++ do {
++ val = READ_ONCE(n->state);
++ if (val & (NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC)) {
++ usleep_range(20, 200);
++ continue;
++ }
++
++ new = val | NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC;
++ new &= ~(NAPIF_STATE_THREADED);
++ } while (cmpxchg(&n->state, val, new) != val);
+
+ hrtimer_cancel(&n->timer);
+
+ clear_bit(NAPI_STATE_DISABLE, &n->state);
+- clear_bit(NAPI_STATE_THREADED, &n->state);
+ }
+ EXPORT_SYMBOL(napi_disable);
+
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2711-net-fix-premature-exit-from-napi-state-polling-in-napi-disable-v2.patch b/target/linux/mediatek/patches-5.4/999-2711-net-fix-premature-exit-from-napi-state-polling-in-napi-disable-v2.patch
new file mode 100644
index 0000000..ef18a49
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2711-net-fix-premature-exit-from-napi-state-polling-in-napi-disable-v2.patch
@@ -0,0 +1,38 @@
+From a3eac970a1a3e2fc8cdc98acd2594e0578725ad6 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:30 +0800
+Subject: [PATCH]
+ [networking][999-2711-net-fix-premature-exit-from-napi-state-polling-in-napi-disable-v2.patch]
+
+---
+ net/core/dev.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/net/core/dev.c b/net/core/dev.c
+index cccd7b407..794c768e3 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -6394,7 +6394,7 @@ void napi_disable(struct napi_struct *n)
+ might_sleep();
+ set_bit(NAPI_STATE_DISABLE, &n->state);
+
+- do {
++ for ( ; ; ) {
+ val = READ_ONCE(n->state);
+ if (val & (NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC)) {
+ usleep_range(20, 200);
+@@ -6403,7 +6403,10 @@ void napi_disable(struct napi_struct *n)
+
+ new = val | NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC;
+ new &= ~(NAPIF_STATE_THREADED);
+- } while (cmpxchg(&n->state, val, new) != val);
++
++ if (cmpxchg(&n->state, val, new) == val)
++ break;
++ }
+
+ hrtimer_cancel(&n->timer);
+
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/730-net-ethernet-mtk_eth_soc-add-mtk-dsa-tag-rx-offload.patch b/target/linux/mediatek/patches-5.4/999-2712-net-ethernet-mtk_eth_soc-add-mtk-dsa-tag-rx-offload.patch
similarity index 68%
rename from target/linux/mediatek/patches-5.4/730-net-ethernet-mtk_eth_soc-add-mtk-dsa-tag-rx-offload.patch
rename to target/linux/mediatek/patches-5.4/999-2712-net-ethernet-mtk_eth_soc-add-mtk-dsa-tag-rx-offload.patch
index 6b10584..a76a784 100644
--- a/target/linux/mediatek/patches-5.4/730-net-ethernet-mtk_eth_soc-add-mtk-dsa-tag-rx-offload.patch
+++ b/target/linux/mediatek/patches-5.4/999-2712-net-ethernet-mtk_eth_soc-add-mtk-dsa-tag-rx-offload.patch
@@ -1,6 +1,18 @@
---- linux-5.4.77.orig/net/dsa/tag_mtk.c
-+++ linux-5.4.77/net/dsa/tag_mtk.c
-@@ -73,22 +73,28 @@ static struct sk_buff *mtk_tag_rcv(struc
+From 0f2e84b06686745694f276c4aae6cf9d132a56af Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:30 +0800
+Subject: [PATCH]
+ [networking][999-2712-net-ethernet-mtk_eth_soc-add-mtk-dsa-tag-rx-offload.patch]
+
+---
+ net/dsa/tag_mtk.c | 32 +++++++++++++++++++-------------
+ 1 file changed, 19 insertions(+), 13 deletions(-)
+
+diff --git a/net/dsa/tag_mtk.c b/net/dsa/tag_mtk.c
+index edc505e07..c386fdc90 100644
+--- a/net/dsa/tag_mtk.c
++++ b/net/dsa/tag_mtk.c
+@@ -80,22 +80,28 @@ static struct sk_buff *mtk_tag_rcv(struct sk_buff *skb, struct net_device *dev,
bool is_multicast_skb = is_multicast_ether_addr(dest) &&
!is_broadcast_ether_addr(dest);
@@ -42,3 +54,6 @@
/* Get source port information */
port = (hdr & MTK_HDR_RECV_SOURCE_PORT_MASK);
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/738-mt7531-gsw-internal_phy_calibration.patch b/target/linux/mediatek/patches-5.4/999-2713-mt7531-gsw-internal_phy_calibration.patch
old mode 100755
new mode 100644
similarity index 97%
rename from target/linux/mediatek/patches-5.4/738-mt7531-gsw-internal_phy_calibration.patch
rename to target/linux/mediatek/patches-5.4/999-2713-mt7531-gsw-internal_phy_calibration.patch
index 361eca6..e0759b2
--- a/target/linux/mediatek/patches-5.4/738-mt7531-gsw-internal_phy_calibration.patch
+++ b/target/linux/mediatek/patches-5.4/999-2713-mt7531-gsw-internal_phy_calibration.patch
@@ -1,5 +1,21 @@
-Index: drivers/net/phy/mtk/mt753x/Makefile
-===================================================================
+From e17d8763f1279f43edf51a8ceb8b4f78d67eaefa Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:30 +0800
+Subject: [PATCH]
+ [networking][999-2713-mt7531-gsw-internal_phy_calibration.patch]
+
+---
+ drivers/net/phy/mtk/mt753x/Makefile | 2 +-
+ drivers/net/phy/mtk/mt753x/mt7531.c | 21 +
+ drivers/net/phy/mtk/mt753x/mt753x.h | 2 +
+ drivers/net/phy/mtk/mt753x/mt753x_phy.c | 1069 +++++++++++++++++++++++
+ drivers/net/phy/mtk/mt753x/mt753x_phy.h | 145 +++
+ 5 files changed, 1238 insertions(+), 1 deletion(-)
+ create mode 100644 drivers/net/phy/mtk/mt753x/mt753x_phy.c
+ create mode 100644 drivers/net/phy/mtk/mt753x/mt753x_phy.h
+
+diff --git a/drivers/net/phy/mtk/mt753x/Makefile b/drivers/net/phy/mtk/mt753x/Makefile
+index e304fcb41..b5a63fe91 100644
--- a/drivers/net/phy/mtk/mt753x/Makefile
+++ b/drivers/net/phy/mtk/mt753x/Makefile
@@ -7,5 +7,5 @@ obj-$(CONFIG_MT753X_GSW) += mt753x.o
@@ -9,11 +25,11 @@
- mt753x_common.o mt753x_vlan.o mt753x_nl.o
+ mt753x_common.o mt753x_vlan.o mt753x_nl.o mt753x_phy.o
-Index: drivers/net/phy/mtk/mt753x/mt7531.c
-===================================================================
+diff --git a/drivers/net/phy/mtk/mt753x/mt7531.c b/drivers/net/phy/mtk/mt753x/mt7531.c
+index b27c679a5..512a89a94 100755
--- a/drivers/net/phy/mtk/mt753x/mt7531.c
+++ b/drivers/net/phy/mtk/mt753x/mt7531.c
-@@ -658,6 +658,27 @@ static void mt7531_core_pll_setup(struct
+@@ -662,6 +662,27 @@ static void mt7531_core_pll_setup(struct gsw_mt753x *gsw)
static int mt7531_internal_phy_calibration(struct gsw_mt753x *gsw)
{
@@ -41,11 +57,11 @@
return 0;
}
-Index: drivers/net/phy/mtk/mt753x/mt753x.h
-===================================================================
+diff --git a/drivers/net/phy/mtk/mt753x/mt753x.h b/drivers/net/phy/mtk/mt753x/mt753x.h
+index 344d2b0c6..252ce350f 100644
--- a/drivers/net/phy/mtk/mt753x/mt753x.h
+++ b/drivers/net/phy/mtk/mt753x/mt753x.h
-@@ -140,6 +140,8 @@ void mt753x_irq_enable(struct gsw_mt753x
+@@ -146,6 +146,8 @@ void mt753x_irq_enable(struct gsw_mt753x *gsw);
int mt753x_phy_calibration(struct gsw_mt753x *gsw, u8 phyaddr);
int extphy_init(struct gsw_mt753x *gsw, int addr);
@@ -54,9 +70,9 @@
/* MDIO Indirect Access Registers */
#define MII_MMD_ACC_CTL_REG 0x0d
#define MMD_CMD_S 14
-Index: drivers/net/phy/mtk/mt753x/mt753x_phy.c
-===================================================================
+diff --git a/drivers/net/phy/mtk/mt753x/mt753x_phy.c b/drivers/net/phy/mtk/mt753x/mt753x_phy.c
new file mode 100644
+index 000000000..0c6f9c930
--- /dev/null
+++ b/drivers/net/phy/mtk/mt753x/mt753x_phy.c
@@ -0,0 +1,1069 @@
@@ -1129,9 +1145,9 @@
+
+ return ret;
+}
-Index: drivers/net/phy/mtk/mt753x/mt753x_phy.h
-===================================================================
+diff --git a/drivers/net/phy/mtk/mt753x/mt753x_phy.h b/drivers/net/phy/mtk/mt753x/mt753x_phy.h
new file mode 100644
+index 000000000..1b9e2ea80
--- /dev/null
+++ b/drivers/net/phy/mtk/mt753x/mt753x_phy.h
@@ -0,0 +1,145 @@
@@ -1280,3 +1296,6 @@
+#define DA_TX_I2MPB_D_GBE BITS(8, 13)
+
+#endif /* _MT753X_REGS_H_ */
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/739-mt7531-gsw-port5_external_phy_init.patch b/target/linux/mediatek/patches-5.4/999-2714-mt7531-gsw-port5_external_phy_init.patch
old mode 100755
new mode 100644
similarity index 87%
rename from target/linux/mediatek/patches-5.4/739-mt7531-gsw-port5_external_phy_init.patch
rename to target/linux/mediatek/patches-5.4/999-2714-mt7531-gsw-port5_external_phy_init.patch
index 0d88c60..237c68e
--- a/target/linux/mediatek/patches-5.4/739-mt7531-gsw-port5_external_phy_init.patch
+++ b/target/linux/mediatek/patches-5.4/999-2714-mt7531-gsw-port5_external_phy_init.patch
@@ -1,9 +1,9 @@
-From 9206472ba03032aea120604e8637b52408ca4b3a Mon Sep 17 00:00:00 2001
-From: Landen Chao <landen.chao@mediatek.com>
-Date: Fri, 29 May 2020 15:12:35 +0800
-Subject: [PATCH 2/2] 740_patch
+From 13b169a35dfff523263d20d0d97e46401f6c692f Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:31 +0800
+Subject: [PATCH]
+ [networking][999-2714-mt7531-gsw-port5_external_phy_init.patch]
-Change-Id: I7e0164751702f573d5185c4290ff78688f42f603
---
drivers/net/phy/mtk/mt753x/Makefile | 3 +-
drivers/net/phy/mtk/mt753x/mt7531.c | 3 +
@@ -15,7 +15,7 @@
create mode 100644 drivers/net/phy/mtk/mt753x/mt753x_extphy.h
diff --git a/drivers/net/phy/mtk/mt753x/Makefile b/drivers/net/phy/mtk/mt753x/Makefile
-index 384b0ff7..694ffa83 100644
+index b5a63fe91..16e977528 100644
--- a/drivers/net/phy/mtk/mt753x/Makefile
+++ b/drivers/net/phy/mtk/mt753x/Makefile
@@ -7,5 +7,6 @@ obj-$(CONFIG_MT753X_GSW) += mt753x.o
@@ -27,10 +27,10 @@
+ mt753x_extphy.o
diff --git a/drivers/net/phy/mtk/mt753x/mt7531.c b/drivers/net/phy/mtk/mt753x/mt7531.c
-index 04729835..4a2943b1 100644
+index 512a89a94..3e2187d21 100755
--- a/drivers/net/phy/mtk/mt753x/mt7531.c
+++ b/drivers/net/phy/mtk/mt753x/mt7531.c
-@@ -265,6 +265,9 @@ static int mt7531_set_port_sgmii_force_mode(struct gsw_mt753x *gsw, u32 port,
+@@ -264,6 +264,9 @@ static int mt7531_set_port_sgmii_force_mode(struct gsw_mt753x *gsw, u32 port,
return -EINVAL;
}
@@ -41,11 +41,11 @@
switch (port_cfg->speed) {
diff --git a/drivers/net/phy/mtk/mt753x/mt753x.h b/drivers/net/phy/mtk/mt753x/mt753x.h
-index 5053a7d7..a3f343cd 100644
+index 252ce350f..c23fd9e5f 100644
--- a/drivers/net/phy/mtk/mt753x/mt753x.h
+++ b/drivers/net/phy/mtk/mt753x/mt753x.h
-@@ -154,6 +154,7 @@ void mt753x_irq_worker(struct work_struct *work);
- void mt753x_irq_enable(struct gsw_mt753x *gsw);
+@@ -147,6 +147,7 @@ int mt753x_phy_calibration(struct gsw_mt753x *gsw, u8 phyaddr);
+ int extphy_init(struct gsw_mt753x *gsw, int addr);
int mt753x_phy_calibration(struct gsw_mt753x *gsw, u8 phyaddr);
+int extphy_init(struct gsw_mt753x *gsw, int addr);
@@ -54,7 +54,7 @@
#define MII_MMD_ACC_CTL_REG 0x0d
diff --git a/drivers/net/phy/mtk/mt753x/mt753x_extphy.c b/drivers/net/phy/mtk/mt753x/mt753x_extphy.c
new file mode 100644
-index 00000000..f58e8a62
+index 000000000..f58e8a62d
--- /dev/null
+++ b/drivers/net/phy/mtk/mt753x/mt753x_extphy.c
@@ -0,0 +1,69 @@
@@ -129,7 +129,7 @@
+}
diff --git a/drivers/net/phy/mtk/mt753x/mt753x_extphy.h b/drivers/net/phy/mtk/mt753x/mt753x_extphy.h
new file mode 100644
-index 00000000..2b72c8a9
+index 000000000..2b72c8a9d
--- /dev/null
+++ b/drivers/net/phy/mtk/mt753x/mt753x_extphy.h
@@ -0,0 +1,18 @@
@@ -152,5 +152,5 @@
+};
+#endif
--
-2.17.1
+2.34.1
diff --git a/target/linux/mediatek/patches-5.4/999-2715-add-gpy211-phy-support.patch b/target/linux/mediatek/patches-5.4/999-2715-add-gpy211-phy-support.patch
new file mode 100644
index 0000000..7613c86
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2715-add-gpy211-phy-support.patch
@@ -0,0 +1,41 @@
+From e18ad3270a1bdd776f5d7b13c4756efbd890825b Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:31 +0800
+Subject: [PATCH] [networking][999-2715-add-gpy211-phy-support.patch]
+
+---
+ drivers/net/phy/Kconfig | 5 +++++
+ drivers/net/phy/Makefile | 1 +
+ 2 files changed, 6 insertions(+)
+
+diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
+index ec5c66d0a..3a3c12566 100644
+--- a/drivers/net/phy/Kconfig
++++ b/drivers/net/phy/Kconfig
+@@ -473,6 +473,11 @@ config FIXED_PHY
+
+ Currently tested with mpc866ads and mpc8349e-mitx.
+
++config GPY211_PHY
++ tristate "GPY211 PHY"
++ ---help---
++ Supports the Intel GPY211 PHY with rate adaption.
++
+ config ICPLUS_PHY
+ tristate "ICPlus PHYs"
+ ---help---
+diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
+index f4feb0e3d..1d368d1d5 100644
+--- a/drivers/net/phy/Makefile
++++ b/drivers/net/phy/Makefile
+@@ -88,6 +88,7 @@ obj-$(CONFIG_DP83TC811_PHY) += dp83tc811.o
+ obj-$(CONFIG_DP83848_PHY) += dp83848.o
+ obj-$(CONFIG_DP83867_PHY) += dp83867.o
+ obj-$(CONFIG_FIXED_PHY) += fixed_phy.o
++obj-$(CONFIG_GPY211_PHY) += gpy211.o
+ obj-$(CONFIG_ICPLUS_PHY) += icplus.o
+ obj-$(CONFIG_INTEL_XWAY_PHY) += intel-xway.o
+ obj-$(CONFIG_LSI_ET1011C_PHY) += et1011c.o
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2716-en8801sc-gphy-support.patch b/target/linux/mediatek/patches-5.4/999-2716-en8801sc-gphy-support.patch
new file mode 100644
index 0000000..47168b9
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2716-en8801sc-gphy-support.patch
@@ -0,0 +1,41 @@
+From 43abbf9e88d9cf44e123a17d6d46db06fbb51da7 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:31 +0800
+Subject: [PATCH] [networking][999-2716-en8801sc-gphy-support.patch]
+
+---
+ drivers/net/phy/Kconfig | 5 +++++
+ drivers/net/phy/Makefile | 1 +
+ 2 files changed, 6 insertions(+)
+
+diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
+index 3a3c12566..87eaaad76 100644
+--- a/drivers/net/phy/Kconfig
++++ b/drivers/net/phy/Kconfig
+@@ -345,6 +345,11 @@ config SFP
+ depends on HWMON || HWMON=n
+ select MDIO_I2C
+
++config AIROHA_EN8801SC_PHY
++ tristate "Drivers for Airoha EN8801S Gigabit PHYs for MediaTek SoC."
++ ---help---
++ Currently supports the Airoha EN8801S PHY for MediaTek SoC.
++
+ config AIROHA_EN8811H_PHY
+ tristate "Drivers for Airoha EN8811H 2.5G Gigabit PHY"
+ ---help---
+diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
+index 1d368d1d5..801550726 100644
+--- a/drivers/net/phy/Makefile
++++ b/drivers/net/phy/Makefile
+@@ -68,6 +68,7 @@ aquantia-objs += aquantia_main.o
+ ifdef CONFIG_HWMON
+ aquantia-objs += aquantia_hwmon.o
+ endif
++obj-$(CONFIG_AIROHA_EN8801SC_PHY) += en8801sc.o
+ obj-$(CONFIG_AIROHA_EN8811H_PHY) += air_en8811h.o
+ obj-$(CONFIG_AQUANTIA_PHY) += aquantia.o
+ obj-$(CONFIG_AX88796B_PHY) += ax88796b.o
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2717-add-mediatek-2p5ge-phy-support.patch b/target/linux/mediatek/patches-5.4/999-2717-add-mediatek-2p5ge-phy-support.patch
new file mode 100644
index 0000000..b750c57
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2717-add-mediatek-2p5ge-phy-support.patch
@@ -0,0 +1,41 @@
+From d3e70b511ec583b7cced3ffd3c34700084c9149d Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:31 +0800
+Subject: [PATCH] [networking][999-2717-add-mediatek-2p5ge-phy-support.patch]
+
+---
+ drivers/net/phy/Kconfig | 5 +++++
+ drivers/net/phy/Makefile | 1 +
+ 2 files changed, 6 insertions(+)
+
+diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
+index 87eaaad76..45aaf7203 100644
+--- a/drivers/net/phy/Kconfig
++++ b/drivers/net/phy/Kconfig
+@@ -539,6 +539,11 @@ config MEDIATEK_GE_SOC_PHY
+ present in the SoCs efuse and will dynamically calibrate VCM
+ (common-mode voltage) during startup.
+
++config MEDIATEK_2P5GE_PHY
++ tristate "MediaTek 2.5Gb Ethernet PHYs"
++ ---help---
++ Supports MediaTek internal 2.5Gb Ethernet PHYs.
++
+ config MICREL_PHY
+ tristate "Micrel PHYs"
+ ---help---
+diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
+index 801550726..998de790e 100644
+--- a/drivers/net/phy/Makefile
++++ b/drivers/net/phy/Makefile
+@@ -98,6 +98,7 @@ obj-$(CONFIG_MARVELL_PHY) += marvell.o
+ obj-$(CONFIG_MARVELL_10G_PHY) += marvell10g.o
+ obj-$(CONFIG_MEDIATEK_GE_PHY) += mediatek-ge.o
+ obj-$(CONFIG_MEDIATEK_GE_SOC_PHY) += mediatek-ge-soc.o
++obj-$(CONFIG_MEDIATEK_2P5GE_PHY)+= mediatek-2p5ge.o
+ obj-$(CONFIG_MESON_GXL_PHY) += meson-gxl.o
+ obj-$(CONFIG_MICREL_KS8995MA) += spi_ks8995.o
+ obj-$(CONFIG_MICREL_PHY) += micrel.o
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/746-mxl-gpy-phy-support.patch b/target/linux/mediatek/patches-5.4/999-2718-mxl-gpy-phy-support.patch
similarity index 96%
rename from target/linux/mediatek/patches-5.4/746-mxl-gpy-phy-support.patch
rename to target/linux/mediatek/patches-5.4/999-2718-mxl-gpy-phy-support.patch
index 5ff2798..a4cc28a 100644
--- a/target/linux/mediatek/patches-5.4/746-mxl-gpy-phy-support.patch
+++ b/target/linux/mediatek/patches-5.4/999-2718-mxl-gpy-phy-support.patch
@@ -1,3 +1,17 @@
+From 4dad0228a64a810460928cd55c4dee0dd35708a0 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:32 +0800
+Subject: [PATCH] [networking][999-2718-mxl-gpy-phy-support.patch]
+
+---
+ drivers/net/phy/Kconfig | 6 +
+ drivers/net/phy/Makefile | 1 +
+ drivers/net/phy/mxl-gpy.c | 738 ++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 745 insertions(+)
+ create mode 100644 drivers/net/phy/mxl-gpy.c
+
+diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
+index 45aaf7203..c0e09c99d 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -516,6 +516,12 @@ config MARVELL_10G_PHY
@@ -13,9 +27,11 @@
config MESON_GXL_PHY
tristate "Amlogic Meson GXL Internal PHY"
depends on ARCH_MESON || COMPILE_TEST
+diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
+index 998de790e..8b57d6105 100644
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
-@@ -95,6 +95,7 @@ obj-$(CONFIG_LSI_ET1011C_PHY) += et1011c
+@@ -96,6 +96,7 @@ obj-$(CONFIG_LSI_ET1011C_PHY) += et1011c.o
obj-$(CONFIG_LXT_PHY) += lxt.o
obj-$(CONFIG_MARVELL_PHY) += marvell.o
obj-$(CONFIG_MARVELL_10G_PHY) += marvell10g.o
@@ -23,6 +39,9 @@
obj-$(CONFIG_MEDIATEK_GE_PHY) += mediatek-ge.o
obj-$(CONFIG_MEDIATEK_GE_SOC_PHY) += mediatek-ge-soc.o
obj-$(CONFIG_MEDIATEK_2P5GE_PHY)+= mediatek-2p5ge.o
+diff --git a/drivers/net/phy/mxl-gpy.c b/drivers/net/phy/mxl-gpy.c
+new file mode 100644
+index 000000000..730427832
--- /dev/null
+++ b/drivers/net/phy/mxl-gpy.c
@@ -0,0 +1,738 @@
@@ -764,3 +783,6 @@
+MODULE_DESCRIPTION("Maxlinear Ethernet GPY Driver");
+MODULE_AUTHOR("Xu Liang");
+MODULE_LICENSE("GPL");
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/751-net-phy-aquantia-add-firmware-download.patch b/target/linux/mediatek/patches-5.4/999-2719-net-phy-aquantia-add-firmware-download.patch
similarity index 97%
rename from target/linux/mediatek/patches-5.4/751-net-phy-aquantia-add-firmware-download.patch
rename to target/linux/mediatek/patches-5.4/999-2719-net-phy-aquantia-add-firmware-download.patch
index 0e38dad..a66e0f1 100644
--- a/target/linux/mediatek/patches-5.4/751-net-phy-aquantia-add-firmware-download.patch
+++ b/target/linux/mediatek/patches-5.4/999-2719-net-phy-aquantia-add-firmware-download.patch
@@ -1,5 +1,20 @@
+From 2fd17c806f5ad23f9958c358cdc26f618f05d5df Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:32 +0800
+Subject: [PATCH]
+ [networking][999-2719-net-phy-aquantia-add-firmware-download.patch]
+
+---
+ drivers/net/phy/Kconfig | 33 +-
+ drivers/net/phy/Makefile | 3 +
+ drivers/net/phy/aquantia.h | 64 ++
+ drivers/net/phy/aquantia_firmware.c | 1090 +++++++++++++++++++++++++++
+ drivers/net/phy/aquantia_main.c | 92 ++-
+ 5 files changed, 1241 insertions(+), 41 deletions(-)
+ create mode 100644 drivers/net/phy/aquantia_firmware.c
+
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
-index 7b49c94..5a79af2 100644
+index c0e09c99d..d467834eb 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -372,7 +372,38 @@ config AMD_PHY
@@ -43,10 +58,10 @@
config AX88796B_PHY
tristate "Asix PHYs"
diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
-index 043a697..4f67110 100644
+index 8b57d6105..e9653de36 100644
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
-@@ -67,5 +67,8 @@ aquantia-objs += aquantia_main.o
+@@ -68,6 +68,9 @@ aquantia-objs += aquantia_main.o
ifdef CONFIG_HWMON
aquantia-objs += aquantia_hwmon.o
endif
@@ -54,9 +69,10 @@
+aquantia-objs += aquantia_firmware.o
+endif
obj-$(CONFIG_AIROHA_EN8801SC_PHY) += en8801sc.o
+ obj-$(CONFIG_AIROHA_EN8811H_PHY) += air_en8811h.o
obj-$(CONFIG_AQUANTIA_PHY) += aquantia.o
diff --git a/drivers/net/phy/aquantia.h b/drivers/net/phy/aquantia.h
-index 5a16caa..ab1c241 100644
+index 5a16caab7..ab1c241d3 100644
--- a/drivers/net/phy/aquantia.h
+++ b/drivers/net/phy/aquantia.h
@@ -9,8 +9,72 @@
@@ -134,7 +150,7 @@
+#endif
diff --git a/drivers/net/phy/aquantia_firmware.c b/drivers/net/phy/aquantia_firmware.c
new file mode 100644
-index 0000000..622557c
+index 000000000..d2828aad4
--- /dev/null
+++ b/drivers/net/phy/aquantia_firmware.c
@@ -0,0 +1,1090 @@
@@ -1229,7 +1245,7 @@
+ return ret;
+}
diff --git a/drivers/net/phy/aquantia_main.c b/drivers/net/phy/aquantia_main.c
-index a8c828b..d98757f 100644
+index e7495c9a7..36f1aac4f 100644
--- a/drivers/net/phy/aquantia_main.c
+++ b/drivers/net/phy/aquantia_main.c
@@ -8,10 +8,12 @@
@@ -1245,7 +1261,7 @@
#include "aquantia.h"
-@@ -39,7 +40,6 @@
+@@ -39,7 +41,6 @@
#define MDIO_AN_VEND_PROV_2500BASET_FULL BIT(10)
#define MDIO_AN_VEND_PROV_DOWNSHIFT_EN BIT(4)
#define MDIO_AN_VEND_PROV_DOWNSHIFT_MASK GENMASK(3, 0)
@@ -1253,7 +1269,7 @@
#define MDIO_AN_TX_VEND_STATUS1 0xc800
#define MDIO_AN_TX_VEND_STATUS1_RATE_MASK GENMASK(3, 1)
-@@ -73,18 +73,6 @@
+@@ -73,18 +74,6 @@
#define MDIO_AN_RX_VEND_STAT3 0xe832
#define MDIO_AN_RX_VEND_STAT3_AFR BIT(0)
@@ -1272,7 +1288,7 @@
/* Vendor specific 1, MDIO_MMD_VEND1 */
#define VEND1_GLOBAL_FW_ID 0x0020
#define VEND1_GLOBAL_FW_ID_MAJOR GENMASK(15, 8)
-@@ -124,31 +112,6 @@
+@@ -124,31 +113,6 @@
#define VEND1_GLOBAL_INT_VEND_MASK_GLOBAL2 BIT(1)
#define VEND1_GLOBAL_INT_VEND_MASK_GLOBAL3 BIT(0)
@@ -1304,7 +1320,7 @@
static int aqr107_get_sset_count(struct phy_device *phydev)
{
return AQR107_SGMII_STAT_SZ;
-@@ -422,7 +361,7 @@ static int aqr107_get_downshift(struct phy_device *phydev, u8 *data)
+@@ -398,7 +362,7 @@ static int aqr107_get_downshift(struct phy_device *phydev, u8 *data)
return 0;
}
@@ -1313,7 +1329,7 @@
{
int val = 0;
-@@ -482,7 +421,7 @@ static int aqr107_wait_reset_complete(struct phy_device *phydev)
+@@ -458,7 +422,7 @@ static int aqr107_wait_reset_complete(struct phy_device *phydev)
return val ? 0 : -ETIMEDOUT;
}
@@ -1322,7 +1338,7 @@
{
u8 fw_major, fw_minor, build_id, prov_id;
int val;
-@@ -505,6 +444,21 @@ static void aqr107_chip_info(struct phy_device *phydev)
+@@ -481,6 +445,21 @@ static void aqr107_chip_info(struct phy_device *phydev)
fw_major, fw_minor, build_id, prov_id);
}
@@ -1344,7 +1360,7 @@
static int aqr107_config_init(struct phy_device *phydev)
{
int ret;
-@@ -520,6 +470,12 @@ static int aqr107_config_init(struct phy_device *phydev)
+@@ -499,6 +478,12 @@ static int aqr107_config_init(struct phy_device *phydev)
ret = aqr107_wait_reset_complete(phydev);
if (!ret)
aqr107_chip_info(phydev);
@@ -1357,7 +1373,7 @@
return aqr107_set_downshift(phydev, MDIO_AN_VEND_PROV_DOWNSHIFT_DFLT);
}
-@@ -604,12 +556,39 @@ static void aqr107_link_change_notify(struct phy_device *phydev)
+@@ -574,12 +559,39 @@ static void aqr107_link_change_notify(struct phy_device *phydev)
static int aqr107_suspend(struct phy_device *phydev)
{
@@ -1397,3 +1413,6 @@
return phy_clear_bits_mmd(phydev, MDIO_MMD_VEND1, MDIO_CTRL1,
MDIO_CTRL1_LPOWER);
}
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/752-net-dsa-phy-coverity-scan.patch b/target/linux/mediatek/patches-5.4/999-2720-net-dsa-phy-coverity-scan.patch
old mode 100755
new mode 100644
similarity index 78%
rename from target/linux/mediatek/patches-5.4/752-net-dsa-phy-coverity-scan.patch
rename to target/linux/mediatek/patches-5.4/999-2720-net-dsa-phy-coverity-scan.patch
index 17921e8..dfdb019
--- a/target/linux/mediatek/patches-5.4/752-net-dsa-phy-coverity-scan.patch
+++ b/target/linux/mediatek/patches-5.4/999-2720-net-dsa-phy-coverity-scan.patch
@@ -1,7 +1,18 @@
-diff -Naur a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
---- a/drivers/net/dsa/mt7530.c 2022-11-25 14:10:39.452491570 +0800
-+++ b/drivers/net/dsa/mt7530.c 2022-11-28 09:47:11.157096408 +0800
-@@ -2476,7 +2476,7 @@
+From 98719219a038adac88f2fae9caaecb7e84704d09 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:32 +0800
+Subject: [PATCH] [networking][999-2720-net-dsa-phy-coverity-scan.patch]
+
+---
+ drivers/net/dsa/mt7530.c | 4 ++-
+ drivers/net/dsa/mt7531_phy.c | 56 +++++++++++++++++++-----------------
+ 2 files changed, 32 insertions(+), 28 deletions(-)
+
+diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
+index 290a2e77a..21fa3e300 100644
+--- a/drivers/net/dsa/mt7530.c
++++ b/drivers/net/dsa/mt7530.c
+@@ -2477,7 +2477,7 @@ static int
mt7531_cpu_port_config(struct dsa_switch *ds, int port)
{
struct mt7530_priv *priv = ds->priv;
@@ -10,7 +21,7 @@
int speed;
switch (port) {
-@@ -2496,6 +2496,8 @@
+@@ -2497,6 +2497,8 @@ mt7531_cpu_port_config(struct dsa_switch *ds, int port)
priv->p6_interface = interface;
break;
};
@@ -19,10 +30,11 @@
if (interface == PHY_INTERFACE_MODE_2500BASEX)
speed = SPEED_2500;
-diff -Naur a/drivers/net/dsa/mt7531_phy.c b/drivers/net/dsa/mt7531_phy.c
---- a/drivers/net/dsa/mt7531_phy.c 2022-11-25 14:10:47.032465430 +0800
-+++ b/drivers/net/dsa/mt7531_phy.c 2022-11-29 09:56:05.024665073 +0800
-@@ -252,7 +252,7 @@
+diff --git a/drivers/net/dsa/mt7531_phy.c b/drivers/net/dsa/mt7531_phy.c
+index a5c1e7d54..aaa03c678 100644
+--- a/drivers/net/dsa/mt7531_phy.c
++++ b/drivers/net/dsa/mt7531_phy.c
+@@ -252,7 +252,7 @@ static int ge_cal_rext(struct dsa_switch *ds, u8 phyaddr, u32 delay)
u16 dev1e_17a_tmp, dev1e_e0_tmp;
/* *** Iext/Rext Cal start ************ */
@@ -31,7 +43,7 @@
/* analog calibration enable, Rext calibration enable */
/* 1e_db[12]:rg_cal_ckinv, [8]:rg_ana_calen, [4]:rg_rext_calen, [0]:rg_zcalen_a */
/* 1e_dc[0]:rg_txvos_calen */
-@@ -296,7 +296,7 @@
+@@ -296,7 +296,7 @@ static int ge_cal_rext(struct dsa_switch *ds, u8 phyaddr, u32 delay)
all_ana_cal_status = ANACAL_FINISH;
//printk(" GE Rext AnaCal Done! (%d)(0x%x) \r\n", cnt, rg_zcal_ctrl);
} else {
@@ -40,7 +52,7 @@
dev1e_e0_tmp = tc_phy_read_dev_reg(ds, PHY0, 0x1e, 0xe0);
if ((rg_zcal_ctrl == 0x3F) || (rg_zcal_ctrl == 0x00)) {
all_ana_cal_status = ANACAL_SATURATION; /* need to FT(IC fail?) */
-@@ -718,32 +718,34 @@
+@@ -718,32 +718,34 @@ static int ge_cal_tx_amp(struct dsa_switch *ds, u8 phyaddr, u32 delay)
} else if (phyaddr == 1) {
if (calibration_pair == ANACAL_PAIR_A)
tx_amp_temp = tx_amp_temp - 1;
@@ -91,7 +103,7 @@
}
reg_temp = tc_phy_read_dev_reg(ds, phyaddr, 0x1e, tx_amp_reg)&(~0xff00);
tc_phy_write_dev_reg(ds, phyaddr, 0x1e, tx_amp_reg_100,(tx_amp_temp|((tx_amp_temp)<<tx_amp_reg_shift)));
-@@ -858,7 +860,7 @@
+@@ -858,7 +860,7 @@ static int ge_cal_tx_amp(struct dsa_switch *ds, u8 phyaddr, u32 delay)
reg_backup = 0x0000;
reg_backup |= ((tx_amp_temp << 10) | (tx_amp_temp << 0));
tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x12, reg_backup);
@@ -100,7 +112,7 @@
//printk("PORT[%d] 1e.012 = %x (OFFSET_1000M_PAIR_A)\n", phyaddr, reg_backup);
reg_backup = tc_phy_read_dev_reg(ds, phyaddr, 0x1e, 0x16);
reg_tmp = ((reg_backup & 0x3f) >> 0);
-@@ -866,7 +868,7 @@
+@@ -866,7 +868,7 @@ static int ge_cal_tx_amp(struct dsa_switch *ds, u8 phyaddr, u32 delay)
reg_backup = (reg_backup & (~0x3f));
reg_backup |= (tx_amp_temp << 0);
tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x16, reg_backup);
@@ -109,7 +121,7 @@
//printk("PORT[%d] 1e.016 = %x (OFFSET_TESTMODE_1000M_PAIR_A)\n", phyaddr, reg_backup);
}
else if(calibration_pair == ANACAL_PAIR_B){
-@@ -876,7 +878,7 @@
+@@ -876,7 +878,7 @@ static int ge_cal_tx_amp(struct dsa_switch *ds, u8 phyaddr, u32 delay)
reg_backup = 0x0000;
reg_backup |= ((tx_amp_temp << 8) | (tx_amp_temp << 0));
tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x17, reg_backup);
@@ -118,7 +130,7 @@
//printk("PORT[%d] 1e.017 = %x (OFFSET_1000M_PAIR_B)\n", phyaddr, reg_backup);
reg_backup = tc_phy_read_dev_reg(ds, phyaddr, 0x1e, 0x18);
reg_tmp = ((reg_backup & 0x3f) >> 0);
-@@ -884,7 +886,7 @@
+@@ -884,7 +886,7 @@ static int ge_cal_tx_amp(struct dsa_switch *ds, u8 phyaddr, u32 delay)
reg_backup = (reg_backup & (~0x3f));
reg_backup |= (tx_amp_temp << 0);
tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x18, reg_backup);
@@ -127,7 +139,7 @@
//printk("PORT[%d] 1e.018 = %x (OFFSET_TESTMODE_1000M_PAIR_B)\n", phyaddr, reg_backup);
}
else if(calibration_pair == ANACAL_PAIR_C){
-@@ -894,7 +896,7 @@
+@@ -894,7 +896,7 @@ static int ge_cal_tx_amp(struct dsa_switch *ds, u8 phyaddr, u32 delay)
reg_backup = (reg_backup & (~0x3f00));
reg_backup |= (tx_amp_temp << 8);
tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x19, reg_backup);
@@ -136,7 +148,7 @@
//printk("PORT[%d] 1e.019 = %x (OFFSET_1000M_PAIR_C)\n", phyaddr, reg_backup);
reg_backup = tc_phy_read_dev_reg(ds, phyaddr, 0x1e, 0x20);
reg_tmp = ((reg_backup & 0x3f) >> 0);
-@@ -902,7 +904,7 @@
+@@ -902,7 +904,7 @@ static int ge_cal_tx_amp(struct dsa_switch *ds, u8 phyaddr, u32 delay)
reg_backup = (reg_backup & (~0x3f));
reg_backup |= (tx_amp_temp << 0);
tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x20, reg_backup);
@@ -145,7 +157,7 @@
//printk("PORT[%d] 1e.020 = %x (OFFSET_TESTMODE_1000M_PAIR_C)\n", phyaddr, reg_backup);
}
else if(calibration_pair == ANACAL_PAIR_D){
-@@ -912,7 +914,7 @@
+@@ -912,7 +914,7 @@ static int ge_cal_tx_amp(struct dsa_switch *ds, u8 phyaddr, u32 delay)
reg_backup = (reg_backup & (~0x3f00));
reg_backup |= (tx_amp_temp << 8);
tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x21, reg_backup);
@@ -154,7 +166,7 @@
//printk("PORT[%d] 1e.021 = %x (OFFSET_1000M_PAIR_D)\n", phyaddr, reg_backup);
reg_backup = tc_phy_read_dev_reg(ds, phyaddr, 0x1e, 0x22);
reg_tmp = ((reg_backup & 0x3f) >> 0);
-@@ -920,7 +922,7 @@
+@@ -920,7 +922,7 @@ static int ge_cal_tx_amp(struct dsa_switch *ds, u8 phyaddr, u32 delay)
reg_backup = (reg_backup & (~0x3f));
reg_backup |= (tx_amp_temp << 0);
tc_phy_write_dev_reg(ds, phyaddr, 0x1e, 0x22, reg_backup);
@@ -163,7 +175,7 @@
//printk("PORT[%d] 1e.022 = %x (OFFSET_TESTMODE_1000M_PAIR_D)\n", phyaddr, reg_backup);
}
-@@ -1352,7 +1354,7 @@
+@@ -1352,7 +1354,7 @@ static void mt7531_eee_setting(struct dsa_switch *ds, u32 port)
int mt7531_phy_setup(struct dsa_switch *ds)
{
@@ -172,4 +184,6 @@
int i;
mt7531_phy_setting(ds);
-
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/753-net-mt753x-phy-coverity-scan.patch b/target/linux/mediatek/patches-5.4/999-2721-net-mt753x-phy-coverity-scan.patch
old mode 100755
new mode 100644
similarity index 79%
rename from target/linux/mediatek/patches-5.4/753-net-mt753x-phy-coverity-scan.patch
rename to target/linux/mediatek/patches-5.4/999-2721-net-mt753x-phy-coverity-scan.patch
index c4d7d4c..a9b1316
--- a/target/linux/mediatek/patches-5.4/753-net-mt753x-phy-coverity-scan.patch
+++ b/target/linux/mediatek/patches-5.4/999-2721-net-mt753x-phy-coverity-scan.patch
@@ -1,7 +1,18 @@
-diff -Naur a/drivers/net/phy/mtk/mt753x/mt753x_common.c b/drivers/net/phy/mtk/mt753x/mt753x_common.c
---- a/drivers/net/phy/mtk/mt753x/mt753x_common.c 2022-11-25 14:12:06.308223474 +0800
-+++ b/drivers/net/phy/mtk/mt753x/mt753x_common.c 2022-11-25 14:21:52.038450276 +0800
-@@ -49,6 +49,9 @@
+From 520aea1caf199f454a0988f23d000c18256caa2b Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:32 +0800
+Subject: [PATCH] [networking][999-2721-net-mt753x-phy-coverity-scan.patch]
+
+---
+ drivers/net/phy/mtk/mt753x/mt753x_common.c | 3 ++
+ drivers/net/phy/mtk/mt753x/mt753x_phy.c | 56 +++++++++++-----------
+ 2 files changed, 32 insertions(+), 27 deletions(-)
+
+diff --git a/drivers/net/phy/mtk/mt753x/mt753x_common.c b/drivers/net/phy/mtk/mt753x/mt753x_common.c
+index 4015ddf12..0e08c8532 100644
+--- a/drivers/net/phy/mtk/mt753x/mt753x_common.c
++++ b/drivers/net/phy/mtk/mt753x/mt753x_common.c
+@@ -49,6 +49,9 @@ static void display_port_link_status(struct gsw_mt753x *gsw, u32 port)
case MAC_SPD_2500:
speed = "2.5Gbps";
break;
@@ -11,10 +22,11 @@
}
if (pmsr & MAC_LNK_STS) {
-diff -Naur a/drivers/net/phy/mtk/mt753x/mt753x_phy.c b/drivers/net/phy/mtk/mt753x/mt753x_phy.c
---- a/drivers/net/phy/mtk/mt753x/mt753x_phy.c 2022-11-25 14:12:34.160149995 +0800
-+++ b/drivers/net/phy/mtk/mt753x/mt753x_phy.c 2022-11-29 14:12:28.261884707 +0800
-@@ -141,7 +141,7 @@
+diff --git a/drivers/net/phy/mtk/mt753x/mt753x_phy.c b/drivers/net/phy/mtk/mt753x/mt753x_phy.c
+index 0c6f9c930..afc46cdd8 100644
+--- a/drivers/net/phy/mtk/mt753x/mt753x_phy.c
++++ b/drivers/net/phy/mtk/mt753x/mt753x_phy.c
+@@ -141,7 +141,7 @@ int ge_cal_rext(struct gsw_mt753x *gsw, u8 phyaddr, u32 delay)
u16 dev1e_17a_tmp, dev1e_e0_tmp;
/* *** Iext/Rext Cal start ************ */
@@ -23,7 +35,7 @@
/* analog calibration enable, Rext calibration enable */
/* 1e_db[12]:rg_cal_ckinv, [8]:rg_ana_calen, [4]:rg_rext_calen, [0]:rg_zcalen_a */
/* 1e_dc[0]:rg_txvos_calen */
-@@ -185,7 +185,7 @@
+@@ -185,7 +185,7 @@ int ge_cal_rext(struct gsw_mt753x *gsw, u8 phyaddr, u32 delay)
all_ana_cal_status = ANACAL_FINISH;
//printk(" GE Rext AnaCal Done! (%d)(0x%x) \r\n", cnt, rg_zcal_ctrl);
} else {
@@ -32,7 +44,7 @@
dev1e_e0_tmp = tc_phy_read_dev_reg(gsw, PHY0, 0x1e, 0xe0);
if ((rg_zcal_ctrl == 0x3F) || (rg_zcal_ctrl == 0x00)) {
all_ana_cal_status = ANACAL_SATURATION; /* need to FT(IC fail?) */
-@@ -580,33 +580,35 @@
+@@ -580,33 +580,35 @@ int ge_cal_tx_amp(struct gsw_mt753x *gsw, u8 phyaddr, u32 delay)
} else if (phyaddr == 1) {
if (calibration_pair == ANACAL_PAIR_A)
tx_amp_temp = tx_amp_temp - 1;
@@ -85,7 +97,7 @@
reg_temp = tc_phy_read_dev_reg(gsw, phyaddr, 0x1e, tx_amp_reg)&(~0xff00);
tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, tx_amp_reg_100,(tx_amp_temp|((tx_amp_temp)<<tx_amp_reg_shift)));
tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, tx_amp_reg, (tx_amp_temp|((tx_amp_temp)<<tx_amp_reg_shift)));
-@@ -704,7 +706,7 @@
+@@ -704,7 +706,7 @@ int ge_cal_tx_amp(struct gsw_mt753x *gsw, u8 phyaddr, u32 delay)
reg_backup = 0x0000;
reg_backup |= ((reg_tmp << 10) | (reg_tmp << 0));
tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x12, reg_backup);
@@ -94,7 +106,7 @@
//printk("PORT[%d] 1e.012 = %x (OFFSET_1000M_PAIR_A)\n", phyaddr, reg_backup);
reg_backup = tc_phy_read_dev_reg(gsw, phyaddr, 0x1e, 0x16);
reg_tmp = ((reg_backup & 0x3f) >> 0);
-@@ -712,7 +714,7 @@
+@@ -712,7 +714,7 @@ int ge_cal_tx_amp(struct gsw_mt753x *gsw, u8 phyaddr, u32 delay)
reg_backup = (reg_backup & (~0x3f));
reg_backup |= (reg_tmp << 0);
tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x16, reg_backup);
@@ -103,7 +115,7 @@
//printk("PORT[%d] 1e.016 = %x (OFFSET_TESTMODE_1000M_PAIR_A)\n", phyaddr, reg_backup);
}
else if(calibration_pair == ANACAL_PAIR_B){
-@@ -722,7 +724,7 @@
+@@ -722,7 +724,7 @@ int ge_cal_tx_amp(struct gsw_mt753x *gsw, u8 phyaddr, u32 delay)
reg_backup = 0x0000;
reg_backup |= ((reg_tmp << 8) | (reg_tmp << 0));
tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x17, reg_backup);
@@ -112,7 +124,7 @@
//printk("PORT[%d] 1e.017 = %x (OFFSET_1000M_PAIR_B)\n", phyaddr, reg_backup);
reg_backup = tc_phy_read_dev_reg(gsw, phyaddr, 0x1e, 0x18);
reg_tmp = ((reg_backup & 0x3f) >> 0);
-@@ -730,7 +732,7 @@
+@@ -730,7 +732,7 @@ int ge_cal_tx_amp(struct gsw_mt753x *gsw, u8 phyaddr, u32 delay)
reg_backup = (reg_backup & (~0x3f));
reg_backup |= (reg_tmp << 0);
tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x18, reg_backup);
@@ -121,7 +133,7 @@
//printk("PORT[%d] 1e.018 = %x (OFFSET_TESTMODE_1000M_PAIR_B)\n", phyaddr, reg_backup);
}
else if(calibration_pair == ANACAL_PAIR_C){
-@@ -740,7 +742,7 @@
+@@ -740,7 +742,7 @@ int ge_cal_tx_amp(struct gsw_mt753x *gsw, u8 phyaddr, u32 delay)
reg_backup = (reg_backup & (~0x3f00));
reg_backup |= (reg_tmp << 8);
tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x19, reg_backup);
@@ -130,7 +142,7 @@
//printk("PORT[%d] 1e.019 = %x (OFFSET_1000M_PAIR_C)\n", phyaddr, reg_backup);
reg_backup = tc_phy_read_dev_reg(gsw, phyaddr, 0x1e, 0x20);
reg_tmp = ((reg_backup & 0x3f) >> 0);
-@@ -748,7 +750,7 @@
+@@ -748,7 +750,7 @@ int ge_cal_tx_amp(struct gsw_mt753x *gsw, u8 phyaddr, u32 delay)
reg_backup = (reg_backup & (~0x3f));
reg_backup |= (reg_tmp << 0);
tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x20, reg_backup);
@@ -139,7 +151,7 @@
//printk("PORT[%d] 1e.020 = %x (OFFSET_TESTMODE_1000M_PAIR_C)\n", phyaddr, reg_backup);
}
else if(calibration_pair == ANACAL_PAIR_D){
-@@ -758,7 +760,7 @@
+@@ -758,7 +760,7 @@ int ge_cal_tx_amp(struct gsw_mt753x *gsw, u8 phyaddr, u32 delay)
reg_backup = (reg_backup & (~0x3f00));
reg_backup |= (reg_tmp << 8);
tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x21, reg_backup);
@@ -148,7 +160,7 @@
//printk("PORT[%d] 1e.021 = %x (OFFSET_1000M_PAIR_D)\n", phyaddr, reg_backup);
reg_backup = tc_phy_read_dev_reg(gsw, phyaddr, 0x1e, 0x22);
reg_tmp = ((reg_backup & 0x3f) >> 0);
-@@ -766,7 +768,7 @@
+@@ -766,7 +768,7 @@ int ge_cal_tx_amp(struct gsw_mt753x *gsw, u8 phyaddr, u32 delay)
reg_backup = (reg_backup & (~0x3f));
reg_backup |= (reg_tmp << 0);
tc_phy_write_dev_reg(gsw, phyaddr, 0x1e, 0x22, reg_backup);
@@ -157,3 +169,6 @@
//printk("PORT[%d] 1e.022 = %x (OFFSET_TESTMODE_1000M_PAIR_D)\n", phyaddr, reg_backup);
}
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2722-PATCH-2-4-dt-bindings-phy-Add-PHY_TYPE_DP-definition.patch b/target/linux/mediatek/patches-5.4/999-2722-PATCH-2-4-dt-bindings-phy-Add-PHY_TYPE_DP-definition.patch
new file mode 100644
index 0000000..017c38c
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2722-PATCH-2-4-dt-bindings-phy-Add-PHY_TYPE_DP-definition.patch
@@ -0,0 +1,24 @@
+From 14155ead210d465dc00552fa2537bdafc25054a5 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:33 +0800
+Subject: [PATCH]
+ [networking][999-2722-PATCH-2-4-dt-bindings-phy-Add-PHY_TYPE_DP-definition.patch]
+
+---
+ include/dt-bindings/phy/phy.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/include/dt-bindings/phy/phy.h b/include/dt-bindings/phy/phy.h
+index b6a1eaf1b..1f3f866fa 100644
+--- a/include/dt-bindings/phy/phy.h
++++ b/include/dt-bindings/phy/phy.h
+@@ -16,5 +16,6 @@
+ #define PHY_TYPE_USB2 3
+ #define PHY_TYPE_USB3 4
+ #define PHY_TYPE_UFS 5
++#define PHY_TYPE_DP 6
+
+ #endif /* _DT_BINDINGS_PHY */
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2723-PATCH-3-4-dt-bindings-phy-Add-PHY_TYPE_XPCS-definition.patch b/target/linux/mediatek/patches-5.4/999-2723-PATCH-3-4-dt-bindings-phy-Add-PHY_TYPE_XPCS-definition.patch
new file mode 100644
index 0000000..0266cba
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2723-PATCH-3-4-dt-bindings-phy-Add-PHY_TYPE_XPCS-definition.patch
@@ -0,0 +1,24 @@
+From 971fc691db21a6d231545f8519d920301818c2d5 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:33 +0800
+Subject: [PATCH]
+ [networking][999-2723-PATCH-3-4-dt-bindings-phy-Add-PHY_TYPE_XPCS-definition.patch]
+
+---
+ include/dt-bindings/phy/phy.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/include/dt-bindings/phy/phy.h b/include/dt-bindings/phy/phy.h
+index 1f3f866fa..3727ef721 100644
+--- a/include/dt-bindings/phy/phy.h
++++ b/include/dt-bindings/phy/phy.h
+@@ -17,5 +17,6 @@
+ #define PHY_TYPE_USB3 4
+ #define PHY_TYPE_UFS 5
+ #define PHY_TYPE_DP 6
++#define PHY_TYPE_XPCS 7
+
+ #endif /* _DT_BINDINGS_PHY */
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2724-PATCH-4-4-dt-bindings-phy-Add-DT-bindings-for-Xilinx-ZynqMP-PS.patch b/target/linux/mediatek/patches-5.4/999-2724-PATCH-4-4-dt-bindings-phy-Add-DT-bindings-for-Xilinx-ZynqMP-PS.patch
new file mode 100644
index 0000000..3860b44
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2724-PATCH-4-4-dt-bindings-phy-Add-DT-bindings-for-Xilinx-ZynqMP-PS.patch
@@ -0,0 +1,24 @@
+From 313a776ae1ef71f826cd39545e358a3735c1a032 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:33 +0800
+Subject: [PATCH]
+ [networking][999-2724-PATCH-4-4-dt-bindings-phy-Add-DT-bindings-for-Xilinx-ZynqMP-PS.patch]
+
+---
+ include/dt-bindings/phy/phy.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/include/dt-bindings/phy/phy.h b/include/dt-bindings/phy/phy.h
+index 3727ef721..36e8c241c 100644
+--- a/include/dt-bindings/phy/phy.h
++++ b/include/dt-bindings/phy/phy.h
+@@ -18,5 +18,6 @@
+ #define PHY_TYPE_UFS 5
+ #define PHY_TYPE_DP 6
+ #define PHY_TYPE_XPCS 7
++#define PHY_TYPE_SGMII 8
+
+ #endif /* _DT_BINDINGS_PHY */
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/9010-iwconfig-wireless-rate-fix.patch b/target/linux/mediatek/patches-5.4/999-2725-iwconfig-wireless-rate-fix.patch
similarity index 63%
rename from target/linux/mediatek/patches-5.4/9010-iwconfig-wireless-rate-fix.patch
rename to target/linux/mediatek/patches-5.4/999-2725-iwconfig-wireless-rate-fix.patch
index b29e4cc..951afc2 100644
--- a/target/linux/mediatek/patches-5.4/9010-iwconfig-wireless-rate-fix.patch
+++ b/target/linux/mediatek/patches-5.4/999-2725-iwconfig-wireless-rate-fix.patch
@@ -1,20 +1,34 @@
---- a/include/uapi/linux/wireless.h
-+++ b/include/uapi/linux/wireless.h
-@@ -678,7 +678,7 @@
- * Generic format for most parameters that fit in an int
- */
- struct iw_param {
-- __s32 value; /* The value of the parameter itself */
-+ __u64 value; /* The value of the parameter itself */
- __u8 fixed; /* Hardware should not use auto select */
- __u8 disabled; /* Disable the feature */
- __u16 flags; /* Various specifc flags (if any) */
-@@ -1002,7 +1002,7 @@ struct iw_range {
-
- /* Rates */
- __u8 num_bitrates; /* Number of entries in the list */
-- __s32 bitrate[IW_MAX_BITRATES]; /* list, in bps */
-+ __u64 bitrate[IW_MAX_BITRATES]; /* list, in bps */
-
- /* RTS threshold */
- __s32 min_rts; /* Minimal RTS threshold */
+From 572be3e7a2e9f41c64dd6c8c89cc763b97ecab6c Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:33 +0800
+Subject: [PATCH] [networking][999-2725-iwconfig-wireless-rate-fix.patch]
+
+---
+ include/uapi/linux/wireless.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/include/uapi/linux/wireless.h b/include/uapi/linux/wireless.h
+index 24f3371ad..590c90b14 100644
+--- a/include/uapi/linux/wireless.h
++++ b/include/uapi/linux/wireless.h
+@@ -678,7 +678,7 @@
+ * Generic format for most parameters that fit in an int
+ */
+ struct iw_param {
+- __s32 value; /* The value of the parameter itself */
++ __u64 value; /* The value of the parameter itself */
+ __u8 fixed; /* Hardware should not use auto select */
+ __u8 disabled; /* Disable the feature */
+ __u16 flags; /* Various specifc flags (if any) */
+@@ -1002,7 +1002,7 @@ struct iw_range {
+
+ /* Rates */
+ __u8 num_bitrates; /* Number of entries in the list */
+- __s32 bitrate[IW_MAX_BITRATES]; /* list, in bps */
++ __u64 bitrate[IW_MAX_BITRATES]; /* list, in bps */
+
+ /* RTS threshold */
+ __s32 min_rts; /* Minimal RTS threshold */
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2800-misc-add-mtk-platform.patch b/target/linux/mediatek/patches-5.4/999-2800-misc-add-mtk-platform.patch
new file mode 100644
index 0000000..19cab49
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2800-misc-add-mtk-platform.patch
@@ -0,0 +1,32 @@
+From cbf9eb1b168ed4b650d464512f6502d3d1668813 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:34 +0800
+Subject: [PATCH] [misc][999-2800-misc-add-mtk-platform.patch]
+
+---
+ drivers/misc/Kconfig | 1 +
+ drivers/misc/Makefile | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
+index c55b63750..4cd30fab5 100644
+--- a/drivers/misc/Kconfig
++++ b/drivers/misc/Kconfig
+@@ -481,4 +481,5 @@ source "drivers/misc/cxl/Kconfig"
+ source "drivers/misc/ocxl/Kconfig"
+ source "drivers/misc/cardreader/Kconfig"
+ source "drivers/misc/habanalabs/Kconfig"
++source "drivers/misc/mediatek/Kconfig"
+ endmenu
+diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
+index c1860d35d..30b5d29a1 100644
+--- a/drivers/misc/Makefile
++++ b/drivers/misc/Makefile
+@@ -57,3 +57,4 @@ obj-y += cardreader/
+ obj-$(CONFIG_PVPANIC) += pvpanic.o
+ obj-$(CONFIG_HABANA_AI) += habanalabs/
+ obj-$(CONFIG_XILINX_SDFEC) += xilinx_sdfec.o
++obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2900-dts-mt7622-enable-new-mtk-snand-for-ubi.patch b/target/linux/mediatek/patches-5.4/999-2900-dts-mt7622-enable-new-mtk-snand-for-ubi.patch
new file mode 100644
index 0000000..d12f629
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2900-dts-mt7622-enable-new-mtk-snand-for-ubi.patch
@@ -0,0 +1,38 @@
+From 9ec485a8a2002d6625b8b43158887ecac572ce76 Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:34 +0800
+Subject: [PATCH]
+ [uncategorized][999-2900-dts-mt7622-enable-new-mtk-snand-for-ubi.patch]
+
+---
+ arch/arm64/boot/dts/mediatek/mt7622.dtsi | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/arch/arm64/boot/dts/mediatek/mt7622.dtsi b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
+index 988c31403..d7f147414 100644
+--- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
++++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
+@@ -568,6 +568,20 @@
+ status = "disabled";
+ };
+
++ snand: snfi@1100d000 {
++ compatible = "mediatek,mt7622-snand";
++ reg = <0 0x1100d000 0 0x1000>, <0 0x1100e000 0 0x1000>;
++ reg-names = "nfi", "ecc";
++ interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_LOW>;
++ clocks = <&pericfg CLK_PERI_NFI_PD>,
++ <&pericfg CLK_PERI_SNFI_PD>,
++ <&pericfg CLK_PERI_NFIECC_PD>;
++ clock-names = "nfi_clk", "pad_clk", "ecc_clk";
++ #address-cells = <1>;
++ #size-cells = <0>;
++ status = "disabled";
++ };
++
+ nor_flash: spi@11014000 {
+ compatible = "mediatek,mt7622-nor",
+ "mediatek,mt8173-nor";
+--
+2.34.1
+
diff --git a/target/linux/mediatek/patches-5.4/999-2901-dts-mt7622-remove-cooling-device.patch b/target/linux/mediatek/patches-5.4/999-2901-dts-mt7622-remove-cooling-device.patch
new file mode 100644
index 0000000..16bf5b8
--- /dev/null
+++ b/target/linux/mediatek/patches-5.4/999-2901-dts-mt7622-remove-cooling-device.patch
@@ -0,0 +1,43 @@
+From abe2d8053a5323638eedb60e1e58d2bf34b98a3b Mon Sep 17 00:00:00 2001
+From: Sam Shih <sam.shih@mediatek.com>
+Date: Fri, 2 Jun 2023 13:06:34 +0800
+Subject: [PATCH]
+ [uncategorized][999-2901-dts-mt7622-remove-cooling-device.patch]
+
+---
+ arch/arm64/boot/dts/mediatek/mt7622.dtsi | 19 -------------------
+ 1 file changed, 19 deletions(-)
+
+diff --git a/arch/arm64/boot/dts/mediatek/mt7622.dtsi b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
+index d7f147414..753a97a2f 100644
+--- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
++++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
+@@ -167,25 +167,6 @@
+ };
+ };
+
+- cooling-maps {
+- map0 {
+- trip = <&cpu_passive>;
+- cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+- <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+- };
+-
+- map1 {
+- trip = <&cpu_active>;
+- cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+- <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+- };
+-
+- map2 {
+- trip = <&cpu_hot>;
+- cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+- <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+- };
+- };
+ };
+ };
+
+--
+2.34.1
+