From: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
To: Alistair Francis <alistair.francis@xilinx.com>,
"Edgar E . Iglesias" <edgar.iglesias@xilinx.com>,
Peter Maydell <peter.maydell@linaro.org>,
Andrew Baumann <Andrew.Baumann@microsoft.com>,
Prasad J Pandit <pjp@fedoraproject.org>,
Clement Deschamps <clement.deschamps@antfield.fr>
Cc: "Philippe Mathieu-Daudé" <f4bug@amsat.org>,
qemu-devel@nongnu.org,
"Peter Crosthwaite" <crosthwaite.peter@gmail.com>,
"Sai Pavan Boddu" <saipava@xilinx.com>
Subject: [Qemu-devel] [PATCH 08/26] sdcard: add sd_set_state()
Date: Wed, 13 Dec 2017 20:20:07 -0300 [thread overview]
Message-ID: <20171213232025.24503-9-f4bug@amsat.org> (raw)
In-Reply-To: <20171213232025.24503-1-f4bug@amsat.org>
This will ease to trace state changes (in the following patchs).
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
hw/sd/sd.c | 128 ++++++++++++++++++++++++++++++++-----------------------------
1 file changed, 67 insertions(+), 61 deletions(-)
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 465d254f2e..f67c9ff49c 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -171,6 +171,11 @@ static void sd_update_mode(SDState *sd)
}
}
+static void sd_set_state(SDState *sd, enum SDCardStates state)
+{
+ sd->state = state;
+}
+
static const sd_cmd_type_t sd_cmd_type[64] = {
sd_bc, sd_none, sd_bcr, sd_bcr, sd_none, sd_none, sd_none, sd_ac,
sd_bcr, sd_ac, sd_ac, sd_adtc, sd_ac, sd_ac, sd_none, sd_ac,
@@ -429,7 +434,7 @@ static void sd_reset(DeviceState *dev)
sect = sd_addr_to_wpnum(size) + 1;
- sd->state = sd_idle_state;
+ sd_set_state(sd, sd_idle_state);
sd->rca = 0x0000;
sd_set_ocr(sd);
sd_set_scr(sd);
@@ -767,7 +772,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
return sd->spi ? sd_r1 : sd_r0;
default:
- sd->state = sd_idle_state;
+ sd_set_state(sd, sd_idle_state);
sd_reset(DEVICE(sd));
return sd->spi ? sd_r1 : sd_r0;
}
@@ -777,7 +782,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
if (!sd->spi)
goto bad_cmd;
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
return sd_r1;
case 2: /* CMD2: ALL_SEND_CID */
@@ -785,7 +790,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
goto bad_cmd;
switch (sd->state) {
case sd_ready_state:
- sd->state = sd_identification_state;
+ sd_set_state(sd, sd_identification_state);
return sd_r2_i;
default:
@@ -799,7 +804,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
switch (sd->state) {
case sd_identification_state:
case sd_standby_state:
- sd->state = sd_standby_state;
+ sd_set_state(sd, sd_standby_state);
sd_set_rca(sd);
return sd_r6;
@@ -829,7 +834,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
switch (sd->mode) {
case sd_data_transfer_mode:
sd_function_switch(sd, req.arg);
- sd->state = sd_sendingdata_state;
+ sd_set_state(sd, sd_sendingdata_state);
sd->data_start = 0;
sd->data_offset = 0;
return sd_r1;
@@ -847,7 +852,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
if (sd->rca != rca)
return sd_r0;
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
return sd_r1b;
case sd_transfer_state:
@@ -855,21 +860,21 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
if (sd->rca == rca)
break;
- sd->state = sd_standby_state;
+ sd_set_state(sd, sd_standby_state);
return sd_r1b;
case sd_disconnect_state:
if (sd->rca != rca)
return sd_r0;
- sd->state = sd_programming_state;
+ sd_set_state(sd, sd_programming_state);
return sd_r1b;
case sd_programming_state:
if (sd->rca == rca)
break;
- sd->state = sd_disconnect_state;
+ sd_set_state(sd, sd_disconnect_state);
return sd_r1b;
default:
@@ -908,7 +913,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
case sd_transfer_state:
if (!sd->spi)
break;
- sd->state = sd_sendingdata_state;
+ sd_set_state(sd, sd_sendingdata_state);
memcpy(sd->data, sd->csd, 16);
sd->data_start = addr;
sd->data_offset = 0;
@@ -930,7 +935,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
case sd_transfer_state:
if (!sd->spi)
break;
- sd->state = sd_sendingdata_state;
+ sd_set_state(sd, sd_sendingdata_state);
memcpy(sd->data, sd->cid, 16);
sd->data_start = addr;
sd->data_offset = 0;
@@ -946,7 +951,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
goto bad_cmd;
switch (sd->state) {
case sd_transfer_state:
- sd->state = sd_sendingdata_state;
+ sd_set_state(sd, sd_sendingdata_state);
sd->data_start = req.arg;
sd->data_offset = 0;
@@ -962,13 +967,13 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
case 12: /* CMD12: STOP_TRANSMISSION */
switch (sd->state) {
case sd_sendingdata_state:
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
return sd_r1b;
case sd_receivingdata_state:
- sd->state = sd_programming_state;
+ sd_set_state(sd, sd_programming_state);
/* Bzzzzzzztt .... Operation complete. */
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
return sd_r1b;
default:
@@ -997,7 +1002,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
if (sd->rca != rca)
return sd_r0;
- sd->state = sd_inactive_state;
+ sd_set_state(sd, sd_inactive_state);
return sd_r0;
default:
@@ -1024,7 +1029,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
case 17: /* CMD17: READ_SINGLE_BLOCK */
switch (sd->state) {
case sd_transfer_state:
- sd->state = sd_sendingdata_state;
+ sd_set_state(sd, sd_sendingdata_state);
sd->data_start = addr;
sd->data_offset = 0;
@@ -1040,7 +1045,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
case 18: /* CMD18: READ_MULTIPLE_BLOCK */
switch (sd->state) {
case sd_transfer_state:
- sd->state = sd_sendingdata_state;
+ sd_set_state(sd, sd_sendingdata_state);
sd->data_start = addr;
sd->data_offset = 0;
@@ -1073,7 +1078,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
/* Writing in SPI mode not implemented. */
if (sd->spi)
break;
- sd->state = sd_receivingdata_state;
+ sd_set_state(sd, sd_receivingdata_state);
sd->data_start = addr;
sd->data_offset = 0;
sd->blk_written = 0;
@@ -1099,7 +1104,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
/* Writing in SPI mode not implemented. */
if (sd->spi)
break;
- sd->state = sd_receivingdata_state;
+ sd_set_state(sd, sd_receivingdata_state);
sd->data_start = addr;
sd->data_offset = 0;
sd->blk_written = 0;
@@ -1122,7 +1127,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
goto bad_cmd;
switch (sd->state) {
case sd_transfer_state:
- sd->state = sd_receivingdata_state;
+ sd_set_state(sd, sd_receivingdata_state);
sd->data_start = 0;
sd->data_offset = 0;
return sd_r1;
@@ -1137,7 +1142,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
goto unimplemented_cmd;
switch (sd->state) {
case sd_transfer_state:
- sd->state = sd_receivingdata_state;
+ sd_set_state(sd, sd_receivingdata_state);
sd->data_start = 0;
sd->data_offset = 0;
return sd_r1;
@@ -1156,10 +1161,10 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
return sd_r1b;
}
- sd->state = sd_programming_state;
+ sd_set_state(sd, sd_programming_state);
set_bit(sd_addr_to_wpnum(addr), sd->wp_groups);
/* Bzzzzzzztt .... Operation complete. */
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
return sd_r1b;
default:
@@ -1175,10 +1180,10 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
return sd_r1b;
}
- sd->state = sd_programming_state;
+ sd_set_state(sd, sd_programming_state);
clear_bit(sd_addr_to_wpnum(addr), sd->wp_groups);
/* Bzzzzzzztt .... Operation complete. */
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
return sd_r1b;
default:
@@ -1189,7 +1194,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
case 30: /* CMD30: SEND_WRITE_PROT */
switch (sd->state) {
case sd_transfer_state:
- sd->state = sd_sendingdata_state;
+ sd_set_state(sd, sd_sendingdata_state);
*(uint32_t *) sd->data = sd_wpbits(sd, req.arg);
sd->data_start = addr;
sd->data_offset = 0;
@@ -1231,10 +1236,10 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
return sd_r1b;
}
- sd->state = sd_programming_state;
+ sd_set_state(sd, sd_programming_state);
sd_erase(sd);
/* Bzzzzzzztt .... Operation complete. */
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
return sd_r1b;
default:
@@ -1248,7 +1253,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
goto unimplemented_cmd;
switch (sd->state) {
case sd_transfer_state:
- sd->state = sd_receivingdata_state;
+ sd_set_state(sd, sd_receivingdata_state);
sd->data_start = 0;
sd->data_offset = 0;
return sd_r1;
@@ -1283,10 +1288,11 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
switch (sd->state) {
case sd_transfer_state:
sd->data_offset = 0;
- if (req.arg & 1)
- sd->state = sd_sendingdata_state;
- else
- sd->state = sd_receivingdata_state;
+ if (req.arg & 1) {
+ sd_set_state(sd, sd_sendingdata_state);
+ } else {
+ sd_set_state(sd, sd_receivingdata_state);
+ }
return sd_r1;
default:
@@ -1331,7 +1337,7 @@ static sd_rsp_type_t sd_app_command(SDState *sd,
case 13: /* ACMD13: SD_STATUS */
switch (sd->state) {
case sd_transfer_state:
- sd->state = sd_sendingdata_state;
+ sd_set_state(sd, sd_sendingdata_state);
sd->data_start = 0;
sd->data_offset = 0;
return sd_r1;
@@ -1346,7 +1352,7 @@ static sd_rsp_type_t sd_app_command(SDState *sd,
case sd_transfer_state:
*(uint32_t *) sd->data = sd->blk_written;
- sd->state = sd_sendingdata_state;
+ sd_set_state(sd, sd_sendingdata_state);
sd->data_start = 0;
sd->data_offset = 0;
return sd_r1;
@@ -1369,7 +1375,7 @@ static sd_rsp_type_t sd_app_command(SDState *sd,
case 41: /* ACMD41: SD_APP_OP_COND */
if (sd->spi) {
/* SEND_OP_CMD */
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
return sd_r1;
}
switch (sd->state) {
@@ -1399,7 +1405,7 @@ static sd_rsp_type_t sd_app_command(SDState *sd,
* unless it's an enquiry ACMD41 (bits 23:0 == 0).
*/
if (req.arg & ACMD41_ENQUIRY_MASK) {
- sd->state = sd_ready_state;
+ sd_set_state(sd, sd_ready_state);
}
return sd_r3;
@@ -1423,7 +1429,7 @@ static sd_rsp_type_t sd_app_command(SDState *sd,
case 51: /* ACMD51: SEND_SCR */
switch (sd->state) {
case sd_transfer_state:
- sd->state = sd_sendingdata_state;
+ sd_set_state(sd, sd_sendingdata_state);
sd->data_start = 0;
sd->data_offset = 0;
return sd_r1;
@@ -1615,12 +1621,12 @@ void sd_write_data(SDState *sd, uint8_t value)
sd->data[sd->data_offset ++] = value;
if (sd->data_offset >= sd->blk_len) {
/* TODO: Check CRC before committing */
- sd->state = sd_programming_state;
+ sd_set_state(sd, sd_programming_state);
BLK_WRITE_BLOCK(sd->data_start, sd->data_offset);
sd->blk_written ++;
sd->csd[14] |= 0x40;
/* Bzzzzzzztt .... Operation complete. */
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
}
break;
@@ -1639,7 +1645,7 @@ void sd_write_data(SDState *sd, uint8_t value)
sd->data[sd->data_offset++] = value;
if (sd->data_offset >= sd->blk_len) {
/* TODO: Check CRC before committing */
- sd->state = sd_programming_state;
+ sd_set_state(sd, sd_programming_state);
BLK_WRITE_BLOCK(sd->data_start, sd->data_offset);
sd->blk_written++;
sd->data_start += sd->blk_len;
@@ -1650,12 +1656,12 @@ void sd_write_data(SDState *sd, uint8_t value)
if (sd->multi_blk_cnt != 0) {
if (--sd->multi_blk_cnt == 0) {
/* Stop! */
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
break;
}
}
- sd->state = sd_receivingdata_state;
+ sd_set_state(sd, sd_receivingdata_state);
}
break;
@@ -1663,7 +1669,7 @@ void sd_write_data(SDState *sd, uint8_t value)
sd->data[sd->data_offset ++] = value;
if (sd->data_offset >= sizeof(sd->cid)) {
/* TODO: Check CRC before committing */
- sd->state = sd_programming_state;
+ sd_set_state(sd, sd_programming_state);
for (i = 0; i < sizeof(sd->cid); i ++)
if ((sd->cid[i] | 0x00) != sd->data[i])
sd->card_status |= CID_CSD_OVERWRITE;
@@ -1674,7 +1680,7 @@ void sd_write_data(SDState *sd, uint8_t value)
sd->cid[i] &= sd->data[i];
}
/* Bzzzzzzztt .... Operation complete. */
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
}
break;
@@ -1682,7 +1688,7 @@ void sd_write_data(SDState *sd, uint8_t value)
sd->data[sd->data_offset ++] = value;
if (sd->data_offset >= sizeof(sd->csd)) {
/* TODO: Check CRC before committing */
- sd->state = sd_programming_state;
+ sd_set_state(sd, sd_programming_state);
for (i = 0; i < sizeof(sd->csd); i ++)
if ((sd->csd[i] | sd_csd_rw_mask[i]) !=
(sd->data[i] | sd_csd_rw_mask[i]))
@@ -1698,7 +1704,7 @@ void sd_write_data(SDState *sd, uint8_t value)
sd->csd[i] &= sd->data[i];
}
/* Bzzzzzzztt .... Operation complete. */
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
}
break;
@@ -1706,10 +1712,10 @@ void sd_write_data(SDState *sd, uint8_t value)
sd->data[sd->data_offset ++] = value;
if (sd->data_offset >= sd->blk_len) {
/* TODO: Check CRC before committing */
- sd->state = sd_programming_state;
+ sd_set_state(sd, sd_programming_state);
sd_lock_command(sd);
/* Bzzzzzzztt .... Operation complete. */
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
}
break;
@@ -1717,7 +1723,7 @@ void sd_write_data(SDState *sd, uint8_t value)
sd->data[sd->data_offset ++] = value;
if (sd->data_offset >= sd->blk_len) {
APP_WRITE_BLOCK(sd->data_start, sd->data_offset);
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
}
break;
@@ -1752,7 +1758,7 @@ uint8_t sd_read_data(SDState *sd)
ret = sd->data[sd->data_offset ++];
if (sd->data_offset >= 64)
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
break;
case 9: /* CMD9: SEND_CSD */
@@ -1760,7 +1766,7 @@ uint8_t sd_read_data(SDState *sd)
ret = sd->data[sd->data_offset ++];
if (sd->data_offset >= 16)
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
break;
case 11: /* CMD11: READ_DAT_UNTIL_STOP */
@@ -1782,7 +1788,7 @@ uint8_t sd_read_data(SDState *sd)
ret = sd->sd_status[sd->data_offset ++];
if (sd->data_offset >= sizeof(sd->sd_status))
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
break;
case 17: /* CMD17: READ_SINGLE_BLOCK */
@@ -1791,7 +1797,7 @@ uint8_t sd_read_data(SDState *sd)
ret = sd->data[sd->data_offset ++];
if (sd->data_offset >= io_len)
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
break;
case 18: /* CMD18: READ_MULTIPLE_BLOCK */
@@ -1811,7 +1817,7 @@ uint8_t sd_read_data(SDState *sd)
if (sd->multi_blk_cnt != 0) {
if (--sd->multi_blk_cnt == 0) {
/* Stop! */
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
break;
}
}
@@ -1822,21 +1828,21 @@ uint8_t sd_read_data(SDState *sd)
ret = sd->data[sd->data_offset ++];
if (sd->data_offset >= 4)
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
break;
case 30: /* CMD30: SEND_WRITE_PROT */
ret = sd->data[sd->data_offset ++];
if (sd->data_offset >= 4)
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
break;
case 51: /* ACMD51: SEND_SCR */
ret = sd->scr[sd->data_offset ++];
if (sd->data_offset >= sizeof(sd->scr))
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
break;
case 56: /* CMD56: GEN_CMD */
@@ -1845,7 +1851,7 @@ uint8_t sd_read_data(SDState *sd)
ret = sd->data[sd->data_offset ++];
if (sd->data_offset >= sd->blk_len)
- sd->state = sd_transfer_state;
+ sd_set_state(sd, sd_transfer_state);
break;
default:
--
2.15.1
next prev parent reply other threads:[~2017-12-13 23:22 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-13 23:19 [Qemu-devel] [PATCH 00/26] SDCard housekeeping Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 01/26] sdbus: add a QMP command to access a SDBus Philippe Mathieu-Daudé
2017-12-14 9:06 ` Kevin Wolf
2017-12-14 9:34 ` Paolo Bonzini
2017-12-14 13:25 ` Philippe Mathieu-Daudé
2017-12-15 8:13 ` Paolo Bonzini
2017-12-14 13:18 ` Philippe Mathieu-Daudé
2017-12-15 19:53 ` Eric Blake
2017-12-13 23:20 ` [Qemu-devel] [RFC PATCH 02/26] sdcard: add a Python qtest Philippe Mathieu-Daudé
2017-12-14 9:34 ` Paolo Bonzini
2017-12-13 23:20 ` [Qemu-devel] [PATCH 03/26] sdcard: use ldst API Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 04/26] sdcard: replace fprintf() -> qemu_log_mask() Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 05/26] sdcard: rename sd_set_mode() -> sd_update_mode() Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 06/26] sdcard: add sd_set_mode() Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 07/26] sdcard: add sdcard_set_mode() trace event Philippe Mathieu-Daudé
2017-12-13 23:20 ` Philippe Mathieu-Daudé [this message]
2017-12-13 23:20 ` [Qemu-devel] [PATCH 09/26] sdcard: add a sdcard_set_state() " Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 10/26] sdcard: use more detailled state/mode trace events Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 11/26] sdcard: use warn_report() instead of fprintf() Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 12/26] sdcard: replace DPRINTF() by trace events Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 13/26] sdcard: add more " Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [RFC PATCH 14/26] sdcard: use qemu_hexbuf_strdup() to trace command response Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 15/26] sdcard: use PW_LEN define instead of '16' magic Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 16/26] sdcard: let cmd_valid_while_locked() returns a bool Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 17/26] sdcard: rename sd_set_REG() functions called by sd_reset() as sd_reset_REG() Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 18/26] sdcard: move Memory Card registers together Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 19/26] sdcard: add DSR register Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 20/26] sdcard: add/use SD_CMD_MAX to check valid SD commands Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 21/26] sdcard: add sd_cmd_abbreviation() to resolve the SD command id Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 22/26] sdcard: reduce sd_cmd traces Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 23/26] sdcard: add ACMD trace events Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 24/26] sdcard: use a 16-bit type for the 16-bit RCA register Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 25/26] sdcard: add/use a SDCardCommandClass enum instead of magic numbers Philippe Mathieu-Daudé
2017-12-13 23:20 ` [Qemu-devel] [PATCH 26/26] sdcard: add/use a ccc_spi enum for the commands supported in SPI mode Philippe Mathieu-Daudé
2017-12-14 1:29 ` [Qemu-devel] [PATCH 00/26] SDCard housekeeping Philippe Mathieu-Daudé
2017-12-16 0:13 ` Alistair Francis
2018-01-02 16:40 ` 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=20171213232025.24503-9-f4bug@amsat.org \
--to=f4bug@amsat.org \
--cc=Andrew.Baumann@microsoft.com \
--cc=alistair.francis@xilinx.com \
--cc=clement.deschamps@antfield.fr \
--cc=crosthwaite.peter@gmail.com \
--cc=edgar.iglesias@xilinx.com \
--cc=peter.maydell@linaro.org \
--cc=pjp@fedoraproject.org \
--cc=qemu-devel@nongnu.org \
--cc=saipava@xilinx.com \
/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).