Ladislav Michl wrote:
> On Tue, Mar 17, 2009 at 12:17:30PM -0500, Scott Wood wrote:
>> On Mon, Mar 16, 2009 at 11:28:24PM +0100, Ladislav Michl wrote:
>>> Fix NAND support broken during new NAND code merge. Move those few lines of
>>> code to board/netstar/netstar.c
>> What was the breakage?
> 
> Blocks being considered bad during read. I did not make any deeper analysis,
> just copied proven code.

I think I see the issue -- if NAND_CTRL_CHANGE is not set, it will reset 
IO_ADDR_W rather than leaving it alone.  There's also a bug for 64-bit 
platforms if I/O is over 4GiB, but that's not applicable here.

> The code above is identical to that found in linux driver. I'm considering
> useful to keep it in sync for sake of easier future upgrades.
> Sure it could be written as
> if (ctrl & NAND_CLE)
>       mask = 0x02;
> else
>       mask = 0;
> if (ctrl & NAND_ALE)
>       mask |= 0x04;
> but the former is a bit shorter.

I was thinking more along the lines of:

unsigned long mask = 0;

if (ctrl & NAND_CLE)
        mask |= 2;
if (ctrl & NAND_ALE)
        mask |= 4;

...simple and symmetric.  But it doesn't matter overly much; keeping in 
sync with the Linux driver is more important.

ACK, though I would like to see the argument to writeb cast to a pointer 
before passing it (or else you'll get warnings if the accessor ever 
changes from a macro to an inline function).

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

Reply via email to