Three change suggestions to nand.c and friends.

Bjorn Eriksson mdeans at algonet.se
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 ->
(a%c+b%c)%c.

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

+#ifdef CONFIG_MTD_OOBBLOCK_POWOf2
+#define OOBblockMOD(numer, denom) ((numer) & (denom-1))
+#else
+#define OOBblockMOD(numer, denom) ((numer) % (denom))
+#endif

@@ -350,7 +411,7 @@
 #endif

        /* 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 et.al. 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?


//Björnen.




To unsubscribe, send "unsubscribe mtd" to majordomo at infradead.org



More information about the linux-mtd mailing list