qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 12/14] hw/sd.c, hw/sd.h: add receive ready qu


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH v3 12/14] hw/sd.c, hw/sd.h: add receive ready query routine to SD/MMC API
Date: Tue, 13 Dec 2011 15:11:03 +0000

On 12 December 2011 06:43, Evgeny Voevodin <address@hidden> wrote:
> From: Mitsyanko Igor <address@hidden>
>
> Data transfer direction between host controller and SD/MMC card is selected by
> host controller configuration registers, but whether we actually need or need
> not perform data transfer depends on type of last issued command. To avoid
> memorization of which type of command host controller issued the last time, we
> can use simple query procedures, to make sure that SD/MMC card is in the
> right state. The only query routine currently presented in SD/MMC card
> emulation is sd_data_ready(), this patch adds sd_receive_ready() routine.

I've thought about this a bit more and spent some time poking through
the standards docs. I'm kind of suspicious of both this function and
the existing sd_data_ready(). Real hardware doesn't have these signals,
both ends of the sd-controller-to-card connection just do their thing
and trust that the other end is in the state it is supposed to be.
If you (in the controller model) don't already know whether you are
OK to send/receive data then you haven't modelled some part of the
controller's state properly.

In your specific case you know whether a command is a data transfer
command by the Data Present Select bit that was written to the Command
Register. You know whether it's read or write by the Data Transfer
Direction Select bit in the Transfer Mode Register. So you don't need
to ask the sd card about these things. (The controller needs to not
blow up if the guest sets Data Present for a command that isn't a
data transfer command, and so on, but that should mostly just work
out without special code I think.)

-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]