arm64: dts: meson-g12-common: Make mmc host controller interrupts level-sensitive
authorHeiner Kallweit <hkallweit1@gmail.com>
Thu, 9 Feb 2023 20:11:10 +0000 (21:11 +0100)
committerNeil Armstrong <neil.armstrong@linaro.org>
Fri, 10 Feb 2023 08:02:09 +0000 (09:02 +0100)
The usage of edge-triggered interrupts lead to lost interrupts under load,
see [0]. This was confirmed to be fixed by using level-triggered
interrupts.
The report was about SDIO. However, as the host controller is the same
for SD and MMC, apply the change to all mmc controller instances.

[0] https://www.spinics.net/lists/linux-mmc/msg73991.html

Fixes: 4759fd87b928 ("arm64: dts: meson: g12a: add mmc nodes")
Tested-by: FUKAUMI Naoki <naoki@radxa.com>
Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Tested-by: Jerome Brunet <jbrunet@baylibre.com>
Cc: stable@vger.kernel.org
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Acked-by: Neil Armstrong <neil.armstrong@linaro.org>
Link: https://lore.kernel.org/r/27d89baa-b8fa-baca-541b-ef17a97cde3c@gmail.com
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi

index 9dbd508..7f55d97 100644 (file)
                sd_emmc_a: sd@ffe03000 {
                        compatible = "amlogic,meson-axg-mmc";
                        reg = <0x0 0xffe03000 0x0 0x800>;
-                       interrupts = <GIC_SPI 189 IRQ_TYPE_EDGE_RISING>;
+                       interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                        clocks = <&clkc CLKID_SD_EMMC_A>,
                                 <&clkc CLKID_SD_EMMC_A_CLK0>,
                sd_emmc_b: sd@ffe05000 {
                        compatible = "amlogic,meson-axg-mmc";
                        reg = <0x0 0xffe05000 0x0 0x800>;
-                       interrupts = <GIC_SPI 190 IRQ_TYPE_EDGE_RISING>;
+                       interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                        clocks = <&clkc CLKID_SD_EMMC_B>,
                                 <&clkc CLKID_SD_EMMC_B_CLK0>,
                sd_emmc_c: mmc@ffe07000 {
                        compatible = "amlogic,meson-axg-mmc";
                        reg = <0x0 0xffe07000 0x0 0x800>;
-                       interrupts = <GIC_SPI 191 IRQ_TYPE_EDGE_RISING>;
+                       interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                        clocks = <&clkc CLKID_SD_EMMC_C>,
                                 <&clkc CLKID_SD_EMMC_C_CLK0>,