On Wed, 23 Aug 2023 at 23:41, Svyatoslav Ryhel <clamo...@gmail.com> wrote:
>
>
>
> 24 серпня 2023 р. 02:57:34 GMT+03:00, Simon Glass <s...@google.com> 
> написав(-ла):
> >Hi Svyatoslav,
> >
> >On Tue, 22 Aug 2023 at 05:25, Svyatoslav Ryhel <clamo...@gmail.com> wrote:
> >>
> >> Board specific late init allows vendors to set up different device
> >> or board specific env variables (like serial number, platform name).
> >> In case this information is missing, u-boot will lack info regards
> >> serial or platform.
> >>
> >> To avoid this prior nvidia_board_late_init internal generic function
> >> is called which fills required data. In this case platform name is
> >> obtained from get_chip and serialno is filled with SoC id.
> >>
> >> Though SoC id is not dedicated to be devices serial but it fits well
> >> in case of restriction of data about device and since SoC is basically
> >> a main chip of the device.
> >>
> >> Tested-by: Andreas Westman Dorcsak <hed...@yahoo.com> # ASUS Transformers
> >> Tested-by: Svyatoslav Ryhel <clamo...@gmail.com> # Nvidia Tegratab
> >> Signed-off-by: Svyatoslav Ryhel <clamo...@gmail.com>
> >> ---
> >>  arch/arm/mach-tegra/board2.c | 43 ++++++++++++++++++++++++++++++++++++
> >>  1 file changed, 43 insertions(+)
> >>
> >> diff --git a/arch/arm/mach-tegra/board2.c b/arch/arm/mach-tegra/board2.c
> >> index 981768bb0e..ee69cb657a 100644
> >> --- a/arch/arm/mach-tegra/board2.c
> >> +++ b/arch/arm/mach-tegra/board2.c
> >> @@ -26,6 +26,10 @@
> >>  #include <asm/arch-tegra/gpu.h>
> >>  #include <asm/arch-tegra/usb.h>
> >>  #include <asm/arch-tegra/xusb-padctl.h>
> >> +#ifndef CONFIG_TEGRA186
> >> +#include <asm/arch-tegra/fuse.h>
> >> +#include <asm/arch/gp_padctrl.h>
> >> +#endif
> >>  #if IS_ENABLED(CONFIG_TEGRA_CLKRST)
> >>  #include <asm/arch/clock.h>
> >>  #endif
> >> @@ -256,6 +260,37 @@ int board_early_init_f(void)
> >>  }
> >>  #endif /* EARLY_INIT */
> >>
> >> +#ifndef CONFIG_TEGRA186
> >> +static void nvidia_board_late_init_generic(void)
> >> +{
> >> +       char serialno_str[17];
> >> +
> >> +       /* Set chip id as serialno */
> >> +       sprintf(serialno_str, "%016llx", tegra_chip_uid());
> >> +       env_set("serial#", serialno_str);
> >> +
> >> +       switch (tegra_get_chip()) {
> >> +       case CHIPID_TEGRA20:
> >> +               env_set("platform", "Tegra 2 T20");
> >> +               break;
> >> +       case CHIPID_TEGRA30:
> >> +               env_set("platform", "Tegra 3 T30");
> >> +               break;
> >> +       case CHIPID_TEGRA114:
> >> +               env_set("platform", "Tegra 4 T114");
> >> +               break;
> >> +       case CHIPID_TEGRA124:
> >> +               env_set("platform", "Tegra K1 T124");
> >> +               break;
> >> +       case CHIPID_TEGRA210:
> >> +               env_set("platform", "Tegra X1 T210");
> >> +               break;
> >> +       default:
> >> +               return;
> >> +       }
> >> +}
> >> +#endif
> >> +
> >>  int board_late_init(void)
> >>  {
> >>  #if defined(CONFIG_TEGRA_SUPPORT_NON_SECURE)
> >> @@ -268,6 +303,14 @@ int board_late_init(void)
> >>  #endif
> >>         start_cpu_fan();
> >>         cboot_late_init();
> >> +
> >> +       /*
> >> +        * Perform generic env setup in case
> >> +        * vendor does not provide it.
> >> +        */
> >> +#ifndef CONFIG_TEGRA186
> >> +       nvidia_board_late_init_generic();
> >> +#endif
> >>         nvidia_board_late_init();
> >>
> >>         return 0;
> >> --
> >> 2.39.2
> >>
> >
> >This would be better done with events. I just sent a series that
> >converts board_late_init() to use events [1] and with that you can add
> >as many 'spy' functions as you like [2].
>
> This is definitely a nice suggestion, but I would rather dedicate this 
> convertion a separate patchset since it will affect multiple files and 
> functions across all mach-terga.

OK I look forward to it!

Reviewed-by: Simon Glass <s...@chromium.org>


>
> Best regards,
> Svyatoslav R.
>
> >Regards,
> >Simon
> >
> >[1] https://patchwork.ozlabs.org/project/uboot/list/?series=369742
> >[2] https://u-boot.readthedocs.io/en/latest/develop/event.html

Reply via email to