diff mbox

mmc: sdhci-iproc: suppress spurious interrupt with Multiblock read

Message ID 1495126660-25044-1-git-send-email-srinath.mannam@broadcom.com (mailing list archive)
State New, archived
Headers show

Commit Message

Srinath Mannam May 18, 2017, 4:57 p.m. UTC
The stingray SDHCI hardware supports ACMD12 and automatically
issues after multi block transfer completed.

If ACMD12 in SDHCI is disabled, spurious tx done interrupts are seen
on multi block read command with below error message:

Got data interrupt 0x00000002 even though no data
operation was in progress.

This patch uses SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12 to enable
ACM12 support in SDHCI hardware and suppress spurious interrupt.

Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
Reviewed-by: Ray Jui <ray.jui@broadcom.com>
Reviewed-by: Scott Branden <scott.branden@broadcom.com>

Comments

Adrian Hunter May 19, 2017, 6:25 a.m. UTC | #1
On 18/05/17 19:57, Srinath Mannam wrote:
> The stingray SDHCI hardware supports ACMD12 and automatically
> issues after multi block transfer completed.
> 
> If ACMD12 in SDHCI is disabled, spurious tx done interrupts are seen
> on multi block read command with below error message:
> 
> Got data interrupt 0x00000002 even though no data
> operation was in progress.
> 
> This patch uses SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12 to enable
> ACM12 support in SDHCI hardware and suppress spurious interrupt.
> 
> Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
> Reviewed-by: Ray Jui <ray.jui@broadcom.com>
> Reviewed-by: Scott Branden <scott.branden@broadcom.com>

Acked-by: Adrian Hunter <adrian.hunter@intel.com>

> 
> diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
> index 3275d49..61666d2 100644
> --- a/drivers/mmc/host/sdhci-iproc.c
> +++ b/drivers/mmc/host/sdhci-iproc.c
> @@ -187,7 +187,8 @@ static const struct sdhci_iproc_data iproc_cygnus_data = {
>  };
>  
>  static const struct sdhci_pltfm_data sdhci_iproc_pltfm_data = {
> -	.quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK,
> +	.quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
> +		  SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12,
>  	.quirks2 = SDHCI_QUIRK2_ACMD23_BROKEN,
>  	.ops = &sdhci_iproc_ops,
>  };
>
Srinath Mannam May 22, 2017, 11:52 a.m. UTC | #2
On Fri, May 19, 2017 at 11:55 AM, Adrian Hunter <adrian.hunter@intel.com> wrote:
> On 18/05/17 19:57, Srinath Mannam wrote:
>> The stingray SDHCI hardware supports ACMD12 and automatically
>> issues after multi block transfer completed.
>>
>> If ACMD12 in SDHCI is disabled, spurious tx done interrupts are seen
>> on multi block read command with below error message:
>>
>> Got data interrupt 0x00000002 even though no data
>> operation was in progress.
>>
>> This patch uses SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12 to enable
>> ACM12 support in SDHCI hardware and suppress spurious interrupt.
>>
>> Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
>> Reviewed-by: Ray Jui <ray.jui@broadcom.com>
>> Reviewed-by: Scott Branden <scott.branden@broadcom.com>
>
> Acked-by: Adrian Hunter <adrian.hunter@intel.com>

Thanks Adrian...

Will it be possible to take this for Linux-4.12??

Regards,
Srinath
Ulf Hansson May 22, 2017, 12:01 p.m. UTC | #3
On 22 May 2017 at 13:52, Srinath Mannam <srinath.mannam@broadcom.com> wrote:
> On Fri, May 19, 2017 at 11:55 AM, Adrian Hunter <adrian.hunter@intel.com> wrote:
>> On 18/05/17 19:57, Srinath Mannam wrote:
>>> The stingray SDHCI hardware supports ACMD12 and automatically
>>> issues after multi block transfer completed.
>>>
>>> If ACMD12 in SDHCI is disabled, spurious tx done interrupts are seen
>>> on multi block read command with below error message:
>>>
>>> Got data interrupt 0x00000002 even though no data
>>> operation was in progress.
>>>
>>> This patch uses SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12 to enable
>>> ACM12 support in SDHCI hardware and suppress spurious interrupt.
>>>
>>> Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
>>> Reviewed-by: Ray Jui <ray.jui@broadcom.com>
>>> Reviewed-by: Scott Branden <scott.branden@broadcom.com>
>>
>> Acked-by: Adrian Hunter <adrian.hunter@intel.com>
>
> Thanks Adrian...
>
> Will it be possible to take this for Linux-4.12??

It's queued for 4.13, however are you saying it's a regression for
4.12? Then what commit fixes it?

Perhaps you even want this to go stable?

