aboutsummaryrefslogtreecommitdiff
path: root/hw/nand.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/nand.c')
-rw-r--r--hw/nand.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/hw/nand.c b/hw/nand.c
index 118d04ea3..ea353ed95 100644
--- a/hw/nand.c
+++ b/hw/nand.c
@@ -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;