- memset(g,0,sizeof(*g));
- g->start_block = start_block;
- g->end_block = end_block;
- g->dataSize = DATA_SIZE;
- g->spareSize= SPARE_SIZE;
- g->pagesPerBlock = PAGES_PER_BLOCK;
- g->hasECC = 1;
- g->inband_tags = 0;
- g->useYaffs2 = 1;
- g->initialise = yramsim_initialise;
- g->deinitialise = yramsim_deinitialise;
- g->readChunk = yramsim_rd_chunk,
- g->writeChunk = yramsim_wr_chunk,
- g->eraseBlock = yramsim_erase,
- g->checkBlockOk = yramsim_check_block_ok,
- g->markBlockBad = yramsim_mark_block_bad,
- g->privateData = (void *)sim;
-
- return yaffs_add_dev_from_geometry(name,g);
+ p = &dev->param;
+ p->name = strdup(name);
+ p->start_block = start_block;
+ p->end_block = end_block;
+ p->total_bytes_per_chunk = DATA_SIZE;
+ p->spare_bytes_per_chunk= SPARE_SIZE;
+ p->chunks_per_block = PAGES_PER_BLOCK;
+ p->n_reserved_blocks = 2;
+ p->use_nand_ecc = 1;
+ p->inband_tags = 0;
+ p->is_yaffs2 = 1;
+
+ d= &dev->drv;
+ d->drv_initialise_fn = yramsim_initialise;
+ d->drv_deinitialise_fn = yramsim_deinitialise;
+ d->drv_read_chunk_fn = yramsim_rd_chunk;
+ d->drv_write_chunk_fn = yramsim_wr_chunk;
+ d->drv_erase_fn = yramsim_erase;
+ d->drv_check_bad_fn = yramsim_check_block_bad;
+ d->drv_mark_bad_fn = yramsim_mark_block_bad;
+
+ dev->driver_context= (void *)sim;
+
+ return dev;