[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 12/20] sdcard: handles more commands in SPI mode
From: |
Philippe Mathieu-Daudé |
Subject: |
[Qemu-devel] [PATCH v4 12/20] sdcard: handles more commands in SPI mode |
Date: |
Thu, 15 Feb 2018 19:13:17 -0300 |
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
---
hw/sd/sd.c | 29 ++++++++++++++++++++++++++---
1 file changed, 26 insertions(+), 3 deletions(-)
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 4f82638735..0ecb446fdb 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -1390,9 +1390,11 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
SDRequest req)
/* Application specific commands (Class 8) */
case 55: /* CMD55: APP_CMD */
- if (sd->rca != rca)
- return sd_r0;
-
+ if (!sd->spi) {
+ if (sd->rca != rca) {
+ return sd_r0;
+ }
+ }
sd->expecting_acmd = true;
sd->card_status |= APP_CMD;
return sd_r1;
@@ -1412,6 +1414,18 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,
SDRequest req)
}
break;
+ case 58: /* CMD58: READ_OCR (SPI) */
+ if (!sd->spi) {
+ goto bad_cmd;
+ }
+ return sd_r3;
+
+ case 59: /* CMD59: CRC_ON_OFF (SPI) */
+ if (!sd->spi) {
+ goto bad_cmd;
+ }
+ goto unimplemented_spi_cmd;
+
default:
bad_cmd:
qemu_log_mask(LOG_GUEST_ERROR, "SD: Unknown CMD%i\n", req.cmd);
@@ -1436,6 +1450,9 @@ static sd_rsp_type_t sd_app_command(SDState *sd,
sd->card_status |= APP_CMD;
switch (req.cmd) {
case 6: /* ACMD6: SET_BUS_WIDTH */
+ if (sd->spi) {
+ goto unimplemented_spi_cmd;
+ }
switch (sd->state) {
case sd_transfer_state:
sd->sd_status[0] &= 0x3f;
@@ -1569,6 +1586,12 @@ static sd_rsp_type_t sd_app_command(SDState *sd,
default:
/* Fall back to standard commands. */
return sd_normal_command(sd, req);
+
+ unimplemented_spi_cmd:
+ /* Commands that are recognised but not yet implemented in SPI mode.
*/
+ qemu_log_mask(LOG_UNIMP, "SD: CMD%i not implemented in SPI mode\n",
+ req.cmd);
+ return sd_illegal;
}
qemu_log_mask(LOG_GUEST_ERROR, "SD: ACMD%i in a wrong state\n", req.cmd);
--
2.16.1
- [Qemu-devel] [PATCH v4 04/20] sdcard: clean the SCR register and add few comments, (continued)
- [Qemu-devel] [PATCH v4 04/20] sdcard: clean the SCR register and add few comments, Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 05/20] sdcard: remove commands from unsupported old MMC specification, Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 06/20] sdcard: simplify using the ldst API, Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 07/20] sdcard: use the correct masked OCR in the R3 reply, Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 08/20] sdcard: use the registerfields API for the CARD_STATUS register masks, Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 09/20] sdcard: handle CMD54 (SDIO), Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 10/20] sdcard: handle the Security Specification commands, Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 11/20] sdcard: use a more descriptive label 'unimplemented_spi_cmd', Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 12/20] sdcard: handles more commands in SPI mode,
Philippe Mathieu-Daudé <=
- [Qemu-devel] [PATCH v4 13/20] sdcard: check the card is in correct state for APP CMD (CMD55), Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 14/20] sdcard: warn if host uses an incorrect address for APP CMD (CMD55), Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 15/20] sdcard: simplify SEND_IF_COND (CMD8), Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 16/20] sdcard: simplify SD_SEND_OP_COND (ACMD41), Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 17/20] sdcard: add SD SEND_TUNING_BLOCK (CMD19), Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 18/20] sdcard: implement the UHS-I SWITCH_FUNCTION entries (Spec v3), Philippe Mathieu-Daudé, 2018/02/15
- [Qemu-devel] [PATCH v4 19/20] sdcard: add a 'uhs' property, update the OCR register ACCEPT_SWITCH_1V8 bit, Philippe Mathieu-Daudé, 2018/02/15