On Mon, Nov 06, 2023 at 10:50:48AM +0100, Matthias Schiffer wrote:
> This reverts commit d0c69c722ff16ce2481a5e0932c6d5b172109f21.
>
> The reverted commit completely breaks MMC on the AM33xx/AM437x for
> multiple reasons:
>
> - The changed compatible strings ti,am335-sdhci and ti,am437-sdhci
> aren't supported on Linux 5.4 at all, so no driver is found
> - Even when additionally backporting the support for these compatible
> strings in the sdhci-omap driver, I could not the the MMC interfaces
> to work on our TQMa335x SoM - the interface would time out during card
> initialization for both an eMMC and an SD card.
>
> I did not investigate the cause of the timeouts further, and instead
> just reverted the commit - switching to a different MMC driver in a stable
> kernel seems like a rather risky change unless it's thoroughly tested,
> which has obviously not happened in this case.
>
> The reverted commit is also given as a Stable-dep-of commit 2eb502f496f7
> ("ARM: dts: am33xx: Fix MMCHS0 dma properties"), however the conflict
> resulting when only the one commit is reverted is trivial to resolve,
> which leads to working MMC controllers again.
>
> Signed-off-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
> ---
>
> I have not checked if other stable kernels exhibit the same breakage; it
> might be a good idea to revert the change for all stable branches unless
> it is proven that the sdhci-omap driver actually works.
This was only backported to 5.4.y, thanks for catching this, now queued
up.
greg k-h
@@ -381,7 +381,7 @@
&mmc2 {
status = "okay";
vmmc-supply = <&wl12xx_vmmc>;
- non-removable;
+ ti,non-removable;
bus-width = <4>;
cap-power-off-card;
pinctrl-names = "default";
@@ -22,7 +22,6 @@
pinctrl-0 = <&emmc_pins>;
bus-width = <8>;
status = "okay";
- non-removable;
};
&am33xx_pinmux {
@@ -75,6 +75,7 @@
bus-width = <4>;
non-removable;
cap-power-off-card;
+ ti,needs-special-hs-handling;
keep-power-in-suspend;
pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wl18xx_pins>;
@@ -389,6 +389,7 @@
bus-width = <4>;
non-removable;
cap-power-off-card;
+ ti,needs-special-hs-handling;
keep-power-in-suspend;
pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wl18xx_pins>;
@@ -75,6 +75,7 @@
bus-width = <4>;
non-removable;
cap-power-off-card;
+ ti,needs-special-hs-handling;
keep-power-in-suspend;
pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wl18xx_pins>;
@@ -782,7 +782,8 @@
bus-width = <4>;
pinctrl-names = "default";
pinctrl-0 = <&mmc3_pins &wlan_pins>;
- non-removable;
+ ti,non-removable;
+ ti,needs-special-hs-handling;
cap-power-off-card;
keep-power-in-suspend;
@@ -700,7 +700,7 @@
&mmc2 {
status = "okay";
vmmc-supply = <&wl12xx_vmmc>;
- non-removable;
+ ti,non-removable;
bus-width = <4>;
cap-power-off-card;
keep-power-in-suspend;
@@ -361,7 +361,7 @@
pinctrl-0 = <&emmc_pins>;
vmmc-supply = <&vmmcsd_fixed>;
bus-width = <8>;
- non-removable;
+ ti,non-removable;
status = "okay";
};
@@ -176,7 +176,7 @@
vmmc-supply = <&vmmcsd_fixed>;
bus-width = <8>;
pinctrl-0 = <&mmc1_pins_default>;
- non-removable;
+ ti,non-removable;
status = "okay";
};
@@ -473,7 +473,7 @@
vmmc-supply = <&vmmcsd_fixed>;
bus-width = <8>;
pinctrl-0 = <&mmc2_pins_default>;
- non-removable;
+ ti,non-removable;
status = "okay";
};
@@ -341,7 +341,7 @@
pinctrl-0 = <&emmc_pins>;
vmmc-supply = <&ldo3_reg>;
bus-width = <8>;
- non-removable;
+ ti,non-removable;
};
&mmc3 {
@@ -351,7 +351,7 @@
pinctrl-0 = <&wireless_pins>;
vmmmc-supply = <&v3v3c_reg>;
bus-width = <4>;
- non-removable;
+ ti,non-removable;
dmas = <&edma_xbar 12 0 1
&edma_xbar 13 0 2>;
dma-names = "tx", "rx";
@@ -69,7 +69,7 @@
pinctrl-0 = <&emmc_pins>;
vmmc-supply = <&vmmc_reg>;
bus-width = <8>;
- non-removable;
+ ti,non-removable;
status = "disabled";
};
@@ -1333,8 +1333,10 @@
ranges = <0x0 0x60000 0x1000>;
mmc1: mmc@0 {
- compatible = "ti,am335-sdhci";
+ compatible = "ti,omap4-hsmmc";
+ ti,dual-volt;
ti,needs-special-reset;
+ ti,needs-special-hs-handling;
dmas = <&edma 24 0>, <&edma 25 0>;
dma-names = "tx", "rx";
interrupts = <64>;
@@ -1824,7 +1826,7 @@
ranges = <0x0 0xd8000 0x1000>;
mmc2: mmc@0 {
- compatible = "ti,am335-sdhci";
+ compatible = "ti,omap4-hsmmc";
ti,needs-special-reset;
dmas = <&edma 2 0
&edma 3 0>;
@@ -259,11 +259,10 @@
ranges = <0x0 0x47810000 0x1000>;
mmc3: mmc@0 {
- compatible = "ti,am335-sdhci";
+ compatible = "ti,omap4-hsmmc";
ti,needs-special-reset;
interrupts = <29>;
reg = <0x0 0x1000>;
- status = "disabled";
};
};
@@ -250,11 +250,10 @@
ranges = <0x0 0x47810000 0x1000>;
mmc3: mmc@0 {
- compatible = "ti,am437-sdhci";
+ compatible = "ti,omap4-hsmmc";
ti,needs-special-reset;
interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x0 0x1000>;
- status = "disabled";
};
};
@@ -291,7 +291,7 @@
pinctrl-0 = <&emmc_pins>;
vmmc-supply = <&vmmc_3v3>;
bus-width = <8>;
- non-removable;
+ ti,non-removable;
};
&spi0 {
@@ -872,7 +872,7 @@
pinctrl-names = "default", "sleep";
pinctrl-0 = <&emmc_pins_default>;
pinctrl-1 = <&emmc_pins_sleep>;
- non-removable;
+ ti,non-removable;
};
&mmc3 {
@@ -889,7 +889,7 @@
pinctrl-1 = <&mmc3_pins_sleep>;
cap-power-off-card;
keep-power-in-suspend;
- non-removable;
+ ti,non-removable;
#address-cells = <1>;
#size-cells = <0>;
@@ -1104,8 +1104,9 @@
ranges = <0x0 0x60000 0x1000>;
mmc1: mmc@0 {
- compatible = "ti,am437-sdhci";
+ compatible = "ti,omap4-hsmmc";
reg = <0x0 0x1000>;
+ ti,dual-volt;
ti,needs-special-reset;
dmas = <&edma 24 0>,
<&edma 25 0>;
@@ -1640,7 +1641,7 @@
ranges = <0x0 0xd8000 0x1000>;
mmc2: mmc@0 {
- compatible = "ti,am437-sdhci";
+ compatible = "ti,omap4-hsmmc";
reg = <0x0 0x1000>;
ti,needs-special-reset;
dmas = <&edma 2 0>,
@@ -694,7 +694,7 @@
pinctrl-1 = <&mmc3_pins_sleep>;
cap-power-off-card;
keep-power-in-suspend;
- non-removable;
+ ti,non-removable;
#address-cells = <1>;
#size-cells = <0>;