X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_mtdif_multi.c;h=7ae63c54a903d2032ecc72aba5640d24203a44f5;hp=bd63855ad2cea96378c405978744f727c8516337;hb=aaae578baf773ae9d41415cf7eaec457f6690e57;hpb=fa6e2de81382a23a7a99de6a8832f26c371c9520 diff --git a/yaffs_mtdif_multi.c b/yaffs_mtdif_multi.c index bd63855..7ae63c5 100644 --- a/yaffs_mtdif_multi.c +++ b/yaffs_mtdif_multi.c @@ -78,6 +78,20 @@ static int yaffs_mtd_write(struct yaffs_dev *dev, int nand_chunk, struct mtd_oob_ops ops; int retval; + yaffs_trace(YAFFS_TRACE_MTD, + "yaffs_mtd_write(%p, %d, %p, %d, %p, %d)\n", + dev, nand_chunk, data, data_len, oob, oob_len); + + if (!data || !data_len) { + data = NULL; + data_len = 0; + } + + if (!oob || !oob_len) { + oob = NULL; + oob_len = 0; + } + addr = ((loff_t) nand_chunk) * dev->param.total_bytes_per_chunk; memset(&ops, 0, sizeof(ops)); ops.mode = MTD_OPS_AUTO_OOB; @@ -105,7 +119,7 @@ static int yaffs_mtd_read(struct yaffs_dev *dev, int nand_chunk, struct mtd_oob_ops ops; int retval; - addr = ((loff_t) nand_chunk) * dev->data_bytes_per_chunk; + addr = ((loff_t) nand_chunk) * dev->param.total_bytes_per_chunk; memset(&ops, 0, sizeof(ops)); ops.mode = MTD_OPS_AUTO_OOB; ops.len = (data) ? data_len : 0; @@ -186,7 +200,7 @@ static int yaffs_mtd_erase(struct yaffs_dev *dev, int block_no) static int yaffs_mtd_mark_bad(struct yaffs_dev *dev, int block_no) { struct mtd_info *mtd = yaffs_dev_to_mtd(dev); - int blocksize = dev->param.chunks_per_block * dev->data_bytes_per_chunk; + int blocksize = dev->param.chunks_per_block * dev->param.total_bytes_per_chunk; int retval; yaffs_trace(YAFFS_TRACE_BAD_BLOCKS, "marking block %d bad", block_no); @@ -198,10 +212,10 @@ static int yaffs_mtd_mark_bad(struct yaffs_dev *dev, int block_no) static int yaffs_mtd_check_bad(struct yaffs_dev *dev, int block_no) { struct mtd_info *mtd = yaffs_dev_to_mtd(dev); - int blocksize = dev->param.chunks_per_block * dev->data_bytes_per_chunk; + int blocksize = dev->param.chunks_per_block * dev->param.total_bytes_per_chunk; int retval; - yaffs_trace(YAFFS_TRACE_BAD_BLOCKS, "checking block %d bad", block_no); + yaffs_trace(YAFFS_TRACE_MTD, "checking block %d bad", block_no); retval = mtd_block_isbad(mtd, (loff_t) blocksize * block_no); return (retval) ? YAFFS_FAIL : YAFFS_OK;