X-Git-Url: https://yaffs.net/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_mtdif_multi.c;h=2d34b017d08e696939347ade4341868351aa8a21;hp=5b0e4fed26dfb6b681635e3f4a96ed9eb7152e5b;hb=eb65ac45ecf8279ba5c8657c302a3df32f0af06e;hpb=c3588d722cf93ff57ed931ddf0fa889f38535337 diff --git a/yaffs_mtdif_multi.c b/yaffs_mtdif_multi.c index 5b0e4fe..2d34b01 100644 --- a/yaffs_mtdif_multi.c +++ b/yaffs_mtdif_multi.c @@ -17,7 +17,11 @@ #include "linux/mtd/mtd.h" #include "linux/types.h" #include "linux/time.h" +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 14, 0)) #include "linux/mtd/nand.h" +#else +#include "linux/mtd/rawnand.h" +#endif #include "linux/kernel.h" #include "linux/version.h" #include "linux/types.h" @@ -28,7 +32,6 @@ #include "yaffs_trace.h" #include "yaffs_guts.h" #include "yaffs_linux.h" - #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0)) #define MTD_OPS_AUTO_OOB MTD_OOB_AUTO #endif @@ -42,24 +45,25 @@ #define mtd_block_markbad(m, offs) (m)->block_markbad(m, offs) #endif - - int nandmtd_erase_block(struct yaffs_dev *dev, int block_no) { struct mtd_info *mtd = yaffs_dev_to_mtd(dev); - u32 addr = - ((loff_t) block_no) * dev->param.total_bytes_per_chunk * - dev->param.chunks_per_block; + u32 addr = ((loff_t) block_no) * dev->param.total_bytes_per_chunk * + dev->param.chunks_per_block; struct erase_info ei; int retval = 0; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 17, 0)) ei.mtd = mtd; +#endif ei.addr = addr; ei.len = dev->param.total_bytes_per_chunk * dev->param.chunks_per_block; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 17, 0)) ei.time = 1000; ei.retries = 2; ei.callback = NULL; ei.priv = (u_long) dev; +#endif retval = mtd_erase(mtd, &ei); @@ -69,10 +73,9 @@ int nandmtd_erase_block(struct yaffs_dev *dev, int block_no) return YAFFS_FAIL; } - -static int yaffs_mtd_write(struct yaffs_dev *dev, int nand_chunk, - const u8 *data, int data_len, - const u8 *oob, int oob_len) +static int yaffs_mtd_write(struct yaffs_dev *dev, int nand_chunk, + const u8 *data, int data_len, + const u8 *oob, int oob_len) { struct mtd_info *mtd = yaffs_dev_to_mtd(dev); loff_t addr; @@ -80,8 +83,8 @@ static int yaffs_mtd_write(struct yaffs_dev *dev, int nand_chunk, 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); + "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; @@ -169,7 +172,7 @@ static int yaffs_mtd_read(struct yaffs_dev *dev, int nand_chunk, return YAFFS_OK; } -static int yaffs_mtd_erase(struct yaffs_dev *dev, int block_no) +static int yaffs_mtd_erase(struct yaffs_dev *dev, int block_no) { struct mtd_info *mtd = yaffs_dev_to_mtd(dev); @@ -182,13 +185,17 @@ static int yaffs_mtd_erase(struct yaffs_dev *dev, int block_no) dev->param.chunks_per_block; addr = ((loff_t) block_no) * block_size; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 17, 0)) ei.mtd = mtd; +#endif ei.addr = addr; ei.len = block_size; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 17, 0)) ei.time = 1000; ei.retries = 2; ei.callback = NULL; ei.priv = (u_long) dev; +#endif retval = mtd_erase(mtd, &ei); @@ -232,7 +239,6 @@ static int yaffs_mtd_deinitialise(struct yaffs_dev *dev) return YAFFS_OK; } - void yaffs_mtd_drv_install(struct yaffs_dev *dev) { struct yaffs_driver *drv = &dev->drv; @@ -246,7 +252,6 @@ void yaffs_mtd_drv_install(struct yaffs_dev *dev) drv->drv_deinitialise_fn = yaffs_mtd_deinitialise; } - struct mtd_info * yaffs_get_mtd_device(dev_t sdev) { struct mtd_info *mtd; @@ -301,9 +306,8 @@ int yaffs_verify_mtd(struct mtd_info *mtd, int yaffs_version, int inband_tags) return 0; } - void yaffs_put_mtd_device(struct mtd_info *mtd) { - if(mtd) + if (mtd) put_mtd_device(mtd); }