projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
64 bit test now cleans correctly.
[yaffs2.git]
/
yaffs_nand.c
diff --git
a/yaffs_nand.c
b/yaffs_nand.c
index 4c1993bb7d2eed23c54e38ded284c062f93dc29e..fe1219095c520ed21acdf6d9be95196333137f94 100644
(file)
--- a/
yaffs_nand.c
+++ b/
yaffs_nand.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>
*
@@
-35,7
+34,7
@@
int yaffs_rd_chunk_tags_nand(struct yaffs_dev *dev, int nand_chunk,
if (!tags)
tags = &local_tags;
if (!tags)
tags = &local_tags;
- result = dev->
param
.read_chunk_tags_fn(dev, flash_chunk, buffer, tags);
+ result = dev->
tagger
.read_chunk_tags_fn(dev, flash_chunk, buffer, tags);
if (tags && tags->ecc_result > YAFFS_ECC_RESULT_NO_ERROR) {
struct yaffs_block_info *bi;
if (tags && tags->ecc_result > YAFFS_ECC_RESULT_NO_ERROR) {
struct yaffs_block_info *bi;
@@
-68,7
+67,7
@@
int yaffs_wr_chunk_tags_nand(struct yaffs_dev *dev,
"Writing chunk %d tags %d %d",
nand_chunk, tags->obj_id, tags->chunk_id);
"Writing chunk %d tags %d %d",
nand_chunk, tags->obj_id, tags->chunk_id);
- result = dev->
param
.write_chunk_tags_fn(dev, flash_chunk,
+ result = dev->
tagger
.write_chunk_tags_fn(dev, flash_chunk,
buffer, tags);
yaffs_summary_add(dev, tags, nand_chunk);
buffer, tags);
yaffs_summary_add(dev, tags, nand_chunk);
@@
-80,7
+79,11
@@
int yaffs_mark_bad(struct yaffs_dev *dev, int block_no)
{
block_no -= dev->block_offset;
dev->n_bad_markings++;
{
block_no -= dev->block_offset;
dev->n_bad_markings++;
- return dev->param.mark_bad_fn(dev, block_no);
+
+ if (dev->param.disable_bad_block_marking)
+ return YAFFS_OK;
+
+ return dev->tagger.mark_bad_fn(dev, block_no);
}
}
@@
-90,7
+93,7
@@
int yaffs_query_init_block_state(struct yaffs_dev *dev,
u32 *seq_number)
{
block_no -= dev->block_offset;
u32 *seq_number)
{
block_no -= dev->block_offset;
- return dev->
param
.query_block_fn(dev, block_no, state, seq_number);
+ return dev->
tagger
.query_block_fn(dev, block_no, state, seq_number);
}
int yaffs_erase_block(struct yaffs_dev *dev, int block_no)
}
int yaffs_erase_block(struct yaffs_dev *dev, int block_no)
@@
-99,13
+102,20
@@
int yaffs_erase_block(struct yaffs_dev *dev, int block_no)
block_no -= dev->block_offset;
dev->n_erasures++;
block_no -= dev->block_offset;
dev->n_erasures++;
- result = dev->
param
.drv_erase_fn(dev, block_no);
+ result = dev->
drv
.drv_erase_fn(dev, block_no);
return result;
}
int yaffs_init_nand(struct yaffs_dev *dev)
{
return result;
}
int yaffs_init_nand(struct yaffs_dev *dev)
{
- if (dev->param.drv_initialise_fn)
- return dev->param.drv_initialise_fn(dev);
+ if (dev->drv.drv_initialise_fn)
+ return dev->drv.drv_initialise_fn(dev);
+ return YAFFS_OK;
+}
+
+int yaffs_deinit_nand(struct yaffs_dev *dev)
+{
+ if (dev->drv.drv_deinitialise_fn)
+ return dev->drv.drv_deinitialise_fn(dev);
return YAFFS_OK;
}
return YAFFS_OK;
}