projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add CONFIG_YAFFS_NO_YAFFS1 flag to remove yaffs1 code when not needed
[yaffs2.git]
/
yaffs_mtdif_multi.c
diff --git
a/yaffs_mtdif_multi.c
b/yaffs_mtdif_multi.c
index 7ae63c54a903d2032ecc72aba5640d24203a44f5..2d34b017d08e696939347ade4341868351aa8a21 100644
(file)
--- a/
yaffs_mtdif_multi.c
+++ b/
yaffs_mtdif_multi.c
@@
-1,8
+1,7
@@
/*
* YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
*
/*
* YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
*
- * Copyright (C) 2002-2011 Aleph One Ltd.
- * for Toby Churchill Ltd and Brightstar Engineering
+ * Copyright (C) 2002-2018 Aleph One Ltd.
*
* Created by Charles Manning <charles@aleph1.co.uk>
*
*
* Created by Charles Manning <charles@aleph1.co.uk>
*
@@
-18,16
+17,21
@@
#include "linux/mtd/mtd.h"
#include "linux/types.h"
#include "linux/time.h"
#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"
#include "linux/mtd/nand.h"
+#else
+#include "linux/mtd/rawnand.h"
+#endif
#include "linux/kernel.h"
#include "linux/version.h"
#include "linux/types.h"
#include "linux/kernel.h"
#include "linux/version.h"
#include "linux/types.h"
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0))
+#include "uapi/linux/major.h"
+#endif
#include "yaffs_trace.h"
#include "yaffs_guts.h"
#include "yaffs_linux.h"
#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
#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 2, 0))
#define MTD_OPS_AUTO_OOB MTD_OOB_AUTO
#endif
@@
-41,24
+45,25
@@
#define mtd_block_markbad(m, offs) (m)->block_markbad(m, offs)
#endif
#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);
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;
struct erase_info ei;
int retval = 0;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 17, 0))
ei.mtd = mtd;
ei.mtd = mtd;
+#endif
ei.addr = addr;
ei.len = dev->param.total_bytes_per_chunk * dev->param.chunks_per_block;
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;
ei.time = 1000;
ei.retries = 2;
ei.callback = NULL;
ei.priv = (u_long) dev;
+#endif
retval = mtd_erase(mtd, &ei);
retval = mtd_erase(mtd, &ei);
@@
-68,10
+73,9
@@
int nandmtd_erase_block(struct yaffs_dev *dev, int block_no)
return YAFFS_FAIL;
}
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;
{
struct mtd_info *mtd = yaffs_dev_to_mtd(dev);
loff_t addr;
@@
-79,8
+83,8
@@
static int yaffs_mtd_write(struct yaffs_dev *dev, int nand_chunk,
int retval;
yaffs_trace(YAFFS_TRACE_MTD,
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;
if (!data || !data_len) {
data = NULL;
@@
-168,7
+172,7
@@
static int yaffs_mtd_read(struct yaffs_dev *dev, int nand_chunk,
return YAFFS_OK;
}
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);
{
struct mtd_info *mtd = yaffs_dev_to_mtd(dev);
@@
-181,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;
dev->param.chunks_per_block;
addr = ((loff_t) block_no) * block_size;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 17, 0))
ei.mtd = mtd;
ei.mtd = mtd;
+#endif
ei.addr = addr;
ei.len = block_size;
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;
ei.time = 1000;
ei.retries = 2;
ei.callback = NULL;
ei.priv = (u_long) dev;
+#endif
retval = mtd_erase(mtd, &ei);
retval = mtd_erase(mtd, &ei);
@@
-231,7
+239,6
@@
static int yaffs_mtd_deinitialise(struct yaffs_dev *dev)
return YAFFS_OK;
}
return YAFFS_OK;
}
-
void yaffs_mtd_drv_install(struct yaffs_dev *dev)
{
struct yaffs_driver *drv = &dev->drv;
void yaffs_mtd_drv_install(struct yaffs_dev *dev)
{
struct yaffs_driver *drv = &dev->drv;
@@
-245,7
+252,6
@@
void yaffs_mtd_drv_install(struct yaffs_dev *dev)
drv->drv_deinitialise_fn = yaffs_mtd_deinitialise;
}
drv->drv_deinitialise_fn = yaffs_mtd_deinitialise;
}
-
struct mtd_info * yaffs_get_mtd_device(dev_t sdev)
{
struct mtd_info *mtd;
struct mtd_info * yaffs_get_mtd_device(dev_t sdev)
{
struct mtd_info *mtd;
@@
-300,9
+306,8
@@
int yaffs_verify_mtd(struct mtd_info *mtd, int yaffs_version, int inband_tags)
return 0;
}
return 0;
}
-
void yaffs_put_mtd_device(struct mtd_info *mtd)
{
void yaffs_put_mtd_device(struct mtd_info *mtd)
{
- if(mtd)
+ if
(mtd)
put_mtd_device(mtd);
}
put_mtd_device(mtd);
}