[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 13/25] sdcard: let function handling response cod
From: |
Philippe Mathieu-Daudé |
Subject: |
[Qemu-devel] [PATCH v2 13/25] sdcard: let function handling response codes returns the response size |
Date: |
Wed, 3 Jan 2018 18:24:24 -0300 |
this will ease cases when the response is different regarding the protocol
use (SPI, MMC).
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
---
hw/sd/sd.c | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index e6a6e0b2ad..7e9d7366fe 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -460,7 +460,7 @@ static int sd_req_crc_validate(SDRequest *req)
return sd_crc7(buffer, 5) != req->crc; /* TODO */
}
-static void sd_response_r1_make(SDState *sd, uint8_t *response)
+static size_t sd_response_r1_make(SDState *sd, uint8_t *response)
{
uint32_t status = sd->card_status;
/* Clear the "clear on read" status bits */
@@ -470,14 +470,25 @@ static void sd_response_r1_make(SDState *sd, uint8_t
*response)
response[1] = (status >> 16) & 0xff;
response[2] = (status >> 8) & 0xff;
response[3] = (status >> 0) & 0xff;
+
+ return 4;
+}
+
+static size_t sd_response_r2s_make(SDState *sd, uint8_t *response)
+{
+ memcpy(response, sd->csd, sizeof(sd->csd));
+
+ return 16;
}
-static void sd_response_r3_make(SDState *sd, uint8_t *response)
+static size_t sd_response_r3_make(SDState *sd, uint8_t *response)
{
response[0] = (sd->ocr >> 24) & 0xff;
response[1] = (sd->ocr >> 16) & 0xff;
response[2] = (sd->ocr >> 8) & 0xff;
response[3] = (sd->ocr >> 0) & 0xff;
+
+ return 4;
}
static void sd_response_r6_make(SDState *sd, uint8_t *response)
@@ -1513,8 +1524,7 @@ send_response:
switch (rtype) {
case sd_r1:
case sd_r1b:
- sd_response_r1_make(sd, response);
- rsplen = 4;
+ rsplen = sd_response_r1_make(sd, response);
break;
case sd_r2_i:
@@ -1523,13 +1533,11 @@ send_response:
break;
case sd_r2_s:
- memcpy(response, sd->csd, sizeof(sd->csd));
- rsplen = 16;
+ rsplen = sd_response_r2s_make(sd, response);
break;
case sd_r3:
- sd_response_r3_make(sd, response);
- rsplen = 4;
+ rsplen = sd_response_r3_make(sd, response);
break;
case sd_r6:
--
2.15.1
- [Qemu-devel] [PATCH v2 03/25] sdcard: add more trace events, (continued)
- [Qemu-devel] [PATCH v2 03/25] sdcard: add more trace events, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 04/25] sdcard: define SDCARD_CMD_MAX instead of using the magic '64', Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 05/25] sdcard: display command name when tracing CMD/ACMD, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 06/25] sdcard: let cmd_valid_while_locked() returns a bool, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 07/25] sdcard: rename sd_set_$REG() functions called once as sd_reset_$REG(), Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 08/25] sdcard: use the registerfields API to access the OCR register, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 09/25] sdcard: use G_BYTE from cutils, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 10/25] sdcard: remove unreachable code, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 13/25] sdcard: let function handling response codes returns the response size,
Philippe Mathieu-Daudé <=
- [Qemu-devel] [PATCH v2 12/25] sdcard: use a 16-bit integer for the 16-bit RCA register, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 14/25] sdcard: add missing command CMD55, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 11/25] sdcard: replace switch(unique case) statements -> if(case), Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 15/25] sdcard: add missing CMD54 SDIO command, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [RFC PATCH v2 16/25] sdcard: add missing SPI legal commands, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 18/25] sdcard: add an enum for the SD PHY Spec version, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [RFC PATCH v2 17/25] sdcard: fix SPI response length, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 19/25] sdcard: check if the card capacity is supported, Philippe Mathieu-Daudé, 2018/01/03
- [Qemu-devel] [PATCH v2 21/25] sdcard: add cmd_version_supported(), improve cmd_class_supported(), Philippe Mathieu-Daudé, 2018/01/03