Dear All, Any feedback about this patch?
> This patch changes sdhci_init()'s behavior to NOT enable all interrupt > sources by default. Moreover interrupt signaling has been disabled. > > This patch do not enable interrupts which aren't served in u-boot > (they are defined at sdhci.h but NOT used elsewhere): > - SDHCI_INT_CARD_INSERT, SDHCI_INT_CARD_REMOVE, SDHCI_BUS_POWER, > SDHCI_INT_CARD_REMOVE, SDHCI_INT_CARD_INT > > Special care shall be put on SDHCI_INT_CARD_INT, which indicates > interrupt generated by SD card. > According to "SD Host Controller Simplified Spec. ver 3.00" when bit 8 > (Card Interrupt Status Enable) at "Normal Interrupt Status Enable > Register" (offset 0x34) is set, the card interrupt detection is > started. Then eMMC card may cause the SD controller to set this bit > and then this interrupt is passed to booted OS and might cause kernel > crash. > > > To sum up: > - Only enable interrupts, which are served at u-boot > - This cleanup as a side effect fixes SDHCI's CARD INTERRUPT problem > at Linux kernel (versions 3.6+, sdhci controller) > - Keep masked bits at "Normal Interrupt Signal Enable > Register" (0x38h) > > Signed-off-by: Lukasz Majewski <[email protected]> > Signed-off-by: Kyungmin Park <[email protected]> > Cc: Lei Wen <[email protected]> > Cc: Andy Fleming <[email protected]> > --- > drivers/mmc/sdhci.c | 8 +++++--- > 1 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/mmc/sdhci.c b/drivers/mmc/sdhci.c > index 0fd1337..76c14fb 100644 > --- a/drivers/mmc/sdhci.c > +++ b/drivers/mmc/sdhci.c > @@ -412,9 +412,11 @@ int sdhci_init(struct mmc *mmc) > status = sdhci_readl(host, > SDHCI_PRESENT_STATE); } > > - /* Eable all state */ > - sdhci_writel(host, SDHCI_INT_ALL_MASK, SDHCI_INT_ENABLE); > - sdhci_writel(host, SDHCI_INT_ALL_MASK, SDHCI_SIGNAL_ENABLE); > + /* Enable only interrupts served by the SD controller */ > + sdhci_writel(host, SDHCI_INT_DATA_MASK | SDHCI_INT_CMD_MASK > + , SDHCI_INT_ENABLE); > + /* Mask all sdhci interrupt sources */ > + sdhci_writel(host, 0x0, SDHCI_SIGNAL_ENABLE); > > return 0; > } -- Best regards, Lukasz Majewski Samsung R&D Poland (SRPOL) | Linux Platform Group _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

