[U-Boot] [RFC PATCH v2 12/15] main: Use autoconf in main_loop()
Joe Hershberger
joe.hershberger at gmail.com
Sun Feb 24 22:33:45 CET 2013
Hi Simon,
On Sun, Feb 24, 2013 at 11:26 AM, Simon Glass <sjg at chromium.org> wrote:
> Convert main_loop() over to use autoconf, and add a required prototype
> to common.h.
>
> The do_mdm_init variable is now always defined, but this seems like an
> acceptable compromise.
>
> In fdt_support.h the #ifdef used is CONFIG_OF_LIBFDT. However, even if
> this is not defined we want to make the functions available for our
> conditional-compilation scheme. The only place where we really don't
> have access to these support functions is when USE_HOSTCC is defined.
> So change the #ifdef to that.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
> Changes in v2: None
>
> common/main.c | 77 +++++++++++++++++++++++----------------------------
> include/common.h | 1 +
> include/fdt_support.h | 4 +--
> 3 files changed, 37 insertions(+), 45 deletions(-)
>
> diff --git a/common/main.c b/common/main.c
> index 3966321..40a79b7 100644
> --- a/common/main.c
> +++ b/common/main.c
> @@ -63,10 +63,7 @@ static int retry_time = -1; /* -1 so can call readline before main_loop */
>
> #define endtick(seconds) (get_ticks() + (uint64_t)(seconds) * get_tbclk())
>
> -#ifdef CONFIG_MODEM_SUPPORT
> int do_mdm_init = 0;
> -extern void mdm_init(void); /* defined in board.c */
> -#endif
>
> /***************************************************************************
> * Watch for 'delay' seconds for autoboot stop or autoboot delay string.
> @@ -383,51 +380,47 @@ void main_loop(void)
> int len;
> int rc = 1;
> int flag;
> -#ifdef CONFIG_PREBOOT
> - char *p;
> -#endif
>
> bootstage_mark_name(BOOTSTAGE_ID_MAIN_LOOP, "main_loop");
>
> -#ifdef CONFIG_MODEM_SUPPORT
> - debug("DEBUG: main_loop: do_mdm_init=%d\n", do_mdm_init);
> - if (do_mdm_init) {
> - char *str = strdup(getenv("mdm_cmd"));
> - setenv("preboot", str); /* set or delete definition */
> - if (str != NULL)
> - free(str);
> - mdm_init(); /* wait for modem connection */
> + if (autoconf_modem_support()) {
Why not just remove do_mdm_init and use gd->do_mdm_init here?
> + debug("DEBUG: main_loop: do_mdm_init=%d\n", do_mdm_init);
> + if (do_mdm_init) {
> + char *str = strdup(getenv("mdm_cmd"));
> +
> + setenv("preboot", str); /* set or delete definition */
> + if (str != NULL)
> + free(str);
> + mdm_init(); /* wait for modem connection */
> + }
> }
> -#endif /* CONFIG_MODEM_SUPPORT */
>
> -#ifdef CONFIG_VERSION_VARIABLE
> - {
> + if (autoconf_version_variable())
> setenv("ver", version_string); /* set version variable */
> - }
> -#endif /* CONFIG_VERSION_VARIABLE */
>
> -#ifdef CONFIG_SYS_HUSH_PARSER
> - u_boot_hush_start();
> -#endif
> + if (autoconf_sys_hush_parser())
> + u_boot_hush_start();
>
> -#if defined(CONFIG_HUSH_INIT_VAR)
> - hush_init_var();
> -#endif
> + if (autoconf_hush_init_var())
> + hush_init_var();
> +
> + if (autoconf_preboot()) {
> + char *p = getenv("preboot");
> +
> + if (p) {
> + int prev;
>
> -#ifdef CONFIG_PREBOOT
> - p = getenv("preboot");
> - if (p) {
> -# ifdef CONFIG_AUTOBOOT_KEYED
> - int prev = disable_ctrlc(1); /* disable Control C checking */
> -# endif
> + /* disable Control C checking */
> + if (autoconf_autoboot_keyed())
> + prev = disable_ctrlc(1);
>
> - run_command_list(p, -1, 0);
> + run_command_list(p, -1, 0);
>
> -# ifdef CONFIG_AUTOBOOT_KEYED
> - disable_ctrlc(prev); /* restore Control C checking */
> -# endif
> + /* restore Control C checking */
> + if (autoconf_autoboot_keyed())
> + disable_ctrlc(prev);
> + }
> }
> -#endif /* CONFIG_PREBOOT */
>
> if (autoconf_update_tftp())
> update_tftp(0UL);
> @@ -435,9 +428,8 @@ void main_loop(void)
> if (autoconf_has_bootdelay() && autoconf_bootdelay() >= 0)
> process_boot_delay();
>
> -#if defined CONFIG_OF_CONTROL
> - set_working_fdt_addr((void *)gd->fdt_blob);
> -#endif /* CONFIG_OF_CONTROL */
> + if (autoconf_of_control() && autoconf_of_libfdt())
Why are you adding an additional condition on autoconf_of_libfdt()?
> + set_working_fdt_addr((void *)gd->fdt_blob);
>
> /*
> * Main Loop for Monitor Command Processing
> @@ -472,14 +464,13 @@ void main_loop(void)
> }
>
> if (len == -1)
> - puts ("<INTERRUPT>\n");
> + puts("<INTERRUPT>\n");
> else
> rc = run_command(lastcommand, flag);
>
> - if (rc <= 0) {
> - /* invalid command or not repeatable, forget it */
> + /* If an invalid command or not repeatable, forget it */
> + if (rc <= 0)
> lastcommand[0] = 0;
> - }
> }
> }
>
> diff --git a/include/common.h b/include/common.h
> index 1457349..e5eb882 100644
> --- a/include/common.h
> +++ b/include/common.h
> @@ -310,6 +310,7 @@ extern ulong monitor_flash_len;
> int mac_read_from_eeprom(void);
> extern u8 _binary_dt_dtb_start[]; /* embedded device tree blob */
> int set_cpu_clk_info(void);
> +extern int mdm_init(void); /* defined in board.c */
>
> /**
> * Show the DRAM size in a board-specific way
> diff --git a/include/fdt_support.h b/include/fdt_support.h
> index 2cccc35..cf8f5e0 100644
> --- a/include/fdt_support.h
> +++ b/include/fdt_support.h
> @@ -24,7 +24,7 @@
> #ifndef __FDT_SUPPORT_H
> #define __FDT_SUPPORT_H
>
> -#ifdef CONFIG_OF_LIBFDT
> +#ifndef USE_HOSTCC
>
> #include <libfdt.h>
>
> @@ -132,5 +132,5 @@ static inline int fdt_status_disabled_by_alias(void *fdt, const char* alias)
> return fdt_set_status_by_alias(fdt, alias, FDT_STATUS_DISABLED, 0);
> }
>
> -#endif /* ifdef CONFIG_OF_LIBFDT */
> +#endif /* ifdef USE_HOSTCC */
> #endif /* ifndef __FDT_SUPPORT_H */
> --
> 1.8.1.3
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
Reviewed-by: Joe Hershberger <joe.hershberger at ni.com>
More information about the U-Boot
mailing list