diff mbox

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

Message ID 1357916934-11340-1-git-send-email-l.majewski@samsung.com
State Accepted
Delegated to: Minkyu Kang
Headers show

Commit Message

Łukasz Majewski Jan. 11, 2013, 3:08 p.m. UTC
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(-)

Comments

Łukasz Majewski Jan. 29, 2013, 2:47 p.m. UTC | #1
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;
>  }
Jaehoon Chung Jan. 30, 2013, 4:52 a.m. UTC | #2
It looks good to me.

Acked-by: Jaehoon Chung <jh80.chung@samsung.com>

On 01/29/2013 11:47 PM, Lukasz Majewski wrote:
> 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;
>>  }
> 
> 
>
Łukasz Majewski Feb. 11, 2013, 8:50 a.m. UTC | #3
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 Rini Feb. 11, 2013, 1:58 p.m. UTC | #4
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 02/11/2013 03:50 AM, Lukasz Majewski wrote:
> Dear All,
> 
> Any feedback about this patch?
> 
> It has been on the list for quite long time.....

This is one of the patches that I really want Andy to chime in on.

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

iQIcBAEBAgAGBQJRGPj/AAoJENk4IS6UOR1WTmsP/3Qa4YAmLosshxWbjZNxqc3F
a9MfL8XLzPF9qs1qp1p4VmeviVEHTmEXLgZP61+gdvxhayRKAPV5xuEd4LstWO5d
rKHVvN1pwm+rQPNWfuIkptySXsGfe+JBZUoiQ934psRxDy+2Ji6DExG+Vl3ThfCD
bmWd5kfktHCMNwgYFCuU7v8RbR/dbUIiSGtIw0t6LKI8b+csE9QCF8LVjhSDFKb5
dpFvxKjjDu1NWXMz0mrGvccLb7q8WNrZOGjhV3RSaTWB7UCUI2aJ9i+Fz3e7w4lZ
OA+cI/IwgqJA8R3+iikITw3qseLVEz35WqyYhdrdW9HZV1h3Eqn/UO8Z+/9YsCh0
dhlDtDd7lFBvgB35WzFtLE13RpiHbowWvux06qfohXfzC2M42O+EvYeqvKnkKKtD
bzZWLhUhe+e7JA5JJudyOtz/4Lk3j9Xt1hjZamFyiIlqtoOWHQihyhp0w7BfasUt
3HZrbud+KIM/Odv045Mvhi//V8Fsu/RziNGw9OAbO4nsNkCXh/qU9zQ1qUjbFzQx
DC/RpSMxEpFc7pAfiTpSwUTSpNNkFDbBKaIA7jOXdC8xpW2UmvSjARlpGWKOKj1z
3OMoR/CYpFaG0gvlkl16RsebmZf7mEKECLdOO4SUrw5W8PwFeRwDhoZx1Qqvg5sh
ZgFdVkDk2nu85cUcsmJq
=xiNx
-----END PGP SIGNATURE-----
Łukasz Majewski Feb. 21, 2013, 5:21 p.m. UTC | #5
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...


> 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 Rini Feb. 21, 2013, 5:45 p.m. UTC | #6
-----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-----
Jaehoon Chung Feb. 21, 2013, 11:33 p.m. UTC | #7
Hi Tom,

On 02/22/2013 02:45 AM, Tom Rini wrote:
> -----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?
I think that this driver didn't use samsung-only.
going up u-boot-samsung? I'm not sure that.

Best Regards,
Jaehoon Chung
> 
>>
>>
>>> 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-----
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
Tom Rini Feb. 21, 2013, 11:43 p.m. UTC | #8
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 02/21/2013 06:33 PM, Jaehoon Chung wrote:
> Hi Tom,
> 
> On 02/22/2013 02:45 AM, Tom Rini wrote: 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?
>> I think that this driver didn't use samsung-only. going up
>> u-boot-samsung? I'm not sure that.

Unless the context got very wrong, it touches drivers/mmc/sdhci.c
which is controlled by CONFIG_SDHCI which is only turned on in what
look like samsung platforms to me.


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

