Trivial (?) question about nand_command_[lp]()
Boris Brezillon
boris.brezillon at free-electrons.com
Fri Aug 26 02:38:04 PDT 2016
Hi Ricard,
Please Cc the NAND and MTD maintainers when sending NAND related
questions.
On Mon, 22 Aug 2016 13:19:17 +0200
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?
Thanks,
Boris
More information about the linux-mtd
mailing list