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
Unified · Split
| @@ -1886,7 +1886,7 @@ · 1885 unmodified lines | ||
| 1886 | 1886 | sd_emmc_b: sd@5000 { |
| 1887 | 1887 | compatible = "amlogic,meson-axg-mmc"; |
| 1888 | 1888 | reg = <0x0 0x5000 0x0 0x800>; |
| 1889 | − interrupts = <GIC_SPI 217 IRQ_TYPE_EDGE_RISING>; | |
| 1889 | + interrupts = <GIC_SPI 217 IRQ_TYPE_LEVEL_HIGH>; | |
| 1890 | 1890 | status = "disabled"; |
| 1891 | 1891 | clocks = <&clkc CLKID_SD_EMMC_B>, |
| 1892 | 1892 | <&clkc CLKID_SD_EMMC_B_CLK0>, |
| @@ -1898,7 +1898,7 @@ · 5 unmodified lines | ||
| 1898 | 1898 | sd_emmc_c: mmc@7000 { |
| 1899 | 1899 | compatible = "amlogic,meson-axg-mmc"; |
| 1900 | 1900 | reg = <0x0 0x7000 0x0 0x800>; |
| 1901 | − interrupts = <GIC_SPI 218 IRQ_TYPE_EDGE_RISING>; | |
| 1901 | + interrupts = <GIC_SPI 218 IRQ_TYPE_LEVEL_HIGH>; | |
| 1902 | 1902 | status = "disabled"; |
| 1903 | 1903 | clocks = <&clkc CLKID_SD_EMMC_C>, |
| 1904 | 1904 | <&clkc CLKID_SD_EMMC_C_CLK0>, |