From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515014962269820.3434369066131; Wed, 3 Jan 2018 13:29:22 -0800 (PST) Received: from localhost ([::1]:37632 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqbB-0005VB-FH for importer@patchew.org; Wed, 03 Jan 2018 16:29:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51030) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqWq-0001oe-IX for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:24:53 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqWp-0007S0-OO for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:24:52 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:39745) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqWp-0007Re-Ju for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:24:51 -0500 Received: by mail-qk0-x242.google.com with SMTP id c5so3236865qkg.6 for ; Wed, 03 Jan 2018 13:24:51 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.24.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:24:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Awj6dxAsnqIRgMqnLPLS2WYOAAqorRUgnO+UEQ5UFDM=; b=bS2gmJQte2Lx3WnRwiHxW3YPlgJZ0ruZkS2tPA/Njxw88mZ9UOsxTMTDCISipsG/B0 XABXqALhRkObE+IAnTaLK60WqJ+xTTRUoBC6j+N4Q5q/G96PAlrZWtg8oZO0b+MGFcon zSLZ2ORYcoVpYdbRWP75fIa5G4iOFfTePtGcm9xHi9fg3HF1bHq1JWxU9szuHHEt+Gs5 9OpoS15Ce/Md55WMY8S7Jq9it8fu/q8IFaAKJ/uKuw0ePqz1f/lPVw1/ZGNFFmZlJQk8 NkWJAP7dXfMra77Wlg8qXhrIiEnugHCPDP4fubUoTa6eqd/0BEtPGd+G5a1FAbKZWGqA nawA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=Awj6dxAsnqIRgMqnLPLS2WYOAAqorRUgnO+UEQ5UFDM=; b=T1OdZ+v+HxIC35xIsxvVoaeO4768cR5UY07gNQl9ckhWu18SwstdFk31+HB9cZzRp7 +1n4V4KIbVqZLgrpSk6eN+nOPE+AbTNe6aL1yPfSNNtUAmhojZwMoqreDDsSk46w3mIX qA56N2max18ee++I6ed2vLFzzajqQGAiMjjgVlRjOX3n2Twji90GQ6rt2ACSzgrNWCUk iWimTg5kPTug1Y3T+4PBYEQTkhphEtxhMVOZjamX3I6yME+izeFvNrO2t/dFC/hf8cCS QgjWiUNHUn5e7hY3vMNa3rK336TXvMmHEK4fbQHp5hYpO9zjbSvP9xnZ7GbXLYbjcCG9 CpSw== X-Gm-Message-State: AKGB3mKPCceQZTXLKyepnyKCf1DMg/WkNDmHWgdQsAdZ9l49LwwNLi9q 30qOfh6H2/6DydGbg0JhISA= X-Google-Smtp-Source: ACJfBostlChu277MQQV13ubuu4BqSZvs6lFpa4CaRGGD7ZqdgZx5Ex+GDO1OHqwlyGzEu5Ktv1NpCQ== X-Received: by 10.55.113.129 with SMTP id m123mr3316652qkc.271.1515014691101; Wed, 03 Jan 2018 13:24:51 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:12 -0300 Message-Id: <20180103212436.15762-2-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PATCH v2 01/25] sdcard: reorder SDState struct members X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 place card registers first, this will ease further code movements. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sd.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 7755bedfa0..180c43e218 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -89,16 +89,15 @@ enum SDCardStates { struct SDState { DeviceState parent_obj; =20 - uint32_t mode; /* current card mode, one of SDCardModes */ - int32_t state; /* current card state, one of SDCardStates */ + /* SD Memory Card Registers */ uint32_t ocr; - QEMUTimer *ocr_power_timer; uint8_t scr[8]; uint8_t cid[16]; uint8_t csd[16]; uint16_t rca; uint32_t card_status; uint8_t sd_status[64]; + uint32_t vhs; bool wp_switch; unsigned long *wp_groups; @@ -113,6 +112,9 @@ struct SDState { uint8_t function_group[6]; =20 bool spi; + + uint32_t mode; /* current card mode, one of SDCardModes */ + int32_t state; /* current card state, one of SDCardStates */ uint8_t current_cmd; /* True if we will handle the next command as an ACMD. Note that this = does * *not* track the APP_CMD status bit! @@ -125,6 +127,7 @@ struct SDState { qemu_irq readonly_cb; qemu_irq inserted_cb; BlockBackend *blk; + QEMUTimer *ocr_power_timer; =20 bool enable; }; --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515014814628645.8149444150565; Wed, 3 Jan 2018 13:26:54 -0800 (PST) Received: from localhost ([::1]:37619 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqYn-0003H8-JT for importer@patchew.org; Wed, 03 Jan 2018 16:26:53 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51207) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqWv-0001u0-Eh for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqWu-0007XN-27 for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:24:57 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:41732) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqWt-0007Wq-Sy for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:24:55 -0500 Received: by mail-qk0-x243.google.com with SMTP id a8so3250339qkb.8 for ; Wed, 03 Jan 2018 13:24:55 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.24.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:24:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=UYmynfAXMAMnxLSD/cb47+6heKkgM3WT1ccKjQPEJSc=; b=GhrZ/+GZ+Rhc3x1fHNjKVF2kOGBtQbJeHzHvvcV65t49mmSf9nf/kdCTyu0Qi874O7 vmrV73TAExoBO11u+1WYiixknqTFjVFt4uBdmVQ2eU7qm6p2AbpLm6Li7gVcs3jYaGi8 vU7Kk7h+YEcIU6x9MonxYSH40j1w25W+8LyZd0pqYIex1J17x0aIRhC65lhR0xM+Fjpc NL57RMUYsj9MIXftEeR2w0+DQU6F9DtmTlZvoa+7nO83/0/82TEdvLJ4qX2SXFF3BrM9 3VY7CPJy92kELX7nZQJiV6K/z2gLJ23h0pwW3WKbi35NvXBIIGeki1vlYs/NG4K+TT1o EkTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=UYmynfAXMAMnxLSD/cb47+6heKkgM3WT1ccKjQPEJSc=; b=suEwLhD3g5KAAdEgiWZjtGVzrllciYN3fBIJmhc251h3jbIfstRoQgfJcUsb6A2GgW F27CgL7nX1NLNO2AKuxaHeWXRXGyfePwyw+rN7yhzXvEATQ7qH9knQYjwV/MgaW2UrG1 tIlB+Mh11A8W+ghFXpmGRNnt13E1ux+qoitAaPxVWA5G3K8YhHOiS6etBLhyugn9UCNt 2UIPXh1j5ivNAwIU1UIEzW10EQGRiv6rJa61C8uURR7W4DJWJRLNSwgZHcwx7lQKYh28 9Xg/zAUz3EJOpSjPMHBXsPSYD4ulPrGGTXJwqAkVmyJ4HpDNMXsN+99eNFf3NKWFS0N3 jfWw== X-Gm-Message-State: AKGB3mIcM0AloEJQw5fBQ3mhxklEwGKK6YAT7PhGslMV6Ob1FuBSsLlv zzS6m9K7DgzvXCpskiBS6E2A1E/h X-Google-Smtp-Source: ACJfBovzK1+1/laveJ+aJqZfxtcyddBj7Izf/N6P1+M19uMnLe0qQBBeiaciHKLV8x2Bf4RMhbbozA== X-Received: by 10.55.143.131 with SMTP id r125mr3621849qkd.215.1515014695399; Wed, 03 Jan 2018 13:24:55 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:13 -0300 Message-Id: <20180103212436.15762-3-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PATCH v2 02/25] sdcard: replace DPRINTF() by trace events X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 31 +++++++++++++++++++++++++------ hw/sd/trace-events | 6 ++++++ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 180c43e218..df2e099151 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -41,6 +41,7 @@ #include "qemu/error-report.h" #include "qemu/timer.h" #include "qemu/log.h" +#include "trace.h" =20 //#define DEBUG_SD 1 =20 @@ -132,6 +133,25 @@ struct SDState { bool enable; }; =20 +static const char *sd_state_name(enum SDCardStates state) +{ + static const char *state_name[] =3D { + [sd_idle_state] =3D "idle", + [sd_ready_state] =3D "ready", + [sd_identification_state] =3D "identification", + [sd_standby_state] =3D "standby", + [sd_transfer_state] =3D "transfer", + [sd_sendingdata_state] =3D "sendingdata", + [sd_receivingdata_state] =3D "receivingdata", + [sd_programming_state] =3D "programming", + [sd_disconnect_state] =3D "disconnect", + }; + if (state =3D=3D sd_inactive_state) { + return "inactive"; + } + return state_name[state]; +} + static void sd_set_mode(SDState *sd) { switch (sd->state) { @@ -752,6 +772,8 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, uint32_t rca =3D 0x0000; uint64_t addr =3D (sd->ocr & (1 << 30)) ? (uint64_t) req.arg << 9 : re= q.arg; =20 + trace_sdcard_normal_command(req.cmd, req.arg, sd_state_name(sd->state)= ); + /* Not interpreting this as an app command */ sd->card_status &=3D ~APP_CMD; =20 @@ -766,7 +788,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, sd->multi_blk_cnt =3D 0; } =20 - DPRINTF("CMD%d 0x%08x state %d\n", req.cmd, req.arg, sd->state); switch (req.cmd) { /* Basic commands (Class 0 and Class 1) */ case 0: /* CMD0: GO_IDLE_STATE */ @@ -1286,8 +1307,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, return sd_r1; =20 case 56: /* CMD56: GEN_CMD */ - fprintf(stderr, "SD: GEN_CMD 0x%08x\n", req.arg); - switch (sd->state) { case sd_transfer_state: sd->data_offset =3D 0; @@ -1321,7 +1340,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, static sd_rsp_type_t sd_app_command(SDState *sd, SDRequest req) { - DPRINTF("ACMD%d 0x%08x\n", req.cmd, req.arg); + trace_sdcard_app_command(req.cmd, req.arg); sd->card_status |=3D APP_CMD; switch (req.cmd) { case 6: /* ACMD6: SET_BUS_WIDTH */ @@ -1581,8 +1600,7 @@ send_response: =20 static void sd_blk_read(SDState *sd, uint64_t addr, uint32_t len) { - DPRINTF("sd_blk_read: addr =3D 0x%08llx, len =3D %d\n", - (unsigned long long) addr, len); + trace_sdcard_read_block(addr, len); if (!sd->blk || blk_pread(sd->blk, addr, sd->data, len) < 0) { fprintf(stderr, "sd_blk_read: read error on host side\n"); } @@ -1590,6 +1608,7 @@ static void sd_blk_read(SDState *sd, uint64_t addr, u= int32_t len) =20 static void sd_blk_write(SDState *sd, uint64_t addr, uint32_t len) { + trace_sdcard_write_block(addr, len); if (!sd->blk || blk_pwrite(sd->blk, addr, sd->data, len, 0) < 0) { fprintf(stderr, "sd_blk_write: write error on host side\n"); } diff --git a/hw/sd/trace-events b/hw/sd/trace-events index e9f0ea6044..86c1687572 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -15,6 +15,12 @@ sdhci_read_dataport(uint16_t data_count) "all %u bytes o= f data have been read fr sdhci_write_dataport(uint16_t data_count) "write buffer filled with %u byt= es of data" sdhci_led(bool state) "LED: %u" =20 +# hw/sd/sd.c +sdcard_normal_command(uint8_t cmd, uint32_t arg, const char *state) "CMD%d= arg 0x%08x (state %s)" +sdcard_app_command(uint8_t acmd, uint32_t arg) "ACMD%d arg 0x%08x" +sdcard_read_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x= %x" +sdcard_write_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0= x%x" + # hw/sd/milkymist-memcard.c milkymist_memcard_memory_read(uint32_t addr, uint32_t value) "addr 0x%08x = value 0x%08x" milkymist_memcard_memory_write(uint32_t addr, uint32_t value) "addr 0x%08x= value 0x%08x" --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515014820736131.91775727811444; Wed, 3 Jan 2018 13:27:00 -0800 (PST) Received: from localhost ([::1]:37620 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqYq-0003Ju-S6 for importer@patchew.org; Wed, 03 Jan 2018 16:26:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51291) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqWz-0001xS-If for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqWy-0007b3-7m for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:01 -0500 Received: from mail-qt0-x22e.google.com ([2607:f8b0:400d:c0d::22e]:41721) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqWy-0007ah-2v for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:00 -0500 Received: by mail-qt0-x22e.google.com with SMTP id i40so3789435qti.8 for ; Wed, 03 Jan 2018 13:25:00 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.24.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:24:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=yUqsh/zSZAAM1IBghF3xAwJP+F0aVnNZAHE+FsfqeBo=; b=BsLuRkABI1ANMQAkwXl8R7akOtAdrl5ZhgOzWKZcFQJ06mT6xgIv1gFFfU8wB2EV/b 76OOx07YU2e+ccRvrYsQ/swrCijDdanaR9GQJSHnHPy/tzTdQjcsX3z3TPlqRSZd20Yz Y6x34Jw0BMVeepZdQUCs2teZ5GxN7tB1bRf+q7x38nHZWLrvwrEgWHoa6td7A8rHy0+r BQc235JvlXiSZdZuolgWET6eYvOhDWqtWR2ckDqtllyVHhj41fDl+KgQktzAI9v7X2hq VX/DjOYgfR2Kja9ovIYEIEtAOo6gc8sPapHzod1Iexiw643GkWUcy8ySinNoUQkUJwsu AhrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=yUqsh/zSZAAM1IBghF3xAwJP+F0aVnNZAHE+FsfqeBo=; b=mu7DyNG04abtCeuS0kOgVtOs+CzN4A3s5BFqNQ6rykncqx3oLgir5ptZbxoCebwXZx zLdcqhcI3PJRg6NSKEclNxqBGAwDksgGYXpl2J2A2VcUBaJwWAudNzyMoHVw9zQV0cAx wJaI/6of1zfZ+IAPpcSLBBc4wNQ+9A7xDWrA2z8W8DVGAIU9tb0KxOJZgdULBsW5gxrw oE14Ymb1BLMh/o7/d2kwoHxcjvFNj7bSi7yV0ANZGyAmBEiu9b7jBFwe1DyDCZNfre9e Xz4JePQ8yTq+muRwTG/qzuQOOi6riplDYjprZ94p9nHjFafRFNDO+W1JLZTisu4Zx9/A ODqA== X-Gm-Message-State: AKGB3mJqhiPQnl3LXZUr5th1jriR2sFgn61WBqmnXYfduLH+zJMVeUoq aUPY0uITMX4YLsT+8/Yf12U= X-Google-Smtp-Source: ACJfBov+tgJVW7GRhtEilgOrHGoE4IVKPTWM9zi9k45zAVSSnJ46dAWo5EL5wZlAYmv+GZzmmu8ewQ== X-Received: by 10.200.25.47 with SMTP id t44mr3596516qtj.323.1515014699595; Wed, 03 Jan 2018 13:24:59 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:14 -0300 Message-Id: <20180103212436.15762-4-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::22e Subject: [Qemu-devel] [PATCH v2 03/25] sdcard: add more trace events X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 12 ++++++++++++ hw/sd/trace-events | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index df2e099151..f0eaac4d42 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -440,6 +440,7 @@ static void sd_reset(DeviceState *dev) uint64_t size; uint64_t sect; =20 + trace_sdcard_reset(); if (sd->blk) { blk_get_geometry(sd->blk, §); } else { @@ -491,7 +492,10 @@ static void sd_cardchange(void *opaque, bool load, Err= or **errp) bool readonly =3D sd_get_readonly(sd); =20 if (inserted) { + trace_sdcard_inserted(readonly); sd_reset(dev); + } else { + trace_sdcard_ejected(); } =20 /* The IRQ notification is for legacy non-QOM SD controller devices; @@ -623,6 +627,7 @@ static void sd_erase(SDState *sd) uint64_t erase_start =3D sd->erase_start; uint64_t erase_end =3D sd->erase_end; =20 + trace_sdcard_erase(); if (!sd->erase_start || !sd->erase_end) { sd->card_status |=3D ERASE_SEQ_ERROR; return; @@ -712,6 +717,11 @@ static void sd_lock_command(SDState *sd) else pwd_len =3D 0; =20 + if (lock) { + trace_sdcard_lock(); + } else { + trace_sdcard_unlock(); + } if (erase) { if (!(sd->card_status & CARD_IS_LOCKED) || sd->blk_len > 1 || set_pwd || clr_pwd || lock || sd->wp_switch || @@ -1635,6 +1645,7 @@ void sd_write_data(SDState *sd, uint8_t value) if (sd->card_status & (ADDRESS_ERROR | WP_VIOLATION)) return; =20 + trace_sdcard_write_data(value); switch (sd->current_cmd) { case 24: /* CMD24: WRITE_SINGLE_BLOCK */ sd->data[sd->data_offset ++] =3D value; @@ -1772,6 +1783,7 @@ uint8_t sd_read_data(SDState *sd) =20 io_len =3D (sd->ocr & (1 << 30)) ? 512 : sd->blk_len; =20 + trace_sdcard_read_data(io_len); switch (sd->current_cmd) { case 6: /* CMD6: SWITCH_FUNCTION */ ret =3D sd->data[sd->data_offset ++]; diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 86c1687572..727d6fd904 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -18,8 +18,16 @@ sdhci_led(bool state) "LED: %u" # hw/sd/sd.c sdcard_normal_command(uint8_t cmd, uint32_t arg, const char *state) "CMD%d= arg 0x%08x (state %s)" sdcard_app_command(uint8_t acmd, uint32_t arg) "ACMD%d arg 0x%08x" +sdcard_reset(void) "" +sdcard_inserted(bool readonly) "read_only: %d" +sdcard_ejected(void) "" +sdcard_erase(void) "" +sdcard_lock(void) "" +sdcard_unlock(void) "" sdcard_read_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0x= %x" sdcard_write_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0= x%x" +sdcard_write_data(uint8_t value) "value 0x%02x" +sdcard_read_data(int length) "len %d" =20 # hw/sd/milkymist-memcard.c milkymist_memcard_memory_read(uint32_t addr, uint32_t value) "addr 0x%08x = value 0x%08x" --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515014979263389.0142094419921; Wed, 3 Jan 2018 13:29:39 -0800 (PST) Received: from localhost ([::1]:37635 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqbS-0005mc-8p for importer@patchew.org; Wed, 03 Jan 2018 16:29:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51373) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqX3-00021a-LX for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqX2-0007ef-JG for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:05 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:45970) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqX2-0007eN-Eq for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:04 -0500 Received: by mail-qt0-x241.google.com with SMTP id g10so3771707qtj.12 for ; Wed, 03 Jan 2018 13:25:04 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.24.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=MB4HT3siDS/4h8YDboVhtxaMEGU58HzutDMDzup43PM=; b=pmNpTyI06iPSeLWhrDnHuc6NesrCRKVOAeATnj8XcovbSJirQ9WMm++10j3XViUyf/ srf8cf8a3oTGbM0kxGBRZ+9744XGSTCbNmvCYDJu5SMevCdxAfrV/+IKcYlLJOEQmEyU oPj6FJYmHtHxi2+ps6HQMEndkMdlDZh31SKi9OnC8f0p6D+yKqtGhxmx8czAoN5zJNJz FVxz39Obnisvj91JfLplxKUWEvO8wvL0tKldA3jxyHFlXzKdEHuI0ZTEeaSoW9aH6Ygl TLKIDkIa1h6fsuJfB3BCpLoWmgyr96JInmvUjogl8FFUiI7jWS4IPz+1jWW+/f+fI95J xskA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=MB4HT3siDS/4h8YDboVhtxaMEGU58HzutDMDzup43PM=; b=ZIbihGwyR4b4S7GaXlIEmbmYWaoYmiVhwmyhyCklOO75tQMJtO6S+Ht+JbM4ovbujx g9pAbWMzeE1cOixl31q8DVRVf41yh6V5oedluwhFRR7dN/b4cJ/CzSG2y+AkxTQt0kNi UkVDA9XaMtinrYLfyzODuwV40rcN3lXWDfIqzyMqfWSSRSjEUS1sKn5LytxmcIA5f89a /SLZEb9Ui3xx/0UVVfNjU3NGPK/Kp6X5sCt8m4OLviU05HLOebDEqEEiESIB09b2CS5c C7e9Z57ZvoCR/ZgaPqJX+xmTw2GJpXK0YSjJhTwXm4A90wBXrk9w9mkYfnZkYNTdL1o1 cXcg== X-Gm-Message-State: AKGB3mIszjEulDDkM/NoAbPYTbhJseAg4jpNJCnGocR3kIpbwc3WLtC/ xVYamxMV6qF1xRV2CWUCqRQ= X-Google-Smtp-Source: ACJfBosY7I63rpF0Rbob09UcnkALBRcwnaY7QQkPy8C6gNWxfzMiy5xyAOifJOUOHM385neTM9DzDQ== X-Received: by 10.200.51.20 with SMTP id t20mr3751735qta.150.1515014703948; Wed, 03 Jan 2018 13:25:03 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:15 -0300 Message-Id: <20180103212436.15762-5-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PATCH v2 04/25] sdcard: define SDCARD_CMD_MAX instead of using the magic '64' X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sd.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index f0eaac4d42..489d13681d 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -56,6 +56,8 @@ do { fprintf(stderr, "SD: " fmt , ## __VA_ARGS__); } whil= e (0) #define OCR_POWER_UP 0x80000000 #define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ =20 +#define SDCARD_CMD_MAX 64 + typedef enum { sd_r0 =3D 0, /* no response */ sd_r1, /* normal response command */ @@ -176,18 +178,21 @@ static void sd_set_mode(SDState *sd) } } =20 -static const sd_cmd_type_t sd_cmd_type[64] =3D { +static const sd_cmd_type_t sd_cmd_type[SDCARD_CMD_MAX] =3D { 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, + /* 16 */ sd_ac, sd_adtc, sd_adtc, sd_none, sd_none, sd_none, sd_none, sd_none, sd_adtc, sd_adtc, sd_adtc, sd_adtc, sd_ac, sd_ac, sd_adtc, sd_none, + /* 32 */ sd_ac, sd_ac, sd_none, sd_none, sd_none, sd_none, sd_ac, sd_none, sd_none, sd_none, sd_bc, sd_none, sd_none, sd_none, sd_none, sd_none, + /* 48 */ sd_none, sd_none, sd_none, sd_none, sd_none, sd_none, sd_none, sd_ac, sd_adtc, sd_none, sd_none, sd_none, sd_none, sd_none, sd_none, sd_none, }; =20 -static const int sd_cmd_class[64] =3D { +static const int sd_cmd_class[SDCARD_CMD_MAX] =3D { 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 6, 6, 6, 6, 5, 5, 10, 10, 10, 10, 5, 9, 9, 9, 7, 7, 7, 7, 7, 7, @@ -787,8 +792,8 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, /* Not interpreting this as an app command */ sd->card_status &=3D ~APP_CMD; =20 - if (sd_cmd_type[req.cmd & 0x3F] =3D=3D sd_ac - || sd_cmd_type[req.cmd & 0x3F] =3D=3D sd_adtc) { + if (sd_cmd_type[req.cmd] =3D=3D sd_ac + || sd_cmd_type[req.cmd] =3D=3D sd_adtc) { rca =3D req.arg >> 16; } =20 @@ -1495,8 +1500,8 @@ static int cmd_valid_while_locked(SDState *sd, SDRequ= est *req) if (req->cmd =3D=3D 16 || req->cmd =3D=3D 55) { return 1; } - return sd_cmd_class[req->cmd & 0x3F] =3D=3D 0 - || sd_cmd_class[req->cmd & 0x3F] =3D=3D 7; + return sd_cmd_class[req->cmd] =3D=3D 0 + || sd_cmd_class[req->cmd] =3D=3D 7; } =20 int sd_do_command(SDState *sd, SDRequest *req, @@ -1515,6 +1520,12 @@ int sd_do_command(SDState *sd, SDRequest *req, goto send_response; } =20 + if (req->cmd >=3D SDCARD_CMD_MAX) { + qemu_log_mask(LOG_GUEST_ERROR, "SD: incorrect command 0x%02x\n", + req->cmd); + req->cmd &=3D 0x3f; + } + if (sd->card_status & CARD_IS_LOCKED) { if (!cmd_valid_while_locked(sd, req)) { sd->card_status |=3D ILLEGAL_COMMAND; --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515014979173947.8575443581394; Wed, 3 Jan 2018 13:29:39 -0800 (PST) Received: from localhost ([::1]:37634 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqbS-0005mK-Ay for importer@patchew.org; Wed, 03 Jan 2018 16:29:38 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51551) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqXB-00028F-87 for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqX6-0007iR-Up for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:13 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:45709) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqX6-0007i8-OL for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:08 -0500 Received: by mail-qk0-x241.google.com with SMTP id o126so3241242qke.12 for ; Wed, 03 Jan 2018 13:25:08 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=mHisCqElQLWAy+ci/EGHb/WLOFiDe7sllxWppE+ssB8=; b=U+a0YfgXYJmKt2xP/fYi7Wg/+jcdjHCoQLIYmY+vRtLUDpD9qPWfzpm5nN4ffiIm+8 PpRM+PR8v9oEhkAKb52lQWjbTKUDHwv0HrQ75fsVF0Vvr2pOBqKkD9wQ42rvQyOM8j0c J9KHVq85R8fNPhxx7P/NhlImJVWkALU00LOOpViO8SBQEsbmmufz6EjwoJy1eHUhoOi7 LEbGHSnA6eiqy8K3Bo4LECA9WcsjvdFdTeyTpkoVTDdXekc/dzxQ9/NHPg3UuJpZlHng +V52M8iif58iCv/RUmgEQExGOI29qsz06Qtwdpnt+pP/I3K7vdW68DI6cb+cltv8e4iu Cuag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=mHisCqElQLWAy+ci/EGHb/WLOFiDe7sllxWppE+ssB8=; b=r5YfreXX8GFqzpBiU2A1IeSonHQchrCcRg0WQsGzCYsLjhXbST/rDv2ShaNtiTCrbU pyi+FgYmimQYY/BGkRtexf/ILW3oiPl5s5jpBMd0/Sex2LBYskKQ/qLBcmJbSNu6YEyX p0r/VucjPZNVAbIjZMzfUAhNspQ0RGWcX0aEQ+ZheUCrvibYNSzLEWcy3H+BehDEIu8Z NewRu2DZ9zw33vZKLr5rsn/qQsyMVlaodgxTlAullq10ZRQ7El8Lpw9QvDa7OLpPW6Fm n5dFlrilgiJWpih9GSWxmpnMBinczvj9HKwG24ezg/SGyNGPlP3pdjcR7D2DuhCRKiNw Mi0g== X-Gm-Message-State: AKGB3mKz51MqHWsuEjESgsSWdIUnk+1WN2qDDo04HwVqYdXUjUyPsZyq /+Z4yY96atDDG3EUG1clRCc= X-Google-Smtp-Source: ACJfBot1KisAB6dFD+11fA0+LEVW14RSae/mzKBmgCZbyC4warK/5N/ZH4iAjnHmZvVvHvxoiRvXSA== X-Received: by 10.55.171.26 with SMTP id u26mr3589981qke.269.1515014708201; Wed, 03 Jan 2018 13:25:08 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:16 -0300 Message-Id: <20180103212436.15762-6-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PATCH v2 05/25] sdcard: display command name when tracing CMD/ACMD X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++= +--- hw/sd/trace-events | 4 +-- 2 files changed, 73 insertions(+), 6 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 489d13681d..7bb5c6fb5e 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -133,6 +133,7 @@ struct SDState { QEMUTimer *ocr_power_timer; =20 bool enable; + const char *proto_name; }; =20 static const char *sd_state_name(enum SDCardStates state) @@ -154,6 +155,66 @@ static const char *sd_state_name(enum SDCardStates sta= te) return state_name[state]; } =20 +static const char *sd_cmd_abbreviation(uint8_t cmd) +{ + static const char *cmd_abbrev[SDCARD_CMD_MAX] =3D { + [0] =3D "GO_IDLE_STATE", + [2] =3D "ALL_SEND_CID", [3] =3D "SEND_RELATIVE_A= DDR", + [4] =3D "SET_DSR", [5] =3D "IO_SEND_OP_COND= ", + [6] =3D "SWITCH_FUNC", [7] =3D "SELECT/DESELECT= _CARD", + [8] =3D "SEND_IF_COND", [9] =3D "SEND_CSD", + [10] =3D "SEND_CID", [11] =3D "VOLTAGE_SWITCH", + [12] =3D "STOP_TRANSMISSION", [13] =3D "SEND_STATUS", + [15] =3D "GO_INACTIVE_STATE= ", + [16] =3D "SET_BLOCKLEN", [17] =3D "READ_SINGLE_BLO= CK", + [18] =3D "READ_MULTIPLE_BLOCK", [19] =3D "SEND_TUNING_BLO= CK", + [20] =3D "SPEED_CLASS_CONTROL", [21] =3D "DPS_spec", + [23] =3D "SET_BLOCK_COUNT", + [24] =3D "WRITE_BLOCK", [25] =3D "WRITE_MULTIPLE_= BLOCK", + [26] =3D "MANUF_RSVD", [27] =3D "PROGRAM_CSD", + [28] =3D "SET_WRITE_PROT", [29] =3D "CLR_WRITE_PROT", + [30] =3D "SEND_WRITE_PROT", + [32] =3D "ERASE_WR_BLK_START", [33] =3D "ERASE_WR_BLK_EN= D", + [34] =3D "SW_FUNC_RSVD", [35] =3D "SW_FUNC_RSVD", + [36] =3D "SW_FUNC_RSVD", [37] =3D "SW_FUNC_RSVD", + [38] =3D "ERASE", + [40] =3D "DPS_spec", + [42] =3D "LOCK_UNLOCK", [43] =3D "Q_MANAGEMENT", + [44] =3D "Q_TASK_INFO_A", [45] =3D "Q_TASK_INFO_B", + [46] =3D "Q_RD_TASK", [47] =3D "Q_WR_TASK", + [48] =3D "READ_EXTR_SINGLE", [49] =3D "WRITE_EXTR_SING= LE", + [50] =3D "SW_FUNC_RSVD", /* FIXME */ + [52] =3D "IO_RW_DIRECT", [53] =3D "IO_RW_EXTENDED", + [54] =3D "SDIO_RSVD", [55] =3D "APP_CMD", + [56] =3D "GEN_CMD", [57] =3D "SW_FUNC_RSVD", + [58] =3D "READ_EXTR_MULTI", [59] =3D "WRITE_EXTR_MULT= I", + [60] =3D "MANUF_RSVD", [61] =3D "MANUF_RSVD", + [62] =3D "MANUF_RSVD", [63] =3D "MANUF_RSVD", + }; + return cmd_abbrev[cmd] ? cmd_abbrev[cmd] : "UNKNOWN_CMD"; +} + +static const char *sd_acmd_abbreviation(uint8_t cmd) +{ + static const char *acmd_abbrev[SDCARD_CMD_MAX] =3D { + [6] =3D "SET_BUS_WIDTH", + [13] =3D "SD_STATUS", + [14] =3D "DPS_spec", [15] =3D "DPS_spec", + [16] =3D "DPS_spec", + [18] =3D "SECU_spec", + [22] =3D "SEND_NUM_WR_BLOCKS", [23] =3D "SET_WR_BLK_ERASE_C= OUNT", + [41] =3D "SD_SEND_OP_COND", + [42] =3D "SET_CLR_CARD_DETECT", + [51] =3D "SEND_SCR", + [52] =3D "SECU_spec", [53] =3D "SECU_spec", + [54] =3D "SECU_spec", + [56] =3D "SECU_spec", [57] =3D "SECU_spec", + [58] =3D "SECU_spec", [59] =3D "SECU_spec", + }; + + return acmd_abbrev[cmd] ? acmd_abbrev[cmd] : "UNKNOWN_ACMD"; +} + static void sd_set_mode(SDState *sd) { switch (sd->state) { @@ -781,13 +842,16 @@ static void sd_lock_command(SDState *sd) sd->card_status &=3D ~CARD_IS_LOCKED; } =20 -static sd_rsp_type_t sd_normal_command(SDState *sd, - SDRequest req) +static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) { uint32_t rca =3D 0x0000; uint64_t addr =3D (sd->ocr & (1 << 30)) ? (uint64_t) req.arg << 9 : re= q.arg; =20 - trace_sdcard_normal_command(req.cmd, req.arg, sd_state_name(sd->state)= ); + if (req.cmd !=3D 55 || sd->expecting_acmd) { + trace_sdcard_normal_command(sd->proto_name, + sd_cmd_abbreviation(req.cmd), req.cmd, + req.arg, sd_state_name(sd->state)); + } =20 /* Not interpreting this as an app command */ sd->card_status &=3D ~APP_CMD; @@ -1355,7 +1419,8 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, static sd_rsp_type_t sd_app_command(SDState *sd, SDRequest req) { - trace_sdcard_app_command(req.cmd, req.arg); + trace_sdcard_app_command(sd->proto_name, sd_acmd_abbreviation(req.cmd), + req.cmd, req.arg, sd_state_name(sd->state)); sd->card_status |=3D APP_CMD; switch (req.cmd) { case 6: /* ACMD6: SET_BUS_WIDTH */ @@ -1935,6 +2000,8 @@ static void sd_realize(DeviceState *dev, Error **errp) SDState *sd =3D SD_CARD(dev); int ret; =20 + sd->proto_name =3D sd->spi ? "SPI" : "SD"; + if (sd->blk && blk_is_read_only(sd->blk)) { error_setg(errp, "Cannot use read-only drive as SD card"); return; diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 727d6fd904..25ab339f97 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -16,8 +16,8 @@ sdhci_write_dataport(uint16_t data_count) "write buffer f= illed with %u bytes of sdhci_led(bool state) "LED: %u" =20 # hw/sd/sd.c -sdcard_normal_command(uint8_t cmd, uint32_t arg, const char *state) "CMD%d= arg 0x%08x (state %s)" -sdcard_app_command(uint8_t acmd, uint32_t arg) "ACMD%d arg 0x%08x" +sdcard_normal_command(const char *proto, const char *cmd_desc, uint8_t cmd= , uint32_t arg, const char *state) "%s %20s/ CMD%02d arg 0x%08x (state %s)" +sdcard_app_command(const char *proto, const char *acmd_desc, uint8_t acmd,= uint32_t arg, const char *state) "%s %23s/ACMD%02d arg 0x%08x (state %s)" sdcard_reset(void) "" sdcard_inserted(bool readonly) "read_only: %d" sdcard_ejected(void) "" --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015164700703.3275748803852; Wed, 3 Jan 2018 13:32:44 -0800 (PST) Received: from localhost ([::1]:37659 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqeR-0008RV-Oo for importer@patchew.org; Wed, 03 Jan 2018 16:32:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51562) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqXC-000295-14 for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqXB-0007p2-AU for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:14 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:45711) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqXA-0007oQ-TI for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:13 -0500 Received: by mail-qk0-x243.google.com with SMTP id o126so3241472qke.12 for ; Wed, 03 Jan 2018 13:25:12 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=o9FcfNZsTiyqNN/4WRLipE71g6Z8KAv8hG42KdzEsSY=; b=Py7IIYbUaGGOPPv4nmnYqDBDnn0SDwDZ4l+XWCLYvLiFLDfBRtVUS/A3fV12+dxDaP aCQOvSx3V/tZO1pzhAVTiusKdGv+UQ3JlbjM+wayn2pauo7Hzpl7enBUYzhOeQQiwFPz e0a9Q0IMtlPjmavXEkDYp5dX6GUvab8UrsU1iz31Tw/iHfSASu4NAHimAFq9jQxBsV78 HEBeXtpZFGbh15H1XC73M38fl3OjdDo/+C94CN3yfPxxuvZUyQOUrlSYw5TUUW6lN9Of CCI36OlNormwtD3NHPQ3Wl971zYk667fpO1roDpH4p2/KcrQJNLY3jYRczCkcLnVba8Q mBdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=o9FcfNZsTiyqNN/4WRLipE71g6Z8KAv8hG42KdzEsSY=; b=rPX852TO5QIiUXQX0k3wuj+4Xs7VV1IU3UIcoN83WT3ylkCJUmjhM21gY6AdezvYHm sjBwvNvsc8n3Z1T31ey5fXHxfJfmes42eYjiKlkHcqkj2aT0CD6LI99/gf+ebUPdceke 3K0Z+s0oTwNOeX9JW3+/UD/hSpmiV5lQxKvjmz5OHMciq02etPPioObSe2DZmQzawEbw z7hQkG/sl+XGX88nksDwueMQNGc9b3sFpjviQPXwZYCVdhgzqZ+8PU0htcnhENXiYQF/ 3depzDxJKLDyI9kyT58Q7mJGk5wvlLWtLe88pWE7iZlbMyim0vGj0gnPmltoNGk0n7D4 hzig== X-Gm-Message-State: AKGB3mK4H2/iIfZQvrMC/95hgFBPD5qUGTv5fHFw+ovAY7ctS2i7iK6S nkcKCR7cLIRRXAusDCvn7Q0= X-Google-Smtp-Source: ACJfBosbGoZEwv2k3f1Q//Pg9oVTwXZo9pYjJCdwMKrgwXo1O0y2MbR4W9PyfnRvdu7Eocbl+i2C4w== X-Received: by 10.55.76.10 with SMTP id z10mr3628638qka.346.1515014712512; Wed, 03 Jan 2018 13:25:12 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:17 -0300 Message-Id: <20180103212436.15762-7-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PATCH v2 06/25] sdcard: let cmd_valid_while_locked() returns a bool X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 7bb5c6fb5e..b0e54f69d8 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1549,7 +1549,7 @@ static sd_rsp_type_t sd_app_command(SDState *sd, return sd_illegal; } =20 -static int cmd_valid_while_locked(SDState *sd, SDRequest *req) +static bool cmd_valid_while_locked(SDState *sd, SDRequest *req) { /* Valid commands in locked state: * basic class (0) @@ -1563,7 +1563,7 @@ static int cmd_valid_while_locked(SDState *sd, SDRequ= est *req) return req->cmd =3D=3D 41 || req->cmd =3D=3D 42; } if (req->cmd =3D=3D 16 || req->cmd =3D=3D 55) { - return 1; + return true; } return sd_cmd_class[req->cmd] =3D=3D 0 || sd_cmd_class[req->cmd] =3D=3D 7; --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 151501516898846.19028512654518; Wed, 3 Jan 2018 13:32:48 -0800 (PST) Received: from localhost ([::1]:37660 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqeW-0008TE-5k for importer@patchew.org; Wed, 03 Jan 2018 16:32:48 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51620) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqXG-0002H8-MQ for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqXF-0007rt-HK for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:18 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:33450) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqXF-0007ri-98 for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:17 -0500 Received: by mail-qk0-x243.google.com with SMTP id x7so3255544qkb.0 for ; Wed, 03 Jan 2018 13:25:17 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=eWmmGiJFdyCdPi7saHx++ie8aK5DztCIvuh1Ii+BjOI=; b=FaAJ+oA2sx6VlFzuo9R5qQh2jlfb5Xa+nTG24qDGszBzdRwmeQ7++Zoqgzx0SJB62z OhkEBG2KBMEu5ZkWShz2qaAnmYOi8orSYBG10J1+xfBhiyXXh/rGtjbEHXlXbblThJQo HJ1ngKgxzNQgr50k5/H/VdU6vFV0HSN4NvYY9CSqZos3mDLARjwcgmZbHBge3O+JBeJH d6p+Hj9DCP9sbVglVbTbn1Pt9jf5kqnPR8FMo+eYnRwaLcziZNXHN7cLcgL8f5DAedr1 yRCtnZJXTDHd9gR1YM4pBi/uc1bLNfSQ3hSVbrcIrUKxelSCIAVaYXYuKDoWa7COJSya VozQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=eWmmGiJFdyCdPi7saHx++ie8aK5DztCIvuh1Ii+BjOI=; b=Ufni4aMna/BGG2Z3KmzYKXkveldKNgmsLdkj9nCamwVuvcgkxhlDu9aXw40UvqczVJ iQDLUMKuhqFS2njUmC6c6T+igSzJEw4UmJWrzeRtptDpOrRLkDKNTbCeuRf44bRuNLrO lG7fgSdp2Ih2V8MWZxHWq89bh+vOo73J2QD22eOb3mOxTubLfT7tAjIoROwbcD0azwWw COHFY62bRMf7u1rD/PblJvfmJINEJRcBCEkVQnDsdOKRzz+CxzkQZs1+Bs22XXiru9hS qR5jonotrQZ2BI78P77VMdQG/x+EZeOx+9JlC6ijb11/jhe+XgE5talbN6/HCxD+1bdZ wJsg== X-Gm-Message-State: AKGB3mJtlQcmNHL3L31tndZ1ipvJaOzJsFlSWkBm6JIgz9kXfCzkfEqz LbIS/aukKCGetImUw/eRO9U= X-Google-Smtp-Source: ACJfBovGN1fP2Y4eTLXpHbBlLCfinh8KmYqrO8apNEqxBxQxvybE5neWvqV6DGSK7UNtwZU9i/h3LQ== X-Received: by 10.55.22.131 with SMTP id 3mr3714840qkw.22.1515014716728; Wed, 03 Jan 2018 13:25:16 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:18 -0300 Message-Id: <20180103212436.15762-8-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PATCH v2 07/25] sdcard: rename sd_set_$REG() functions called once as sd_reset_$REG() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 All are only called once at reset. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index b0e54f69d8..7d43ab072b 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -293,7 +293,7 @@ static uint16_t sd_crc16(void *message, size_t width) return shift_reg; } =20 -static void sd_set_ocr(SDState *sd) +static void sd_reset_ocr(SDState *sd) { /* All voltages OK, Standard Capacity SD Memory Card, not yet powered = up */ sd->ocr =3D 0x00ffff00; @@ -308,7 +308,7 @@ static void sd_ocr_powerup(void *opaque) sd->ocr |=3D OCR_POWER_UP; } =20 -static void sd_set_scr(SDState *sd) +static void sd_reset_scr(SDState *sd) { sd->scr[0] =3D 0x00; /* SCR Structure */ sd->scr[1] =3D 0x2f; /* SD Security Support */ @@ -327,7 +327,7 @@ static void sd_set_scr(SDState *sd) #define MDT_YR 2006 #define MDT_MON 2 =20 -static void sd_set_cid(SDState *sd) +static void sd_reset_cid(SDState *sd) { sd->cid[0] =3D MID; /* Fake card manufacturer ID (MID) */ sd->cid[1] =3D OID[0]; /* OEM/Application ID (OID) */ @@ -359,7 +359,7 @@ static const uint8_t sd_csd_rw_mask[16] =3D { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, }; =20 -static void sd_set_csd(SDState *sd, uint64_t size) +static void sd_reset_csd(SDState *sd, uint64_t size) { uint32_t csize =3D (size >> (CMULT_SHIFT + HWBLOCK_SHIFT)) - 1; uint32_t sectsize =3D (1 << (SECTOR_SHIFT + 1)) - 1; @@ -414,6 +414,11 @@ static void sd_set_csd(SDState *sd, uint64_t size) } } =20 +static void sd_reset_rca(SDState *sd) +{ + sd->rca =3D 0; +} + static void sd_set_rca(SDState *sd) { sd->rca +=3D 0x4567; @@ -428,12 +433,12 @@ static void sd_set_rca(SDState *sd) #define CARD_STATUS_B 0x00c01e00 #define CARD_STATUS_C 0xfd39a028 =20 -static void sd_set_cardstatus(SDState *sd) +static void sd_reset_cardstatus(SDState *sd) { sd->card_status =3D 0x00000100; } =20 -static void sd_set_sdstatus(SDState *sd) +static void sd_reset_sdstatus(SDState *sd) { memset(sd->sd_status, 0, 64); } @@ -517,13 +522,13 @@ static void sd_reset(DeviceState *dev) sect =3D sd_addr_to_wpnum(size) + 1; =20 sd->state =3D sd_idle_state; - sd->rca =3D 0x0000; - sd_set_ocr(sd); - sd_set_scr(sd); - sd_set_cid(sd); - sd_set_csd(sd, size); - sd_set_cardstatus(sd); - sd_set_sdstatus(sd); + sd_reset_rca(sd); + sd_reset_ocr(sd); + sd_reset_scr(sd); + sd_reset_cid(sd); + sd_reset_csd(sd, size); + sd_reset_cardstatus(sd); + sd_reset_sdstatus(sd); =20 g_free(sd->wp_groups); sd->wp_switch =3D sd->blk ? blk_is_read_only(sd->blk) : false; --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015156093997.3310521396731; Wed, 3 Jan 2018 13:32:36 -0800 (PST) Received: from localhost ([::1]:37658 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqeA-0008Ck-Lj for importer@patchew.org; Wed, 03 Jan 2018 16:32:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51684) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqXO-0002OA-Dl for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqXK-0007uS-1I for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:26 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:33453) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqXJ-0007tx-Sw for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:21 -0500 Received: by mail-qk0-x244.google.com with SMTP id x7so3255769qkb.0 for ; Wed, 03 Jan 2018 13:25:21 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YaRT0n90W+iZBkz3j4BVI/8ejai5AWtvj1jVf55XU8U=; b=pMcC5A7u9IoBW+T2W9sJjgZS2V8iFHOIJ60NOUtKCjfWVlkHuheLhP5RuGnLp0vm8i W32682NAKt8dsblR/qHDIR6tuWLtDx6xF+0rxtod8bWUdbSQLrWuxCEuqJHUjwXCCxvg EhZmX3TUjq8t4zNXxgFh9jEfQlAWIOSTPcrNwj8tD7BiKZm9CKCKip+61xHNUQOtzcsQ FE/Q8yAi1aNyCZfLBKTb1BfB6PQdT/OSqxi2Hzm7PnVhr+LhDev3URBEHQTlV1qD9REh X4xehguPt0peQeZNEm/aqQMzcITPBYkQa8pnwERnoneTTZN+06zd7TYA5q9R0oJnWmfh Vfmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=YaRT0n90W+iZBkz3j4BVI/8ejai5AWtvj1jVf55XU8U=; b=W1Z8ivaba/tTxpgjLOkiJZ4qxJ1BgviHbezfwJBKEDAMI2bnPrbmXZpVIhvS7fTy25 JhzXROBAPFHMDedVa0NwrVbtQc56jADKD4Uk1Sg6w+1IsHVnly3tuX3G87C2VZHi/Y9X v9eD5S0fjnJn6mVh1Zx9GeNzfXlO5zgwuDnnlcxo/guEb3vqQCHroSPp7QXUGurVSOKy FCAIl4bkk+beuVcgQW2n3mfSWi4WN8VfSiFyu8CwcDDj2DgoELsBJUwbFIUOmi7UidFO aXmnekieCLarB+VsYkmWQUoaaC0+XUdCas7Acj9nMCuJJK+pAJV1RR1jvhSdsgIuq4Rp Xltg== X-Gm-Message-State: AKwxytdblwwFEZhc7+CbUD2SyiuaHFyyOEq3/QtMQgIDxuTKtoZ0C8KI IfxcfoQVhkVAU5B2KSAuJhk= X-Google-Smtp-Source: ACJfBosc1aXU9m0z6Ydk9IEWjkr50CjdlJNJTDct9nZV56TofjoMD5GaI/rL8rekDS8LuFeC2sqMSg== X-Received: by 10.55.16.134 with SMTP id 6mr413317qkq.307.1515014721397; Wed, 03 Jan 2018 13:25:21 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:19 -0300 Message-Id: <20180103212436.15762-9-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PATCH v2 08/25] sdcard: use the registerfields API to access the OCR register X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 7d43ab072b..1f209b8199 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -32,6 +32,7 @@ #include "qemu/osdep.h" #include "hw/qdev.h" #include "hw/hw.h" +#include "hw/registerfields.h" #include "sysemu/block-backend.h" #include "hw/sd/sd.h" #include "hw/sd/sdcard_legacy.h" @@ -53,8 +54,6 @@ do { fprintf(stderr, "SD: " fmt , ## __VA_ARGS__); } whil= e (0) #endif =20 #define ACMD41_ENQUIRY_MASK 0x00ffffff -#define OCR_POWER_UP 0x80000000 -#define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ =20 #define SDCARD_CMD_MAX 64 =20 @@ -293,6 +292,10 @@ static uint16_t sd_crc16(void *message, size_t width) return shift_reg; } =20 +FIELD(OCR, CARD_POWER_UP, 31, 1); + +#define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ + static void sd_reset_ocr(SDState *sd) { /* All voltages OK, Standard Capacity SD Memory Card, not yet powered = up */ @@ -303,9 +306,10 @@ static void sd_ocr_powerup(void *opaque) { SDState *sd =3D opaque; =20 - /* Set powered up bit in OCR */ - assert(!(sd->ocr & OCR_POWER_UP)); - sd->ocr |=3D OCR_POWER_UP; + assert(!FIELD_EX32(sd->ocr, OCR, CARD_POWER_UP)); + + /* card power-up OK */ + sd->ocr =3D FIELD_DP32(sd->ocr, OCR, CARD_POWER_UP, 1); } =20 static void sd_reset_scr(SDState *sd) @@ -594,7 +598,7 @@ static bool sd_ocr_vmstate_needed(void *opaque) SDState *sd =3D opaque; =20 /* Include the OCR state (and timer) if it is not yet powered up */ - return !(sd->ocr & OCR_POWER_UP); + return !FIELD_EX32(sd->ocr, OCR, CARD_POWER_UP); } =20 static const VMStateDescription sd_ocr_vmstate =3D { @@ -1494,7 +1498,7 @@ static sd_rsp_type_t sd_app_command(SDState *sd, * 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 (!(sd->ocr & OCR_POWER_UP)) { + if (!FIELD_EX32(sd->ocr, OCR, CARD_POWER_UP)) { if ((req.arg & ACMD41_ENQUIRY_MASK) !=3D 0) { timer_del(sd->ocr_power_timer); sd_ocr_powerup(sd); --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 151501484811024.895956282194902; Wed, 3 Jan 2018 13:27:28 -0800 (PST) Received: from localhost ([::1]:37621 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqZL-0003nG-6Q for importer@patchew.org; Wed, 03 Jan 2018 16:27:27 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51722) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqXQ-0002Pm-Mw for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqXO-0007xx-IP for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:28 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:39378) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqXO-0007xD-6A for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:26 -0500 Received: by mail-qt0-x242.google.com with SMTP id k19so3802433qtj.6 for ; Wed, 03 Jan 2018 13:25:26 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ypfvVHTS2Fa9w48ZQ9uAZyy/hrAwaYFbQlXtBEGz2HM=; b=dQ3g/W5gVvL6U8w1jM83tSMsS1jkKQ6f1pDdxP4x0y1lfmMielkbiOP/geTfju9bV4 fmxiuoU0mGw6pKCYVL1yj/TCE4MzKI7dDc0aU49e7rIZ9UREyIDA3TLPPAv/YJria+6X pGrVzm/BIPrJbDQQ03UdankuVNw/YIWILW8HTOaW6EvtSKDRqlMpL4+aEh0feDiCDTtS 3P0947r2UL/0oPa71Dqb7giuWfen/vgALJcQrwL68YzlouR77LdK5S0vQToPDJaVq3gR 397Uwr23GZtPLlJA/IEuVPTde9JaybsK7QchoRFqxPgeWE5rDKUxbH0g81pYxjZozt0U Hyug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=ypfvVHTS2Fa9w48ZQ9uAZyy/hrAwaYFbQlXtBEGz2HM=; b=i5ZBweo+7gKFZbDOS0tYXvLMGkEw1aMaEsDgLipjC4n9sN0GAHbYisPOmd+SRBuea4 K4sDlSguFEe22qOSCVSLaWrVieRDmFVne/7rPwZIrZYi0R6NabN+RYdW/jEDddS8vi+j JnyKTRhq8vaMrplxiK4rI6p/5AskUNztmObyNe4o9KgPG3jYBV8UZE7Pd7124Lzmd4E8 OXNSKG9y9n6JN2ig9vmPYZkeuEh1JB0keZ6XEfzEVXDzKbQMd0K6UaEV2Os4QK2332Zm 6UL4r895XfhngFX8FiQg0uYDpf3gi8PSOTlQ9TiKCZniOGk1PS5FC564zuB9d/n/xsWv WPgA== X-Gm-Message-State: AKGB3mJnAShCDafP0MJ58e8uUWKh2Wone9DsFcxR/hLkDwd3o8WBVVB2 uUJmMFf6Z/IrQD8AjWuzFlw= X-Google-Smtp-Source: ACJfBouwdMplg9Lbogt62Ox6j9oZk9n9O3vRxhd0xrOf4XG+i4+vEENe1iTNcQoB4kL14nCWXojP0A== X-Received: by 10.200.23.221 with SMTP id r29mr3717953qtk.27.1515014725660; Wed, 03 Jan 2018 13:25:25 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:20 -0300 Message-Id: <20180103212436.15762-10-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PATCH v2 09/25] sdcard: use G_BYTE from cutils X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 code is now easier to read. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 1f209b8199..d4aa7b4a92 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -38,6 +38,7 @@ #include "hw/sd/sdcard_legacy.h" #include "qapi/error.h" #include "qemu/bitmap.h" +#include "qemu/cutils.h" #include "hw/qdev-properties.h" #include "qemu/error-report.h" #include "qemu/timer.h" @@ -369,7 +370,7 @@ static void sd_reset_csd(SDState *sd, uint64_t size) uint32_t sectsize =3D (1 << (SECTOR_SHIFT + 1)) - 1; uint32_t wpsize =3D (1 << (WPGROUP_SHIFT + 1)) - 1; =20 - if (size <=3D 0x40000000) { /* Standard Capacity SD */ + if (size <=3D 1 * G_BYTE /* FIXME 2GB? */) { /* Standard Capacity SD */ sd->csd[0] =3D 0x00; /* CSD structure */ sd->csd[1] =3D 0x26; /* Data read access-time-1 */ sd->csd[2] =3D 0x00; /* Data read access-time-2 */ --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 151501508104652.24522352538406; Wed, 3 Jan 2018 13:31:21 -0800 (PST) Received: from localhost ([::1]:37657 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqd6-0007Iv-73 for importer@patchew.org; Wed, 03 Jan 2018 16:31:20 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51809) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqXY-0002WX-Rv for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqXS-00081Z-KX for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:36 -0500 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:35007) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqXS-00081K-DI for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:30 -0500 Received: by mail-qt0-x244.google.com with SMTP id u10so3817481qtg.2 for ; Wed, 03 Jan 2018 13:25:30 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=F60EZtBt1bL1URLL048diesnSqoAU3JWEeSpkWkvM2c=; b=qn5FfZFVOGYJQSujYDYs19I0XTka09ako2XhnTBG/Vk0VZfqH3jUuzzZieY8dPt99k rgxYHGXWK4qiBMVsZXefK5PmDc6bI4G0eH4yqW+yTXSshEvcr9CgyaEPhfhiPnWp/kRT Aj/rrm304I6PwYezKyINdh45+vGo9if9liAP9FNX5PUUBJQt0+LfAKAX7WgwuKDsJ8uw 8PER6+CGh85PpeBOhKNWjAKjKtKaU4cfx3Ea34M/SwZfN5+sigOGAJ6q6xwIbCBuc0CQ KVrFxcZUXiTa3gngF7HP7smZrEerN9gYRqjb3jtnduXISTSLTt5zhtKsrgbv8D5Ek0yW muew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=F60EZtBt1bL1URLL048diesnSqoAU3JWEeSpkWkvM2c=; b=tc9AsINI24Jq+AkgWT0meK4UJbflSGlcQti53gZa2F7vx/MjhITLc1TMVnJzdgw3aJ L90NBhURtXJhwuzj+LdgZq+xQ0rLtqTd9LIxb2VhEzZ2zd8cfnSwqJCa4LpW7188r+Pt RmBvp5lchabVb0NhVXAJpW+ygUtUylbKm3UxgZSBS2M2FQ1pqlBFObaZ3zqanfDdG7s0 kADjzNX0NP1YoD40hYSbiNizpl+g2bEEE9Sw3HBqboX6fQNPZLtZIx22owXVQinGN30v hDZWsOBA7XWWINEZ1nGskuo9cHCAJdu3v0gGZoaHdOY20JehKKWBSk7OPOIZIZfECxRG TIqQ== X-Gm-Message-State: AKGB3mICJM+u3sU48y5ZQMm3Dcz0v4+xKN4ioX2QKlg95m3JvJZ61RYP vW3+NBd3REuRvuZcXUI1JbQ= X-Google-Smtp-Source: ACJfBose4v9CTG+TlPhB0RsftDKCKS0eExdkRgZyIMl5COIlbycT8OoXMl9I1Chh04jbx9KXxNAt3g== X-Received: by 10.200.51.20 with SMTP id t20mr3753427qta.150.1515014729918; Wed, 03 Jan 2018 13:25:29 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:21 -0300 Message-Id: <20180103212436.15762-11-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::244 Subject: [Qemu-devel] [PATCH v2 10/25] sdcard: remove unreachable code X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index d4aa7b4a92..c9fc6f5369 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1188,9 +1188,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) goto unimplemented_cmd; switch (sd->state) { case sd_transfer_state: - /* Writing in SPI mode not implemented. */ - if (sd->spi) - break; sd->state =3D sd_receivingdata_state; sd->data_start =3D addr; sd->data_offset =3D 0; @@ -1214,9 +1211,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) goto unimplemented_cmd; switch (sd->state) { case sd_transfer_state: - /* Writing in SPI mode not implemented. */ - if (sd->spi) - break; sd->state =3D sd_receivingdata_state; sd->data_start =3D addr; sd->data_offset =3D 0; --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015542702505.88836869873546; Wed, 3 Jan 2018 13:39:02 -0800 (PST) Received: from localhost ([::1]:37759 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqkR-00054V-Pz for importer@patchew.org; Wed, 03 Jan 2018 16:38:55 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51981) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqXn-0002kT-To for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqXX-00084b-7c for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:51 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:42570) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqXX-00084J-11 for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:35 -0500 Received: by mail-qk0-x241.google.com with SMTP id d202so3243758qkc.9 for ; Wed, 03 Jan 2018 13:25:34 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=lkc05RXED/gfuatzB8gGvmTKKvVD3RNExC+Fly1fWyQ=; b=tNuc3xqIKJE2l9MqgBo6GeqjHdczPbRTXdNJwYAirTqANeIVqm10uS5n2W7/ZZunI/ QfB2GAaPZfTklR6oYSWvT1tDkgPtKxwaxUxqwR0n4/7FxBaaMdrz4dnd7i9rWea8FK4y ImQ9YNy99TQxrK4YB/G+QOAoPmKIbezFXQj6qYTNgavfB3Q5TzC2761t3vk+mKxOjmCo QV/K9TdF9l8KqpcEMx2Xyaw0ZXEIZ5mvm6ZwNZG/4QC0kzJma/424dJ9+qFZpgtuwgs+ S8vxbN5E07dU+iEHqOh+LPxJrZw6no6xtVb3G8CEsM2+G8ueew/WU7HyykLZcKGnXdnL FenQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=lkc05RXED/gfuatzB8gGvmTKKvVD3RNExC+Fly1fWyQ=; b=cpbK15dNilF3iqAkBMzOsN4FCwUX8AChaJliQrW0E33tJBF9FNgTP8aK3dsQPI/tqv KKO1LpXlIeDfiRN0VfInsVj6L8tSitmn0f43tI0g0AiplFD1dJpccUjZVl29zw0WCPQK e5CFkG0Zku/poiI79KqQ2i1MY3LvelL7q41qcT0CCD3GMKWqXHhaiwnSSS1fqSUuNBWH imT1hUSq8ihUUKhhEjZBmp9xoB4GAU2zjbOv1o9AfNQ2fIYqkPsoTp2FGvxV+pfDTQM8 reYMTnJbvqNKVRCxd8aCVNyauMHaOsiTbvi7P3VnCazwNNoZaEdMfKHG63QN1HOVXb80 1GgA== X-Gm-Message-State: AKGB3mJfl+5hsRcEpcJpaBH+QOUn9+ckaRfLADbD54ybRCXDRUIN1DXn nyvvI4afiPFJypUHc+rr2+c= X-Google-Smtp-Source: ACJfBovh1S8R+0nU7TBr/ruam+zkiHY8b4vwpk0PEc/GbCiWzeVeKIFq5B+dlBCHIQ73PZdozQFUew== X-Received: by 10.55.214.198 with SMTP id p67mr3492217qkl.250.1515014734482; Wed, 03 Jan 2018 13:25:34 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:22 -0300 Message-Id: <20180103212436.15762-12-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PATCH v2 11/25] sdcard: replace switch(unique case) statements -> if(case) X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 this shortens the sd_normal_command/sd_app_command() big functions Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 177 +++++++++++----------------------------------------------= ---- 1 file changed, 30 insertions(+), 147 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index c9fc6f5369..e0550cd174 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -880,34 +880,24 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) switch (req.cmd) { /* Basic commands (Class 0 and Class 1) */ case 0: /* CMD0: GO_IDLE_STATE */ - switch (sd->state) { - case sd_inactive_state: - return sd->spi ? sd_r1 : sd_r0; - - default: + if (sd->state !=3D sd_inactive_state) { sd->state =3D sd_idle_state; sd_reset(DEVICE(sd)); - return sd->spi ? sd_r1 : sd_r0; } - break; + return sd->spi ? sd_r1 : sd_r0; =20 case 1: /* CMD1: SEND_OP_CMD */ if (!sd->spi) goto bad_cmd; - sd->state =3D sd_transfer_state; return sd_r1; =20 case 2: /* CMD2: ALL_SEND_CID */ if (sd->spi) goto bad_cmd; - switch (sd->state) { - case sd_ready_state: + if (sd->state =3D=3D sd_ready_state) { sd->state =3D sd_identification_state; return sd_r2_i; - - default: - break; } break; =20 @@ -944,16 +934,12 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) case 6: /* CMD6: SWITCH_FUNCTION */ if (sd->spi) goto bad_cmd; - switch (sd->mode) { - case sd_data_transfer_mode: + if (sd->mode =3D=3D sd_data_transfer_mode) { sd_function_switch(sd, req.arg); sd->state =3D sd_sendingdata_state; sd->data_start =3D 0; sd->data_offset =3D 0; return sd_r1; - - default: - break; } break; =20 @@ -1062,8 +1048,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) case 11: /* CMD11: READ_DAT_UNTIL_STOP */ if (sd->spi) goto bad_cmd; - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_sendingdata_state; sd->data_start =3D req.arg; sd->data_offset =3D 0; @@ -1071,9 +1056,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) if (sd->data_start + sd->blk_len > sd->size) sd->card_status |=3D ADDRESS_ERROR; return sd_r0; - - default: - break; } break; =20 @@ -1095,53 +1077,40 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) break; =20 case 13: /* CMD13: SEND_STATUS */ - switch (sd->mode) { - case sd_data_transfer_mode: + if (sd->mode =3D=3D sd_data_transfer_mode) { if (sd->rca !=3D rca) return sd_r0; =20 return sd_r1; - - default: - break; } break; =20 case 15: /* CMD15: GO_INACTIVE_STATE */ if (sd->spi) goto bad_cmd; - switch (sd->mode) { - case sd_data_transfer_mode: + if (sd->mode =3D=3D sd_data_transfer_mode) { if (sd->rca !=3D rca) return sd_r0; =20 sd->state =3D sd_inactive_state; return sd_r0; - - default: - break; } break; =20 /* Block read commands (Classs 2) */ case 16: /* CMD16: SET_BLOCKLEN */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { if (req.arg > (1 << HWBLOCK_SHIFT)) sd->card_status |=3D BLOCK_LEN_ERROR; else sd->blk_len =3D req.arg; =20 return sd_r1; - - default: - break; } break; =20 case 17: /* CMD17: READ_SINGLE_BLOCK */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_sendingdata_state; sd->data_start =3D addr; sd->data_offset =3D 0; @@ -1149,15 +1118,11 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) if (sd->data_start + sd->blk_len > sd->size) sd->card_status |=3D ADDRESS_ERROR; return sd_r1; - - default: - break; } break; =20 case 18: /* CMD18: READ_MULTIPLE_BLOCK */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_sendingdata_state; sd->data_start =3D addr; sd->data_offset =3D 0; @@ -1165,20 +1130,13 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) if (sd->data_start + sd->blk_len > sd->size) sd->card_status |=3D ADDRESS_ERROR; return sd_r1; - - default: - break; } break; =20 case 23: /* CMD23: SET_BLOCK_COUNT */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->multi_blk_cnt =3D req.arg; return sd_r1; - - default: - break; } break; =20 @@ -1186,8 +1144,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) case 24: /* CMD24: WRITE_SINGLE_BLOCK */ if (sd->spi) goto unimplemented_cmd; - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_receivingdata_state; sd->data_start =3D addr; sd->data_offset =3D 0; @@ -1200,17 +1157,13 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) if (sd->csd[14] & 0x30) sd->card_status |=3D WP_VIOLATION; return sd_r1; - - default: - break; } break; =20 case 25: /* CMD25: WRITE_MULTIPLE_BLOCK */ if (sd->spi) goto unimplemented_cmd; - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_receivingdata_state; sd->data_start =3D addr; sd->data_offset =3D 0; @@ -1223,46 +1176,34 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) if (sd->csd[14] & 0x30) sd->card_status |=3D WP_VIOLATION; return sd_r1; - - default: - break; } break; =20 case 26: /* CMD26: PROGRAM_CID */ if (sd->spi) goto bad_cmd; - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_receivingdata_state; sd->data_start =3D 0; sd->data_offset =3D 0; return sd_r1; - - default: - break; } break; =20 case 27: /* CMD27: PROGRAM_CSD */ if (sd->spi) goto unimplemented_cmd; - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_receivingdata_state; sd->data_start =3D 0; sd->data_offset =3D 0; return sd_r1; - - default: - break; } break; =20 /* Write protection (Class 6) */ case 28: /* CMD28: SET_WRITE_PROT */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { if (addr >=3D sd->size) { sd->card_status |=3D ADDRESS_ERROR; return sd_r1b; @@ -1273,15 +1214,11 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) /* Bzzzzzzztt .... Operation complete. */ sd->state =3D sd_transfer_state; return sd_r1b; - - default: - break; } break; =20 case 29: /* CMD29: CLR_WRITE_PROT */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { if (addr >=3D sd->size) { sd->card_status |=3D ADDRESS_ERROR; return sd_r1b; @@ -1292,52 +1229,36 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) /* Bzzzzzzztt .... Operation complete. */ sd->state =3D sd_transfer_state; return sd_r1b; - - default: - break; } break; =20 case 30: /* CMD30: SEND_WRITE_PROT */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_sendingdata_state; *(uint32_t *) sd->data =3D sd_wpbits(sd, req.arg); sd->data_start =3D addr; sd->data_offset =3D 0; return sd_r1b; - - default: - break; } break; =20 /* Erase commands (Class 5) */ case 32: /* CMD32: ERASE_WR_BLK_START */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->erase_start =3D req.arg; return sd_r1; - - default: - break; } break; =20 case 33: /* CMD33: ERASE_WR_BLK_END */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->erase_end =3D req.arg; return sd_r1; - - default: - break; } break; =20 case 38: /* CMD38: ERASE */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { if (sd->csd[14] & 0x30) { sd->card_status |=3D WP_VIOLATION; return sd_r1b; @@ -1348,9 +1269,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) /* Bzzzzzzztt .... Operation complete. */ sd->state =3D sd_transfer_state; return sd_r1b; - - default: - break; } break; =20 @@ -1358,15 +1276,11 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) case 42: /* CMD42: LOCK_UNLOCK */ if (sd->spi) goto unimplemented_cmd; - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_receivingdata_state; sd->data_start =3D 0; sd->data_offset =3D 0; return sd_r1; - - default: - break; } break; =20 @@ -1390,17 +1304,13 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) return sd_r1; =20 case 56: /* CMD56: GEN_CMD */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->data_offset =3D 0; if (req.arg & 1) sd->state =3D sd_sendingdata_state; else sd->state =3D sd_receivingdata_state; return sd_r1; - - default: - break; } break; =20 @@ -1428,52 +1338,37 @@ static sd_rsp_type_t sd_app_command(SDState *sd, sd->card_status |=3D APP_CMD; switch (req.cmd) { case 6: /* ACMD6: SET_BUS_WIDTH */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->sd_status[0] &=3D 0x3f; sd->sd_status[0] |=3D (req.arg & 0x03) << 6; return sd_r1; - - default: - break; } break; =20 case 13: /* ACMD13: SD_STATUS */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_sendingdata_state; sd->data_start =3D 0; sd->data_offset =3D 0; return sd_r1; =20 - default: - break; } break; =20 case 22: /* ACMD22: SEND_NUM_WR_BLOCKS */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { *(uint32_t *) sd->data =3D sd->blk_written; =20 sd->state =3D sd_sendingdata_state; sd->data_start =3D 0; sd->data_offset =3D 0; return sd_r1; - - default: - break; } break; =20 case 23: /* ACMD23: SET_WR_BLK_ERASE_COUNT */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { return sd_r1; - - default: - break; } break; =20 @@ -1483,8 +1378,7 @@ static sd_rsp_type_t sd_app_command(SDState *sd, sd->state =3D sd_transfer_state; return sd_r1; } - switch (sd->state) { - case sd_idle_state: + if (sd->state =3D=3D 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 @@ -1514,33 +1408,22 @@ static sd_rsp_type_t sd_app_command(SDState *sd, } =20 return sd_r3; - - default: - break; } break; =20 case 42: /* ACMD42: SET_CLR_CARD_DETECT */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { /* Bringing in the 50KOhm pull-up resistor... Done. */ return sd_r1; - - default: - break; } break; =20 case 51: /* ACMD51: SEND_SCR */ - switch (sd->state) { - case sd_transfer_state: + if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_sendingdata_state; sd->data_start =3D 0; sd->data_offset =3D 0; return sd_r1; - - default: - break; } break; =20 --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015361769519.2790842883671; Wed, 3 Jan 2018 13:36:01 -0800 (PST) Received: from localhost ([::1]:37698 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqhc-0002YW-Sq for importer@patchew.org; Wed, 03 Jan 2018 16:36:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51997) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqXo-0002kq-9b for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqXb-000877-P8 for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:52 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:46099) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqXb-00086n-Gt for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:39 -0500 Received: by mail-qt0-x242.google.com with SMTP id r39so3779613qtr.13 for ; Wed, 03 Jan 2018 13:25:39 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ahHyUp+SDO1cX1/Eux6PIgWTZUZl+SjmQxHDxNfWmE8=; b=hQAoRV+q9mnoW6qkrCEaSVhq6sPCsEmOTEd4PLjcu8B+3NQ4qIfS8X1FHdwespylls mbBUySyUPMer/eUucGtOrxtB97WMRA/VG/J9xl8ZEeDff21jJy9h5NeocYtig91NpSxd eUFqZPMMyLVcWKDQU3y/qEyTG3bu6tX94qTiXt69UaNQGIumOkzRqHKH70FLijHrCfqv Wg1F+6kKNHv9O+xfF7mD4C0kWQtiekh/0p4Tt5vnuihyK1HUMhOyy54qXKnFYb7FCXMh FPr1Zw36PeJiMXKHofBiLlGUFfV88vGGmVW8opGh7xpY0IF0NXFhIV+eWXeJ7Wl1Xlih Bltg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=ahHyUp+SDO1cX1/Eux6PIgWTZUZl+SjmQxHDxNfWmE8=; b=s7x9Mbtvmh+k8+/u4++PImZM2jtiq748jKUlO6xxQEV7spbr0x0t/2UKc3ENKKIZlG iYRViLQkhuX2LqdVhwdTK7KwWEVIvPGgtP29o4STpw3VGw7vtunaRTCfOHRp9uQ65nf5 lq0B/lBdzDoS95L2EqjPWpl7G1hF5+Ew85acFXWYiKg9lTbBIYd74TlNP4b3u60KtaE/ bGV0kgTWnnzuOC0k8cy5Hy3/LxP85FRs6A8CUFaBNqQzbCXggHFvFzAGh51AswXTdyDl UwdHxxKwsv6CAbmgri1CqDNUScBMcXY2alHP6yGriY5eXnSZKGkElDZXlNatIgZGCRDX Q8QQ== X-Gm-Message-State: AKGB3mKgf+7ZYDCJ+0LoukuTXe9Z8SfTbaDa5LctyiZhpwTSTLtj1+KV vu/VnSD7qYn+59UuJ/o8XWY= X-Google-Smtp-Source: ACJfBovmMBF4bM8WtzKip3a6h49BQ0DUdSPwC2KXNfwuwUfZ8Ul+6oJJpSk6Hu03EL5E/OgOHmWs2Q== X-Received: by 10.200.11.203 with SMTP id p11mr3500467qti.124.1515014739084; Wed, 03 Jan 2018 13:25:39 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:23 -0300 Message-Id: <20180103212436.15762-13-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [PATCH v2 12/25] sdcard: use a 16-bit integer for the 16-bit RCA register X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index e0550cd174..e6a6e0b2ad 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -854,7 +854,7 @@ static void sd_lock_command(SDState *sd) =20 static sd_rsp_type_t sd_normal_command(SDState *sd, SDRequest req) { - uint32_t rca =3D 0x0000; + uint16_t rca =3D 0x0000; uint64_t addr =3D (sd->ocr & (1 << 30)) ? (uint64_t) req.arg << 9 : re= q.arg; =20 if (req.cmd !=3D 55 || sd->expecting_acmd) { --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015275510578.9576189984837; Wed, 3 Jan 2018 13:34:35 -0800 (PST) Received: from localhost ([::1]:37691 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqgB-0001Ne-MF for importer@patchew.org; Wed, 03 Jan 2018 16:34:31 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52076) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqXq-0002nG-Qv for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqXf-0008BL-Vr for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:54 -0500 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:35006) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqXf-0008B0-P6 for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:43 -0500 Received: by mail-qt0-x241.google.com with SMTP id u10so3818128qtg.2 for ; Wed, 03 Jan 2018 13:25:43 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=3eOH8/0ZvgNCKGwT+pql79pst+aCYZXfgXSVy3amNxY=; b=oqyuM2ftKOjdqRFMBY5HR+rh3wF+LWA0Us3TvXETYQBtd1zrX4bxzfOlmnRuTBGkC9 fllV2eJRlBia6yZodL07BUbKoUeWOa/ihhic8VDlLj74QqLtbuMwTgH7EBKkNCMhKh1L 5H+SiRU1l5OHG9B+04CuHq7oZq06eaBGxXtN2O2gB28vEVVMUA/EU70F9pNkbdSpu7TP QjOPDslGpBhCpQ9PcD9FaIhLqu73QXDBiBxoyTUyQgu5JZMGSALhqTmyLQ2FGMnW6kzc 4z14Z3g738ARA1Kh1rJyTm9SD+FUGnRKoMYbBPCAyxP9bwCmaAxO5GDdelTQ1M/7JnmA a18A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=3eOH8/0ZvgNCKGwT+pql79pst+aCYZXfgXSVy3amNxY=; b=iZO8RJBDzdZd0YYVAEDGR5bKX8dO0svKOLxHJEDi1r1SXm2UX4xaejYp1pFJoO7rWe WfmH00byZXv5GMTFGuIOML8a7p7LyhMEjRVd9dMHD8NXh0s30SN/YhPqyZC9ZHu+h/ab hK24mJk50hx5Xh6+XL/49wvgDtfAyIQYhI7syNTuSMDMFD0hisTreMovP3ieAQX8jhIP 9ur3U+TfjpN3hkRnFiBeRNebxJTx5YwGvZGxHPKw1xIOC4YVZb2I9unLfRhLFOamLYzr 4nfnvfQh/lpNL3WsO2uktWiO2gktapO7I5eNcbfevrBrf3ABlL7HaFJ4BMt51hdIsLQ+ lwTA== X-Gm-Message-State: AKGB3mJWhCY92qay6FjPH9O16w/8ZyDoD3cKPsjGJ5TRu+6QEvS1MKNy z9P9drZlrOg6/jL7ldCfn1A= X-Google-Smtp-Source: ACJfBovfUDm8xTDJ9RcqZ0eafkM0ZMyaTT7pxibuDwDwJ4bIey3gmKgAedqXnUqQmNG6Tfg57zJwzA== X-Received: by 10.200.23.221 with SMTP id r29mr3719099qtk.27.1515014743310; Wed, 03 Jan 2018 13:25:43 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:24 -0300 Message-Id: <20180103212436.15762-14-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::241 Subject: [Qemu-devel] [PATCH v2 13/25] sdcard: let function handling response codes returns the response size X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 this will ease cases when the response is different regarding the protocol use (SPI, MMC). Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- 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) !=3D req->crc; /* TODO */ } =20 -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 =3D 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] =3D (status >> 16) & 0xff; response[2] =3D (status >> 8) & 0xff; response[3] =3D (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; } =20 -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] =3D (sd->ocr >> 24) & 0xff; response[1] =3D (sd->ocr >> 16) & 0xff; response[2] =3D (sd->ocr >> 8) & 0xff; response[3] =3D (sd->ocr >> 0) & 0xff; + + return 4; } =20 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 =3D 4; + rsplen =3D sd_response_r1_make(sd, response); break; =20 case sd_r2_i: @@ -1523,13 +1533,11 @@ send_response: break; =20 case sd_r2_s: - memcpy(response, sd->csd, sizeof(sd->csd)); - rsplen =3D 16; + rsplen =3D sd_response_r2s_make(sd, response); break; =20 case sd_r3: - sd_response_r3_make(sd, response); - rsplen =3D 4; + rsplen =3D sd_response_r3_make(sd, response); break; =20 case sd_r6: --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015459617942.1588437254863; Wed, 3 Jan 2018 13:37:39 -0800 (PST) Received: from localhost ([::1]:37712 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqjA-0003wt-P1 for importer@patchew.org; Wed, 03 Jan 2018 16:37:36 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52140) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqXs-0002qY-9Y for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqXk-0008DS-EM for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:56 -0500 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:45716) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqXk-0008DG-8D for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:48 -0500 Received: by mail-qk0-x243.google.com with SMTP id o126so3243274qke.12 for ; Wed, 03 Jan 2018 13:25:48 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.43 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fhDOXvB01oVxtVhA+GGgqQRC9fnGSETBqwww7QSaBF0=; b=Aym6TPPHOLjfTWi+cDPSycnitEQGs9EAPeybbjkmMxR6JhmWLHtE5OqYX7yHn2Y1dC 2J41AN/Znh9Swv7cfb6JtuJsXNQtMSmnMOGsMNnY76yTZbqPH1oLd/CBZMDSaiP6nFAE LEs9yk2TvN0I5wUu1IMo42BgPKZWGt/ul9IBd1I4LrfcGvLs5RLHoW6vnkdyB+8M2AL7 CAjaMG7pmQOxALg78JyYzG0iF+B09hi2blwfBzXZ/sTuJ+2FcJ8sqFzVOwDYB3VNWPcU UdKu1i4uef7mlOMh1qc6oXmsiKJjLYdb0wGC3JeMlIy5xQtbTbzf6pWn0Qo/6yswiuTv J9jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=fhDOXvB01oVxtVhA+GGgqQRC9fnGSETBqwww7QSaBF0=; b=nhXVANebp/bzXUCvpLBkey1aLr4FU7fuJueCmDpysa3S+NKTgU+fhh4718ZNAKsCEo Y6Gxwyn3YC7jUFYexloGMEy83qI6mWhXZiN+vYmAgLZ6D/O0623N2BLdin9Nh9DXqS7E Pb2pUdCpUKdG9bXmfIDtIacx2H1Se1BRNna6BhTqy8VGTgcOuQcb8lWz/m/5OgWdjZy6 WTRXiaUmGUxcAEH9XBy/E+HK2IGcZnrzvKz0oJSRrR1lXhexXTUbOvWCgmj7A6dyrjm2 qGWqfyrh72yuEaaANufKvbB4Weof44IRzTG3tFyYsQgj+E0Gb8+qDMz1rJG0A93i6azM bvJg== X-Gm-Message-State: AKGB3mKlzLnOplHaVEn26BHkHLWO+GShRCZ2kQCsatYesB3P1krL1qPl mYjuOkjkiHudvvl3C25kIpo= X-Google-Smtp-Source: ACJfBosKLmb0GI1Zge1GyerhOHRPHG7EIAGPF9Fhw1GojgKFyCTx5nRDzisDyKuYPWlzoFSMbIqUYw== X-Received: by 10.55.76.10 with SMTP id z10mr3630838qka.346.1515014747789; Wed, 03 Jan 2018 13:25:47 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:25 -0300 Message-Id: <20180103212436.15762-15-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::243 Subject: [Qemu-devel] [PATCH v2 14/25] sdcard: add missing command CMD55 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 we don't implement it, but can see firmwares using it via UNIMP logs. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 7e9d7366fe..2b4254802f 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1438,6 +1438,9 @@ static sd_rsp_type_t sd_app_command(SDState *sd, } break; =20 + case 55: /* Not exist */ + break; + default: /* Fall back to standard commands. */ return sd_normal_command(sd, req); --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015346854812.8940552193538; Wed, 3 Jan 2018 13:35:46 -0800 (PST) Received: from localhost ([::1]:37693 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqhO-0002Fg-20 for importer@patchew.org; Wed, 03 Jan 2018 16:35:46 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52294) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqXx-0002w6-OK for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:07 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqXo-0008H8-VR for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:01 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:39755) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqXo-0008Gl-Ov for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:52 -0500 Received: by mail-qk0-x244.google.com with SMTP id c5so3240129qkg.6 for ; Wed, 03 Jan 2018 13:25:52 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.48 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=rpYwrmjMLpM5ogDq6g0XaE+LDeU79tLbdmTSDBSBy50=; b=nQg+W8t9z0cUuM0k6IA6rjfIp88s2vOkddcqaR3aqME7/gYidm84qQNl6zjhWwkeVB pwsyIpg6+05ctlkYmr6TFtV+B9MEMu3HHA6RZq15gxUqFj1mjyiicT28KHb+1E6op5T+ MWK0t0XNOVidV0RZkWl91IP8L/sWHTsg5wfJoDn/YC/S+rPHCfifVUFFo5bZt60r82OT XiJY1xg4WAhlMEpTg17XxO73ZRiviQu2w0TNl1L1DmU/+CFWXsqp33fu2lFYv86q9J9r R0f7Npl3lG1PdGJOTVPoHeH0A/F7k1y+AqYoiV0LAqdV8InobncGV9wzi5lr6fQpPh0E WOWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=rpYwrmjMLpM5ogDq6g0XaE+LDeU79tLbdmTSDBSBy50=; b=MrCYJLPkmv1ZSyqLa1rXIgt/OSWYdiGHAHpFGIvrgOD4abw6/iIbILydKKCTUZRrng Pzctr/uIeSBQak8C7DDYpxcSAg4UkFxPP8dWPLII7NyNw3v4B+3pvreoLHEtFbhU0bGy A7AKhd0UEvkRMYXX4Bp/4v0Xb+YMA0H8APcYFeWHfJdzCxr9iKX7h/5FLGwnom8Iu6Bw 2OckeI4L+wUcSgTle3dUPvib76iyF94IRIXyv2s0oy3v77y+o3BzgH/o1Rp0q4WdDE5o vbleyL3pPjTeovlO2UKPcDVKwMdo5yTSCChP4xNhekgLjSVAuhmjzKHwqgsAhG1arnKC 3MIA== X-Gm-Message-State: AKGB3mKh+Z2q6DmP/HU8kycHZa/MPe+ipuceUIxdOioGAeciWya3Y5m9 XIzjTbXfEF8nIE049MxgGsE= X-Google-Smtp-Source: ACJfBot/Y70imaby/khJh0oDQPDP+NBEjJtKLodq0zLGf38vQcgV+y7/kbz0gRtUDSQ/pQBYPDGewQ== X-Received: by 10.55.16.80 with SMTP id a77mr3354675qkh.148.1515014752343; Wed, 03 Jan 2018 13:25:52 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:26 -0300 Message-Id: <20180103212436.15762-16-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [PATCH v2 15/25] sdcard: add missing CMD54 SDIO command X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 we don't implement it, but can see firmwares using it via UNIMP logs. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 2b4254802f..d2a0baa0a7 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1295,9 +1295,8 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) } break; =20 - case 52: - case 53: - /* CMD52, CMD53: reserved for SDIO cards + case 52 ... 54: + /* CMD52, CMD53, CMD54: reserved for SDIO cards * (see the SDIO Simplified Specification V2.0) * Handle as illegal command but do not complain * on stderr, as some OSes may use these in their --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015527801833.1078138376121; Wed, 3 Jan 2018 13:38:47 -0800 (PST) Received: from localhost ([::1]:37753 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqkF-0004v0-6S for importer@patchew.org; Wed, 03 Jan 2018 16:38:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52391) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqY1-00030G-Gk for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:11 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqXt-0008Lv-Kr for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:05 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:37618) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqXt-0008L8-Eg for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:25:57 -0500 Received: by mail-qk0-x242.google.com with SMTP id p13so3255573qke.4 for ; Wed, 03 Jan 2018 13:25:57 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.52 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:25:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=snvkTuHmK4qvMBCHqS4/mU8ku5+N0FDLcHAnii7JzgU=; b=Fc2sC6qeq6f4aeAwJSUWNPWVqF4MJUG98eULy53bpTQ/LfjdKrwe3Jj8IIaqGLHrZJ oMHAmg0W2qhcj1UleEypxT/SiM+QGVkvO47PB7VNAojTXsfmZVeaquqtRbLBOwn/IgyO iXTc8Cwac8P/HbevFuieC/YQOL28xsZRH8MjRIqxhAcS7ejjvNU0k4dD5+Mv+fxHfpk7 o5K276fINrLbIeLMRrvnMP7Ua4ZhLFviY31hiEwAyiWl7+ZE2L0DzzMgjkOpCcr1akV5 a3gqLivjI3fq5g24/e+NS/2vUrUbygBMa7ejTV5MWhH73WRdOSiftwXWxLqWOAsTlYyD EhRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=snvkTuHmK4qvMBCHqS4/mU8ku5+N0FDLcHAnii7JzgU=; b=G+xv0VWN52cXg/XX58zoK+Rhjropd9RWTQlw7g9zJe8cXNOJ/0/tcgXM3Iuc1DUnJD hH1H+RVEnoxtenhjhsYP/dZ+nt1EUkjM9WoTL33zpU4J3bt0J8SBBJCJeTJtRycN/Es7 Rfq+rDTRbD88bWilq+3mo4paSbnMAxJK+o0WHxGonrN9E9TGtjE9Dz6T0hGMz8in54he GC2D6Ae+5TrlaQZYtlNCQYn5IftwTtbOHBZeehbnM7KUIWTgwpzuMlcrm4IQsAnks7jC 5DnpCo5veSHoj1yNX9fXn1R1vw+76rqg6/evLBp3hd+yglR7cGZDj6wz6GFJ3ICNm5d/ a+Rw== X-Gm-Message-State: AKGB3mKs3PYdP3nGMJZv7mD2SyDRDdkii+xXO0Qn20t+NxGjjInscQ1y wjXEIgBPwEjMgTyhCNOlClc= X-Google-Smtp-Source: ACJfBov6nara4nejQNSMPN8ccVbcXqSFm/6K7osWW1b4U3qg6i55BYME2gm+zfSz3nicZvTBEyi9OQ== X-Received: by 10.55.214.198 with SMTP id p67mr3493593qkl.250.1515014756962; Wed, 03 Jan 2018 13:25:56 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:27 -0300 Message-Id: <20180103212436.15762-17-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [RFC PATCH v2 16/25] sdcard: add missing SPI legal commands X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 we don't implement them, but when firmware use them we get a UNIMP log. CMD: 58, 59 ACMD: 6, 18, 25, 26, 38, 43 - 49 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index d2a0baa0a7..a8198ecce9 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1324,6 +1324,18 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, = SDRequest req) } break; =20 + 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); @@ -1340,14 +1352,16 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) return sd_illegal; } =20 -static sd_rsp_type_t sd_app_command(SDState *sd, - SDRequest req) +static sd_rsp_type_t sd_app_command(SDState *sd, SDRequest req) { trace_sdcard_app_command(sd->proto_name, sd_acmd_abbreviation(req.cmd), req.cmd, req.arg, sd_state_name(sd->state)); sd->card_status |=3D APP_CMD; switch (req.cmd) { case 6: /* ACMD6: SET_BUS_WIDTH */ + if (sd->spi) { + goto unimplemented_cmd; + } if (sd->state =3D=3D sd_transfer_state) { sd->sd_status[0] &=3D 0x3f; sd->sd_status[0] |=3D (req.arg & 0x03) << 6; @@ -1361,7 +1375,12 @@ static sd_rsp_type_t sd_app_command(SDState *sd, sd->data_start =3D 0; sd->data_offset =3D 0; return sd_r1; + } + break; =20 + case 18: + if (sd->spi) { + goto unimplemented_cmd; } break; =20 @@ -1382,6 +1401,19 @@ static sd_rsp_type_t sd_app_command(SDState *sd, } break; =20 + 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 */ @@ -1428,6 +1460,12 @@ static sd_rsp_type_t sd_app_command(SDState *sd, } break; =20 + case 43 ... 49: + if (sd->spi) { + goto unimplemented_cmd; + } + break; + case 51: /* ACMD51: SEND_SCR */ if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_sendingdata_state; @@ -1443,6 +1481,12 @@ static sd_rsp_type_t sd_app_command(SDState *sd, default: /* Fall back to standard commands. */ return sd_normal_command(sd, req); + + unimplemented_cmd: + /* Commands that are recognised but not yet implemented in SPI mod= e. */ + qemu_log_mask(LOG_UNIMP, "SD: CMD%i not implemented in SPI mode\n", + req.cmd); + return sd_illegal; } =20 qemu_log_mask(LOG_GUEST_ERROR, "SD: ACMD%i in a wrong state\n", req.cm= d); --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015703448251.46395373192126; Wed, 3 Jan 2018 13:41:43 -0800 (PST) Received: from localhost ([::1]:37827 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqn8-0007fQ-LU for importer@patchew.org; Wed, 03 Jan 2018 16:41:42 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52567) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqY7-000369-6c for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqXy-0008P1-2D for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:11 -0500 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:42575) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqXx-0008Oa-Ol for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:01 -0500 Received: by mail-qk0-x244.google.com with SMTP id d202so3245064qkc.9 for ; Wed, 03 Jan 2018 13:26:01 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.25.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:26:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=0J4HA4l8dSKVXaK7FHJLAVL8cfHPn0jM2MF9wuS3FLc=; b=SKKeipz6XYsAh5DGL6TX7dz03x4h3AjQBaSe0s2OSlm3ZIGMrEEiXfNv5p6/GiBSzi sHQKS4sNDeMkEYMS0e+OYc3WTrYY1d5bjwZ0A44mNUoqyO43kVho3KKbN+GRbIFWnQBv QvNIGqsywAdKgztTwQ1LrfNQcaEUzFDJlOvuJZ9qsOiFdlz+kmh5jMProkgnr/wzGMiv DvXEMuAWAXQRChtY8y9X2YFQ+n9NiLoFALQNolzkIf5mryOTHoF5Wr3CtJFTcfBGOEsJ f7778N+1Us+CSfxVdnMYb9P8HTThGxNJ/e8aOkskFFZI3QOL2x3TCuJvwfCxVStikqgJ syYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=0J4HA4l8dSKVXaK7FHJLAVL8cfHPn0jM2MF9wuS3FLc=; b=PoKNInCbTLhhv2Q75k7mM6SpIjWjpFhmiexx5d1nk7dBYXPWT3LhiuA3rrO+Tb0N+9 vbtp6G4iqSffGdL1aCCDGhjzWtR2VwYEFhOHiRm+n1sVGiWjNUuNP+Zn57nu9ZOYRukl zDzP2YNxc9Ltv/PmNeSpPspY16L/tFUNsP6+8+LTSaaSfsv10cBH6QxjWLfykskJi8B8 /QxAQNbnQuUXx9WXF9nfcLtZ+EX9VR91crK1Sz0v8RjJAmw273+JfBK+MTb5rRvti6jM 0zbPMAWZ0hcr/gSUJ5kjxma5DuJtcAmOYkL6sU2iFJVcH1g+PLGGqZzqw6bxL9YgG+BD FudQ== X-Gm-Message-State: AKGB3mL3DXiJvgTDaSpoYkkkUES/6ox8lLcYgr7v9/z3C3F/6gd3mEhM YVS5zpl946xYxOqr2vFUYvs= X-Google-Smtp-Source: ACJfBou5KaTb37SjdSgwx+gJYM85If+fFZyY8M5lZD4LlFsbpqEPw+CQSamBc95tD1sg7e78kV2afg== X-Received: by 10.55.22.131 with SMTP id 3mr3717710qkw.22.1515014761250; Wed, 03 Jan 2018 13:26:01 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:28 -0300 Message-Id: <20180103212436.15762-18-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::244 Subject: [Qemu-devel] [RFC PATCH v2 17/25] sdcard: fix SPI response length X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 SPI response are often shorter than SD/MMC protocols. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++------------= ---- 1 file changed, 54 insertions(+), 19 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index a8198ecce9..024a9fa1df 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -466,29 +466,59 @@ static size_t sd_response_r1_make(SDState *sd, uint8_= t *response) /* Clear the "clear on read" status bits */ sd->card_status &=3D ~CARD_STATUS_C; =20 - response[0] =3D (status >> 24) & 0xff; - response[1] =3D (status >> 16) & 0xff; - response[2] =3D (status >> 8) & 0xff; - response[3] =3D (status >> 0) & 0xff; + if (sd->spi) { + response[0] =3D 0xff; /* XXX */ + return 1; + } else { + response[0] =3D (status >> 24) & 0xff; + response[1] =3D (status >> 16) & 0xff; + response[2] =3D (status >> 8) & 0xff; + response[3] =3D (status >> 0) & 0xff; + return 4; + } +} + +static size_t sd_response_r1b_make(SDState *sd, uint8_t *response) +{ + /* This response token is identical to the R1 format with the + * optional addition of the busy signal. */ + if (sd->spi) { + /* The busy signal token can be any number of bytes. A zero value + * indicates card is busy. A non-zero value indicates the card is + * ready for the next command. */ + size_t sz =3D sd_response_r1_make(sd, response); + + response[sz++] =3D 0x42; =20 - return 4; + return sz; + } + return sd_response_r1_make(sd, response); } =20 static size_t sd_response_r2s_make(SDState *sd, uint8_t *response) { - memcpy(response, sd->csd, sizeof(sd->csd)); - - return 16; + if (sd->spi) { + /* TODO */ + return 2; + } else { + memcpy(response, sd->csd, sizeof(sd->csd)); + return 16; + } } =20 static size_t sd_response_r3_make(SDState *sd, uint8_t *response) { - response[0] =3D (sd->ocr >> 24) & 0xff; - response[1] =3D (sd->ocr >> 16) & 0xff; - response[2] =3D (sd->ocr >> 8) & 0xff; - response[3] =3D (sd->ocr >> 0) & 0xff; + int ofs =3D 0; + + if (sd->spi) { + ofs +=3D sd_response_r1_make(sd, response); + } + response[ofs++] =3D (sd->ocr >> 24) & 0xff; + response[ofs++] =3D (sd->ocr >> 16) & 0xff; + response[ofs++] =3D (sd->ocr >> 8) & 0xff; + response[ofs++] =3D (sd->ocr >> 0) & 0xff; =20 - return 4; + return ofs; } =20 static void sd_response_r6_make(SDState *sd, uint8_t *response) @@ -1249,7 +1279,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) *(uint32_t *) sd->data =3D sd_wpbits(sd, req.arg); sd->data_start =3D addr; sd->data_offset =3D 0; - return sd_r1b; + return sd->spi ? sd_r1 : sd_r1b; } break; =20 @@ -1306,9 +1336,11 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, = SDRequest req) =20 /* Application specific commands (Class 8) */ case 55: /* CMD55: APP_CMD */ - if (sd->rca !=3D rca) - return sd_r0; - + if (!sd->spi) { + if (sd->rca !=3D rca) { + return sd_r0; + } + } sd->expecting_acmd =3D true; sd->card_status |=3D APP_CMD; return sd_r1; @@ -1374,7 +1406,7 @@ static sd_rsp_type_t sd_app_command(SDState *sd, SDRe= quest req) sd->state =3D sd_sendingdata_state; sd->data_start =3D 0; sd->data_offset =3D 0; - return sd_r1; + return sd->spi ? sd_r2_s : sd_r1; } break; =20 @@ -1569,10 +1601,13 @@ int sd_do_command(SDState *sd, SDRequest *req, send_response: switch (rtype) { case sd_r1: - case sd_r1b: rsplen =3D sd_response_r1_make(sd, response); break; =20 + case sd_r1b: + rsplen =3D sd_response_r1b_make(sd, response); + break; + case sd_r2_i: memcpy(response, sd->cid, sizeof(sd->cid)); rsplen =3D 16; --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015628395708.6940436821731; Wed, 3 Jan 2018 13:40:28 -0800 (PST) Received: from localhost ([::1]:37818 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqlq-0006Pg-FS for importer@patchew.org; Wed, 03 Jan 2018 16:40:22 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52573) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqY7-00036e-Mg for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqY2-0008Tk-6b for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:11 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:42129) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqY1-0008Ss-TE for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:06 -0500 Received: by mail-qt0-x243.google.com with SMTP id g9so3788901qth.9 for ; Wed, 03 Jan 2018 13:26:05 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.26.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:26:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8PLr452iHgG1wYbp7f/Igr+IPU1zJaaWxPbM6fNP+xU=; b=EkPnyLVm3zulMXcCEUnaKB3ThrKqbm7z6nAzTtXuAsOeZSu90cvu/r6KTFtv7GMbj6 C38gjwnlyTeV8kn2+zdlHieqIrQ3g07caOZQ7frl79Z1RbMBi3ghLEvAQgLzTAp4T+5r pw2+AWCtIefqgPABzsE+qaSRJboYubzv7JwLp5NN83H2oyH0CUpqmImPpHXs1LlZQlrr utaR+uwO11XqbZdnxXLjdU6sUIK36TF3Dv9LkURL5Nvn49sReX8Fqnf9V82wicYtqKLk rn+6IHy3Eb7npNXwyCceJHsHFIVmDguYwDflIDMi/5PZotzd0VxAAo+BaDKye7aFh1Eg 7+rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=8PLr452iHgG1wYbp7f/Igr+IPU1zJaaWxPbM6fNP+xU=; b=BrLUymy4ANkJc/aWm9cmmLW6VTodKuH9k7MXmibFbe6vpEHoknaDnSIXK5aLwE7sAh fVsV0AxtSuDtB2n9jGuteoHR+RBRXhsaVB7n40c+R+j5g5xEyx283ln4FEwNkWKr9eA7 6qc09AlAz1DmpVROoavRBlrqkIilYQv1OXNSci2SbdIrVZ3kHew0Dfe1SADBKC9hj4gn FriS54sMRcY4AFf8tWjSYFvqdeFYDTzJSXj9+tD5cDr+kH+hMNqERdSTgYnJ00jK0nph NCrsQLnWMnmJ9KFDVD+niH2AH+PiOw7tPpKzJqAELWrBgqPUWnMizLDBWPAy3HPWBcmL J1Sw== X-Gm-Message-State: AKGB3mJ6+SJyGB7pKvHiFMvNrkTfzOAUauUWB0pvNh/Gyvk4+0UtM9nm 95hUf2RLXh3cPIEsqwyv8Tg= X-Google-Smtp-Source: ACJfBovZBu4glO8ro/a+p8TGSYq7Qg3wZhDgBX+JHtBOUUZ6Dtcp5adAmi6LWigePPRJ4ApKGY0nhQ== X-Received: by 10.200.40.157 with SMTP id i29mr3605639qti.86.1515014765368; Wed, 03 Jan 2018 13:26:05 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:29 -0300 Message-Id: <20180103212436.15762-19-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v2 18/25] sdcard: add an enum for the SD PHY Spec version X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 So far this device intends to model the Spec v2.00 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 024a9fa1df..ed5874e4d6 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -58,6 +58,11 @@ do { fprintf(stderr, "SD: " fmt , ## __VA_ARGS__); } whi= le (0) =20 #define SDCARD_CMD_MAX 64 =20 +typedef enum { + SD_PHY_SPEC_VER_2_00 =3D 200, + SD_PHY_SPEC_VER_3_01 =3D 301, /* not yet supported */ +} sd_phy_spec_ver_t; + typedef enum { sd_r0 =3D 0, /* no response */ sd_r1, /* normal response command */ @@ -114,6 +119,7 @@ struct SDState { uint32_t pwd_len; uint8_t function_group[6]; =20 + int spec_version; bool spi; =20 uint32_t mode; /* current card mode, one of SDCardModes */ @@ -1977,6 +1983,7 @@ static void sd_realize(DeviceState *dev, Error **errp) int ret; =20 sd->proto_name =3D sd->spi ? "SPI" : "SD"; + sd->spec_version =3D SD_PHY_SPEC_VER_2_00; =20 if (sd->blk && blk_is_read_only(sd->blk)) { error_setg(errp, "Cannot use read-only drive as SD card"); --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015695306426.1285691131902; Wed, 3 Jan 2018 13:41:35 -0800 (PST) Received: from localhost ([::1]:37826 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqn0-0007Zj-F1 for importer@patchew.org; Wed, 03 Jan 2018 16:41:34 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52701) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqYB-0003AV-N3 for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:21 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqY6-00007r-7u for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:15 -0500 Received: from mail-qt0-x231.google.com ([2607:f8b0:400d:c0d::231]:34498) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqY6-00006w-0e for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:10 -0500 Received: by mail-qt0-x231.google.com with SMTP id 33so3816570qtv.1 for ; Wed, 03 Jan 2018 13:26:09 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.26.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:26:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=v+h+bgoFviUeNmNNscvbgG3RpYY8zLmbuzAAVdGTKYI=; b=Ymm7MXPKxjpfYsE8dlCN95GTXkDuHS8Vhj/akA4oe+Mnte26tSGUTteT6y44102DxI 7o7/OZ0VcjrayGUm6hEwxzlgf/R6bSO3INmseKyswuHZF6mL70rQEiRlt+jreLhX0yDK ZPJIFd94AbAeDg6XcmDtoljb8RxCk03gIcI7WEXLvTe3SxbU9M2gC899IkOTDSjhzQ56 87RaxtIOMLkfl5EnlEHaTsB21ZH1jP3uu4pY36X1D2lJbTORfTBnUPcBQWhc7X0m8T/L AJ/YIdtKs+p56z24a6QsmLRnxTKL3kE1QywkrM5zXoSoGehqGagUFDHowM2pT22sXRek sgKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=v+h+bgoFviUeNmNNscvbgG3RpYY8zLmbuzAAVdGTKYI=; b=CvvOOkswI65eXAPBsooMoi+B0JHxF199MIXHYRPmVwk3UfdwH4SvznWq7TGDRFGzre jISAO36+Ulgu5baL62OJJ6/dRnU7IP8mI0dYdrtZigZum3lWhSqJ7NLEcGxBFMKLzEn0 2C7qD5uKxBLYfr3a+wHwR+IymNY87NTlHcpmNteeRRIn6+TNJUMj07O4djcDeU5BGRnH eO6eJKs3jqX9NjEOMgECISuYzK13NFB3QcXYUH4PmsGUcS/iGAjtqeepmXmoQ2KkfQyj LlLYRDmJFQbJ+VdOaTkw45b850Zpr1hXTviahSLbatSRJMwOdN347AYeNXkBe0sHAmRa W0Lw== X-Gm-Message-State: AKGB3mIM1QvK6gVFH8y8UzTbIzSwWJMCbiysX0r41M2JdnJRX5BdeLol qhPrmzHTAE4L0ih5iYmXkh1PZJyO X-Google-Smtp-Source: ACJfBouYgRtRWec0rIRbGMSYBPGaA44fXgsDMCm29QTq2wkkAsjyqutXwaeMNpMHjUzqulf5MtLORA== X-Received: by 10.200.51.46 with SMTP id t43mr3681458qta.75.1515014769489; Wed, 03 Jan 2018 13:26:09 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:30 -0300 Message-Id: <20180103212436.15762-20-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::231 Subject: [Qemu-devel] [PATCH v2 19/25] sdcard: check if the card capacity is supported X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 The current Spec (v2.00) does not support SDXC cards (> 32GB). Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 41 +++++++++++++++++++++++++++++++++++++++++ hw/sd/trace-events | 1 + 2 files changed, 42 insertions(+) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index ed5874e4d6..a7cede8da6 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -63,6 +63,13 @@ typedef enum { SD_PHY_SPEC_VER_3_01 =3D 301, /* not yet supported */ } sd_phy_spec_ver_t; =20 +typedef enum { + sd_capacity_unknown, + sd_capacity_sdsc, /* not well supported */ + sd_capacity_sdhc, + sd_capacity_sdxc, /* not yet supported */ +} sd_card_capacity_t; + typedef enum { sd_r0 =3D 0, /* no response */ sd_r1, /* normal response command */ @@ -121,6 +128,7 @@ struct SDState { =20 int spec_version; bool spi; + sd_card_capacity_t capacity; =20 uint32_t mode; /* current card mode, one of SDCardModes */ int32_t state; /* current card state, one of SDCardStates */ @@ -161,6 +169,17 @@ static const char *sd_state_name(enum SDCardStates sta= te) return state_name[state]; } =20 +static const char *sd_capacity(sd_card_capacity_t capacity) +{ + static const char *capacity_name[] =3D { + [sd_capacity_unknown] =3D "UNKN", + [sd_capacity_sdsc] =3D "SDSC", + [sd_capacity_sdhc] =3D "SDHC", + [sd_capacity_sdxc] =3D "SDXC", + }; + return capacity_name[capacity]; +} + static const char *sd_cmd_abbreviation(uint8_t cmd) { static const char *cmd_abbrev[SDCARD_CMD_MAX] =3D { @@ -1991,11 +2010,33 @@ static void sd_realize(DeviceState *dev, Error **er= rp) } =20 if (sd->blk) { + int64_t size; + ret =3D blk_set_perm(sd->blk, BLK_PERM_CONSISTENT_READ | BLK_PERM_= WRITE, BLK_PERM_ALL, errp); if (ret < 0) { return; } + + size =3D blk_getlength(sd->blk); + if (size < 0 || size <=3D 2 * G_BYTE) { + sd->capacity =3D sd_capacity_sdsc; + } else if (size <=3D 32 * G_BYTE) { + sd->capacity =3D sd_capacity_sdhc; + } else if (size <=3D 2 * T_BYTE) { + sd->capacity =3D sd_capacity_sdxc; + } else { + error_setg(errp, "block size unsupported: %lld TB", size / T_B= YTE); + return; + } + trace_sdcard_capacity(sd_capacity(sd->capacity), size); + + if (sd->capacity =3D=3D sd_capacity_sdxc + && sd->spec_version < SD_PHY_SPEC_VER_3_01) { + error_setg(errp, "capacity SDHC requires at least Spec v3.01"); + return; + } + blk_set_dev_ops(sd->blk, &sd_block_ops, sd); } } diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 25ab339f97..215e0eec3a 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -28,6 +28,7 @@ sdcard_read_block(uint64_t addr, uint32_t len) "addr 0x%"= PRIx64 " size 0x%x" sdcard_write_block(uint64_t addr, uint32_t len) "addr 0x%" PRIx64 " size 0= x%x" sdcard_write_data(uint8_t value) "value 0x%02x" sdcard_read_data(int length) "len %d" +sdcard_capacity(const char *capacity, int64_t size) "%s card (%ld B)" =20 # hw/sd/milkymist-memcard.c milkymist_memcard_memory_read(uint32_t addr, uint32_t value) "addr 0x%08x = value 0x%08x" --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015867666437.37530326647857; Wed, 3 Jan 2018 13:44:27 -0800 (PST) Received: from localhost ([::1]:37878 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqph-0001bI-Pj for importer@patchew.org; Wed, 03 Jan 2018 16:44:21 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52849) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqYH-0003GX-5s for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqYA-0000Cd-En for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:21 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:46602) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqYA-0000Bv-5q for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:14 -0500 Received: by mail-qk0-x242.google.com with SMTP id b132so3256461qkc.13 for ; Wed, 03 Jan 2018 13:26:14 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.26.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:26:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=SYEcZmYePa9FZIRq4vMILYj8fbduE+fDUMm3YKE8BoM=; b=TSIr1dlpj8JxgnzQOXLO1QOdLn+f6kueZwMujBoYgTbmiG5UadyN1Av7oxJ4FPD4Xw IOJ+tD3NXwpAkaVXbQB0PtpTpWCN5KHUy1g1SF1suS4em6NiFVsf0Kv/30abR+rnHhB5 4gWTeqb2s5gB3ZySe34UGoZOAN23oQWBdakey/uUwNym35jQ9XrpApxbrDVXM8xWp8aw QBvDukm4ZLxKonJhnnVrQLQlSgRvUJr9mTEmIOyk0qxmbjVva2pr6wOeQm2luWl4wkK9 1BPupo0SM5xdYA+/bEms9xwvYVSeWkjoiMX7D1BIbZqD0wDOh4ShMNouYB8C+LBBRvCA c1ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=SYEcZmYePa9FZIRq4vMILYj8fbduE+fDUMm3YKE8BoM=; b=Hy5DLj6vG1FN2zf2W8wFtg1dxpVlYkiRvF31T3RbQRg+2+qizvmMiNSykKHnZ1rA/0 VuSSPfdfALrXaR/YtpeBpgizSVru9sn5YWFoV0qlglnHxScEzq4JDxWHF/fLIREaZmEp IlwumeX2Iy9YGiZOyRE++65DnlNXed0H33tI4kyCV5Rt12rTO3BuuAJ8z7kbUNY8T4v4 u8dm1bbANgOeGRBVNvi+n6XGt2r6aHO8ODJDRk2KttX1JjqZCPj+N/jQk9ECW5M6OfFE pfFswJE8jht7oOuAxJ6XxWPd49FA6dlGnHfX+CoeZPrIjPH8KO9nzL6t72bRukydAakz a/WQ== X-Gm-Message-State: AKGB3mJRwsysMi/qLaAZJ5lX0QVQMIT+0qQqzdedF8shhOX2vC6PafP9 UO6o4OQpNOUAcooFfy99PMU= X-Google-Smtp-Source: ACJfBouYVWYo1dMHMChFSEGn5Bnjlb8Et2rC8+2xoGbKXkPTxdG0wTEoySsgerTzVUaxX/QFbxMMAw== X-Received: by 10.55.16.80 with SMTP id a77mr3355844qkh.148.1515014773750; Wed, 03 Jan 2018 13:26:13 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:31 -0300 Message-Id: <20180103212436.15762-21-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PATCH v2 20/25] sdcard: Don't always set the high capacity bit X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Don't set the high capacity bit by default as it will be set if required in the sd_set_csd() function. [based on a patch from Alistair Francis and Peter Ogden from qemu/xilinx tag xilinx-v2015.4] Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index a7cede8da6..16a8a7411d 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -318,6 +318,7 @@ static uint16_t sd_crc16(void *message, size_t width) return shift_reg; } =20 +FIELD(OCR, CARD_CAPACITY, 30, 1); /* 0:SDSC, 1:SDHC/SDXC */ FIELD(OCR, CARD_POWER_UP, 31, 1); =20 #define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ @@ -336,6 +337,10 @@ static void sd_ocr_powerup(void *opaque) =20 /* card power-up OK */ sd->ocr =3D FIELD_DP32(sd->ocr, OCR, CARD_POWER_UP, 1); + + if (sd->capacity >=3D sd_capacity_sdhc) { + sd->ocr =3D FIELD_DP32(sd->ocr, OCR, CARD_CAPACITY, 1); + } } =20 static void sd_reset_scr(SDState *sd) @@ -440,7 +445,6 @@ static void sd_reset_csd(SDState *sd, uint64_t size) sd->csd[13] =3D 0x40; sd->csd[14] =3D 0x00; sd->csd[15] =3D 0x00; - sd->ocr |=3D 1 << 30; /* High Capacity SD Memory Card */ } } =20 --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515016023055571.3613568647668; Wed, 3 Jan 2018 13:47:03 -0800 (PST) Received: from localhost ([::1]:38170 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqsF-0004Go-5V for importer@patchew.org; Wed, 03 Jan 2018 16:46:59 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52850) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqYH-0003GY-5h for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:22 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqYE-0000JT-Nr for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:21 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:39756) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqYE-0000JK-Fh for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:18 -0500 Received: by mail-qk0-x242.google.com with SMTP id c5so3241412qkg.6 for ; Wed, 03 Jan 2018 13:26:18 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.26.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:26:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=RdwtmvAk+rg7qQqhvsXLmWr2drmj7DmzvEUhvzTvlWw=; b=d90UH4p6Otb8nlwRlCkQBZVi+KLL1he7CJ3XPHEdwxSCSmUwZUNmJeKD0R9SIPO+LI m7HJbgA8LC7MxVNl9MFjcbkODCijILFRjY/437TSUSEkY1G/uGRgNmAX9//kwbgIeRxL 8FEHqGRTQ9aZOfjfbAcZaRQAmb09BfcT4bvrGRumcoV2oAuA87MjMRDfwGxjB9h0eARC puTwsh3182ArWglqxltnspBE1Bj8NmRtg7lILOoimt1a/SOkJXrTVwcEPVkJFpBmpjT7 RGRcgjdH1UjMlI72HSPR0EAtB8dYLwLX03BMpNqQq065SA7zy5au10NRMGcDBseHgtl5 AxEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=RdwtmvAk+rg7qQqhvsXLmWr2drmj7DmzvEUhvzTvlWw=; b=JWCgJyzMFwrqUNOkhbbh1CUke53HIieols82AFAbDbopSZYfG6LUwK58XSou35vMJM kjNNpRTcj2QxVCWZTwGZKihx7kI6HThhKQi35L3rtwr3NstvJB191m1peYsfDCSySz6g tBP2u/ZBJO1H27vdBSLKDLuyz1VOSFFXKF9r19QXstk0AvWZKi79+DZFJKajQercG7Q3 8PghG8kkEFq9ekJtU1JzRh3ZfLl1Jv8yf6elbZWfhTiwzyhrMSQgKhN+P/X3ubiBQGgv Rh0W6MmeUx+xMk7blGheKsmXjfD/YQLOZFw6iCQxzs/V47Utk2pxHh5uaq3VgSdpE8sK jvaQ== X-Gm-Message-State: AKGB3mI6SGOloKqW4AKoFOssiE7Yweu+P1NxRH80bXLPIREsdAkJcxfj cvJHbvqWZv+gUEkv4ilwoRM= X-Google-Smtp-Source: ACJfBoviGtMifVit6k+laM9YEmJfL6rwuzyNydWKHlVrRDkst/opBOrPxfSZA8eDydOyjozTwJuJqg== X-Received: by 10.233.216.195 with SMTP id u186mr3243979qkf.341.1515014777974; Wed, 03 Jan 2018 13:26:17 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:32 -0300 Message-Id: <20180103212436.15762-22-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PATCH v2 21/25] sdcard: add cmd_version_supported(), improve cmd_class_supported() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Using the cmd_supported[] array we keep track of which Spec version introdu= ced a command, and which class it belongs to. This array is initialized with SD Spec v2.00. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 128 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++= ---- 1 file changed, 121 insertions(+), 7 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 16a8a7411d..0e4871869f 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -278,13 +278,121 @@ static const sd_cmd_type_t sd_cmd_type[SDCARD_CMD_MA= X] =3D { sd_adtc, sd_none, sd_none, sd_none, sd_none, sd_none, sd_none, sd_none, }; =20 -static const int sd_cmd_class[SDCARD_CMD_MAX] =3D { - 0, 0, 0, 0, 0, 9, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, - 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 6, 6, 6, 6, - 5, 5, 10, 10, 10, 10, 5, 9, 9, 9, 7, 7, 7, 7, 7, 7, - 7, 7, 10, 7, 9, 9, 9, 8, 8, 10, 8, 8, 8, 8, 8, 8, +#define BIT_2_4 (BIT(2) | BIT(4)) +#define BIT_2_4_7 (BIT(2) | BIT(4) | BIT(7)) +#define BIT_SECU BIT(30) /* SD Specifications Part3 Security Specificat= ion */ +#define BIT_MANUF BIT(31) /* reserved for manufacturer */ + +typedef struct { + struct { + uint16_t version; + uint32_t ccc_mask; + } sd, spi; +} sd_cmd_supported_t; + +static const sd_cmd_supported_t cmd_supported[SDCARD_CMD_MAX] =3D { + /* SD SPI */ + [0] =3D {{200, BIT(0)}, {200, BIT(0)}, }, + [1] =3D {{}, {200, BIT(0)}, }, + [2] =3D {{200, BIT(0)}, {}, }, + [3] =3D {{200, BIT(0)}, {}, }, + [4] =3D {{200, BIT(0)}, {}, }, + [5] =3D {{200, BIT(9)}, {200, BIT(9)}, }, + [6] =3D {{200, BIT(10)}, {200, BIT(10)}, }, + [7] =3D {{200, BIT(0)}, {}, }, + [8] =3D {{200, BIT(0)}, {200, BIT(0)}, }, + [9] =3D {{200, BIT(0)}, {200, BIT(0)}, }, + [10] =3D {{200, BIT(0)}, {200, BIT(0)}, }, + [12] =3D {{200, BIT(0)}, {200, BIT(0)}, }, + [13] =3D {{200, BIT(0)}, {200, BIT(0)}, }, + [14] =3D {{200, BIT(0)}, {}, }, + [15] =3D {{200, BIT(0)}, {}, }, + [16] =3D {{200, BIT_2_4_7}, {200, BIT_2_4_7}, }, + [17] =3D {{200, BIT(2)}, {200, BIT(2)}, }, + [18] =3D {{200, BIT(2)}, {200, BIT(2)}, }, + [24] =3D {{200, BIT(4)}, {200, BIT(4)}, }, + [25] =3D {{200, BIT(4)}, {200, BIT(4)}, }, + [26] =3D {{200, BIT_MANUF}, {/*?*/}, }, + [27] =3D {{200, BIT(4)}, {200, BIT(4)}, }, + [28] =3D {{200, BIT(6)}, {200, BIT(6)}, }, + [29] =3D {{200, BIT(6)}, {200, BIT(6)}, }, + [30] =3D {{200, BIT(6)}, {200, BIT(6)}, }, + [32] =3D {{200, BIT(5)}, {200, BIT(5)}, }, + [33] =3D {{200, BIT(5)}, {200, BIT(5)}, }, + [34] =3D {{200, BIT(10)}, {200, BIT(10)}, }, + [35] =3D {{200, BIT(10)}, {200, BIT(10)}, }, + [36] =3D {{200, BIT(10)}, {200, BIT(10)}, }, + [37] =3D {{200, BIT(10)}, {200, BIT(10)}, }, + [38] =3D {{200, BIT(5)}, {200, BIT(5)}, }, + [42] =3D {{200, BIT(7)}, {200, BIT(7)}, }, + [50] =3D {{200, BIT(10)}, {200, BIT(10)}, }, + [52] =3D {{200, BIT(9)}, {200, BIT(9)}, }, + [53] =3D {{200, BIT(9)}, {200, BIT(9)}, }, + [54] =3D {{/* 2.00 SDIO */}, {/* 2.00 SDIO */}, }, + [55] =3D {{200, BIT(8)}, {200, BIT(8)}, }, + [56] =3D {{200, BIT(8)}, {200, BIT(8)}, }, + [57] =3D {{200, BIT(10)}, {200, BIT(10)}, }, + [58] =3D {{}, {200, BIT(0)}, }, + [59] =3D {{}, {200, BIT(0)}, }, + [60] =3D {{200, BIT_MANUF}, {/*?*/}, }, + [61] =3D {{200, BIT_MANUF}, {/*?*/}, }, + [62] =3D {{200, BIT_MANUF}, {/*?*/}, }, + [63] =3D {{200, BIT_MANUF}, {/*?*/}, }, +}, acmd_supported[SDCARD_CMD_MAX] =3D { + /* SD SPI */ + [6] =3D {{200, BIT(8)}, {}, }, + [13] =3D {{200, BIT(8)}, {200, BIT(8)}, }, + [18] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, + [22] =3D {{200, BIT(8)}, {200, BIT(8)}, }, + [23] =3D {{200, BIT(8)}, {200, BIT(8)}, }, + [25] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, + [26] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, + [38] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, + [41] =3D {{200, BIT(8)}, {200, BIT(8)}, }, + [42] =3D {{200, BIT(8)}, {200, BIT(8)}, }, + [43] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, + [44] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, + [45] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, + [46] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, + [47] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, + [48] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, + [49] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, + [51] =3D {{200, BIT(8)}, {200, BIT(8)}, }, }; =20 +static bool cmd_version_supported(SDState *sd, uint8_t cmd, bool is_acmd) +{ + const sd_cmd_supported_t *cmdset =3D is_acmd ? acmd_supported : cmd_su= pported; + uint16_t cmd_version; + + cmd_version =3D sd->spi ? cmdset[cmd].spi.version : cmdset[cmd].sd.ver= sion; + if (cmd_version) { + return true; + } + qemu_log_mask(LOG_GUEST_ERROR, "%s: Unsupported %s%02u\n", + sd->proto_name, is_acmd ? "ACMD" : "CMD", cmd); + + return false; +} + +static bool cmd_class_supported(SDState *sd, uint8_t cmd, uint8_t class, + bool is_acmd) +{ + const sd_cmd_supported_t *cmdset =3D is_acmd ? acmd_supported : cmd_su= pported; + uint32_t cmd_ccc_mask; + + cmd_ccc_mask =3D sd->spi ? cmdset[cmd].spi.ccc_mask : cmdset[cmd].sd.c= cc_mask; + + /* class 1, 3 and 9 are not supported in SPI mode */ + if (cmd_ccc_mask & BIT(class)) { + return true; + } + qemu_log_mask(LOG_GUEST_ERROR, "%s: Unsupported %s%02u (class %d)\n", + sd->proto_name, is_acmd ? "ACMD" : "CMD", cmd, class); + + return false; +} + static uint8_t sd_crc7(void *message, size_t width) { int i, bit; @@ -1570,8 +1678,8 @@ static bool cmd_valid_while_locked(SDState *sd, SDReq= uest *req) if (req->cmd =3D=3D 16 || req->cmd =3D=3D 55) { return true; } - return sd_cmd_class[req->cmd] =3D=3D 0 - || sd_cmd_class[req->cmd] =3D=3D 7; + return cmd_class_supported(sd, req->cmd, 0, false) || + cmd_class_supported(sd, req->cmd, 7, false); } =20 int sd_do_command(SDState *sd, SDRequest *req, @@ -1596,6 +1704,12 @@ int sd_do_command(SDState *sd, SDRequest *req, req->cmd &=3D 0x3f; } =20 + if (!cmd_version_supported(sd, req->cmd, sd->expecting_acmd)) { + sd->card_status |=3D ILLEGAL_COMMAND; + rtype =3D sd_illegal; + goto send_response; + } + if (sd->card_status & CARD_IS_LOCKED) { if (!cmd_valid_while_locked(sd, req)) { sd->card_status |=3D ILLEGAL_COMMAND; --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 151501614597093.02076779985225; Wed, 3 Jan 2018 13:49:05 -0800 (PST) Received: from localhost ([::1]:38271 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWquH-0000ED-8J for importer@patchew.org; Wed, 03 Jan 2018 16:49:05 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52919) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqYJ-0003JM-Ot for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:24 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqYI-0000Pl-Kd for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:23 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:44080) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqYI-0000PO-F6 for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:22 -0500 Received: by mail-qk0-x242.google.com with SMTP id v188so3247829qkh.11 for ; Wed, 03 Jan 2018 13:26:22 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.26.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:26:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EFCLzoa9sqzWeJnmifImjFUgn4N8+odcL9WoXEr3M+E=; b=eCOjBo+nWfoPltq/uUvSadVpeHqb878oTO/BaVgRXLE359wZ6nZNl3Y5edZz1Kgfor 34piY3diLjKBlngZrlwZjDoiOfQYWcUENjcW1hpOBvy346crvN9YwlMlBtKRUxTQ28rs QnQXJ3QSrW3YC/bN9NPJeOn8SNouRLQb34Q7uEP562mbBbw+8+46KBzCrcS41jBDDbgH lIL6KIN03WnLaWbgPrMMgTuPPEurgGoUr6Cf0iNTiaimX1a2T1LkZFO++JzO1Kzu3p2H 7H7K1QLvnAuuvz5AGgl4pabVElQ7qEBk53V6OUWIO5oq/LycsyQAaXKSbwUgy5jh5WjX ISbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=EFCLzoa9sqzWeJnmifImjFUgn4N8+odcL9WoXEr3M+E=; b=qjR8qs4h9+t9VEF4TtBkn1IkajQq55AAt8zQbMZ/vwDUS1gmF6xEcqg7K7+E5UGBJL pjx4lZ/nWuWnwAQxpO5Oow2YgPLv4lPWAdJdafpcRtK3r1msNBpvLAAPozgmxpfVzz0f 9tJIQX4CvZxDyf6dxySGZVi644iyjzYyG2MML2cvE5dHKMMk/vNTGFw1BDrYFvqD5X6b YJ977qtAFZN3lrNhdLYJoopqu1WLosLO3ymj9WOb1T85xdhN/YHrlT7sL05cs0Ehbk5z WAum9QKWuP82Q6yMNa8bp2WLe6rTWH17P9XSUvUTDTCPBkMmD182Ep/MaNha1Yx9ZL+C aCaQ== X-Gm-Message-State: AKGB3mKmZ8Bh7rtSTjSxA4meZUSiSMoWYslsU+U2VIgWKhEj6hNVVPjE W5ZzZiKApFQlzdKKPB/o+mw= X-Google-Smtp-Source: ACJfBovh/vOjo20LNq99MERy1rzUUvVfdj8tOGObhX9VbgVHyVOeIJzqvKDPBr8RgzWm78OLMeTaaw== X-Received: by 10.55.76.10 with SMTP id z10mr3632898qka.346.1515014782084; Wed, 03 Jan 2018 13:26:22 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:33 -0300 Message-Id: <20180103212436.15762-23-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::242 Subject: [Qemu-devel] [PATCH v2 22/25] sdcard: remove unreachable SPI commands X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 we already checked in sd_do_command() with cmd_version_supported() if the command is protocol supported (returning ILLEGAL if not). Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 0e4871869f..16199cd886 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -1071,8 +1071,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) return sd_r1; =20 case 2: /* CMD2: ALL_SEND_CID */ - if (sd->spi) - goto bad_cmd; if (sd->state =3D=3D sd_ready_state) { sd->state =3D sd_identification_state; return sd_r2_i; @@ -1080,8 +1078,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) break; =20 case 3: /* CMD3: SEND_RELATIVE_ADDR */ - if (sd->spi) - goto bad_cmd; switch (sd->state) { case sd_identification_state: case sd_standby_state: @@ -1095,8 +1091,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) break; =20 case 4: /* CMD4: SEND_DSR */ - if (sd->spi) - goto bad_cmd; switch (sd->state) { case sd_standby_state: break; @@ -1110,8 +1104,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) return sd_illegal; =20 case 6: /* CMD6: SWITCH_FUNCTION */ - if (sd->spi) - goto bad_cmd; if (sd->mode =3D=3D sd_data_transfer_mode) { sd_function_switch(sd, req.arg); sd->state =3D sd_sendingdata_state; @@ -1122,8 +1114,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) break; =20 case 7: /* CMD7: SELECT/DESELECT_CARD */ - if (sd->spi) - goto bad_cmd; switch (sd->state) { case sd_standby_state: if (sd->rca !=3D rca) @@ -1224,8 +1214,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) break; =20 case 11: /* CMD11: READ_DAT_UNTIL_STOP */ - if (sd->spi) - goto bad_cmd; if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_sendingdata_state; sd->data_start =3D req.arg; @@ -1264,8 +1252,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) break; =20 case 15: /* CMD15: GO_INACTIVE_STATE */ - if (sd->spi) - goto bad_cmd; if (sd->mode =3D=3D sd_data_transfer_mode) { if (sd->rca !=3D rca) return sd_r0; @@ -1358,8 +1344,6 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) break; =20 case 26: /* CMD26: PROGRAM_CID */ - if (sd->spi) - goto bad_cmd; if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_receivingdata_state; sd->data_start =3D 0; @@ -1528,9 +1512,6 @@ static sd_rsp_type_t sd_app_command(SDState *sd, SDRe= quest req) sd->card_status |=3D APP_CMD; switch (req.cmd) { case 6: /* ACMD6: SET_BUS_WIDTH */ - if (sd->spi) { - goto unimplemented_cmd; - } if (sd->state =3D=3D sd_transfer_state) { sd->sd_status[0] &=3D 0x3f; sd->sd_status[0] |=3D (req.arg & 0x03) << 6; --=20 2.15.1 From nobody Tue Oct 28 02:12:20 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015364251263.33277202988586; Wed, 3 Jan 2018 13:36:04 -0800 (PST) Received: from localhost ([::1]:37699 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqhf-0002aB-9R for importer@patchew.org; Wed, 03 Jan 2018 16:36:03 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52973) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqYR-0003RU-P8 for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqYN-0000WE-HE for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:31 -0500 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:41403) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqYN-0000Vt-BD for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:27 -0500 Received: by mail-qt0-x242.google.com with SMTP id i40so3793807qti.8 for ; Wed, 03 Jan 2018 13:26:27 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.26.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:26:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=OoitqVI/q9QxUnPMXpubwNHQFDaln3aodDXjXb4G6iw=; b=SlYoV+sA+HkmReMbGgVJAVMMVM0TWzxxn4wAXJR2ck635zRqtR0OdvxpR19iNfvI+W NFCESCT5U/NniCUBGXbGHmXPyqW7juQcQJDgNDIRXKSnMviHA0ZbL40RPNC+KujXqIdy xPv9CL8vJCKBLXh+o1EQNiljiyjnXv1Z/D1lFVOAlI/MQXGbjKnx1KHNoi0SPo5tER8S TTwfyAnSJaxN6My8cBW0A6ky3ihcCiLjidpDQRtXNHoloNRCD5xskMca5oRcJT0DdKGs SiAk7v3r5447S4DKUy3gMnPoDu0s1xSirrhX8K1z3NB5udDrvWZPb2rmFDN9vcDw88gH GT8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=OoitqVI/q9QxUnPMXpubwNHQFDaln3aodDXjXb4G6iw=; b=fwYgeLnMMJgBh65wOE3KBN5vqci6tvGykYYOC65+eJmYHSxc71/4h6fr8xTikvt4E/ 4Ql3PzhOYY5SWsXojOtYsWAJc9aabIbkAJQYh9TTMFQmfkf8SrmN0vya7hj5aoXGuHvb O4j6rLUxBpT1U5ulmHxoaqUIvujdHht5wrq50oPAri8QXGXem+6QQvoEjJOEHV7XdY6k 6artdp6pt2XY6Eh+OV5lj50iMAADMjxytFxOFBWozleARHCdK3ydjNG0RD8GBIMuG6ja fNOMUaL6JscjwGL+6Wqf5Ji4lGbOgJDM1bRn/YGA5henmj9c5MrtCopB8BZTdycuhgT1 3gBg== X-Gm-Message-State: AKGB3mLn19XzXxB53/IG959HI3rulqVlO/Q7eWGYTjeq7kyoqXalGMgn u8rxsjlkgwTF3NaOiZwJ3DY= X-Google-Smtp-Source: ACJfBoslMPdusDHNhOqUXtFncPtTIr06Eq0H1U43ivgmpy7oRhdPvK0F0oKpO8/xlEZYsqLqaDnbOg== X-Received: by 10.200.8.56 with SMTP id u53mr3671691qth.85.1515014786699; Wed, 03 Jan 2018 13:26:26 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:34 -0300 Message-Id: <20180103212436.15762-24-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::242 Subject: [Qemu-devel] [RFC PATCH v2 23/25] sdcard: store the bus protocol in an enum X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 One and only one protocol can be used at a time. We use a bitmask 'bus_protocol' simplify to check with one variable which protocols are supported (this will help when we start using the MMC mode). Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/sd/sd.h | 5 ++ include/hw/sd/sdcard_legacy.h | 2 +- hw/sd/sd.c | 141 ++++++++++++++++++++++++++++----------= ---- 3 files changed, 100 insertions(+), 48 deletions(-) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index a342e7bc3e..6874696ff7 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -55,6 +55,11 @@ #define AKE_SEQ_ERROR (1 << 3) #define OCR_CCS_BITN 30 =20 +typedef enum { + PROTO_SD =3D 0, + PROTO_SPI =3D 1 << 1, +} sd_bus_protocol_t; + typedef enum { sd_none =3D -1, sd_bc =3D 0, /* broadcast -- no response */ diff --git a/include/hw/sd/sdcard_legacy.h b/include/hw/sd/sdcard_legacy.h index 882e13a8f1..08674797b5 100644 --- a/include/hw/sd/sdcard_legacy.h +++ b/include/hw/sd/sdcard_legacy.h @@ -32,7 +32,7 @@ #include "hw/sd/sd.h" =20 /* Legacy functions to be used only by non-qdevified callers */ -SDState *sd_init(BlockBackend *blk, bool is_spi); +SDState *sd_init(BlockBackend *blk, bool is_spi); /* deprecated */ int sd_do_command(SDState *card, SDRequest *request, uint8_t *response); void sd_write_data(SDState *card, uint8_t value); uint8_t sd_read_data(SDState *card); diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 16199cd886..d626445282 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -127,7 +127,7 @@ struct SDState { uint8_t function_group[6]; =20 int spec_version; - bool spi; + uint32_t bus_protocol; sd_card_capacity_t capacity; =20 uint32_t mode; /* current card mode, one of SDCardModes */ @@ -150,6 +150,18 @@ struct SDState { const char *proto_name; }; =20 +static const char *sd_protocol_name(sd_bus_protocol_t protocol) +{ + switch (protocol) { + case PROTO_SD: + return "SD"; + case PROTO_SPI: + return "SPI"; + default: + g_assert_not_reached(); + } +} + static const char *sd_state_name(enum SDCardStates state) { static const char *state_name[] =3D { @@ -365,7 +377,16 @@ static bool cmd_version_supported(SDState *sd, uint8_t= cmd, bool is_acmd) const sd_cmd_supported_t *cmdset =3D is_acmd ? acmd_supported : cmd_su= pported; uint16_t cmd_version; =20 - cmd_version =3D sd->spi ? cmdset[cmd].spi.version : cmdset[cmd].sd.ver= sion; + switch (sd->bus_protocol) { + case PROTO_SD: + cmd_version =3D cmdset[cmd].sd.version; + break; + case PROTO_SPI: + cmd_version =3D cmdset[cmd].spi.version; + break; + default: + g_assert_not_reached(); + } if (cmd_version) { return true; } @@ -381,9 +402,17 @@ static bool cmd_class_supported(SDState *sd, uint8_t c= md, uint8_t class, const sd_cmd_supported_t *cmdset =3D is_acmd ? acmd_supported : cmd_su= pported; uint32_t cmd_ccc_mask; =20 - cmd_ccc_mask =3D sd->spi ? cmdset[cmd].spi.ccc_mask : cmdset[cmd].sd.c= cc_mask; - - /* class 1, 3 and 9 are not supported in SPI mode */ + switch (sd->bus_protocol) { + case PROTO_SD: + cmd_ccc_mask =3D cmdset[cmd].sd.ccc_mask; + break; + case PROTO_SPI: + /* class 1, 3 and 9 are not supported in SPI mode */ + cmd_ccc_mask =3D cmdset[cmd].spi.ccc_mask; + break; + default: + g_assert_not_reached(); + } if (cmd_ccc_mask & BIT(class)) { return true; } @@ -603,7 +632,7 @@ static size_t sd_response_r1_make(SDState *sd, uint8_t = *response) /* Clear the "clear on read" status bits */ sd->card_status &=3D ~CARD_STATUS_C; =20 - if (sd->spi) { + if (sd->bus_protocol =3D=3D PROTO_SPI) { response[0] =3D 0xff; /* XXX */ return 1; } else { @@ -619,7 +648,7 @@ static size_t sd_response_r1b_make(SDState *sd, uint8_t= *response) { /* This response token is identical to the R1 format with the * optional addition of the busy signal. */ - if (sd->spi) { + if (sd->bus_protocol =3D=3D PROTO_SPI) { /* The busy signal token can be any number of bytes. A zero value * indicates card is busy. A non-zero value indicates the card is * ready for the next command. */ @@ -634,7 +663,7 @@ static size_t sd_response_r1b_make(SDState *sd, uint8_t= *response) =20 static size_t sd_response_r2s_make(SDState *sd, uint8_t *response) { - if (sd->spi) { + if (sd->bus_protocol =3D=3D PROTO_SPI) { /* TODO */ return 2; } else { @@ -647,7 +676,7 @@ static size_t sd_response_r3_make(SDState *sd, uint8_t = *response) { int ofs =3D 0; =20 - if (sd->spi) { + if (sd->bus_protocol =3D=3D PROTO_SPI) { ofs +=3D sd_response_r1_make(sd, response); } response[ofs++] =3D (sd->ocr >> 24) & 0xff; @@ -663,6 +692,7 @@ static void sd_response_r6_make(SDState *sd, uint8_t *r= esponse) uint16_t arg; uint16_t status; =20 + assert(sd->bus_protocol !=3D PROTO_SPI); arg =3D sd->rca; status =3D ((sd->card_status >> 8) & 0xc000) | ((sd->card_status >> 6) & 0x2000) | @@ -677,6 +707,7 @@ static void sd_response_r6_make(SDState *sd, uint8_t *r= esponse) =20 static void sd_response_r7_make(SDState *sd, uint8_t *response) { + assert(sd->bus_protocol !=3D PROTO_SPI); response[0] =3D (sd->vhs >> 24) & 0xff; response[1] =3D (sd->vhs >> 16) & 0xff; response[2] =3D (sd->vhs >> 8) & 0xff; @@ -844,7 +875,7 @@ static const VMStateDescription sd_vmstate =3D { }; =20 /* Legacy initialization function for use by non-qdevified callers */ -SDState *sd_init(BlockBackend *blk, bool is_spi) +static SDState *sdcard_init(BlockBackend *blk, sd_bus_protocol_t bus_proto= col) { Object *obj; DeviceState *dev; @@ -857,7 +888,13 @@ SDState *sd_init(BlockBackend *blk, bool is_spi) error_report("sd_init failed: %s", error_get_pretty(err)); return NULL; } - qdev_prop_set_bit(dev, "spi", is_spi); + switch (bus_protocol) { + case PROTO_SPI: + qdev_prop_set_bit(dev, "spi", true); + break; + default: + break; + } object_property_set_bool(obj, true, "realized", &err); if (err) { error_report("sd_init failed: %s", error_get_pretty(err)); @@ -867,6 +904,11 @@ SDState *sd_init(BlockBackend *blk, bool is_spi) return SD_CARD(dev); } =20 +SDState *sd_init(BlockBackend *blk, bool is_spi) +{ + return sdcard_init(blk, is_spi ? PROTO_SPI : PROTO_SD); +} + void sd_set_cb(SDState *sd, qemu_irq readonly, qemu_irq insert) { sd->readonly_cb =3D readonly; @@ -1062,13 +1104,14 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) sd->state =3D sd_idle_state; sd_reset(DEVICE(sd)); } - return sd->spi ? sd_r1 : sd_r0; + return sd->bus_protocol =3D=3D PROTO_SPI ? sd_r1 : sd_r0; =20 case 1: /* CMD1: SEND_OP_CMD */ - if (!sd->spi) - goto bad_cmd; - sd->state =3D sd_transfer_state; - return sd_r1; + if (sd->bus_protocol =3D=3D PROTO_SPI) { + sd->state =3D sd_transfer_state; + return sd_r1; + } + goto bad_cmd; =20 case 2: /* CMD2: ALL_SEND_CID */ if (sd->state =3D=3D sd_ready_state) { @@ -1157,7 +1200,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) =20 /* No response if not exactly one VHS bit is set. */ if (!(req.arg >> 8) || (req.arg >> (ctz32(req.arg & ~0xff) + 1= ))) { - return sd->spi ? sd_r7 : sd_r0; + return sd->bus_protocol =3D=3D PROTO_SPI ? sd_r7 : sd_r0; = /* XXX */ } =20 /* Accept. */ @@ -1178,13 +1221,13 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) return sd_r2_s; =20 case sd_transfer_state: - if (!sd->spi) - break; - sd->state =3D sd_sendingdata_state; - memcpy(sd->data, sd->csd, 16); - sd->data_start =3D addr; - sd->data_offset =3D 0; - return sd_r1; + if (sd->bus_protocol =3D=3D PROTO_SPI) { + sd->state =3D sd_sendingdata_state; + memcpy(sd->data, sd->csd, 16); + sd->data_start =3D addr; + sd->data_offset =3D 0; + return sd_r1; + } =20 default: break; @@ -1200,13 +1243,13 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) return sd_r2_i; =20 case sd_transfer_state: - if (!sd->spi) - break; - sd->state =3D sd_sendingdata_state; - memcpy(sd->data, sd->cid, 16); - sd->data_start =3D addr; - sd->data_offset =3D 0; - return sd_r1; + if (sd->bus_protocol =3D=3D PROTO_SPI) { + sd->state =3D sd_sendingdata_state; + memcpy(sd->data, sd->cid, 16); + sd->data_start =3D addr; + sd->data_offset =3D 0; + return sd_r1; + } =20 default: break; @@ -1306,8 +1349,9 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) =20 /* Block write commands (Class 4) */ case 24: /* CMD24: WRITE_SINGLE_BLOCK */ - if (sd->spi) + if (sd->bus_protocol =3D=3D PROTO_SPI) { goto unimplemented_cmd; + } if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_receivingdata_state; sd->data_start =3D addr; @@ -1325,8 +1369,9 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) break; =20 case 25: /* CMD25: WRITE_MULTIPLE_BLOCK */ - if (sd->spi) + if (sd->bus_protocol =3D=3D PROTO_SPI) { goto unimplemented_cmd; + } if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_receivingdata_state; sd->data_start =3D addr; @@ -1353,8 +1398,9 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) break; =20 case 27: /* CMD27: PROGRAM_CSD */ - if (sd->spi) + if (sd->bus_protocol =3D=3D PROTO_SPI) { goto unimplemented_cmd; + } if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_receivingdata_state; sd->data_start =3D 0; @@ -1400,7 +1446,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) *(uint32_t *) sd->data =3D sd_wpbits(sd, req.arg); sd->data_start =3D addr; sd->data_offset =3D 0; - return sd->spi ? sd_r1 : sd_r1b; + return sd->bus_protocol =3D=3D PROTO_SPI ? sd_r1 : sd_r1b; } break; =20 @@ -1436,8 +1482,9 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) =20 /* Lock card commands (Class 7) */ case 42: /* CMD42: LOCK_UNLOCK */ - if (sd->spi) + if (sd->bus_protocol =3D=3D PROTO_SPI) { goto unimplemented_cmd; + } if (sd->state =3D=3D sd_transfer_state) { sd->state =3D sd_receivingdata_state; sd->data_start =3D 0; @@ -1457,7 +1504,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) =20 /* Application specific commands (Class 8) */ case 55: /* CMD55: APP_CMD */ - if (!sd->spi) { + if (sd->bus_protocol !=3D PROTO_SPI) { if (sd->rca !=3D rca) { return sd_r0; } @@ -1478,13 +1525,13 @@ static sd_rsp_type_t sd_normal_command(SDState *sd,= SDRequest req) break; =20 case 58: /* CMD58: READ_OCR (SPI) */ - if (!sd->spi) { + if (sd->bus_protocol !=3D PROTO_SPI) { goto bad_cmd; } return sd_r3; =20 case 59: /* CMD59: CRC_ON_OFF (SPI) */ - if (!sd->spi) { + if (sd->bus_protocol !=3D PROTO_SPI) { goto bad_cmd; } goto unimplemented_cmd; @@ -1524,12 +1571,12 @@ static sd_rsp_type_t sd_app_command(SDState *sd, SD= Request req) sd->state =3D sd_sendingdata_state; sd->data_start =3D 0; sd->data_offset =3D 0; - return sd->spi ? sd_r2_s : sd_r1; + return sd->bus_protocol =3D=3D PROTO_SPI ? sd_r2_s : sd_r1; } break; =20 case 18: - if (sd->spi) { + if (sd->bus_protocol =3D=3D PROTO_SPI) { goto unimplemented_cmd; } break; @@ -1553,19 +1600,19 @@ static sd_rsp_type_t sd_app_command(SDState *sd, SD= Request req) =20 case 25: case 26: - if (sd->spi) { + if (sd->bus_protocol =3D=3D PROTO_SPI) { goto unimplemented_cmd; } break; =20 case 38: - if (sd->spi) { + if (sd->bus_protocol =3D=3D PROTO_SPI) { goto unimplemented_cmd; } break; =20 case 41: /* ACMD41: SD_APP_OP_COND */ - if (sd->spi) { + if (sd->bus_protocol =3D=3D PROTO_SPI) { /* SEND_OP_CMD */ sd->state =3D sd_transfer_state; return sd_r1; @@ -1611,7 +1658,7 @@ static sd_rsp_type_t sd_app_command(SDState *sd, SDRe= quest req) break; =20 case 43 ... 49: - if (sd->spi) { + if (sd->bus_protocol =3D=3D PROTO_SPI) { goto unimplemented_cmd; } break; @@ -2100,7 +2147,7 @@ static void sd_realize(DeviceState *dev, Error **errp) SDState *sd =3D SD_CARD(dev); int ret; =20 - sd->proto_name =3D sd->spi ? "SPI" : "SD"; + sd->proto_name =3D sd_protocol_name(sd->bus_protocol); sd->spec_version =3D SD_PHY_SPEC_VER_2_00; =20 if (sd->blk && blk_is_read_only(sd->blk)) { @@ -2146,7 +2193,7 @@ static Property sd_properties[] =3D { * whether card should be in SSI or MMC/SD mode. It is also up to the * board to ensure that ssi transfers only occur when the chip select * is asserted. */ - DEFINE_PROP_BOOL("spi", SDState, spi, false), + DEFINE_PROP_BIT("spi", SDState, bus_protocol, 1, false), DEFINE_PROP_END_OF_LIST() }; =20 --=20 2.15.1 From nobody Tue Oct 28 02:12:21 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 151501587680279.57427574237272; Wed, 3 Jan 2018 13:44:36 -0800 (PST) Received: from localhost ([::1]:37879 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqpv-0001q5-NS for importer@patchew.org; Wed, 03 Jan 2018 16:44:35 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52983) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqYS-0003S5-H9 for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqYR-0000bu-Fc for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:32 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:39385) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqYR-0000b9-BS for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:31 -0500 Received: by mail-qt0-x243.google.com with SMTP id k19so3805637qtj.6 for ; Wed, 03 Jan 2018 13:26:31 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.26.26 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:26:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CRePvE8PjD+AKnvhWebquczolYsWJVaS5rSI2IM8WeA=; b=b82TpeCJwACoyVLtPoe4zogUqGXNy2T2vcyOfuLswH1Wf8dEr4rv8fn1Y1d1X9ASxm kKaTgNv0d0iEHzNdGYbMjBwC0pWUeOM/5TuRVS5ggvgDZ6kzZLrHrO3ecySua9giE+52 7t1aAgqkrMeIn7sRX0T8TEfJ2+ucB8sQT0WjVYeo0+QR/vDzZXJBu94z92HgL5CpJ74h 95PboofgGr2Q7XgFfdPrxUwdGzVAuH69EWUsGq2Jvl+F+dyMuKLdW2LOmzQwDctKgBY+ PkO4cL4YHSj4s1fihwnzhHlK4aNZZUBlLtS+n16/BIg2+9JbjOJG6Rk9svaSs04GZ06r BNEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=CRePvE8PjD+AKnvhWebquczolYsWJVaS5rSI2IM8WeA=; b=ASWWrJiQJ5NtNOpD2BdiReXx3k/hgRskv01EFFoCOCHDT5FgDsZSiMknCYx+Ag7X8n PrwvZ6WBUg2QvchTcJd4hwpI3rBNk4E3hiJ/G77v3Mrvry0OIt22VwRPUZN6PQl4xMHK PZ4pLtU9AVNUxHh94UgxrpOYH6AZ9CSCg7A6M4vb4ED5H/rXPJ4MMvqa6Io7WgNex3xM 1NNVIq9acjyMqBjA3xVfjXfsmeW4m77LIqbZUlzeabmSmluiCVcEXLzy5OK35DFdSGQI AYtdeyDHquzIgSq3wNyymk7BanGwvdQ7ZOzZVl5GWrc/L2I5AHbqA0QqmF3YVA6QpsCT 7Mtw== X-Gm-Message-State: AKGB3mI6AAShN7dMaT+dq4tqxyOXFZA0T894lm2JJHWMuAZXOEWcGK/N XWVMTNxYGPOtRIemrOg2AJA= X-Google-Smtp-Source: ACJfBotaLQxOUBMOK8HpYcewAfw3ShcHJC14cgTOw1U8lntuL6gQO6PChBxdMItu20Loh6P2Wt0HVg== X-Received: by 10.200.51.46 with SMTP id t43mr3682741qta.75.1515014790909; Wed, 03 Jan 2018 13:26:30 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:35 -0300 Message-Id: <20180103212436.15762-25-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c0d::243 Subject: [Qemu-devel] [PATCH v2 24/25] sdcard: introduce Spec v3.01 SD commands X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index d626445282..6fbc640d2e 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -305,7 +305,7 @@ typedef struct { static const sd_cmd_supported_t cmd_supported[SDCARD_CMD_MAX] =3D { /* SD SPI */ [0] =3D {{200, BIT(0)}, {200, BIT(0)}, }, - [1] =3D {{}, {200, BIT(0)}, }, + [1] =3D {{301, BIT(0)}, {200, BIT(0)}, }, [2] =3D {{200, BIT(0)}, {}, }, [3] =3D {{200, BIT(0)}, {}, }, [4] =3D {{200, BIT(0)}, {}, }, @@ -322,6 +322,7 @@ static const sd_cmd_supported_t cmd_supported[SDCARD_CM= D_MAX] =3D { [16] =3D {{200, BIT_2_4_7}, {200, BIT_2_4_7}, }, [17] =3D {{200, BIT(2)}, {200, BIT(2)}, }, [18] =3D {{200, BIT(2)}, {200, BIT(2)}, }, + [23] =3D {{301, BIT_2_4}, {}, }, [24] =3D {{200, BIT(4)}, {200, BIT(4)}, }, [25] =3D {{200, BIT(4)}, {200, BIT(4)}, }, [26] =3D {{200, BIT_MANUF}, {/*?*/}, }, @@ -344,8 +345,8 @@ static const sd_cmd_supported_t cmd_supported[SDCARD_CM= D_MAX] =3D { [55] =3D {{200, BIT(8)}, {200, BIT(8)}, }, [56] =3D {{200, BIT(8)}, {200, BIT(8)}, }, [57] =3D {{200, BIT(10)}, {200, BIT(10)}, }, - [58] =3D {{}, {200, BIT(0)}, }, - [59] =3D {{}, {200, BIT(0)}, }, + [58] =3D {{301, BIT(0)}, {200, BIT(0)}, }, + [59] =3D {{301, BIT(0)}, {200, BIT(0)}, }, [60] =3D {{200, BIT_MANUF}, {/*?*/}, }, [61] =3D {{200, BIT_MANUF}, {/*?*/}, }, [62] =3D {{200, BIT_MANUF}, {/*?*/}, }, @@ -372,6 +373,18 @@ static const sd_cmd_supported_t cmd_supported[SDCARD_C= MD_MAX] =3D { [51] =3D {{200, BIT(8)}, {200, BIT(8)}, }, }; =20 +static const char *spec_version_name(uint16_t spec_version) +{ + switch (spec_version) { + case SD_PHY_SPEC_VER_2_00: + return "v2.00"; + case SD_PHY_SPEC_VER_3_01: + return "v3.01"; + default: + g_assert_not_reached(); + } +} + static bool cmd_version_supported(SDState *sd, uint8_t cmd, bool is_acmd) { const sd_cmd_supported_t *cmdset =3D is_acmd ? acmd_supported : cmd_su= pported; @@ -387,11 +400,12 @@ static bool cmd_version_supported(SDState *sd, uint8_= t cmd, bool is_acmd) default: g_assert_not_reached(); } - if (cmd_version) { + if (cmd_version >=3D sd->spec_version) { return true; } - qemu_log_mask(LOG_GUEST_ERROR, "%s: Unsupported %s%02u\n", - sd->proto_name, is_acmd ? "ACMD" : "CMD", cmd); + qemu_log_mask(LOG_GUEST_ERROR, "%s: Unsupported %s%02u (%s)\n", + sd->proto_name, is_acmd ? "ACMD" : "CMD", cmd, + spec_version_name(cmd_version)); =20 return false; } @@ -416,8 +430,9 @@ static bool cmd_class_supported(SDState *sd, uint8_t cm= d, uint8_t class, if (cmd_ccc_mask & BIT(class)) { return true; } - qemu_log_mask(LOG_GUEST_ERROR, "%s: Unsupported %s%02u (class %d)\n", - sd->proto_name, is_acmd ? "ACMD" : "CMD", cmd, class); + qemu_log_mask(LOG_GUEST_ERROR, "%s: Unsupported %s%02u (class %d, %s)\= n", + sd->proto_name, is_acmd ? "ACMD" : "CMD", cmd, class, + spec_version_name(sd->spec_version)); =20 return false; } --=20 2.15.1 From nobody Tue Oct 28 02:12:21 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1515015797536482.55454903160535; Wed, 3 Jan 2018 13:43:17 -0800 (PST) Received: from localhost ([::1]:37873 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqob-0000b9-Hp for importer@patchew.org; Wed, 03 Jan 2018 16:43:13 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53044) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eWqYX-0003X0-QI for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eWqYV-0000gq-Vz for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:37 -0500 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:35195) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eWqYV-0000gS-QD for qemu-devel@nongnu.org; Wed, 03 Jan 2018 16:26:35 -0500 Received: by mail-qk0-x241.google.com with SMTP id 143so3245463qki.2 for ; Wed, 03 Jan 2018 13:26:35 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id a19sm1104402qtj.74.2018.01.03.13.26.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Jan 2018 13:26:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=WoQr3yTmE9N/rxMw8bAyxae+YxSOBF291sjqsp7Wbrg=; b=dK/PaxhMxkO8fiEK3WC9pPaDwaF4tkWFAzt36dgH6qJRMFSANzq9LLCtu3C6b2M/6c fOu+ov0RlUn/H/Evhxq/WB9nNrVzApB8peliQPWNXvdnQoIz0JFDAth5rbiK0AVhgYik 6vR1buiFPi2wNDKFuQDxQke73synkueWNxIuA0RYS1dFyErd9sbpvh7/F1sn5lb0updG 8zC0GhR4Abz196g8tQjr7h40g1bqZaEMLrRdlyS4oGxx8Ionh1c1YiYUrSZT3JAAQeV0 pTJ3SrilYvD2SFGdaPfc2H4ZWVnfLOA6Dm7j0elortidsi7Rvt+SMMNttqs5/KZGK8UN NLhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=WoQr3yTmE9N/rxMw8bAyxae+YxSOBF291sjqsp7Wbrg=; b=uEH6EwseH5bpI8k91rZCSMEcHtr3JeFm1/4NaVKXDoGPzya1E80+VbLwTkjzng8n0h TZHdhQkKO//uwvrll1vzfZbU6Erz+23RyeIZpcyxZPNivm+9oTd1yzhal5o+82KJOJRs ZNKFChJ7Ey9Y7UA3z1SomjpWtERZUVRqEygflb0Yawx+3AiM108/o4skycGb31IVtMrs HmDtIlJyx9uW8sk5D3+Ph9Hxbk/3Pc/tinPGDm00owpm/9uSefnFBqEEmEk27JQr1HOA LkwzWpXuF9+gfvNq4zdIRxYGRaF7aCTTDTCnlUSZj+shr9ESlAQK8cc2D3W5om/xm6bE V85g== X-Gm-Message-State: AKGB3mJeE9ouCnWMGqbbkoN7wt+6Yin+Fq96VK4eUSlV6DrXWqV8O66Q B16TXeNfVk2I5qoIRXNtaW+Z6IIv X-Google-Smtp-Source: ACJfBosBlw5X5BgPubNbtB+I6mCDNSY3TL0+639fa/11Ajxz5boeSlQAos8Sjr9wtGDe5TI9Hun0GQ== X-Received: by 10.55.147.68 with SMTP id v65mr1428170qkd.70.1515014795240; Wed, 03 Jan 2018 13:26:35 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko , Andrew Baumann , Olbrich , Andrzej Zaborowski Date: Wed, 3 Jan 2018 18:24:36 -0300 Message-Id: <20180103212436.15762-26-f4bug@amsat.org> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180103212436.15762-1-f4bug@amsat.org> References: <20180103212436.15762-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400d:c09::241 Subject: [Qemu-devel] [PATCH v2 25/25] sdcard: introduce Spec v4.51 & v5.1 MMC commands X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Edgar E . Iglesias" , Prasad J Pandit , Peter Crosthwaite , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Paul Brook , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/sd/sd.h | 1 + hw/sd/sd.c | 181 ++++++++++++++++++++++++++++++++-----------------= ---- 2 files changed, 112 insertions(+), 70 deletions(-) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index 6874696ff7..1f1ec2a042 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -58,6 +58,7 @@ typedef enum { PROTO_SD =3D 0, PROTO_SPI =3D 1 << 1, + PROTO_MMC =3D 1 << 2, } sd_bus_protocol_t; =20 typedef enum { diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 6fbc640d2e..c4701f9c7c 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -63,6 +63,13 @@ typedef enum { SD_PHY_SPEC_VER_3_01 =3D 301, /* not yet supported */ } sd_phy_spec_ver_t; =20 +typedef enum { + MMC_SPEC_VER_2_2 =3D 202, /* not well supported */ + /* e.MMC */ + MMC_SPEC_VER_4_51 =3D 451, + MMC_SPEC_VER_5_1 =3D 501, /* not supported */ +} mmc_phy_spec_ver_t; + typedef enum { sd_capacity_unknown, sd_capacity_sdsc, /* not well supported */ @@ -157,6 +164,8 @@ static const char *sd_protocol_name(sd_bus_protocol_t p= rotocol) return "SD"; case PROTO_SPI: return "SPI"; + case PROTO_MMC: + return "MMC"; default: g_assert_not_reached(); } @@ -299,78 +308,90 @@ typedef struct { struct { uint16_t version; uint32_t ccc_mask; - } sd, spi; + } sd, spi, mmc; } sd_cmd_supported_t; =20 static const sd_cmd_supported_t cmd_supported[SDCARD_CMD_MAX] =3D { - /* SD SPI */ - [0] =3D {{200, BIT(0)}, {200, BIT(0)}, }, - [1] =3D {{301, BIT(0)}, {200, BIT(0)}, }, - [2] =3D {{200, BIT(0)}, {}, }, - [3] =3D {{200, BIT(0)}, {}, }, - [4] =3D {{200, BIT(0)}, {}, }, - [5] =3D {{200, BIT(9)}, {200, BIT(9)}, }, - [6] =3D {{200, BIT(10)}, {200, BIT(10)}, }, - [7] =3D {{200, BIT(0)}, {}, }, - [8] =3D {{200, BIT(0)}, {200, BIT(0)}, }, - [9] =3D {{200, BIT(0)}, {200, BIT(0)}, }, - [10] =3D {{200, BIT(0)}, {200, BIT(0)}, }, - [12] =3D {{200, BIT(0)}, {200, BIT(0)}, }, - [13] =3D {{200, BIT(0)}, {200, BIT(0)}, }, - [14] =3D {{200, BIT(0)}, {}, }, - [15] =3D {{200, BIT(0)}, {}, }, - [16] =3D {{200, BIT_2_4_7}, {200, BIT_2_4_7}, }, - [17] =3D {{200, BIT(2)}, {200, BIT(2)}, }, - [18] =3D {{200, BIT(2)}, {200, BIT(2)}, }, - [23] =3D {{301, BIT_2_4}, {}, }, - [24] =3D {{200, BIT(4)}, {200, BIT(4)}, }, - [25] =3D {{200, BIT(4)}, {200, BIT(4)}, }, - [26] =3D {{200, BIT_MANUF}, {/*?*/}, }, - [27] =3D {{200, BIT(4)}, {200, BIT(4)}, }, - [28] =3D {{200, BIT(6)}, {200, BIT(6)}, }, - [29] =3D {{200, BIT(6)}, {200, BIT(6)}, }, - [30] =3D {{200, BIT(6)}, {200, BIT(6)}, }, - [32] =3D {{200, BIT(5)}, {200, BIT(5)}, }, - [33] =3D {{200, BIT(5)}, {200, BIT(5)}, }, - [34] =3D {{200, BIT(10)}, {200, BIT(10)}, }, - [35] =3D {{200, BIT(10)}, {200, BIT(10)}, }, - [36] =3D {{200, BIT(10)}, {200, BIT(10)}, }, - [37] =3D {{200, BIT(10)}, {200, BIT(10)}, }, - [38] =3D {{200, BIT(5)}, {200, BIT(5)}, }, - [42] =3D {{200, BIT(7)}, {200, BIT(7)}, }, - [50] =3D {{200, BIT(10)}, {200, BIT(10)}, }, - [52] =3D {{200, BIT(9)}, {200, BIT(9)}, }, - [53] =3D {{200, BIT(9)}, {200, BIT(9)}, }, - [54] =3D {{/* 2.00 SDIO */}, {/* 2.00 SDIO */}, }, - [55] =3D {{200, BIT(8)}, {200, BIT(8)}, }, - [56] =3D {{200, BIT(8)}, {200, BIT(8)}, }, - [57] =3D {{200, BIT(10)}, {200, BIT(10)}, }, - [58] =3D {{301, BIT(0)}, {200, BIT(0)}, }, - [59] =3D {{301, BIT(0)}, {200, BIT(0)}, }, - [60] =3D {{200, BIT_MANUF}, {/*?*/}, }, - [61] =3D {{200, BIT_MANUF}, {/*?*/}, }, - [62] =3D {{200, BIT_MANUF}, {/*?*/}, }, - [63] =3D {{200, BIT_MANUF}, {/*?*/}, }, + /* SD SPI eMMC */ + [0] =3D {{200, BIT(0)}, {200, BIT(0)}, {451, BIT(0)} = }, + [1] =3D {{301, BIT(0)}, {200, BIT(0)}, {451, BIT(0)} = }, + [2] =3D {{200, BIT(0)}, {}, {451, BIT(0)} = }, + [3] =3D {{200, BIT(0)}, {}, {451, BIT(0)} = }, + [4] =3D {{200, BIT(0)}, {}, {451, BIT(0)} = }, + [5] =3D {{200, BIT(9)}, {200, BIT(9)}, {451, BIT(0)} = }, + [6] =3D {{200, BIT(10)}, {200, BIT(10)}, {451, BIT(0)} = }, + [7] =3D {{200, BIT(0)}, {}, {451, BIT(0)} = }, + [8] =3D {{200, BIT(0)}, {200, BIT(0)}, {451, BIT(0)} = }, + [9] =3D {{200, BIT(0)}, {200, BIT(0)}, {451, BIT(0)} = }, + [10] =3D {{200, BIT(0)}, {200, BIT(0)}, {451, BIT(0)} = }, + [12] =3D {{200, BIT(0)}, {200, BIT(0)}, {451, BIT(0)} = }, + [13] =3D {{200, BIT(0)}, {200, BIT(0)}, {451, BIT(0)} = }, + [14] =3D {{200, BIT(0)}, {}, {451, BIT(0)} = }, + [15] =3D {{200, BIT(0)}, {}, {451, BIT(0)} = }, + [16] =3D {{200, BIT_2_4_7}, {200, BIT_2_4_7}, {451, BIT_2_4_7} = }, + [17] =3D {{200, BIT(2)}, {200, BIT(2)}, {451, BIT(2)} = }, + [18] =3D {{200, BIT(2)}, {200, BIT(2)}, {451, BIT(2)} = }, + [19] =3D {{}, {}, {451, BIT(0)} = }, + [21] =3D {{}, {}, {/* HS200 */} = }, + [23] =3D {{301, BIT_2_4}, {}, {/*BIT_2_4 ?*/} = }, + [24] =3D {{200, BIT(4)}, {200, BIT(4)}, {451, BIT(4)} = }, + [25] =3D {{200, BIT(4)}, {200, BIT(4)}, {451, BIT(4)} = }, + [26] =3D {{200, BIT_MANUF}, {/*?*/}, {/*?*/} = }, + [27] =3D {{200, BIT(4)}, {200, BIT(4)}, {451, BIT(4)} = }, + [28] =3D {{200, BIT(6)}, {200, BIT(6)}, {451, BIT(6)} = }, + [29] =3D {{200, BIT(6)}, {200, BIT(6)}, {451, BIT(6)} = }, + [30] =3D {{200, BIT(6)}, {200, BIT(6)}, {451, BIT(6)} = }, + [31] =3D {{}, {}, {451, BIT(6)} = }, + [32] =3D {{200, BIT(5)}, {200, BIT(5)}, {} = }, + [33] =3D {{200, BIT(5)}, {200, BIT(5)}, {} = }, + [34] =3D {{200, BIT(10)}, {200, BIT(10)}, {} = }, + [35] =3D {{200, BIT(10)}, {200, BIT(10)}, {451, BIT(5)} = }, + [36] =3D {{200, BIT(10)}, {200, BIT(10)}, {451, BIT(5)} = }, + [37] =3D {{200, BIT(10)}, {200, BIT(10)}, {}, = }, + [38] =3D {{200, BIT(5)}, {200, BIT(5)}, {451, BIT(5)} = }, + [39] =3D {{}, {}, {451, BIT(9)} = }, + [40] =3D {{}, {}, {451, BIT(9)} = }, + [41] =3D {{}, {}, {/*451, BIT(7)*/} = }, + [42] =3D {{200, BIT(7)}, {200, BIT(7)}, {451, BIT(4)} = }, + [44] =3D {{}, {}, {501, BIT(10)} = }, + [45] =3D {{}, {}, {501, BIT(10)} = }, + [46] =3D {{}, {}, {501, BIT(10)} = }, + [47] =3D {{}, {}, {501, BIT(10)} = }, + [48] =3D {{}, {}, {501, BIT(10)} = }, + [49] =3D {{}, {}, {451, BIT(4)} = }, + [50] =3D {{200, BIT(10)}, {200, BIT(10)}, {} = }, + [52] =3D {{200, BIT(9)}, {200, BIT(9)}, {} = }, + [53] =3D {{200, BIT(9)}, {200, BIT(9)}, {451, BIT(10)} = }, + [54] =3D {{/* 2.00 SDIO */}, {/* 2.00 SDIO */}, {451, BIT(10)} = }, + [55] =3D {{200, BIT(8)}, {200, BIT(8)}, {451, BIT(8)} = }, + [56] =3D {{200, BIT(8)}, {200, BIT(8)}, {451, BIT(8)} = }, + [57] =3D {{200, BIT(10)}, {200, BIT(10)}, {} = }, + [58] =3D {{301, BIT(0)}, {200, BIT(0)}, {} = }, + [59] =3D {{301, BIT(0)}, {200, BIT(0)}, {} = }, + [60] =3D {{200, BIT_MANUF}, {/*?*/}, {/*?*/} = }, + [61] =3D {{200, BIT_MANUF}, {/*?*/}, {/*?*/} = }, + [62] =3D {{200, BIT_MANUF}, {/*?*/}, {/*?*/} = }, + [63] =3D {{200, BIT_MANUF}, {/*?*/}, {/*?*/} = }, }, acmd_supported[SDCARD_CMD_MAX] =3D { - /* SD SPI */ - [6] =3D {{200, BIT(8)}, {}, }, - [13] =3D {{200, BIT(8)}, {200, BIT(8)}, }, - [18] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, - [22] =3D {{200, BIT(8)}, {200, BIT(8)}, }, - [23] =3D {{200, BIT(8)}, {200, BIT(8)}, }, - [25] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, - [26] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, - [38] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, - [41] =3D {{200, BIT(8)}, {200, BIT(8)}, }, - [42] =3D {{200, BIT(8)}, {200, BIT(8)}, }, - [43] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, - [44] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, - [45] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, - [46] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, - [47] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, - [48] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, - [49] =3D {{200, BIT_SECU}, {200, BIT_SECU}, }, - [51] =3D {{200, BIT(8)}, {200, BIT(8)}, }, + /* SD SPI eMMC */ + [6] =3D {{200, BIT(8)}, {}, {451, BIT(0)} = }, + [13] =3D {{200, BIT(8)}, {200, BIT(8)}, {451, BIT(0)} = }, + [18] =3D {{200, BIT_SECU}, {200, BIT_SECU}, {451, BIT(0)} = }, + [22] =3D {{200, BIT(8)}, {200, BIT(8)}, {451, BIT(4)} = }, + [23] =3D {{200, BIT(8)}, {200, BIT(8)}, {451, BIT(4)} = }, + [25] =3D {{200, BIT_SECU}, {200, BIT_SECU}, {451, BIT(0)} = }, + [26] =3D {{200, BIT_SECU}, {200, BIT_SECU}, {451, BIT(0)} = }, + [38] =3D {{200, BIT_SECU}, {200, BIT_SECU}, {451, BIT(0)} = }, + [41] =3D {{200, BIT(8)}, {200, BIT(8)}, {451, BIT(8)} = }, + [42] =3D {{200, BIT(8)}, {200, BIT(8)}, {451, BIT(0)} = }, + [43] =3D {{200, BIT_SECU}, {200, BIT_SECU}, {451, BIT(0)} = }, + [44] =3D {{200, BIT_SECU}, {200, BIT_SECU}, {451, BIT(0)} = }, + [45] =3D {{200, BIT_SECU}, {200, BIT_SECU}, {451, BIT(0)} = }, + [46] =3D {{200, BIT_SECU}, {200, BIT_SECU}, {451, BIT(0)} = }, + [47] =3D {{200, BIT_SECU}, {200, BIT_SECU}, {451, BIT(0)} = }, + [48] =3D {{200, BIT_SECU}, {200, BIT_SECU}, {451, BIT(0)} = }, + [49] =3D {{200, BIT_SECU}, {200, BIT_SECU}, {451, BIT(0)} = }, + [51] =3D {{200, BIT(8)}, {200, BIT(8)}, {451, BIT(8)} = }, }; =20 static const char *spec_version_name(uint16_t spec_version) @@ -378,8 +399,14 @@ static const char *spec_version_name(uint16_t spec_ver= sion) switch (spec_version) { case SD_PHY_SPEC_VER_2_00: return "v2.00"; + case MMC_SPEC_VER_2_2: + return "v2.2"; case SD_PHY_SPEC_VER_3_01: return "v3.01"; + case MMC_SPEC_VER_4_51: + return "v4.51"; + case MMC_SPEC_VER_5_1: + return "v5.1"; default: g_assert_not_reached(); } @@ -397,6 +424,9 @@ static bool cmd_version_supported(SDState *sd, uint8_t = cmd, bool is_acmd) case PROTO_SPI: cmd_version =3D cmdset[cmd].spi.version; break; + case PROTO_MMC: + cmd_version =3D cmdset[cmd].mmc.version; + break; default: g_assert_not_reached(); } @@ -424,6 +454,9 @@ static bool cmd_class_supported(SDState *sd, uint8_t cm= d, uint8_t class, /* class 1, 3 and 9 are not supported in SPI mode */ cmd_ccc_mask =3D cmdset[cmd].spi.ccc_mask; break; + case PROTO_MMC: + cmd_ccc_mask =3D cmdset[cmd].mmc.ccc_mask; + break; default: g_assert_not_reached(); } @@ -602,7 +635,7 @@ static void sd_reset_csd(SDState *sd, uint64_t size) =20 static void sd_reset_rca(SDState *sd) { - sd->rca =3D 0; + sd->rca =3D sd->bus_protocol =3D=3D PROTO_MMC; } =20 static void sd_set_rca(SDState *sd) @@ -907,6 +940,9 @@ static SDState *sdcard_init(BlockBackend *blk, sd_bus_p= rotocol_t bus_protocol) case PROTO_SPI: qdev_prop_set_bit(dev, "spi", true); break; + case PROTO_MMC: + qdev_prop_set_bit(dev, "mmc", true); + break; default: break; } @@ -2163,7 +2199,11 @@ static void sd_realize(DeviceState *dev, Error **err= p) int ret; =20 sd->proto_name =3D sd_protocol_name(sd->bus_protocol); - sd->spec_version =3D SD_PHY_SPEC_VER_2_00; + if (sd->bus_protocol =3D=3D PROTO_MMC) { + sd->spec_version =3D MMC_SPEC_VER_4_51; + } else { + sd->spec_version =3D SD_PHY_SPEC_VER_2_00; + } =20 if (sd->blk && blk_is_read_only(sd->blk)) { error_setg(errp, "Cannot use read-only drive as SD card"); @@ -2209,6 +2249,7 @@ static Property sd_properties[] =3D { * board to ensure that ssi transfers only occur when the chip select * is asserted. */ DEFINE_PROP_BIT("spi", SDState, bus_protocol, 1, false), + DEFINE_PROP_BIT("mmc", SDState, bus_protocol, 2, false), DEFINE_PROP_END_OF_LIST() }; =20 --=20 2.15.1