
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 samuel@sholland.org
Reviewed-by: Andre Przywara andre.przywara@arm.com
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")) {