/*
* YAFFS: Yet another FFS. A NAND-flash specific file system.
*
- * Copyright (C) 2002 Aleph One Ltd.
+ * Copyright (C) 2002-2011 Aleph One Ltd.
* for Toby Churchill Ltd and Brightstar Engineering
*
* Created by Charles Manning <charles@aleph1.co.uk>
#include "yaffs_packedtags2.h"
-void nandmtd2_pt2buf(yaffs_Device *dev, yaffs_PackedTags2 *pt, int is_raw)
+void nandmtd2_pt2buf(struct yaffs_dev *dev, yaffs_PackedTags2 *pt, int is_raw)
{
struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
- __u8 *ptab = (__u8 *)pt; /* packed tags as bytes */
+ u8 *ptab = (u8 *)pt; /* packed tags as bytes */
int i, j = 0, k, n;
if (n == 0) {
T(YAFFS_TRACE_ERROR, (TSTR("No OOB space for tags" TENDSTR)));
- YBUG();
+ BUG();
}
for (i = 0; i < sizeof(yaffs_PackedTags2); i++) {
n = mtd->oobinfo.oobfree[j][1];
if (n == 0) {
T(YAFFS_TRACE_ERROR, (TSTR("No OOB space for tags" TENDSTR)));
- YBUG();
+ BUG();
}
}
dev->spareBuffer[k] = ptab[i];
}
-void nandmtd2_buf2pt(yaffs_Device *dev, yaffs_PackedTags2 *pt, int is_raw)
+void nandmtd2_buf2pt(struct yaffs_dev *dev, yaffs_PackedTags2 *pt, int is_raw)
{
struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
int i, j = 0, k, n;
- __u8 *ptab = (__u8 *)pt; /* packed tags as bytes */
+ u8 *ptab = (u8 *)pt; /* packed tags as bytes */
if (!is_raw) {
if (n == 0) {
T(YAFFS_TRACE_ERROR, (TSTR("No space in OOB for tags" TENDSTR)));
- YBUG();
+ BUG();
}
for (i = 0; i < sizeof(yaffs_PackedTags2); i++) {
n = mtd->oobinfo.oobfree[j][1];
if (n == 0) {
T(YAFFS_TRACE_ERROR, (TSTR("No space in OOB for tags" TENDSTR)));
- YBUG();
+ BUG();
}
}
ptab[i] = dev->spareBuffer[k];
}
-int nandmtd2_WriteChunkWithTagsToNAND(yaffs_Device * dev, int chunkInNAND,
- const __u8 * data,
- const yaffs_ExtendedTags * tags)
+int nandmtd2_WriteChunkWithTagsToNAND(struct yaffs_dev * dev, int nand_chunk,
+ const u8 * data,
+ const struct yaffs_ext_tags * tags)
{
struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
size_t dummy;
int retval = 0;
- loff_t addr = ((loff_t) chunkInNAND) * dev->nBytesPerChunk;
+ loff_t addr = ((loff_t) nand_chunk) * dev->n_bytesPerChunk;
yaffs_PackedTags2 pt;
T(YAFFS_TRACE_MTD,
(TSTR
("nandmtd2_WriteChunkWithTagsToNAND chunk %d data %p tags %p"
- TENDSTR), chunkInNAND, data, tags));
+ TENDSTR), nand_chunk, data, tags));
if (tags) {
yaffs_PackTags2(&pt, tags);
if (data && tags) {
nandmtd2_pt2buf(dev, &pt, 0);
retval =
- mtd->write_ecc(mtd, addr, dev->nBytesPerChunk,
+ mtd->write_ecc(mtd, addr, dev->n_bytesPerChunk,
&dummy, data, dev->spareBuffer,
NULL);
T(YAFFS_TRACE_ALWAYS,
(TSTR
("Write chunk with null tags or data!" TENDSTR)));
- YBUG();
+ BUG();
}
if (retval == 0)
return YAFFS_FAIL;
}
-int nandmtd2_ReadChunkWithTagsFromNAND(yaffs_Device * dev, int chunkInNAND,
- __u8 * data, yaffs_ExtendedTags * tags)
+int nandmtd2_ReadChunkWithTagsFromNAND(struct yaffs_dev * dev, int nand_chunk,
+ u8 * data, struct yaffs_ext_tags * tags)
{
struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
size_t dummy;
int retval = 0;
- loff_t addr = ((loff_t) chunkInNAND) * dev->nBytesPerChunk;
+ loff_t addr = ((loff_t) nand_chunk) * dev->n_bytesPerChunk;
yaffs_PackedTags2 pt;
T(YAFFS_TRACE_MTD,
(TSTR
("nandmtd2_ReadChunkWithTagsToNAND chunk %d data %p tags %p"
- TENDSTR), chunkInNAND, data, tags));
+ TENDSTR), nand_chunk, data, tags));
if (0 && data && tags) {
retval =
- mtd->read_ecc(mtd, addr, dev->nBytesPerChunk,
+ mtd->read_ecc(mtd, addr, dev->n_bytesPerChunk,
&dummy, data, dev->spareBuffer,
NULL);
nandmtd2_buf2pt(dev, &pt, 0);
} else {
if (data)
retval =
- mtd->read(mtd, addr, dev->nBytesPerChunk, &dummy,
+ mtd->read(mtd, addr, dev->n_bytesPerChunk, &dummy,
data);
if (tags) {
retval =
return YAFFS_FAIL;
}
-int nandmtd2_MarkNANDBlockBad(struct yaffs_DeviceStruct *dev, int blockNo)
+int nandmtd2_MarkNANDBlockBad(struct yaffs_dev *dev, int block_no)
{
struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
int retval;
T(YAFFS_TRACE_MTD,
- (TSTR("nandmtd2_MarkNANDBlockBad %d" TENDSTR), blockNo));
+ (TSTR("nandmtd2_MarkNANDBlockBad %d" TENDSTR), block_no));
retval =
mtd->block_markbad(mtd,
- blockNo * dev->nChunksPerBlock *
- dev->nBytesPerChunk);
+ block_no * dev->chunks_per_block *
+ dev->n_bytesPerChunk);
if (retval == 0)
return YAFFS_OK;
}
-int nandmtd2_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockNo,
- yaffs_BlockState * state, int *sequenceNumber)
+int nandmtd2_QueryNANDBlock(struct yaffs_dev *dev, int block_no,
+ enum yaffs_block_state * state, int *seq_number)
{
struct mtd_info *mtd = (struct mtd_info *)(dev->genericDevice);
int retval;
T(YAFFS_TRACE_MTD,
- (TSTR("nandmtd2_QueryNANDBlock %d" TENDSTR), blockNo));
+ (TSTR("nandmtd2_QueryNANDBlock %d" TENDSTR), block_no));
retval =
mtd->block_isbad(mtd,
- blockNo * dev->nChunksPerBlock *
- dev->nBytesPerChunk);
+ block_no * dev->chunks_per_block *
+ dev->n_bytesPerChunk);
if (retval) {
T(YAFFS_TRACE_MTD, (TSTR("block is bad" TENDSTR)));
*state = YAFFS_BLOCK_STATE_DEAD;
- *sequenceNumber = 0;
+ *seq_number = 0;
} else {
- yaffs_ExtendedTags t;
+ struct yaffs_ext_tags t;
nandmtd2_ReadChunkWithTagsFromNAND(dev,
- blockNo *
- dev->nChunksPerBlock, NULL,
+ block_no *
+ dev->chunks_per_block, NULL,
&t);
- if (t.chunkUsed) {
- *sequenceNumber = t.sequenceNumber;
+ if (t.chunk_used) {
+ *seq_number = t.seq_number;
*state = YAFFS_BLOCK_STATE_NEEDS_SCANNING;
} else {
- *sequenceNumber = 0;
+ *seq_number = 0;
*state = YAFFS_BLOCK_STATE_EMPTY;
}
T(YAFFS_TRACE_MTD,
- (TSTR("block is OK seq %d state %d" TENDSTR), *sequenceNumber,
+ (TSTR("block is OK seq %d state %d" TENDSTR), *seq_number,
*state));
}