Hi Peng,

On 08/23/2016 05:12 PM, Peng Fan wrote:
> To SD, there is no erase group, then the value erase_grp_size
> will be default 1. When erasing SD blocks, the blocks will be
> erased one by one, which is time consuming.
> 
> We use AU_SIZE as a group to speed up the erasing.
> 
> Erasing 4MB with a SD2.0 Card with AU_SIZE 4MB.
> `time mmc erase 0x100000 0x2000`
> time: 44.856 seconds (before optimization)
> time: 0.335 seconds  (after optimization)
> 
> Signed-off-by: Peng Fan <peng....@nxp.com>
> Cc: Jaehoon Chung <jh80.ch...@samsung.com>
> Cc: Simon Glass <s...@chromium.org>
> Cc: Bin Meng <bmeng...@gmail.com>
> Cc: Stefan Wahren <stefan.wah...@i2se.com>
> Cc: Clemens Gruber <clemens.gru...@pqgruber.com>
> Cc: Kever Yang <kever.y...@rock-chips.com>
> Cc: Eric Nelson <e...@nelint.com>
> Cc: Stephen Warren <swar...@nvidia.com>

Applied on u-boot-mmc.
Thanks!

Best Regards,
Jaehoon Chung

> ---
> 
> V3:
>  No change.
> 
> V2:
>  Add test results.
> 
>  drivers/mmc/mmc_write.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mmc/mmc_write.c b/drivers/mmc/mmc_write.c
> index 0f8b5c7..2289640 100644
> --- a/drivers/mmc/mmc_write.c
> +++ b/drivers/mmc/mmc_write.c
> @@ -100,8 +100,13 @@ unsigned long mmc_berase(struct blk_desc *block_dev, 
> lbaint_t start,
>                      & ~(mmc->erase_grp_size - 1)) - 1);
>  
>       while (blk < blkcnt) {
> -             blk_r = ((blkcnt - blk) > mmc->erase_grp_size) ?
> -                     mmc->erase_grp_size : (blkcnt - blk);
> +             if (IS_SD(mmc) && mmc->ssr.au) {
> +                     blk_r = ((blkcnt - blk) > mmc->ssr.au) ?
> +                             mmc->ssr.au : (blkcnt - blk);
> +             } else {
> +                     blk_r = ((blkcnt - blk) > mmc->erase_grp_size) ?
> +                             mmc->erase_grp_size : (blkcnt - blk);
> +             }
>               err = mmc_erase_t(mmc, start + blk, blk_r);
>               if (err)
>                       break;
> 

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to