[rdkb][common][bsp][Refactor and sync kernel from openwrt]

[Description]
d0d3e95 [kernel][mt7988][bsp][Enlarge reserved memory size for ATF BL31]
2ea52cf [kernel][mt7988][Change config-5.4 and dtsi files to support pstore]
1400d38 [Kernel][mt7988][eth][Adjust 10G PHY reset assert time]
b5eb811 [kernel][common][eth][Fix Aquantia link speed mismatch issue for downshift evnent]
bff3dc9 [mac80211][app][Change mt76 wifi interfaces rps to 3]
200898b [kernel][common][clk][set rtc clock enable default]

[Release-log]

Change-Id: Ia0d522d9bd17249ccb278675ec11892f08cd63c7
diff --git a/recipes-devtools/smp/files/smp-mt76.sh b/recipes-devtools/smp/files/smp-mt76.sh
index b71c90a..c76e2f8 100644
--- a/recipes-devtools/smp/files/smp-mt76.sh
+++ b/recipes-devtools/smp/files/smp-mt76.sh
@@ -149,7 +149,7 @@
 
 		CPU0_RPS="$WIFI_IF_LIST"
 		CPU1_RPS="$WIFI_IF_LIST"
-		CPU2_RPS="$WIFI_IF_LIST"
+		CPU2_RPS=""
 		CPU3_RPS=""
 	fi
 	dbg2 "CPU0_AFFINITY = $CPU0_AFFINITY"
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/generic/hack-5.4/800-leds-leds-bcm63138-read-default-trigger-from-OF.patch b/recipes-kernel/linux/linux-mediatek-5.4/generic/hack-5.4/800-leds-leds-bcm63138-read-default-trigger-from-OF.patch
new file mode 100644
index 0000000..684bb9f
--- /dev/null
+++ b/recipes-kernel/linux/linux-mediatek-5.4/generic/hack-5.4/800-leds-leds-bcm63138-read-default-trigger-from-OF.patch
@@ -0,0 +1,26 @@
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
+Date: Tue, 28 Feb 2023 23:38:30 +0100
+Subject: [PATCH] leds: leds-bcm63138: read default trigger from OF
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It's needed in kernels older than 5.10 due to the missing commit
+c49d6cab0d7f ("leds: parse linux,default-trigger DT property in LED
+core").
+
+Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
+---
+ drivers/leds/blink/leds-bcm63138.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/leds/blink/leds-bcm63138.c
++++ b/drivers/leds/blink/leds-bcm63138.c
+@@ -228,6 +228,7 @@ static void bcm63138_leds_create_led(str
+ 	led->cdev.max_brightness = BCM63138_MAX_BRIGHTNESS;
+ 	led->cdev.brightness_set = bcm63138_leds_brightness_set;
+ 	led->cdev.blink_set = bcm63138_leds_blink_set;
++	led->cdev.default_trigger = of_get_property(np, "linux,default-trigger", NULL);
+ 
+ 	err = devm_led_classdev_register_ext(dev, &led->cdev, &init_data);
+ 	if (err) {
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/generic/hack-5.4/hack-5.4.inc b/recipes-kernel/linux/linux-mediatek-5.4/generic/hack-5.4/hack-5.4.inc
index 8597603..431e127 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/generic/hack-5.4/hack-5.4.inc
+++ b/recipes-kernel/linux/linux-mediatek-5.4/generic/hack-5.4/hack-5.4.inc
@@ -34,6 +34,7 @@
     file://711-net-dsa-mv88e6xxx-disable-ATU-violation.patch \
     file://721-phy_packets.patch \
     file://773-bgmac-add-srab-switch.patch \
+    file://800-leds-leds-bcm63138-read-default-trigger-from-OF.patch \
     file://901-debloat_sock_diag.patch \
     file://902-debloat_proc.patch \
     file://904-debloat_dma_buf.patch \
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988.dtsi b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988.dtsi
index 46f0708..1f881ea 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988.dtsi
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988.dtsi
@@ -286,9 +286,17 @@
 		#size-cells = <2>;
 		ranges;
 
-		/* 192 KiB reserved for ARM Trusted Firmware (BL31) */
+		ramoops: ramoops@42ff0000{
+			compatible = "ramoops";
+			reg = <0x0 0x42ff0000 0x0 0x10000>;
+			record-size = <0x2000>;
+			console-size = <0x2000>;
+			pmsg-size = <0x2000>;
+		};
+
+		/* 256 KiB reserved for ARM Trusted Firmware (BL31) */
 		secmon_reserved: secmon@43000000 {
-			reg = <0 0x43000000 0 0x30000>;
+			reg = <0 0x43000000 0 0x40000>;
 			no-map;
 		};
 
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-emmc.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-emmc.dts
index e9566d6..428d3d2 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-emmc.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-emmc.dts
@@ -207,16 +207,16 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 72 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		phy1: ethernet-phy@8 {
 			reg = <8>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 71 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		switch@0 {
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-sd.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-sd.dts
index e043757..4805f15 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-sd.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-sd.dts
@@ -198,16 +198,16 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 72 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		phy1: ethernet-phy@8 {
 			reg = <8>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 71 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		switch@0 {
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-snfi-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-snfi-nand.dts
index 111e43f..d2ce655 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-snfi-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-snfi-nand.dts
@@ -233,16 +233,16 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 72 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		phy1: ethernet-phy@8 {
 			reg = <8>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 71 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		switch@0 {
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts
index 0352d83..d35be90 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nand.dts
@@ -373,16 +373,16 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 72 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		phy1: ethernet-phy@8 {
 			reg = <8>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 71 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		switch@0 {
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nor.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nor.dts
index 99677f6..093a55d 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nor.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-dsa-10g-spim-nor.dts
@@ -223,16 +223,16 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 72 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		phy1: ethernet-phy@8 {
 			reg = <8>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 71 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		switch@0 {
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand-4pcie.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand-4pcie.dts
index e674902..3e61896 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand-4pcie.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand-4pcie.dts
@@ -329,16 +329,16 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 72 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		phy1: ethernet-phy@8 {
 			reg = <8>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 71 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 	};
 };
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand.dts
index 6c50c0c..53d0b93 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988a-gsw-10g-spim-nand.dts
@@ -349,16 +349,16 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 72 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		phy1: ethernet-phy@8 {
 			reg = <8>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 71 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 	};
 };
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-emmc.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-emmc.dts
index 02f6e38..4cd6054 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-emmc.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-emmc.dts
@@ -199,8 +199,8 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 72 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		switch@0 {
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-sd.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-sd.dts
index 2c69653..e8743bf 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-sd.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-sd.dts
@@ -190,8 +190,8 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 72 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		switch@0 {
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-snfi-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-snfi-nand.dts
index ada514a..fc3f58d 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-snfi-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-snfi-nand.dts
@@ -225,8 +225,8 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 72 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		switch@0 {
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nand.dts
index f4729f9..22ec0a1 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nand.dts
@@ -365,8 +365,8 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 3 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		switch@0 {
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nor.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nor.dts
index 9ebf02c..26fd171 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nor.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-dsa-10g-spim-nor.dts
@@ -215,8 +215,8 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 72 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 
 		switch@0 {
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-spim-nand.dts b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-spim-nand.dts
index 65e747a..473ea27 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-spim-nand.dts
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7988c-gsw-10g-spim-nand.dts
@@ -341,8 +341,8 @@
 			reg = <0>;
 			compatible = "ethernet-phy-ieee802.3-c45";
 			reset-gpios = <&pio 72 1>;
-			reset-assert-us = <1000000>;
-			reset-deassert-us = <1000000>;
+			reset-assert-us = <100000>;
+			reset-deassert-us = <221000>;
 		};
 	};
 };
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/clk/mediatek/clk-mt7988.c b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/clk/mediatek/clk-mt7988.c
index f3bb72d..93585ce 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/clk/mediatek/clk-mt7988.c
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/files-5.4/drivers/clk/mediatek/clk-mt7988.c
@@ -772,7 +772,8 @@
 		    "infra_66m_mck", 17),
 	GATE_INFRA2(CK_INFRA_66M_FLASHIF_AXI, "infra_hf_66m_flashif_axi",
 		    "infra_66m_mck", 18),
-	GATE_INFRA2(CK_INFRA_RTC, "infra_f_frtc", "infra_lb_mux_frtc", 19),
+	GATE_CRITICAL(CK_INFRA_RTC, "infra_f_frtc", "infra_lb_mux_frtc",
+			&infra2_cg_regs, 19),
 	GATE_INFRA2(CK_INFRA_26M_ADC_BCK, "infra_f_26m_adc_bck",
 		    "infra_f26m_o1", 20),
 	GATE_INFRA2(CK_INFRA_RC_ADC, "infra_f_frc_adc", "infra_f_26m_adc_bck",
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/mt7988.cfg b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/mt7988.cfg
index 14a6468..7ff8795 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/mt7988.cfg
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/mt7988.cfg
@@ -389,6 +389,16 @@
 CONFIG_POWER_RESET_SYSCON=y
 CONFIG_POWER_SUPPLY=y
 CONFIG_PRINTK_TIME=y
+CONFIG_PSTORE=y
+# CONFIG_PSTORE_842_COMPRESS is not set
+CONFIG_PSTORE_CONSOLE=y
+# CONFIG_PSTORE_DEFLATE_COMPRESS is not set
+# CONFIG_PSTORE_LZ4HC_COMPRESS is not set
+# CONFIG_PSTORE_LZ4_COMPRESS is not set
+# CONFIG_PSTORE_LZO_COMPRESS is not set
+CONFIG_PSTORE_PMSG=y
+CONFIG_PSTORE_RAM=y
+# CONFIG_PSTORE_ZSTD_COMPRESS is not set
 CONFIG_PWM=y
 CONFIG_PWM_MEDIATEK=y
 # CONFIG_PWM_MTK_DISP is not set
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/patches-5.4/747-net-phy-aquantia-add-AQR113C.patch b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/patches-5.4/747-net-phy-aquantia-add-AQR113C.patch
index 8d01cab..d99d75f 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/patches-5.4/747-net-phy-aquantia-add-AQR113C.patch
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/patches-5.4/747-net-phy-aquantia-add-AQR113C.patch
@@ -10,20 +10,59 @@
  
  #define MDIO_PHYXS_VEND_IF_STATUS		0xe812
  #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_MASK	GENMASK(7, 3)
-@@ -352,6 +352,13 @@ static int aqr107_read_status(struct phy_device *phydev)
+@@ -268,17 +268,6 @@ static int aqr_read_status(struct phy_device *phydev)
+ 	return genphy_c45_read_status(phydev);
+ }
+ 
+-static int aqr107_read_downshift_event(struct phy_device *phydev)
+-{
+-	int val;
+-
+-	val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_TX_VEND_INT_STATUS1);
+-	if (val < 0)
+-		return val;
+-
+-	return !!(val & MDIO_AN_TX_VEND_INT_STATUS1_DOWNSHIFT);
+-}
+-
+ static int aqr107_read_rate(struct phy_device *phydev)
+ {
+ 	int val;
+@@ -353,13 +342,7 @@ static int aqr107_read_status(struct phy_device *phydev)
  		break;
  	}
  
+-	val = aqr107_read_downshift_event(phydev);
+-	if (val <= 0)
+-		return val;
+-
+-	phydev_warn(phydev, "Downshift occurred! Cabling may be defective.\n");
+-
+-	/* Read downshifted rate from vendor register */
++	/* Read possibly downshifted rate from vendor register */
+ 	return aqr107_read_rate(phydev);
+ }
+ 
+@@ -500,9 +483,6 @@ static int aqr107_config_init(struct phy_device *phydev)
+ 	if (!ret)
+ 		aqr107_chip_info(phydev);
+ 
+-	/* ensure that a latched downshift event is cleared */
+-	aqr107_read_downshift_event(phydev);
+-
+ 	return aqr107_set_downshift(phydev, MDIO_AN_VEND_PROV_DOWNSHIFT_DFLT);
+ }
+ 
+@@ -527,9 +507,6 @@ static int aqcs109_config_init(struct phy_device *phydev)
+ 	if (ret)
+ 		return ret;
+ 
+-	/* ensure that a latched downshift event is cleared */
+-	aqr107_read_downshift_event(phydev);
+-
+ 	return aqr107_set_downshift(phydev, MDIO_AN_VEND_PROV_DOWNSHIFT_DFLT);
+ }
+ 
-+	/* Handle the case when the link speed is unknown */
-+	if (phydev->speed == SPEED_UNKNOWN) {
-+		val = aqr107_read_rate(phydev);
-+		if (val < 0)
-+			return val;
-+	}
-+
- 	val = aqr107_read_downshift_event(phydev);
- 	if (val <= 0)
- 		return val;
 @@ -695,6 +696,24 @@ static struct phy_driver aqr_driver[] = {
  	.ack_interrupt	= aqr_ack_interrupt,
  	.read_status	= aqr_read_status,
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/patches-5.4/751-net-phy-aquantia-add-firmware-download.patch b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/patches-5.4/751-net-phy-aquantia-add-firmware-download.patch
index 6eb5bf4..2fe3132 100644
--- a/recipes-kernel/linux/linux-mediatek-5.4/mediatek/patches-5.4/751-net-phy-aquantia-add-firmware-download.patch
+++ b/recipes-kernel/linux/linux-mediatek-5.4/mediatek/patches-5.4/751-net-phy-aquantia-add-firmware-download.patch
@@ -1338,8 +1338,8 @@
 +	aqr_firmware_download(phydev);
 +#endif
 +
- 	/* ensure that a latched downshift event is cleared */
- 	aqr107_read_downshift_event(phydev);
+ 	return aqr107_set_downshift(phydev, MDIO_AN_VEND_PROV_DOWNSHIFT_DFLT);
+ }
  
 @@ -605,6 +609,15 @@ static int aqr107_resume(struct phy_device *phydev)
  				  MDIO_CTRL1_LPOWER);