All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PULL 32/32] sdcard: simplify SD_SEND_OP_COND (ACMD41)
Date: Thu, 22 Feb 2018 15:23:07 +0000	[thread overview]
Message-ID: <20180222152307.7499-33-peter.maydell@linaro.org> (raw)
In-Reply-To: <20180222152307.7499-1-peter.maydell@linaro.org>

From: Philippe Mathieu-Daudé <f4bug@amsat.org>

replace switch(single case) -> if()

Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Reviewed-by: Alistair Francis <alistair.francis@xilinx.com>
Message-id: 20180215221325.7611-17-f4bug@amsat.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/sd/sd.c | 56 ++++++++++++++++++++++++++------------------------------
 1 file changed, 26 insertions(+), 30 deletions(-)

diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 25fce7d6b6..933890e86f 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -1512,45 +1512,41 @@ static sd_rsp_type_t sd_app_command(SDState *sd,
             sd->state = sd_transfer_state;
             return sd_r1;
         }
-        switch (sd->state) {
-        case sd_idle_state:
-            /* If it's the first ACMD41 since reset, we need to decide
-             * whether to power up. If this is not an enquiry ACMD41,
-             * we immediately report power on and proceed below to the
-             * ready state, but if it is, we set a timer to model a
-             * delay for power up. This works around a bug in EDK2
-             * UEFI, which sends an initial enquiry ACMD41, but
-             * assumes that the card is in ready state as soon as it
-             * sees the power up bit set. */
-            if (!FIELD_EX32(sd->ocr, OCR, CARD_POWER_UP)) {
-                if ((req.arg & ACMD41_ENQUIRY_MASK) != 0) {
-                    timer_del(sd->ocr_power_timer);
-                    sd_ocr_powerup(sd);
-                } else {
-                    trace_sdcard_inquiry_cmd41();
-                    if (!timer_pending(sd->ocr_power_timer)) {
-                        timer_mod_ns(sd->ocr_power_timer,
-                                     (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL)
-                                      + OCR_POWER_DELAY_NS));
-                    }
+        if (sd->state != sd_idle_state) {
+            break;
+        }
+        /* If it's the first ACMD41 since reset, we need to decide
+         * whether to power up. If this is not an enquiry ACMD41,
+         * we immediately report power on and proceed below to the
+         * ready state, but if it is, we set a timer to model a
+         * delay for power up. This works around a bug in EDK2
+         * UEFI, which sends an initial enquiry ACMD41, but
+         * assumes that the card is in ready state as soon as it
+         * sees the power up bit set. */
+        if (!FIELD_EX32(sd->ocr, OCR, CARD_POWER_UP)) {
+            if ((req.arg & ACMD41_ENQUIRY_MASK) != 0) {
+                timer_del(sd->ocr_power_timer);
+                sd_ocr_powerup(sd);
+            } else {
+                trace_sdcard_inquiry_cmd41();
+                if (!timer_pending(sd->ocr_power_timer)) {
+                    timer_mod_ns(sd->ocr_power_timer,
+                                 (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL)
+                                  + OCR_POWER_DELAY_NS));
                 }
             }
+        }
 
+        if (FIELD_EX32(sd->ocr & req.arg, OCR, VDD_VOLTAGE_WINDOW)) {
             /* We accept any voltage.  10000 V is nothing.
              *
              * Once we're powered up, we advance straight to ready state
              * unless it's an enquiry ACMD41 (bits 23:0 == 0).
              */
-            if (req.arg & ACMD41_ENQUIRY_MASK) {
-                sd->state = sd_ready_state;
-            }
-
-            return sd_r3;
-
-        default:
-            break;
+            sd->state = sd_ready_state;
         }
-        break;
+
+        return sd_r3;
 
     case 42:	/* ACMD42: SET_CLR_CARD_DETECT */
         switch (sd->state) {
-- 
2.16.1

  parent reply	other threads:[~2018-02-22 15:23 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-22 15:22 [Qemu-devel] [PULL 00/32] target-arm queue Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 01/32] target/arm: Fix register definitions for VMIDR and VMPIDR Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 02/32] raspi: Add "raspi3" machine type Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 03/32] hw/char/stm32f2xx_usart: fix TXE/TC bit handling Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 04/32] Fix ast2500 protection register emulation Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 05/32] hw/sd/milkymist-memcard: use qemu_log_mask() Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 06/32] hw/sd/milkymist-memcard: split realize() out of SysBusDevice init() Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 07/32] hw/sd/milkymist-memcard: expose a SDBus and connect the SDCard to it Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 08/32] hw/sd/ssi-sd: use the SDBus API, connect the SDCard to the bus Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 09/32] sdcard: reorder SDState struct members Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 10/32] sdcard: replace DPRINTF() by trace events Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 11/32] sdcard: add a trace event for command responses Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 12/32] sdcard: replace fprintf() by qemu_hexdump() Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 13/32] sdcard: add more trace events Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 14/32] sdcard: define SDMMC_CMD_MAX instead of using the magic '64' Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 15/32] sdcard: use G_BYTE from cutils Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 16/32] sdcard: use the registerfields API to access the OCR register Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 17/32] sdcard: Don't always set the high capacity bit Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 18/32] sdcard: update the CSD CRC register regardless the CSD structure version Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 19/32] sdcard: fix the 'maximum data transfer rate' to 25MHz Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 20/32] sdcard: clean the SCR register and add few comments Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 21/32] sdcard: remove commands from unsupported old MMC specification Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 22/32] sdcard: simplify using the ldst API Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 23/32] sdcard: use the correct masked OCR in the R3 reply Peter Maydell
2018-02-22 15:22 ` [Qemu-devel] [PULL 24/32] sdcard: use the registerfields API for the CARD_STATUS register masks Peter Maydell
2018-02-22 15:23 ` [Qemu-devel] [PULL 25/32] sdcard: handle CMD54 (SDIO) Peter Maydell
2018-02-22 15:23 ` [Qemu-devel] [PULL 26/32] sdcard: handle the Security Specification commands Peter Maydell
2018-02-22 15:23 ` [Qemu-devel] [PULL 27/32] sdcard: use a more descriptive label 'unimplemented_spi_cmd' Peter Maydell
2018-02-22 15:23 ` [Qemu-devel] [PULL 28/32] sdcard: handles more commands in SPI mode Peter Maydell
2018-02-22 15:23 ` [Qemu-devel] [PULL 29/32] sdcard: check the card is in correct state for APP CMD (CMD55) Peter Maydell
2018-02-22 15:23 ` [Qemu-devel] [PULL 30/32] sdcard: warn if host uses an incorrect address " Peter Maydell
2018-02-22 15:23 ` [Qemu-devel] [PULL 31/32] sdcard: simplify SEND_IF_COND (CMD8) Peter Maydell
2018-02-22 15:23 ` Peter Maydell [this message]
2018-02-23 10:04 ` [Qemu-devel] [PULL 00/32] target-arm queue Peter Maydell

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=20180222152307.7499-33-peter.maydell@linaro.org \
    --to=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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.