Three change suggestions to nand.c and friends.

Bjorn Eriksson mdeans at
Fri Oct 13 11:26:16 EDT 2000

 1) Right now the code needs the moddi3() helper to perform it's checks. I
suggest adding the requirement that {.oobblock} must be a power of two.

 Also, the '(to + len)' part can be rewritten as 'len' since (a+b)%c ->

+++ mtd/nand.c  Fri Oct 13 16:50:37 2000
@@ -30,13 +31,69 @@
 #define set_current_state(x) current->state = (x);

+#define OOBblockMOD(numer, denom) ((numer) & (denom-1))
+#define OOBblockMOD(numer, denom) ((numer) % (denom))

@@ -350,7 +411,7 @@

        /* Do not allow unaligned writes */
-       if ((to % mtd->oobblock) || ((to + len) % mtd->oobblock)) {
+       if (OOBblockMOD(to, mtd->oobblock) || OOBblockMOD(len,
mtd->oobblock)) {
                DEBUG (MTD_DEBUG_LEVEL1,
                        "nand_write_ecc: Unaligned address\n");
                return -EINVAL;

 2) I've also rewritten nand.c changing all 'NAND_CTRL |= this->CLE;' ->
NAND_SET_CMD Different hardware different support code.


 3) I moved nand_flash_ids[] to a new file, nand_ids.h since nand.h is
included in several different places and not all .c-files that #include it
needs nand_flash_ids[] (thus creating dups).

 Opinions, ideas? Shall I commit?


To unsubscribe, send "unsubscribe mtd" to majordomo at

More information about the linux-mtd mailing list