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