public inbox for linux-mmc@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mmc: dw_mmc: modified the DMA threshold for SD card
@ 2011-09-22 10:01 Jaehoon Chung
  2011-09-22 10:13 ` James Hogan
  0 siblings, 1 reply; 5+ messages in thread
From: Jaehoon Chung @ 2011-09-22 10:01 UTC (permalink / raw)
  To: linux-mmc@vger.kernel.org
  Cc: Chris Ball, Will Newton, James Hogan, Kyungmin Park

This patch modified the DMA threshold.

I didn't know exactly why need this threshold.
But if this value is 16, we didn't read SCR register for SD card.
Because in mmc_app_send_scr this values are used data.blocks=1 and data.blksz=8.
(data.blocks * data.blksz = 8...so return -EINVAL)

We didn't read the SCR register, then maybe should be set with wrong configuration.

Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---
 drivers/mmc/host/dw_mmc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 0ed1d28..64e08e2 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -47,7 +47,7 @@
 				 DW_MCI_CMD_ERROR_FLAGS  | SDMMC_INT_HLE)
 #define DW_MCI_SEND_STATUS	1
 #define DW_MCI_RECV_STATUS	2
-#define DW_MCI_DMA_THRESHOLD	16
+#define DW_MCI_DMA_THRESHOLD	8
 
 #ifdef CONFIG_MMC_DW_IDMAC
 struct idmac_desc {

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] mmc: dw_mmc: modified the DMA threshold for SD card
  2011-09-22 10:01 [PATCH] mmc: dw_mmc: modified the DMA threshold for SD card Jaehoon Chung
@ 2011-09-22 10:13 ` James Hogan
  2011-09-26  4:24   ` Jaehoon Chung
  0 siblings, 1 reply; 5+ messages in thread
From: James Hogan @ 2011-09-22 10:13 UTC (permalink / raw)
  To: Jaehoon Chung
  Cc: linux-mmc@vger.kernel.org, Chris Ball, Will Newton, Kyungmin Park

On 09/22/2011 11:01 AM, Jaehoon Chung wrote:
> This patch modified the DMA threshold.
> 
> I didn't know exactly why need this threshold.
> But if this value is 16, we didn't read SCR register for SD card.
> Because in mmc_app_send_scr this values are used data.blocks=1 and data.blksz=8.
> (data.blocks * data.blksz = 8...so return -EINVAL)

The idea is that for a small transaction the time to set up the DMA is
probably not worth the effort, therefore it does it using PIO mode (see
dw_mci_submit_data, if dw_mci_submit_data_dma fails, it sets itself up
for pio mode instead).

So if it's using PIO mode and the SCR cannot be read, then PIO mode is
broken. What's the value of the register HCON? dw_mci_probe reads it and
decides which pio push and pull function to use based on the host data
width. I've only tested one of them as we only have one configuration of
hardware available, but you may have a different one.

Cheers
James

> 
> We didn't read the SCR register, then maybe should be set with wrong configuration.
> 
> Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
> ---
>  drivers/mmc/host/dw_mmc.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 0ed1d28..64e08e2 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -47,7 +47,7 @@
>  				 DW_MCI_CMD_ERROR_FLAGS  | SDMMC_INT_HLE)
>  #define DW_MCI_SEND_STATUS	1
>  #define DW_MCI_RECV_STATUS	2
> -#define DW_MCI_DMA_THRESHOLD	16
> +#define DW_MCI_DMA_THRESHOLD	8
>  
>  #ifdef CONFIG_MMC_DW_IDMAC
>  struct idmac_desc {


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mmc: dw_mmc: modified the DMA threshold for SD card
  2011-09-22 10:13 ` James Hogan
@ 2011-09-26  4:24   ` Jaehoon Chung
  2011-09-26  8:25     ` James Hogan
  0 siblings, 1 reply; 5+ messages in thread
From: Jaehoon Chung @ 2011-09-26  4:24 UTC (permalink / raw)
  To: James Hogan
  Cc: Jaehoon Chung, linux-mmc@vger.kernel.org, Chris Ball, Will Newton,
	Kyungmin Park

James Hogan wrote:

> On 09/22/2011 11:01 AM, Jaehoon Chung wrote:
>> This patch modified the DMA threshold.
>>
>> I didn't know exactly why need this threshold.
>> But if this value is 16, we didn't read SCR register for SD card.
>> Because in mmc_app_send_scr this values are used data.blocks=1 and data.blksz=8.
>> (data.blocks * data.blksz = 8...so return -EINVAL)
> 
> The idea is that for a small transaction the time to set up the DMA is
> probably not worth the effort, therefore it does it using PIO mode (see
> dw_mci_submit_data, if dw_mci_submit_data_dma fails, it sets itself up
> for pio mode instead).

