# HG changeset patch # User Ross Younger # Date 1258647026 0 # Node ID 531f5810eaf78b2fdfd41d99626d336753d0ef3c # Parent 932988fb7f38785dc8eca896d1b12974cd7bc8da update to NAND app interface v2 diff --git a/packages/fs/yaffs/current/ChangeLog b/packages/fs/yaffs/current/ChangeLog --- a/packages/fs/yaffs/current/ChangeLog +++ b/packages/fs/yaffs/current/ChangeLog @@ -1,3 +1,9 @@ +2009-11-19 Ross Younger + + * ecos-yaffs.c, ecos-yaffs-nand.c: Update to NAND interface v2. + * yaffs.cdl: Require CYGSEM_IO_NAND_APPINTERFACE_VERSION > 1. + Declare CYGSEM_FS_YAFFS_NAND_APPINTERFACE to satisfy the two-way check. + 2009-11-17 Ross Younger * yaffs_guts.c: Tweak last upstream merge. Be noisy if diff --git a/packages/fs/yaffs/current/cdl/yaffs.cdl b/packages/fs/yaffs/current/cdl/yaffs.cdl --- a/packages/fs/yaffs/current/cdl/yaffs.cdl +++ b/packages/fs/yaffs/current/cdl/yaffs.cdl @@ -54,6 +54,7 @@ cdl_package CYGPKG_FS_YAFFS { requires CYGPKG_IO_FILEIO requires CYGPKG_IO_NAND + requires ( CYGSEM_IO_NAND_APPINTERFACE_VERSION > 1 ) requires CYGPKG_ISOINFRA requires CYGINT_ISO_ERRNO requires CYGINT_ISO_ERRNO_CODES @@ -286,4 +287,14 @@ cdl_package CYGPKG_FS_YAFFS { } + cdl_option CYGSEM_FS_YAFFS_NAND_APPINTERFACE { + display "NAND application interface version required" + flavor data + calculated 2 + no_define + description "This is the version of the NAND application + interface which this package requires. It exists to flag + up changes at the CDL level." + } + } diff --git a/packages/fs/yaffs/current/src/ecos-yaffs-nand.c b/packages/fs/yaffs/current/src/ecos-yaffs-nand.c --- a/packages/fs/yaffs/current/src/ecos-yaffs-nand.c +++ b/packages/fs/yaffs/current/src/ecos-yaffs-nand.c @@ -69,7 +69,7 @@ int eyaffs_deinitialiseNAND (struct yaff int eyaffs_eraseBlockInNAND (struct yaffs_DeviceStruct * dev, int blockInNAND) { cyg_nand_partition *part = (cyg_nand_partition*) dev->genericDevice; - int rv = cyg_nand_erase_block(part, blockInNAND); + int rv = cyg_nandp_erase_block(part, blockInNAND); return rv==0 ? YAFFS_OK : YAFFS_FAIL; } @@ -94,7 +94,7 @@ int eyaffs_writeChunkWithTagsToNAND (str yaffs_PackTags1(&pt1, tags); yaffs_CalcTagsECC((yaffs_Tags *)&pt1); } - rv = cyg_nand_write_page(part, chunkInNAND, data, &pt1, PACKEDTAGS1_OOBSIZE); + rv = cyg_nandp_write_page(part, chunkInNAND, data, &pt1, PACKEDTAGS1_OOBSIZE); #endif } else { #ifdef CYGSEM_FS_YAFFS_OMIT_YAFFS2_CODE @@ -115,12 +115,12 @@ int eyaffs_writeChunkWithTagsToNAND (str yaffs_PackedTags2TagsPart *pt2tp; pt2tp = (yaffs_PackedTags2TagsPart *)(data + dev->nDataBytesPerChunk); yaffs_PackTags2TagsPart(pt2tp, tags); - rv = cyg_nand_write_page(part, chunkInNAND, data, 0, 0); + rv = cyg_nandp_write_page(part, chunkInNAND, data, 0, 0); } else { yaffs_PackedTags2 pt; void *packed_tags_ptr = dev->noTagsECC ? (void*) &pt.t : (void*) &pt; yaffs_PackTags2(dev, &pt, tags); - rv = cyg_nand_write_page(part, chunkInNAND, data, packed_tags_ptr, PACKEDTAGS2_OOBSIZE(dev)); + rv = cyg_nandp_write_page(part, chunkInNAND, data, packed_tags_ptr, PACKEDTAGS2_OOBSIZE(dev)); } #endif } @@ -144,7 +144,7 @@ int eyaffs_readChunkWithTagsFromNAND (st yaffs_PackedTags1 pt1; memset(&pt1, 0xff, sizeof(yaffs_PackedTags1)); - rv = cyg_nand_read_page(part, chunkInNAND, data, &pt1, PACKEDTAGS1_OOBSIZE); + rv = cyg_nandp_read_page(part, chunkInNAND, data, &pt1, PACKEDTAGS1_OOBSIZE); if (rv == 0) { if (yaffs_CheckFF((CYG_BYTE*)&pt1, 8)) { @@ -195,7 +195,7 @@ int eyaffs_readChunkWithTagsFromNAND (st data = yaffs_GetTempBuffer(dev, __LINE__); } - rv = cyg_nand_read_page(part, chunkInNAND, data, 0, 0); + rv = cyg_nandp_read_page(part, chunkInNAND, data, 0, 0); if (tags) { yaffs_PackedTags2TagsPart *pt2tp; pt2tp = (yaffs_PackedTags2TagsPart *)&data[dev->nDataBytesPerChunk]; @@ -204,7 +204,7 @@ int eyaffs_readChunkWithTagsFromNAND (st } else { yaffs_PackedTags2 pt; void *packed_tags_ptr = dev->noTagsECC ? (void*) &pt.t : (void*) &pt; - rv = cyg_nand_read_page(part, chunkInNAND, data, packed_tags_ptr, tags ? PACKEDTAGS2_OOBSIZE(dev) : 0); + rv = cyg_nandp_read_page(part, chunkInNAND, data, packed_tags_ptr, tags ? PACKEDTAGS2_OOBSIZE(dev) : 0); if (tags) yaffs_UnpackTags2(dev, tags, &pt); } @@ -231,7 +231,7 @@ int eyaffs_readChunkWithTagsFromNAND (st int eyaffs_markNANDBlockBad (struct yaffs_DeviceStruct * dev, int blockNo) { cyg_nand_partition *part = (cyg_nand_partition*) dev->genericDevice; - int rv = cyg_nand_bbt_markbad(part, blockNo); + int rv = cyg_nandp_bbt_markbad(part, blockNo); return rv==0 ? YAFFS_OK : YAFFS_FAIL; } @@ -242,7 +242,7 @@ int eyaffs_queryNANDBlock (struct yaffs_ cyg_nand_page_addr pg; cyg_nand_partition *part = (cyg_nand_partition*) dev->genericDevice; - int rv = cyg_nand_bbt_query(part, blockNo); + int rv = cyg_nandp_bbt_query(part, blockNo); if (rv < 0) return YAFFS_FAIL; switch(rv) { @@ -255,7 +255,7 @@ int eyaffs_queryNANDBlock (struct yaffs_ // reads in the NAND layer where this can be efficiently done. int rv2 = eyaffs_readChunkWithTagsFromNAND(dev, pg, 0, &tags); if (rv2 == YAFFS_FAIL) { - (void) cyg_nand_bbt_markbad(part, blockNo); + (void) cyg_nandp_bbt_markbad(part, blockNo); goto deadblock; } if (tags.chunkUsed) { diff --git a/packages/fs/yaffs/current/src/ecos-yaffs.c b/packages/fs/yaffs/current/src/ecos-yaffs.c --- a/packages/fs/yaffs/current/src/ecos-yaffs.c +++ b/packages/fs/yaffs/current/src/ecos-yaffs.c @@ -576,23 +576,23 @@ static int eyaffs_mount ( cyg_fstab_e y->genericDevice = (void*) part; y->nDataBytesPerChunk = - y->totalBytesPerChunk = NAND_BYTES_PER_PAGE(nand); + y->totalBytesPerChunk = CYG_NAND_BYTES_PER_PAGE(nand); y->inbandTags = 0; - y->nChunksPerBlock = NAND_PAGES_PER_BLOCK(nand); + y->nChunksPerBlock = CYG_NAND_PAGES_PER_BLOCK(nand); y->nReservedBlocks = o_nReserved; - y->startBlock = part->first; - y->endBlock = part->last; + y->startBlock = 0; + y->endBlock = CYG_NAND_PARTITION_NBLOCKS(part)-1; y->useNANDECC = 1; y->nShortOpCaches = o_nShortOpCaches; - if (NAND_BYTES_PER_PAGE(nand) == 512) { + if (CYG_NAND_BYTES_PER_PAGE(nand) == 512) { #ifdef CYGSEM_FS_YAFFS_SMALLPAGE_MODE_YAFFS1 y->isYaffs2 = 0; - if (NAND_APPSPARE_PER_PAGE(nand) < PACKEDTAGS1_OOBSIZE) { + if (CYG_NAND_APPSPARE_PER_PAGE(nand) < PACKEDTAGS1_OOBSIZE) { NAND_ERROR(nand, "Device has %d spare per page but YAFFS1 needs %d\n", - NAND_APPSPARE_PER_PAGE(nand), PACKEDTAGS1_OOBSIZE); + CYG_NAND_APPSPARE_PER_PAGE(nand), PACKEDTAGS1_OOBSIZE); EG(EINVAL); } #else // CYGSEM_FS_YAFFS_SMALLPAGE_MODE_YAFFS2 @@ -603,10 +603,10 @@ static int eyaffs_mount ( cyg_fstab_e #endif } else { y->isYaffs2 = 1; - if (NAND_APPSPARE_PER_PAGE(nand) < PACKEDTAGS2_OOBSIZE(y)) { + if (CYG_NAND_APPSPARE_PER_PAGE(nand) < PACKEDTAGS2_OOBSIZE(y)) { NAND_ERROR(nand, "Device has %d spare per page but YAFFS2 needs %u\n", - NAND_APPSPARE_PER_PAGE(nand), PACKEDTAGS2_OOBSIZE(y)); + CYG_NAND_APPSPARE_PER_PAGE(nand), PACKEDTAGS2_OOBSIZE(y)); EG(EINVAL); } }