X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=direct%2Ftest-framework%2Fyaffs_nand_drv.c;h=3a06bd72f156d9b4bbb67e96b955fc2a2f8f0df4;hp=6b3a91ea8011646f7633c0e1dd2cc589d32ffa3d;hb=1f3d64d1d804fef6715126dead54bf30b176c67e;hpb=fd65eb6c02fba80b81f6e6f327ebb73250cbd9f5 diff --git a/direct/test-framework/yaffs_nand_drv.c b/direct/test-framework/yaffs_nand_drv.c index 6b3a91e..3a06bd7 100644 --- a/direct/test-framework/yaffs_nand_drv.c +++ b/direct/test-framework/yaffs_nand_drv.c @@ -1,8 +1,7 @@ /* * 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 * @@ -83,7 +82,7 @@ static int yaffs_nand_drv_WriteChunk(struct yaffs_dev *dev, int nand_chunk, /* Set up and execute transfer */ - tr[0].buffer = data; + tr[0].buffer = (u8 *)data; tr[0].offset = 0; tr[0].nbytes = data_len; @@ -143,7 +142,6 @@ static int yaffs_nand_drv_ReadChunk(struct yaffs_dev *dev, int nand_chunk, ecc_result = YAFFS_ECC_RESULT_NO_ERROR; -#if 0 if(data) { for(i = 0, e = buffer + 2; i < chip->data_bytes_per_page; i+=256, e+=3) { yaffs_ecc_calc(data + i, read_ecc); @@ -154,7 +152,6 @@ static int yaffs_nand_drv_ReadChunk(struct yaffs_dev *dev, int nand_chunk, ecc_result = YAFFS_ECC_RESULT_FIXED; } } -#endif if (ecc_result_out) *ecc_result_out = ecc_result; @@ -198,8 +195,6 @@ static int yaffs_nand_drv_CheckBad(struct yaffs_dev *dev, int block_no) struct nand_chip *chip = dev_to_chip(dev); u8 *buffer = dev_to_buffer(dev); int nand_chunk = block_no * chip->pages_per_block; - int ret; - struct nanddrv_transfer tr[1]; memset(buffer, 0, chip->spare_bytes_per_page); @@ -208,7 +203,7 @@ static int yaffs_nand_drv_CheckBad(struct yaffs_dev *dev, int block_no) tr[0].offset = chip->data_bytes_per_page; tr[0].nbytes = chip->spare_bytes_per_page; - ret = nanddrv_read_tr(chip, nand_chunk, tr, 1); + nanddrv_read_tr(chip, nand_chunk, tr, 1); /* Check that bad block marker is not set */ if(yaffs_hweight8(buffer[0]) + yaffs_hweight8(buffer[1]) < 14) @@ -222,6 +217,7 @@ static int yaffs_nand_drv_Initialise(struct yaffs_dev *dev) { struct nand_chip *chip = dev_to_chip(dev); + (void)chip; return YAFFS_OK; } @@ -229,56 +225,23 @@ static int yaffs_nand_drv_Deinitialise(struct yaffs_dev *dev) { struct nand_chip *chip = dev_to_chip(dev); + (void) chip; return YAFFS_OK; } -#include "nandsim_file.h" -struct yaffs_dev *yaffs_nandsim_install_drv(const char *name, - const char *file_name, - int n_blocks) +int yaffs_nand_install_drv(struct yaffs_dev *dev, struct nand_chip *chip) { - struct yaffs_dev *dev; - char *name_copy = NULL; - struct yaffs_param *param; - struct yaffs_driver *drv; - struct nand_chip *chip = NULL; - struct nand_context *ctxt = NULL; + struct yaffs_driver *drv = &dev->drv; u8 *buffer = NULL; + struct nand_context *ctxt = NULL; - dev = malloc(sizeof(struct yaffs_dev)); ctxt = malloc(sizeof(struct nand_context)); - name_copy = strdup(name); - - if(!dev || !ctxt || !name_copy) - goto fail; - - chip = nandsim_file_init(file_name, n_blocks, 64, 2048, 64, 0); - if(!chip) - goto fail; - buffer = malloc(chip->spare_bytes_per_page); - if(!buffer) + if(!buffer || !ctxt) goto fail; - param = &dev->param; - drv = &dev->drv; - - memset(dev, 0, sizeof(*dev)); - memset(ctxt, 0, sizeof(*ctxt)); - - param->name = name_copy; - - param->total_bytes_per_chunk = chip->data_bytes_per_page; - param->chunks_per_block = chip->pages_per_block; - param->n_reserved_blocks = 5; - param->start_block = 0; // Can use block 0 - param->end_block = chip->blocks - 1; // Last block - param->is_yaffs2 = 1; - param->use_nand_ecc = 1; - param->n_caches = 10; - drv->drv_write_chunk_fn = yaffs_nand_drv_WriteChunk; drv->drv_read_chunk_fn = yaffs_nand_drv_ReadChunk; drv->drv_erase_fn = yaffs_nand_drv_EraseBlock; @@ -290,15 +253,10 @@ struct yaffs_dev *yaffs_nandsim_install_drv(const char *name, ctxt->chip = chip; ctxt->buffer = buffer; dev->driver_context = (void *) ctxt; - - yaffs_add_device(dev); - - return dev; + return YAFFS_OK; fail: - free(dev); free(ctxt); - free(name_copy); free(buffer); - return NULL; + return YAFFS_FAIL; }