Patchwork [U-Boot,v0] mmc: forced sector mode when accessing OCR register

login
register
mail settings
Submitter Davide Bonfanti
Date Nov. 29, 2012, 11:05 a.m.
Message ID <20121129110532.GA19980@BT22081>
Download mbox | patch
Permalink /patch/202708/
State Rejected, archived
Delegated to: Andy Fleming
Headers show

Comments

Davide Bonfanti - Nov. 29, 2012, 11:05 a.m.
Some eMMC require this setting to work properly.
Tested on:
 - Toshiba THGBM2G8D8FBAIB (the one giving the problem)
 - Toshiba THGBM4G4D1HBAR
 - Micron MTFC4GMVEA
 - Hynix H26M64002BNR
 - SanDisk SDIN5E1-32G


Signed-off-by: Davide Bonfanti <davide.bonfanti@bticino.it>
---
 drivers/mmc/mmc.c |    3 ++-
 include/mmc.h     |    1 +
 2 files changed, 3 insertions(+), 1 deletion(-)
Jae hoon Chung - Nov. 29, 2012, 3:10 p.m.
Hi,

i didn't understand why need to set by force?

Best Regards,
Jaehoon Chung

2012/11/29 Davide Bonfanti <davide.bonfanti@bticino.it>:
> Some eMMC require this setting to work properly.
> Tested on:
>  - Toshiba THGBM2G8D8FBAIB (the one giving the problem)
>  - Toshiba THGBM4G4D1HBAR
>  - Micron MTFC4GMVEA
>  - Hynix H26M64002BNR
>  - SanDisk SDIN5E1-32G
>
>
> Signed-off-by: Davide Bonfanti <davide.bonfanti@bticino.it>
> ---
>  drivers/mmc/mmc.c |    3 ++-
>  include/mmc.h     |    1 +
>  2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index 5ffd8c5..cf66811 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -530,7 +530,8 @@ static int mmc_send_op_cond(struct mmc *mmc)
>    cmd.cmdarg = (mmc_host_is_spi(mmc) ? 0 :
>      (mmc->voltages &
>      (cmd.response[0] & OCR_VOLTAGE_MASK)) |
> -    (cmd.response[0] & OCR_ACCESS_MODE));
> +    (cmd.response[0] & OCR_ACCESS_MODE)) |
> +    OCR_ACCESS_SECTOR_MODE;
>
>    if (mmc->host_caps & MMC_MODE_HC)
>     cmd.cmdarg |= OCR_HCS;
> diff --git a/include/mmc.h b/include/mmc.h
> index a13e2bd..f1314d8 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -108,6 +108,7 @@
>  #define OCR_HCS   0x40000000
>  #define OCR_VOLTAGE_MASK 0x007FFF80
>  #define OCR_ACCESS_MODE  0x60000000
> +#define OCR_ACCESS_SECTOR_MODE  (1 << 30)
>
>  #define SECURE_ERASE  0x80000000
>
> --
> 1.7.9.5
>
>
>
> Ce message, ainsi que tous les fichiers joints à ce message,
> peuvent contenir des informations sensibles et/ ou confidentielles
> ne devant pas être divulguées. Si vous n'êtes pas le destinataire
> de ce message (ou que vous recevez ce message par erreur), nous
> vous remercions de le notifier immédiatement à son expéditeur, et
> de détruire ce message. Toute copie, divulgation, modification,
> utilisation ou diffusion, non autorisée, directe ou indirecte, de
> tout ou partie de ce message, est strictement interdite.
>
> This e-mail, and any document attached hereby, may contain
> confidential and/or privileged information. If you are not the
> intended recipient (or have received this e-mail in error) please
> notify the sender immediately and destroy this e-mail. Any
> unauthorized, direct or indirect, copying, disclosure, distribution
> or other use of the material or parts thereof is strictly
> forbidden.
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Davide Bonfanti - Nov. 29, 2012, 4:13 p.m.
It seems to me a bug of the specific mmc like if that it declares byte-mode, but supports only sector mode.

Sincerely I don't know if it is a good idea to accept a workaround like this, but this is the only way I found to have my board working.

Best Regards,
Davide Bonfanti

