[U-Boot] [PATCH] common: add board specific hook for os preboot config

Stefan Agner stefan at agner.ch
Thu Aug 16 13:09:08 UTC 2018


On 13.08.2018 09:30, Gerard Salvatella wrote:
> Some boards require specific configuration prior to booting the kernel.
> For instance, our boards require shutting down the display to avoid
> fading transitions before the drivers are reloaded by the kernel. This
> could be facilitated by adding an extra hook during the os booting
> process.

Maybe I can extend on what we are trying to achieve here:

We enable display backlight using board code.

The architecture code then shuts down the display controller just before
booting Linux (e.g. on i.MX, by calling
ipuv3_fb_shutdown/lcdif_power_down in arch_preboot_os).

This leads to a display which has backlight enabled, but no data
driven... Depending on display this leads to noisy/fading transitions
between U-Boot and Linux.

So we would like to disable the backlight in board code.

In a first version we used a weak display_shutdown() function, but with
that we would have to add it to every architecture.

This approach uses a generic board specific preeboot_os callback which
can be used for different purpose too.

Does this sound like an approach which is acceptable upstream?

--
Stefan


> 
> Signed-off-by: Gerard Salvatella <gerard.salvatella at toradex.com>
> ---
>  common/bootm_os.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/common/bootm_os.c b/common/bootm_os.c
> index f4bd905909..1e7af56b64 100644
> --- a/common/bootm_os.c
> +++ b/common/bootm_os.c
> @@ -505,9 +505,16 @@ __weak void arch_preboot_os(void)
>         /* please define platform specific arch_preboot_os() */
>  }
> 
> +/* Allow for board specific config before we boot */
> +__weak void board_preboot_os(void)
> +{
> +       /* please define board specific board_preboot_os() */
> +}
> +
>  int boot_selected_os(int argc, char * const argv[], int state,
>                      bootm_headers_t *images, boot_os_fn *boot_fn)
>  {
> +       board_preboot_os();
>         arch_preboot_os();
>         boot_fn(state, argc, argv, images);
> 
> --
> 2.18.0
> 
> 
> [Toradex Logo]<http://toradex.com>      Global Leader in ArmĀ®
> Embedded Computer Modules
> 
> Choose
> Us<https://www.toradex.com/how-to-choose-system-computer-on-module-partner>
> | Products<https://www.toradex.com/products> | Developer
> Center<http://developer.toradex.com/> |
> Community<https://www.toradex.com/community> |
> Careers<https://careers.toradex.com/>
> Meet our engineers
> at<https://www.toradex.com/events>:<https://www.toradex.com/events>
> - Linux Developer Conference, Brazil, Aug 25-26, 2018
> - NXP Technology Days 2018, United States, Aug 28, 2018
> - IoT Latin America, Brazil, Aug 29-30, 2018
> 
> 
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot


More information about the U-Boot mailing list