[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC 0/7] Convert SD card model to AIO
From: |
Igor Mitsyanko |
Subject: |
[Qemu-devel] [RFC 0/7] Convert SD card model to AIO |
Date: |
Fri, 10 May 2013 20:10:18 +0400 |
This is an initial attempt to change our SD card model to use asynchronious
input/output API instead of synchronious one. This will require converting of
every user also. Right now I've converted only PL181 model, and I'll wait
for some feedback on taken approach before I'll continue with other users.
New async SD interface is built on two callbacks:
1 Callback which models arrival of start bit on DAT line from card (start bit)
2 Callback modeling deasserting of DAT0 line by card when it has finished
programming data (data busy end)
This is based on SD card specification.
Start bit is issued for every new block of data coming from card.
DAT0 line is kept low by card to signal busy state, while data block is being
programmed by card and it can't receive new data.
Furthermore, I decided to drop data buffering on SD controller side. We already
have two buffers in SD card model, no need to have another one in controller
model.
We can avoid intermediate copying from card's buffer to controller's buffer, and
read/write directly from card.
Tested by running this Fedora image
https://fedoraproject.org/wiki/Architectures/ARM/F18/Versatile_Express
on versatile board.
Igor Mitsyanko (7):
sd.c: introduce AIO related members in SD state
sd.c: introduce variable for trekking valid data
sd.c: introduce "start bit" and "busy deasserted" callbacks
sd.c: use callbacks as a flag to use async IO
sd.c: introduce async read operation
sd.c: introduce async write interface
pl181.c: convert to async IO SD card interface
hw/sd/omap_mmc.c | 6 +-
hw/sd/pl181.c | 302 +++++++++++++++++++++++++++++++++-------------------
hw/sd/pxa2xx_mmci.c | 2 +-
hw/sd/sd.c | 272 ++++++++++++++++++++++++++++++++++++++++++----
hw/sd/sdhci.c | 4 +-
include/hw/sd.h | 3 +-
6 files changed, 449 insertions(+), 140 deletions(-)
--
1.8.1.4
- [Qemu-devel] [RFC 0/7] Convert SD card model to AIO,
Igor Mitsyanko <=
- [Qemu-devel] [RFC 1/7] sd.c: introduce AIO related members in SD state, Igor Mitsyanko, 2013/05/10
- [Qemu-devel] [RFC 2/7] sd.c: introduce variable for trekking valid data, Igor Mitsyanko, 2013/05/10
- [Qemu-devel] [RFC 3/7] sd.c: introduce "start bit" and "busy deasserted" callbacks, Igor Mitsyanko, 2013/05/10
- [Qemu-devel] [RFC 4/7] sd.c: use callbacks as a flag to use async IO, Igor Mitsyanko, 2013/05/10
- [Qemu-devel] [RFC 5/7] sd.c: introduce async read operation, Igor Mitsyanko, 2013/05/10
- [Qemu-devel] [RFC 6/7] sd.c: introduce async write interface, Igor Mitsyanko, 2013/05/10
- [Qemu-devel] [RFC 7/7] pl181.c: convert to async IO SD card interface, Igor Mitsyanko, 2013/05/10
- Re: [Qemu-devel] [RFC 0/7] Convert SD card model to AIO, Stefan Hajnoczi, 2013/05/13