When access the card, the following error is reported: mmc0: Got data interrupt 0x00000020 even though no data operation was in progress. mmc0: Got data interrupt 0x00000020 even though no data operation was in progress.
so we skip the calculation of timeout and use the max value. --- arch/powerpc/boot/dts/p2020ds.dts | 1 + drivers/mmc/host/sdhci-of.c | 3 +++ 2 files changed, 4 insertions(+), 0 deletions(-) diff --git a/arch/powerpc/boot/dts/p2020ds.dts b/arch/powerpc/boot/dts/p2020ds.dts index 8b1056d..29989fb 100644 --- a/arch/powerpc/boot/dts/p2020ds.dts +++ b/arch/powerpc/boot/dts/p2020ds.dts @@ -461,6 +461,7 @@ interrupt-parent = <&mpic>; fsl,sdhci-dma-broken; fsl,sdhci-ahb2mag-irq-bypass; + fsl,sdhci-adjust-timeout; clock-frequency = <0>; }; diff --git a/drivers/mmc/host/sdhci-of.c b/drivers/mmc/host/sdhci-of.c index 0bc75b3..0ff95d8 100644 --- a/drivers/mmc/host/sdhci-of.c +++ b/drivers/mmc/host/sdhci-of.c @@ -276,6 +276,9 @@ static int __devinit sdhci_of_probe(struct of_device *ofdev, if (of_get_property(np, "fsl,sdhci-ahb2mag-irq-bypass", NULL)) host->quirks |= SDHCI_QUIRK_SET_AHB2MAG_IRQ_BYPASS; + if (of_get_property(np, "fsl,sdhci-adjust-timeout", NULL)) + host->quirks |= SDHCI_QUIRK_BROKEN_TIMEOUT_VAL; + clk = of_get_property(np, "clock-frequency", &size); if (clk && size == sizeof(*clk) && *clk) of_host->clock = *clk; -- 1.6.4 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev