[] [Enable eMMC HS400 mode]

[Description]
Add eMMC HS400 mode for improving IO performance.

[Release-log]
N/A

Change-Id: I9c4d9ed7cb0a5bb4deefdaa6f9d7d290115378f7
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/4989108
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a-emmc-rfb.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a-emmc-rfb.dts
index 7c0f601..9887a87 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a-emmc-rfb.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a-emmc-rfb.dts
@@ -7,7 +7,7 @@
 	chosen {
 		bootargs = "console=ttyS0,115200n1 loglevel=8  \
 				earlycon=uart8250,mmio32,0x11002000 \
-				root=/dev/mmcblk0p7 rootfstype=squashfs,f2fs";
+				root=/dev/mmcblk0p7 rootwait rootfstype=squashfs,f2fs";
 	};
 };
 
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a-rfb.dtsi b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a-rfb.dtsi
index c244903..dd15a85 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a-rfb.dtsi
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a-rfb.dtsi
@@ -336,12 +336,16 @@
 	pinctrl-0 = <&mmc0_pins_default>;
 	pinctrl-1 = <&mmc0_pins_uhs>;
 	bus-width = <8>;
-	max-frequency = <50000000>;
+	max-frequency = <200000000>;
 	cap-mmc-highspeed;
 	mmc-hs200-1_8v;
+	mmc-hs400-1_8v;
+	hs400-ds-delay = <0x14014>;
 	vmmc-supply = <&reg_3p3v>;
 	vqmmc-supply = <&reg_1p8v>;
 	non-removable;
+	no-sd;
+	no-sdio;
 	status = "okay";
 };
 
@@ -532,10 +536,9 @@
 		conf-cmd-dat {
 			pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
 			       "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
-			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD",
-			       "EMMC_DSL";
+			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
 			input-enable;
-			drive-strength = <MTK_DRIVE_6mA>;
+			drive-strength = <MTK_DRIVE_4mA>;
 			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
 		};
 		conf-clk {
@@ -543,9 +546,13 @@
 			drive-strength = <MTK_DRIVE_6mA>;
 			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
 		};
+		conf-ds {
+			pins = "EMMC_DSL";
+			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
+		};
 		conf-rst {
 			pins = "EMMC_RSTB";
-			drive-strength = <MTK_DRIVE_6mA>;
+			drive-strength = <MTK_DRIVE_4mA>;
 			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
 		};
 	};
@@ -558,10 +565,9 @@
 		conf-cmd-dat {
 			pins = "EMMC_DATA_0", "EMMC_DATA_1", "EMMC_DATA_2",
 			       "EMMC_DATA_3", "EMMC_DATA_4", "EMMC_DATA_5",
-			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD",
-			       "EMMC_DSL";
+			       "EMMC_DATA_6", "EMMC_DATA_7", "EMMC_CMD";
 			input-enable;
-			drive-strength = <MTK_DRIVE_6mA>;
+			drive-strength = <MTK_DRIVE_4mA>;
 			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
 		};
 		conf-clk {
@@ -569,9 +575,13 @@
 			drive-strength = <MTK_DRIVE_6mA>;
 			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
 		};
+		conf-ds {
+			pins = "EMMC_DSL";
+			mediatek,pull-down-adv = <2>;	/* pull-down 50K */
+		};
 		conf-rst {
 			pins = "EMMC_RSTB";
-			drive-strength = <MTK_DRIVE_6mA>;
+			drive-strength = <MTK_DRIVE_4mA>;
 			mediatek,pull-up-adv = <1>;	/* pull-up 10K */
 		};
 	};
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a.dtsi b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a.dtsi
index aec9c42..b83bbdd 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a.dtsi
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7986a.dtsi
@@ -534,8 +534,8 @@
 		clock-names = "source", "hclk", "source_cg";
 		assigned-clocks = <&topckgen CK_TOP_EMMC_416M_SEL>,
 				  <&topckgen CK_TOP_EMMC_250M_SEL>;
-		assigned-clock-parents = <&topckgen CK_TOP_CB_CKSQ_40M>,
-					 <&topckgen CK_TOP_CB_CKSQ_40M>;
+		assigned-clock-parents = <&topckgen CK_TOP_CB_M_416M>,
+					 <&topckgen CK_TOP_NET1_D5_D2>;
 		status = "disabled";
 	};