Re: [PATCH 4/7] rockchip: mkimage: Add option to change image offset alignment
Quentin Schulz via U-Boot <[email protected]> Thu, 6 Aug 2026 14:34:24 +0200
| Newsgroups | gmane.comp.boot-loaders.u-boot.general,gmane.comp.boot-loaders.u-boot |
|---|---|
| Message-ID | <[email protected]> |
Hi Alexey, On 7/13/26 12:02 PM, Alexey Charkov wrote: > From: Jonas Karlman <[email protected]> > > The vendor boot_merger tool support a ALIGN parameter that is used to > define offset alignment of the embedded images. > > Vendor use this for RK3576 to change offset alignment from the common > 2 KiB to 4 KiB, presumably it may have something to do with UFS. > Testing with eMMC has shown that using a 512-byte alignment also work. > > Add support for overriding offset alignment in case this is needed for > e.g. RK3576 in the future. > So this is lacking some information. Reading this commit log I thought we just implement this "because we can", which I really don't like, but we actually make use of this in patch 7 (without justification). > Signed-off-by: Jonas Karlman <[email protected]> > Signed-off-by: Alexey Charkov <[email protected]> > --- > tools/rkcommon.c | 75 ++++++++++++++++++++++++++++++++++++-------------------- > tools/rkcommon.h | 2 -- > 2 files changed, 49 insertions(+), 28 deletions(-) > > diff --git a/tools/rkcommon.c b/tools/rkcommon.c > index 992c90791ffc..b413cd3f7e49 100644 > --- a/tools/rkcommon.c > +++ b/tools/rkcommon.c > @@ -140,6 +140,7 @@ struct spl_info { > const uint32_t spl_size; > const bool spl_rc4; > const uint32_t header_ver; > + const uint32_t align; Please add documentation to the structure so we know what this stores, in which unit, etc... > }; > > static struct spl_info spl_infos[] = { > @@ -200,14 +201,19 @@ static struct spl_info *rkcommon_get_spl_info(char *imagename) > return NULL; > } > > -static int rkcommon_get_aligned_size(struct image_tool_params *params, > - const char *fname) Do the rename from rkcommon_get_aligned_size to rkcommon_get_aligned_filesize in a separate patch, it should make this diff here easier to review then. > +static bool rkcommon_is_header_v2(struct image_tool_params *params) > { > - int size; > + struct spl_info *info = rkcommon_get_spl_info(params->imagename); > > - size = imagetool_get_filesize(params, fname); > - if (size < 0) > - return -1; > + return (info->header_ver == RK_HEADER_V2); > +} > + > +static int rkcommon_get_aligned_size(struct image_tool_params *params, int size) > +{ > + struct spl_info *info = rkcommon_get_spl_info(params->imagename); > + > + if (info->align) > + return ROUND(size, info->align * RK_BLK_SIZE); Please always set align to a valid value so we don't have to do this check. The default seems to be 4 (RK_SIZE_ALIGN/RK_BLK_SIZE) so set it for all currently supported SoC to that value. > > /* > * Pad to a 2KB alignment, as required for init/boot size by the ROM > @@ -216,6 +222,27 @@ static int rkcommon_get_aligned_size(struct image_tool_params *params, > return ROUND(size, RK_SIZE_ALIGN); > } > > +static int rkcommon_get_header_size(struct image_tool_params *params) > +{ Can we be consistent here and rename this to rkcommon_get_aligned_headersize (you can add an underscore between header and size, I just would like "aligned_" to be part of the function name to match rkcommon_get_aligned_filesize and user expectations). Cheers, Quentin