* [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation
@ 2013-05-23 13:15 Rajeshwari Shinde
2013-05-23 17:01 ` Alim Akhtar
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Rajeshwari Shinde @ 2013-05-23 13:15 UTC (permalink / raw)
To: u-boot
Current DWMMC driver used to give FIFO underrun/overrun error every 3rd time
for mmc rescan command.
In current code FIFO_DEPTH is getting calculated after reading the FIFOTH
register and extracting the RX_WMARK bits from it i.e (RX_WMARK = FIFO_DEPTH/2 -1).
Instead of storing the correct value, we were recalculating the FIFO_DEPT each
time which is not correct.
Signed-off-by: Hatim Ali <hatim.rv@samsung.com>
Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
---
drivers/mmc/dw_mmc.c | 6 ++++--
1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
index 4070d4e..be590a4 100644
--- a/drivers/mmc/dw_mmc.c
+++ b/drivers/mmc/dw_mmc.c
@@ -332,11 +332,13 @@ static int dwmci_init(struct mmc *mmc)
dwmci_writel(host, DWMCI_BMOD, 1);
fifo_size = dwmci_readl(host, DWMCI_FIFOTH);
- if (host->fifoth_val)
+ if (host->fifoth_val) {
fifoth_val = host->fifoth_val;
- else
+ } else {
fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size/2 -1) |
TX_WMARK(fifo_size/2);
+ host->fifoth_val = fifoth_val;
+ }
dwmci_writel(host, DWMCI_FIFOTH, fifoth_val);
dwmci_writel(host, DWMCI_CLKENA, 0);
--
1.7.4.4
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation
2013-05-23 13:15 [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation Rajeshwari Shinde
@ 2013-05-23 17:01 ` Alim Akhtar
2013-05-23 18:27 ` Jagan Teki
2013-05-24 3:42 ` Jaehoon Chung
2 siblings, 0 replies; 9+ messages in thread
From: Alim Akhtar @ 2013-05-23 17:01 UTC (permalink / raw)
To: u-boot
Hi Rajeshwari
On Thu, May 23, 2013 at 6:45 PM, Rajeshwari Shinde <rajeshwari.s@samsung.com
> wrote:
> Current DWMMC driver used to give FIFO underrun/overrun error every 3rd
> time
> for mmc rescan command.
> In current code FIFO_DEPTH is getting calculated after reading the FIFOTH
> register and extracting the RX_WMARK bits from it i.e (RX_WMARK =
> FIFO_DEPTH/2 -1).
> Instead of storing the correct value, we were recalculating the FIFO_DEPT
> each
> time which is not correct.
>
> Signed-off-by: Hatim Ali <hatim.rv@samsung.com>
> Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
> ---
> drivers/mmc/dw_mmc.c | 6 ++++--
> 1 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
> index 4070d4e..be590a4 100644
> --- a/drivers/mmc/dw_mmc.c
> +++ b/drivers/mmc/dw_mmc.c
> @@ -332,11 +332,13 @@ static int dwmci_init(struct mmc *mmc)
> dwmci_writel(host, DWMCI_BMOD, 1);
>
> fifo_size = dwmci_readl(host, DWMCI_FIFOTH);
> - if (host->fifoth_val)
> + if (host->fifoth_val) {
> fifoth_val = host->fifoth_val;
> - else
> + } else {
> fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size/2 -1) |
> TX_WMARK(fifo_size/2);
> + host->fifoth_val = fifoth_val;
> + }
>
Looks Good to me.
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
> dwmci_writel(host, DWMCI_FIFOTH, fifoth_val);
>
> dwmci_writel(host, DWMCI_CLKENA, 0);
> --
> 1.7.4.4
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation
2013-05-23 13:15 [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation Rajeshwari Shinde
2013-05-23 17:01 ` Alim Akhtar
@ 2013-05-23 18:27 ` Jagan Teki
2013-05-24 1:42 ` Jaehoon Chung
2013-05-24 3:42 ` Jaehoon Chung
2 siblings, 1 reply; 9+ messages in thread
From: Jagan Teki @ 2013-05-23 18:27 UTC (permalink / raw)
To: u-boot
On Thu, May 23, 2013 at 6:45 PM, Rajeshwari Shinde
<rajeshwari.s@samsung.com> wrote:
> Current DWMMC driver used to give FIFO underrun/overrun error every 3rd time
> for mmc rescan command.
> In current code FIFO_DEPTH is getting calculated after reading the FIFOTH
> register and extracting the RX_WMARK bits from it i.e (RX_WMARK = FIFO_DEPTH/2 -1).
> Instead of storing the correct value, we were recalculating the FIFO_DEPT each
> time which is not correct.
>
> Signed-off-by: Hatim Ali <hatim.rv@samsung.com>
> Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
> ---
> drivers/mmc/dw_mmc.c | 6 ++++--
> 1 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
> index 4070d4e..be590a4 100644
> --- a/drivers/mmc/dw_mmc.c
> +++ b/drivers/mmc/dw_mmc.c
> @@ -332,11 +332,13 @@ static int dwmci_init(struct mmc *mmc)
> dwmci_writel(host, DWMCI_BMOD, 1);
>
> fifo_size = dwmci_readl(host, DWMCI_FIFOTH);
> - if (host->fifoth_val)
> + if (host->fifoth_val) {
What is the inital value for host->fifoth_val, for the first time call.?
> fifoth_val = host->fifoth_val;
> - else
> + } else {
> fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size/2 -1) |
> TX_WMARK(fifo_size/2);
> + host->fifoth_val = fifoth_val;
> + }
> dwmci_writel(host, DWMCI_FIFOTH, fifoth_val);
>
> dwmci_writel(host, DWMCI_CLKENA, 0);
> --
> 1.7.4.4
>
Thanks,
Jagan.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation
2013-05-23 18:27 ` Jagan Teki
@ 2013-05-24 1:42 ` Jaehoon Chung
2013-05-24 5:01 ` Jagan Teki
0 siblings, 1 reply; 9+ messages in thread
From: Jaehoon Chung @ 2013-05-24 1:42 UTC (permalink / raw)
To: u-boot
On 05/24/2013 03:27 AM, Jagan Teki wrote:
> On Thu, May 23, 2013 at 6:45 PM, Rajeshwari Shinde
> <rajeshwari.s@samsung.com> wrote:
>> Current DWMMC driver used to give FIFO underrun/overrun error every 3rd time
>> for mmc rescan command.
>> In current code FIFO_DEPTH is getting calculated after reading the FIFOTH
>> register and extracting the RX_WMARK bits from it i.e (RX_WMARK = FIFO_DEPTH/2 -1).
>> Instead of storing the correct value, we were recalculating the FIFO_DEPT each
>> time which is not correct.
>>
>> Signed-off-by: Hatim Ali <hatim.rv@samsung.com>
>> Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
>> ---
>> drivers/mmc/dw_mmc.c | 6 ++++--
>> 1 files changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
>> index 4070d4e..be590a4 100644
>> --- a/drivers/mmc/dw_mmc.c
>> +++ b/drivers/mmc/dw_mmc.c
>> @@ -332,11 +332,13 @@ static int dwmci_init(struct mmc *mmc)
>> dwmci_writel(host, DWMCI_BMOD, 1);
>>
>> fifo_size = dwmci_readl(host, DWMCI_FIFOTH);
>> - if (host->fifoth_val)
>> + if (host->fifoth_val) {
>
> What is the inital value for host->fifoth_val, for the first time call.?
It should be set into board-specific file(dw-mmc_exynos.c) or others.
Best Regards,
Jaehoon Chung
>
>> fifoth_val = host->fifoth_val;
>> - else
>> + } else {
>> fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size/2 -1) |
>> TX_WMARK(fifo_size/2);
>> + host->fifoth_val = fifoth_val;
>> + }
>> dwmci_writel(host, DWMCI_FIFOTH, fifoth_val);
>>
>> dwmci_writel(host, DWMCI_CLKENA, 0);
>> --
>> 1.7.4.4
>>
>
> Thanks,
> Jagan.
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation
2013-05-23 13:15 [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation Rajeshwari Shinde
2013-05-23 17:01 ` Alim Akhtar
2013-05-23 18:27 ` Jagan Teki
@ 2013-05-24 3:42 ` Jaehoon Chung
2 siblings, 0 replies; 9+ messages in thread
From: Jaehoon Chung @ 2013-05-24 3:42 UTC (permalink / raw)
To: u-boot
Acked-by: Jaehoon Chung <jh80.chung@samsung.com>
On 05/23/2013 10:15 PM, Rajeshwari Shinde wrote:
> Current DWMMC driver used to give FIFO underrun/overrun error every 3rd time
> for mmc rescan command.
> In current code FIFO_DEPTH is getting calculated after reading the FIFOTH
> register and extracting the RX_WMARK bits from it i.e (RX_WMARK = FIFO_DEPTH/2 -1).
> Instead of storing the correct value, we were recalculating the FIFO_DEPT each
> time which is not correct.
>
> Signed-off-by: Hatim Ali <hatim.rv@samsung.com>
> Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
> ---
> drivers/mmc/dw_mmc.c | 6 ++++--
> 1 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
> index 4070d4e..be590a4 100644
> --- a/drivers/mmc/dw_mmc.c
> +++ b/drivers/mmc/dw_mmc.c
> @@ -332,11 +332,13 @@ static int dwmci_init(struct mmc *mmc)
> dwmci_writel(host, DWMCI_BMOD, 1);
>
> fifo_size = dwmci_readl(host, DWMCI_FIFOTH);
> - if (host->fifoth_val)
> + if (host->fifoth_val) {
> fifoth_val = host->fifoth_val;
> - else
> + } else {
> fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size/2 -1) |
> TX_WMARK(fifo_size/2);
> + host->fifoth_val = fifoth_val;
> + }
> dwmci_writel(host, DWMCI_FIFOTH, fifoth_val);
>
> dwmci_writel(host, DWMCI_CLKENA, 0);
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation
2013-05-24 1:42 ` Jaehoon Chung
@ 2013-05-24 5:01 ` Jagan Teki
2013-05-24 6:15 ` Rajeshwari Birje
0 siblings, 1 reply; 9+ messages in thread
From: Jagan Teki @ 2013-05-24 5:01 UTC (permalink / raw)
To: u-boot
On Fri, May 24, 2013 at 7:12 AM, Jaehoon Chung <jh80.chung@samsung.com> wrote:
> On 05/24/2013 03:27 AM, Jagan Teki wrote:
>> On Thu, May 23, 2013 at 6:45 PM, Rajeshwari Shinde
>> <rajeshwari.s@samsung.com> wrote:
>>> Current DWMMC driver used to give FIFO underrun/overrun error every 3rd time
>>> for mmc rescan command.
>>> In current code FIFO_DEPTH is getting calculated after reading the FIFOTH
>>> register and extracting the RX_WMARK bits from it i.e (RX_WMARK = FIFO_DEPTH/2 -1).
>>> Instead of storing the correct value, we were recalculating the FIFO_DEPT each
>>> time which is not correct.
>>>
>>> Signed-off-by: Hatim Ali <hatim.rv@samsung.com>
>>> Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
>>> ---
>>> drivers/mmc/dw_mmc.c | 6 ++++--
>>> 1 files changed, 4 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
>>> index 4070d4e..be590a4 100644
>>> --- a/drivers/mmc/dw_mmc.c
>>> +++ b/drivers/mmc/dw_mmc.c
>>> @@ -332,11 +332,13 @@ static int dwmci_init(struct mmc *mmc)
>>> dwmci_writel(host, DWMCI_BMOD, 1);
>>>
>>> fifo_size = dwmci_readl(host, DWMCI_FIFOTH);
>>> - if (host->fifoth_val)
>>> + if (host->fifoth_val) {
>>
>> What is the inital value for host->fifoth_val, for the first time call.?
> It should be set into board-specific file(dw-mmc_exynos.c) or others.
I am unable to find dw-mmc_exynos.c on the master, and also I haven't
see fifoth_val used other than dw_mmc.c
Could you please help me out.
Thanks,
Jagan.
>
> Best Regards,
> Jaehoon Chung
>>
>>> fifoth_val = host->fifoth_val;
>>> - else
>>> + } else {
>>> fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size/2 -1) |
>>> TX_WMARK(fifo_size/2);
>>> + host->fifoth_val = fifoth_val;
>>> + }
>>> dwmci_writel(host, DWMCI_FIFOTH, fifoth_val);
>>>
>>> dwmci_writel(host, DWMCI_CLKENA, 0);
>>> --
>>> 1.7.4.4
>>>
>>
>> Thanks,
>> Jagan.
>>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation
2013-05-24 5:01 ` Jagan Teki
@ 2013-05-24 6:15 ` Rajeshwari Birje
2013-05-24 6:46 ` Jaehoon Chung
0 siblings, 1 reply; 9+ messages in thread
From: Rajeshwari Birje @ 2013-05-24 6:15 UTC (permalink / raw)
To: u-boot
Hi Jagan,
Please find my comments below.
On Fri, May 24, 2013 at 10:31 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
> On Fri, May 24, 2013 at 7:12 AM, Jaehoon Chung <jh80.chung@samsung.com> wrote:
>> On 05/24/2013 03:27 AM, Jagan Teki wrote:
>>> On Thu, May 23, 2013 at 6:45 PM, Rajeshwari Shinde
>>> <rajeshwari.s@samsung.com> wrote:
>>>> Current DWMMC driver used to give FIFO underrun/overrun error every 3rd time
>>>> for mmc rescan command.
>>>> In current code FIFO_DEPTH is getting calculated after reading the FIFOTH
>>>> register and extracting the RX_WMARK bits from it i.e (RX_WMARK = FIFO_DEPTH/2 -1).
>>>> Instead of storing the correct value, we were recalculating the FIFO_DEPT each
>>>> time which is not correct.
>>>>
>>>> Signed-off-by: Hatim Ali <hatim.rv@samsung.com>
>>>> Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
>>>> ---
>>>> drivers/mmc/dw_mmc.c | 6 ++++--
>>>> 1 files changed, 4 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
>>>> index 4070d4e..be590a4 100644
>>>> --- a/drivers/mmc/dw_mmc.c
>>>> +++ b/drivers/mmc/dw_mmc.c
>>>> @@ -332,11 +332,13 @@ static int dwmci_init(struct mmc *mmc)
>>>> dwmci_writel(host, DWMCI_BMOD, 1);
>>>>
>>>> fifo_size = dwmci_readl(host, DWMCI_FIFOTH);
>>>> - if (host->fifoth_val)
>>>> + if (host->fifoth_val) {
>>>
>>> What is the inital value for host->fifoth_val, for the first time call.?
>> It should be set into board-specific file(dw-mmc_exynos.c) or others.
>
> I am unable to find dw-mmc_exynos.c on the master, and also I haven't
> see fifoth_val used other than dw_mmc.c
> Could you please help me out.
dw-mmc_exynos.c is merged in mmc tree. Yes FIFO_DEPTH is set only in dw_mmc.c
>
> Thanks,
> Jagan.
>
>>
>> Best Regards,
>> Jaehoon Chung
>>>
>>>> fifoth_val = host->fifoth_val;
>>>> - else
>>>> + } else {
>>>> fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size/2 -1) |
>>>> TX_WMARK(fifo_size/2);
>>>> + host->fifoth_val = fifoth_val;
>>>> + }
>>>> dwmci_writel(host, DWMCI_FIFOTH, fifoth_val);
>>>>
>>>> dwmci_writel(host, DWMCI_CLKENA, 0);
>>>> --
>>>> 1.7.4.4
>>>>
>>>
>>> Thanks,
>>> Jagan.
>>>
>>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
--
Regards,
Rajeshwari Shinde
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation
2013-05-24 6:15 ` Rajeshwari Birje
@ 2013-05-24 6:46 ` Jaehoon Chung
2013-05-24 8:14 ` Jagan Teki
0 siblings, 1 reply; 9+ messages in thread
From: Jaehoon Chung @ 2013-05-24 6:46 UTC (permalink / raw)
To: u-boot
Hi Jagan,
On 05/24/2013 03:15 PM, Rajeshwari Birje wrote:
> Hi Jagan,
>
> Please find my comments below.
> On Fri, May 24, 2013 at 10:31 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>> On Fri, May 24, 2013 at 7:12 AM, Jaehoon Chung <jh80.chung@samsung.com> wrote:
>>> On 05/24/2013 03:27 AM, Jagan Teki wrote:
>>>> On Thu, May 23, 2013 at 6:45 PM, Rajeshwari Shinde
>>>> <rajeshwari.s@samsung.com> wrote:
>>>>> Current DWMMC driver used to give FIFO underrun/overrun error every 3rd time
>>>>> for mmc rescan command.
>>>>> In current code FIFO_DEPTH is getting calculated after reading the FIFOTH
>>>>> register and extracting the RX_WMARK bits from it i.e (RX_WMARK = FIFO_DEPTH/2 -1).
>>>>> Instead of storing the correct value, we were recalculating the FIFO_DEPT each
>>>>> time which is not correct.
>>>>>
>>>>> Signed-off-by: Hatim Ali <hatim.rv@samsung.com>
>>>>> Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
>>>>> ---
>>>>> drivers/mmc/dw_mmc.c | 6 ++++--
>>>>> 1 files changed, 4 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
>>>>> index 4070d4e..be590a4 100644
>>>>> --- a/drivers/mmc/dw_mmc.c
>>>>> +++ b/drivers/mmc/dw_mmc.c
>>>>> @@ -332,11 +332,13 @@ static int dwmci_init(struct mmc *mmc)
>>>>> dwmci_writel(host, DWMCI_BMOD, 1);
>>>>>
>>>>> fifo_size = dwmci_readl(host, DWMCI_FIFOTH);
>>>>> - if (host->fifoth_val)
>>>>> + if (host->fifoth_val) {
>>>>
>>>> What is the inital value for host->fifoth_val, for the first time call.?
>>> It should be set into board-specific file(dw-mmc_exynos.c) or others.
>>
>> I am unable to find dw-mmc_exynos.c on the master, and also I haven't
>> see fifoth_val used other than dw_mmc.c
>> Could you please help me out.
> dw-mmc_exynos.c is merged in mmc tree. Yes FIFO_DEPTH is set only in dw_mmc.c
host->fifoth_val should be set to hard-coding by developer.
In general case, it's right that fifoth_Val is calculated with register value.
But sometime, it needs to set to other value, not register value.
Then we can use the host->fifoth_val in board-specific file.
Maybe it didn't use the host->fifoth_val anywhere. In future, we can use this.
Best Regards,
Jaehoon Chung
>>
>> Thanks,
>> Jagan.
>>
>>>
>>> Best Regards,
>>> Jaehoon Chung
>>>>
>>>>> fifoth_val = host->fifoth_val;
>>>>> - else
>>>>> + } else {
>>>>> fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size/2 -1) |
>>>>> TX_WMARK(fifo_size/2);
>>>>> + host->fifoth_val = fifoth_val;
>>>>> + }
>>>>> dwmci_writel(host, DWMCI_FIFOTH, fifoth_val);
>>>>>
>>>>> dwmci_writel(host, DWMCI_CLKENA, 0);
>>>>> --
>>>>> 1.7.4.4
>>>>>
>>>>
>>>> Thanks,
>>>> Jagan.
>>>>
>>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation
2013-05-24 6:46 ` Jaehoon Chung
@ 2013-05-24 8:14 ` Jagan Teki
0 siblings, 0 replies; 9+ messages in thread
From: Jagan Teki @ 2013-05-24 8:14 UTC (permalink / raw)
To: u-boot
On Fri, May 24, 2013 at 12:16 PM, Jaehoon Chung <jh80.chung@samsung.com> wrote:
> Hi Jagan,
>
> On 05/24/2013 03:15 PM, Rajeshwari Birje wrote:
>> Hi Jagan,
>>
>> Please find my comments below.
>> On Fri, May 24, 2013 at 10:31 AM, Jagan Teki <jagannadh.teki@gmail.com> wrote:
>>> On Fri, May 24, 2013 at 7:12 AM, Jaehoon Chung <jh80.chung@samsung.com> wrote:
>>>> On 05/24/2013 03:27 AM, Jagan Teki wrote:
>>>>> On Thu, May 23, 2013 at 6:45 PM, Rajeshwari Shinde
>>>>> <rajeshwari.s@samsung.com> wrote:
>>>>>> Current DWMMC driver used to give FIFO underrun/overrun error every 3rd time
>>>>>> for mmc rescan command.
>>>>>> In current code FIFO_DEPTH is getting calculated after reading the FIFOTH
>>>>>> register and extracting the RX_WMARK bits from it i.e (RX_WMARK = FIFO_DEPTH/2 -1).
>>>>>> Instead of storing the correct value, we were recalculating the FIFO_DEPT each
>>>>>> time which is not correct.
>>>>>>
>>>>>> Signed-off-by: Hatim Ali <hatim.rv@samsung.com>
>>>>>> Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
>>>>>> ---
>>>>>> drivers/mmc/dw_mmc.c | 6 ++++--
>>>>>> 1 files changed, 4 insertions(+), 2 deletions(-)
>>>>>>
>>>>>> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
>>>>>> index 4070d4e..be590a4 100644
>>>>>> --- a/drivers/mmc/dw_mmc.c
>>>>>> +++ b/drivers/mmc/dw_mmc.c
>>>>>> @@ -332,11 +332,13 @@ static int dwmci_init(struct mmc *mmc)
>>>>>> dwmci_writel(host, DWMCI_BMOD, 1);
>>>>>>
>>>>>> fifo_size = dwmci_readl(host, DWMCI_FIFOTH);
>>>>>> - if (host->fifoth_val)
>>>>>> + if (host->fifoth_val) {
>>>>>
>>>>> What is the inital value for host->fifoth_val, for the first time call.?
>>>> It should be set into board-specific file(dw-mmc_exynos.c) or others.
>>>
>>> I am unable to find dw-mmc_exynos.c on the master, and also I haven't
>>> see fifoth_val used other than dw_mmc.c
>>> Could you please help me out.
>> dw-mmc_exynos.c is merged in mmc tree. Yes FIFO_DEPTH is set only in dw_mmc.c
> host->fifoth_val should be set to hard-coding by developer.
> In general case, it's right that fifoth_Val is calculated with register value.
> But sometime, it needs to set to other value, not register value.
> Then we can use the host->fifoth_val in board-specific file.
> Maybe it didn't use the host->fifoth_val anywhere. In future, we can use this.
Ok, thanks for your response.
If that is the case may be we can initialize host->fifoth_val on
add_dwmci() for as of now.
Once the proper init of this is done in board specific file in future
may be we can remove this.
Thanks,
Jagan.
>
> Best Regards,
> Jaehoon Chung
>>>
>>> Thanks,
>>> Jagan.
>>>
>>>>
>>>> Best Regards,
>>>> Jaehoon Chung
>>>>>
>>>>>> fifoth_val = host->fifoth_val;
>>>>>> - else
>>>>>> + } else {
>>>>>> fifoth_val = MSIZE(0x2) | RX_WMARK(fifo_size/2 -1) |
>>>>>> TX_WMARK(fifo_size/2);
>>>>>> + host->fifoth_val = fifoth_val;
>>>>>> + }
>>>>>> dwmci_writel(host, DWMCI_FIFOTH, fifoth_val);
>>>>>>
>>>>>> dwmci_writel(host, DWMCI_CLKENA, 0);
>>>>>> --
>>>>>> 1.7.4.4
>>>>>>
>>>>>
>>>>> Thanks,
>>>>> Jagan.
>>>>>
>>>>
>>> _______________________________________________
>>> U-Boot mailing list
>>> U-Boot at lists.denx.de
>>> http://lists.denx.de/mailman/listinfo/u-boot
>>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-05-24 8:14 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-23 13:15 [U-Boot] [PATCH] MMC: DWMMC: Fix FIFO_DEPTH calculation Rajeshwari Shinde
2013-05-23 17:01 ` Alim Akhtar
2013-05-23 18:27 ` Jagan Teki
2013-05-24 1:42 ` Jaehoon Chung
2013-05-24 5:01 ` Jagan Teki
2013-05-24 6:15 ` Rajeshwari Birje
2013-05-24 6:46 ` Jaehoon Chung
2013-05-24 8:14 ` Jagan Teki
2013-05-24 3:42 ` Jaehoon Chung
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox