X-Git-Url: http://git.maemo.org/git/?p=qemu;a=blobdiff_plain;f=hw%2Fbeagle.c;fp=hw%2Fbeagle.c;h=fc1a3740c4e1a6eb2df868c8a3204de727ceb57f;hp=3e919357d0cdeeefa9a408728cbab8642bbd1cf9;hb=a03c3bde4e288e790eccfb8cd45abd8ecbf467dc;hpb=e2ffa1bf065fa199f27d661d495573e9d6059bf1 diff --git a/hw/beagle.c b/hw/beagle.c index 3e91935..fc1a374 100644 --- a/hw/beagle.c +++ b/hw/beagle.c @@ -39,38 +39,41 @@ 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); @@ -82,6 +85,11 @@ QEMUMachine beagle_machine = { .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);