BUG in nand_base.c

Brad Beveridge bbeveridge at bluewatersys.com
Tue Oct 5 23:47:33 EDT 2004

Hi all, I have been playing with large size nand devices & have found 
what I think is a bug in nand_base.c::nand_command.  I have the latest 
daily snapshot.
Starting at line 546, there is the following code
                        /* One more address cycle for higher density 
devices */
                        if (this->chipsize & 0x0c000000)
                                this->write_byte(mtd, (unsigned char) 
((page_addr >> 16) & 0x0f));
Which will correctly trap the 4th write cycle for 64 & 128MiB parts, but 
not for larger sizes of 256 & 512 MiB.
In my code I have changed the line to read
                        if (this->chipsize & 0xfc000000)

Also, I noticed that for the large page devices (nand_command_lp) a 
proper compare (>) is used instead of a mask - should one of these be 
changed to make both functions consistant?


Bluewater Systems Ltd - ARM Technology Solution Centre

       Brad Beveridge                           Bluewater Systems Ltd
Phone: +64 3 3779127 (Aus +1 800 148 751)       Level 17, 119 Armagh St
Fax:   +64 3 3779135                            PO Box 13889
Email: bbeveridge at bluewatersys.com              Christchurch
Web:   http://www.bluewatersys.com              New Zealand 

More information about the linux-mtd mailing list