-----Jae hoon Chung <jh80.chung@gmail.com> ha scritto: -----Per: Davide Bonfanti <davide.bonfanti@bticino.it>
Da: Jae hoon Chung <jh80.chung@gmail.com>
Data: 29/11/2012 16:10
Cc: u-boot@lists.denx.de, afleming@gmail.com, Jaehoon Chung <jh80.chung@samsung.com>
Oggetto: Re: [U-Boot] [PATCH v0] mmc: forced sector mode when accessing OCR register

Hi,

i didn't understand why need to set by force?

Best Regards,
Jaehoon Chung

2012/11/29 Davide Bonfanti <davide.bonfanti@bticino.it>:
> Some eMMC require this setting to work properly.
> Tested on:
>  - Toshiba THGBM2G8D8FBAIB (the one giving the problem)
>  - Toshiba THGBM4G4D1HBAR
>  - Micron MTFC4GMVEA
>  - Hynix H26M64002BNR
>  - SanDisk SDIN5E1-32G
>
>
> Signed-off-by: Davide Bonfanti <davide.bonfanti@bticino.it>
> ---
>  drivers/mmc/mmc.c |    3 ++-
>  include/mmc.h     |    1 +
>  2 files changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
> index 5ffd8c5..cf66811 100644
> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -530,7 +530,8 @@ static int mmc_send_op_cond(struct mmc *mmc)
>    cmd.cmdarg = (mmc_host_is_spi(mmc) ? 0 :
>      (mmc->voltages &
>      (cmd.response[0] & OCR_VOLTAGE_MASK)) |
> -    (cmd.response[0] & OCR_ACCESS_MODE));
> +    (cmd.response[0] & OCR_ACCESS_MODE)) |
> +    OCR_ACCESS_SECTOR_MODE;
>
>    if (mmc->host_caps & MMC_MODE_HC)
>     cmd.cmdarg |= OCR_HCS;
> diff --git a/include/mmc.h b/include/mmc.h
> index a13e2bd..f1314d8 100644
> --- a/include/mmc.h
> +++ b/include/mmc.h
> @@ -108,6 +108,7 @@
>  #define OCR_HCS   0x40000000
>  #define OCR_VOLTAGE_MASK 0x007FFF80
>  #define OCR_ACCESS_MODE  0x60000000
> +#define OCR_ACCESS_SECTOR_MODE  (1 << 30)
>
>  #define SECURE_ERASE  0x80000000
>
> --
> 1.7.9.5
>
>
>
> Ce message, ainsi que tous les fichiers joints à ce message,
> peuvent contenir des informations sensibles et/ ou confidentielles
> ne devant pas être divulguées. Si vous n'êtes pas le destinataire
> de ce message (ou que vous recevez ce message par erreur), nous
> vous remercions de le notifier immédiatement à son expéditeur, et
> de détruire ce message. Toute copie, divulgation, modification,
> utilisation ou diffusion, non autorisée, directe ou indirecte, de
> tout ou partie de ce message, est strictement interdite.
>
> This e-mail, and any document attached hereby, may contain
> confidential and/or privileged information. If you are not the
> intended recipient (or have received this e-mail in error) please
> notify the sender immediately and destroy this e-mail. Any
> unauthorized, direct or indirect, copying, disclosure, distribution
> or other use of the material or parts thereof is strictly
> forbidden.
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot

Patch

diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index 5ffd8c5..cf66811 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -530,7 +530,8 @@  static int mmc_send_op_cond(struct mmc *mmc)
   cmd.cmdarg = (mmc_host_is_spi(mmc) ? 0 :
     (mmc->voltages &
     (cmd.response[0] & OCR_VOLTAGE_MASK)) |
-    (cmd.response[0] & OCR_ACCESS_MODE));
+    (cmd.response[0] & OCR_ACCESS_MODE)) |
+    OCR_ACCESS_SECTOR_MODE;
 
   if (mmc->host_caps & MMC_MODE_HC)
    cmd.cmdarg |= OCR_HCS;
diff --git a/include/mmc.h b/include/mmc.h
index a13e2bd..f1314d8 100644
--- a/include/mmc.h
+++ b/include/mmc.h
@@ -108,6 +108,7 @@ 
 #define OCR_HCS   0x40000000
 #define OCR_VOLTAGE_MASK 0x007FFF80
 #define OCR_ACCESS_MODE  0x60000000
+#define OCR_ACCESS_SECTOR_MODE  (1 << 30)
 
 #define SECURE_ERASE  0x80000000