Is there some reason that threshold is set 16?

> 
> So if it's using PIO mode and the SCR cannot be read, then PIO mode is
> broken. What's the value of the register HCON? dw_mci_probe reads it and
> decides which pio push and pull function to use based on the host data
> width. I've only tested one of them as we only have one configuration of
> hardware available, but you may have a different one.


i used push/pull_data_32. What do you doubt this problem?

Best regards,
Jaehon Chung



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mmc: dw_mmc: modified the DMA threshold for SD card
  2011-09-26  4:24   ` Jaehoon Chung
@ 2011-09-26  8:25     ` James Hogan
  2011-09-26  8:34       ` Jaehoon Chung
  0 siblings, 1 reply; 5+ messages in thread
From: James Hogan @ 2011-09-26  8:25 UTC (permalink / raw)
  To: Jaehoon Chung
  Cc: linux-mmc@vger.kernel.org, Chris Ball, Will Newton, Kyungmin Park

Hi,

On 09/26/2011 05:24 AM, Jaehoon Chung wrote:
> James Hogan wrote:
> 
>> On 09/22/2011 11:01 AM, Jaehoon Chung wrote:
>>> This patch modified the DMA threshold.
>>>
>>> I didn't know exactly why need this threshold.
>>> But if this value is 16, we didn't read SCR register for SD card.
>>> Because in mmc_app_send_scr this values are used data.blocks=1 and data.blksz=8.
>>> (data.blocks * data.blksz = 8...so return -EINVAL)
>>
>> The idea is that for a small transaction the time to set up the DMA is
>> probably not worth the effort, therefore it does it using PIO mode (see
>> dw_mci_submit_data, if dw_mci_submit_data_dma fails, it sets itself up
>> for pio mode instead).
> 
> Is there some reason that threshold is set 16?

I expect it's fairly arbitrary, and the optimum value would depend on
what DMA is used etc.

> 
>>
>> So if it's using PIO mode and the SCR cannot be read, then PIO mode is
>> broken. What's the value of the register HCON? dw_mci_probe reads it and
>> decides which pio push and pull function to use based on the host data
>> width. I've only tested one of them as we only have one configuration of
>> hardware available, but you may have a different one.
> 
> 
> i used push/pull_data_32. What do you doubt this problem?

Our current hardware also has a data width of 32.

Does it work if you disable DMA (by returning -ENODEV at the beginning
of dw_mci_submit_data_dma)? That would prove that the problem wasn't
caused by DMA mode leaving the hardware in a bad state before switching
to PIO mode.

Cheers
James

> 
> Best regards,
> Jaehon Chung
> 
> 


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mmc: dw_mmc: modified the DMA threshold for SD card
  2011-09-26  8:25     ` James Hogan
@ 2011-09-26  8:34       ` Jaehoon Chung
  0 siblings, 0 replies; 5+ messages in thread
From: Jaehoon Chung @ 2011-09-26  8:34 UTC (permalink / raw)
  To: James Hogan
  Cc: Jaehoon Chung, linux-mmc@vger.kernel.org, Chris Ball, Will Newton,
	Kyungmin Park

Hi James.

I found other problem about not reading scr register.

Did you have 2.40a spec?

Our code is based on lower version than 2.40a.
In DWC_mobile_storage 2.40a spec, DATA register address is changed.

Now we used DATA register address is 0x100.(in 2.40a, Address 0x100 is used for CardThrCtl register)
But in 2.40a, DATA register address is 0x200... 
Maybe i think the reason why PIO mode is broken.

We need to set DATA register according to VERID.(reading VERID register)

I will send the patch for this point.

Best Regards,
Jaehoon Chung
 

> Our current hardware also has a data width of 32.
> 
> Does it work if you disable DMA (by returning -ENODEV at the beginning
> of dw_mci_submit_data_dma)? That would prove that the problem wasn't
> caused by DMA mode leaving the hardware in a bad state before switching
> to PIO mode.

> 

> Cheers
> James
> 
>> Best regards,
>> Jaehon Chung
>>
>>
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-09-26  8:35 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-09-22 10:01 [PATCH] mmc: dw_mmc: modified the DMA threshold for SD card Jaehoon Chung
2011-09-22 10:13 ` James Hogan
2011-09-26  4:24   ` Jaehoon Chung
2011-09-26  8:25     ` James Hogan
2011-09-26  8:34       ` Jaehoon Chung

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox