generic: use mtd_* helpers in the yaffs code
authorGabor Juhos <juhosg@openwrt.org>
Wed, 31 Oct 2012 21:17:30 +0000 (21:17 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Wed, 31 Oct 2012 21:17:30 +0000 (21:17 +0000)
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
SVN-Revision: 34046

target/linux/generic/patches-3.3/508-yaffs-3.3-use-mtd_-helpers.patch [new file with mode: 0644]
target/linux/generic/patches-3.6/508-yaffs-3.3-use-mtd_-helpers.patch [new file with mode: 0644]

diff --git a/target/linux/generic/patches-3.3/508-yaffs-3.3-use-mtd_-helpers.patch b/target/linux/generic/patches-3.3/508-yaffs-3.3-use-mtd_-helpers.patch
new file mode 100644 (file)
index 0000000..65d45a0
--- /dev/null
@@ -0,0 +1,160 @@
+--- a/fs/yaffs2/yaffs_mtdif1.c
++++ b/fs/yaffs2/yaffs_mtdif1.c
+@@ -133,7 +133,7 @@ int nandmtd1_WriteChunkWithTagsToNAND(ya
+       ops.datbuf = (__u8 *)data;
+       ops.oobbuf = (__u8 *)&pt1;
+-      retval = mtd->write_oob(mtd, addr, &ops);
++      retval = mtd_write_oob(mtd, addr, &ops);
+       if (retval) {
+               T(YAFFS_TRACE_MTD,
+                       (TSTR("write_oob failed, chunk %d, mtd error %d"TENDSTR),
+@@ -194,7 +194,7 @@ int nandmtd1_ReadChunkWithTagsFromNAND(y
+       /* Read page and oob using MTD.
+        * Check status and determine ECC result.
+        */
+-      retval = mtd->read_oob(mtd, addr, &ops);
++      retval = mtd_read_oob(mtd, addr, &ops);
+       if (retval) {
+               T(YAFFS_TRACE_MTD,
+                       (TSTR("read_oob failed, chunk %d, mtd error %d"TENDSTR),
+@@ -218,7 +218,7 @@ int nandmtd1_ReadChunkWithTagsFromNAND(y
+               /* fall into... */
+       default:
+               rettags(etags, YAFFS_ECC_RESULT_UNFIXED, 0);
+-              etags->block_bad = (mtd->block_isbad)(mtd, addr);
++              etags->block_bad = mtd_block_isbad(mtd, addr);
+               return YAFFS_FAIL;
+       }
+@@ -286,7 +286,7 @@ int nandmtd1_MarkNANDBlockBad(struct yaf
+       T(YAFFS_TRACE_BAD_BLOCKS,(TSTR("marking block %d bad"TENDSTR), block_no));
+-      retval = mtd->block_markbad(mtd, (loff_t)blocksize * block_no);
++      retval = mtd_block_markbad(mtd, (loff_t)blocksize * block_no);
+       return (retval) ? YAFFS_FAIL : YAFFS_OK;
+ }
+@@ -336,7 +336,7 @@ int nandmtd1_QueryNANDBlock(struct yaffs
+               return YAFFS_FAIL;
+       retval = nandmtd1_ReadChunkWithTagsFromNAND(dev, chunkNo, NULL, &etags);
+-      etags.block_bad = (mtd->block_isbad)(mtd, addr);
++      etags.block_bad = mtd_block_isbad(mtd, addr);
+       if (etags.block_bad) {
+               T(YAFFS_TRACE_BAD_BLOCKS,
+                       (TSTR("block %d is marked bad"TENDSTR), block_no));
+--- a/fs/yaffs2/yaffs_vfs_glue.c
++++ b/fs/yaffs2/yaffs_vfs_glue.c
+@@ -2607,8 +2607,8 @@ static void yaffs_MTDPutSuper(struct sup
+ {
+       struct mtd_info *mtd = yaffs_dev_to_mtd(yaffs_SuperToDevice(sb));
+-      if (mtd->sync)
+-              mtd->sync(mtd);
++      if (mtd)
++              mtd_sync(mtd);
+       put_mtd_device(mtd);
+ }
+--- a/fs/yaffs2/yaffs_mtdif2.c
++++ b/fs/yaffs2/yaffs_mtdif2.c
+@@ -77,7 +77,7 @@ int nandmtd2_WriteChunkWithTagsToNAND(ya
+       ops.ooboffs = 0;
+       ops.datbuf = (__u8 *)data;
+       ops.oobbuf = (dev->param.inband_tags) ? NULL : packed_tags_ptr;
+-      retval = mtd->write_oob(mtd, addr, &ops);
++      retval = mtd_write_oob(mtd, addr, &ops);
+ #else
+       if (!dev->param.inband_tags) {
+@@ -133,7 +133,7 @@ int nandmtd2_ReadChunkWithTagsFromNAND(y
+ #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 17))
+       if (dev->param.inband_tags || (data && !tags))
+-              retval = mtd->read(mtd, addr, dev->param.total_bytes_per_chunk,
++              retval = mtd_read(mtd, addr, dev->param.total_bytes_per_chunk,
+                               &dummy, data);
+       else if (tags) {
+               ops.mode = MTD_OPS_AUTO_OOB;
+@@ -142,7 +142,7 @@ int nandmtd2_ReadChunkWithTagsFromNAND(y
+               ops.ooboffs = 0;
+               ops.datbuf = data;
+               ops.oobbuf = yaffs_dev_to_lc(dev)->spareBuffer;
+-              retval = mtd->read_oob(mtd, addr, &ops);
++              retval = mtd_read_oob(mtd, addr, &ops);
+       }
+ #else
+       if (!dev->param.inband_tags && data && tags) {
+@@ -201,7 +201,7 @@ int nandmtd2_MarkNANDBlockBad(struct yaf
+         (TSTR("nandmtd2_MarkNANDBlockBad %d" TENDSTR), block_no));
+       retval =
+-          mtd->block_markbad(mtd,
++          mtd_block_markbad(mtd,
+                              block_no * dev->param.chunks_per_block *
+                              dev->param.total_bytes_per_chunk);
+@@ -221,7 +221,7 @@ int nandmtd2_QueryNANDBlock(struct yaffs
+       T(YAFFS_TRACE_MTD,
+         (TSTR("nandmtd2_QueryNANDBlock %d" TENDSTR), block_no));
+       retval =
+-          mtd->block_isbad(mtd,
++          mtd_block_isbad(mtd,
+                            block_no * dev->param.chunks_per_block *
+                            dev->param.total_bytes_per_chunk);
+--- a/fs/yaffs2/yaffs_mtdif.h
++++ b/fs/yaffs2/yaffs_mtdif.h
+@@ -31,4 +31,39 @@ int nandmtd_InitialiseNAND(yaffs_dev_t *
+ #define MTD_OPS_AUTO_OOB      MTD_OOB_AUTO
+ #endif
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0))
++static inline int mtd_erase(struct mdt_info *mtd, struct erase_info *ei)
++{
++      return mtd->erase(mtd, ei);
++}
++
++static inline int mtd_block_markbad(struct mtd_info *mtd, loff_t ofs)
++{
++      return mtd->block_mark_bad(mtd, ofs);
++}
++
++static inline int mtd_block_isbad(struct mtd_info *mtd, loff_t ofs)
++{
++      return mtd->block_is_bad(mtd, ofs);
++}
++
++static inline int mtd_read_oob(struct mtd_info *mtd, loff_t from,
++                             struct mtd_oob_ops *ops)
++{
++      return mtd->read_oob(mtd, from, ops);
++}
++
++static inline int mtd_write_oob(struct mtd_info *mtd, loff_t to,
++                              struct mtd_oob_ops *ops)
++{
++      return mtd->write_oob(mtd, to, ops);
++}
++
++static inline void mtd_sync(struct mtd_info *mtd)
++{
++      if (mtd->sync)
++              mtd->sync(mtd);
++}
++#endif
++
+ #endif
+--- a/fs/yaffs2/yaffs_mtdif.c
++++ b/fs/yaffs2/yaffs_mtdif.c
+@@ -41,7 +41,7 @@ int nandmtd_EraseBlockInNAND(yaffs_dev_t
+       ei.callback = NULL;
+       ei.priv = (u_long) dev;
+-      retval = mtd->erase(mtd, &ei);
++      retval = mtd_erase(mtd, &ei);
+       if (retval == 0)
+               return YAFFS_OK;
diff --git a/target/linux/generic/patches-3.6/508-yaffs-3.3-use-mtd_-helpers.patch b/target/linux/generic/patches-3.6/508-yaffs-3.3-use-mtd_-helpers.patch
new file mode 100644 (file)
index 0000000..65d45a0
--- /dev/null
@@ -0,0 +1,160 @@
+--- a/fs/yaffs2/yaffs_mtdif1.c
++++ b/fs/yaffs2/yaffs_mtdif1.c
+@@ -133,7 +133,7 @@ int nandmtd1_WriteChunkWithTagsToNAND(ya
+       ops.datbuf = (__u8 *)data;
+       ops.oobbuf = (__u8 *)&pt1;
+-      retval = mtd->write_oob(mtd, addr, &ops);
++      retval = mtd_write_oob(mtd, addr, &ops);
+       if (retval) {
+               T(YAFFS_TRACE_MTD,
+                       (TSTR("write_oob failed, chunk %d, mtd error %d"TENDSTR),
+@@ -194,7 +194,7 @@ int nandmtd1_ReadChunkWithTagsFromNAND(y
+       /* Read page and oob using MTD.
+        * Check status and determine ECC result.
+        */
+-      retval = mtd->read_oob(mtd, addr, &ops);
++      retval = mtd_read_oob(mtd, addr, &ops);
+       if (retval) {
+               T(YAFFS_TRACE_MTD,
+                       (TSTR("read_oob failed, chunk %d, mtd error %d"TENDSTR),
+@@ -218,7 +218,7 @@ int nandmtd1_ReadChunkWithTagsFromNAND(y
+               /* fall into... */
+       default:
+               rettags(etags, YAFFS_ECC_RESULT_UNFIXED, 0);
+-              etags->block_bad = (mtd->block_isbad)(mtd, addr);
++              etags->block_bad = mtd_block_isbad(mtd, addr);
+               return YAFFS_FAIL;
+       }
+@@ -286,7 +286,7 @@ int nandmtd1_MarkNANDBlockBad(struct yaf
+       T(YAFFS_TRACE_BAD_BLOCKS,(TSTR("marking block %d bad"TENDSTR), block_no));
+-      retval = mtd->block_markbad(mtd, (loff_t)blocksize * block_no);
++      retval = mtd_block_markbad(mtd, (loff_t)blocksize * block_no);
+       return (retval) ? YAFFS_FAIL : YAFFS_OK;
+ }
+@@ -336,7 +336,7 @@ int nandmtd1_QueryNANDBlock(struct yaffs
+               return YAFFS_FAIL;
+       retval = nandmtd1_ReadChunkWithTagsFromNAND(dev, chunkNo, NULL, &etags);
+-      etags.block_bad = (mtd->block_isbad)(mtd, addr);
++      etags.block_bad = mtd_block_isbad(mtd, addr);
+       if (etags.block_bad) {
+               T(YAFFS_TRACE_BAD_BLOCKS,
+                       (TSTR("block %d is marked bad"TENDSTR), block_no));
+--- a/fs/yaffs2/yaffs_vfs_glue.c
++++ b/fs/yaffs2/yaffs_vfs_glue.c
+@@ -2607,8 +2607,8 @@ static void yaffs_MTDPutSuper(struct sup
+ {
+       struct mtd_info *mtd = yaffs_dev_to_mtd(yaffs_SuperToDevice(sb));
+-      if (mtd->sync)
+-              mtd->sync(mtd);
++      if (mtd)
++              mtd_sync(mtd);
+       put_mtd_device(mtd);
+ }
+--- a/fs/yaffs2/yaffs_mtdif2.c
++++ b/fs/yaffs2/yaffs_mtdif2.c
+@@ -77,7 +77,7 @@ int nandmtd2_WriteChunkWithTagsToNAND(ya
+       ops.ooboffs = 0;
+       ops.datbuf = (__u8 *)data;
+       ops.oobbuf = (dev->param.inband_tags) ? NULL : packed_tags_ptr;
+-      retval = mtd->write_oob(mtd, addr, &ops);
++      retval = mtd_write_oob(mtd, addr, &ops);
+ #else
+       if (!dev->param.inband_tags) {
+@@ -133,7 +133,7 @@ int nandmtd2_ReadChunkWithTagsFromNAND(y
+ #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 17))
+       if (dev->param.inband_tags || (data && !tags))
+-              retval = mtd->read(mtd, addr, dev->param.total_bytes_per_chunk,
++              retval = mtd_read(mtd, addr, dev->param.total_bytes_per_chunk,
+                               &dummy, data);
+       else if (tags) {
+               ops.mode = MTD_OPS_AUTO_OOB;
+@@ -142,7 +142,7 @@ int nandmtd2_ReadChunkWithTagsFromNAND(y
+               ops.ooboffs = 0;
+               ops.datbuf = data;
+               ops.oobbuf = yaffs_dev_to_lc(dev)->spareBuffer;
+-              retval = mtd->read_oob(mtd, addr, &ops);
++              retval = mtd_read_oob(mtd, addr, &ops);
+       }
+ #else
+       if (!dev->param.inband_tags && data && tags) {
+@@ -201,7 +201,7 @@ int nandmtd2_MarkNANDBlockBad(struct yaf
+         (TSTR("nandmtd2_MarkNANDBlockBad %d" TENDSTR), block_no));
+       retval =
+-          mtd->block_markbad(mtd,
++          mtd_block_markbad(mtd,
+                              block_no * dev->param.chunks_per_block *
+                              dev->param.total_bytes_per_chunk);
+@@ -221,7 +221,7 @@ int nandmtd2_QueryNANDBlock(struct yaffs
+       T(YAFFS_TRACE_MTD,
+         (TSTR("nandmtd2_QueryNANDBlock %d" TENDSTR), block_no));
+       retval =
+-          mtd->block_isbad(mtd,
++          mtd_block_isbad(mtd,
+                            block_no * dev->param.chunks_per_block *
+                            dev->param.total_bytes_per_chunk);
+--- a/fs/yaffs2/yaffs_mtdif.h
++++ b/fs/yaffs2/yaffs_mtdif.h
+@@ -31,4 +31,39 @@ int nandmtd_InitialiseNAND(yaffs_dev_t *
+ #define MTD_OPS_AUTO_OOB      MTD_OOB_AUTO
+ #endif
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0))
++static inline int mtd_erase(struct mdt_info *mtd, struct erase_info *ei)
++{
++      return mtd->erase(mtd, ei);
++}
++
++static inline int mtd_block_markbad(struct mtd_info *mtd, loff_t ofs)
++{
++      return mtd->block_mark_bad(mtd, ofs);
++}
++
++static inline int mtd_block_isbad(struct mtd_info *mtd, loff_t ofs)
++{
++      return mtd->block_is_bad(mtd, ofs);
++}
++
++static inline int mtd_read_oob(struct mtd_info *mtd, loff_t from,
++                             struct mtd_oob_ops *ops)
++{
++      return mtd->read_oob(mtd, from, ops);
++}
++
++static inline int mtd_write_oob(struct mtd_info *mtd, loff_t to,
++                              struct mtd_oob_ops *ops)
++{
++      return mtd->write_oob(mtd, to, ops);
++}
++
++static inline void mtd_sync(struct mtd_info *mtd)
++{
++      if (mtd->sync)
++              mtd->sync(mtd);
++}
++#endif
++
+ #endif
+--- a/fs/yaffs2/yaffs_mtdif.c
++++ b/fs/yaffs2/yaffs_mtdif.c
+@@ -41,7 +41,7 @@ int nandmtd_EraseBlockInNAND(yaffs_dev_t
+       ei.callback = NULL;
+       ei.priv = (u_long) dev;
+-      retval = mtd->erase(mtd, &ei);
++      retval = mtd_erase(mtd, &ei);
+       if (retval == 0)
+               return YAFFS_OK;