From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Andr=c3=a9_Przywara?= Date: Tue, 22 Sep 2020 01:38:27 +0100 Subject: [PATCH 2/8] sunxi: board: Add a helper to get the SPL DT name In-Reply-To: <20200903050716.48488-3-samuel@sholland.org> References: <20200903050716.48488-1-samuel@sholland.org> <20200903050716.48488-3-samuel@sholland.org> Message-ID: <8a0ff79f-ac55-9fe8-50a3-7f6b9d5a52ec@arm.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 03/09/2020 06:07, Samuel Holland wrote: > This moves the validity checking and typecasts all to one place away > from the string comparison logic, and it detangles the compile-time > and runtime control flow. > > The new helper will also be used by U-Boot proper in a future commit. > > Signed-off-by: Samuel Holland Reviewed-by: Andre Przywara Thanks, Andre > --- > board/sunxi/board.c | 26 +++++++++++++++++--------- > 1 file changed, 17 insertions(+), 9 deletions(-) > > diff --git a/board/sunxi/board.c b/board/sunxi/board.c > index 674e6816d2d..5c9b811f27a 100644 > --- a/board/sunxi/board.c > +++ b/board/sunxi/board.c > @@ -319,6 +319,17 @@ static struct boot_file_head * get_spl_header(uint8_t req_version) > return spl; > } > > +static const char *get_spl_dt_name(void) > +{ > + struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); > + > + /* Check if there is a DT name stored in the SPL header. */ > + if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) > + return (char *)spl + spl->dt_name_offset; > + > + return NULL; > +} > + > int dram_init(void) > { > struct boot_file_head *spl = get_spl_header(SPL_DRAM_HEADER_VERSION); > @@ -891,20 +902,17 @@ int ft_board_setup(void *blob, struct bd_info *bd) > #ifdef CONFIG_SPL_LOAD_FIT > int board_fit_config_name_match(const char *name) > { > - struct boot_file_head *spl = get_spl_header(SPL_DT_HEADER_VERSION); > - const char *best_dt_name = (const char *)spl; > + const char *best_dt_name = get_spl_dt_name(); > > - /* Check if there is a DT name stored in the SPL header and use that. */ > - if (spl != INVALID_SPL_HEADER && spl->dt_name_offset) { > - best_dt_name += spl->dt_name_offset; > - } else { > #ifdef CONFIG_DEFAULT_DEVICE_TREE > + if (best_dt_name == NULL) > best_dt_name = CONFIG_DEFAULT_DEVICE_TREE; > -#else > - return 0; > #endif > - }; > > + if (best_dt_name == NULL) { > + /* No DT name was provided, so accept the first config. */ > + return 0; > + } > #ifdef CONFIG_PINE64_DT_SELECTION > /* Differentiate the two Pine64 board DTs by their DRAM size. */ > if (strstr(name, "-pine64") && strstr(best_dt_name, "-pine64")) { >