struct beagle_s {
struct omap_mpu_state_s *cpu;
- struct nand_flash_s *nand;
+ NANDFlashState *nand;
struct omap3_lcd_panel_s *lcd_panel;
i2c_bus *i2c;
- struct twl4030_s *twl4030;
+ void *twl4030;
};
-static void beagle_init(ram_addr_t ram_size, int vga_ram_size,
- const char *boot_device,
- const char *kernel_filename, const char *kernel_cmdline,
- const char *initrd_filename, const char *cpu_model)
+static void beagle_init(ram_addr_t ram_size,
+ const char *boot_device,
+ const char *kernel_filename,
+ const char *kernel_cmdline,
+ const char *initrd_filename,
+ const char *cpu_model)
{
struct beagle_s *s = (struct beagle_s *) qemu_mallocz(sizeof(*s));
- int sdindex = drive_get_index(IF_SD, 0, 0);
void *opaque;
- if (sdindex == -1) {
- fprintf(stderr, "%s: missing SecureDigital device\n", __FUNCTION__);
- exit(1);
+ if (drive_get_index(IF_SD, 0, 0) < 0 ||
+ drive_get_index(IF_MTD, 0, 0) < 0) {
+ hw_error("%s: missing SD or NAND device\n", __FUNCTION__);
}
s->cpu = omap3530_mpu_init(ram_size, NULL, NULL, serial_hds[0]);
- s->nand = nand_init(NAND_MFR_MICRON, 0xba); /* MT29F2G16ABC */
+ s->nand = nand_init(NAND_MFR_MICRON, 0xba,
+ drives_table[drive_get_index(IF_MTD, 0, 0)].bdrv);
nand_setpins(s->nand, 0, 0, 0, 1, 0); /* no write-protect */
omap_gpmc_attach(s->cpu->gpmc, BEAGLE_NAND_CS, 0, NULL, NULL, s->nand, 2);
- omap3_mmc_attach(s->cpu->omap3_mmc[0], drives_table[sdindex].bdrv);
+ omap3_mmc_attach(s->cpu->omap3_mmc[0],
+ drives_table[drive_get_index(IF_SD, 0, 0)].bdrv);
s->i2c = omap_i2c_bus(s->cpu->i2c[0]);
s->twl4030 = twl4030_init(s->i2c, s->cpu->irq[0][OMAP_INT_3XXX_SYS_NIRQ]);
- opaque = smc91c111_init(&nd_table[0], 0x08000000,
- omap2_gpio_in_get(s->cpu->gpif, 54)[0], 0);
+ opaque = smc91c111_init_lite(&nd_table[0], /*0x08000000,*/
+ omap2_gpio_in_get(s->cpu->gpif, 54)[0]);
omap_gpmc_attach(s->cpu->gpmc, BEAGLE_SMC_CS, smc91c111_iomemtype(opaque),
- 0, 0, opaque, 0);
+ NULL, NULL, opaque, 0);
s->lcd_panel = omap3_lcd_panel_init();
omap3_lcd_panel_attach(s->cpu->dss, 0, s->lcd_panel);
.name = "beagle",
.desc = "Beagle board (OMAP3530)",
.init = beagle_init,
-/* .ram_require = OMAP3XXX_SRAM_SIZE + OMAP3XXX_BOOTROM_SIZE, */
};
+static void beagle_machine_init(void)
+{
+ qemu_register_machine(&beagle_machine);
+}
+
+machine_init(beagle_machine_init);