diff mbox

[U-Boot] ts4800: add CONFIG_SYS_FSL_ERRATUM_ESDHC_A001

Message ID 1461260224-21174-1-git-send-email-sebastien.bourdelin@savoirfairelinux.com
State Awaiting Upstream
Delegated to: Stefano Babic
Headers show

Commit Message

Sebastien Bourdelin April 21, 2016, 5:37 p.m. UTC
This commit fixes the MMC data transactions timeout problem on the
TS4800.

The changes introduced in the commit e978a31 on the timeout calculation
for the MMC data transactions has revealed there is something wrong with
the timeout setting of the eSDHC controller used in the IMX51.

The IMX51 seems to be concerned by this erratum and without this change
the MMC driver is unable to do any transactions.

Signed-off-by: Sebastien Bourdelin <sebastien.bourdelin@savoirfairelinux.com>
---
 include/configs/ts4800.h | 2 ++
 1 file changed, 2 insertions(+)

Comments

Sebastien Bourdelin April 21, 2016, 9:39 p.m. UTC | #1
Hi,
I add Fabio Estevam in the loop as suggested by Marek Vasut on IRC.

On 04/21/2016 01:37 PM, Sebastien Bourdelin wrote:
> This commit fixes the MMC data transactions timeout problem on the
> TS4800.
>
> The changes introduced in the commit e978a31 on the timeout calculation
> for the MMC data transactions has revealed there is something wrong with
> the timeout setting of the eSDHC controller used in the IMX51.
>
> The IMX51 seems to be concerned by this erratum and without this change
> the MMC driver is unable to do any transactions.
>
> Signed-off-by: Sebastien Bourdelin <sebastien.bourdelin@savoirfairelinux.com>
> ---
>  include/configs/ts4800.h | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/include/configs/ts4800.h b/include/configs/ts4800.h
> index fcc9d80..5e5e4d3 100644
> --- a/include/configs/ts4800.h
> +++ b/include/configs/ts4800.h
> @@ -63,6 +63,8 @@
>  #define CONFIG_FSL_ESDHC
>  #define CONFIG_SYS_FSL_ESDHC_ADDR	MMC_SDHC1_BASE_ADDR
>  
> +#define CONFIG_SYS_FSL_ERRATUM_ESDHC_A001
> +
>  #define CONFIG_MMC
>  
>  #define CONFIG_CMD_MMC

The problem we found is related to the DTOCV field in the system control
register of the IMX51's eSDHC controller.  If we set the value 4, 8 or
12 in this DTOCV field the MMC driver is unable to do any data
transactions, we have a timeout (i.e: the DTOE field in the Interrupt
status register of the eSDHC controller is set to 1).
It works with other values, at least i tried with 5, 9, 11, 13 without
having any timeout.

