[U-Boot] [PATCH] mmc:sdhci:fix: Change default interrupts enabled at SDHCI initialization

Tom Rini
2013-02-21T17:45:23Z

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 02/21/2013 12:21 PM, Lukasz Majewski wrote:
> Dear All,
>
> I'd like to kindly ask for any feedback on this patch.
>
> It is now more than month on the u-boot mailing list...

OK, sorry, the generic name of the driver threw me for a minute. I'm
fine with this change going up u-boot-samsung -> u-boot-arm -> master
since it's a samsung-only driver right now. Does this work for you?

>
>
>> Dear All,
>>
>> Any feedback about this patch?
>>
>> It has been on the list for quite long time.....
>>
>>
>>> 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 <l.majewski@samsung.com>
>>>> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Cc:
>>>> Lei Wen <leiwen@marvell.com> Cc: Andy Fleming
>>>> <afleming@freescale.com> --- 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; }
>>>
>>>
>>>
>>
>>
>>
>

- --
Tom
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBAgAGBQJRJl0zAAoJENk4IS6UOR1WU68P/RTyQMDciU5rlgA0NfcSt2/y
T55Q+R43eaRABLqEdLu5rQXJgKcLIQZEr4Czfu3LqWDfUylJiXkUc+ngSQ/uJR9p
v1IN+rrIOs3ZQcFy9d3oDROtkz16Mc0T+32WI8g/NfL7X9IKYqSEeBUGmc0O54Ro
kdmH9fqzCX3wbaY//+vG1uMA3s61Ekx+3Gbf5BcyoVMHrf1fNz4L1kZ7ZB/MBzdp
HOQIoButM7/BGteF5o5LPHCNw7LtnAz5basRwaGQmrGVzeA2GCKFOrYEx3oa/ghC
mK/PNTW6RCzRFBckbA2No9C1Tj1i7EMy8K/B8sub9FmJWF9XfDf4YhbacXOse5RA
+mSwZiWuJP7K/0YaDUh7itQE2Wec2iA2LNlgb0Ujwnm4DsxnP805Cbz/JJuT9mCu
8LYw7crg4DwU9X0g0MEojKXupQ2mHMBHHrYRuUdIaYxHkkkf7j4mSIzPR75FzAjF
8l54TL4bEKHyUd7HmTaEkafyhziC8Kit4SEQqjTJW9S720nVOaM/pMmrji3mxUXH
wHUpTTVS0TIAzhdAtxxpPxbRsMnnEgobOFGDbF8wzjGMQWWudZGLXqCm0kv+5B2K
3o6IlxPQ/TlokPe+A63NHTbJTJ0z/ylLX0UyNifzPzsoTiskO4qqSdHdrGTcA3f+
Tqq0rAM0CXj2oMMkkOFb
=nGWo
-----END PGP SIGNATURE-----