[U-Boot] [PATCH v5 012/101] board_r: Move early-timer init later

Bin Meng bmeng.cn at gmail.com
Tue Nov 26 06:11:06 UTC 2019


Hi Simon,

On Mon, Nov 25, 2019 at 12:11 PM Simon Glass <sjg at chromium.org> wrote:
>
> At present the early timer init happens as soon as driver mode is set up.

mode -> model

> This makes it impossible to do any in that needs driver model but must run

in -> thing?

> before devices are problem (as needed with Intel's FSP-S, for example).

problem -> probed?

>
> In any case it is not a good idea to tie probing of particular drivers too
> closely to the DM init.
>
> Create a new function to init the timer and put it a bit later in the
> sequence.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> Changes in v5: None
> Changes in v4:
> - Add new patch to move early-timer init later
>
> Changes in v3: None
> Changes in v2: None
>
>  common/board_r.c        | 19 ++++++++++++++-----
>  drivers/pinctrl/Kconfig | 14 ++++++++++++++
>  2 files changed, 28 insertions(+), 5 deletions(-)
>
> diff --git a/common/board_r.c b/common/board_r.c
> index e385696a6d..70736397e4 100644
> --- a/common/board_r.c
> +++ b/common/board_r.c
> @@ -306,16 +306,24 @@ static int initr_dm(void)
>         bootstage_accum(BOOTSTATE_ID_ACCUM_DM_R);
>         if (ret)
>                 return ret;
> -#ifdef CONFIG_TIMER_EARLY
> -       ret = dm_timer_init();
> -       if (ret)
> -               return ret;
> -#endif
>
>         return 0;
>  }
>  #endif
>
> +static int initr_dm_devices(void)
> +{
> +       int ret;
> +
> +       if (IS_ENABLED(CONFIG_TIMER_EARLY)) {
> +               ret = dm_timer_init();
> +               if (ret)
> +                       return ret;
> +       }
> +
> +       return 0;
> +}
> +
>  static int initr_bootstage(void)
>  {
>         bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_R, "board_init_r");
> @@ -702,6 +710,7 @@ static init_fnc_t init_sequence_r[] = {
>         efi_memory_init,
>  #endif
>         initr_binman,
> +       initr_dm_devices,
>         stdio_init_tables,
>         initr_serial,
>         initr_announce,
> diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
> index eadcfd6652..449f614eb2 100644
> --- a/drivers/pinctrl/Kconfig
> +++ b/drivers/pinctrl/Kconfig
> @@ -82,6 +82,13 @@ config SPL_PINCTRL
>           This option is an SPL-variant of the PINCTRL option.
>           See the help of PINCTRL for details.
>
> +config TPL_PINCTRL
> +       bool "Support pin controllers in TPL"
> +       depends on TPL && TPL_DM
> +       help
> +         This option is an TPL variant of the PINCTRL option.
> +         See the help of PINCTRL for details.
> +
>  config SPL_PINCTRL_FULL
>         bool "Support full pin controllers in SPL"
>         depends on SPL_PINCTRL && SPL_OF_CONTROL
> @@ -91,6 +98,13 @@ config SPL_PINCTRL_FULL
>           This option is an SPL-variant of the PINCTRL_FULL option.
>           See the help of PINCTRL_FULL for details.
>
> +config TPL_PINCTRL_FULL
> +       bool "Support full pin controllers in TPL"
> +       depends on TPL_PINCTRL && TPL_OF_CONTROL
> +       help
> +         This option is an TPL-variant of the PINCTRL_FULL option.
> +         See the help of PINCTRL_FULL for details.
> +
>  config SPL_PINCTRL_GENERIC
>         bool "Support generic pin controllers in SPL"
>         depends on SPL_PINCTRL_FULL
> --

The above 2 Kconfig changes should not be in this commit.

Regards,
Bin


More information about the U-Boot mailing list