From nobody Wed Oct 29 20:36:33 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 152544991531022.194412609717574; Fri, 4 May 2018 09:05:15 -0700 (PDT) Received: from localhost ([::1]:35043 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdCp-0006fW-4O for importer@patchew.org; Fri, 04 May 2018 12:05:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54806) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7Q-0002RL-9J for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7O-0001Pf-I6 for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:36 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:43334) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7O-0001PL-DK for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:34 -0400 Received: by mail-qk0-x243.google.com with SMTP id h19so16976164qkj.10 for ; Fri, 04 May 2018 08:59:34 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.08.59.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 08:59:29 -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=RQTpAJ52w58SUS1U6gF4bCSfJNwalAVxvfMYpKTP1bg=; b=qVE1ckAJUzrM9v28P0dAsuvzyyxj0cbFy9qPn3rBRA9BuLR2soCa61QmMqYuk7qaSJ DGmPAtKymZ8u4VDNtxvb9FDJADQ+aAXF3G8SBWz4scN8SpLWNanvO8kmUuXLdjBhqOM9 7h1Vuq2gLOZG+uRH4xlx9CeY+2lBjvWH5sZ3/kKKQzuS+2h+kOAH3Uu9Id7IXlXbPEde BphBa2kXYeMIhiOFAqo51GmwHxCU6vJEu16V4R2ErN6D9ETge5ZB5rKcKif+Z60FMY+z jMhdgo4Ythod+noVOdFhkEC4nWWIATx5WwoUJWlDwvXyU/X1/m/66lUpdXQv0xG4lFCj uWWA== 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=RQTpAJ52w58SUS1U6gF4bCSfJNwalAVxvfMYpKTP1bg=; b=Wg7NUEZ5kYik97Q5dl1V6mX6uxP5bCnkh7IJygj8SnPlQXoALGN4rQzLmxnW/ZsqNM 1BHjdx2AC8AaegX6GaN8XDtacA1KJjrXSoO+ic5N2xQ0nTj/YRcEZx2U3B0N1+FtYRHF 0KGjCtu4Wc6LTEnSaLHPQbVkjFX63uQaSRYYdO9CinqAK3VThyPi3RIY9zw7PlGtK9Nh Hr6mf15P4jQ6CvzMYvx0dMYtsJL90jNQrtOH+f807rfKUKzPrQQVd9tSkkysCqR44X3b NsV4mlwR7qCkrS2aVJwNBwn7j+/nfAP4TCknqVtgyykSI8Q81PFajgBXmTaqQfLU4ySB lpNQ== X-Gm-Message-State: ALQs6tCIegoJnbPzb4DH/uQPBM7yW1tYGtHCQBsW3xOK9ig7qkjpV09s gjVXuXmTtsRhmh8aWG+JSGw= X-Google-Smtp-Source: AB8JxZrLjA/N5EawnDT5uyJ66+ztudp4qyXo71VWe33Eu8Lk8QpNbFAs1plpoNjJQRzedbayfAJR8Q== X-Received: by 10.55.31.234 with SMTP id n103mr22562126qkh.412.1525449569860; Fri, 04 May 2018 08:59:29 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:58:59 -0300 Message-Id: <20180504155918.21287-2-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 01/20] sdcard: Use the ldst API 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: Alistair Francis , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Michael Walle , Stefan Hajnoczi , Paolo Bonzini 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 load/store API will ease further code movement. Per the Physical Layer Simplified Spec. "3.6 Bus Protocol": "In the CMD line the Most Significant Bit (MSB) is transmitted first, the Least Significant Bit (LSB) is the last." Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/milkymist-memcard.c | 3 +-- hw/sd/ssi-sd.c | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c index 5570c1e9a0..ff2b92dc64 100644 --- a/hw/sd/milkymist-memcard.c +++ b/hw/sd/milkymist-memcard.c @@ -100,8 +100,7 @@ static void memcard_sd_command(MilkymistMemcardState *s) SDRequest req; =20 req.cmd =3D s->command[0] & 0x3f; - req.arg =3D (s->command[1] << 24) | (s->command[2] << 16) - | (s->command[3] << 8) | s->command[4]; + req.arg =3D ldl_be_p(s->command + 1); req.crc =3D s->command[5]; =20 s->response[0] =3D req.cmd; diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c index ae04b6641b..0bb26e596d 100644 --- a/hw/sd/ssi-sd.c +++ b/hw/sd/ssi-sd.c @@ -97,8 +97,7 @@ static uint32_t ssi_sd_transfer(SSISlave *dev, uint32_t v= al) uint8_t longresp[16]; /* FIXME: Check CRC. */ request.cmd =3D s->cmd; - request.arg =3D (s->cmdarg[0] << 24) | (s->cmdarg[1] << 16) - | (s->cmdarg[2] << 8) | s->cmdarg[3]; + request.arg =3D ldl_be_p(s->cmdarg); DPRINTF("CMD%d arg 0x%08x\n", s->cmd, request.arg); s->arglen =3D sdbus_do_command(&s->sdbus, &request, longresp); if (s->arglen <=3D 0) { --=20 2.17.0 From nobody Wed Oct 29 20:36:33 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 1525449894889165.2423679104104; Fri, 4 May 2018 09:04:54 -0700 (PDT) Received: from localhost ([::1]:35041 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdCY-0006DW-3x for importer@patchew.org; Fri, 04 May 2018 12:04:54 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54807) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7Q-0002RM-9K for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7O-0001PB-1v for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:36 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:41210) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7N-0001Ox-Tm for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:33 -0400 Received: by mail-qt0-x242.google.com with SMTP id g13-v6so27949892qth.8 for ; Fri, 04 May 2018 08:59:33 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.08.59.30 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 08:59:31 -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=/ploRBYZN6FuaOwvNSKk25JzVkWEximfBIgwCdBU0kU=; b=TmpuwraF9Xgqmc99yf7seIqjHulqPyfoPgVulvO1R6gZJI/SbiqT8TLPMItUDzVBzx HXzty7nctgrw1DKQIhxmAdVVZ7+thm/CsnM4QSRsCK7BrEyORj3mE5aU8cMIKqmLtNPB 2W5Zc+kP6hS79UpO6fkoFbRDlEGGS0dYDooAd4WSM3KjoiB9Pn/U8FqjM/inPwLqZG/Q l7efNO7/h62/8EG5aaE4aVYHmzU3vBYoXvPIY7HurksEQbAY/85N0/r9nGMx+iI7dGZu zRqXoasIEXl9pqzqAktSodimC9XleEOOhM5awbg+ExKCyfinXxz7muDs/ZMZjbPyILGa +2Hw== 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=/ploRBYZN6FuaOwvNSKk25JzVkWEximfBIgwCdBU0kU=; b=tGz6WDZfJonam8zMR+xQ9wV2y7q6XD0bziybmUEW0+IkGbERbD2EhEwfRHh6Ofe/9s V7vs0nhABtjjIDIzGD18qzSkZBWhVmJ/e8BJTSOb0rPJknWfO7J+CxClrdi/hPGIzJFF PxJIBWOifPTS6Vf40NXAiKAeV4FW61PTceB3acNCUUZeJLvvH07qal+C3ZJFxDp4djzr tIF0b6Ww486r3EWpkVxor/7/f9pG3RgpnswUpEEf/v6OGKx/pJD0e4OQvf8eJ8Qr7iw7 qQKwVtIRkFOxzFWJrFOcgVV+/Hi7E+9vwISQo9IKaXR/d6DCd940czCxOjjJgf+CmCCD +H6Q== X-Gm-Message-State: ALQs6tAVh8k34SN3q3MRawMEf9FVCwVTsxw0QFlFp482Q72o3jbLzMqA rwM2WrXflPhWbnU8RYKqQGg= X-Google-Smtp-Source: AB8JxZonoQFxr/aB8KcpdtyBop3I2MQ3q+SvVszUM3GtWadUb4JT0Dfhfz/G9jsTmo3xDWTyfQJ35Q== X-Received: by 2002:a0c:ba97:: with SMTP id x23-v6mr23684941qvf.112.1525449573303; Fri, 04 May 2018 08:59:33 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:00 -0300 Message-Id: <20180504155918.21287-3-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 02/20] sdcard: Extract sd_calc_frame48_crc7() from sd_req_crc_validate() 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 Extract calculate() from validate() so we can calculate the CRC out of the validate() function. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 235e0518d6..861bba197d 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -481,13 +481,18 @@ static void sd_set_sdstatus(SDState *sd) memset(sd->sd_status, 0, 64); } =20 -static int sd_req_crc_validate(SDRequest *req) +static uint8_t sd_calc_frame48_crc7(uint8_t cmd, uint32_t arg) { uint8_t buffer[5]; - buffer[0] =3D 0x40 | req->cmd; - stl_be_p(&buffer[1], req->arg); + buffer[0] =3D 0x40 | cmd; + stl_be_p(&buffer[1], arg); + return sd_crc7(buffer, sizeof(buffer)); +} + +static int sd_req_crc_validate(SDRequest *req) +{ return 0; - return sd_crc7(buffer, 5) !=3D req->crc; /* TODO */ + return sd_calc_frame48_crc7(req->cmd, req->arg) !=3D req->crc; /* TODO= */ } =20 static void sd_response_r1_make(SDState *sd, uint8_t *response) --=20 2.17.0 From nobody Wed Oct 29 20:36:33 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 1525449711312991.7814156952053; Fri, 4 May 2018 09:01:51 -0700 (PDT) Received: from localhost ([::1]:35021 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd9Y-0003rT-Fo for importer@patchew.org; Fri, 04 May 2018 12:01:48 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54839) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7R-0002SR-GF for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7Q-0001RO-Qz for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:37 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:44337) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7Q-0001Qx-Mn for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:36 -0400 Received: by mail-qt0-x243.google.com with SMTP id d3-v6so27912864qtp.11 for ; Fri, 04 May 2018 08:59:36 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.08.59.33 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 08:59:35 -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=5aqbhsgHCCjJfifDH1qGloIHvlHvJDa3Lmhz/H9lDWM=; b=TvuFZ8nl03kdDM0Oo2/IghQGFD+WxnnILG4K5c+PN0s0Je/fF8tNrKn/nnxFzGcOAf 2v5X3KJ81YQCrbCpByk6tWqwC3rmrEFNIns7jOtuc2/rnH6xcKeNY1fqFpyDE7groz+2 SwriPI8KyUATJRsq4GJ4ceWrW/n30v8AMAC7FdpmerlEb5QvI6+vgEX5slOIKFecd6n9 UAbj72nyQztVHtFXmXY+TcY4Seo3NjmptcOEm7+1YDb6LYl3t2jabWqGrUSKkuQaWfhf qNZJewDj3++0cuhPbeju/P+vhIC4M/umWhO3ZPHy/LSMbEfrCtXFdvC4jFCfJt/yy4wa Pz3A== 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=5aqbhsgHCCjJfifDH1qGloIHvlHvJDa3Lmhz/H9lDWM=; b=QemH0iwjNiEB+XcuzIntHzaZulpoTez70jZdKMcikCEFcx43YCuJNb4anMlnprm1L8 irK6OH9PCFwfqSkPsrQdik9kKr8AwFzOq022JZRM25sgg6pOtlO23Hav6MoEJYNz4Pa1 TwqJi64LFxqcYRbmNHcEaJFncDofRNmwDHwIaA5pDl63axcz4147AaSFw+77dtYILkrs wQOVxlcdiZspm0lAcjJi6Z3C0ppUUJLHR0O1PKXUw0vHu2rXSFnc7l8Jqk7psX+pqAYo YoePJtKq7tuAL+zLA69P1IaIfK3jwprwcfyVooDwurEXdkzXVnRuf09Apt2yCGPgFF54 1G/A== X-Gm-Message-State: ALQs6tCH2BphWDmT2JINRSU9kEK0Ra68ahJBpTb8+5cHry9Pqq57JK+m EaDWQ2vJ5hS/Od5Wm+WcjCA= X-Google-Smtp-Source: AB8JxZo1uUdneBEHm75/Az3WCbNn4F25Jy5YBLU34+7Ul2S1i02CrSzPxenFG+v2Z9rawnTaUU1GSg== X-Received: by 2002:ac8:7259:: with SMTP id l25-v6mr24087218qtp.325.1525449576102; Fri, 04 May 2018 08:59:36 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:01 -0300 Message-Id: <20180504155918.21287-4-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 03/20] sdcard: Rename the SDRequest as SDFrame48 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 SD requests are 48-bit SD frames, while SD responses can be 48-bit or 136-bit frames. The 48-bit response frames share the same CRC logic than request frames. Unify the 48-bit framing to reuse the same CRC logic between requests and responses. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/sd/sd.h | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index 9bdb3c9285..f0b41232f7 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -76,11 +76,22 @@ typedef enum { sd_adtc, /* addressed with data transfer */ } sd_cmd_type_t; =20 -typedef struct { +/** + * SDFrame48: 48 bits commands or responses + * + * @cmd: request: command + * response: mirrored command + * @arg: request: address information or parameter + * response: status information, OCR register, RCA + * @crc: 7-bit CRC checksum + */ +typedef struct SDFrame48 { uint8_t cmd; uint32_t arg; uint8_t crc; -} SDRequest; +} SDFrame48; + +typedef struct SDFrame48 SDRequest; =20 typedef struct SDState SDState; typedef struct SDBus SDBus; --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525450104213886.2045525623577; Fri, 4 May 2018 09:08:24 -0700 (PDT) Received: from localhost ([::1]:35072 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdFq-0000kg-Bv for importer@patchew.org; Fri, 04 May 2018 12:08:18 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54888) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7U-0002VN-M8 for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7T-0001TL-MX for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:40 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:40071) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7T-0001TD-I7 for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:39 -0400 Received: by mail-qt0-x241.google.com with SMTP id h2-v6so27972701qtp.7 for ; Fri, 04 May 2018 08:59:39 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.08.59.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 08:59:38 -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=tip5E7RafT6MoDrialGShF+ieHLTF658Lmvgy3Hq1K8=; b=h6N5Cmc/t2+FOIiNjXU8+Kr53YalwI1gvcqJz94KZ0dDtRu8Ecwu/jQf4MgfbEzLbu iYi3LzaL+sT6Mb43JghS5wqwfXcUvq+6CEFKpiH8W/+AZww9G07OU5s6GJtZL6NUjWih hkjZBsgndBicD5/2UY/S4G3do1FVpcg6L8AXhAeeFYoQiTu4EVmW1ubGQrqBbARnZwyG Gj+/Jh5N19yqv9xLWEAb6XrJfaW3eO4sAN+cy884lxNpOC/EnSJ1s8DbIfkIgPYNQvUj KAWiw17yfHunDjc4FThjqfKRG5hByMoa+0wemh6w2Kvk83nZ+ZRAVXaEqDOD2jdeo5qN WUIw== 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=tip5E7RafT6MoDrialGShF+ieHLTF658Lmvgy3Hq1K8=; b=taaMFI7Eeg9cIzIyXzJXl/JrJyNm/Z5tYdFIdzhv5yUh83pbUV2EsWmaKLGVWHxxS2 jQOA7x1uJKwD80L+xLsD9mAxwnIi6Ax25Y4ggvF+bmsDagVUU9qADYuEP1zuiCbvgLwN ETXUpFgULW16AbTuTTNoz1VZ4Qi5zfgOCXKFgIEB8NXm4FUtoUycDdMq5fHLkIcHfvKh dmPwP45fT3wmf7nVf+8KjyUrgl/ImeAVgBqAL7gfLlqquNMJhKc+doL8WTcgoU8MYvKf pGCOQOBm/h5GHr4nJAksbdo2Il9BPqvBW97dHRHusWmRdEEUHEPbFXF+Eb4VAvDX9eBt H20g== X-Gm-Message-State: ALQs6tAEMrFIgpw3UVohNWDmckzdsyvxsKOE+3fQDKjfPA+MKCGcefI4 T0Mr4sDy7IQgnbmCuLbUtzI= X-Google-Smtp-Source: AB8JxZrJEhVRDjY4PBLxHRJX0l3MJnBHI7G4mHW+m0fp41xTFLHg7bb5cgEbCCL3GiWrXxetP286DQ== X-Received: by 2002:a0c:989b:: with SMTP id f27-v6mr12274360qvd.115.1525449578911; Fri, 04 May 2018 08:59:38 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:02 -0300 Message-Id: <20180504155918.21287-5-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 04/20] sdcard: Add sd_prepare_request[_with_crc]() 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 The sd_prepare_request*() functions fill all the request frame members. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/sd/sd.h | 27 +++++++++++++++++++++++++++ hw/sd/sd.c | 37 ++++++++++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index f0b41232f7..7d9c906897 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -141,6 +141,33 @@ typedef struct { void (*set_readonly)(DeviceState *dev, bool readonly); } SDBusClass; =20 +/** + * sd_prepare_request: + * @req: the #SDRequest to be filled + * @cmd: the SD command + * @arg: the SD command argument + * @gen_crc: generates the frame CRC7 if true, else fill with zeroes + * + * Initialize a SD request buffer. + * + * If @gen_crc the frame checksum will be calculated + * and filled in the request buffer. + */ +void sd_prepare_request(SDRequest *req, uint8_t cmd, uint32_t arg, + bool gen_crc); + +/** + * sd_prepare_request_with_crc: + * @req: the #SDRequest to be filled + * @cmd: the SD command + * @arg: the SD command argument + * @crc: the calculated request CRC7 + * + * Initialize a SD request buffer. + */ +void sd_prepare_request_with_crc(SDRequest *req, uint8_t cmd, uint32_t arg, + uint8_t crc); + /* 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 861bba197d..be75e118c0 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -489,10 +489,45 @@ static uint8_t sd_calc_frame48_crc7(uint8_t cmd, uint= 32_t arg) return sd_crc7(buffer, sizeof(buffer)); } =20 +static bool sd_verify_frame48_checksum(SDFrame48 *frame) +{ + uint8_t crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg); + + return crc =3D=3D frame->crc; +} + static int sd_req_crc_validate(SDRequest *req) { return 0; - return sd_calc_frame48_crc7(req->cmd, req->arg) !=3D req->crc; /* TODO= */ + return !sd_verify_frame48_checksum(req); /* TODO */ +} + +static void sd_update_frame48_checksum(SDFrame48 *frame) +{ + frame->crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg); +} + +static void sd_prepare_frame48(SDFrame48 *frame, uint8_t cmd, uint32_t arg, + bool gen_crc) +{ + frame->cmd =3D cmd; + frame->arg =3D arg; + frame->crc =3D 0x00; + if (gen_crc) { + sd_update_frame48_checksum(frame); + } +} + +void sd_prepare_request(SDFrame48 *req, uint8_t cmd, uint32_t arg, bool ge= n_crc) +{ + sd_prepare_frame48(req, cmd, arg, gen_crc); +} + +void sd_prepare_request_with_crc(SDRequest *req, uint8_t cmd, uint32_t arg, + uint8_t crc) +{ + sd_prepare_frame48(req, cmd, arg, /* gen_crc */ false); + req->crc =3D crc; } =20 static void sd_response_r1_make(SDState *sd, uint8_t *response) --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 15254501454721016.396083547341; Fri, 4 May 2018 09:09:05 -0700 (PDT) Received: from localhost ([::1]:35080 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdGa-0001LC-N3 for importer@patchew.org; Fri, 04 May 2018 12:09:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54951) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7b-0002bG-NQ for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7W-0001Uu-T8 for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:47 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:45535) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7W-0001Ui-O5; Fri, 04 May 2018 11:59:42 -0400 Received: by mail-qt0-x241.google.com with SMTP id j42-v6so27941038qtj.12; Fri, 04 May 2018 08:59:42 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.08.59.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 08:59:41 -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=AhZTNnmz2bExtwkTHOFywLwZ1lgVO/zx2vNRoK/6NTs=; b=n4sFDJxR5fzjfK6EPh5th25Kd6+K9PUHKD7MG0jsuMiUiIptNU5JqBtJX9tOfEbC2G dEgdNwlPIGQm9Z2Sv7U+MIV7C7cSryHqqN7xZfxJ/s9dMEO9PIcGCLJHpSyeALt5IT06 GW6Wv6SSsJ86pIkY3BpQALjO2t1eCjPj5TBPebXwhyb0MeQqin4qpRhgpibcqcPg/8ft CJl3RyWgd5A2VlzEHPv6i42AuWQ8IU5rF6kWbTarnxkmpdyQlqjW+DhFlg4e65wx+GtG 3STzfGcwbSEC1GNx+KOwU7su9tZv3PzjIGAqZM1Su2nD8QIzow/2Pnyl7zReIA9LjORn A5KA== 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=AhZTNnmz2bExtwkTHOFywLwZ1lgVO/zx2vNRoK/6NTs=; b=BBR8WpdmiSAnk4VFkyY0VCW+1+79arfix6sE6J8/uLC85v2aSsd3UBOACAjnK2qI3y zXiV+E4UGtc+hgIle2pxY1mH3RYU1xv3wXrHluw62kxI5st+2qcOJOeIN6GBC8xHng9y jzTDOdTBFRvfHWDB9ZaIt+f4ttHZk5hx/YZZCgBF6GOST6v0RJmR48XlPe5u5+eiZQpL nVqSxVm914WKPGfWdx2unxogWyygPFzNdL5NrxVY9Ts6XFa58aa4gbdRnKY///ArZSfo GDO5GqrNSWBy7XRGJHiuUDLx8/ufODgTwmAhwO2fIcuK0XhW3t+29YK8TQsNQv/IIbqX ILug== X-Gm-Message-State: ALQs6tC6391kYok89taVcFQbKzMIds+ZQDcM+nvE69vIb+e2H4rfxWUn euMFdkLYEns2W1ivobvvDHw= X-Google-Smtp-Source: AB8JxZpZ7K9dJ6LEJrUc6rOJgYU36l1/E35DmQ6m4XJSef28q2IQnGnLw0gBFPMgDEQ9gRToqnX+vw== X-Received: by 2002:ac8:35b0:: with SMTP id k45-v6mr23023286qtb.81.1525449582158; Fri, 04 May 2018 08:59:42 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:03 -0300 Message-Id: <20180504155918.21287-6-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 05/20] sdcard: Use the sd_prepare_request*() functions 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: Alistair Francis , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Michael Walle , "open list:PXA2XX" , Stefan Hajnoczi , Paolo Bonzini 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 guaranties all SDRequest members are initialized. This silent the Coverity warning: "Use of an uninitialized variable (CWE-457)" and fixes the following issues (all "Uninitialized scalar variable"): - CID1386072 (hw/sd/sdhci.c::sdhci_end_transfer) - CID1386074 (hw/sd/bcm2835_sdhost.c::bcm2835_sdhost_send_command) - CID1386076 (hw/sd/sdhci.c::sdhci_send_command) - CID1390571 (hw/sd/ssi-sd.c::ssi_sd_transfer) Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/bcm2835_sdhost.c | 3 +-- hw/sd/milkymist-memcard.c | 7 +++---- hw/sd/omap_mmc.c | 4 +--- hw/sd/pxa2xx_mmci.c | 4 +--- hw/sd/sdhci.c | 6 ++---- hw/sd/ssi-sd.c | 5 ++--- 6 files changed, 10 insertions(+), 19 deletions(-) diff --git a/hw/sd/bcm2835_sdhost.c b/hw/sd/bcm2835_sdhost.c index ebf3b926c2..5134d7b5c7 100644 --- a/hw/sd/bcm2835_sdhost.c +++ b/hw/sd/bcm2835_sdhost.c @@ -110,8 +110,7 @@ static void bcm2835_sdhost_send_command(BCM2835SDHostSt= ate *s) uint8_t rsp[16]; int rlen; =20 - request.cmd =3D s->cmd & SDCMD_CMD_MASK; - request.arg =3D s->cmdarg; + sd_prepare_request(&request, s->cmd & SDCMD_CMD_MASK, s->cmdarg, false= ); =20 rlen =3D sdbus_do_command(&s->sdbus, &request, rsp); if (rlen < 0) { diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c index ff2b92dc64..d8cbb7b681 100644 --- a/hw/sd/milkymist-memcard.c +++ b/hw/sd/milkymist-memcard.c @@ -99,10 +99,9 @@ static void memcard_sd_command(MilkymistMemcardState *s) { SDRequest req; =20 - req.cmd =3D s->command[0] & 0x3f; - req.arg =3D ldl_be_p(s->command + 1); - req.crc =3D s->command[5]; - + sd_prepare_request_with_crc(&req, s->command[0] & 0x3f, + ldl_be_p(s->command + 1), + s->command[5]); s->response[0] =3D req.cmd; s->response_len =3D sdbus_do_command(&s->sdbus, &req, s->response + 1); s->response_read_ptr =3D 0; diff --git a/hw/sd/omap_mmc.c b/hw/sd/omap_mmc.c index 5b47cadf11..7b71984115 100644 --- a/hw/sd/omap_mmc.c +++ b/hw/sd/omap_mmc.c @@ -135,9 +135,7 @@ static void omap_mmc_command(struct omap_mmc_s *host, i= nt cmd, int dir, mask =3D 0; rspstatus =3D 0; =20 - request.cmd =3D cmd; - request.arg =3D host->arg; - request.crc =3D 0; /* FIXME */ + sd_prepare_request(&request, cmd, host->arg, false /* FIXME */); =20 rsplen =3D sd_do_command(host->card, &request, response); =20 diff --git a/hw/sd/pxa2xx_mmci.c b/hw/sd/pxa2xx_mmci.c index 82f8ec0d50..fd5c1e7686 100644 --- a/hw/sd/pxa2xx_mmci.c +++ b/hw/sd/pxa2xx_mmci.c @@ -224,9 +224,7 @@ static void pxa2xx_mmci_wakequeues(PXA2xxMMCIState *s) s->tx_len =3D 0; s->cmdreq =3D 0; =20 - request.cmd =3D s->cmd; - request.arg =3D s->arg; - request.crc =3D 0; /* FIXME */ + sd_prepare_request(&request, s->cmd, s->arg, false /* FIXME */); =20 rsplen =3D sdbus_do_command(&s->sdbus, &request, response); s->intreq |=3D INT_END_CMD; diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 63c44a4ee8..9260f59e80 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -336,8 +336,7 @@ static void sdhci_send_command(SDHCIState *s) =20 s->errintsts =3D 0; s->acmd12errsts =3D 0; - request.cmd =3D s->cmdreg >> 8; - request.arg =3D s->argument; + sd_prepare_request(&request, s->cmdreg >> 8, s->argument, false); =20 trace_sdhci_send_command(request.cmd, request.arg); rlen =3D sdbus_do_command(&s->sdbus, &request, response); @@ -393,8 +392,7 @@ static void sdhci_end_transfer(SDHCIState *s) SDRequest request; uint8_t response[16]; =20 - request.cmd =3D 0x0C; - request.arg =3D 0; + sd_prepare_request(&request, 12, 0, false); trace_sdhci_end_transfer(request.cmd, request.arg); sdbus_do_command(&s->sdbus, &request, response); /* Auto CMD12 response goes to the upper Response register */ diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c index 0bb26e596d..c22967170c 100644 --- a/hw/sd/ssi-sd.c +++ b/hw/sd/ssi-sd.c @@ -95,9 +95,8 @@ static uint32_t ssi_sd_transfer(SSISlave *dev, uint32_t v= al) if (s->arglen =3D=3D 4) { SDRequest request; uint8_t longresp[16]; - /* FIXME: Check CRC. */ - request.cmd =3D s->cmd; - request.arg =3D ldl_be_p(s->cmdarg); + sd_prepare_request(&request, s->cmd, + ldl_be_p(s->cmdarg), false /* FIXME */); DPRINTF("CMD%d arg 0x%08x\n", s->cmd, request.arg); s->arglen =3D sdbus_do_command(&s->sdbus, &request, longresp); if (s->arglen <=3D 0) { --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 15254497270561002.8318074755057; Fri, 4 May 2018 09:02:07 -0700 (PDT) Received: from localhost ([::1]:35023 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd9q-000485-8v for importer@patchew.org; Fri, 04 May 2018 12:02:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54953) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7b-0002bI-OD for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7Z-0001Wu-SL for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:47 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:39864) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7Z-0001Wj-Nf for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:45 -0400 Received: by mail-qt0-x243.google.com with SMTP id f1-v6so27972559qtj.6 for ; Fri, 04 May 2018 08:59:45 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.08.59.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 08:59:44 -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=cZB3q2MGhsMr/Chp0t+dwNNsFzETEC/4z4LnWruuBf8=; b=U5GR38iIQTfwYkWrmp1aLGnw3aDJonioPHbeQ4l6fG2ZQdEDImwqgLztWYaav//DAX o0Z/5zqtn1JpQ3T8BqAkxW8RyyX/qU3BkO+WB6hSqACdFnT2hHooa/Pc2VsihExu0lXN oM1fm+ncD2zKxKKWPo48QdO3DEqRhR9wGCaPqm4JUKbgtmFUJxkc1Pj/oPMy7uo38sUO 1Qyhz1jPGXgcOxvW8QvW09PEav4mGRxM1fJM6+uMRRR9/iCxL40pGWONIIbo1nEx4dlZ 1oeci1jC0acvXqeACWX1yAdu0JViGvaiQNHOPMLHYyHk4HtUzgLwJMpCfBdJ/ogBw7pu 0Mww== 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=cZB3q2MGhsMr/Chp0t+dwNNsFzETEC/4z4LnWruuBf8=; b=jVlgCbR3iyXIVlPWANlyNrweiTdS7etl0a9/DKATkNN6pljZyAp95O1a5hFdaXGFkQ j/R6FV3YT+r01I/F6cy8ve7+7amdrWr9/c9BnczEiwV+/t/5oyemVkZbr0pkaQ6ZuGEG 0/KMKcVYIFv2WvVOgGEqEkm6p/9FBeCiwrdcM4h5/NYoGNfbQyn7cpeuKFanOzyDX4Pa sv5nEs6euWGKe1H0RiuPUmzXUQQ9oHMplP3CbGLbT7b2jnYpXmMDTEVG73qdimG6ub2W ojeAjZrfN4zQO1RchetHYeT7YPZhye8NUVbT7I+CXzplbIDDDxB8NYELSuCuv9TJ5RoF 33BQ== X-Gm-Message-State: ALQs6tCEMSgrIYeVxTsr88NkuazPfWCfRucjYzcMw5g9ZB9V4rJxA168 o6SwY7nuvyUUdDGBv//B5TbvO1nx X-Google-Smtp-Source: AB8JxZrVxSUsqAhqR/vc8fdewgO3E/eBt4AdBVuX6eHsFJ9/xMVv0EzxDBDhGoeOBwKUao1U4DRvkw== X-Received: by 2002:aed:3704:: with SMTP id i4-v6mr23646930qtb.234.1525449585151; Fri, 04 May 2018 08:59:45 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:04 -0300 Message-Id: <20180504155918.21287-7-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 06/20] sdcard: Add a "validate-crc" property 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: Alistair Francis , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Michael Walle , Stefan Hajnoczi , Paolo Bonzini 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 Since not all modelled controllers use the CRC verification (which is somehow expensive), let the controller have a configurable property to enable verification. So far only the Milkymist controller uses it. This silent the Coverity warning: "Code block is unreachable because of the syntactic structure of the code= (CWE-561)" and fixes the following issue: - CID1005332 (hw/sd/sd.c::sd_req_crc_validate) Structurally dead code Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/milkymist-memcard.c | 1 + hw/sd/sd.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c index d8cbb7b681..04babc092f 100644 --- a/hw/sd/milkymist-memcard.c +++ b/hw/sd/milkymist-memcard.c @@ -278,6 +278,7 @@ static void milkymist_memcard_realize(DeviceState *dev,= Error **errp) blk =3D dinfo ? blk_by_legacy_dinfo(dinfo) : NULL; carddev =3D qdev_create(&s->sdbus.qbus, TYPE_SD_CARD); qdev_prop_set_drive(carddev, "drive", blk, &err); + object_property_set_bool(OBJECT(carddev), true, "validate-crc", &err); object_property_set_bool(OBJECT(carddev), true, "realized", &err); if (err) { error_setg(errp, "failed to init SD card: %s", error_get_pretty(er= r)); diff --git a/hw/sd/sd.c b/hw/sd/sd.c index be75e118c0..801ddc2cb5 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -93,6 +93,7 @@ struct SDState { /* Configurable properties */ BlockBackend *blk; bool spi; + bool validate_crc; =20 uint32_t mode; /* current card mode, one of SDCardModes */ int32_t state; /* current card state, one of SDCardStates */ @@ -496,10 +497,12 @@ static bool sd_verify_frame48_checksum(SDFrame48 *fra= me) return crc =3D=3D frame->crc; } =20 -static int sd_req_crc_validate(SDRequest *req) +static bool sd_req_crc_validate(SDState *sd, SDRequest *req) { - return 0; - return !sd_verify_frame48_checksum(req); /* TODO */ + if (sd->validate_crc) { + return sd_verify_frame48_checksum(req); + } + return true; } =20 static void sd_update_frame48_checksum(SDFrame48 *frame) @@ -1685,7 +1688,7 @@ int sd_do_command(SDState *sd, SDRequest *req, return 0; } =20 - if (sd_req_crc_validate(req)) { + if (!sd_req_crc_validate(sd, req)) { sd->card_status |=3D COM_CRC_ERROR; rtype =3D sd_illegal; goto send_response; @@ -2134,6 +2137,7 @@ static Property sd_properties[] =3D { * board to ensure that ssi transfers only occur when the chip select * is asserted. */ DEFINE_PROP_BOOL("spi", SDState, spi, false), + DEFINE_PROP_BOOL("validate-crc", SDState, validate_crc, false), DEFINE_PROP_END_OF_LIST() }; =20 --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 152545026672587.6263239724226; Fri, 4 May 2018 09:11:06 -0700 (PDT) Received: from localhost ([::1]:35106 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdIY-0003YA-1q for importer@patchew.org; Fri, 04 May 2018 12:11:06 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54985) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7e-0002dG-0v for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7d-0001ZS-BV for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:50 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:41213) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7d-0001Yx-77 for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:49 -0400 Received: by mail-qt0-x241.google.com with SMTP id g13-v6so27950844qth.8 for ; Fri, 04 May 2018 08:59:49 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.08.59.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 08:59:47 -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=OQO5eftao92svL8YbDXRKzHOz5p/Rg939Km06rK+/x0=; b=ucyqDscptcyNH9YVxPHzDEvSFk6iSAJ5HFOq2ct5qAP4VFyMhWu4Y1iTaHWea/WYN4 daPcGW7H5Ae9jrOeKotOXNiL2W7/OmtXlpCr4X4Z5nlRCI4Y04dVA7XiS/rqc3jvt77l h9/BXwsm0+UYgxr1XC3nvEr8W6xFztQHxeZUUV8BAy9DpoyUkHY6YEFHprVjtYktyLpv 9KOQE2/PjtvZWmrl0hz9eIvFSLDVDzXAr0u7NDI26gcJ0nXaTW7Arr65kDD/GLcAAedp hXmdwP8cJDiq2D3mAKw9DBabZf/pZI8dYMO3favykeBQDnrKEsUpyMtJUCkoN7PDNhqG YvSA== 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=OQO5eftao92svL8YbDXRKzHOz5p/Rg939Km06rK+/x0=; b=d5iwaY/de3v7/uuEmThjFSrLzoD4YEzEo8+WThjrrBlgZjCoAeioJVpqnJ6wveKAL2 pPsigacZNSMeyueoiemOPTGFV31m2SqN+M/Pju3N8Rosoer3rl5PCtUGddT2LImphZrR oMXwZ0ayIz5fGS8sfPRbK5mXAHDwywRC3eCQ7m8tX0moTWZ2URsMWQOyFYhGwPn0hjpu wfQ4yR/4TI6N1P0ZeZl+yB/gx4Puob+ar9oO8I0HkKyUcIGWuYT+R++QgTsuMy6mILZX FAdv0uxMhJ5z8uHArEjxj91CSlrL5+WUQPuP4gSzMebPpzl/zlt2b9HrrVSzmU0XZbWT t6PA== X-Gm-Message-State: ALQs6tCoqnrA90xW+1VvTYdQq8xWz7tpJT2gV4FkHMsBzjohr6/b6iQ9 IrSiKGi2H8ft/4NDJgePQwo= X-Google-Smtp-Source: AB8JxZpyxNI2DAJ374UufZ357ubhq+0dOE6wZxCqPLuafHdsnGTmvEagco5tu8IvANjY+SbBZuiSxQ== X-Received: by 2002:ac8:396f:: with SMTP id t44-v6mr23959728qtb.22.1525449588699; Fri, 04 May 2018 08:59:48 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:05 -0300 Message-Id: <20180504155918.21287-8-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 07/20] sdcard: Constify sd_crc*()'s message argument 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 --- hw/sd/sd.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 801ddc2cb5..3708ec1d72 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -237,11 +237,11 @@ static const int sd_cmd_class[SDMMC_CMD_MAX] =3D { 7, 7, 10, 7, 9, 9, 9, 8, 8, 10, 8, 8, 8, 8, 8, 8, }; =20 -static uint8_t sd_crc7(void *message, size_t width) +static uint8_t sd_crc7(const void *message, size_t width) { int i, bit; uint8_t shift_reg =3D 0x00; - uint8_t *msg =3D (uint8_t *) message; + const uint8_t *msg =3D (const uint8_t *)message; =20 for (i =3D 0; i < width; i ++, msg ++) for (bit =3D 7; bit >=3D 0; bit --) { @@ -253,11 +253,11 @@ static uint8_t sd_crc7(void *message, size_t width) return shift_reg; } =20 -static uint16_t sd_crc16(void *message, size_t width) +static uint16_t sd_crc16(const void *message, size_t width) { int i, bit; uint16_t shift_reg =3D 0x0000; - uint16_t *msg =3D (uint16_t *) message; + const uint16_t *msg =3D (const uint16_t *)message; width <<=3D 1; =20 for (i =3D 0; i < width; i ++, msg ++) --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525449908209590.9935659486741; Fri, 4 May 2018 09:05:08 -0700 (PDT) Received: from localhost ([::1]:35042 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdCi-0006Vv-3S for importer@patchew.org; Fri, 04 May 2018 12:05:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55015) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7g-0002gK-Ve for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7g-0001bQ-AP for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:53 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:42875) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7g-0001bA-53 for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:52 -0400 Received: by mail-qt0-x244.google.com with SMTP id c2-v6so27950206qtn.9 for ; Fri, 04 May 2018 08:59:51 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.08.59.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 08:59:50 -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=ZCWIHYkg0vF0yUJddxgmwh3GeqIPmILfwrTIEkSpJ/M=; b=N3AyEof0fKuYUUVLgzgbPOTertH90PdTn7oRkZH3x8fRVCP8SC7dgfccwsuGbBnQkg t7nbwNkYfk6IHYFcG16U29z97qS6x7t56+MfxAsrJm1tIDeei6pNb1XWwmmshoIG6gzQ v6f4bs7xMbd5xPL1v4R4Lzo9b2aMZbojGF3N0dxDpwdFYHI6EW6KgeUg1+BJTKyJO4cP xqVe7sz0LJWpF6T7ARL5PSqQPRZ2GzwoFhOaKdE/ThBgwmN2pVuv16QaUxX3Xk/FLAKk 7xDK9req7PgpMgM6N+rSseWhBmoTOv8lUkMz6/3gM2kjzWu40tJSJ4hGuqR5X9taum4a DfgA== 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=ZCWIHYkg0vF0yUJddxgmwh3GeqIPmILfwrTIEkSpJ/M=; b=aJ65kI8JjLBbeXGZgOqMaIfHXf0cx8nMLrSiyoCW78Blc3Wd9WJWAzFQZaiMYQC3Be 8iMb+INf4F/PoMY3cmu/X3iLXgbOHi85pQq8YepJsjf9EbELgmf8gbMiuPGaOvW21VQr mK13PFF0zsfQeP3qKnG5K5ktLzlu0RGiHg3KGPlRwDwkNVlvjvd83yizlRtLYm3iY1mS zJVmcYBRPT8ul8hw2AQGSA7Dvw+Z3BQHm+cE7UvfuzJFuFehxKfN3AytQ3Vc6xVsm+JF yJtLPhUCdUmxdRgRxpNlXD3jKZdFauSTlIHBhAW36JjnVUbVDqImhky+BEnT1x6jWJnd AyNQ== X-Gm-Message-State: ALQs6tAvRgtu0iuwP4l34jCJLsro4sRLCxn1iMc9vv6GYgsMo8cR5W5p CLvAggZlHwO/eFihFg+fNdw= X-Google-Smtp-Source: AB8JxZqU0pamkmTPEmtVZbvfAnHCjrhOLg37CENESr4sgoqt79oNlQNS/E/7q+addqGFFbv269G0aA== X-Received: by 2002:aed:21d1:: with SMTP id m17-v6mr24025801qtc.351.1525449591566; Fri, 04 May 2018 08:59:51 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:06 -0300 Message-Id: <20180504155918.21287-9-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 08/20] sdcard: Fix sd_crc*() style 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 Fix style to keep patchew/checkpatch happy when moving this code in the next patch. Signed-off-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Alistair Francis --- hw/sd/sd.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 3708ec1d72..a28ef8de5e 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -243,12 +243,14 @@ static uint8_t sd_crc7(const void *message, size_t wi= dth) uint8_t shift_reg =3D 0x00; const uint8_t *msg =3D (const uint8_t *)message; =20 - for (i =3D 0; i < width; i ++, msg ++) - for (bit =3D 7; bit >=3D 0; bit --) { + for (i =3D 0; i < width; i++, msg++) { + for (bit =3D 7; bit >=3D 0; bit--) { shift_reg <<=3D 1; - if ((shift_reg >> 7) ^ ((*msg >> bit) & 1)) + if ((shift_reg >> 7) ^ ((*msg >> bit) & 1)) { shift_reg ^=3D 0x89; + } } + } =20 return shift_reg; } @@ -260,12 +262,14 @@ static uint16_t sd_crc16(const void *message, size_t = width) const uint16_t *msg =3D (const uint16_t *)message; width <<=3D 1; =20 - for (i =3D 0; i < width; i ++, msg ++) - for (bit =3D 15; bit >=3D 0; bit --) { + for (i =3D 0; i < width; i++, msg++) { + for (bit =3D 15; bit >=3D 0; bit--) { shift_reg <<=3D 1; - if ((shift_reg >> 15) ^ ((*msg >> bit) & 1)) + if ((shift_reg >> 15) ^ ((*msg >> bit) & 1)) { shift_reg ^=3D 0x1011; + } } + } =20 return shift_reg; } --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525450102178576.4566909215416; Fri, 4 May 2018 09:08:22 -0700 (PDT) Received: from localhost ([::1]:35069 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdFi-0000dx-7J for importer@patchew.org; Fri, 04 May 2018 12:08:10 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55045) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7l-0002oq-V6 for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7j-0001cf-CE for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:58 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:39865) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7j-0001cX-7O for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:55 -0400 Received: by mail-qt0-x241.google.com with SMTP id f1-v6so27973161qtj.6 for ; Fri, 04 May 2018 08:59:55 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.08.59.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 08:59:54 -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=FDQkWRBdTk16khbrk/p7o3cj/hcSlLsdvKrjJkPthx8=; b=ZhWDTxy2Ko207Q6U+rlSid0BT4jb4FSPYA8xE+HUk6T4jWOY6kR8kpKpejy+ZIca7O kWMZV27kEbI80JJxPE4zJWDpFciZSUFOEvzqDBTwAnEuz0dmpbx8hud5W1g20dlduriv qHKGxkJxIDTmvGwQWCvW2FjKB7Y+AMrPQSixEV9M0zk4Zjt3oUMCYQR88xjMry05M6af w92zIaFWwOjZfue1jtw4JLmgWlB5gMiIBjj4+iX9Q/j8wEE5ycBHpWFLVJDkEz9UVzX0 RgGqh/YQBcXDdvh7xiMa/DuXG8zGcyMreTVwOnMW7n2Bv/dw45aY2GudbUyBC8RkqqWA Wzlw== 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=FDQkWRBdTk16khbrk/p7o3cj/hcSlLsdvKrjJkPthx8=; b=Y0nJgdSN2q8WhfaSlNrmR3dqbBw2riZ2J+rm7hSOmjc0N4dGuUOG3+tCH8zy31tiDI DSqkApMFI+oh2JsHRZjy14UnzG9ok+2Fj88zOyxsZXWiUhNRI9sG+gfxMKKiTUu1T985 CHYePcwYHLy5ykgen5ea8x1gv9JK9f7GlNBQr4UsjtvfFuXgHbaq82t2vAcNc2QWG0e3 ixA1lw4MaEcSrXBxF2yGFOzNbcVjBX/6A7E3zoB7YPvowaRyaSqAtQYm+neqrwk48+Eo XnsS/kMpPWwtBBExBqVap1t5K5YcrwYquFGRFaC1sccvfMtMgbhbT6rYH4wEZWm+b2A8 PgkQ== X-Gm-Message-State: ALQs6tBbvZ9s/23XZV5EOSMkauzotB5pZcVwgJttZdxdjhLZOiZoHQB1 pLgsWdCu+zzoieM/+EJxeA8= X-Google-Smtp-Source: AB8JxZpXmbsHlm82+ZNVshl92pJVZztWWybsO2MnBQf1QHTQOD4sz3jwF2o6sHAB9nGJ7/TbSvUJvA== X-Received: by 2002:ac8:354f:: with SMTP id z15-v6mr7536321qtb.295.1525449594647; Fri, 04 May 2018 08:59:54 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:07 -0300 Message-Id: <20180504155918.21287-10-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 09/20] sdcard: Expose sd_crc*() functions for QTest use 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 Take those functions out of hw/sd/sd.c (via "sdmmc-internal.h") to be able to write QTests for them. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sdmmc-internal.h | 22 ++++++++++++++++++++++ hw/sd/sd.c | 37 ------------------------------------- hw/sd/sdmmc-internal.c | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 37 deletions(-) diff --git a/hw/sd/sdmmc-internal.h b/hw/sd/sdmmc-internal.h index 9aa04766fc..62c0ff250d 100644 --- a/hw/sd/sdmmc-internal.h +++ b/hw/sd/sdmmc-internal.h @@ -36,4 +36,26 @@ const char *sd_cmd_name(uint8_t cmd); */ const char *sd_acmd_name(uint8_t cmd); =20 +/** + * sd_crc7: + * @data: pointer to the data buffer + * @data_len: data length + * + * Calculate the 7-bit CRC of a SD frame. + * + * Returns: The frame CRC. + */ +uint8_t sd_crc7(const void *data, size_t data_len); + +/** + * sd_crc16: + * @data: pointer to the data buffer + * @data_len: data length + * + * Calculate the 16-bit CRC of a SD data frame. + * + * Returns: The frame CRC. + */ +uint16_t sd_crc16(const void *data, size_t data_len); + #endif diff --git a/hw/sd/sd.c b/hw/sd/sd.c index a28ef8de5e..11b4606051 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -237,43 +237,6 @@ static const int sd_cmd_class[SDMMC_CMD_MAX] =3D { 7, 7, 10, 7, 9, 9, 9, 8, 8, 10, 8, 8, 8, 8, 8, 8, }; =20 -static uint8_t sd_crc7(const void *message, size_t width) -{ - int i, bit; - uint8_t shift_reg =3D 0x00; - const uint8_t *msg =3D (const uint8_t *)message; - - for (i =3D 0; i < width; i++, msg++) { - for (bit =3D 7; bit >=3D 0; bit--) { - shift_reg <<=3D 1; - if ((shift_reg >> 7) ^ ((*msg >> bit) & 1)) { - shift_reg ^=3D 0x89; - } - } - } - - return shift_reg; -} - -static uint16_t sd_crc16(const void *message, size_t width) -{ - int i, bit; - uint16_t shift_reg =3D 0x0000; - const uint16_t *msg =3D (const uint16_t *)message; - width <<=3D 1; - - for (i =3D 0; i < width; i++, msg++) { - for (bit =3D 15; bit >=3D 0; bit--) { - shift_reg <<=3D 1; - if ((shift_reg >> 15) ^ ((*msg >> bit) & 1)) { - shift_reg ^=3D 0x1011; - } - } - } - - return shift_reg; -} - #define OCR_POWER_DELAY_NS 500000 /* 0.5ms */ =20 FIELD(OCR, VDD_VOLTAGE_WINDOW, 0, 24) diff --git a/hw/sd/sdmmc-internal.c b/hw/sd/sdmmc-internal.c index 2053def3f1..69ad0a99e6 100644 --- a/hw/sd/sdmmc-internal.c +++ b/hw/sd/sdmmc-internal.c @@ -70,3 +70,41 @@ const char *sd_acmd_name(uint8_t cmd) =20 return acmd_abbrev[cmd] ? acmd_abbrev[cmd] : "UNKNOWN_ACMD"; } + +/* 7 bit CRC with polynomial x^7 + x^3 + 1 */ +uint8_t sd_crc7(const void *message, size_t width) +{ + int i, bit; + uint8_t shift_reg =3D 0x00; + const uint8_t *msg =3D (const uint8_t *)message; + + for (i =3D 0; i < width; i++, msg++) { + for (bit =3D 7; bit >=3D 0; bit--) { + shift_reg <<=3D 1; + if ((shift_reg >> 7) ^ ((*msg >> bit) & 1)) { + shift_reg ^=3D 0x89; + } + } + } + + return shift_reg; +} + +uint16_t sd_crc16(const void *message, size_t width) +{ + int i, bit; + uint16_t shift_reg =3D 0x0000; + const uint16_t *msg =3D (const uint16_t *)message; + width <<=3D 1; + + for (i =3D 0; i < width; i++, msg++) { + for (bit =3D 15; bit >=3D 0; bit--) { + shift_reg <<=3D 1; + if ((shift_reg >> 15) ^ ((*msg >> bit) & 1)) { + shift_reg ^=3D 0x1011; + } + } + } + + return shift_reg; +} --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525450426582780.4237136239385; Fri, 4 May 2018 09:13:46 -0700 (PDT) Received: from localhost ([::1]:35139 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdL7-0005qe-NA for importer@patchew.org; Fri, 04 May 2018 12:13:45 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55069) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7n-0002rK-PO for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7m-0001dZ-Fa for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:59 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:34701) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7m-0001dN-9l for qemu-devel@nongnu.org; Fri, 04 May 2018 11:59:58 -0400 Received: by mail-qk0-x243.google.com with SMTP id p186so16985379qkd.1 for ; Fri, 04 May 2018 08:59:58 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.08.59.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 08:59:57 -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=IyO1B2E1AmrCFzlNXJLICzcVKouzz9qdGTjPcRAmLkY=; b=vUCYyvOj7Cq/BYzhZc6rwboB8TiIdAr7rLRTwjrBrL0P0RZQFwGXuXfOZ3ZBwrXkAp OW5+0Nmr2qRhuG/60MYiDHO0gy0LPjvawuPmroTTweDhJ294EZIR5kAm29K0mODbQNGM 5YjWz8L5mB7X2KjEIRidWQYRt6wqtRn5cbbqGsq0SsO0HPhBC/xR98Y63PJ9u1DYEt0j 4cVgAemGmjVfN393+tVvGcKeewehSAoonN/2FbtjPMspxDkwe/G1N83wfpH59OEajoFm vYNk2e/6XD6/v1IznbQJeGOh9RAYCe/9h9sD+wIDRHbwDEOYwFOpJ9+xBgTxvv1UFTOJ FOrQ== 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=IyO1B2E1AmrCFzlNXJLICzcVKouzz9qdGTjPcRAmLkY=; b=Nj6tQFajadAbMN/AJgWwSVYnLpxI3w6Fy67wdaJpcxXMITyuHHNokYQxfM1crzx1W8 KdJaGtQUwJFknzp8t7eugoUKIGZCg5P90x8XvTtCO10jJSwWd3NyYknscROdyLyweNdA M+J1w5xU+0HYOeYjP374rzAKnEIfI0Mr3TqIbW0aDnIhSgi2bk0GZ8SAfJ/8igtCaEsK 8d9nahjbYqiTXqK+Sbn1zaDGta13QhjbOoAySUN+Ka42spNZI8Ri1OFNeqR6IKXFGpya hTuUpnwpGpKJvFhbWebgRwwy6DCj3X9GU0erOL6XoKv7+ZmIB0wZoWqURgm5Sq7BbDco wvyg== X-Gm-Message-State: ALQs6tB6zY2ChuQth5pj8YKx6faCggoOyVjzOhIBvNhVwHtxpmFgEhAt s28mRw+w8j0ODKyg2/NgqjhSWqZc X-Google-Smtp-Source: AB8JxZr0Sq/k22IJqGHhQhIN2iB10bVUN03O//m/RO/oQyIXdq3tU/il52ZLLoAGIfbLiyRUUgRBoA== X-Received: by 10.55.203.9 with SMTP id d9mr21744630qkj.95.1525449597706; Fri, 04 May 2018 08:59:57 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:08 -0300 Message-Id: <20180504155918.21287-11-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 10/20] sdcard: Expose sd_prepare_request*() functions for QTest use 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 Take those functions out of hw/sd/sd.c (via "sdmmc-internal.h") to be able to write QTests for them. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sdmmc-internal.h | 2 ++ include/hw/sd/sd.h | 18 ++++++++++++++++++ hw/sd/sd.c | 43 ------------------------------------------ hw/sd/sdmmc-internal.c | 43 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 63 insertions(+), 43 deletions(-) diff --git a/hw/sd/sdmmc-internal.h b/hw/sd/sdmmc-internal.h index 62c0ff250d..d672112200 100644 --- a/hw/sd/sdmmc-internal.h +++ b/hw/sd/sdmmc-internal.h @@ -10,6 +10,8 @@ #ifndef SD_INTERNAL_H #define SD_INTERNAL_H =20 +#include "hw/sd/sd.h" + #define SDMMC_CMD_MAX 64 =20 /** diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index 7d9c906897..b65107ffe1 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -168,6 +168,24 @@ void sd_prepare_request(SDRequest *req, uint8_t cmd, u= int32_t arg, void sd_prepare_request_with_crc(SDRequest *req, uint8_t cmd, uint32_t arg, uint8_t crc); =20 +/** + * sd_update_frame48_checksum: + * @frame: the #SDFrame48 to verify + * + * Update the 7-bit CRC checksum of a SD 48-bit frame. + */ +void sd_update_frame48_checksum(SDFrame48 *frame); + +/** + * sd_verify_frame48_checksum: + * @frame: the #SDFrame48 to verify + * + * Verify the 7-bit CRC checksum of a SD 48-bit frame. + * + * Returns: A boolean indicating whether the frame 7-bit CRC is correct. + */ +bool sd_verify_frame48_checksum(SDFrame48 *frame); + /* 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 11b4606051..2d2c31d308 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -449,21 +449,6 @@ static void sd_set_sdstatus(SDState *sd) memset(sd->sd_status, 0, 64); } =20 -static uint8_t sd_calc_frame48_crc7(uint8_t cmd, uint32_t arg) -{ - uint8_t buffer[5]; - buffer[0] =3D 0x40 | cmd; - stl_be_p(&buffer[1], arg); - return sd_crc7(buffer, sizeof(buffer)); -} - -static bool sd_verify_frame48_checksum(SDFrame48 *frame) -{ - uint8_t crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg); - - return crc =3D=3D frame->crc; -} - static bool sd_req_crc_validate(SDState *sd, SDRequest *req) { if (sd->validate_crc) { @@ -472,34 +457,6 @@ static bool sd_req_crc_validate(SDState *sd, SDRequest= *req) return true; } =20 -static void sd_update_frame48_checksum(SDFrame48 *frame) -{ - frame->crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg); -} - -static void sd_prepare_frame48(SDFrame48 *frame, uint8_t cmd, uint32_t arg, - bool gen_crc) -{ - frame->cmd =3D cmd; - frame->arg =3D arg; - frame->crc =3D 0x00; - if (gen_crc) { - sd_update_frame48_checksum(frame); - } -} - -void sd_prepare_request(SDFrame48 *req, uint8_t cmd, uint32_t arg, bool ge= n_crc) -{ - sd_prepare_frame48(req, cmd, arg, gen_crc); -} - -void sd_prepare_request_with_crc(SDRequest *req, uint8_t cmd, uint32_t arg, - uint8_t crc) -{ - sd_prepare_frame48(req, cmd, arg, /* gen_crc */ false); - req->crc =3D crc; -} - static void sd_response_r1_make(SDState *sd, uint8_t *response) { stl_be_p(response, sd->card_status); diff --git a/hw/sd/sdmmc-internal.c b/hw/sd/sdmmc-internal.c index 69ad0a99e6..97f5f71569 100644 --- a/hw/sd/sdmmc-internal.c +++ b/hw/sd/sdmmc-internal.c @@ -108,3 +108,46 @@ uint16_t sd_crc16(const void *message, size_t width) =20 return shift_reg; } + +static uint8_t sd_calc_frame48_crc7(uint8_t cmd, uint32_t arg) +{ + uint8_t buffer[5]; + buffer[0] =3D 0x40 | cmd; + stl_be_p(&buffer[1], arg); + return sd_crc7(buffer, sizeof(buffer)); +} + +bool sd_verify_frame48_checksum(SDFrame48 *frame) +{ + uint8_t crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg); + + return crc =3D=3D frame->crc; +} + +void sd_update_frame48_checksum(SDFrame48 *frame) +{ + frame->crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg); +} + +static void sd_prepare_frame48(SDFrame48 *frame, uint8_t cmd, uint32_t arg, + bool gen_crc) +{ + frame->cmd =3D cmd; + frame->arg =3D arg; + frame->crc =3D 0x00; + if (gen_crc) { + sd_update_frame48_checksum(frame); + } +} + +void sd_prepare_request(SDFrame48 *req, uint8_t cmd, uint32_t arg, bool ge= n_crc) +{ + sd_prepare_frame48(req, cmd, arg, gen_crc); +} + +void sd_prepare_request_with_crc(SDRequest *req, uint8_t cmd, uint32_t arg, + uint8_t crc) +{ + sd_prepare_frame48(req, cmd, arg, /* gen_crc */ false); + req->crc =3D crc; +} --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525449950909296.8482957117807; Fri, 4 May 2018 09:05:50 -0700 (PDT) Received: from localhost ([::1]:35048 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdDS-0007EJ-5o for importer@patchew.org; Fri, 04 May 2018 12:05:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55090) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7q-0002wh-8t for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7p-0001eF-7o for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:02 -0400 Received: from mail-qt0-x243.google.com ([2607:f8b0:400d:c0d::243]:33682) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7p-0001eB-4f for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:01 -0400 Received: by mail-qt0-x243.google.com with SMTP id e8-v6so23084733qth.0 for ; Fri, 04 May 2018 09:00:00 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.08.59.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 09:00:00 -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=hUe3pIFY2ECBReDaYPIStlM7W2wvcMCgvERoQMzz0K4=; b=WKne/FAgfV3lpaMgCSJzSF2uIosMXFMpQRWjD9xqcaqtImb4oTZI+HzVrOFz+9+ygH F+cn+fwjXGAGT/B6wG3Q7NQEQaEYoP3F+mjFuQ0DDK/ImbAQBCHTVMAOatNrJos7wlRy 3QZuHREQHgaQCRDv3TcNpvSg/Nqt11zm4bitCL7e4PBTVJam1pwStWJ82XEKcYlzsFJI 5RJcz0Rn2aOu/UHBN4Mj8UuAFhPAWJSDn13ce7FYZ07o/CohAVM9+pQQmV35qIivVSsG hu5NYQSDVu5xff9u5gUp9Am0mcJIXxI+ngGW2mPLp2Z+t51NwKhxb8D9pWrYQi7PSCR8 6FTw== 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=hUe3pIFY2ECBReDaYPIStlM7W2wvcMCgvERoQMzz0K4=; b=MLKR0yKvtNDYSf6eR2W9YTzpeQLo2QjrVjThbHNMT8SsdTrjiuT2YMAbF+a7skT/Ar 3PW5Egr794QjaEGWMrNfqOLQB+KFqPA8lVJS8Mc4F66tMQnegK/Vrd0DjXR8v+jxLRyF ViEbDkXoHSFuZFZ7dqYDzA8UOXygCDMFaCNPC3zNDHFPpwVGMaHN3hz6ObLkvJ69hv3c +X7P6xTE/yYPdqYy6bX5igpilmS4EnCE+bHCV+pN1cYkjkd6Pa77ovkBgNhLzFn6b5vO RRyI9s9be4dY8t27t1pXsyM/D0bqEHCp9P50ahdJOaw/VBxmdD0r/thYmTb+ZbAXcsmA VuVA== X-Gm-Message-State: ALQs6tCtbk0VoBYw/cvCkL1bJcaUTVvMLjY1HWTKZj11pwAMajowOLNq /F38rdVgXbhvRNk6pIRNZbE= X-Google-Smtp-Source: AB8JxZoCbl9zw+wKF2r+hoxVWa3vV8bbws3bVubjkC+xSYfsTEmaHjX8zM7AwVx5XHiH7/DGjLVdUw== X-Received: by 2002:a0c:8995:: with SMTP id 21-v6mr8062802qvr.223.1525449600573; Fri, 04 May 2018 09:00:00 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:09 -0300 Message-Id: <20180504155918.21287-12-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 11/20] sdcard: Add test_sd_request_frame_crc7() qtest (request command CRC7) 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 --- tests/sdcard-test.c | 54 ++++++++++++++++++++++++++++++++++++++++++ tests/Makefile.include | 2 ++ 2 files changed, 56 insertions(+) create mode 100644 tests/sdcard-test.c diff --git a/tests/sdcard-test.c b/tests/sdcard-test.c new file mode 100644 index 0000000000..1358ee28c6 --- /dev/null +++ b/tests/sdcard-test.c @@ -0,0 +1,54 @@ +/* + * QTest testcase for SD protocol and cards + * + * Examples taken from: + * + * - Physical Layer Simplified Specification (chap. 4.5: Cyclic Redundancy= Code) + * - http://wiki.seabright.co.nz/wiki/SdCardProtocol.html + * + * Tests written by Philippe Mathieu-Daud=C3=A9 + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ +#include "qemu/osdep.h" +#include "libqtest.h" +#include "hw/sd/sd.h" + +static void sd_prepare_request48(SDFrame48 *frame, uint8_t cmd, uint32_t a= rg) +{ + sd_prepare_request(frame, cmd, arg, /* gen_crc */ true); +} + +static void test_sd_request_frame_crc7(void) +{ + SDFrame48 frame; + + /* CMD0 */ + sd_prepare_request48(&frame, 0, 0); + g_assert_cmphex(frame.crc, =3D=3D, 0b1001010); + + /* CMD17 */ + sd_prepare_request48(&frame, 17, 0); + g_assert_cmphex(frame.crc, =3D=3D, 0b0101010); + + /* APP_CMD */ + sd_prepare_request48(&frame, 55, 0); + g_assert_cmphex(frame.crc, =3D=3D, 0x32); + + /* ACMD41 SEND_OP_COND */ + sd_prepare_request48(&frame, 41, 0x00100000); + g_assert_cmphex(frame.crc, =3D=3D, 0x5f >> 1); + + /* CMD2 ALL_SEND_CID */ + sd_prepare_request48(&frame, 2, 0); + g_assert_cmphex(frame.crc, =3D=3D, 0x4d >> 1); +} + +int main(int argc, char *argv[]) +{ + g_test_init(&argc, &argv, NULL); + + qtest_add_func("sd/req_crc7", test_sd_request_frame_crc7); + + return g_test_run(); +} diff --git a/tests/Makefile.include b/tests/Makefile.include index 3b9a5e31a2..6a70a1dbab 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -380,6 +380,7 @@ check-qtest-arm-y +=3D tests/test-arm-mptimer$(EXESUF) gcov-files-arm-y +=3D hw/timer/arm_mptimer.c check-qtest-arm-y +=3D tests/boot-serial-test$(EXESUF) check-qtest-arm-y +=3D tests/sdhci-test$(EXESUF) +check-qtest-arm-y +=3D tests/sdcard-test$(EXESUF) =20 check-qtest-aarch64-y =3D tests/numa-test$(EXESUF) check-qtest-aarch64-y +=3D tests/sdhci-test$(EXESUF) @@ -835,6 +836,7 @@ tests/test-qapi-util$(EXESUF): tests/test-qapi-util.o $= (test-util-obj-y) tests/numa-test$(EXESUF): tests/numa-test.o tests/vmgenid-test$(EXESUF): tests/vmgenid-test.o tests/boot-sector.o test= s/acpi-utils.o tests/sdhci-test$(EXESUF): tests/sdhci-test.o $(libqos-pc-obj-y) +tests/sdcard-test$(EXESUF): tests/sdcard-test.o hw/sd/sdmmc-internal.o =20 tests/migration/stress$(EXESUF): tests/migration/stress.o $(call quiet-command, $(LINKPROG) -static -O3 $(PTHREAD_LIB) -o $@ $< ,"L= INK","$(TARGET_DIR)$@") --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525450380514682.3575064953976; Fri, 4 May 2018 09:13:00 -0700 (PDT) Received: from localhost ([::1]:35137 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdKN-0005Bt-IT for importer@patchew.org; Fri, 04 May 2018 12:12:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55137) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7x-00034O-PZ for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7r-0001g9-S5 for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:09 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:34138) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7r-0001fW-Nx for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:03 -0400 Received: by mail-qt0-x242.google.com with SMTP id m5-v6so27963671qti.1 for ; Fri, 04 May 2018 09:00:03 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.09.00.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 09:00:02 -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=YHKluygF6i+h+fEQ6NjjK9vW14dhmRS0VenbQVBMaF8=; b=gtXdyIA198roHr2ivwE6OGZWh07FO+94c5WEg6WwRCMeUQw82n51YDYGSmcgFWwN7i gQwGy9/R97tytP8gCg/8yj5a9dhdSr0eDe+bFUKVf50X8n7U/Ta7cSTo+Ktz/I1Ts8qg GrowPqXl56rrM3qODqB5vLKReGnizHROV8FIDepDzSgaAy2G32RBV86cItqk21S/HAuK Q2/TfLG5poOBKa5T2VniD2sIb9+pyGq0MIALTeH1OA2U2HkPyKfH6nbvBTzyz49NFbK1 DnmJ0lT6R0Lv1jE6vn5boFcHeSwWp3QsvCAfA1Y4v7Tq6ziIYraWpV64xaM1WPuWcYo0 Rxzw== 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=YHKluygF6i+h+fEQ6NjjK9vW14dhmRS0VenbQVBMaF8=; b=o/4Qj2cZDc3qqyDxWmVSVxohM2zrCWN6M629px8I6gIrmaSIxYjnQ8UIO81+z++OKV +Et3z2DYLv3DJC9VULN2D3gahwQXCvsQvcTouJJCYc8j59jZAkukmN5CHfYpi7cCyuYY JZgMoGNz3/Go7q2PhsQZ0gOJjiZ19VieIctp8Pa9TIdKBEoKX27OMwbxGZ3nmGZv+5zN mzVdhlmQG7jRq81C6AJAVysP7OpnImoUSxmEqi2ixGsCuCqLvG34CrTMyMNTZGA26ZMQ UB6BsReQKZwPAH9qzg3I6pmLLBAauh92/ihV8+ct4sq7zb4mf6vlAfLn1casoPPtglZd qJiw== X-Gm-Message-State: ALQs6tAf0doE0PEN/bwisnknmURzT0wtkGm6okBaDGwhPM0xXRZT4r/8 MbwSeRauC7AkjvYt3Cp3aUg= X-Google-Smtp-Source: AB8JxZooqy4koe7WS37+yyvx5uniNBZjrwLepD8phSgZblyPZ7VlQE/yQVF9rNh029ZulTugv7Qc2g== X-Received: by 2002:ac8:7259:: with SMTP id l25-v6mr24088684qtp.325.1525449603166; Fri, 04 May 2018 09:00:03 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:10 -0300 Message-Id: <20180504155918.21287-13-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 12/20] sdcard: Let sd_frame48_crc7_calc() work on response frames 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 Currently sd_calc_frame48_crc7() only works for request frames, having the bit 6 hardwire to 1. Extend it to handle response frames, adding a 'is_response' boolean argumen= t. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/sd/sd.h | 6 ++++-- hw/sd/sd.c | 2 +- hw/sd/sdmmc-internal.c | 20 ++++++++++---------- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index b65107ffe1..b1f865fe20 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -171,20 +171,22 @@ void sd_prepare_request_with_crc(SDRequest *req, uint= 8_t cmd, uint32_t arg, /** * sd_update_frame48_checksum: * @frame: the #SDFrame48 to verify + * @is_response: whether the frame is a command request or response * * Update the 7-bit CRC checksum of a SD 48-bit frame. */ -void sd_update_frame48_checksum(SDFrame48 *frame); +void sd_update_frame48_checksum(SDFrame48 *frame, bool is_response); =20 /** * sd_verify_frame48_checksum: * @frame: the #SDFrame48 to verify + * @is_response: whether the frame is a command request or response * * Verify the 7-bit CRC checksum of a SD 48-bit frame. * * Returns: A boolean indicating whether the frame 7-bit CRC is correct. */ -bool sd_verify_frame48_checksum(SDFrame48 *frame); +bool sd_verify_frame48_checksum(SDFrame48 *frame, bool is_response); =20 /* Legacy functions to be used only by non-qdevified callers */ SDState *sd_init(BlockBackend *bs, bool is_spi); diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 2d2c31d308..5e0b5c2b87 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -452,7 +452,7 @@ static void sd_set_sdstatus(SDState *sd) static bool sd_req_crc_validate(SDState *sd, SDRequest *req) { if (sd->validate_crc) { - return sd_verify_frame48_checksum(req); + return sd_verify_frame48_checksum(req, false); } return true; } diff --git a/hw/sd/sdmmc-internal.c b/hw/sd/sdmmc-internal.c index 97f5f71569..04da81e665 100644 --- a/hw/sd/sdmmc-internal.c +++ b/hw/sd/sdmmc-internal.c @@ -109,45 +109,45 @@ uint16_t sd_crc16(const void *message, size_t width) return shift_reg; } =20 -static uint8_t sd_calc_frame48_crc7(uint8_t cmd, uint32_t arg) +static uint8_t sd_calc_frame48_crc7(uint8_t cmd, uint32_t arg, bool is_res= ponse) { uint8_t buffer[5]; - buffer[0] =3D 0x40 | cmd; + buffer[0] =3D (!is_response << 6) | cmd; stl_be_p(&buffer[1], arg); return sd_crc7(buffer, sizeof(buffer)); } =20 -bool sd_verify_frame48_checksum(SDFrame48 *frame) +bool sd_verify_frame48_checksum(SDFrame48 *frame, bool is_response) { - uint8_t crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg); + uint8_t crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg, is_respon= se); =20 return crc =3D=3D frame->crc; } =20 -void sd_update_frame48_checksum(SDFrame48 *frame) +void sd_update_frame48_checksum(SDFrame48 *frame, bool is_response) { - frame->crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg); + frame->crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg, is_respons= e); } =20 static void sd_prepare_frame48(SDFrame48 *frame, uint8_t cmd, uint32_t arg, - bool gen_crc) + bool is_response, bool gen_crc) { frame->cmd =3D cmd; frame->arg =3D arg; frame->crc =3D 0x00; if (gen_crc) { - sd_update_frame48_checksum(frame); + sd_update_frame48_checksum(frame, is_response); } } =20 void sd_prepare_request(SDFrame48 *req, uint8_t cmd, uint32_t arg, bool ge= n_crc) { - sd_prepare_frame48(req, cmd, arg, gen_crc); + sd_prepare_frame48(req, cmd, arg, /* is_response */ false, gen_crc); } =20 void sd_prepare_request_with_crc(SDRequest *req, uint8_t cmd, uint32_t arg, uint8_t crc) { - sd_prepare_frame48(req, cmd, arg, /* gen_crc */ false); + sd_prepare_request(req, cmd, arg, /* gen_crc */ false); req->crc =3D crc; } --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525450527886367.01301170736906; Fri, 4 May 2018 09:15:27 -0700 (PDT) Received: from localhost ([::1]:35171 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdMl-0007R7-1M for importer@patchew.org; Fri, 04 May 2018 12:15:27 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55151) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd7z-00037T-FC for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7u-0001hW-KS for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:11 -0400 Received: from mail-qt0-x241.google.com ([2607:f8b0:400d:c0d::241]:40082) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7u-0001hK-Gi for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:06 -0400 Received: by mail-qt0-x241.google.com with SMTP id h2-v6so27974637qtp.7 for ; Fri, 04 May 2018 09:00:06 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.09.00.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 09:00:05 -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=tgJcJtLk0Kk0DGQF7S/kkrOPgNKZx4vSZwzrXdAecn4=; b=oZC73GFN3ISOtLExBp8MWhYM1567Dix2rI56PmM+7DOBfArSjKChsICp6VTOagZDjR IVuJ8eE68BSCOmbwtB/OPQxNMptLXdO0ex12fGmoloTfDMDJIuONMiG1tR4Dd8eUvQTq U6GSQJXpyi1QNiNLyEtTU5sSnoyPpG65hbx13fMSlAmQ73ryW+FiUrfx2J+Q27kqxhep eGzD/O+CBn8vzmW/wd/RhuqygFsf3RVgFQSJFNb22UaKhI+7Dcl2aka0NUV5QNrIY3PL LPfbZ/RciSuuY4LsXisUz3aYlS2fLZ912q56MXPnraOECwNp+QJxR0EquiYHWlaxtOE8 I0zg== 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=tgJcJtLk0Kk0DGQF7S/kkrOPgNKZx4vSZwzrXdAecn4=; b=msPSuFKZrnMMb6INieG+eyc191B0v+5BJwgW0ID8f9c9RnkBwbbl+RS21wlCsBpKi9 I2P8nqyxWmXxncpamsF1Swal8ssJW9SVHInKdXoGfufo+XBXB3jCe0xqNQ8KmMgdUo6c Xs4GGTbTOnPvnRU7LcGwtJshSxapddZlFfMMleLWULfufrY5Xk4+QBMmI/qsv3g4FJJc bUKawi+13E2LBRBXIR+sGvWjQ4RIgY8QKljckfRTHQISSghqvxputopmNV55euZ418nV SNg59CFGSaqHlXmlJU8SP0G1+0SFsqkmEsL9ZgI9U/J/x7Noud7RjRF1q1c8WWG91kwQ EEww== X-Gm-Message-State: ALQs6tBsV5MpU+ohbLiZ7cd02ks49BVcFtz8hQeNoFHbuh1cdL0c0Cij nCF+HBoGbLfxmyp2BDMf6RM= X-Google-Smtp-Source: AB8JxZrKdvJKLtI8Dza1AwZJ0Y1jqaEexAIH+Zc6a6hhmichBqJ1UHPNyQuJxxmFpwl2Uz4ANNimvQ== X-Received: by 2002:ac8:3868:: with SMTP id r37-v6mr25508398qtb.125.1525449605983; Fri, 04 May 2018 09:00:05 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:11 -0300 Message-Id: <20180504155918.21287-14-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 13/20] sdcard: Expose sd_prepare_frame48() for QTest use 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 --- include/hw/sd/sd.h | 16 ++++++++++++++++ hw/sd/sdmmc-internal.c | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index b1f865fe20..13de1b30c3 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -168,6 +168,22 @@ void sd_prepare_request(SDRequest *req, uint8_t cmd, u= int32_t arg, void sd_prepare_request_with_crc(SDRequest *req, uint8_t cmd, uint32_t arg, uint8_t crc); =20 +/** + * sd_prepare_response48: Initialize a SD response buffer + * + * If @gen_crc the frame checksum will be calculated + * and filled in the request buffer. + * + * @req: the #SDRequest to be filled + * @cmd: the SD command + * @arg: the SD command argument + * @is_response: whether the frame is a command request or response + * @gen_crc: generates the frame CRC7 if true, else fill with zeroes + */ + +void sd_prepare_frame48(SDFrame48 *frame, uint8_t cmd, uint32_t arg, + bool is_response, bool gen_crc); + /** * sd_update_frame48_checksum: * @frame: the #SDFrame48 to verify diff --git a/hw/sd/sdmmc-internal.c b/hw/sd/sdmmc-internal.c index 04da81e665..c990cc9e8e 100644 --- a/hw/sd/sdmmc-internal.c +++ b/hw/sd/sdmmc-internal.c @@ -129,8 +129,8 @@ void sd_update_frame48_checksum(SDFrame48 *frame, bool = is_response) frame->crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg, is_respons= e); } =20 -static void sd_prepare_frame48(SDFrame48 *frame, uint8_t cmd, uint32_t arg, - bool is_response, bool gen_crc) +void sd_prepare_frame48(SDFrame48 *frame, uint8_t cmd, uint32_t arg, + bool is_response, bool gen_crc) { frame->cmd =3D cmd; frame->arg =3D arg; --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525450716710446.5451283822391; Fri, 4 May 2018 09:18:36 -0700 (PDT) Received: from localhost ([::1]:35191 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdPm-0001Pu-UG for importer@patchew.org; Fri, 04 May 2018 12:18:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55189) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd83-0003DJ-AA for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:16 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7x-0001iO-5Z for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:15 -0400 Received: from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:34141) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7x-0001i2-22 for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:09 -0400 Received: by mail-qt0-x244.google.com with SMTP id m5-v6so27964114qti.1 for ; Fri, 04 May 2018 09:00:08 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.09.00.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 09:00:08 -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=zgenHCLpEPBGKlOuhvC1X7UXLPAlfcPxqngfrfTlHPg=; b=jJZmJAGhQZc7oeaugY7GFZ+HVKzmF6FDAv1PM3UOJrA92jn+RO47l3EL5EhX5r6Prm ht+N3lhoo8Bex6FFzb5SUyzoQxY1/AkVNTQrx3SEo9M9yFEDfyhprAjfzScUgXnr/1P7 5e4YoJ89Gox8jWgJ3n8P1pJWNUo1DdTILjnF7qanQ4q3ixtuFEdisgTZgWqVlS0nFrPJ 7+oA97PcF3OC6/a57fE9SHOsixHGlJyLKEgQJHZBRSMrg9iDewBtiWiW96gFWiK0HKY6 egm/XwCQSUDh+6KEreZRzQ7o73XirPPJ2e0/MrbQpcmw8xiLQoSslhB0Fx0P11IGoOCA BwjA== 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=zgenHCLpEPBGKlOuhvC1X7UXLPAlfcPxqngfrfTlHPg=; b=VpRnAb9PDvmTbPgIW9cSJztTOZSlTmUxsRjcTiQYSvYPVZdsbGuD1ImkY9wJzg4q3q W3LXlzX6sBl3/xqfrQ2twCSTfMMhXponzVxKuMfcw3zcYG51VI9gi0JXKQp2ASxtXAtM Nj1Fy1H28njOf9dXdCX/CME1l23X14cVfPK27vSxGmlCofSZfu9Mrgtj1vVW1zaGJElC aqVvM2ZC7VFNE8a1jRNDRx4VUv3lPLFZj6Yqry6b2DL+OqvRlcm8qev8VVIK7jLuPTAM fZ8IuTDHooIxgyZXqWqLv4CLyorV0/UGkjwiIEePMyKSZ66Icb/vY7ipGGA5QkUg7PEX abvQ== X-Gm-Message-State: ALQs6tA+fLL4lVcwMoO+QWSRF/z8bSBVBc0XKxoGZr2/I3aRNt1NV3y+ TsYNO3jjEO6o9v5DYLtZzYs= X-Google-Smtp-Source: AB8JxZpoePSXQFilw8NRjFBh3mZswgl9BaqaQA9jVma0CBEr/EWMjEkCQ1Cn8DqYJuYCb+uAZeRbFw== X-Received: by 2002:aed:2ba3:: with SMTP id e32-v6mr24444032qtd.272.1525449608537; Fri, 04 May 2018 09:00:08 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:12 -0300 Message-Id: <20180504155918.21287-15-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 14/20] sdcard: Add test_sd_response_frame48_crc7 qtest (command response CRC7) 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 --- tests/sdcard-test.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests/sdcard-test.c b/tests/sdcard-test.c index 1358ee28c6..2de0a5a0ee 100644 --- a/tests/sdcard-test.c +++ b/tests/sdcard-test.c @@ -19,6 +19,11 @@ static void sd_prepare_request48(SDFrame48 *frame, uint8= _t cmd, uint32_t arg) sd_prepare_request(frame, cmd, arg, /* gen_crc */ true); } =20 +static void sd_prepare_response48(SDFrame48 *frame, uint8_t cmd, uint32_t = arg) +{ + sd_prepare_frame48(frame, cmd, arg, /* is_resp */ true, /* gen_crc */ = true); +} + static void test_sd_request_frame_crc7(void) { SDFrame48 frame; @@ -44,11 +49,29 @@ static void test_sd_request_frame_crc7(void) g_assert_cmphex(frame.crc, =3D=3D, 0x4d >> 1); } =20 +static void test_sd_response_frame48_crc7(void) +{ + SDFrame48 frame; + + /* response to CMD17 */ + sd_prepare_response48(&frame, 17, 0x00000900); + g_assert_cmphex(frame.crc, =3D=3D, 0b0110011); + + /* response to the APP_CMD */ + sd_prepare_response48(&frame, 55, 0x00000120); + g_assert_cmphex(frame.crc, =3D=3D, 0x41); + + /* response to CMD3 SEND_RELATIVE_ADDR (Relative Card Address is 0xb36= 8) */ + sd_prepare_response48(&frame, 3, 0xb3680500); + g_assert_cmphex(frame.crc, =3D=3D, 0x0c); +} + int main(int argc, char *argv[]) { g_test_init(&argc, &argv, NULL); =20 qtest_add_func("sd/req_crc7", test_sd_request_frame_crc7); + qtest_add_func("sd/resp48_crc7", test_sd_response_frame48_crc7); =20 return g_test_run(); } --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525450738088414.4541547886538; Fri, 4 May 2018 09:18:58 -0700 (PDT) Received: from localhost ([::1]:35195 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdQ9-0001pv-8W for importer@patchew.org; Fri, 04 May 2018 12:18:57 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55211) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd85-0003F5-K2 for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:22 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd7z-0001mT-Uv for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:17 -0400 Received: from mail-qk0-x243.google.com ([2607:f8b0:400d:c09::243]:39600) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd7z-0001m3-Q4 for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:11 -0400 Received: by mail-qk0-x243.google.com with SMTP id z75so16983317qkb.6 for ; Fri, 04 May 2018 09:00:11 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.09.00.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 09:00:10 -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=5XI4D7oMN/WWS7ZtohAeUbc6V90odl/DzXyf7+JIRh0=; b=M45XNNvhbpujruD/9WnTq4ZRYOyP7AbiNE3SFzKcL1Hm30TKFTJiYu7hbchAFGKafB 5CV1UdIk2Zwphfti2tpVmLCkKUgHvB8Fdtbo/wI+S2R4hcozvgnLCsPKeN1RB90uAv3d lqVvuw7/6D0Oir7FnxCwNfzE9CIG18NyttZ7FxCjIIg4A96NwaXZl9v3atUY56sW3KK9 P7VgI7+ndmfExqoFkcwCN3wNJpFcFfOUGFDE9c5ewD0MsIAvi9d4hL4kggjCUenLruS8 a8b+Yfk67rP19v8l4wPSqv1xkrmdM/mkWMdGBU1da2rVKk6nwpoOP9IHyvW7lhRIS0MC VuiQ== 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=5XI4D7oMN/WWS7ZtohAeUbc6V90odl/DzXyf7+JIRh0=; b=RNd90jh0d1OUbUnR1P+fmgJ06OrghA94uSS57hPJ5+COfZ66gvkq9b8qJ55BzRzk8C djIUkSINrX6qXJ0t8IM1Jj5len7Yj8U8/SfdYrguc2WKCD79F/2kb2i2zH8HcRmLPx9d nDjQoQPRQyPcuJIW9PdKkTLvnWRHW/u34BjwczaCSpePQnOqZzEVKsKpr7x6kT/4v8OL rys9N3XwOdF8qZdHrNofyj0/aHPo5NZcZfINA9jdorKCVLU0vnlmUlHUJw/jmPUjVtfY KS0XghNRKichfu9vzfNWkcUT5nVlD+uHUth9vfNd6gHyGcs/Zur6V/p44jbdFZsU9tSX me7A== X-Gm-Message-State: ALQs6tCYjO+hT8GSHHnhkB1xY9kjUxbMp1gJtUQrr6bsRIHBxq5QMadY 6cwVM2e9ad++WNL++u0Ut50= X-Google-Smtp-Source: AB8JxZpotWiENPDPTtLtpNB2NYqBr7+bnXHpR5MMn0h3jQYefHxepZT9aXrTR0qRGe3DgCCTCE51GA== X-Received: by 10.55.22.230 with SMTP id 99mr21670620qkw.90.1525449611197; Fri, 04 May 2018 09:00:11 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:13 -0300 Message-Id: <20180504155918.21287-16-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 15/20] sdcard: Add SDFrame136 struct and 136-bit SD response frames functions 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 The 'read CID/CSD register' request returns a 136-bit frame containing those 128-bit registers. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/sd/sd.h | 29 +++++++++++++++++++++++++++++ hw/sd/sdmmc-internal.c | 15 +++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index 13de1b30c3..c76be51b32 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -91,6 +91,17 @@ typedef struct SDFrame48 { uint8_t crc; } SDFrame48; =20 +/** + * SDFrame136: 136 bits CID or CSD responses + * + * @content: CID or CSD register + * @crc: 7-bit CRC checksum + */ +typedef struct SDFrame136 { + uint8_t content[15]; + uint8_t crc; +} SDFrame136; + typedef struct SDFrame48 SDRequest; =20 typedef struct SDState SDState; @@ -193,6 +204,14 @@ void sd_prepare_frame48(SDFrame48 *frame, uint8_t cmd,= uint32_t arg, */ void sd_update_frame48_checksum(SDFrame48 *frame, bool is_response); =20 +/** + * sd_update_frame136_checksum: + * @frame: the #SDFrame136 to verify + * + * Update the 16-bit CRC checksum of a SD 136-bit frame. + */ +void sd_update_frame136_checksum(SDFrame136 *frame); + /** * sd_verify_frame48_checksum: * @frame: the #SDFrame48 to verify @@ -204,6 +223,16 @@ void sd_update_frame48_checksum(SDFrame48 *frame, bool= is_response); */ bool sd_verify_frame48_checksum(SDFrame48 *frame, bool is_response); =20 +/** + * sd_verify_frame136_checksum: + * @frame: the #SDFrame48 to verify + * + * Verify the 16-bit CRC checksum of a SD 136-bit frame. + * + * Returns: A boolean indicating whether the frame 16-bit CRC is correct. + */ +bool sd_verify_frame136_checksum(SDFrame136 *frame); + /* 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/sdmmc-internal.c b/hw/sd/sdmmc-internal.c index c990cc9e8e..68350a2304 100644 --- a/hw/sd/sdmmc-internal.c +++ b/hw/sd/sdmmc-internal.c @@ -117,6 +117,11 @@ static uint8_t sd_calc_frame48_crc7(uint8_t cmd, uint3= 2_t arg, bool is_response) return sd_crc7(buffer, sizeof(buffer)); } =20 +static uint8_t sd_calc_frame136_crc7(SDFrame136 *frame) +{ + return (sd_crc7(frame->content, sizeof(frame->content)) << 1) | 1; +} + bool sd_verify_frame48_checksum(SDFrame48 *frame, bool is_response) { uint8_t crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg, is_respon= se); @@ -124,11 +129,21 @@ bool sd_verify_frame48_checksum(SDFrame48 *frame, boo= l is_response) return crc =3D=3D frame->crc; } =20 +bool sd_verify_frame136_checksum(SDFrame136 *frame) +{ + return sd_calc_frame136_crc7(frame) =3D=3D frame->crc; +} + void sd_update_frame48_checksum(SDFrame48 *frame, bool is_response) { frame->crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg, is_respons= e); } =20 +void sd_update_frame136_checksum(SDFrame136 *frame) +{ + frame->crc =3D (sd_crc7(frame->content, sizeof(frame->content)) << 1) = | 1; +} + void sd_prepare_frame48(SDFrame48 *frame, uint8_t cmd, uint32_t arg, bool is_response, bool gen_crc) { --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525450606529637.4354491052599; Fri, 4 May 2018 09:16:46 -0700 (PDT) Received: from localhost ([::1]:35181 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdO1-0008SL-Oy for importer@patchew.org; Fri, 04 May 2018 12:16:45 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55198) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd83-0003Dp-U2 for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:21 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd83-0001oE-6c for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:16 -0400 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]:34705) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd83-0001o5-2w for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:15 -0400 Received: by mail-qk0-x244.google.com with SMTP id p186so16986223qkd.1 for ; Fri, 04 May 2018 09:00:14 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.09.00.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 09:00:13 -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=1tXqRiiL0C0W9LLotz7Ff+Lmj7/vRdAmwabrSiTxHb4=; b=Iq7vWkGrDuB9ttLkdDvTnvP3Sp3Hx7b/VryhuoWXstBrmY6qaGdEMNKf4rpnCChhvf 1pSPRJ85UjZz+bqANc4kkp3ehPc+++oL8v1KFlY7kwTB/6kAvBiM0dtxiwiK8v2aHiIa 8XaeI9TUeAM81zYbXSdPSKkGGeZgpN4wfobCpbo3ZH2zXrt0B9CME1+oM+HRYLr5/oFR XXT+76p6TtSquTFrlLPoKVfbZRIy8Wn4GCKJXq1pOLQGP6wx8RUdhmf4TxkPtJ+0iGsg mLLMtcB9RVtzxb8i9ix6VthA2DA1/53gsUWuo6Ji9tKiY7lCswcPEt2Gee+1pesk/ZeA di9A== 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=1tXqRiiL0C0W9LLotz7Ff+Lmj7/vRdAmwabrSiTxHb4=; b=OU1eN33+pgPdY3gzpl11iBgOQy6ypBY92+Z162IVRvQ8wmwOXjKYBXouWaRLeqPJrN e7hDNOHo6dwimzrjwq/yp5Ezf3L8IUoa7iLnpB4rhMUWxvWXG3vXM4zOrdC20z7hK1Pm KqwLa+6DPIHOzl5G9NfCqorz9FAjKZoXxg8QnSysDjhfpB72IFChLfOoyyPi7QyYk2oc a6/T+58nOFMW7MHAxhNCigAlG0vldqmf1enk9c2/Q150XbkU+I3hqBA4w5lmG62SIlf8 x5xYlW3DdgM6NOiBuk4rbn6jEmhjGV5Qpk1Y6FCid9iBE1Vi1p53WookxqpezQ59RE45 8DQw== X-Gm-Message-State: ALQs6tDBOEVEnTHhRdlyDdKKPJzJn4CHIpS2YQhNKWm1PH4Juc1ch3vH B9VxfOJNHndc+vMpLUTwUbw= X-Google-Smtp-Source: AB8JxZpD8jbUIKLWyAX+U8unZNgeT60HCldwXYm40/OZSDzZpiacCS2onOMsllRah1qiYKH7BqCFvQ== X-Received: by 10.55.144.131 with SMTP id s125mr21646346qkd.42.1525449614252; Fri, 04 May 2018 09:00:14 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:14 -0300 Message-Id: <20180504155918.21287-17-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 16/20] sdcard: Add test_sd_response_frame136_crc7() qtest 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 --- tests/sdcard-test.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/sdcard-test.c b/tests/sdcard-test.c index 2de0a5a0ee..efcfbfc033 100644 --- a/tests/sdcard-test.c +++ b/tests/sdcard-test.c @@ -66,12 +66,25 @@ static void test_sd_response_frame48_crc7(void) g_assert_cmphex(frame.crc, =3D=3D, 0x0c); } =20 +static void test_sd_response_frame136_crc7(void) +{ + SDFrame136 frame; + + /* response to CMD2 ALL_SEND_CID */ + memcpy(&frame.content, + "\x1d\x41\x44\x53\x44\x20\x20\x20\x10\xa0\x40\x0b\xc1\x00\x88", + sizeof(frame.content)); + sd_update_frame136_checksum(&frame); + g_assert_cmphex(frame.crc, =3D=3D, 0xad); +} + int main(int argc, char *argv[]) { g_test_init(&argc, &argv, NULL); =20 qtest_add_func("sd/req_crc7", test_sd_request_frame_crc7); qtest_add_func("sd/resp48_crc7", test_sd_response_frame48_crc7); + qtest_add_func("sd/resp136_crc7", test_sd_response_frame136_crc7); =20 return g_test_run(); } --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525450910786328.22296894519627; Fri, 4 May 2018 09:21:50 -0700 (PDT) Received: from localhost ([::1]:35228 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdSw-0004lO-3Y for importer@patchew.org; Fri, 04 May 2018 12:21:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55243) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd8A-0003Ih-7B for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd85-0001pf-D9 for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:22 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:36118) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd85-0001pZ-9O for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:17 -0400 Received: by mail-qt0-x242.google.com with SMTP id q6-v6so27971016qtn.3 for ; Fri, 04 May 2018 09:00:17 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.09.00.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 09:00:16 -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=lQ+oC/YFB5NE7Ir3RzmGLL/iOoEu2VKXM7YvfZljB6o=; b=ZezFZrUY+N6f8dHwJWk1QGID9G82CF44CYk1aYfrek1QYXwuk1JX60EyaLfNEGwQOH YsuGYEBjTaLQwL7NEnOGlIZycIDKjUG9NhhxX2xTGt3ErYjkShZgKlCtjmJWewb9jEDo I8cUhNUFpkbeyqKbwiD9dJHyhSHK0ZWU5naxuEmkVFij2ae/ga2nMXOWBSXtBBiw1RFp JZL/ApjpPELXHJVY1Tx7Mkyntm0d3Upg+/rfnJFKjokCGKAbMancqMQ7okJFMzZsgYAo MraS8MZT+peaqUBe2nC8uIhnS7dR7JZL4A9LN8FfYL3Ot4ml9KFEEvWKdZE1QOMHEZSG pcDA== 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=lQ+oC/YFB5NE7Ir3RzmGLL/iOoEu2VKXM7YvfZljB6o=; b=AVjUt10soxKahdAqvEiB8ZC7bXAbHmkgJT05Zfna+oar17NhOdd7PeNy9kQjHvMV5B w0QoQMYKOMXOCvkjFZfxMW+WzubrmZexT+2BIj1JN156/dzJ0T0EvH2ErSSX52+tFuRP Lp8h2jwMcMvwZG6766ruYoq9qK4JwRzAvV3N/jvjkyuBUw6A5jLux1u4tcCm89wm5lzO xjHqBZIJCLiWXyxMtz7EOj6V+Vl/NcgjYMoKfL26cstbkj/+LM0nrMMOgYsNTL+u/bEl zIE3JhRvKgFYpd8dktKyhaYHn6iMBLHHvKWv2+hslqrDrZkGqx6sDVtY822PkrmtFQix E7Ww== X-Gm-Message-State: ALQs6tD1DvL9x6w/P4vHXwwA9lIBpcL+A6BApt0WVwhDP3WhvXPJJTfS LvBC5BU0MdDgeQAepp2Yurg= X-Google-Smtp-Source: AB8JxZqSKH9dUxxcjJjRgva1UeCiIY9ISllPOD5RuzXQ1qCpbs4VT+lOSWtPj+4we9tAeMPQ97VwfQ== X-Received: by 2002:ac8:2653:: with SMTP id v19-v6mr24288479qtv.126.1525449616739; Fri, 04 May 2018 09:00:16 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:15 -0300 Message-Id: <20180504155918.21287-18-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 17/20] sdcard: Add SDFrameData struct and data frame checksum functions 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 The block transfers data frames are upto 512 bytes and use a 16-bit CRC. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- include/hw/sd/sd.h | 29 +++++++++++++++++++++++++++++ hw/sd/sdmmc-internal.c | 10 ++++++++++ 2 files changed, 39 insertions(+) diff --git a/include/hw/sd/sd.h b/include/hw/sd/sd.h index c76be51b32..6bf9daf559 100644 --- a/include/hw/sd/sd.h +++ b/include/hw/sd/sd.h @@ -102,6 +102,17 @@ typedef struct SDFrame136 { uint8_t crc; } SDFrame136; =20 +/** + * SDFrameData: 512 bytes block transfers + * + * @content: block data + * @crc: 16-bit CRC checksum + */ +typedef struct SDFrameData { + uint8_t content[512]; + uint16_t crc; +} SDFrameData; + typedef struct SDFrame48 SDRequest; =20 typedef struct SDState SDState; @@ -212,6 +223,14 @@ void sd_update_frame48_checksum(SDFrame48 *frame, bool= is_response); */ void sd_update_frame136_checksum(SDFrame136 *frame); =20 +/** + * sd_update_framedata_checksum: + * @frame: the #SDFrameData to verify + * + * Update the 16-bit CRC checksum of a SD data frame (up to 512 bytes). + */ +void sd_update_framedata_checksum(SDFrameData *frame); + /** * sd_verify_frame48_checksum: * @frame: the #SDFrame48 to verify @@ -233,6 +252,16 @@ bool sd_verify_frame48_checksum(SDFrame48 *frame, bool= is_response); */ bool sd_verify_frame136_checksum(SDFrame136 *frame); =20 +/** + * sd_verify_framedata_checksum: + * @frame: the #SDFrameData to verify + * + * Verify the 16-bit CRC checksum of a SD data frame. + * + * Returns: A boolean indicating whether the frame 16-bit CRC is correct. + */ +bool sd_verify_framedata_checksum(SDFrameData *frame); + /* 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/sdmmc-internal.c b/hw/sd/sdmmc-internal.c index 68350a2304..0e82e69d99 100644 --- a/hw/sd/sdmmc-internal.c +++ b/hw/sd/sdmmc-internal.c @@ -134,6 +134,11 @@ bool sd_verify_frame136_checksum(SDFrame136 *frame) return sd_calc_frame136_crc7(frame) =3D=3D frame->crc; } =20 +bool sd_verify_framedata_checksum(SDFrameData *frame) +{ + return sd_crc16(frame->content, sizeof(frame->content)) =3D=3D frame->= crc; +} + void sd_update_frame48_checksum(SDFrame48 *frame, bool is_response) { frame->crc =3D sd_calc_frame48_crc7(frame->cmd, frame->arg, is_respons= e); @@ -144,6 +149,11 @@ void sd_update_frame136_checksum(SDFrame136 *frame) frame->crc =3D (sd_crc7(frame->content, sizeof(frame->content)) << 1) = | 1; } =20 +void sd_update_framedata_checksum(SDFrameData *frame) +{ + frame->crc =3D sd_crc16(frame->content, sizeof(frame->content)); +} + void sd_prepare_frame48(SDFrame48 *frame, uint8_t cmd, uint32_t arg, bool is_response, bool gen_crc) { --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525450936127166.67481442894234; Fri, 4 May 2018 09:22:16 -0700 (PDT) Received: from localhost ([::1]:35230 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdTH-00051p-6g for importer@patchew.org; Fri, 04 May 2018 12:22:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55276) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd8E-0003NR-3M for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd88-0001r7-C0 for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:26 -0400 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:44545) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd88-0001r0-7b for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:20 -0400 Received: by mail-qk0-x241.google.com with SMTP id z8so16989932qki.11 for ; Fri, 04 May 2018 09:00:20 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.09.00.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 09:00:19 -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=LXw6Y46Gbl1DJe7pGpYk8xOwyPzlejaO/V3ePgy56BY=; b=I87c/fjeS/6KtR6EJerga7pvZQL81yh832csfvXlekAfkD5IXQbgYoIDPCm7Dw/CEZ krWDdpWy+2KgMN5GFqjWIlr8J7PtSZCynXJHvHTE4agosRPOM09LQvgRKkwis+N19yIe 0ybtczTlXGfY++J3siz6Z9/ceZgFhuTSln4/h0WQZyl+h+egN9X2mfw/0gVDLGyq5Ia5 5fl2/bOHEXWCiWGTXP6JCgplOK8wnhD+5slYuVYsoZRBNqA7Cg0gqt5X48KZz3+IIJ+G dHKxrzHd4GMz2/KafSYZPEVug4xzHiSZuQMvGaXcBPA03Z8yXXIIYA8pP6hHVApHDQgq afAw== 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=LXw6Y46Gbl1DJe7pGpYk8xOwyPzlejaO/V3ePgy56BY=; b=M7rSkD15F6AQGpYCXVDyHgibzeZGlbFq5VUh3cY4IFiX1SAXs5K/RUFTe6KSjQSKCe fiijgSw6N24Cid/RWjS8RqGg5N3FgTMUy5BOtSDZZJmTE0tmzGYEQerFWpj8WctpWlQ3 qWG7fiKZGTJLKKW+1TFvlzumsnwwq+HXriJqxe8BpranQTS6WWGrw0eIDLgHYadIUAIi yXJ3VrIkW4XkNhbsLzk734ui4eavXTx09igqk+K6LgaSAjRsOmJhRP5gJIaqa549A39C JOWda/7Fyxt6sSjYKE/9Y9HEw+XPfu8t/H773J+mSqiLIgdEwC0OEzIsb1H6CKOjsXN1 r5XQ== X-Gm-Message-State: ALQs6tBf8z7bRmKUeJ91tN/aOoSb5KDiG4s1MJ3UFwpmeDfnJQxLtx1T ZJUslpSxXBBf2DT0Gnt3Uvv+29Ky X-Google-Smtp-Source: AB8JxZrFKHAztdwV2Ec/18A8pI7NSUd5ltUNuogKQyRCwu/IJK6bdWloWzd5r6nIq7q92scgoQBaIw== X-Received: by 10.55.31.199 with SMTP id n68mr22904671qkh.418.1525449619581; Fri, 04 May 2018 09:00:19 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:16 -0300 Message-Id: <20180504155918.21287-19-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 18/20] sdcard: Fix sd_crc16() 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 The current sd_crc16() function does not pass the Spec test, change it by a working one. Code generated with pycrc v0.9.1 (https://pycrc.org) using the configuratio= n: - Width =3D 16 - Poly =3D 0x1021 - XorIn =3D 0x0000 - ReflectIn =3D False - XorOut =3D 0x0000 - ReflectOut =3D False - Algorithm =3D bit-by-bit-fast Copyright of the generated source code =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D The code generated by pycrc is not considered a substantial portion of the software, therefore the licence does not cover the generated code, and the author of pycrc will not claim any copyright on the generated code. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sdmmc-internal.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/hw/sd/sdmmc-internal.c b/hw/sd/sdmmc-internal.c index 0e82e69d99..d6f9b3b51c 100644 --- a/hw/sd/sdmmc-internal.c +++ b/hw/sd/sdmmc-internal.c @@ -90,23 +90,31 @@ uint8_t sd_crc7(const void *message, size_t width) return shift_reg; } =20 -uint16_t sd_crc16(const void *message, size_t width) +/* 16 bit XMODEM CRC (polynomial 0x1021) */ +uint16_t sd_crc16(const void *data, size_t data_len) { - int i, bit; - uint16_t shift_reg =3D 0x0000; - const uint16_t *msg =3D (const uint16_t *)message; - width <<=3D 1; - - for (i =3D 0; i < width; i++, msg++) { - for (bit =3D 15; bit >=3D 0; bit--) { - shift_reg <<=3D 1; - if ((shift_reg >> 15) ^ ((*msg >> bit) & 1)) { - shift_reg ^=3D 0x1011; + const unsigned char *d =3D (const unsigned char *)data; + uint16_t crc =3D 0x0000; + unsigned char c; + unsigned int i; + bool bit; + + while (data_len--) { + c =3D *d++; + for (i =3D 0x80; i > 0; i >>=3D 1) { + bit =3D crc & 0x8000; + if (c & i) { + bit =3D !bit; + } + crc <<=3D 1; + if (bit) { + crc ^=3D 0x1021; } } + crc &=3D 0xffff; } =20 - return shift_reg; + return crc; } =20 static uint8_t sd_calc_frame48_crc7(uint8_t cmd, uint32_t arg, bool is_res= ponse) --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525450194118466.02070802066294; Fri, 4 May 2018 09:09:54 -0700 (PDT) Received: from localhost ([::1]:35090 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdHN-00021e-Cn for importer@patchew.org; Fri, 04 May 2018 12:09:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55258) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd8B-0003LK-KK for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd8A-0001re-Tt for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:23 -0400 Received: from mail-qt0-x242.google.com ([2607:f8b0:400d:c0d::242]:39876) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd8A-0001rY-Pi for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:22 -0400 Received: by mail-qt0-x242.google.com with SMTP id f1-v6so27975297qtj.6 for ; Fri, 04 May 2018 09:00:22 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.09.00.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 09:00:21 -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=eGdYr9/tFaRW/A3pStKqBr23EMRjp4nXGM+Jhc6/0tg=; b=tzgaVhLVhSCT1Zyde67aQmUt1+DOC3+VSYRqysT2OZzcDQ6h3vaYhr4kUrg3ZctxEG 064ijQWgfUxlTXN5OWUc/cKjWwjENqu5XcayXAossHRWMT/gJuqqPf5t1eIzwWDxR0v0 FxXheEDBUqwBWZ7cIdlvwJlvd3wsmrl5xUxxO6K2mVWzr7RgQWnAT/54wbkviRRT/pYV d21jUKK1dCfS+/GWpdeJJVx+Uzdc6Po4O77Mz7E+2M7U70/77zCvLyvGKryHYdTSimn5 pWK7Z1mDZDw4dYYCNmwDM9DvgrtW3KllRR9nnx7fRiPnZdZaH7mCMjBI6cCzyhuvHJmC eszg== 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=eGdYr9/tFaRW/A3pStKqBr23EMRjp4nXGM+Jhc6/0tg=; b=VQiErBTVI1PKNfFgIYwLyCep+JaPVTq62tLDZyvZB0ZkW17UpHp3UW3G/y+FwV2cAP TCSMfMB5jOZVFoS6JayB9TGo/YmOI9Ei3mmAMkKeHx+9otwAUN3w0eV/eu1HtvnRsxwn u75Uwpp16ua/ATIUTFiycN6fwN69aJoVm+7bVqtLv5b0y06YlOJoiQKWuXAgCtJ1wjP7 g2gj9Stpfr2T24jB8HbufDjNQBGST6JhPnJeAbFg0eWfzdoFU+DdCMwdk6KLA742QAN/ ApJZe8qIizJc1vUJY8qUNdWk0ifz0aSy2xn8CZUnvSYUI/lXITl6w+SIDMwHu7uZsB8D arzg== X-Gm-Message-State: ALQs6tBHJcfOAQdQHQb57NmyJdp4gr24HFaGUjSrxRnvAr+qLCinNLLy 9iRheU9lSpyBBh826wzt9+E= X-Google-Smtp-Source: AB8JxZqi2UvbGEQOehK+O69JbjXs00nFeC4AAuP1pL0Wpf+jqgCR8TU5I6XeVnTfIKOdEgmV8BafgA== X-Received: by 2002:a0c:b2c2:: with SMTP id d2-v6mr8190008qvf.16.1525449622276; Fri, 04 May 2018 09:00:22 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:17 -0300 Message-Id: <20180504155918.21287-20-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 19/20] sdcard: Add test_sd_data_frame_crc16() qtest 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 --- tests/sdcard-test.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/sdcard-test.c b/tests/sdcard-test.c index efcfbfc033..c51e8095b6 100644 --- a/tests/sdcard-test.c +++ b/tests/sdcard-test.c @@ -78,6 +78,15 @@ static void test_sd_response_frame136_crc7(void) g_assert_cmphex(frame.crc, =3D=3D, 0xad); } =20 +static void test_sd_data_frame_crc16(void) +{ + SDFrameData frame; + + memset(frame.content, 0xff, sizeof(frame.content)); + sd_update_framedata_checksum(&frame); + g_assert_cmphex(frame.crc, =3D=3D, 0x7fa1); +} + int main(int argc, char *argv[]) { g_test_init(&argc, &argv, NULL); @@ -85,6 +94,7 @@ int main(int argc, char *argv[]) qtest_add_func("sd/req_crc7", test_sd_request_frame_crc7); qtest_add_func("sd/resp48_crc7", test_sd_response_frame48_crc7); qtest_add_func("sd/resp136_crc7", test_sd_response_frame136_crc7); + qtest_add_func("sd/data_crc16", test_sd_data_frame_crc16); =20 return g_test_run(); } --=20 2.17.0 From nobody Wed Oct 29 20:36:34 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 1525450815834291.62220429973024; Fri, 4 May 2018 09:20:15 -0700 (PDT) Received: from localhost ([::1]:35203 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEdRO-00036h-Ob for importer@patchew.org; Fri, 04 May 2018 12:20:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55278) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fEd8E-0003Ne-B8 for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fEd8D-0001sE-Kw for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:26 -0400 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:46618) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fEd8D-0001s4-H6 for qemu-devel@nongnu.org; Fri, 04 May 2018 12:00:25 -0400 Received: by mail-qk0-x241.google.com with SMTP id s70so16972874qks.13 for ; Fri, 04 May 2018 09:00:25 -0700 (PDT) Received: from x1.local ([138.117.48.222]) by smtp.gmail.com with ESMTPSA id a83sm8587066qkb.22.2018.05.04.09.00.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 04 May 2018 09:00:24 -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=zJcN/T6ajfBjb1rf6if73bWgrVQ3YWcLBpqtD9Y51DU=; b=ZWthIHGZq5S5beW+kMax0I7SRzTIa88HiKfsXsKXtFvo4FaqQIN8CmZ/IBE2JTobrT RRjefWkTWwIoBs6YzmJaIZPfji/lKAg5BkdXVVFxDf3btLU6VHfa7V7uXlEFzpelmXGx ZG3X/TyDOWZXHs2W4/1mCofzxECMxGv08RgSuFK06/1aoYn+79ze9Mf7OmZW5Krjx0qp 7bU1osDpQKWgLExSdI9lWsYbPTtq7m2B2XAIIM+emz6K/Y397Zwv5ElMouajn2Qc4cx0 InRxDNtRXmlL1t/gAMX9TWqtMcAEVHOEyvikDBZ01DhNAP65cr6J1lPphj7L4FH/KFqh u+0Q== 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=zJcN/T6ajfBjb1rf6if73bWgrVQ3YWcLBpqtD9Y51DU=; b=i7D+k9L9oB+ie7DdPjzHw7X2PRcEisshWesDyzvJNEfyZdZqLL/n09LmW6uweHreP7 VxAIeNmJRAj78G4pJ940j6Hqm9AMp9v36QIz4mbniqk5bULnBrAn36Fw6sg63IfNl8oL iwtP4qxis//j3SD64z0rEdZClaUSXoSsM0vj1278li+71xfxxDX7TrR+JhKqm+cmHwTc 8bPLbLPl0IwWSOwOhGxHB9+lFL8rxekcgQr5IKAlRbK0Nzwv9YdV6xiZPe67rRGzVa/z MM1eS4nyzS/U7bkFh6uAtLtxcDnsjBCl0M37k4/4SytAElJg++k8fNOrMqaSx8h5qf8t 9rpQ== X-Gm-Message-State: ALQs6tCGwS6/fb8cu/UtgBbTlkSXYMXAIoUr0KzIt0n8/ivnNDVGdXqn WLaGfo/WJRkzQzL6ipubzC8= X-Google-Smtp-Source: AB8JxZpDzD40BL9yq73clHK8XAr6Y+WU3D3rduYIk9opg+pOHScHkLTP4mIOw9MKFxgMT1WY08JWgQ== X-Received: by 10.55.25.22 with SMTP id k22mr22469741qkh.436.1525449624803; Fri, 04 May 2018 09:00:24 -0700 (PDT) From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: Peter Maydell , "Edgar E . Iglesias" Date: Fri, 4 May 2018 12:59:18 -0300 Message-Id: <20180504155918.21287-21-f4bug@amsat.org> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180504155918.21287-1-f4bug@amsat.org> References: <20180504155918.21287-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 20/20] sdcard: Add test_sd_verify_cksum_frame48() qtest 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 --- tests/sdcard-test.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/sdcard-test.c b/tests/sdcard-test.c index c51e8095b6..fa45188e48 100644 --- a/tests/sdcard-test.c +++ b/tests/sdcard-test.c @@ -47,6 +47,8 @@ static void test_sd_request_frame_crc7(void) /* CMD2 ALL_SEND_CID */ sd_prepare_request48(&frame, 2, 0); g_assert_cmphex(frame.crc, =3D=3D, 0x4d >> 1); + + g_assert_true(sd_verify_frame48_checksum(&frame, false)); } =20 static void test_sd_response_frame48_crc7(void) @@ -64,6 +66,8 @@ static void test_sd_response_frame48_crc7(void) /* response to CMD3 SEND_RELATIVE_ADDR (Relative Card Address is 0xb36= 8) */ sd_prepare_response48(&frame, 3, 0xb3680500); g_assert_cmphex(frame.crc, =3D=3D, 0x0c); + + g_assert_true(sd_verify_frame48_checksum(&frame, true)); } =20 static void test_sd_response_frame136_crc7(void) @@ -87,6 +91,17 @@ static void test_sd_data_frame_crc16(void) g_assert_cmphex(frame.crc, =3D=3D, 0x7fa1); } =20 +static void test_sd_verify_cksum_frame48(void) +{ + SDFrame48 frame; + + sd_prepare_request48(&frame, 42, 0x12345678); + g_assert_true(sd_verify_frame48_checksum(&frame, false)); + + sd_prepare_response48(&frame, 69, 0x98765432); + g_assert_true(sd_verify_frame48_checksum(&frame, true)); +} + int main(int argc, char *argv[]) { g_test_init(&argc, &argv, NULL); @@ -95,6 +110,7 @@ int main(int argc, char *argv[]) qtest_add_func("sd/resp48_crc7", test_sd_response_frame48_crc7); qtest_add_func("sd/resp136_crc7", test_sd_response_frame136_crc7); qtest_add_func("sd/data_crc16", test_sd_data_frame_crc16); + qtest_add_func("sd/verify_cksum_frame48", test_sd_verify_cksum_frame48= ); =20 return g_test_run(); } --=20 2.17.0