From nobody Tue May 7 02:42:16 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.128.44 as permitted sender) client-ip=209.85.128.44; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-f44.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.44 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1605610348; cv=none; d=zohomail.com; s=zohoarc; b=Y7Ec33AybUnqPqQ3cufybX5Ku0xKpl3ywz5hmkpJRR4jEqEb8+ceUtbgujXOYRLaCze6Lh4uYWMT9Rd7hG6WuzH4N15CRDK/LFV1S6UXTQ8i8ii7vydbo6xrWkd/XMX01JKEb6g88y5lNdHJcH5GYPc5R7Pw99FjlR1xrjXng4Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605610348; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=QcIRTqJWAxUI4wqXZlNdJ3yOnii0HylN6UXy5e3pkQw=; b=RKQ2eFXYKWlXpF52CbaZjVm90QWt/1X2FviKSN1q4NRnWpjnseOY7s0TKZrBpnzS52Z3pa9F5UyAOwe68wsz+38fnTZexGL8nnMBzHLQR9V/vtTFS90za2lfoOAZdq/FrDiMHVxLJ6aVuOfbs/cxUIQS8DgdBy+sM0Ig8IpIWUQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.44 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) by mx.zohomail.com with SMTPS id 1605610348661933.9563883370997; Tue, 17 Nov 2020 02:52:28 -0800 (PST) Received: by mail-wm1-f44.google.com with SMTP id h2so2797850wmm.0 for ; Tue, 17 Nov 2020 02:52:28 -0800 (PST) Return-Path: Return-Path: Received: from x1w.redhat.com (234.red-83-42-66.dynamicip.rima-tde.net. [83.42.66.234]) by smtp.gmail.com with ESMTPSA id t23sm2820049wmn.4.2020.11.17.02.52.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Nov 2020 02:52:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=QcIRTqJWAxUI4wqXZlNdJ3yOnii0HylN6UXy5e3pkQw=; b=R+UXGMk/oCz2FpFXmRqqCRZIO7NfaUHvLaElud5JbUWPlMo9BjQU4uu5atHVPcnYop z9B2+3nkLwqPtE0MOm5cLKpDQdu+kTxJDH2mNcVTqsbmkezwvvAJQey14dDA4B6maAca c7Qh+ubE7QvjxCAtKudHUCo8F6ScG/wTDPB9zqBZBn/7wMnAuObrnmAtuOzj5a+Uzw1A Rgbb1mypw+H/eP4AV48be/lEDSwddMws+uya0keB5NMxFOXQPtkR/x4L1ABXKPjcgP/v cI6cVwNyOSJeoXVwCNWddWVs1GGuYfrgw/CV4DlMTJk7NhNOLgWSC3suaokboFbG3epc g7qQ== 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=QcIRTqJWAxUI4wqXZlNdJ3yOnii0HylN6UXy5e3pkQw=; b=FJEKjG96puAlzJoiA/veWLrwm11ItpsAhBOLiWXnrFGCadDWO/sPOeuHbFfLYYlpzf 4XIwPsvZzl7k4rSkofT3RKhD9uH8cCmCYkPVtKTxbT+VzLWG2e0YmUPu1a6C/B5mXAXT AAQaGjYBU13PwBmyGeVflbVU6vgCG23y9JD9trWG1SD9RYQl1zWokPqgOoYAT88hmZDC MWfC1pLWj3xXmqr23mD0pW9LRe17JvAsCehI5DGKLxD2g0lIU30Zo+736pcqFUhXDkh+ ltO+y39ZWvm9sHQb9dRfjfyW28f5weqdDqwYrJr0USjGeRTrzBtx409gX2uyfr2gQQvM JzAQ== X-Gm-Message-State: AOAM533C8q0oaik6tO13vQNrAWDDY44Z7pJm13+oa/FZhXT6Ytc0R7Ww 84LWfIxqepGw8GD9Oib6/4M= X-Google-Smtp-Source: ABdhPJyOJBsjlp7PSnVq/5zPSiOkv3V9l0R29irm/JjNeakRf8H3lawn6oxLCYxGusj7bLnOSJz+Fg== X-Received: by 2002:a05:600c:2252:: with SMTP id a18mr3637465wmm.139.1605610346867; Tue, 17 Nov 2020 02:52:26 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-block@nongnu.org, Bin Meng , Niek Linnenbank Subject: [PULL 1/1] hw/sd: Fix 2 GiB card CSD register values Date: Tue, 17 Nov 2020 11:52:19 +0100 Message-Id: <20201117105219.1185736-2-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201117105219.1185736-1-f4bug@amsat.org> References: <20201117105219.1185736-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) From: Bin Meng Per the SD spec, to indicate a 2 GiB card, BLOCK_LEN shall be 1024 bytes, hence the READ_BL_LEN field in the CSD register shall be 10 instead of 9. This fixes the acceptance test error for the NetBSD 9.0 test of the Orange Pi PC that has an expanded SD card image of 2 GiB size. Fixes: 6d2d4069c47e ("hw/sd: Correct the maximum size of a Standard Capacit= y SD Memory Card") Reported-by: Niek Linnenbank Signed-off-by: Bin Meng Tested-by: Niek Linnenbank Message-Id: <20201025152357.11865-1-bmeng.cn@gmail.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- hw/sd/sd.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/hw/sd/sd.c b/hw/sd/sd.c index 30913826145..1842c037978 100644 --- a/hw/sd/sd.c +++ b/hw/sd/sd.c @@ -389,10 +389,17 @@ static const uint8_t sd_csd_rw_mask[16] =3D { =20 static void sd_set_csd(SDState *sd, uint64_t size) { - uint32_t csize =3D (size >> (CMULT_SHIFT + HWBLOCK_SHIFT)) - 1; + int hwblock_shift =3D HWBLOCK_SHIFT; + uint32_t csize; uint32_t sectsize =3D (1 << (SECTOR_SHIFT + 1)) - 1; uint32_t wpsize =3D (1 << (WPGROUP_SHIFT + 1)) - 1; =20 + /* To indicate 2 GiB card, BLOCK_LEN shall be 1024 bytes */ + if (size =3D=3D SDSC_MAX_CAPACITY) { + hwblock_shift +=3D 1; + } + csize =3D (size >> (CMULT_SHIFT + hwblock_shift)) - 1; + if (size <=3D SDSC_MAX_CAPACITY) { /* Standard Capacity SD */ sd->csd[0] =3D 0x00; /* CSD structure */ sd->csd[1] =3D 0x26; /* Data read access-time-1 */ @@ -400,7 +407,7 @@ static void sd_set_csd(SDState *sd, uint64_t size) sd->csd[3] =3D 0x32; /* Max. data transfer rate: 25 MHz */ sd->csd[4] =3D 0x5f; /* Card Command Classes */ sd->csd[5] =3D 0x50 | /* Max. read data block length */ - HWBLOCK_SHIFT; + hwblock_shift; sd->csd[6] =3D 0xe0 | /* Partial block for read allowed */ ((csize >> 10) & 0x03); sd->csd[7] =3D 0x00 | /* Device size */ @@ -414,9 +421,9 @@ static void sd_set_csd(SDState *sd, uint64_t size) sd->csd[11] =3D 0x00 | /* Write protect group size */ ((sectsize << 7) & 0x80) | wpsize; sd->csd[12] =3D 0x90 | /* Write speed factor */ - (HWBLOCK_SHIFT >> 2); + (hwblock_shift >> 2); sd->csd[13] =3D 0x20 | /* Max. write data block length */ - ((HWBLOCK_SHIFT << 6) & 0xc0); + ((hwblock_shift << 6) & 0xc0); sd->csd[14] =3D 0x00; /* File format group */ } else { /* SDHC */ size /=3D 512 * KiB; --=20 2.26.2