From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
To: Alistair Francis <alistair@alistair23.me>,
Peter Maydell <peter.maydell@linaro.org>,
"Edgar E . Iglesias" <edgar.iglesias@xilinx.com>
Cc: "Philippe Mathieu-Daudé" <f4bug@amsat.org>, qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 4/8] sdcard: Add the Tuning Command (CMD19)
Date: Fri, 9 Mar 2018 16:36:50 +0100 [thread overview]
Message-ID: <20180309153654.13518-5-f4bug@amsat.org> (raw)
In-Reply-To: <20180309153654.13518-1-f4bug@amsat.org>
>From the "Physical Layer Simplified Specification Version 3.01":
A known data block ("Tuning block") can be used to tune sampling
point for tuning required hosts. [...]
This procedure gives the system optimal timing for each specific
host and card combination and compensates for static delays in
the timing budget including process, voltage and different PCB
loads and skews. [...]
Data block, carried by DAT[3:0], contains a pattern for tuning
sampling position to receive data on the CMD and DAT[3:0] line.
[based on a patch from Alistair Francis <alistair.francis@xilinx.com>
from qemu/xilinx tag xilinx-v2015.2]
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Alistair Francis <alistair.francis@xilinx.com>
---
hw/sd/sd.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index dc50d6bbf7..235e0518d6 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -1169,6 +1169,14 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req)
}
break;
+ case 19: /* CMD19: SEND_TUNING_BLOCK (SD) */
+ if (sd->state == sd_transfer_state) {
+ sd->state = sd_sendingdata_state;
+ sd->data_offset = 0;
+ return sd_r1;
+ }
+ break;
+
case 23: /* CMD23: SET_BLOCK_COUNT */
switch (sd->state) {
case sd_transfer_state:
@@ -1893,6 +1901,20 @@ void sd_write_data(SDState *sd, uint8_t value)
}
}
+#define SD_TUNING_BLOCK_SIZE 64
+
+static const uint8_t sd_tuning_block_pattern[SD_TUNING_BLOCK_SIZE] = {
+ /* See: Physical Layer Simplified Specification Version 3.01, Table 4-2 */
+ 0xff, 0x0f, 0xff, 0x00, 0x0f, 0xfc, 0xc3, 0xcc,
+ 0xc3, 0x3c, 0xcc, 0xff, 0xfe, 0xff, 0xfe, 0xef,
+ 0xff, 0xdf, 0xff, 0xdd, 0xff, 0xfb, 0xff, 0xfb,
+ 0xbf, 0xff, 0x7f, 0xff, 0x77, 0xf7, 0xbd, 0xef,
+ 0xff, 0xf0, 0xff, 0xf0, 0x0f, 0xfc, 0xcc, 0x3c,
+ 0xcc, 0x33, 0xcc, 0xcf, 0xff, 0xef, 0xff, 0xee,
+ 0xff, 0xfd, 0xff, 0xfd, 0xdf, 0xff, 0xbf, 0xff,
+ 0xbb, 0xff, 0xf7, 0xff, 0xf7, 0x7f, 0x7b, 0xde,
+};
+
uint8_t sd_read_data(SDState *sd)
{
/* TODO: Append CRCs */
@@ -1972,6 +1994,13 @@ uint8_t sd_read_data(SDState *sd)
}
break;
+ case 19: /* CMD19: SEND_TUNING_BLOCK (SD) */
+ if (sd->data_offset >= SD_TUNING_BLOCK_SIZE - 1) {
+ sd->state = sd_transfer_state;
+ }
+ ret = sd_tuning_block_pattern[sd->data_offset++];
+ break;
+
case 22: /* ACMD22: SEND_NUM_WR_BLOCKS */
ret = sd->data[sd->data_offset ++];
--
2.16.2
next prev parent reply other threads:[~2018-03-09 15:37 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-09 15:36 [Qemu-devel] [PATCH 0/8] SDCard: improve tracing, support UHS-I Philippe Mathieu-Daudé
2018-03-09 15:36 ` [Qemu-devel] [PATCH 1/8] sdcard: Do not trace CMD55, except when we already expect an ACMD Philippe Mathieu-Daudé
2018-03-09 15:44 ` Peter Maydell
2018-03-09 15:36 ` [Qemu-devel] [PATCH 2/8] sdcard: Display command name when tracing CMD/ACMD Philippe Mathieu-Daudé
2018-03-09 15:47 ` Peter Maydell
2018-03-09 15:36 ` [Qemu-devel] [PATCH 3/8] sdcard: Display which protocol is used when tracing (SD or SPI) Philippe Mathieu-Daudé
2018-03-09 15:36 ` Philippe Mathieu-Daudé [this message]
2018-03-09 15:36 ` [Qemu-devel] [PATCH 5/8] sdcard: Implement the UHS-I SWITCH_FUNCTION entries (Spec v3) Philippe Mathieu-Daudé
2018-03-09 17:03 ` Peter Maydell
2018-03-09 17:08 ` Edgar E. Iglesias
2018-03-09 17:33 ` Philippe Mathieu-Daudé
2018-03-12 12:32 ` Philippe Mathieu-Daudé
2018-03-12 12:36 ` Philippe Mathieu-Daudé
2018-03-12 13:12 ` Peter Maydell
2018-03-12 13:03 ` Philippe Mathieu-Daudé
2018-03-12 13:16 ` Peter Maydell
2018-05-22 4:45 ` Philippe Mathieu-Daudé
2018-05-09 5:36 ` Philippe Mathieu-Daudé
2018-03-09 17:06 ` Peter Maydell
2018-03-12 12:36 ` Philippe Mathieu-Daudé
2018-03-12 13:08 ` Peter Maydell
2018-03-09 15:36 ` [Qemu-devel] [PATCH 6/8] sdcard: Add a 'uhs' property, update the OCR register ACCEPT_SWITCH_1V8 bit Philippe Mathieu-Daudé
2018-03-09 15:36 ` [Qemu-devel] [PATCH 7/8] sdhci: Fix a typo in comment Philippe Mathieu-Daudé
2018-03-09 15:43 ` Peter Maydell
2018-03-09 15:36 ` [Qemu-devel] [PATCH 8/8] MAINTAINERS: Add entries for SD (SDHCI, SDBus, SDCard) Philippe Mathieu-Daudé
2018-03-09 15:43 ` Peter Maydell
2018-03-09 17:08 ` [Qemu-devel] [PATCH 0/8] SDCard: improve tracing, support UHS-I Peter Maydell
2018-03-09 17:14 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180309153654.13518-5-f4bug@amsat.org \
--to=f4bug@amsat.org \
--cc=alistair@alistair23.me \
--cc=edgar.iglesias@xilinx.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).