[U-Boot] [PATCH 2/5] NetStar: Fix NAND

Scott Wood scottwood at freescale.com
Tue Mar 17 20:10:05 CET 2009


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


More information about the U-Boot mailing list