iQIcBAEBAgAGBQJRJrESAAoJENk4IS6UOR1WKeYP/2FBhDgWjyf5Sh8m0Q1bdhRm
EvNMWLuexHUbxOu0AMsKyurPAGHnkfsWtNBnQXe804XXY29chFTsLlJUh4EGUBHm
KiSJPU9LAlDt/aMmv6ncFcgJ9I7jyu8bETBLbJszDSleO0DqpUBu+R7isVv0N7n3
Uozo89zHpCvGrN2VLlQetMrTTJKquThn4CT9SIm02Z2OM5l3vBLUg+QMk1MCjDUd
znIsFtUG5F+8T0uqzFN698RYACagPl5Y10HMylWHZgpgV2wGxQWrXspx78wHRSvy
cwDPd2SVQbO3o3s9ixlppxeO2kpva8NouzsCJn4nH5ivrHumFCm8SI2ka4YE6du5
2b6Hol1Ie9jxq8B6cCNdEsHeHru3r+r19GzTNE0VfbrArpM8jO7FHcLruyzRjlaC
QyzDgdLXzV21113U+UlyAk5yWZ4he4xVHV4oFoN+QhIbQdNZP3gWkzLUQLLr9ry6
iIgeLx8GDONVxv7hGfNvAaxhQMgvANUOEtPP0CV+K0b60IDXyrFyP1xt5NRN77iR
v1rfcqitudFUyF6zqbDDLC2a5EW45UVyQR0WdZK999TWHS/U+5pTcDHhls1F16VD
wGZ+k+RmJQVWVdLImOsyWewPeZtzt02qlNom9LF8sKq8T4Uyf8uLhKksOyfxMCR7
AvZ53JHQoAAvhgPVn4KF
=7Oz4
-----END PGP SIGNATURE-----
Łukasz Majewski Feb. 22, 2013, 7:11 a.m. UTC | #9
Hi Tom,

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> On 02/21/2013 06:33 PM, Jaehoon Chung wrote:
> > Hi Tom,
> > 
> > On 02/22/2013 02:45 AM, Tom Rini wrote: 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?
> >> I think that this driver didn't use samsung-only. going up
> >> u-boot-samsung? I'm not sure that.
> 
> Unless the context got very wrong, it touches drivers/mmc/sdhci.c
> which is controlled by CONFIG_SDHCI which is only turned on in what
> look like samsung platforms to me.
> 

