diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2012-07-04 11:18:44 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2012-07-25 13:33:33 +0100 |
commit | 477f31a9aef60271b9fd5e84790c6c2b4aa3e2a0 (patch) | |
tree | 16fac356045526f9b2f5496fc7b967268d352f77 /hw/omap.h | |
parent | 3f774ca9699870879fa53aa26d484d3a39343fa0 (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.h | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -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); |