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 |
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 --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() };
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(-)