[U-Boot] [PATCH] mmc: update MMC_ERASE argument to match Linux kernel.

Fabio Estevam festevam at gmail.com
Tue Dec 22 10:55:11 CET 2015


Hi Tom and Pantelis,

On Wed, Dec 9, 2015 at 8:55 AM, Hector Palacios
<hector.palacios at digi.com> wrote:
> Hi Eric and Fabio,
>
> On 12/07/2015 03:50 PM, Eric Nelson wrote:
>> Table 41 of the JEDEC standard for eMMC says that bit 31 of
>> the command argument is obsolete when issuing the ERASE
>> command (CMD38) on page 115 of this document:
>>       http://www.jedec.org/sites/default/files/docs/jesd84-B45.pdf
>>
>> The SD Card Association Physical Layer Simplified Specification also
>> makes no mention of the use of bit 31.
>>       https://www.sdcard.org/downloads/pls/part1_410.pdf
>>
>> The Linux kernel distinguishes between secure (bit 31 set) and
>> non-secure erase, and this patch copies the macro names from
>> include/linux/mmc/core.h.
>>
>> Tested-by: Fabio Estevam <fabio.estevam at freescale.com>
>> Signed-off-by: Eric Nelson <eric at nelint.com>
>> ---
>>  drivers/mmc/mmc_write.c | 2 +-
>>  include/mmc.h           | 7 ++++++-
>>  2 files changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/mmc/mmc_write.c b/drivers/mmc/mmc_write.c
>> index 7aea7e9..221bf30 100644
>> --- a/drivers/mmc/mmc_write.c
>> +++ b/drivers/mmc/mmc_write.c
>> @@ -51,7 +51,7 @@ static ulong mmc_erase_t(struct mmc *mmc, ulong start, lbaint_t blkcnt)
>>               goto err_out;
>>
>>       cmd.cmdidx = MMC_CMD_ERASE;
>> -     cmd.cmdarg = SECURE_ERASE;
>> +     cmd.cmdarg = MMC_ERASE_ARG;
>>       cmd.resp_type = MMC_RSP_R1b;
>>
>>       err = mmc_send_cmd(mmc, &cmd, NULL);
>> diff --git a/include/mmc.h b/include/mmc.h
>> index cda9a19..b89962a 100644
>> --- a/include/mmc.h
>> +++ b/include/mmc.h
>> @@ -121,7 +121,12 @@
>>  #define OCR_VOLTAGE_MASK     0x007FFF80
>>  #define OCR_ACCESS_MODE              0x60000000
>>
>> -#define SECURE_ERASE         0x80000000
>> +#define MMC_ERASE_ARG                0x00000000
>> +#define MMC_SECURE_ERASE_ARG 0x80000000
>> +#define MMC_TRIM_ARG         0x00000001
>> +#define MMC_DISCARD_ARG              0x00000003
>> +#define MMC_SECURE_TRIM1_ARG 0x80000001
>> +#define MMC_SECURE_TRIM2_ARG 0x80008000
>>
>>  #define MMC_STATUS_MASK              (~0x0206BF7F)
>>  #define MMC_STATUS_SWITCH_ERROR      (1 << 7)
>>
>
> This fixes the issue on eMMC. Very good job! Thank you.
>
> Tested-by: Hector Palacios <hector.palacios at digi.com>

Could this one be applied to 2016.01?

Thanks


More information about the U-Boot mailing list