diff mbox series

[v47,11/19] hw/sd/sdcard: Add eMMC 'boot-size' property

Message ID 20240709152556.52896-12-philmd@linaro.org (mailing list archive)
State New, archived
Headers show
Series [v47,01/19] hw/sd/sdcard: Basis for eMMC support | expand

Commit Message

Philippe Mathieu-Daudé July 9, 2024, 3:25 p.m. UTC
Avoid hardcoding 1MiB boot size in EXT_CSD_BOOT_MULT,
expose it as QOM property.

By default, do not use any size. Board is responsible
to set the boot size property.

Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
 hw/sd/sd.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Cédric Le Goater July 9, 2024, 3:45 p.m. UTC | #1
On 7/9/24 5:25 PM, Philippe Mathieu-Daudé wrote:
> Avoid hardcoding 1MiB boot size in EXT_CSD_BOOT_MULT,
> expose it as QOM property.
> 
> By default, do not use any size. Board is responsible
> to set the boot size property.
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>

I would move this patch at the end with the other patches adding
boot support.


Thanks,

C.



> ---
>   hw/sd/sd.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/sd/sd.c b/hw/sd/sd.c
> index c809961418..df0e2345c0 100644
> --- a/hw/sd/sd.c
> +++ b/hw/sd/sd.c
> @@ -129,6 +129,7 @@ struct SDState {
>       /* Static properties */
>   
>       uint8_t spec_version;
> +    uint64_t boot_part_size;
>       BlockBackend *blk;
>   
>       const SDProto *proto;
> @@ -490,7 +491,8 @@ static void mmc_set_ext_csd(SDState *sd, uint64_t size)
>       sd->ext_csd[EXT_CSD_TRIM_MULT] = 0x1; /* Trim multiplier */
>       sd->ext_csd[EXT_CSD_SEC_FEATURE_SUPPORT] = 0x15; /* Secure feature */
>       sd->ext_csd[EXT_CSD_BOOT_INFO] = 0x7; /* Boot information */
> -    sd->ext_csd[EXT_CSD_BOOT_MULT] = 0x8; /* Boot partition size. 128KB unit */
> +                                     /* Boot partition size. 128KB unit */
> +    sd->ext_csd[EXT_CSD_BOOT_MULT] = sd->boot_part_size / (128 * KiB);
>       sd->ext_csd[EXT_CSD_ACC_SIZE] = 0x6; /* Access size */
>       sd->ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] = 0x4; /* HC Erase unit size */
>       sd->ext_csd[EXT_CSD_ERASE_TIMEOUT_MULT] = 0x01; /* HC erase timeout */
> @@ -2693,6 +2695,7 @@ static Property sd_properties[] = {
>   };
>   
>   static Property emmc_properties[] = {
> +    DEFINE_PROP_UINT64("boot-size", SDState, boot_part_size, 0),
>       DEFINE_PROP_END_OF_LIST()
>   };
>
diff mbox series

Patch

diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index c809961418..df0e2345c0 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -129,6 +129,7 @@  struct SDState {
     /* Static properties */
 
     uint8_t spec_version;
+    uint64_t boot_part_size;
     BlockBackend *blk;
 
     const SDProto *proto;
@@ -490,7 +491,8 @@  static void mmc_set_ext_csd(SDState *sd, uint64_t size)
     sd->ext_csd[EXT_CSD_TRIM_MULT] = 0x1; /* Trim multiplier */
     sd->ext_csd[EXT_CSD_SEC_FEATURE_SUPPORT] = 0x15; /* Secure feature */
     sd->ext_csd[EXT_CSD_BOOT_INFO] = 0x7; /* Boot information */
-    sd->ext_csd[EXT_CSD_BOOT_MULT] = 0x8; /* Boot partition size. 128KB unit */
+                                     /* Boot partition size. 128KB unit */
+    sd->ext_csd[EXT_CSD_BOOT_MULT] = sd->boot_part_size / (128 * KiB);
     sd->ext_csd[EXT_CSD_ACC_SIZE] = 0x6; /* Access size */
     sd->ext_csd[EXT_CSD_HC_ERASE_GRP_SIZE] = 0x4; /* HC Erase unit size */
     sd->ext_csd[EXT_CSD_ERASE_TIMEOUT_MULT] = 0x01; /* HC erase timeout */
@@ -2693,6 +2695,7 @@  static Property sd_properties[] = {
 };
 
 static Property emmc_properties[] = {
+    DEFINE_PROP_UINT64("boot-size", SDState, boot_part_size, 0),
     DEFINE_PROP_END_OF_LIST()
 };