X-Git-Url: https://repo.jachan.dev/qemu.git/blobdiff_plain/8e129e0748f866d730f1e39bff296219fedac244..6341fdcb7841f364a6102ce2b3c375e6c0d7560e:/hw/omap_mmc.c diff --git a/hw/omap_mmc.c b/hw/omap_mmc.c index 008318db36..6fbbb84912 100644 --- a/hw/omap_mmc.c +++ b/hw/omap_mmc.c @@ -18,14 +18,14 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */ -#include "vl.h" +#include "hw.h" +#include "omap.h" #include "sd.h" struct omap_mmc_s { target_phys_addr_t base; qemu_irq irq; qemu_irq *dma; - qemu_irq handler[2]; omap_clk clk; SDState *card; uint16_t last_cmd; @@ -269,7 +269,7 @@ static uint32_t omap_mmc_read(void *opaque, target_phys_addr_t offset) { uint16_t i; struct omap_mmc_s *s = (struct omap_mmc_s *) opaque; - offset -= s->base; + offset &= OMAP_MPUI_REG_MASK; switch (offset) { case 0x00: /* MMC_CMD */ @@ -351,7 +351,7 @@ static void omap_mmc_write(void *opaque, target_phys_addr_t offset, { int i; struct omap_mmc_s *s = (struct omap_mmc_s *) opaque; - offset -= s->base; + offset &= OMAP_MPUI_REG_MASK; switch (offset) { case 0x00: /* MMC_CMD */ @@ -507,23 +507,8 @@ void omap_mmc_reset(struct omap_mmc_s *host) host->transfer = 0; } -static void omap_mmc_ro_cb(void *opaque, int level) -{ - struct omap_mmc_s *s = (struct omap_mmc_s *) opaque; - - if (s->handler[0]) - qemu_set_irq(s->handler[0], level); -} - -static void omap_mmc_cover_cb(void *opaque, int level) -{ - struct omap_mmc_s *s = (struct omap_mmc_s *) opaque; - - if (s->handler[1]) - qemu_set_irq(s->handler[1], level); -} - struct omap_mmc_s *omap_mmc_init(target_phys_addr_t base, + BlockDriverState *bd, qemu_irq irq, qemu_irq dma[], omap_clk clk) { int iomemtype; @@ -540,15 +525,12 @@ struct omap_mmc_s *omap_mmc_init(target_phys_addr_t base, cpu_register_physical_memory(s->base, 0x800, iomemtype); /* Instantiate the storage */ - s->card = sd_init(sd_bdrv); - - sd_set_cb(s->card, s, omap_mmc_ro_cb, omap_mmc_cover_cb); + s->card = sd_init(bd, 0); return s; } void omap_mmc_handlers(struct omap_mmc_s *s, qemu_irq ro, qemu_irq cover) { - s->handler[0] = ro; - s->handler[1] = cover; + sd_set_cb(s->card, ro, cover); }