/* MPU public TIPB peripherals */
struct omap_32khz_timer_s *os_timer;
- struct omap_mmc_s *mmc;
+ struct omap_mmc_s *mmc[2];
struct omap_mpuio_s *mpuio;
struct omap3_scm_s *omap3_scm;
struct omap3_pm_s *omap3_pm;
struct omap3_sms_s *omap3_sms;
- struct omap3_mmc_s *omap3_mmc;
+ struct omap3_mmc_s *omap3_mmc[3];
};
struct omap_target_agent_s {
omap_uart_reset(mpu->uart[0]);
omap_uart_reset(mpu->uart[1]);
omap_uart_reset(mpu->uart[2]);
- omap_mmc_reset(mpu->mmc);
+ omap_mmc_reset(mpu->mmc[0]);
omap_mpuio_reset(mpu->mpuio);
omap_gpio_reset(mpu->gpio);
omap_uwire_reset(mpu->microwire);
fprintf(stderr, "qemu: missing SecureDigital device\n");
exit(1);
}
- s->mmc = omap_mmc_init(0xfffb7800, drives_table[sdindex].bdrv,
+ s->mmc[0] = omap_mmc_init(0xfffb7800, drives_table[sdindex].bdrv,
s->irq[1][OMAP_INT_OQN], &s->drq[OMAP_DMA_MMC_TX],
omap_findclk(s, "mmc_ck"));
omap_uart_reset(mpu->uart[0]);
omap_uart_reset(mpu->uart[1]);
omap_uart_reset(mpu->uart[2]);
- omap_mmc_reset(mpu->mmc);
+ omap_mmc_reset(mpu->mmc[0]);
omap_gpif_reset(mpu->gpif);
omap_mcspi_reset(mpu->mcspi[0]);
omap_mcspi_reset(mpu->mcspi[1]);
fprintf(stderr, "qemu: missing SecureDigital device\n");
exit(1);
}
- s->mmc = omap2_mmc_init(omap_l4tao(s->l4, 9), drives_table[sdindex].bdrv,
+ s->mmc[0] = omap2_mmc_init(omap_l4tao(s->l4, 9), drives_table[sdindex].bdrv,
s->irq[0][OMAP_INT_24XX_MMC_IRQ],
&s->drq[OMAP24XX_DMA_MMC1_TX],
omap_findclk(s, "mmc_fclk"), omap_findclk(s, "mmc_iclk"));
\r
omap_tap_init(omap3_l4ta_get(s->l4, L4A_TAP), s);\r
\r
- s->omap3_mmc = omap3_mmc_init(omap3_l4ta_get(s->l4, L4A_MMC1), \r
+ s->omap3_mmc[0] = omap3_mmc_init(omap3_l4ta_get(s->l4, L4A_MMC1),\r
drives_table[sdindex].bdrv,\r
s->irq[0][OMAP_INT_35XX_MMC1_IRQ],\r
&s->drq[OMAP35XX_DMA_MMC1_TX],\r
omap_findclk(s, "omap3_mmc1_fclk"),\r
omap_findclk(s, "omap3_mmc1_iclk"));\r
\r
+ s->omap3_mmc[1] = omap3_mmc_init(omap3_l4ta_get(s->l4, L4A_MMC2),\r
+ drives_table[-1].bdrv,\r
+ s->irq[0][OMAP_INT_35XX_MMC2_IRQ],\r
+ &s->drq[OMAP35XX_DMA_MMC2_TX],\r
+ omap_findclk(s, "omap3_mmc2_fclk"),\r
+ omap_findclk(s, "omap3_mmc2_iclk"));\r
+\r
+ s->omap3_mmc[2] = omap3_mmc_init(omap3_l4ta_get(s->l4, L4A_MMC3),\r
+ drives_table[-1].bdrv,\r
+ s->irq[0][OMAP_INT_35XX_MMC3_IRQ],\r
+ &s->drq[OMAP35XX_DMA_MMC3_TX],\r
+ omap_findclk(s, "omap3_mmc3_fclk"),\r
+ omap_findclk(s, "omap3_mmc3_iclk"));\r
+\r
s->i2c[0] = omap3_i2c_init(omap3_l4ta_get(s->l4, L4A_I2C1),\r
s->irq[0][OMAP_INT_35XX_I2C1_IRQ],\r
&s->drq[OMAP35XX_DMA_I2C1_TX],\r
omap_l4_attach(ta, 0, iomemtype);\r
\r
/* Instantiate the storage */\r
- s->card = sd_init(bd, 0);\r
-\r
- //s->cdet = qemu_allocate_irqs(omap_mmc_cover_cb, s, 1)[0];\r
- //sd_set_cb(s->card, 0, s->cdet);\r
-\r
- omap3_mmc_enable(s,1);\r
+ if (bd!=NULL) {\r
+ s->card = sd_init(bd, 0);\r
+ omap3_mmc_enable(s,1);\r
+ }\r
\r
return s;\r
}\r