Our guess and because we didn't find any errata related to this issue
for the IMX51 is that this device is impacted by the same problem then
devices MPC83XX and MPC85XX (see the ESDHC-A001 errata in the datasheet:
http://pdf.datasheetarchive.com/indexerfiles/Datasheets-SW1/DSASW0012367.pdf)

Perhaps someone from Freescale can give us more informations.

Regards,
Sebastien.
Sebastien Bourdelin May 10, 2016, 8:36 p.m. UTC | #2
Hi,

On 04/21/2016 05:39 PM, Sebastien Bourdelin wrote:
> Hi,
> I add Fabio Estevam in the loop as suggested by Marek Vasut on IRC.
>
> On 04/21/2016 01:37 PM, Sebastien Bourdelin wrote:
>> This commit fixes the MMC data transactions timeout problem on the
>> TS4800.
>>
>> The changes introduced in the commit e978a31 on the timeout calculation
>> for the MMC data transactions has revealed there is something wrong with
>> the timeout setting of the eSDHC controller used in the IMX51.
>>
>> The IMX51 seems to be concerned by this erratum and without this change
>> the MMC driver is unable to do any transactions.
>>
>> Signed-off-by: Sebastien Bourdelin <sebastien.bourdelin@savoirfairelinux.com>
>> ---
>>  include/configs/ts4800.h | 2 ++
>>  1 file changed, 2 insertions(+)
>>
>> diff --git a/include/configs/ts4800.h b/include/configs/ts4800.h
>> index fcc9d80..5e5e4d3 100644
>> --- a/include/configs/ts4800.h
>> +++ b/include/configs/ts4800.h
>> @@ -63,6 +63,8 @@
>>  #define CONFIG_FSL_ESDHC
>>  #define CONFIG_SYS_FSL_ESDHC_ADDR	MMC_SDHC1_BASE_ADDR
>>  
>> +#define CONFIG_SYS_FSL_ERRATUM_ESDHC_A001
>> +
>>  #define CONFIG_MMC
>>  
>>  #define CONFIG_CMD_MMC
> The problem we found is related to the DTOCV field in the system control
> register of the IMX51's eSDHC controller.  If we set the value 4, 8 or
> 12 in this DTOCV field the MMC driver is unable to do any data
> transactions, we have a timeout (i.e: the DTOE field in the Interrupt
> status register of the eSDHC controller is set to 1).
> It works with other values, at least i tried with 5, 9, 11, 13 without
> having any timeout.
>
> Our guess and because we didn't find any errata related to this issue
> for the IMX51 is that this device is impacted by the same problem then
> devices MPC83XX and MPC85XX (see the ESDHC-A001 errata in the datasheet:
> http://pdf.datasheetarchive.com/indexerfiles/Datasheets-SW1/DSASW0012367.pdf)
>
> Perhaps someone from Freescale can give us more informations.
>
> Regards,
> Sebastien.

Did someone from Freescale had the time to take a look at this patch and can
give us more information?
We still need it to boot the TS4800.

Regards,
Sebastien.
Fabio Estevam May 10, 2016, 8:43 p.m. UTC | #3
Hi Sebastien,

On Thu, Apr 21, 2016 at 2:37 PM, Sebastien Bourdelin
<sebastien.bourdelin@savoirfairelinux.com> wrote:
> This commit fixes the MMC data transactions timeout problem on the
> TS4800.
>
> The changes introduced in the commit e978a31 on the timeout calculation
> for the MMC data transactions has revealed there is something wrong with
> the timeout setting of the eSDHC controller used in the IMX51.
>
> The IMX51 seems to be concerned by this erratum and without this change
> the MMC driver is unable to do any transactions.
>
> Signed-off-by: Sebastien Bourdelin <sebastien.bourdelin@savoirfairelinux.com>

Does this issue only happen with eMMC and not with SD card? mx51evk
boots fine without this config option.

As this change affects only ts4800.h I think it is safer to apply for
this release:

Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
Sebastien Bourdelin May 20, 2016, 8:13 p.m. UTC | #4
Hi Fabio,

On 05/10/2016 04:43 PM, Fabio Estevam wrote:
> Hi Sebastien,
>
> On Thu, Apr 21, 2016 at 2:37 PM, Sebastien Bourdelin
> <sebastien.bourdelin@savoirfairelinux.com> wrote:
>> This commit fixes the MMC data transactions timeout problem on the
>> TS4800.
>>
>> The changes introduced in the commit e978a31 on the timeout calculation
>> for the MMC data transactions has revealed there is something wrong with
>> the timeout setting of the eSDHC controller used in the IMX51.
>>
>> The IMX51 seems to be concerned by this erratum and without this change
>> the MMC driver is unable to do any transactions.
>>
>> Signed-off-by: Sebastien Bourdelin <sebastien.bourdelin@savoirfairelinux.com>
> Does this issue only happen with eMMC and not with SD card? mx51evk
> boots fine without this config option.
This issue happen with the SD card, i currently didn't found the time to
try with eMMC.

Best Regards,
Sebastien.
> As this change affects only ts4800.h I think it is safer to apply for
> this release:
>
> Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
Fabio Estevam May 20, 2016, 9:40 p.m. UTC | #5
Hi Sebastien,

On Fri, May 20, 2016 at 5:13 PM, Sebastien Bourdelin
<sebastien.bourdelin@savoirfairelinux.com> wrote:

> This issue happen with the SD card, i currently didn't found the time to
> try with eMMC.

Ok, we also boot from SD card on the mx51evk and never observed this
issue there.

What is the MX51 silicon version you have on your board?
Stefano Babic May 24, 2016, 1:10 p.m. UTC | #6
On 10/05/2016 22:36, Sebastien Bourdelin wrote:
> Hi,
> 
> On 04/21/2016 05:39 PM, Sebastien Bourdelin wrote:
>> Hi,
>> I add Fabio Estevam in the loop as suggested by Marek Vasut on IRC.
>>
>> On 04/21/2016 01:37 PM, Sebastien Bourdelin wrote:
>>> This commit fixes the MMC data transactions timeout problem on the
>>> TS4800.
>>>
>>> The changes introduced in the commit e978a31 on the timeout calculation
>>> for the MMC data transactions has revealed there is something wrong with
>>> the timeout setting of the eSDHC controller used in the IMX51.
>>>
>>> The IMX51 seems to be concerned by this erratum and without this change
>>> the MMC driver is unable to do any transactions.
>>>
>>> Signed-off-by: Sebastien Bourdelin <sebastien.bourdelin@savoirfairelinux.com>
>>> ---
>>>  include/configs/ts4800.h | 2 ++
>>>  1 file changed, 2 insertions(+)
>>>
>>> diff --git a/include/configs/ts4800.h b/include/configs/ts4800.h
>>> index fcc9d80..5e5e4d3 100644
>>> --- a/include/configs/ts4800.h
>>> +++ b/include/configs/ts4800.h
>>> @@ -63,6 +63,8 @@
>>>  #define CONFIG_FSL_ESDHC
>>>  #define CONFIG_SYS_FSL_ESDHC_ADDR	MMC_SDHC1_BASE_ADDR
>>>  
>>> +#define CONFIG_SYS_FSL_ERRATUM_ESDHC_A001
>>> +
>>>  #define CONFIG_MMC
>>>  
>>>  #define CONFIG_CMD_MMC
>> The problem we found is related to the DTOCV field in the system control
>> register of the IMX51's eSDHC controller.  If we set the value 4, 8 or
>> 12 in this DTOCV field the MMC driver is unable to do any data
>> transactions, we have a timeout (i.e: the DTOE field in the Interrupt
>> status register of the eSDHC controller is set to 1).
>> It works with other values, at least i tried with 5, 9, 11, 13 without
>> having any timeout.
>>
>> Our guess and because we didn't find any errata related to this issue
>> for the IMX51 is that this device is impacted by the same problem then
>> devices MPC83XX and MPC85XX (see the ESDHC-A001 errata in the datasheet:
>> http://pdf.datasheetarchive.com/indexerfiles/Datasheets-SW1/DSASW0012367.pdf)
>>
>> Perhaps someone from Freescale can give us more informations.
>>
>> Regards,
>> Sebastien.
> 
> Did someone from Freescale had the time to take a look at this patch and can
> give us more information?
> We still need it to boot the TS4800.

Checking the thread, it looks looks like that there is no progress on
it. Anyway, the patch is just related to ts4800 without any effects to
other boards. I am merging it.

Best regards,
Stefano Babic
Sebastien Bourdelin May 25, 2016, 4 p.m. UTC | #7
Hi Fabio,

On 05/20/2016 05:40 PM, Fabio Estevam wrote:
> Hi Sebastien,
>
> On Fri, May 20, 2016 at 5:13 PM, Sebastien Bourdelin
> <sebastien.bourdelin@savoirfairelinux.com> wrote:
>
>> This issue happen with the SD card, i currently didn't found the time to
>> try with eMMC.
> Ok, we also boot from SD card on the mx51evk and never observed this
> issue there.
>
> What is the MX51 silicon version you have on your board?
It's an MX51 rev 3.0,
if you need more information, feel free to ask.

Regards,
Sebastien.
diff mbox

Patch

diff --git a/include/configs/ts4800.h b/include/configs/ts4800.h
index fcc9d80..5e5e4d3 100644
--- a/include/configs/ts4800.h
+++ b/include/configs/ts4800.h
@@ -63,6 +63,8 @@ 
 #define CONFIG_FSL_ESDHC
 #define CONFIG_SYS_FSL_ESDHC_ADDR	MMC_SDHC1_BASE_ADDR
 
+#define CONFIG_SYS_FSL_ERRATUM_ESDHC_A001
+
 #define CONFIG_MMC
 
 #define CONFIG_CMD_MMC