From nobody Tue Oct 28 12:38:31 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