From nobody Sun May 19 20:29:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.193 as permitted sender) client-ip=209.85.216.193; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f193.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.193 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f193.google.com (mail-qt0-f193.google.com [209.85.216.193]) by mx.zohomail.com with SMTPS id 1518732352350426.1577014046579; Thu, 15 Feb 2018 14:05:52 -0800 (PST) Received: by mail-qt0-f193.google.com with SMTP id u6so1566975qtg.13 for ; Thu, 15 Feb 2018 14:05:52 -0800 (PST) Return-Path: Return-Path: Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id h200sm6330991qke.66.2018.02.15.14.05.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Feb 2018 14:05: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=54fkFQXzwjNPGC+rwH2lxhIE9uTNrdNFSpweKHHdsoc=; b=FqXsLcXSTR4UlpCvmBx2LiWdPXtTM7egOFA3zwB5TSgPt1AHj/t13JxADf00TS8ZZb QsJ8ufJlAZvDB4pz+Q2tj1aj5XRQ01wtGt5moIiD0K8RedLBEsRfMRiVv/rD6w9qf3nF uqcWIZf6kwrwtXs3Iv1u+z4DRu45PV/ZB1DVO+0Q++HTmOdcvFGQYwgjfg4BjaXkMgv7 2sgmrzipFajAlk2UMbrBdLQWX68NEGbXw561TpTuObxhJqOE42AZZ5C04EbhWqjpXA14 aL2W8gTCoN5fTvj/ZJg7T6CdrgPuHCOizqiIgJEBXaxBQ0rorfEIf16siB3jsoDedA9s KrTw== 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=54fkFQXzwjNPGC+rwH2lxhIE9uTNrdNFSpweKHHdsoc=; b=O6GxaD7W0KCTqvCOIRLincMXt3nO9yeDqXviY34vljMoNuUTqLS5+an2+IL9htsBBn cQa9oMRy65rgZKdToGA8UrC+XxBL3H0K6rv4HfgTzNgi30ZNj7d+xyR36hswQ+Y/tnyx llzWpYaX3h8gBOFWlBHIy23WoQN0dPr7PYMa5sUvv6wsVeHK2rDgm4PzvfTROR1M/4JP wq6g7JnQenyPjVI7E3DVWkXYNex4Q1esDM7LtISgDDcGd/9DEnrf/MY5ewrbWk9t9XrE wtxpNwZOV6XkZpBT9F6/F8EuhCI53uW8q54RHNhYxXJNJfoi7aoanp9SHM9RHO6C2ki/ WPkw== X-Gm-Message-State: APf1xPAP/Hgb+5QxfTGuMslyWWpJ1UQ/HbEIBtTADoZ7V63NLHpaNDGo +/CpU25L2TtQU7KkMRn2pp0= X-Google-Smtp-Source: AH8x224rwTUIx8ne7aC/uqh0Nci3zUIzfjrMmEfcxljCy0602jgzhSsZjrIVHUrfjdKn9PuKafSuyw== X-Received: by 10.237.41.129 with SMTP id o1mr6718550qtd.2.1518732351449; Thu, 15 Feb 2018 14:05:51 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, "Edgar E . Iglesias" , Prasad J Pandit , Andrzej Zaborowski Subject: [PATCH v4 01/11] sdcard: reorder SDState struct members Date: Thu, 15 Feb 2018 19:05:30 -0300 Message-Id: <20180215220540.6556-2-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215220540.6556-1-f4bug@amsat.org> References: <20180215220540.6556-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 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 | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 9ac9b63ff8..ce1f2fdf76 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -88,16 +88,21 @@ 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]; + + /* Configurable properties */ + BlockBackend *blk; + bool spi; + + uint32_t mode; /* current card mode, one of SDCardModes */ + int32_t state; /* current card state, one of SDCardStates */ uint32_t vhs; bool wp_switch; unsigned long *wp_groups; @@ -110,8 +115,6 @@ struct SDState { uint8_t pwd[16]; uint32_t pwd_len; uint8_t function_group[6]; - - bool spi; 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! @@ -123,8 +126,7 @@ struct SDState { uint8_t data[512]; qemu_irq readonly_cb; qemu_irq inserted_cb; - BlockBackend *blk; - + QEMUTimer *ocr_power_timer; bool enable; uint8_t dat_lines; bool cmd_line; --=20 2.16.1 From nobody Sun May 19 20:29:44 2024 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 15187327624020.30470486292597343; Thu, 15 Feb 2018 14:12:42 -0800 (PST) Received: from localhost ([::1]:36733 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emRlh-00037g-9Z for importer@patchew.org; Thu, 15 Feb 2018 17:12:41 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55626) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emRfE-000699-Nu for qemu-devel@nongnu.org; Thu, 15 Feb 2018 17:06:02 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emRfB-00011B-Ha for qemu-devel@nongnu.org; Thu, 15 Feb 2018 17:06:00 -0500 Received: from mail-qk0-x242.google.com ([2607:f8b0:400d:c09::242]:42114) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1emRfB-000116-D3 for qemu-devel@nongnu.org; Thu, 15 Feb 2018 17:05:57 -0500 Received: by mail-qk0-x242.google.com with SMTP id b130so1539696qkg.9 for ; Thu, 15 Feb 2018 14:05:57 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id h200sm6330991qke.66.2018.02.15.14.05.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Feb 2018 14:05: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=Wpx4oa69FwWCHg1VebPsxUooPergJqnmcgPLoyldnIk=; b=ZAcDNaPEGKvNovTa/eNTOHvDOIg7xAf5isizdAOl1P0MHaO19EZt4tySL00ylXNv5l GC5G3sqJrSXsEUZ3MBSZnh1sS5y1CVs4VIev7Xl8aYnSFabfSfnLvF2JqmF9U6iR3qQH DHnYnje1yxBpmlfKRT671FzoimjpKGwARhHMzl2b2sprmU3Dv2qBWoN2o3UTSOS3UKRX 2juEGSFs3AZcyT3jbYySYWNmTj7Y9bVHGL7Tbl7y3qaqRJmusLQIEvIZuPFewFEfoAo8 hKl5Oqsoj54N77CjxLyvVE1NkyDa5NDxJCDHA71G1VKFnnZ+13tRdcUKiWa/XdE5jI+V sXlg== 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=Wpx4oa69FwWCHg1VebPsxUooPergJqnmcgPLoyldnIk=; b=Vs41aKcjLNj898nBHYZKR2tO7BSBomWnt6R4+2PGs1bp4JPYYn4F+zjl5eQe1bTaSR M2QB/w7wo1QYlJeChTP6nKisD+jIJwC+DCsiBamDt7Z/lIwVjQf1CfRdeHRRwI0xEZTN VFsFLtELOYBPaHOvfvsJTnGX/YArQ5GoGzkT/LArUDAtGppfiz8CUJah2JT0zl7igifP yeXdxngVDVaIpnP3S2zXVXmupSVUdF5QZyccPVQH+Xaigy/KovSSAs/Eajt6YEP+iJ/n l9v9gIWwnMlaPRrPI0LtHLALilsixxAksj/6qdlaYyF/h/YkGSUUglBo2cRbqnThzDsV 3DZQ== X-Gm-Message-State: APf1xPCJ2ofMg91vmC4bp9kZFr2f+y3MS2v9/9Lfh/WJOCtDI1Sdoj55 QbrNlFzFwUbc8iNG6M4RVXs= X-Google-Smtp-Source: AH8x227hvopJYqOEdW8VJpyDxBJu9QWHTD5WMwcHVY7dlueGGh/hUXMybnbvKLbK54U1WgzcD3ydgA== X-Received: by 10.55.88.7 with SMTP id m7mr6523053qkb.142.1518732356866; Thu, 15 Feb 2018 14:05:56 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko Date: Thu, 15 Feb 2018 19:05:31 -0300 Message-Id: <20180215220540.6556-3-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215220540.6556-1-f4bug@amsat.org> References: <20180215220540.6556-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 v4 02/11] 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 , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org 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 | 32 ++++++++++++++++++++++++++------ hw/sd/trace-events | 6 ++++++ 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index ce1f2fdf76..72e9b47e34 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -40,6 +40,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,26 @@ struct SDState { bool cmd_line; }; =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"; + } + assert(state <=3D ARRAY_SIZE(state_name)); + return state_name[state]; +} + static uint8_t sd_get_dat_lines(SDState *sd) { return sd->enable ? sd->dat_lines : 0; @@ -776,6 +797,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 @@ -790,7 +813,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 */ @@ -1310,8 +1332,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; @@ -1345,7 +1365,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 */ @@ -1606,8 +1626,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"); } @@ -1615,6 +1634,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 0f8536db32..75dac5a2cd 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -23,6 +23,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_capareg(const char *desc, uint16_t val) "%s: %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.16.1 From nobody Sun May 19 20:29:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) client-ip=209.85.220.194; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f194.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f194.google.com (mail-qk0-f194.google.com [209.85.220.194]) by mx.zohomail.com with SMTPS id 1518732361630637.7011549310046; Thu, 15 Feb 2018 14:06:01 -0800 (PST) Received: by mail-qk0-f194.google.com with SMTP id l23so1529039qkk.11 for ; Thu, 15 Feb 2018 14:06:01 -0800 (PST) Return-Path: Return-Path: Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id h200sm6330991qke.66.2018.02.15.14.05.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Feb 2018 14:05: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=ZIrz7CT2SLglecLwSE7tRVPYurI43CQ+oW+Au8fJ3QI=; b=kb0KHzbG6YDn9c4fxg+y0/bg5X1Ugi3WfhqZjvxVIYwGs+bZfKarxdbsrjIsAu9jzC 1E3rnvtUk1Y6eMOCRBuK20r+3QfFL/Ldjr5AKeObjDmxxzG3j01Uy0Qg3Pv7Q2M9cyaS rtD9UtrG2YZrTV48DbuTS5/uGlJLHvpQ1L4mWVlnrwMRBYYtj0gY3nskQ9SO6bxdSYJQ VmO+g/TR2chKiv1Za437xglf3g/y2IV6MOYX7xftGve0f1erzU95DCCGoybXLzPd32AG VaeDgL9LKy3kIgPbeOw3XQ+U3zf5IkGsutIHcVEAx7MDydf3KEc8RyJnOnWzHrdcVXrl PvSQ== 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=ZIrz7CT2SLglecLwSE7tRVPYurI43CQ+oW+Au8fJ3QI=; b=rwvCkuukRk5KXPl12CaLfaBA8FHF779PVG3AdGYrQxQee8f/XyEXLr1yUW8UV5ORnb dYB52uUv+wVB7xZXCxvG+f+u7V+oXCFz4UDPqftjhM+jVzVI02yyYobXHrMvFX4SoMyM tpczIouVwF196eoVxYVkqfw8HHlinErBST0xWRBHTKcB0cTeR6nQDlZLFH4C3pX/G3eL g/lVmwrOUCEugtgYqqdY0TwwvwtqxUa0R1uLbkuBIvk4nqWa8VBKhsaP+FT0XIJ+AGow UD3l7LB6eeEuA425XzljDT0+47QtKUreV8fgkFH8W/2y/s7g/mqAUirfBH6rfZ1DlIqo KWag== X-Gm-Message-State: APf1xPBMjZbIW/cIQGEk4g01GlwC/oeTWKI0J8DCXeuB1IIL3iiGcH1V oFtbVxkOw3AudkqeJqTeiOw= X-Google-Smtp-Source: AH8x225t3Chv1hxJWEioXdetViLplJMGeyf/UnwtkwmwRfP4CDcYSF6KFeU4p+2BRlACGTxitPwTtg== X-Received: by 10.55.19.35 with SMTP id d35mr6330206qkh.292.1518732360807; Thu, 15 Feb 2018 14:06:00 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, "Edgar E . Iglesias" , Prasad J Pandit , Andrzej Zaborowski Subject: [PATCH v4 03/11] sdcard: add a trace event for command responses Date: Thu, 15 Feb 2018 19:05:32 -0300 Message-Id: <20180215220540.6556-4-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215220540.6556-1-f4bug@amsat.org> References: <20180215220540.6556-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sd.c | 27 ++++++++++++++++++++++++--- hw/sd/trace-events | 1 + 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 72e9b47e34..8f72cde534 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -153,6 +153,27 @@ static const char *sd_state_name(enum SDCardStates sta= te) return state_name[state]; } =20 +static const char *sd_response_name(sd_rsp_type_t rsp) +{ + static const char *response_name[] =3D { + [sd_r0] =3D "RESP#0 (no response)", + [sd_r1] =3D "RESP#1 (normal cmd)", + [sd_r2_i] =3D "RESP#2 (CID reg)", + [sd_r2_s] =3D "RESP#2 (CSD reg)", + [sd_r3] =3D "RESP#3 (OCR reg)", + [sd_r6] =3D "RESP#6 (RCA)", + [sd_r7] =3D "RESP#7 (operating voltage)", + }; + if (rsp =3D=3D sd_illegal) { + return "ILLEGAL RESP"; + } + if (rsp =3D=3D sd_r1b) { + rsp =3D sd_r1; + } + assert(rsp <=3D ARRAY_SIZE(response_name)); + return response_name[rsp]; +} + static uint8_t sd_get_dat_lines(SDState *sd) { return sd->enable ? sd->dat_lines : 0; @@ -1596,10 +1617,12 @@ send_response: =20 case sd_r0: case sd_illegal: - default: rsplen =3D 0; break; + default: + g_assert_not_reached(); } + trace_sdcard_response(sd_response_name(rtype), rsplen); =20 if (rtype !=3D sd_illegal) { /* Clear the "clear on valid command" status bits now we've @@ -1616,8 +1639,6 @@ send_response: DPRINTF(" %02x", response[i]); } DPRINTF(" state %d\n", sd->state); - } else { - DPRINTF("No response %d\n", sd->state); } #endif =20 diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 75dac5a2cd..b2aa19ec0d 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -26,6 +26,7 @@ sdhci_capareg(const char *desc, uint16_t val) "%s: %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_response(const char *rspdesc, int rsplen) "%s (sz:%d)" 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" =20 --=20 2.16.1 From nobody Sun May 19 20:29:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) client-ip=209.85.220.194; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f194.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.194 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f194.google.com (mail-qk0-f194.google.com [209.85.220.194]) by mx.zohomail.com with SMTPS id 1518732365339576.78018307723; Thu, 15 Feb 2018 14:06:05 -0800 (PST) Received: by mail-qk0-f194.google.com with SMTP id l23so1529241qkk.11 for ; Thu, 15 Feb 2018 14:06:05 -0800 (PST) Return-Path: Return-Path: Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id h200sm6330991qke.66.2018.02.15.14.06.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Feb 2018 14:06: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=e3JCAPbKDVLzwhfxmhMhmmpmG4oyO0rlYZQyET8oBR8=; b=jBNjAER/nWydrBGWN4GMR+iT+ZLXfsVyhQePLKQycksq+XM+k6nABIkfnmKOLCdYw3 8opzWfnF82ChWMmTx3fYd9dv0kfZ68/DA46vYZONBGM23mI2zQ1biRosC3nW7gCaX9+h bPChQb21dQ6UhkzcFflV9dGQ+LxV74ad77krO+hnNd7zHVgVUO9M+XkEX7mpamtVDc5e hAKC+Ny4fm9LVm8M6Q3wVSskviM/+mxIME3IyTl5HkxZcdEcw/co3cVLu7iHX53ivX+s 4HWEfBTJb3X+PhlCvYR2mv/GT1KNbvT4aZL9PgvkiOirI42R6gazxpRfJkYMx0BURIDL 4EYQ== 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=e3JCAPbKDVLzwhfxmhMhmmpmG4oyO0rlYZQyET8oBR8=; b=jhrRHjhM4FvocUUTAEfQjbgrQHkLxTPXyxV/+bDXZVCqTcAyPekcIM/2uaWPQkutsn x+9qP0rk5r//NuILd1MYZOmPcsuwzCVyOfdgqopMTO5WxCHQMIRdxNJPh0B9Mi5Mxa88 QCcBXuWPtXiHZkMhrG8Yyy4LQJlWlF/qRf9ntv0p2mFrWB40WjE+JN7IjuH/TmhqzQz0 4XGQSTScsPmvH1d5CCljv5mzYPddV1/GS9oVvPHAxR2oBe/O//k9gr/jK+c+YO9kqZBq ynN4zYVcln/s5JIg5ahmXLjzMb+U7o4TxDSBRTvzSHjnW8xM1eMI2ea6CUhgBgNk78Ta v/NQ== X-Gm-Message-State: APf1xPB2Haz1M1AqrWhee4Z3fc5lFelzNCesBQXqvnwhZMDBFs7yph9M J0lLszLGHELd0calqZ5nk50= X-Google-Smtp-Source: AH8x227qgwBx5iO77TD1pSkyPkNkIplfzK7/7QSwdTMj3b92mHwLgT2eqSaXMzutm+KtFU6Rfzpqvw== X-Received: by 10.55.20.40 with SMTP id e40mr6379693qkh.66.1518732364529; Thu, 15 Feb 2018 14:06:04 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, "Edgar E . Iglesias" , Prasad J Pandit , Andrzej Zaborowski Subject: [PATCH v4 04/11] sdcard: replace fprintf() by qemu_hexdump() Date: Thu, 15 Feb 2018 19:05:33 -0300 Message-Id: <20180215220540.6556-5-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215220540.6556-1-f4bug@amsat.org> References: <20180215220540.6556-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sd.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 8f72cde534..ceab263970 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -44,13 +44,6 @@ =20 //#define DEBUG_SD 1 =20 -#ifdef DEBUG_SD -#define DPRINTF(fmt, ...) \ -do { fprintf(stderr, "SD: " fmt , ## __VA_ARGS__); } while (0) -#else -#define DPRINTF(fmt, ...) do {} while(0) -#endif - #define ACMD41_ENQUIRY_MASK 0x00ffffff #define OCR_POWER_UP 0x80000000 #define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ @@ -1632,14 +1625,7 @@ send_response: } =20 #ifdef DEBUG_SD - if (rsplen) { - int i; - DPRINTF("Response:"); - for (i =3D 0; i < rsplen; i++) { - DPRINTF(" %02x", response[i]); - } - DPRINTF(" state %d\n", sd->state); - } + qemu_hexdump((const char *)response, stderr, "Response", rsplen); #endif =20 return rsplen; --=20 2.16.1 From nobody Sun May 19 20:29:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.194 as permitted sender) client-ip=209.85.216.194; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f194.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.194 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f194.google.com (mail-qt0-f194.google.com [209.85.216.194]) by mx.zohomail.com with SMTPS id 1518732368566302.6583573377668; Thu, 15 Feb 2018 14:06:08 -0800 (PST) Received: by mail-qt0-f194.google.com with SMTP id a9so1594415qtj.8 for ; Thu, 15 Feb 2018 14:06:08 -0800 (PST) Return-Path: Return-Path: Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id h200sm6330991qke.66.2018.02.15.14.06.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Feb 2018 14:06:06 -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=XsTxR+y2F4KWlWfXIiFUb7lhdzhI1YRoKOfiMvBTgkc=; b=vV1PmcqjbRDp0wdyDPm5LOuRrHN2yQKsFZOFPBbqaibOWkVMc1vuHMa4S+anmZBXuk HP4FBhHaXQ+BqBpSp2+a9k91kq00+srbxd3+a5kEMXrZ9v8Sve0HxBbGDH6QAiH7SMGK Tb06Ik7jnaU6XmMiK8zlsVNFIgC0NozaNj+x7DQ1sfgcPoN8NDcO0PnzV0iXBoRbmpV5 TexBBCpiypS8Ebzg0JWW8EN6fvnH5nnEZvDjtE77RfV5VH+sZEcRTPsre/1KrAP9HROC sSKDNGfl71Yo0mRHXE7oCd7MjSmB+4J/CufkKnTzpS/wFDlhtC6sOP0DjUXDOGdnR+UN jD1w== 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=XsTxR+y2F4KWlWfXIiFUb7lhdzhI1YRoKOfiMvBTgkc=; b=NWr2HffuNmgaVPEbf4uKPAsX7mGviomt6LL9n2HfB/TcmNLKZOyaun1qUmQmIraWsb bPVwsNrqcByPAzVZjwihnKT8D7v9USTfXhb5tsXqwYqHLtjLM+pYjHJfaob1OglXdZqv QBLvWYNwScTS71thUafJxXu6/d0TtdUDwnwN2t7vXIQCG4dR4BBpTkQxhXBrniz2AFVp YWoTz483yk0ptdI/pyQ3t3+ftRMUZAbVIJ8pZBIXeP7qBg1kKfirHHcfcJ+T4WRQ18d/ MJjo+jYwpKIo8HVsaXe/YGH5+4m/+hlzIxl5hlkeSFmDMBpwEnLlrP66qMpSmzAbfrE0 JPfQ== X-Gm-Message-State: APf1xPBGWJLCxYEhWIh5ielc5Kp6htuYc+D6VWaMEue34dgXOZ5Hxaph dn+oXfWUpPuWy2YSv/4iLKw= X-Google-Smtp-Source: AH8x226Ke2mXHOQuaeX7waW6QhrP4G4zDK55U3Nk3sU2oMo2Cts3Dbuojzf4ozq0eoQmr7xcsgdHqA== X-Received: by 10.237.34.238 with SMTP id q43mr6536639qtc.264.1518732367567; Thu, 15 Feb 2018 14:06:07 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, "Edgar E . Iglesias" , Prasad J Pandit , Andrzej Zaborowski Subject: [PATCH v4 05/11] sdcard: add more trace events Date: Thu, 15 Feb 2018 19:05:34 -0300 Message-Id: <20180215220540.6556-6-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215220540.6556-1-f4bug@amsat.org> References: <20180215220540.6556-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Acked-by: Alistair Francis --- hw/sd/sd.c | 32 ++++++++++++++++++++++++++------ hw/sd/trace-events | 13 +++++++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index ceab263970..564f7a9bfd 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -179,6 +179,8 @@ static bool sd_get_cmd_line(SDState *sd) =20 static void sd_set_voltage(SDState *sd, uint16_t millivolts) { + trace_sdcard_set_voltage(millivolts); + switch (millivolts) { case 3001 ... 3600: /* SD_VOLTAGE_3_3V */ case 2001 ... 3000: /* SD_VOLTAGE_3_0V */ @@ -274,6 +276,7 @@ static void sd_ocr_powerup(void *opaque) { SDState *sd =3D opaque; =20 + trace_sdcard_powerup(); /* Set powered up bit in OCR */ assert(!(sd->ocr & OCR_POWER_UP)); sd->ocr |=3D OCR_POWER_UP; @@ -477,6 +480,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 { @@ -530,7 +534,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; @@ -662,6 +669,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; @@ -751,6 +759,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 || @@ -1077,10 +1090,12 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, case 16: /* CMD16: SET_BLOCKLEN */ switch (sd->state) { case sd_transfer_state: - if (req.arg > (1 << HWBLOCK_SHIFT)) + if (req.arg > (1 << HWBLOCK_SHIFT)) { sd->card_status |=3D BLOCK_LEN_ERROR; - else + } else { + trace_sdcard_set_blocklen(req.arg); sd->blk_len =3D req.arg; + } =20 return sd_r1; =20 @@ -1452,10 +1467,13 @@ static sd_rsp_type_t sd_app_command(SDState *sd, if ((req.arg & ACMD41_ENQUIRY_MASK) !=3D 0) { timer_del(sd->ocr_power_timer); sd_ocr_powerup(sd); - } else if (!timer_pending(sd->ocr_power_timer)) { - timer_mod_ns(sd->ocr_power_timer, - (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) - + OCR_POWER_DELAY_NS)); + } else { + trace_sdcard_inquiry_cmd41(); + if (!timer_pending(sd->ocr_power_timer)) { + timer_mod_ns(sd->ocr_power_timer, + (qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + + OCR_POWER_DELAY_NS)); + } } } =20 @@ -1668,6 +1686,7 @@ void sd_write_data(SDState *sd, uint8_t value) if (sd->card_status & (ADDRESS_ERROR | WP_VIOLATION)) return; =20 + trace_sdcard_write_data(sd->current_cmd, value); switch (sd->current_cmd) { case 24: /* CMD24: WRITE_SINGLE_BLOCK */ sd->data[sd->data_offset ++] =3D value; @@ -1805,6 +1824,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(sd->current_cmd, 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 b2aa19ec0d..3040d32560 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -27,8 +27,21 @@ sdhci_capareg(const char *desc, uint16_t val) "%s: %u" 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_response(const char *rspdesc, int rsplen) "%s (sz:%d)" +sdcard_powerup(void) "" +sdcard_inquiry_cmd41(void) "" +sdcard_set_enable(bool current_state, bool new_state) "%u -> %u" +sdcard_reset(void) "" +sdcard_set_blocklen(uint16_t length) "0x%04x" +sdcard_inserted(bool readonly) "read_only: %u" +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 cmd, uint8_t value) "CMD%02d value 0x%02x" +sdcard_read_data(uint8_t cmd, int length) "CMD%02d len %d" +sdcard_set_voltage(uint16_t millivolts) "%u mV" =20 # hw/sd/milkymist-memcard.c milkymist_memcard_memory_read(uint32_t addr, uint32_t value) "addr 0x%08x = value 0x%08x" --=20 2.16.1 From nobody Sun May 19 20:29:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.195 as permitted sender) client-ip=209.85.216.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f195.google.com (mail-qt0-f195.google.com [209.85.216.195]) by mx.zohomail.com with SMTPS id 1518732372332121.86895587171716; Thu, 15 Feb 2018 14:06:12 -0800 (PST) Received: by mail-qt0-f195.google.com with SMTP id d26so1608484qtj.4 for ; Thu, 15 Feb 2018 14:06:12 -0800 (PST) Return-Path: Return-Path: Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id h200sm6330991qke.66.2018.02.15.14.06.07 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Feb 2018 14:06:10 -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=gUJS0EsF6caA6ICvd/b+cAyb3DgZEbh+qYo9pVceigU=; b=jkyv2kEuhHWfeyDCuga9EcmXAntTO+Kss7Q2GcLLznz/lqIasXYgM5YIiS2Y/0tvWL f+pMUs7Bmmf/UTGfJmVz20lRJdwoBuwfGD4RoRDfVFOOHLrXBR3ckrVlXXm++r5tvnGK QTkdSWhAPljACfpsqCxXbESAuSLpsunfBaRoMrU3XRAb7NRTcggT7rvOwkigrOG9ta4C xmLFC4PqYJzEz77J8tOgP1zwpyURkc7ikWOWHJwHFqauXdciFm4EYXAdaL0G4QCt6DFc Bc5eupYDcKRQS5jQ5/SfMylHcJd1w9vxaArhaR4u+s4O9bMdDV2wBSa5T88H0S1sLdOV iybg== 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=gUJS0EsF6caA6ICvd/b+cAyb3DgZEbh+qYo9pVceigU=; b=enUFuxChLwgpbIdF+EZ8hznBY1wND6yKHwmARdB27kSXHqF8cLHPxNvo49zEN3UClo ST/6Apmjt/4s9jTO02RBte9PZVpGUQAzNQzmp4WHe77AuWDd8/1QDvKQBZx2q9QqnM/I d7i84JtiqRlmt/kgXu4UueYe70BX4ZIjys+tWkrJUy+fTDlzoHX25zHR6QQUg9mikD8v 0okZb2CQ1VW56vgrKl4SFDv16WZ/HSItL3QwFdx+OCI2fVFtQI3Vto8EvyCniyW4/0PY AM7B9CFKp4cDywdHYKBWnIKDQX8krUYyjICvYk2/BJnXcpwMZZ5TLKDI4dVqnkyGG86v GfQw== X-Gm-Message-State: APf1xPCFT2vWumXVWIeJGbLa7aht9nVwi14/c9I4t7NcgyYJ5qTbAKO7 s079NfLwj+pIeFWelWKSOD0= X-Google-Smtp-Source: AH8x225BxpnN1GOeOa/ffSbhZNrSAoCZr6tjeWzhbVhAw6hjQumi46tJUcLueKCXmi+gbuFdZZTEhg== X-Received: by 10.200.40.165 with SMTP id i34mr6421087qti.176.1518732371488; Thu, 15 Feb 2018 14:06:11 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, "Edgar E . Iglesias" , Prasad J Pandit , Andrzej Zaborowski Subject: [PATCH v4 06/11] sdcard: do not trace CMD55 when expecting ACMD Date: Thu, 15 Feb 2018 19:05:35 -0300 Message-Id: <20180215220540.6556-7-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215220540.6556-1-f4bug@amsat.org> References: <20180215220540.6556-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 Signed-off-by: Philippe Mathieu-Daud=C3=A9 Acked-by: Alistair Francis --- hw/sd/sd.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 564f7a9bfd..af4df2b104 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -818,13 +818,15 @@ 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(req.cmd, req.arg, + sd_state_name(sd->state)); + } =20 /* Not interpreting this as an app command */ sd->card_status &=3D ~APP_CMD; --=20 2.16.1 From nobody Sun May 19 20:29:44 2024 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 1518733131033161.17061512198165; Thu, 15 Feb 2018 14:18:51 -0800 (PST) Received: from localhost ([::1]:36951 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emRrd-0002jV-RM for importer@patchew.org; Thu, 15 Feb 2018 17:18:49 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55815) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emRfX-0006Lz-Lp for qemu-devel@nongnu.org; Thu, 15 Feb 2018 17:06:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emRfU-0001BK-GU for qemu-devel@nongnu.org; Thu, 15 Feb 2018 17:06:19 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:45665) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1emRfU-0001B6-C1 for qemu-devel@nongnu.org; Thu, 15 Feb 2018 17:06:16 -0500 Received: by mail-qt0-x243.google.com with SMTP id x27so1574435qtm.12 for ; Thu, 15 Feb 2018 14:06:16 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id h200sm6330991qke.66.2018.02.15.14.06.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Feb 2018 14:06:14 -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=Pv33HSo/9ouTH9UJyrbpKyM6FMsrj7CtbYsvjAlIgEY=; b=IP3NQr+ByyfkF31CTdnJxdtITtFDUJT2aFddjyVGJIeA6L9ZOiOrlJGlHtkcTYjRZe +IphbG7u25gqVokCZqMf4fMOoPddGUZ0SLHG7i6+oIm+gvEDG0XbM74PxMAlFVLFAgsT QGF2veBg2JdoDgUl7rz4BMgItNfwn0/oTLcLGsbT9XhNUl9261pWtM9rZ+zH4h8MzZ93 k1+UAfNWmlo1TPTuRpcgJMJ0Ptv+9J7XTGmqPtccEjwVN1c7EaO/jLHphU9XXhnDxRPW AZCKzbg9Hi8P8/ZMAtJqGxUtAFzpqgpKiOLHfxSoZGaEiPa/nG0CXo05Ljmt/4zrkbp5 9zSw== 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=Pv33HSo/9ouTH9UJyrbpKyM6FMsrj7CtbYsvjAlIgEY=; b=l0f3RaGSwoEY9BuAxgtPB5q8b9g2OWmbO6nLyxAjdGeMi1kyhwtqqzjAT2L37QOTec E3QPTH9//ov+3Q5d8FaKWTKGkZmyezPyTc9tHW/9vzb6k0iHe29BtUVSMBuhibdRzKaK jAJ9esul0jWRkCQvgXQQ9OWDWJjr65oCOzaSCMrWkj1m6EJ2QtHEt6YkhmrX30cg8IOc 1cxda58zjElewb1/fBvDifkp3cMt0uFablvLfmVuYpAcNX7NCdqoyQONHSZhJGYiCyRy jE30CYVkZK5VrDwkV1gtlQ+Zwb9LYgfb3DH+9EsfNEcCMz3u0l/Qyg/whlp4ZGzjkTzE jWyw== X-Gm-Message-State: APf1xPCfWh/eKaXmjGnrtVKl4J1y+wGFM9P7pgGSXBW7LeFf3Lf5jIQT 4G6qoDYDstHgey+HJAMPSg8AyF8CNE8= X-Google-Smtp-Source: AH8x226nNPnROHM2B5R/gQEGWuUvAGbxqEX9RzO4NwiMiDD7jdFYdcTuTLaVs1PS18mmiTr0JEj29A== X-Received: by 10.200.51.13 with SMTP id t13mr6584959qta.263.1518732375894; Thu, 15 Feb 2018 14:06:15 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko Date: Thu, 15 Feb 2018 19:05:36 -0300 Message-Id: <20180215220540.6556-8-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215220540.6556-1-f4bug@amsat.org> References: <20180215220540.6556-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 v4 07/11] sdcard: define SDMMC_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 , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org 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 --- Since v3: add "sdmmc-internal.h" hw/sd/sdmmc-internal.h | 15 +++++++++++++++ hw/sd/sd.c | 22 ++++++++++++++++------ 2 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 hw/sd/sdmmc-internal.h diff --git a/hw/sd/sdmmc-internal.h b/hw/sd/sdmmc-internal.h new file mode 100644 index 0000000000..0e96cb0081 --- /dev/null +++ b/hw/sd/sdmmc-internal.h @@ -0,0 +1,15 @@ +/* + * SD/MMC cards common + * + * Copyright (c) 2018 Philippe Mathieu-Daud=C3=A9 + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#ifndef SD_INTERNAL_H +#define SD_INTERNAL_H + +#define SDMMC_CMD_MAX 64 + +#endif diff --git a/hw/sd/sd.c b/hw/sd/sd.c index af4df2b104..6acd6b3c5c 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -40,6 +40,7 @@ #include "qemu/error-report.h" #include "qemu/timer.h" #include "qemu/log.h" +#include "sdmmc-internal.h" #include "trace.h" =20 //#define DEBUG_SD 1 @@ -215,18 +216,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[SDMMC_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[SDMMC_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, @@ -831,8 +835,8 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDR= equest req) /* 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 @@ -1544,8 +1548,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, @@ -1564,6 +1568,12 @@ int sd_do_command(SDState *sd, SDRequest *req, goto send_response; } =20 + if (req->cmd >=3D SDMMC_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.16.1 From nobody Sun May 19 20:29:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) client-ip=209.85.220.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f195.google.com (mail-qk0-f195.google.com [209.85.220.195]) by mx.zohomail.com with SMTPS id 151873238100531.053919686642303; Thu, 15 Feb 2018 14:06:21 -0800 (PST) Received: by mail-qk0-f195.google.com with SMTP id 15so1567344qkl.3 for ; Thu, 15 Feb 2018 14:06:20 -0800 (PST) Return-Path: Return-Path: Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id h200sm6330991qke.66.2018.02.15.14.06.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Feb 2018 14:06:18 -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=GjnFPtzyrP/E2Vs680oepwys67RxdaEVQU8SQI6IU1Q=; b=nQ3KCREy2ELjJhQ3AzPJVt2ES0AiVmO+QvqrP8UB+1cXb3TXzUh9gfZUIdyVRzcnO2 BXRR1HE9Tr6SjBC6TDC6yX3w0FZxvLJUVk0IbrBKiwSZ28jIP10Tuwp5p9IvwArlGqdf v7TvxTNvLxAiZp83+BYFi+Bes/4lGpzaw7uTVC8pH2chTb2lx1+wx4/K/SPyKEov57w2 yH3pF4liWaDWbK/gqWAzW0kyY/f8a25HBcz1v5YjTNuHWEaU0vIzqcNQVVa5pjgOHkRt BLymMi4e62wjKutM41awsp9fB/S7/9eHGw/e3I+HAcr4i/Q5sksMb8uEceT8ZwPJZqFl uwKw== 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=GjnFPtzyrP/E2Vs680oepwys67RxdaEVQU8SQI6IU1Q=; b=hMFF55Vsn3/gIlRT8kzbIz11N9yzlE6ikomafLAAMm9ZUn7a7JrbGIOgxI9RFMGRFI YQQuHwwyT5LvYa9GpmlNQxqIiVrfcB1DSqPAJJnbdEqW98OEwBmMt3ODL4t7Y9uP2WL/ 8+A+X6jwvEeAyjK2qd9ZBtKevROkYFAhzZdRrv9Ug7HIdSnCiLCTItWz0BLdsSkwicXy FubVXj6yGuMP9gPxR7yX9z0K3EO/M0Fl/ouPP3PUwOYemhm55iHnFiKs+iysik9AyCzU GKS2j5AFvC1lIW2sS54beghkTwyM0nW6Dw4Myjceg/4cKfqelT23WYtprLkDIBCnN2lz TJvg== X-Gm-Message-State: APf1xPBkTi9U80hNXSl+W3ICzd4PGIu7OFuK6O+eUGjPE32R3tps/tlT sfyfyDcKy8hlv0D7/ecjn+Q= X-Google-Smtp-Source: AH8x2273evGADacv97wGjmW/XNlwQytmdndHA9RRv1QD8mN+A+ax5VW0j+RtfE1PHigf1xi96NGaoQ== X-Received: by 10.55.215.220 with SMTP id t89mr6426030qkt.90.1518732379763; Thu, 15 Feb 2018 14:06:19 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, "Edgar E . Iglesias" , Prasad J Pandit , Andrzej Zaborowski Subject: [PATCH v4 08/11] sdcard: display command name when tracing CMD/ACMD Date: Thu, 15 Feb 2018 19:05:37 -0300 Message-Id: <20180215220540.6556-9-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215220540.6556-1-f4bug@amsat.org> References: <20180215220540.6556-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 put the function in sdmmc-common.c since we will reuse it in hw/sd/core.c Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sdmmc-internal.h | 3 +++ hw/sd/sd.c | 13 +++++---- hw/sd/sdmmc-common.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++= ++++ hw/sd/Makefile.objs | 2 +- hw/sd/trace-events | 8 +++--- 5 files changed, 88 insertions(+), 10 deletions(-) create mode 100644 hw/sd/sdmmc-common.c diff --git a/hw/sd/sdmmc-internal.h b/hw/sd/sdmmc-internal.h index 0e96cb0081..02b730089b 100644 --- a/hw/sd/sdmmc-internal.h +++ b/hw/sd/sdmmc-internal.h @@ -12,4 +12,7 @@ =20 #define SDMMC_CMD_MAX 64 =20 +const char *sd_cmd_name(uint8_t cmd); +const char *sd_acmd_name(uint8_t cmd); + #endif diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 6acd6b3c5c..666ff3873f 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -828,8 +828,8 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDR= equest req) 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) { - trace_sdcard_normal_command(req.cmd, req.arg, - sd_state_name(sd->state)); + trace_sdcard_normal_command(sd_cmd_name(req.cmd), req.cmd, + req.arg, sd_state_name(sd->state)); } =20 /* Not interpreting this as an app command */ @@ -1400,7 +1400,8 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) 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_acmd_name(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 */ @@ -1698,7 +1699,8 @@ void sd_write_data(SDState *sd, uint8_t value) if (sd->card_status & (ADDRESS_ERROR | WP_VIOLATION)) return; =20 - trace_sdcard_write_data(sd->current_cmd, value); + trace_sdcard_write_data(sd_acmd_name(sd->current_cmd), + sd->current_cmd, value); switch (sd->current_cmd) { case 24: /* CMD24: WRITE_SINGLE_BLOCK */ sd->data[sd->data_offset ++] =3D value; @@ -1836,7 +1838,8 @@ uint8_t sd_read_data(SDState *sd) =20 io_len =3D (sd->ocr & (1 << 30)) ? 512 : sd->blk_len; =20 - trace_sdcard_read_data(sd->current_cmd, io_len); + trace_sdcard_read_data(sd_acmd_name(sd->current_cmd), + sd->current_cmd, io_len); switch (sd->current_cmd) { case 6: /* CMD6: SWITCH_FUNCTION */ ret =3D sd->data[sd->data_offset ++]; diff --git a/hw/sd/sdmmc-common.c b/hw/sd/sdmmc-common.c new file mode 100644 index 0000000000..1d0198b1ad --- /dev/null +++ b/hw/sd/sdmmc-common.c @@ -0,0 +1,72 @@ +/* + * SD/MMC cards common helpers + * + * Copyright (c) 2018 Philippe Mathieu-Daud=C3=A9 + * + * This work is licensed under the terms of the GNU GPL, version 2 or late= r. + * See the COPYING file in the top-level directory. + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "sdmmc-internal.h" + +const char *sd_cmd_name(uint8_t cmd) +{ + static const char *cmd_abbrev[SDMMC_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"; +} + +const char *sd_acmd_name(uint8_t cmd) +{ + static const char *acmd_abbrev[SDMMC_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"; +} diff --git a/hw/sd/Makefile.objs b/hw/sd/Makefile.objs index c2b7664264..af4a248728 100644 --- a/hw/sd/Makefile.objs +++ b/hw/sd/Makefile.objs @@ -1,6 +1,6 @@ common-obj-$(CONFIG_PL181) +=3D pl181.o common-obj-$(CONFIG_SSI_SD) +=3D ssi-sd.o -common-obj-$(CONFIG_SD) +=3D sd.o core.o +common-obj-$(CONFIG_SD) +=3D sd.o core.o sdmmc-common.o common-obj-$(CONFIG_SDHCI) +=3D sdhci.o =20 obj-$(CONFIG_MILKYMIST) +=3D milkymist-memcard.o diff --git a/hw/sd/trace-events b/hw/sd/trace-events index 3040d32560..cdddca3dbf 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -24,8 +24,8 @@ sdhci_write_dataport(uint16_t data_count) "write buffer f= illed with %u bytes of sdhci_capareg(const char *desc, uint16_t val) "%s: %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 *cmd_desc, uint8_t cmd, uint32_t arg, con= st char *state) "%20s/ CMD%02d arg 0x%08x (state %s)" +sdcard_app_command(const char *acmd_desc, uint8_t acmd, uint32_t arg, cons= t char *state) "%23s/ACMD%02d arg 0x%08x (state %s)" sdcard_response(const char *rspdesc, int rsplen) "%s (sz:%d)" sdcard_powerup(void) "" sdcard_inquiry_cmd41(void) "" @@ -39,8 +39,8 @@ 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 cmd, uint8_t value) "CMD%02d value 0x%02x" -sdcard_read_data(uint8_t cmd, int length) "CMD%02d len %d" +sdcard_write_data(const char *cmd_desc, uint8_t cmd, uint8_t value) "%20s/= CMD%02d value 0x%02x" +sdcard_read_data(const char *cmd_desc, uint8_t cmd, int length) "%20s/ CMD= %02d len %d" sdcard_set_voltage(uint16_t millivolts) "%u mV" =20 # hw/sd/milkymist-memcard.c --=20 2.16.1 From nobody Sun May 19 20:29:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.216.195 as permitted sender) client-ip=209.85.216.195; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qt0-f195.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.216.195 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qt0-f195.google.com (mail-qt0-f195.google.com [209.85.216.195]) by mx.zohomail.com with SMTPS id 1518732385029388.69613128321; Thu, 15 Feb 2018 14:06:25 -0800 (PST) Received: by mail-qt0-f195.google.com with SMTP id d8so1629944qtm.0 for ; Thu, 15 Feb 2018 14:06:24 -0800 (PST) Return-Path: Return-Path: Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id h200sm6330991qke.66.2018.02.15.14.06.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Feb 2018 14:06:22 -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=xf9HJZ0oJ9R354tjG0KetzdQLzJ95Chy4YMCHqkZt5s=; b=CWibFrTn++aT+g0B0BvZ8po2j9npju2x3wgtGpwGEB9R8HQ1nNJlscS8WgyYv7EvFy 3BHFBWcGDCXGKZhr2e/T+ACf+aegpneYlm5gklf1BoufiG04fmmM2vuM968PpPDcqupY X8t4qS5hfDo556QvKC1RzDa9s9o2+E/Qsxvw45NTFNVKiGuDi4eEKDNI4sXHvdtj3dHF PGChbv24jxgr+426wAbNkB5JIUFGq+PMIxmbOopugKk/8o2dtUlnK9QRyIjorMwPvB7q Beq/WCX2ZK+cGZ/nrDxmgQhJ0tDzYrQOORxHfr7+gUPBOGPQNpTOKLKGIw3Mh05HUA6S r1uw== 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=xf9HJZ0oJ9R354tjG0KetzdQLzJ95Chy4YMCHqkZt5s=; b=dNOxAKA6JU4CcWHkJXRMQEtl++YgnvupagOyG0+Zcir0WRSa8taEP8oNikhMSG4kRG tI+MlOajkJPZSSz26uzXlAoO63NP72HfBsIWLJUk8VLSVc4fZ4Ey2Qhj9hsyHiHV52Qe zpybwbCBzIpAnfu6z0gjeh6NNB9kktYwfy0qEivfOKeaPutVIFXG2/B5UEiOiKSqWlE8 2SyVHzFU3kBlCRZuKAPTJcTkCtzVOKJPUBrmKTFrDO1yuYUPmrIl3rQZkrUaAm3C+6Ej Y+G+Wb7GGYkjtl+Obg9Sf0AdnmJdOlyLKUtQIYMYPU4/DOImCMXUHU/u4uyMgBjGgB0d 2RtA== X-Gm-Message-State: APf1xPDigW7OSaibgPibmCarWfPk6UPI+G5NpNdZgjqIincSTTzXn9BW T/d8iuc5dWy5b2HgOIDd8kc= X-Google-Smtp-Source: AH8x225GqwTJyvij5Zoi9a3CuB9G6hb3/SJhsuN1Vs3ZDiBvIn4rkXjMcRGvKyMxEPMk/+2+N8lPdg== X-Received: by 10.200.45.217 with SMTP id q25mr6676376qta.215.1518732383972; Thu, 15 Feb 2018 14:06:23 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, "Edgar E . Iglesias" , Prasad J Pandit , Andrzej Zaborowski Subject: [PATCH v4 09/11] sdcard: display protocol used when tracing Date: Thu, 15 Feb 2018 19:05:38 -0300 Message-Id: <20180215220540.6556-10-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215220540.6556-1-f4bug@amsat.org> References: <20180215220540.6556-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 RSF_0 Z_629925259 SPT_0 put the function in sdmmc-common.c since we will reuse it in hw/sd/core.c Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Peter Maydell --- hw/sd/sd.c | 14 ++++++++++---- hw/sd/trace-events | 8 ++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 666ff3873f..6760815045 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -122,6 +122,7 @@ struct SDState { qemu_irq readonly_cb; qemu_irq inserted_cb; QEMUTimer *ocr_power_timer; + const char *proto_name; bool enable; uint8_t dat_lines; bool cmd_line; @@ -828,7 +829,8 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, SDR= equest req) 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) { - trace_sdcard_normal_command(sd_cmd_name(req.cmd), req.cmd, + trace_sdcard_normal_command(sd->proto_name, + sd_cmd_name(req.cmd), req.cmd, req.arg, sd_state_name(sd->state)); } =20 @@ -1400,7 +1402,7 @@ static sd_rsp_type_t sd_normal_command(SDState *sd, S= DRequest req) static sd_rsp_type_t sd_app_command(SDState *sd, SDRequest req) { - trace_sdcard_app_command(sd_acmd_name(req.cmd), + trace_sdcard_app_command(sd->proto_name, sd_acmd_name(req.cmd), req.cmd, req.arg, sd_state_name(sd->state)); sd->card_status |=3D APP_CMD; switch (req.cmd) { @@ -1699,7 +1701,8 @@ void sd_write_data(SDState *sd, uint8_t value) if (sd->card_status & (ADDRESS_ERROR | WP_VIOLATION)) return; =20 - trace_sdcard_write_data(sd_acmd_name(sd->current_cmd), + trace_sdcard_write_data(sd->proto_name, + sd_acmd_name(sd->current_cmd), sd->current_cmd, value); switch (sd->current_cmd) { case 24: /* CMD24: WRITE_SINGLE_BLOCK */ @@ -1838,7 +1841,8 @@ uint8_t sd_read_data(SDState *sd) =20 io_len =3D (sd->ocr & (1 << 30)) ? 512 : sd->blk_len; =20 - trace_sdcard_read_data(sd_acmd_name(sd->current_cmd), + trace_sdcard_read_data(sd->proto_name, + sd_acmd_name(sd->current_cmd), sd->current_cmd, io_len); switch (sd->current_cmd) { case 6: /* CMD6: SWITCH_FUNCTION */ @@ -1980,6 +1984,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 cdddca3dbf..2059ace61f 100644 --- a/hw/sd/trace-events +++ b/hw/sd/trace-events @@ -24,8 +24,8 @@ sdhci_write_dataport(uint16_t data_count) "write buffer f= illed with %u bytes of sdhci_capareg(const char *desc, uint16_t val) "%s: %u" =20 # hw/sd/sd.c -sdcard_normal_command(const char *cmd_desc, uint8_t cmd, uint32_t arg, con= st char *state) "%20s/ CMD%02d arg 0x%08x (state %s)" -sdcard_app_command(const char *acmd_desc, uint8_t acmd, uint32_t arg, cons= t char *state) "%23s/ACMD%02d arg 0x%08x (state %s)" +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_response(const char *rspdesc, int rsplen) "%s (sz:%d)" sdcard_powerup(void) "" sdcard_inquiry_cmd41(void) "" @@ -39,8 +39,8 @@ 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(const char *cmd_desc, uint8_t cmd, uint8_t value) "%20s/= CMD%02d value 0x%02x" -sdcard_read_data(const char *cmd_desc, uint8_t cmd, int length) "%20s/ CMD= %02d len %d" +sdcard_write_data(const char *proto, const char *cmd_desc, uint8_t cmd, ui= nt8_t value) "%s %20s/ CMD%02d value 0x%02x" +sdcard_read_data(const char *proto, const char *cmd_desc, uint8_t cmd, int= length) "%s %20s/ CMD%02d len %d" sdcard_set_voltage(uint16_t millivolts) "%u mV" =20 # hw/sd/milkymist-memcard.c --=20 2.16.1 From nobody Sun May 19 20:29:44 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of _spf.google.com designates 209.85.220.196 as permitted sender) client-ip=209.85.220.196; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-qk0-f196.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of _spf.google.com designates 209.85.220.196 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-qk0-f196.google.com (mail-qk0-f196.google.com [209.85.220.196]) by mx.zohomail.com with SMTPS id 1518732388691359.20219497151027; Thu, 15 Feb 2018 14:06:28 -0800 (PST) Received: by mail-qk0-f196.google.com with SMTP id z197so1546373qkb.6 for ; Thu, 15 Feb 2018 14:06:28 -0800 (PST) Return-Path: Return-Path: Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id h200sm6330991qke.66.2018.02.15.14.06.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Feb 2018 14:06: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=8sdW/3mmjLRuCjGpul+6/RCCzMqxUBA24KahfCjrdyA=; b=oRL/jK+mhceiXbKyaDXpWmpRvOT2b3K4+VXO9t9H1Kg9/SgS/U1ez4es7eFIms3ZQQ 2R6PF3F96P93UcB/81fFiMXVy9I1olererXlxetY6auAa6yufqGRsiXrQK6V4Ly/sZZf czYVHc0Vp4RAY2cnpIxXz3edYEgP14xxzRfFK5UakSC7PaZgEsvDEo77wck2jZXBbq9e B9LdnYisC1LnWzquLRbB/R6P28G+ugJv8PWW4GsFGcPYj3VWWMpaotXhnPkPARy396wo 2foNj2px0DYTXpe/LTwT528+5o00786VARQqeQfZfbDtwM1iBEGki/WYKKcw6Z+n3U53 q3Jg== 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=8sdW/3mmjLRuCjGpul+6/RCCzMqxUBA24KahfCjrdyA=; b=KEJfnQ8lGILovLkRg9Dc46OheH6R+Cdm2N4muEf4obi+gcbYewXK9IoMe+zCftlo48 ic0WvGN8uhlw3+Z33geCJeWZrMM4xe1w77f1bdSSYLP5mI7VkSVNDL6uX0N5TPzNNvfS KzK5KwSfYC7v0dQuPQ8pESv1vx1COHzyYAF79SB++eUMei1GyIhP8B9vbcoWH+JcWn7O V20+tNHFrgvkVWbDtqIyeuru2WiNIwHVnXRamGDW7uTqoogkyun70Hvp9nQ4DAUpbLRq JBWL317Ula4NzDiqs4ZnV+9ywSQcnNBFhke8hJuM56YN/N8G+ipVwEuQWdwNjEPAr6hX lkkQ== X-Gm-Message-State: APf1xPA2spmEzugICCk5eOlc0nU78gAsCxqRBi5+MPoZ1waMNsDws1FN Z760m1xfnvKPxwrFhAMwh24= X-Google-Smtp-Source: AH8x225gcA/CAJ9mx69u9IfG/iD9XdkuLcEJbnxvo8WEtjvieQOB2DGRmBeWfGOZmfOFBGJUuDLkHw== X-Received: by 10.55.88.7 with SMTP id m7mr6525518qkb.142.1518732387859; Thu, 15 Feb 2018 14:06:27 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, "Edgar E . Iglesias" , Prasad J Pandit , Andrzej Zaborowski Subject: [PATCH v4 10/11] sdcard: use G_BYTE from cutils Date: Thu, 15 Feb 2018 19:05:39 -0300 Message-Id: <20180215220540.6556-11-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215220540.6556-1-f4bug@amsat.org> References: <20180215220540.6556-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZohoMail: RDKM_0 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 6760815045..28837768d4 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -36,6 +36,7 @@ #include "hw/sd/sd.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" @@ -344,7 +345,7 @@ static void sd_set_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) { /* 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.16.1 From nobody Sun May 19 20:29:44 2024 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 1518732585111307.040886696376; Thu, 15 Feb 2018 14:09:45 -0800 (PST) Received: from localhost ([::1]:36559 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emRim-0000Ms-6p for importer@patchew.org; Thu, 15 Feb 2018 17:09:40 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55897) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emRfl-0006dU-Gj for qemu-devel@nongnu.org; Thu, 15 Feb 2018 17:06:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emRfk-0001Hp-Iz for qemu-devel@nongnu.org; Thu, 15 Feb 2018 17:06:33 -0500 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:34892) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1emRfk-0001HU-F2 for qemu-devel@nongnu.org; Thu, 15 Feb 2018 17:06:32 -0500 Received: by mail-qt0-x243.google.com with SMTP id g14so1618973qti.2 for ; Thu, 15 Feb 2018 14:06:32 -0800 (PST) Received: from x1.lan ([138.117.48.219]) by smtp.gmail.com with ESMTPSA id h200sm6330991qke.66.2018.02.15.14.06.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 15 Feb 2018 14:06: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=zVqExUWLmkOCyX0MR9tk/xW+nuWyreHpROMNCIAWc0g=; b=g9fBalHL0/uamyXKVHLOK4D0kOyRE4GtfG6bhdWOaudtgxtbSRK0WcGZjJFpm4jAIw 1eq/UZVG9FMjDwpdPj89xFuQRnWs/l9LOszGfN0jggLmgGyFEI39vyMJ4+/7ByEZoWbg RMquG9WpWCTXVn0UMYfU3UD3BGO/kxp9W2s2n4DyJhPt6vEbl0oB7HJc6wLooH+Mdslk E+gP4SorLIjilfsSS30yQb3eaDmGp/122kXGmDRbyA/8QuPH14nvUwZb81Z/sFriJOoS mR03MqYDImgsSU+pFN/0UHNCJMxngCO8OisM1nFSfnsO6KgwxBd3cyUWdUUlAOFy9yZp 10mg== 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=zVqExUWLmkOCyX0MR9tk/xW+nuWyreHpROMNCIAWc0g=; b=d6dJr9dzJRnefdJxfqhc1QjlKv4/b7c/QJAzAQrxR9Xm4TNCQKza0O1x/9SqoMsofN Es4JyBZ8v0EeoDKsatXptzGn6ANRwO8STHadF5A1eeWY7YwYUIjmQa2fDjYE+PE/l3qv go8oEftm083vLo6p0dZeFHY2NCXiN//RryxTM7BQ94JfGAJHb1ljh7SAee//0RsXRno/ 0NpygRrjmeyLSELq2WsAJoEOFVGw2HzCmgDUxBX6PbyORxhJFDR0owAk4wBqKdX6uYVZ K897hb8dU/9dVCIHhaaQWgNUzmVMK7DLnjPvB3xheigOLI2PbOE+2C5IPYvAA4WTM8Tf 5e4A== X-Gm-Message-State: APf1xPDD0Z+6L1p8xAJ6VrGIBOfthWLV8KDvZ49QZLsJzooEKtSJmT1a kUxB99foizAv1nJDusKMaSs= X-Google-Smtp-Source: AH8x225MX3agLiWgzKDftWmKzU6BmFLf/lmzzOUqS/lbpxRdbXWXwG1TkQdi+H1cjTQ5yGVcSlceJg== X-Received: by 10.200.39.40 with SMTP id g37mr6581070qtg.169.1518732392015; Thu, 15 Feb 2018 14:06:32 -0800 (PST) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Alistair Francis , Peter Maydell , Igor Mitsyanko Date: Thu, 15 Feb 2018 19:05:40 -0300 Message-Id: <20180215220540.6556-12-f4bug@amsat.org> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180215220540.6556-1-f4bug@amsat.org> References: <20180215220540.6556-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 v4 11/11] 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 , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org 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 --- include/hw/sd/sd.h | 1 - hw/sd/sd.c | 21 +++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index bf1eb0713c..9bdb3c9285 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -53,7 +53,6 @@ #define READY_FOR_DATA (1 << 8) #define APP_CMD (1 << 5) #define AKE_SEQ_ERROR (1 << 3) -#define OCR_CCS_BITN 30 =20 typedef enum { SD_VOLTAGE_0_4V =3D 400, /* currently not supported */ diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 28837768d4..fbee87afef 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 "qapi/error.h" @@ -47,8 +48,6 @@ //#define DEBUG_SD 1 =20 #define ACMD41_ENQUIRY_MASK 0x00ffffff -#define OCR_POWER_UP 0x80000000 -#define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ =20 typedef enum { sd_r0 =3D 0, /* no response */ @@ -272,6 +271,11 @@ static uint16_t sd_crc16(void *message, size_t width) return shift_reg; } =20 +#define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ + +FIELD(OCR, CARD_CAPACITY, 30, 1) /* 0:SDSC, 1:SDHC/SDXC */ +FIELD(OCR, CARD_POWER_UP, 31, 1) + static void sd_set_ocr(SDState *sd) { /* All voltages OK, Standard Capacity SD Memory Card, not yet powered = up */ @@ -283,9 +287,10 @@ static void sd_ocr_powerup(void *opaque) SDState *sd =3D opaque; =20 trace_sdcard_powerup(); - /* 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_set_scr(SDState *sd) @@ -571,7 +576,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 { @@ -681,7 +686,7 @@ static void sd_erase(SDState *sd) return; } =20 - if (extract32(sd->ocr, OCR_CCS_BITN, 1)) { + if (FIELD_EX32(sd->ocr, OCR, CARD_CAPACITY)) { /* High capacity memory card: erase units are 512 byte blocks */ erase_start *=3D 512; erase_end *=3D 512; @@ -1473,7 +1478,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.16.1