X-Git-Url: https://yaffs.net/gitweb/?a=blobdiff_plain;f=direct%2Fu-boot%2Ffs%2Fyaffs2%2Fyaffs_mtdif.c;h=b7ec90915dc1a9dbfdc4eed0b442129503c3b0ff;hb=d634851c1f36e7995726602d3af784478ccb472e;hp=6f3a02834f322b0984b6661a7a5a4036eed0bc1b;hpb=80f85303d264f804ea288e1995280345804ec01c;p=yaffs2.git diff --git a/direct/u-boot/fs/yaffs2/yaffs_mtdif.c b/direct/u-boot/fs/yaffs2/yaffs_mtdif.c index 6f3a028..b7ec909 100644 --- a/direct/u-boot/fs/yaffs2/yaffs_mtdif.c +++ b/direct/u-boot/fs/yaffs2/yaffs_mtdif.c @@ -14,9 +14,6 @@ /* XXX U-BOOT XXX */ #include -const char *yaffs_mtdif_c_version = - "$Id: yaffs_mtdif.c,v 1.19 2007/02/14 01:09:06 wookey Exp $"; - #include "yportenv.h" @@ -27,19 +24,7 @@ const char *yaffs_mtdif_c_version = #include "linux/time.h" #include "linux/mtd/nand.h" -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)) -static struct nand_oobinfo yaffs_oobinfo = { - .useecc = 1, - .eccbytes = 6, - .eccpos = {8, 9, 10, 13, 14, 15} -}; - -static struct nand_oobinfo yaffs_noeccinfo = { - .useecc = 0, -}; -#endif -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17)) static inline void translate_spare2oob(const struct yaffs_spare *spare, u8 *oob) { oob[0] = spare->tb0; @@ -48,8 +33,8 @@ static inline void translate_spare2oob(const struct yaffs_spare *spare, u8 *oob) oob[3] = spare->tb3; oob[4] = spare->tb4; oob[5] = spare->tb5 & 0x3f; - oob[5] |= spare->block_status == 'Y' ? 0: 0x80; - oob[5] |= spare->page_status == 0 ? 0: 0x40; + oob[5] |= spare->block_status == 'Y' ? 0 : 0x80; + oob[5] |= spare->page_status == 0 ? 0 : 0x40; oob[6] = spare->tb6; oob[7] = spare->tb7; } @@ -72,20 +57,16 @@ static inline void translate_oob2spare(struct yaffs_spare *spare, u8 *oob) nspare->eccres1 = nspare->eccres2 = 0; /* FIXME */ } -#endif -int nandmtd_WriteChunkToNAND(struct yaffs_dev * dev, int chunkInNAND, - const u8 * data, const struct yaffs_spare * spare) + +int nandmtd_WriteChunkToNAND(struct yaffs_dev *dev, int chunkInNAND, + const u8 *data, const struct yaffs_spare *spare) { struct mtd_info *mtd = (struct mtd_info *)(dev->driver_context); -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17)) struct mtd_oob_ops ops; -#endif size_t dummy; int retval = 0; - - loff_t addr = ((loff_t) chunkInNAND) * dev->data_bytes_per_chunk; -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17)) + loff_t addr = ((loff_t) chunkInNAND) * dev->param.total_bytes_per_chunk; u8 spareAsBytes[8]; /* OOB */ if (data && !spare) @@ -106,31 +87,6 @@ int nandmtd_WriteChunkToNAND(struct yaffs_dev * dev, int chunkInNAND, ops.oobbuf = spareAsBytes; retval = mtd->write_oob(mtd, addr, &ops); } -#else - u8 *spareAsBytes = (u8 *) spare; - - if (data && spare) { - if (dev->param.use_nand_ecc) - retval = - mtd->write_ecc(mtd, addr, dev->data_bytes_per_chunk, - &dummy, data, spareAsBytes, - &yaffs_oobinfo); - else - retval = - mtd->write_ecc(mtd, addr, dev->data_bytes_per_chunk, - &dummy, data, spareAsBytes, - &yaffs_noeccinfo); - } else { - if (data) - retval = - mtd->write(mtd, addr, dev->data_bytes_per_chunk, &dummy, - data); - if (spare) - retval = - mtd->write_oob(mtd, addr, YAFFS_BYTES_PER_SPARE, - &dummy, spareAsBytes); - } -#endif if (retval == 0) return YAFFS_OK; @@ -138,18 +94,15 @@ int nandmtd_WriteChunkToNAND(struct yaffs_dev * dev, int chunkInNAND, return YAFFS_FAIL; } -int nandmtd_ReadChunkFromNAND(struct yaffs_dev * dev, int chunkInNAND, u8 * data, - struct yaffs_spare * spare) +int nandmtd_ReadChunkFromNAND(struct yaffs_dev *dev, int chunkInNAND, u8 *data, + struct yaffs_spare *spare) { struct mtd_info *mtd = (struct mtd_info *)(dev->driver_context); -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17)) struct mtd_oob_ops ops; -#endif size_t dummy; int retval = 0; - loff_t addr = ((loff_t) chunkInNAND) * dev->data_bytes_per_chunk; -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,17)) + loff_t addr = ((loff_t) chunkInNAND) * dev->param.total_bytes_per_chunk; u8 spareAsBytes[8]; /* OOB */ if (data && !spare) @@ -171,36 +124,6 @@ int nandmtd_ReadChunkFromNAND(struct yaffs_dev * dev, int chunkInNAND, u8 * data if (dev->param.use_nand_ecc) translate_oob2spare(spare, spareAsBytes); } -#else - u8 *spareAsBytes = (u8 *) spare; - - if (data && spare) { - if (dev->param.use_nand_ecc) { - /* Careful, this call adds 2 ints */ - /* to the end of the spare data. Calling function */ - /* should allocate enough memory for spare, */ - /* i.e. [YAFFS_BYTES_PER_SPARE+2*sizeof(int)]. */ - retval = - mtd->read_ecc(mtd, addr, dev->data_bytes_per_chunk, - &dummy, data, spareAsBytes, - &yaffs_oobinfo); - } else { - retval = - mtd->read_ecc(mtd, addr, dev->data_bytes_per_chunk, - &dummy, data, spareAsBytes, - &yaffs_noeccinfo); - } - } else { - if (data) - retval = - mtd->read(mtd, addr, dev->data_bytes_per_chunk, &dummy, - data); - if (spare) - retval = - mtd->read_oob(mtd, addr, YAFFS_BYTES_PER_SPARE, - &dummy, spareAsBytes); - } -#endif if (retval == 0) return YAFFS_OK; @@ -208,11 +131,11 @@ int nandmtd_ReadChunkFromNAND(struct yaffs_dev * dev, int chunkInNAND, u8 * data return YAFFS_FAIL; } -int nandmtd_EraseBlockInNAND(struct yaffs_dev * dev, int blockNumber) +int nandmtd_EraseBlockInNAND(struct yaffs_dev *dev, int blockNumber) { struct mtd_info *mtd = (struct mtd_info *)(dev->driver_context); __u32 addr = - ((loff_t) blockNumber) * dev->data_bytes_per_chunk + ((loff_t) blockNumber) * dev->param.total_bytes_per_chunk * dev->param.chunks_per_block; struct erase_info ei; int retval = 0; @@ -227,10 +150,6 @@ int nandmtd_EraseBlockInNAND(struct yaffs_dev * dev, int blockNumber) /* Todo finish off the ei if required */ -/* XXX U-BOOT XXX */ -#if 0 - sema_init(&dev->sem, 0); -#endif retval = mtd->erase(mtd, &ei); @@ -240,7 +159,7 @@ int nandmtd_EraseBlockInNAND(struct yaffs_dev * dev, int blockNumber) return YAFFS_FAIL; } -int nandmtd_InitialiseNAND(struct yaffs_dev * dev) +int nandmtd_InitialiseNAND(struct yaffs_dev *dev) { return YAFFS_OK; }