qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH V4 04/12] hw/sd.c: favour SD card type (SDSC or


From: Igor Mitsyanko
Subject: Re: [Qemu-devel] [PATCH V4 04/12] hw/sd.c: favour SD card type (SDSC or SDHC) when performing erase
Date: Tue, 31 Jul 2012 19:13:31 +0400
User-agent: Mozilla/5.0 (X11; Linux i686; rv:14.0) Gecko/20120714 Thunderbird/14.0

On 07/31/2012 06:34 PM, Peter Maydell wrote:
On 27 July 2012 20:29, Igor Mitsyanko <address@hidden> 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 <address@hidden>
---
  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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]