There is a /asm/arch-pantheon/config.h file which sets the CONFIG_SDHCI
flag. It was added by Lei Wen (who is CC'ed to this thread) and looks
like ARM926EJS (Marwell Semiconductor) processor based system.

Other systems are indeed samsung based processors. 

I don't mind if this patch would go via u-boot-samsung tree.

Moreover, since this change "touches" Lei system, I think that he should
have expressed his opinion. Sadly this didn't happened....

> 
> - -- 
> Tom
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.11 (GNU/Linux)
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
> 
> iQIcBAEBAgAGBQJRJrESAAoJENk4IS6UOR1WKeYP/2FBhDgWjyf5Sh8m0Q1bdhRm
> EvNMWLuexHUbxOu0AMsKyurPAGHnkfsWtNBnQXe804XXY29chFTsLlJUh4EGUBHm
> KiSJPU9LAlDt/aMmv6ncFcgJ9I7jyu8bETBLbJszDSleO0DqpUBu+R7isVv0N7n3
> Uozo89zHpCvGrN2VLlQetMrTTJKquThn4CT9SIm02Z2OM5l3vBLUg+QMk1MCjDUd
> znIsFtUG5F+8T0uqzFN698RYACagPl5Y10HMylWHZgpgV2wGxQWrXspx78wHRSvy
> cwDPd2SVQbO3o3s9ixlppxeO2kpva8NouzsCJn4nH5ivrHumFCm8SI2ka4YE6du5
> 2b6Hol1Ie9jxq8B6cCNdEsHeHru3r+r19GzTNE0VfbrArpM8jO7FHcLruyzRjlaC
> QyzDgdLXzV21113U+UlyAk5yWZ4he4xVHV4oFoN+QhIbQdNZP3gWkzLUQLLr9ry6
> iIgeLx8GDONVxv7hGfNvAaxhQMgvANUOEtPP0CV+K0b60IDXyrFyP1xt5NRN77iR
> v1rfcqitudFUyF6zqbDDLC2a5EW45UVyQR0WdZK999TWHS/U+5pTcDHhls1F16VD
> wGZ+k+RmJQVWVdLImOsyWewPeZtzt02qlNom9LF8sKq8T4Uyf8uLhKksOyfxMCR7
> AvZ53JHQoAAvhgPVn4KF
> =7Oz4
> -----END PGP SIGNATURE-----
Jaehoon Chung Feb. 22, 2013, 7:41 a.m. UTC | #10
Hi All,

On 02/22/2013 04:11 PM, Lukasz Majewski wrote:
> Hi Tom,
> 
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> On 02/21/2013 06:33 PM, Jaehoon Chung wrote:
>>> Hi Tom,
>>>
>>> On 02/22/2013 02:45 AM, Tom Rini wrote: 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?
>>>> I think that this driver didn't use samsung-only. going up
>>>> u-boot-samsung? I'm not sure that.
>>
>> Unless the context got very wrong, it touches drivers/mmc/sdhci.c
>> which is controlled by CONFIG_SDHCI which is only turned on in what
>> look like samsung platforms to me.
>>
> 
> There is a /asm/arch-pantheon/config.h file which sets the CONFIG_SDHCI
> flag. It was added by Lei Wen (who is CC'ed to this thread) and looks
> like ARM926EJS (Marwell Semiconductor) processor based system.
> 
> Other systems are indeed samsung based processors. 
> 
> I don't mind if this patch would go via u-boot-samsung tree.
I don't mind, too. I think this patch would not affect the other SoC.
But I think that need to accept or review by somebody.
I was already posted "acked-by" for this patch.

Best Regards,
Jaehoon Chung
> 
> Moreover, since this change "touches" Lei system, I think that he should
> have expressed his opinion. Sadly this didn't happened....
> 
>>
>> - -- 
>> Tom
>> -----BEGIN PGP SIGNATURE-----
>> Version: GnuPG v1.4.11 (GNU/Linux)
>> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>>
>> iQIcBAEBAgAGBQJRJrESAAoJENk4IS6UOR1WKeYP/2FBhDgWjyf5Sh8m0Q1bdhRm
>> EvNMWLuexHUbxOu0AMsKyurPAGHnkfsWtNBnQXe804XXY29chFTsLlJUh4EGUBHm
>> KiSJPU9LAlDt/aMmv6ncFcgJ9I7jyu8bETBLbJszDSleO0DqpUBu+R7isVv0N7n3
>> Uozo89zHpCvGrN2VLlQetMrTTJKquThn4CT9SIm02Z2OM5l3vBLUg+QMk1MCjDUd
>> znIsFtUG5F+8T0uqzFN698RYACagPl5Y10HMylWHZgpgV2wGxQWrXspx78wHRSvy
>> cwDPd2SVQbO3o3s9ixlppxeO2kpva8NouzsCJn4nH5ivrHumFCm8SI2ka4YE6du5
>> 2b6Hol1Ie9jxq8B6cCNdEsHeHru3r+r19GzTNE0VfbrArpM8jO7FHcLruyzRjlaC
>> QyzDgdLXzV21113U+UlyAk5yWZ4he4xVHV4oFoN+QhIbQdNZP3gWkzLUQLLr9ry6
>> iIgeLx8GDONVxv7hGfNvAaxhQMgvANUOEtPP0CV+K0b60IDXyrFyP1xt5NRN77iR
>> v1rfcqitudFUyF6zqbDDLC2a5EW45UVyQR0WdZK999TWHS/U+5pTcDHhls1F16VD
>> wGZ+k+RmJQVWVdLImOsyWewPeZtzt02qlNom9LF8sKq8T4Uyf8uLhKksOyfxMCR7
>> AvZ53JHQoAAvhgPVn4KF
>> =7Oz4
>> -----END PGP SIGNATURE-----
> 
> 
>
Łukasz Majewski March 11, 2013, 8:22 a.m. UTC | #11
Dear All,

> Hi Tom,
> 
> > -----BEGIN PGP SIGNED MESSAGE-----
> > Hash: SHA1
> > 
> > On 02/21/2013 06:33 PM, Jaehoon Chung wrote:
> > > Hi Tom,
> > > 
> > > On 02/22/2013 02:45 AM, Tom Rini wrote: 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?
> > >> I think that this driver didn't use samsung-only. going up
> > >> u-boot-samsung? I'm not sure that.
> > 
> > Unless the context got very wrong, it touches drivers/mmc/sdhci.c
> > which is controlled by CONFIG_SDHCI which is only turned on in what
> > look like samsung platforms to me.
> > 
> 
> There is a /asm/arch-pantheon/config.h file which sets the
> CONFIG_SDHCI flag. It was added by Lei Wen (who is CC'ed to this
> thread) and looks like ARM926EJS (Marwell Semiconductor) processor
> based system.
> 
> Other systems are indeed samsung based processors. 
> 
> I don't mind if this patch would go via u-boot-samsung tree.
> 
> Moreover, since this change "touches" Lei system, I think that he
> should have expressed his opinion. Sadly this didn't happened....

Any feedback? If not, please pull this patch to u-boot mainline.

Today it is 2 months since this patch has been posted on ML. No reply
from interested people.
Minkyu Kang March 12, 2013, 10:54 a.m. UTC | #12
Dear Lukasz,

On 11/03/13 17:22, Lukasz Majewski wrote:
> Dear All,
> 
>> Hi Tom,
>>
>>> -----BEGIN PGP SIGNED MESSAGE-----
>>> Hash: SHA1
>>>
>>> On 02/21/2013 06:33 PM, Jaehoon Chung wrote:
>>>> Hi Tom,
>>>>
>>>> On 02/22/2013 02:45 AM, Tom Rini wrote: 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?
>>>>> I think that this driver didn't use samsung-only. going up
>>>>> u-boot-samsung? I'm not sure that.
>>>
>>> Unless the context got very wrong, it touches drivers/mmc/sdhci.c
>>> which is controlled by CONFIG_SDHCI which is only turned on in what
>>> look like samsung platforms to me.
>>>
>>
>> There is a /asm/arch-pantheon/config.h file which sets the
>> CONFIG_SDHCI flag. It was added by Lei Wen (who is CC'ed to this
>> thread) and looks like ARM926EJS (Marwell Semiconductor) processor
>> based system.
>>
>> Other systems are indeed samsung based processors. 
>>
>> I don't mind if this patch would go via u-boot-samsung tree.
>>
>> Moreover, since this change "touches" Lei system, I think that he
>> should have expressed his opinion. Sadly this didn't happened....
> 
> Any feedback? If not, please pull this patch to u-boot mainline.
> 
> Today it is 2 months since this patch has been posted on ML. No reply
> from interested people.
> 

Since Andy seems absent, applied to u-boot-samsung.

Thanks,
Minkyu Kang.
diff mbox

Patch

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;
 }