int ynandif_QueryNANDBlock(struct yaffs_DeviceStruct *dev, int blockId, yaffs_BlockState *state, __u32 *sequenceNumber)
{
	unsigned chunkNo;
	yaffs_ExtendedTags tags;

	*sequenceNumber = 0;
	
	chunkNo = blockId * dev->nChunksPerBlock;
	
	if(!ynandif_IsBlockOk(dev,blockId)){
		*state = YAFFS_BLOCK_STATE_DEAD;
	} 
	else 
	{
		ynandif_ReadChunkWithTagsFromNAND(dev,chunkNo,NULL,&tags);

		if(!tags.chunkUsed)
		{
			*state = YAFFS_BLOCK_STATE_EMPTY;
		}
		else 
		{
			*state = YAFFS_BLOCK_STATE_NEEDS_SCANNING;
			*sequenceNumber = tags.sequenceNumber;
		}
	}

	return YAFFS_OK;
}
示例#2
0
int ynandif_QueryNANDBlock(struct yaffs_dev *dev, int blockId,
		enum yaffs_block_state *state, u32 *seq_number)
{
	unsigned chunkNo;
	struct yaffs_ext_tags tags;

	*seq_number = 0;

	chunkNo = blockId * dev->param.chunks_per_block;

	if (!ynandif_IsBlockOk(dev, blockId)) {
		*state = YAFFS_BLOCK_STATE_DEAD;
	} else {
		ynandif_ReadChunkWithTagsFromNAND(dev, chunkNo, NULL, &tags);

		if (!tags.chunk_used) {
			*state = YAFFS_BLOCK_STATE_EMPTY;
		} else {
			*state = YAFFS_BLOCK_STATE_NEEDS_SCAN;
			*seq_number = tags.seq_number;
		}
	}

	return YAFFS_OK;
}