diff options
Diffstat (limited to 'target/linux/generic/patches-3.8/508-yaffs-3.3-use-mtd_-helpers.patch')
| -rw-r--r-- | target/linux/generic/patches-3.8/508-yaffs-3.3-use-mtd_-helpers.patch | 160 | 
1 files changed, 160 insertions, 0 deletions
diff --git a/target/linux/generic/patches-3.8/508-yaffs-3.3-use-mtd_-helpers.patch b/target/linux/generic/patches-3.8/508-yaffs-3.3-use-mtd_-helpers.patch new file mode 100644 index 000000000..65d45a0be --- /dev/null +++ b/target/linux/generic/patches-3.8/508-yaffs-3.3-use-mtd_-helpers.patch @@ -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;  | 
