Trivial (?) question about nand_command_[lp]()

Ricard Wanderlof ricard.wanderlof at axis.com
Fri Aug 26 08:34:35 PDT 2016


On Fri, 26 Aug 2016, Boris Brezillon wrote:

> Please Cc the NAND and MTD maintainers when sending NAND related
> questions.

Ok, will do.

> Ricard Wanderlof <ricard.wanderlof at axis.com> wrote:
> 
> > I'm having a close look at nand_base.c:nand_command(), and there's 
> > something I can't get my head around: According to the code, when the 
> > command to be sent is NAND_CMD_SEQIN (0x80), used for programming a page, 
> > first a read command (READ0, READ1 or READOOB depending on the column 
> > address) is sent to the flash, followed by the SEQIN proper. Are there 
> > flashes which require a read command to be sent (with no 
> > address or data bytes) immediately before Page Program?
> 
> No, it's probably a bug. Should be
> 
> 	if (command == NAND_CMD_RNDOUT) {
> 		...
> 	} else {
> 		chip->cmd_ctrl(mtd, command, ctrl);
> 	}
> 
> instead of
> 
> 	if (command == NAND_CMD_SEQIN) {
> 		...
> 	}
> 	chip->cmd_ctrl(mtd, command, ctrl);
> 
> Not sure we have a lot of people testing this code (it's only used
> when interacting with really old NANDs).
> 
> > 
> > A related issue is a difference versus nand_command_lp(). In the latter, 
> > NAND_NCE is set for every command towards the flash, which makes sense, as 
> > the chip enable should be active throughout the whole sequence. However, 
> > in nand_command(), NAND_NCE is only set when neither NAND_ALE nor NAND_CLE 
> > are set. Is this an older convention in the code that CE is implied for 
> > small-page flashes when ALE or CLE is set, but not for the large-page 
> > case?
> 
> No, again, it's probably a bug.
> 
> Feel free to send fixes. BTW, do you have a way to test the changes?

I might be able to find some combination of hardware platform here which 
has a byte-banged NAND interface, on which we still support recent 
kernels, and a board which has a socket into which I can put a 256 Mbit 
flash or similar. I know I have flash chips lying around.

Right now I'm back on the Evatronix driver, so I'll see if I can have a 
look at the above when that's finished.

/Ricard
-- 
Ricard Wolf Wanderlöf                           ricardw(at)axis.com
Axis Communications AB, Lund, Sweden            www.axis.com
Phone +46 46 272 2016                           Fax +46 46 13 61 30



More information about the linux-mtd mailing list