From nobody Wed Oct 29 22:59:19 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 15258379020971020.2179501187335; Tue, 8 May 2018 20:51:42 -0700 (PDT) Received: from localhost ([::1]:54285 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGG8j-00083w-AH for importer@patchew.org; Tue, 08 May 2018 23:51:41 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58464) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fGG4W-0004Ph-CE for qemu-devel@nongnu.org; Tue, 08 May 2018 23:47:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fGG4V-0002YP-Bo for qemu-devel@nongnu.org; Tue, 08 May 2018 23:47:20 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:37782) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fGG4V-0002Xh-7K for qemu-devel@nongnu.org; Tue, 08 May 2018 23:47:19 -0400 Received: by mail-qk0-x243.google.com with SMTP id d74so26465645qkg.4 for ; Tue, 08 May 2018 20:47:19 -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.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 May 2018 20:47:18 -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=ZyPoDSAfaMuOvbVhgz9SMeG+Xb8aw2npbzngXTVH2AA=; b=ZjD2UbvNhjSNBUe7RyiRDKB8R6z5e5/5ypX9S6FtbKL0B6OZM6TpuXz6HdY7Ar7gub sldR6GpO82dSqEv+5MRE9DBiGq5KTHZXG3r9kjdZ57EwFIPuQMIeyqdTrB04CuKak4q9 sR1jUYZtqy0LU3fnzfdQt1fkyEvRhtSfXbCDwUwXKgdX+UVk23XQjD0LoQd2UoQQZvay 2KIEC671ldC1HjoZmpBzktPP0eLR75hjeBldDI4YJwvInwknvQ9Zbj6yfgXDF9AcWeHx qWnRaZtVZBrRRlFjBP9rXEvCxE5mmVc9SI5c6whIZ4vLe+avgAy1/Re44cgscx+gFr4U gvHA== 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=ZyPoDSAfaMuOvbVhgz9SMeG+Xb8aw2npbzngXTVH2AA=; b=ujfqAysCuGyF32owoW2F68IlTxEXWyGR3WU1yqi57XoYaZmpvZrswkS8nTB7lWJiMx H6K6iZKzYAFF8b2RzrJwB5O8dVSxJgfIcGBb9qBjWhMF5QLBwWRAi/KSO3h5nqRn/YUV UcPwS7yrxUJzyag4uNl4/0S2v1QVx1ZYm41o9QO5iTPtQ+tksk9+GWn64tUuxEWR5yiq js/FlEyCVEqAP2dY8Y1oaFRYJ5OYYa4tP6JzQRzhPrxueu7e7Ke8FjLOyGqOksqJuJz+ bYyHg5Xpo1rGUTBRDY2c5NBVHuPTjroz/S0STLaK3R75fetfuRpR1RwfCvEglpS6+9Kh de2A== X-Gm-Message-State: ALQs6tD08rlvZNEMsaYr5tGRPQ82lZbB7jB8tjTgZbLC5l/GB2ORZ3Jv jt6JSdkrnie6nbQD9q3b8T8= X-Google-Smtp-Source: AB8JxZppi9eGjegiD2s5GLnSXdMNUlFY2nrGJo6WSeyiQhcMNGG3jN4fZP8nf+aV4RfsnI959vCyXg== X-Received: by 10.55.95.196 with SMTP id t187mr37451893qkb.62.1525837638553; Tue, 08 May 2018 20:47:18 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Wed, 9 May 2018 00:46:48 -0300 Message-Id: <20180509034658.26455-5-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::243 Subject: [Qemu-devel] [PATCH v2 04/14] sdcard: Extract sd_frame48/136_calc_checksum() 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 It will help when moving this around for qtesting in the next commit. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sd.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 27a70896cd..06607115a7 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -273,6 +273,21 @@ static uint16_t sd_crc16(const void *message, size_t w= idth) return shift_reg; } =20 +enum { + F48_CONTENT_LENGTH =3D 1 /* command */ + 4 /* argument */, + F136_CONTENT_LENGTH =3D 15, +}; + +static uint8_t sd_frame48_calc_checksum(const void *content) +{ + return sd_crc7(content, F48_CONTENT_LENGTH); +} + +static uint8_t sd_frame136_calc_checksum(const void *content) +{ + return (sd_crc7(content, F136_CONTENT_LENGTH) << 1) | 1; +} + #define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ =20 FIELD(OCR, VDD_VOLTAGE_WINDOW, 0, 24) @@ -352,7 +367,7 @@ static void sd_set_cid(SDState *sd) sd->cid[13] =3D 0x00 | /* Manufacture date (MDT) */ ((MDT_YR - 2000) / 10); sd->cid[14] =3D ((MDT_YR % 10) << 4) | MDT_MON; - sd->cid[15] =3D (sd_crc7(sd->cid, 15) << 1) | 1; + sd->cid[15] =3D sd_frame136_calc_checksum(sd->cid); } =20 #define HWBLOCK_SHIFT 9 /* 512 bytes */ @@ -416,7 +431,7 @@ static void sd_set_csd(SDState *sd, uint64_t size) sd->csd[13] =3D 0x40; sd->csd[14] =3D 0x00; } - sd->csd[15] =3D (sd_crc7(sd->csd, 15) << 1) | 1; + sd->csd[15] =3D sd_frame136_calc_checksum(sd->csd); } =20 static void sd_set_rca(SDState *sd) @@ -491,7 +506,7 @@ static int sd_req_crc_validate(SDRequest *req) buffer[0] =3D 0x40 | req->cmd; stl_be_p(&buffer[1], req->arg); return 0; - return sd_crc7(buffer, 5) !=3D req->crc; /* TODO */ + return sd_frame48_calc_checksum(buffer) !=3D req->crc; /* TODO */ } =20 static void sd_response_r1_make(SDState *sd, uint8_t *response) --=20 2.17.0