From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:51887) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SwE8n-0001E1-M3 for qemu-devel@nongnu.org; Tue, 31 Jul 2012 11:13:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SwE8j-0001SZ-9i for qemu-devel@nongnu.org; Tue, 31 Jul 2012 11:13:45 -0400 Received: from mailout1.w1.samsung.com ([210.118.77.11]:52075) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SwE8j-0001SL-3n for qemu-devel@nongnu.org; Tue, 31 Jul 2012 11:13:41 -0400 Received: from eusync4.samsung.com (mailout1.w1.samsung.com [210.118.77.11]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0M8100L946BIBU80@mailout1.w1.samsung.com> for qemu-devel@nongnu.org; Tue, 31 Jul 2012 16:14:06 +0100 (BST) Received: from [106.109.9.180] by eusync4.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0M8100D4P6AKQE70@eusync4.samsung.com> for qemu-devel@nongnu.org; Tue, 31 Jul 2012 16:13:38 +0100 (BST) Message-id: <5017F61B.3060802@samsung.com> Date: Tue, 31 Jul 2012 19:13:31 +0400 From: Igor Mitsyanko MIME-version: 1.0 References: <1343417387-13953-1-git-send-email-i.mitsyanko@samsung.com> <1343417387-13953-5-git-send-email-i.mitsyanko@samsung.com> In-reply-to: Content-type: text/plain; charset=UTF-8; format=flowed Content-transfer-encoding: 7bit Subject: Re: [Qemu-devel] [PATCH V4 04/12] hw/sd.c: favour SD card type (SDSC or SDHC) when performing erase List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: kwolf@redhat.com, benoit.canet@gmail.com, wdongxu@linux.vnet.ibm.com, stefanha@linux.vnet.ibm.com, e.voevodin@samsung.com, qemu-devel@nongnu.org, armbru@redhat.com, andrew.zaborowski@intel.com, kyungmin.park@samsung.com, pbonzini@redhat.com On 07/31/2012 06:34 PM, Peter Maydell wrote: > On 27 July 2012 20:29, Igor Mitsyanko wrote: >> Standard capacity cards SDSC use byte unit address while SDHC and SDXC Cards use >> block unit address (512 bytes) when setting ERASE_START and ERASE_END with CMD32 >> and CMD33, we have to account for this. >> >> Signed-off-by: Igor Mitsyanko >> --- >> hw/sd.c | 6 ++++-- >> 1 files changed, 4 insertions(+), 2 deletions(-) >> >> diff --git a/hw/sd.c b/hw/sd.c >> index d0674d5..f7aa580 100644 >> --- a/hw/sd.c >> +++ b/hw/sd.c >> @@ -482,8 +482,10 @@ static void sd_erase(SDState *sd) >> return; >> } >> >> - start = sd_addr_to_wpnum(sd->erase_start); >> - end = sd_addr_to_wpnum(sd->erase_end); >> + start = sd_addr_to_wpnum(sd->ocr & (1 << 30) ? >> + (uint64_t)sd->erase_start * 512 : sd->erase_start); >> + end = sd_addr_to_wpnum(sd->ocr & (1 << 30) ? >> + (uint64_t)sd->erase_end * 512 : sd->erase_end); > > I think this would be a little clearer phrased as: > > uint64_t erase_start = sd->erase_start; > uint64_t erase_end = sd->erase_end; > > [...] > > if (extract32(sd->ocr, 30, 1)) { > /* High capacity memory card: erase units are 512 byte blocks */ > erase_start *= 512; > erase_end *= 512; > } > > start = sd_addr_to_wpnum(erase_start); > end = sd_addr_to_wpnum(erase_end); > > (I don't insist on the extract32() if you don't like it, but I > would like to avoid the repeated inline ?: ops.) > > -- PMM > > I like it, I extensively use your new fancy extract/deposit api in my local work.