On Tuesday 03 November 2009 21:36:58 Terry Lv wrote:
> Signed-off-by: Terry Lv <r65...@freescale.com>

your subject has a spelling typo, and generally you should avoid using 
complete sentences in it (i.e. drop the period).

> --- a/drivers/mmc/mmc.c
> +++ b/drivers/mmc/mmc.c
> @@ -88,7 +88,7 @@ mmc_bwrite(int dev_num, ulong start, lbaint_t blkcnt,
>  const void*src) err = mmc_set_blocklen(mmc, mmc->write_bl_len);
> 
>       if (err) {
> -             printf("set write bl len failed\n\r");
> +             puts("set write bl len failed\n\r");
>               return err;
>       }
> 
> @@ -113,7 +113,7 @@ mmc_bwrite(int dev_num, ulong start, lbaint_t blkcnt,
>  const void*src) err = mmc_send_cmd(mmc, &cmd, &data);
> 
>       if (err) {
> -             printf("mmc write failed\n\r");
> +             puts("mmc write failed\n\r");
>               return err;
>       }
> 
> @@ -164,7 +164,7 @@ int mmc_read(struct mmc *mmc, u64 src, uchar *dst, int
>  size) buffer = malloc(blklen);
> 
>       if (!buffer) {
> -             printf("Could not allocate buffer for MMC read!\n");
> +             puts("Could not allocate buffer for MMC read!\n");
>               return -1;
>       }

these changes dont look related to your changelog at all

unrelated, but dont know why the code is doing \n\r ... it should only be 
doing \n ...

> @@ -205,27 +205,56 @@ free_buffer:
> 
>  static ulong mmc_bread(int dev_num, ulong start, lbaint_t blkcnt, void
>  *dst) {
> +     struct mmc_cmd cmd;
> +     struct mmc_data data;
>       int err;
> -     int i;
> +     int stoperr = 0;
>       struct mmc *mmc = find_mmc_device(dev_num);
> +     int blklen;
> 
>       if (!mmc)
> -             return 0;
> +             return -1;
> 
> -     /* We always do full block reads from the card */
> -     err = mmc_set_blocklen(mmc, mmc->read_bl_len);
> +     blklen = mmc->read_bl_len;
> +
> +     err = mmc_set_blocklen(mmc, blklen);
> 
>       if (err) {
> -             return 0;
> +             puts("set read bl len failed\n\r");
> +             return err;
>       }
> 
> -     for (i = start; i < start + blkcnt; i++, dst += mmc->read_bl_len) {
> -             err = mmc_read_block(mmc, dst, i);
> +     if (blkcnt > 1)
> +             cmd.cmdidx = MMC_CMD_READ_MULTIPLE_BLOCK;
> +     else
> +             cmd.cmdidx = MMC_CMD_READ_SINGLE_BLOCK;
> 
> -             if (err) {
> -                     printf("block read failed: %d\n", err);
> -                     return i - start;
> -             }
> +     if (mmc->high_capacity)
> +             cmd.cmdarg = start;
> +     else
> +             cmd.cmdarg = start * blklen;
> +
> +     cmd.resp_type = MMC_RSP_R1;
> +     cmd.flags = 0;
> +
> +     data.dest = dst;
> +     data.blocks = blkcnt;
> +     data.blocksize = blklen;
> +     data.flags = MMC_DATA_READ;
> +
> +     err = mmc_send_cmd(mmc, &cmd, &data);
> +
> +     if (err) {
> +             puts("mmc read failed\n\r");
> +             return err;
> +     }
> +
> +     if (blkcnt > 1) {
> +             cmd.cmdidx = MMC_CMD_STOP_TRANSMISSION;
> +             cmd.cmdarg = 0;
> +             cmd.resp_type = MMC_RSP_R1b;
> +             cmd.flags = 0;
> +             stoperr = mmc_send_cmd(mmc, &cmd, NULL);
>       }
> 
>       return blkcnt;

i imagine the changes do wat you say, but you really should explain in your 
changelog how/why your changes work
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.

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

Reply via email to