diff options
Diffstat (limited to 'hw/nand.c')
-rw-r--r-- | hw/nand.c | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -11,7 +11,11 @@ #ifndef NAND_IO -# include "vl.h" +# include "hw.h" +# include "flash.h" +# include "block.h" +/* FIXME: Pass block device as an argument. */ +# include "sysemu.h" # define NAND_CMD_READ0 0x00 # define NAND_CMD_READ1 0x01 @@ -440,14 +444,20 @@ struct nand_flash_s *nand_init(int manf_id, int chip_id) { int pagesize; struct nand_flash_s *s; + int index; if (nand_flash_ids[chip_id].size == 0) { cpu_abort(cpu_single_env, "%s: Unsupported NAND chip ID.\n", __FUNCTION__); } + index = drive_get_index(IF_MTD, 0, 0); + if (index == -1) { + cpu_abort(cpu_single_env, "%s: missing MTD device\n", + __FUNCTION__); + } s = (struct nand_flash_s *) qemu_mallocz(sizeof(struct nand_flash_s)); - s->bdrv = mtd_bdrv; + s->bdrv = drives_table[index].bdrv; s->manf_id = manf_id; s->chip_id = chip_id; s->size = nand_flash_ids[s->chip_id].size << 20; |