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