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

Michael Nazzareno Trimarchi michael at amarulasolutions.com
Mon Sep 24 15:19:44 UTC 2018


Hi


On Mon., 24 Sep. 2018, 5:15 pm Stefan Agner, <stefan at agner.ch> wrote:

> On 24.09.2018 16:56, Michael Nazzareno Trimarchi wrote:
> > Hi
> >
> > On Mon., 24 Sep. 2018, 4:51 pm Stefan Agner, <stefan at agner.ch> wrote:
> >
> >> On 24.09.2018 16:43, Michael Nazzareno Trimarchi wrote:
> >>> Hi
> >>>
> >>> On Thu., 16 Aug. 2018, 3:09 pm Stefan Agner, <stefan at agner.ch>
> >> wrote:
> >>>
> >>>> 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.
> >>>
> >>> You can make it works almost easily.
> >>>
> >>> I enable simple fb, inject allocated display parameters in dts to
> >>> reserve area, pass the area to the graphics controller and dismiss
> >> it
> >>> during probing
> >>>
> >>> This is mainline in linux support.
> >>>
> >>> I have couple of patches need to clean up for imx architecture
> >>> (imx6ull and imx25)
> >>
> >> Definitely interested in those patches! Of course using this
> >> approach
> >> leads to the most seamless booting experience.
> >
> > Yes but there are a lot of reason to have when you deal multi-image
> > update and so on.
> >
> >> But as far as I know it also needs proper (driver specific) Linux
> >> support, is that correct?
> >
> > No that is wrong. imx6ull need a small patches right now I have
> > applied in kernel in legacy driver and not in drm one.
> >
>
> In what way is that different to what I wrote above?
>
> In the end, the OS needs support for this.
>

I said that Linux support but not all the specic SoC. I don't against the
proposal but on my side I think that create some label and some way to
register them and go through a list instead of continue create weak make
more sense



> > sunxi already implement everything in their side
> >
> >> So, I think its anyway worth having an option to properly disable
> >> the
> >> display and backlight for older kernels/non-Linux OS.
> >
> > gpio clear gpio-6 ; bootm ?
>
> That is very board specific scripting required. We enable the backlight
> in code, so we should disable it, especially if we disable the
> controller (which we do currently).
>

Your function is board specific anyway but ok I understand the asymmetric
situation. I suggest it before migrate to the latest solution

Michael

>
> --
> Stefan
>
> >
> > Michael
> >
> >> --
> >> Stefan
> >>
> >>>
> >>> You can still scripting it using cmd interface
> >>>
> >>> Michael
> >>>
> >>>> 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
> >>>> _______________________________________________
> >>>> 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