]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.6-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 31 Mar 2026 06:48:51 +0000 (08:48 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 31 Mar 2026 06:48:51 +0000 (08:48 +0200)
added patches:
arm64-dts-imx8mn-tqma8mqnl-fix-ldo5-power-off.patch

queue-6.6/arm64-dts-imx8mn-tqma8mqnl-fix-ldo5-power-off.patch [new file with mode: 0644]
queue-6.6/series

diff --git a/queue-6.6/arm64-dts-imx8mn-tqma8mqnl-fix-ldo5-power-off.patch b/queue-6.6/arm64-dts-imx8mn-tqma8mqnl-fix-ldo5-power-off.patch
new file mode 100644 (file)
index 0000000..94d3642
--- /dev/null
@@ -0,0 +1,113 @@
+From 8adc841d43ebceabec996c9dcff6e82d3e585268 Mon Sep 17 00:00:00 2001
+From: Markus Niebel <Markus.Niebel@ew.tq-group.com>
+Date: Tue, 16 Dec 2025 14:39:25 +0100
+Subject: arm64: dts: imx8mn-tqma8mqnl: fix LDO5 power off
+
+From: Markus Niebel <Markus.Niebel@ew.tq-group.com>
+
+commit 8adc841d43ebceabec996c9dcff6e82d3e585268 upstream.
+
+Fix SD card removal caused by automatic LDO5 power off after boot
+
+To prevent this, add vqmmc regulator for USDHC, using a GPIO-controlled
+regulator that is supplied by LDO5. Since this is implemented on SoM but
+used on baseboards with SD-card interface, implement the functionality
+on SoM part and optionally enable it on baseboards if needed.
+
+Signed-off-by: Markus Niebel <Markus.Niebel@ew.tq-group.com>
+Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com>
+Signed-off-by: Shawn Guo <shawnguo@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl-mba8mx.dts |   13 ++++----
+ arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl.dtsi       |   22 ++++++++++++++
+ 2 files changed, 29 insertions(+), 6 deletions(-)
+
+--- a/arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl-mba8mx.dts
++++ b/arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl-mba8mx.dts
+@@ -63,6 +63,10 @@
+       };
+ };
++&reg_usdhc2_vqmmc {
++      status = "okay";
++};
++
+ &sai3 {
+       assigned-clocks = <&clk IMX8MN_CLK_SAI3>;
+       assigned-clock-parents = <&clk IMX8MN_AUDIO_PLL1_OUT>;
+@@ -207,8 +211,7 @@
+                          <MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0         0x1d4>,
+                          <MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1         0x1d4>,
+                          <MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2         0x1d4>,
+-                         <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3         0x1d4>,
+-                         <MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT      0x84>;
++                         <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3         0x1d4>;
+       };
+       pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
+@@ -217,8 +220,7 @@
+                          <MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0         0x1d4>,
+                          <MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1         0x1d4>,
+                          <MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2         0x1d4>,
+-                         <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3         0x1d4>,
+-                         <MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT      0x84>;
++                         <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3         0x1d4>;
+       };
+       pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
+@@ -227,8 +229,7 @@
+                          <MX8MN_IOMUXC_SD2_DATA0_USDHC2_DATA0         0x1d4>,
+                          <MX8MN_IOMUXC_SD2_DATA1_USDHC2_DATA1         0x1d4>,
+                          <MX8MN_IOMUXC_SD2_DATA2_USDHC2_DATA2         0x1d4>,
+-                         <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3         0x1d4>,
+-                         <MX8MN_IOMUXC_GPIO1_IO04_USDHC2_VSELECT      0x84>;
++                         <MX8MN_IOMUXC_SD2_DATA3_USDHC2_DATA3         0x1d4>;
+       };
+       pinctrl_usdhc2_gpio: usdhc2-gpiogrp {
+--- a/arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl.dtsi
++++ b/arch/arm64/boot/dts/freescale/imx8mn-tqma8mqnl.dtsi
+@@ -30,6 +30,20 @@
+               regulator-max-microvolt = <3300000>;
+       };
++      reg_usdhc2_vqmmc: regulator-usdhc2-vqmmc {
++              compatible = "regulator-gpio";
++              pinctrl-names = "default";
++              pinctrl-0 = <&pinctrl_reg_usdhc2_vqmmc>;
++              regulator-name = "V_SD2";
++              regulator-min-microvolt = <1800000>;
++              regulator-max-microvolt = <3300000>;
++              gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
++              states = <1800000 0x1>,
++                       <3300000 0x0>;
++              vin-supply = <&ldo5_reg>;
++              status = "disabled";
++      };
++
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+@@ -219,6 +233,10 @@
+       };
+ };
++&usdhc2 {
++      vqmmc-supply = <&reg_usdhc2_vqmmc>;
++};
++
+ &usdhc3 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc3>;
+@@ -273,6 +291,10 @@
+               fsl,pins = <MX8MN_IOMUXC_SD2_RESET_B_GPIO2_IO19         0x84>;
+       };
++      pinctrl_reg_usdhc2_vqmmc: regusdhc2vqmmcgrp {
++              fsl,pins = <MX8MN_IOMUXC_GPIO1_IO04_GPIO1_IO4           0xc0>;
++      };
++
+       pinctrl_usdhc3: usdhc3grp {
+               fsl,pins = <MX8MN_IOMUXC_NAND_WE_B_USDHC3_CLK           0x1d4>,
+                          <MX8MN_IOMUXC_NAND_WP_B_USDHC3_CMD           0x1d2>,
index 5315131e87c59f17d9f8f4f57dc5cda2d0cde212..ed6ee1da175dd11db569f943f29a5ddfe377405a 100644 (file)
@@ -139,3 +139,4 @@ ext4-fix-use-after-free-in-update_super_work-when-racing-with-umount.patch
 ext4-fix-the-might_sleep-warnings-in-kvfree.patch
 ext4-fix-iloc.bh-leak-in-ext4_fc_replay_inode-error-paths.patch
 ext4-always-drain-queued-discard-work-in-ext4_mb_release.patch
+arm64-dts-imx8mn-tqma8mqnl-fix-ldo5-power-off.patch