aboutsummaryrefslogtreecommitdiff
path: root/hw/omap.h
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2012-07-04 11:18:44 +0000
committerPeter Maydell <peter.maydell@linaro.org>2012-07-25 13:33:33 +0100
commit477f31a9aef60271b9fd5e84790c6c2b4aa3e2a0 (patch)
tree16fac356045526f9b2f5496fc7b967268d352f77 /hw/omap.h
parent3f774ca9699870879fa53aa26d484d3a39343fa0 (diff)
add hw/omap3_mmc.c
Add omap3 specific mmc/sd driver omap3_mmc: fix cmd12/52 handling during inactive data transfer Signed-off-by: Juha Riihimäki <juha.riihimaki@nokia.com> omap3_mmc qdev conversion Signed-off-by: Juha Riihimäki <juha.riihimaki@nokia.com> make-omap3_mmc-status-register make omap3_mmc status register directly accessible Changes in the status register are immediately in effect, i.e. the guest does not need to read the status register first before writing changes to it. This change may cause problems if guest code does not handle properly the case where transfers get completed immediately when initiated. Signed-off-by: Juha Riihimäki <juha.riihimaki@nokia.com> hw-omap3_mmc-c-use-symbolic-co hw/omap3_mmc.c: Use symbolic constants for status register bits Use symbolic constants rather than hardcoded numeric values for the OMAP3 MMC status register bits, to improve readability. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> hw-omap3_mmc-c-set-tc-status-b hw/omap3_mmc.c: Set TC status bit for R1b no-data commands We emulate MMC commands with response type R1b and no data transfer instantaneously, so we must set the TC bit as well as the CC bit, to indicate that the "busy" period has ended. Without this fix the Linux driver will hang waiting for a TC interrupt that never happens when it tries to do a block erase. Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/omap.h')
-rw-r--r--hw/omap.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/hw/omap.h b/hw/omap.h
index 2371e1d4e3..9ed96258a0 100644
--- a/hw/omap.h
+++ b/hw/omap.h
@@ -959,6 +959,10 @@ void omap_mmc_reset(struct omap_mmc_s *s);
void omap_mmc_handlers(struct omap_mmc_s *s, qemu_irq ro, qemu_irq cover);
void omap_mmc_enable(struct omap_mmc_s *s, int enable);
+/* omap3_mmc.c */
+void omap3_mmc_attach(DeviceState *dev, BlockDriverState *bs,
+ int is_spi, int is_mmc);
+
/* omap_i2c.c */
i2c_bus *omap_i2c_bus(DeviceState *omap_i2c);