From nobody Wed Oct 29 22:59:18 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 1525838316574461.4036202329612; Tue, 8 May 2018 20:58:36 -0700 (PDT) Received: from localhost ([::1]:54328 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGGFP-0006KB-N6 for importer@patchew.org; Tue, 08 May 2018 23:58:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58528) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGG4i-0004aX-S6 for qemu-devel@nongnu.org; Tue, 08 May 2018 23:47:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGG4h-0002yc-UN for qemu-devel@nongnu.org; Tue, 08 May 2018 23:47:32 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:43754) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fGG4h-0002xp-PM for qemu-devel@nongnu.org; Tue, 08 May 2018 23:47:31 -0400 Received: by mail-qk0-x244.google.com with SMTP id h19so26472026qkj.10 for ; Tue, 08 May 2018 20:47:31 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id w12-v6sm14497002qtb.80.2018.05.08.20.47.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 May 2018 20:47:30 -0700 (PDT) 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=DMhpp6rq6No+/6fLypVjyxqmO3Y0EnRPg4J2HBnaWnU=; b=nrYRHyptIheTUo9iQUPIwlQ+LtWDcHsWh1krHiVmePYROxwSt8tsTK4W5424U+nda6 aEmg33G3JKlklXuLWpEb3WjKQNgh+9IS7VMY1Q7RyI+5H8RIYVPJeJ97xvochNA42eva yI62I79eDnbwKEwJf9GCmJ+HeFsxehEkqI189xiR1yVdESy5RvsFzcQrvnmd5xx2e74J qGhoME6APfOGztPhyT3SO/VK2SAK/ZUxsHZBqmAC0OJSNijNzLUlYw6/kvIZdvWpez5K VkqMKVcRLyl3QY/s5UFq4TEgFAIoxvpK1ZU7Eij9IbTO+yVm9XPEZiX7chhKOz+uPrt7 YQAw== 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=DMhpp6rq6No+/6fLypVjyxqmO3Y0EnRPg4J2HBnaWnU=; b=CGgKW+s0uibDXBDmk51sbuYSDpym0DGxOutgP5f4/S4zqZytaB2+rO68LA6isT0+mB S1Ge3/y+w5ZHlxBzjg6VuPN0N8xjtUBX8WFGu5MLwGJ9uOHftLKWHz1KJUKqfQ9Ov1m/ 1QtBjg0FQbKP7l2xE+dJRo6+lxJ8CBUYk6nAf96HR2dtIwt4mtK//271KQJSl8tZ0+Zl viNVWRat0tdRPuEKwW/ZuM6/sD8b4V6H61wUQ7PbQKfGKx4NvMdOW0AJaUGg40S2ZevM zQjs8DWC/HWx4SEJsOirhN2j2SVBwdKoi5kUuziI6P5wfk8YsLJil09VHR7abZK0tTrd yUhA== X-Gm-Message-State: ALQs6tCBR+t91qZPGCr8PuBdaQ3965hiO4uAw4OYv8kSfQ3zTXRu0Gl9 VvmorGTImtCfVuSXxLhabgU= X-Google-Smtp-Source: AB8JxZo5RQOk1Mg13ksUua9HfqjXgE2zu1PQpuGKA4RtjVQPIMUyBDYOokiBKdo6qlq3xcuQjfjnqA== X-Received: by 10.55.239.2 with SMTP id j2mr36533666qkk.279.1525837651047; Tue, 08 May 2018 20:47:31 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Wed, 9 May 2018 00:46:52 -0300 Message-Id: <20180509034658.26455-9-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180509034658.26455-1-f4bug@amsat.org> References: <20180509034658.26455-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/14] sdcard: Extract sd_frame48_verify_checksum() out for qtesting 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: Paolo Bonzini , Alistair Francis , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Stefan Hajnoczi , 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 | 10 ++++++++++ hw/sd/sd.c | 2 +- hw/sd/sdmmc-internal.c | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index c854ed6a14..752d8edd6c 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -150,6 +150,16 @@ uint8_t sd_frame48_calc_checksum(const void *content); */ uint8_t sd_frame136_calc_checksum(const void *content); =20 +/** + * sd_frame48_verify_checksum: + * @content: pointer to the frame content + * + * Verify the 7-bit CRC checksum of a 48-bit SD frame. + * + * Returns: A boolean indicating whether the frame 7-bit CRC is correct. + */ +bool sd_frame48_verify_checksum(const void *content); + /* Legacy functions to be used only by non-qdevified callers */ SDState *sd_init(BlockBackend *bs, bool is_spi); int sd_do_command(SDState *sd, SDRequest *req, diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 6fc8daa5b8..125707a65c 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -473,7 +473,7 @@ static bool sd_req_crc_is_valid(SDRequest *req) buffer[0] =3D 0x40 | req->cmd; stl_be_p(&buffer[1], req->arg); return true; - return sd_frame48_calc_checksum(buffer) =3D=3D req->crc; /* TODO */ + return sd_frame48_verify_checksum(buffer); /* TODO */ } =20 static void sd_response_r1_make(SDState *sd, uint8_t *response) diff --git a/hw/sd/sdmmc-internal.c b/hw/sd/sdmmc-internal.c index a94d65b756..a9d19ce3eb 100644 --- a/hw/sd/sdmmc-internal.c +++ b/hw/sd/sdmmc-internal.c @@ -105,3 +105,9 @@ uint8_t sd_frame136_calc_checksum(const void *content) { return (sd_crc7(content, F136_CONTENT_LENGTH) << 1) | 1; } + +bool sd_frame48_verify_checksum(const void *content) +{ + return sd_frame48_calc_checksum(content) + =3D=3D ((const uint8_t *)content)[F48_CONTENT_LENGTH]; +} --=20 2.17.0