[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v3 09/18] sdcard: handles more commands in SPI m
From: |
Alistair Francis |
Subject: |
Re: [Qemu-devel] [PATCH v3 09/18] sdcard: handles more commands in SPI mode |
Date: |
Wed, 31 Jan 2018 16:11:25 -0800 |
On Mon, Jan 22, 2018 at 7:30 PM, Philippe Mathieu-Daudé <address@hidden> wrote:
> Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
> ---
> hw/sd/sd.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
> 1 file changed, 54 insertions(+), 3 deletions(-)
>
> diff --git a/hw/sd/sd.c b/hw/sd/sd.c
> index 2eca999bc3..07424aa56e 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_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_cmd;
> + }
> switch (sd->state) {
> case sd_transfer_state:
> sd->sd_status[0] &= 0x3f;
> @@ -1460,6 +1477,12 @@ static sd_rsp_type_t sd_app_command(SDState *sd,
> }
> break;
>
> + case 18:
These should all have a comment describing what they are and for the
others as well.
> + if (sd->spi) {
> + goto unimplemented_cmd;
> + }
> + break;
> +
> case 22: /* ACMD22: SEND_NUM_WR_BLOCKS */
> switch (sd->state) {
> case sd_transfer_state:
> @@ -1485,6 +1508,19 @@ static sd_rsp_type_t sd_app_command(SDState *sd,
> }
> break;
>
> + case 25:
> + case 26:
> + if (sd->spi) {
> + goto unimplemented_cmd;
> + }
> + break;
> +
> + case 38:
> + if (sd->spi) {
> + goto unimplemented_cmd;
> + }
> + break;
> +
> case 41: /* ACMD41: SD_APP_OP_COND */
> if (sd->spi) {
> /* SEND_OP_CMD */
> @@ -1542,6 +1578,12 @@ static sd_rsp_type_t sd_app_command(SDState *sd,
> }
> break;
>
> + case 43 ... 49:
> + if (sd->spi) {
> + goto unimplemented_cmd;
> + }
> + break;
> +
> case 51: /* ACMD51: SEND_SCR */
> switch (sd->state) {
> case sd_transfer_state:
> @@ -1555,9 +1597,18 @@ static sd_rsp_type_t sd_app_command(SDState *sd,
> }
> break;
>
> + case 55: /* Not exist */
> + break;
> +
> default:
> /* Fall back to standard commands. */
> return sd_normal_command(sd, req);
> +
> + unimplemented_cmd:
> + /* Commands that are recognised but not yet implemented in SPI mode.
> */
This should be unimplemented_spi_cmd then, to be more clear.
Alistair
> + 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.15.1
>
>
- Re: [Qemu-devel] [PATCH v3 03/18] sdcard: fix the 'maximum data transfer rate' to 25MHz, (continued)
- [Qemu-devel] [PATCH v3 04/18] sdcard: clean the SCR register and add few comments, Philippe Mathieu-Daudé, 2018/01/22
- [Qemu-devel] [PATCH v3 05/18] sdcard: remove commands from unsupported old MMC specification, Philippe Mathieu-Daudé, 2018/01/22
- [Qemu-devel] [PATCH v3 06/18] sdcard: simplify using the ldst API, Philippe Mathieu-Daudé, 2018/01/22
- [Qemu-devel] [PATCH v3 07/18] sdcard: use the correct masked OCR in the R3 reply, Philippe Mathieu-Daudé, 2018/01/22
- [Qemu-devel] [PATCH v3 08/18] sdcard: use the registerfields API for the CARD_STATUS register masks, Philippe Mathieu-Daudé, 2018/01/22
- [Qemu-devel] [PATCH v3 09/18] sdcard: handles more commands in SPI mode, Philippe Mathieu-Daudé, 2018/01/22
- Re: [Qemu-devel] [PATCH v3 09/18] sdcard: handles more commands in SPI mode,
Alistair Francis <=
- [Qemu-devel] [PATCH v3 10/18] sdcard: handle CMD54 (SDIO), Philippe Mathieu-Daudé, 2018/01/22
- [Qemu-devel] [PATCH v3 11/18] sdcard: check the card is in correct state for APP CMD (CMD55), Philippe Mathieu-Daudé, 2018/01/22
- [Qemu-devel] [PATCH v3 12/18] sdcard: warn if host uses an incorrect address for APP CMD (CMD55), Philippe Mathieu-Daudé, 2018/01/22
- [Qemu-devel] [PATCH v3 13/18] sdcard: simplify SEND_IF_COND (CMD8), Philippe Mathieu-Daudé, 2018/01/22
- [Qemu-devel] [PATCH v3 14/18] sdcard: simplify SD_SEND_OP_COND (ACMD41), Philippe Mathieu-Daudé, 2018/01/22
- [Qemu-devel] [PATCH v3 15/18] sdcard: add SD SEND_TUNING_BLOCK (CMD19), Philippe Mathieu-Daudé, 2018/01/22