Use IS_ERR to validate return value from get_mtd_device()
[yaffs2.git] / yaffs_mtdif_multi.c
index bd63855ad2cea96378c405978744f727c8516337..7ae63c54a903d2032ecc72aba5640d24203a44f5 100644 (file)
@@ -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;