[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 2/3] hw/sd: sd: Correct the maximum size of a Standard Cap
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v2 2/3] hw/sd: sd: Correct the maximum size of a Standard Capacity SD Memory Card |
Date: |
Mon, 17 Aug 2020 12:06:43 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 |
On 8/17/20 12:03 PM, Bin Meng wrote:
> Per the SD spec, Standard Capacity SD Memory Card (SDSC) supports
> capacity up to and including 2 GiB.
>
> Fixes: 2d7adea4fe ("hw/sd: Support SDHC size cards")
> Signed-off-by: Bin Meng <bin.meng@windriver.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
>
> Changes in v2:
> - fix SDSC size check in sd_set_csd() too
>
> hw/sd/sd.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/hw/sd/sd.c b/hw/sd/sd.c
> index 3226404..254d713 100644
> --- a/hw/sd/sd.c
> +++ b/hw/sd/sd.c
> @@ -50,6 +50,8 @@
>
> //#define DEBUG_SD 1
>
> +#define SDSC_MAX_CAPACITY (2 * GiB)
> +
> typedef enum {
> sd_r0 = 0, /* no response */
> sd_r1, /* normal response command */
> @@ -313,7 +315,7 @@ static void sd_ocr_powerup(void *opaque)
> /* card power-up OK */
> sd->ocr = FIELD_DP32(sd->ocr, OCR, CARD_POWER_UP, 1);
>
> - if (sd->size > 1 * GiB) {
> + if (sd->size > SDSC_MAX_CAPACITY) {
> sd->ocr = FIELD_DP32(sd->ocr, OCR, CARD_CAPACITY, 1);
> }
> }
> @@ -385,7 +387,7 @@ static void sd_set_csd(SDState *sd, uint64_t size)
> uint32_t sectsize = (1 << (SECTOR_SHIFT + 1)) - 1;
> uint32_t wpsize = (1 << (WPGROUP_SHIFT + 1)) - 1;
>
> - if (size <= 1 * GiB) { /* Standard Capacity SD */
> + if (size <= SDSC_MAX_CAPACITY) { /* Standard Capacity SD */
> sd->csd[0] = 0x00; /* CSD structure */
> sd->csd[1] = 0x26; /* Data read access-time-1 */
> sd->csd[2] = 0x00; /* Data read access-time-2 */
>