> -----Oorspronkelijk bericht-----
> Van: Andy Fleming [mailto:aflem...@gmail.com] 
> Verzonden: donderdag 16 mei 2013 0:15
> Aan: Ruud Commandeur
> CC: U-Boot list; Tom Rini; Mats K?rrman
> Onderwerp: Re: [U-Boot] [PATCH] mmc and fat bug fixes
> 
> 
> 
> 
> On Wed, May 15, 2013 at 9:23 AM, Ruud Commandeur 
> <rcommand...@clb.nl> wrote:
> 
> 
>       This patch fixes a number of mmc and fat-related bugs:
>       
>       > Added a check for blkcnt > 0 in mmc_write_blocks 
> (drivers/mmc.c) to prevent a hangup for further mmc commands.
>       
> 
> 
> 
> You need more information than that. Why is some code 
> requesting 0-byte data commands?
> 

I have discussed this issue in an earlier thread. But I agree that it
would make
sense to add some of this earlier comments here.

> As others mentioned, you need to break up patches so each 
> change is one patch.
> 

Yep :-)

>  
> 
>       Index: drivers/mmc/mmc.c
>       
> ===================================================================
>       --- drivers/mmc/mmc.c   (revision 9)
>       +++ drivers/mmc/mmc.c   (working copy)
>       @@ -282,8 +282,9 @@
>       
>               if (blkcnt > 1)
>                       cmd.cmdidx = MMC_CMD_WRITE_MULTIPLE_BLOCK;
>       -       else
>       +       else if (blkcnt > 0)
>                       cmd.cmdidx = MMC_CMD_WRITE_SINGLE_BLOCK;
>       +       else return 0;          //Called with blkcnt = 0
>       
> 
> 
> 
> Assuming this is necessary, I think it then might be time to 
> reorder this:
> 
> if (!blkcnt) <-- possibly at the very start of the function.
>   return 0;
> 
> if (blkcnt == 1)
>   cmd.cmdidx = MMC_CMD_WRITE_SINGLE_BLOCK;
> else
>   cmd.cmdidx = MMC_CMD_WRITE_MULTIPLE_BLOCK;
> 
> 
> While technically correct, checking >1, then >0 creates an 
> odd dissonance in my mind, and makes me have to think about 
> when that if clause will evaluate to true, and I hate having 
> to think. :)
> 

You're right. That was the reason for adding my (wrong styled) comments.
So I can either reorder his to:

        if (blkcnt == 0)
                return 0;
        else if (blkcnt == 1)
                cmd.cmdidx = MMC_CMD_WRITE_SINGLE_BLOCK;
        else
                cmd.cmdidx = MMC_CMD_WRITE_MULTIPLE_BLOCK;

Or add the test for 0 at the very beginning as you suggested.
Any preference?

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

Reply via email to