Kind regards
Uffe
Srinath Mannam May 22, 2017, 1:33 p.m. UTC | #4
On Mon, May 22, 2017 at 5:31 PM, Ulf Hansson <ulf.hansson@linaro.org> wrote:
> On 22 May 2017 at 13:52, Srinath Mannam <srinath.mannam@broadcom.com> wrote:
>> On Fri, May 19, 2017 at 11:55 AM, Adrian Hunter <adrian.hunter@intel.com> wrote:
>>> On 18/05/17 19:57, Srinath Mannam wrote:
>>>> The stingray SDHCI hardware supports ACMD12 and automatically
>>>> issues after multi block transfer completed.
>>>>
>>>> If ACMD12 in SDHCI is disabled, spurious tx done interrupts are seen
>>>> on multi block read command with below error message:
>>>>
>>>> Got data interrupt 0x00000002 even though no data
>>>> operation was in progress.
>>>>
>>>> This patch uses SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12 to enable
>>>> ACM12 support in SDHCI hardware and suppress spurious interrupt.
>>>>
>>>> Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
>>>> Reviewed-by: Ray Jui <ray.jui@broadcom.com>
>>>> Reviewed-by: Scott Branden <scott.branden@broadcom.com>
>>>
>>> Acked-by: Adrian Hunter <adrian.hunter@intel.com>
>>
>> Thanks Adrian...
>>
>> Will it be possible to take this for Linux-4.12??
>
> It's queued for 4.13, however are you saying it's a regression for
> 4.12? Then what commit fixes it?
>
> Perhaps you even want this to go stable?
>
> Kind regards
> Uffe

Yes, this is regression for 4.12.
Fixes: b580c52d58d9 ("mmc: sdhci-iproc: add IPROC SDHCI driver")
Yes we want this to go in stable.

Thank you.

Regards,
Srinath.
Ulf Hansson May 22, 2017, 4:20 p.m. UTC | #5
On 22 May 2017 at 15:33, Srinath Mannam <srinath.mannam@broadcom.com> wrote:
> On Mon, May 22, 2017 at 5:31 PM, Ulf Hansson <ulf.hansson@linaro.org> wrote:
>> On 22 May 2017 at 13:52, Srinath Mannam <srinath.mannam@broadcom.com> wrote:
>>> On Fri, May 19, 2017 at 11:55 AM, Adrian Hunter <adrian.hunter@intel.com> wrote:
>>>> On 18/05/17 19:57, Srinath Mannam wrote:
>>>>> The stingray SDHCI hardware supports ACMD12 and automatically
>>>>> issues after multi block transfer completed.
>>>>>
>>>>> If ACMD12 in SDHCI is disabled, spurious tx done interrupts are seen
>>>>> on multi block read command with below error message:
>>>>>
>>>>> Got data interrupt 0x00000002 even though no data
>>>>> operation was in progress.
>>>>>
>>>>> This patch uses SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12 to enable
>>>>> ACM12 support in SDHCI hardware and suppress spurious interrupt.
>>>>>
>>>>> Signed-off-by: Srinath Mannam <srinath.mannam@broadcom.com>
>>>>> Reviewed-by: Ray Jui <ray.jui@broadcom.com>
>>>>> Reviewed-by: Scott Branden <scott.branden@broadcom.com>
>>>>
>>>> Acked-by: Adrian Hunter <adrian.hunter@intel.com>
>>>
>>> Thanks Adrian...
>>>
>>> Will it be possible to take this for Linux-4.12??
>>
>> It's queued for 4.13, however are you saying it's a regression for
>> 4.12? Then what commit fixes it?
>>
>> Perhaps you even want this to go stable?
>>
>> Kind regards
>> Uffe
>
> Yes, this is regression for 4.12.
> Fixes: b580c52d58d9 ("mmc: sdhci-iproc: add IPROC SDHCI driver")
> Yes we want this to go in stable.
>

Alright, applied for fixes and added a stable tag.

Kind regards
Uffe
diff mbox

Patch

diff --git a/drivers/mmc/host/sdhci-iproc.c b/drivers/mmc/host/sdhci-iproc.c
index 3275d49..61666d2 100644
--- a/drivers/mmc/host/sdhci-iproc.c
+++ b/drivers/mmc/host/sdhci-iproc.c
@@ -187,7 +187,8 @@  static const struct sdhci_iproc_data iproc_cygnus_data = {
 };
 
 static const struct sdhci_pltfm_data sdhci_iproc_pltfm_data = {
-	.quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK,
+	.quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK |
+		  SDHCI_QUIRK_MULTIBLOCK_READ_ACMD12,
 	.quirks2 = SDHCI_QUIRK2_ACMD23_BROKEN,
 	.ops = &sdhci_iproc_ops,
 };