platform/kernel/u-boot.git
2 years agoMerge tag 'efi-next' of https://source.denx.de/u-boot/custodians/u-boot-efi into...
Tom Rini [Fri, 31 Dec 2021 12:28:36 +0000 (07:28 -0500)]
Merge tag 'efi-next' of https://source.denx.de/u-boot/custodians/u-boot-efi into next

Pull request of efi-next

Documentation:

* Add Sunxi board description

UEFI:

* Improvements to U-Boot running on top of UEFI

2 years agox86: efi: Don't set up global_data again with EFI
Simon Glass [Wed, 29 Dec 2021 18:57:54 +0000 (11:57 -0700)]
x86: efi: Don't set up global_data again with EFI

Since EFI does not relocate and uses the same global_data pointer
throughout the board-init process, drop this unnecessary setup, to avoid
a hang.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agox86: efi: Show the system-table revision
Simon Glass [Wed, 29 Dec 2021 18:57:53 +0000 (11:57 -0700)]
x86: efi: Show the system-table revision

Show the revision of this table as it can be important.

Also update the 'efi table' entry to show the actual address of the EFI
table rather than our table that points to it. This saves a step and the
intermediate table has nothing else in it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoefi: Allow easy selection of serial-only operation
Simon Glass [Wed, 29 Dec 2021 18:57:50 +0000 (11:57 -0700)]
efi: Allow easy selection of serial-only operation

Add info about how to select vidconsole or serial.

Also set up a demo boot command.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agoefi: Show when allocated pages are used
Simon Glass [Wed, 29 Dec 2021 18:57:49 +0000 (11:57 -0700)]
efi: Show when allocated pages are used

Add a message here so that both paths of memory allocation are reported.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoefi: Mention that efi_info_get() is only used in the stub
Simon Glass [Wed, 29 Dec 2021 18:57:48 +0000 (11:57 -0700)]
efi: Mention that efi_info_get() is only used in the stub

This provides access to EFI tables after U-Boot has exited boot services.
It is not needed in the app since boot services remain alive and we can
just call them whenever needed.

Add a comment to explain this.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoefi: Check for failure when initing the app
Simon Glass [Wed, 29 Dec 2021 18:57:47 +0000 (11:57 -0700)]
efi: Check for failure when initing the app

The stub checks for failure with efi_init(). Add this for the app as well.
It is unlikely that anything can be done, but we may as well stop.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoefi: Share struct efi_priv between the app and stub code
Simon Glass [Wed, 29 Dec 2021 18:57:45 +0000 (11:57 -0700)]
efi: Share struct efi_priv between the app and stub code

At present each of these has its own static variable and helper functions.
Move them into a shared file.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoefi: Add a few comments to the stub
Simon Glass [Wed, 29 Dec 2021 18:57:44 +0000 (11:57 -0700)]
efi: Add a few comments to the stub

Comment some functions that need more information.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoefi: Fix ll_boot_init() operation with the app
Simon Glass [Wed, 29 Dec 2021 18:57:43 +0000 (11:57 -0700)]
efi: Fix ll_boot_init() operation with the app

This should return false when the EFI app is running, since UEFI has done
the required low-level init. Fix it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoefi: Add comments to struct efi_priv
Simon Glass [Wed, 29 Dec 2021 18:57:42 +0000 (11:57 -0700)]
efi: Add comments to struct efi_priv

This structure is uncommented. Fix it.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agoefi: Drop device_path from struct efi_priv
Simon Glass [Wed, 29 Dec 2021 18:57:41 +0000 (11:57 -0700)]
efi: Drop device_path from struct efi_priv

This is not used anywhere drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agox86: efi: Add room for the binman definition in the dtb
Simon Glass [Wed, 29 Dec 2021 18:57:40 +0000 (11:57 -0700)]
x86: efi: Add room for the binman definition in the dtb

At present only 4KB of spare space is left in the DTB when building the
EFI app. Increase this to 32KB so there is plenty of space to insert the
binman definition. This cannot be expanded later (as with OF_SEPARATE)
because the ELF image has already been built.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviwed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agox86: Don't process the kernel command line unless enabled
Simon Glass [Wed, 29 Dec 2021 18:57:39 +0000 (11:57 -0700)]
x86: Don't process the kernel command line unless enabled

If the 'bootm' command is not enabled then this code is not available and
this causes a link error. Fix it.

Note that for the EFI app, there is no indication of missing code. It just
hangs!

Signed-off-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agox86: Allow booting a kernel from the EFI app
Simon Glass [Wed, 29 Dec 2021 18:57:38 +0000 (11:57 -0700)]
x86: Allow booting a kernel from the EFI app

At present this is disabled, but it should work so long as the kernel does
not need EFI services. Enable it and add a note about remaining work.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agoefi: serial: Support arrow keys
Simon Glass [Wed, 29 Dec 2021 18:57:37 +0000 (11:57 -0700)]
efi: serial: Support arrow keys

At present only the backspace key is supported in U-Boot, when running as
an EFI app. Add support for arrows, home and end as well, to make the CLI
more friendly.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoefi: Locate all block devices in the app
Simon Glass [Wed, 29 Dec 2021 18:57:36 +0000 (11:57 -0700)]
efi: Locate all block devices in the app

When starting the app, locate all block devices and make them available
to U-Boot. This allows listing partitions and accessing files in
filesystems.

EFI also has the concept of 'disks', meaning boot media. For now, this
is not obviously useful in U-Boot, but add code to at least locate these.
This can be expanded later as needed.

We cannot use printf() in the early stub or app since it is not compiled
in

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoefi: Make unicode printf available to the app
Simon Glass [Wed, 29 Dec 2021 18:57:35 +0000 (11:57 -0700)]
efi: Make unicode printf available to the app

This is needed to show unicode strings. Enable this code in the app.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agosunxi: add board documentation
Andre Przywara [Mon, 27 Dec 2021 15:07:36 +0000 (15:07 +0000)]
sunxi: add board documentation

Add some long overdue instructions for building and installing U-Boot on
Allwinner SoC based boards.
This describes the building process, including TF-A and crust, plus
installation to SD card, eMMC and SPI flash, both from Linux and U-Boot
itself. Also describe FEL booting.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoefi_loader: Don't limit the StMM buffer size explicitly
Ilias Apalodimas [Fri, 24 Dec 2021 08:08:41 +0000 (10:08 +0200)]
efi_loader: Don't limit the StMM buffer size explicitly

Currently we allow and explicitly check a single shared page with
StandAloneMM.  This is dictated by OP-TEE which runs the application.
However there's no way for us dynamically discover the number of pages we
are allowed to use.  Since writing big EFI signature list variable
requires more than a page, OP-TEE has bumped the number of shared pages to
four.

Let's remove our explicit check and allow the request to reach OP-TEE even
if it's bigger than what it supports.  There's no need to sanitize the
number of pages internally.  OP-TEE will fail if we try to write more
than it's allowed. The error will just trigger later on,  during the
StMM access.

While at it add an error message to help users figure out what failed.

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Tested-by: Ying-Chun Liu (PaulLiu) <paul.liu@linaro.org>
Signed-off-by: Ilias Apalodimas <apalos@gmail.com>
2 years agoefi: fix typo in description of struct efi_entry_hdr
Heinrich Schuchardt [Tue, 21 Dec 2021 08:09:48 +0000 (09:09 +0100)]
efi: fix typo in description of struct efi_entry_hdr

Add missing colon.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
2 years agoMerge tag 'video-next-20211228' of https://source.denx.de/u-boot/custodians/u-boot...
Tom Rini [Tue, 28 Dec 2021 16:28:31 +0000 (11:28 -0500)]
Merge tag 'video-next-20211228' of https://source.denx.de/u-boot/custodians/u-boot-video into next

- various fixes to the sandbox display support
- support for showing a logo without splash screen config
- support for BMP drawing to depths other than 16bpp
- tests for the different types of supported BMP images
- support showing a logo when running coreboot via qemu

2 years agoMerge branch '2021-12-27-CONFIG-migrations' into next
Tom Rini [Mon, 27 Dec 2021 22:20:21 +0000 (17:20 -0500)]
Merge branch '2021-12-27-CONFIG-migrations' into next

- Merge a large number of CONFIG migration patches.  Most of these are
  taking existing migrations and re-running them.  A few of these needed
  additional minor conversions done first, so that more complex
  dependencies could be expressed.  In the end we now have CI jobs to
  ensure that no migrated symbols are used in board config header files.

2 years agoconfigs: Resync with savedefconfig
Tom Rini [Mon, 27 Dec 2021 13:53:48 +0000 (13:53 +0000)]
configs: Resync with savedefconfig

Rsync all defconfig files using moveconfig.py

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_JFFS2_DEV et al to Kconfig
Tom Rini [Fri, 17 Dec 2021 23:08:47 +0000 (18:08 -0500)]
Convert CONFIG_JFFS2_DEV et al to Kconfig

This converts the following to Kconfig:
   CONFIG_JFFS2_DEV
   CONFIG_JFFS2_LZO
   CONFIG_JFFS2_NAND
   CONFIG_JFFS2_PART_OFFSET
   CONFIG_JFFS2_PART_SIZE

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_KIRKWOOD_GPIO to Kconfig
Tom Rini [Fri, 17 Dec 2021 23:08:46 +0000 (18:08 -0500)]
Convert CONFIG_KIRKWOOD_GPIO to Kconfig

This converts the following to Kconfig:
   CONFIG_KIRKWOOD_GPIO

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SYS_KWD_CONFIG to Kconfig
Tom Rini [Fri, 17 Dec 2021 23:08:45 +0000 (18:08 -0500)]
Convert CONFIG_SYS_KWD_CONFIG to Kconfig

This converts the following to Kconfig:
   CONFIG_SYS_KWD_CONFIG

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_88F5182 et al to Kconfig
Tom Rini [Fri, 17 Dec 2021 23:08:44 +0000 (18:08 -0500)]
Convert CONFIG_88F5182 et al to Kconfig

This converts the following to Kconfig:
   CONFIG_88F5182
   CONFIG_BOARD_IS_OPENRD_BASE
   CONFIG_BOARD_IS_OPENRD_CLIENT
   CONFIG_BOARD_IS_OPENRD_ULTIMATE
   CONFIG_D2NET_V2
   CONFIG_FEROCEON
   CONFIG_FEROCEON_88FR131
   CONFIG_INETSPACE_V2
   CONFIG_KW88F6192
   CONFIG_KW88F6281
   CONFIG_KW88F6702
   CONFIG_NET2BIG_V2
   CONFIG_NETSPACE_LITE_V2
   CONFIG_NETSPACE_MAX_V2
   CONFIG_NETSPACE_MINI_V2
   CONFIG_NETSPACE_V2
   CONFIG_SHEEVA_88SV131

At this point mv-plug-common.h is now only an include of mv-common.h so
remove that indirection.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoKconfig: Remove some symbols from the whitelist
Tom Rini [Fri, 17 Dec 2021 23:08:43 +0000 (18:08 -0500)]
Kconfig: Remove some symbols from the whitelist

There are a number of symbols that are never defined, only referenced in
code imported from the Linux kernel or similar.  Drop them from the list.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_CPU_FREQ_HZ to Kconfig
Tom Rini [Fri, 17 Dec 2021 23:08:42 +0000 (18:08 -0500)]
Convert CONFIG_CPU_FREQ_HZ to Kconfig

This converts the following to Kconfig:
   CONFIG_CPU_FREQ_HZ

Cc: Michal Simek <monstr@monstr.eu>
Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_CPU_SH7751 to Kconfig
Tom Rini [Fri, 17 Dec 2021 23:08:41 +0000 (18:08 -0500)]
Convert CONFIG_CPU_SH7751 to Kconfig

This converts the following to Kconfig:
   CONFIG_CPU_SH7751

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_CPU_PXA27X to Kconfig
Tom Rini [Fri, 17 Dec 2021 23:08:40 +0000 (18:08 -0500)]
Convert CONFIG_CPU_PXA27X to Kconfig

This converts the following to Kconfig:
   CONFIG_CPU_PXA27X

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoserial: arm_dcc: Use CONFIG_ARM64 not CONFIG_CPU_ARMV8
Tom Rini [Fri, 17 Dec 2021 23:08:39 +0000 (18:08 -0500)]
serial: arm_dcc: Use CONFIG_ARM64 not CONFIG_CPU_ARMV8

The only place we use CONFIG_CPU_ARMV8 was in the arm_dcc serial driver.
Switch this to CONFIG_ARM64 today, and if in the future we need finer
granularity tuning here, a new CONFIG_SERIAL option needs to be
introduced.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoCI: Test for unmigrated CONFIG symbols in board config.h files
Tom Rini [Tue, 14 Dec 2021 18:36:41 +0000 (13:36 -0500)]
CI: Test for unmigrated CONFIG symbols in board config.h files

Now that all symbols that exist in Kconfig no longer also have boards
setting them  in the board config.h file, add a CI test to catch new
instances of this, and fail.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SYS_I2C_EEPROM_ADDR_LEN to Kconfig
Tom Rini [Fri, 17 Dec 2021 23:08:38 +0000 (18:08 -0500)]
Convert CONFIG_SYS_I2C_EEPROM_ADDR_LEN to Kconfig

This converts the following to Kconfig:
   CONFIG_SYS_I2C_EEPROM_ADDR_LEN

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoppc: mpc83xx: Remove unused CONFIG symbols
Tom Rini [Fri, 17 Dec 2021 23:08:37 +0000 (18:08 -0500)]
ppc: mpc83xx: Remove unused CONFIG symbols

Neither of these symbols are referenced anywhere else, so remove them.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_83XX_PCICLK to Kconfig
Tom Rini [Fri, 17 Dec 2021 23:08:36 +0000 (18:08 -0500)]
Convert CONFIG_83XX_PCICLK to Kconfig

This converts the following to Kconfig:
   CONFIG_83XX_PCICLK

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoFinish conversion of CONFIG_SYS_CLK_FREQ to Kconfig
Tom Rini [Tue, 14 Dec 2021 18:36:40 +0000 (13:36 -0500)]
Finish conversion of CONFIG_SYS_CLK_FREQ to Kconfig

In order to finish moving this symbol to Kconfig for all platforms, we
need to do a few more things.  First, for all platforms that define this
to a function, introduce CONFIG_DYNAMIC_SYS_CLK_FREQ, similar to
CONFIG_DYNAMIC_DDR_CLK_FREQ and populate clock_legacy.h.  This entails
also switching all users from CONFIG_SYS_CLK_FREQ to get_board_sys_clk()
and updating a few preprocessor tests.

With that done, all platforms that define a value here can be converted
to Kconfig, and a fall-back of zero is sufficiently safe to use (and
what is used today in cases where code may or may not have this
available).  Make sure that code which calls this function includes
<clock_legacy.h> to get the prototype.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoCONFIG_SYS_CLK_FREQ: Consistently be static or get_board_sys_clk()
Tom Rini [Tue, 14 Dec 2021 18:36:39 +0000 (13:36 -0500)]
CONFIG_SYS_CLK_FREQ: Consistently be static or get_board_sys_clk()

This CONFIG option is used in one of two ways.  The first way is that it
is defined to a static value, of an unsigned long size.  The second way
is that it is defined to something, typically a function, to determine
this value at run time.

However, in a few cases that function returns a static value.  Change
that to using the static value directly.

In the case of using something at run time, convert everything to using
a function of the same name and prototype.  This will allow for further
cleanups.

Finally, we have a few cases where the function is just not used, so
drop it.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agonxp: ics307_clk: Guard get_board_ddr_clk function correctly
Tom Rini [Tue, 14 Dec 2021 18:36:38 +0000 (13:36 -0500)]
nxp: ics307_clk: Guard get_board_ddr_clk function correctly

When we have CONFIG_DYNAMIC_DDR_CLK_FREQ set is the only time we should
have this function, so guard it so that we can include <clock_legacy.h>
in this file later on.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agols1088a: Guard get_board_ddr_clk function correctly
Tom Rini [Tue, 14 Dec 2021 18:36:37 +0000 (13:36 -0500)]
ls1088a: Guard get_board_ddr_clk function correctly

When we have CONFIG_DYNAMIC_DDR_CLK_FREQ set is the only time we should
have this function, so guard it so that we can include <clock_legacy.h>
in this file later on.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoarm: s5pc1xx: Move CONFIG_SYS_CLK_FREQ_C1x0 out of CONFIG namespace
Tom Rini [Tue, 14 Dec 2021 18:36:36 +0000 (13:36 -0500)]
arm: s5pc1xx: Move CONFIG_SYS_CLK_FREQ_C1x0 out of CONFIG namespace

The values CONFIG_SYS_CLK_FREQ_C100 and CONFIG_SYS_CLK_FREQ_C110 are
only used in one place and not changed by the board config file.  Move
these out of the CONFIG namespace and in to the CFG namespace.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_ARCH_MAP_SYSMEM to Kconfig
Tom Rini [Tue, 14 Dec 2021 18:36:35 +0000 (13:36 -0500)]
Convert CONFIG_ARCH_MAP_SYSMEM to Kconfig

This converts the following to Kconfig:
   CONFIG_ARCH_MAP_SYSMEM

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SYS_NAND_U_BOOT_OFFS to Kconfig
Tom Rini [Tue, 14 Dec 2021 18:36:34 +0000 (13:36 -0500)]
Convert CONFIG_SYS_NAND_U_BOOT_OFFS to Kconfig

This converts the following to Kconfig:
   CONFIG_SYS_NAND_U_BOOT_OFFS

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_TPL_TEXT_BASE to Kconfig
Tom Rini [Tue, 14 Dec 2021 18:36:33 +0000 (13:36 -0500)]
Convert CONFIG_TPL_TEXT_BASE to Kconfig

This converts the following to Kconfig:
   CONFIG_TPL_TEXT_BASE

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_ZYNQMP_PSU_INIT_ENABLED to Kconfig
Tom Rini [Mon, 13 Dec 2021 03:58:31 +0000 (22:58 -0500)]
Convert CONFIG_ZYNQMP_PSU_INIT_ENABLED to Kconfig

This converts the following to Kconfig:
   CONFIG_ZYNQMP_PSU_INIT_ENABLED

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoFinish conversion CONFIG_SYS_NAND_SELF_INIT to Kconfig
Tom Rini [Mon, 13 Dec 2021 03:12:36 +0000 (22:12 -0500)]
Finish conversion CONFIG_SYS_NAND_SELF_INIT to Kconfig

In order to finish this conversion we need to add a symbols for
SPL_SYS_NAND_SELF_INIT and TPL_SYS_NAND_SELF_INIT as there are cases
there where we need to, or need to not, use that framework as things
stand.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_TEGRA_NAND to Kconfig
Tom Rini [Mon, 13 Dec 2021 03:12:35 +0000 (22:12 -0500)]
Convert CONFIG_TEGRA_NAND to Kconfig

This converts the following to Kconfig:
   CONFIG_TEGRA_NAND

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoFinish converting CONFIG_SYS_FSL_CLK to Kconfig
Tom Rini [Mon, 13 Dec 2021 03:12:34 +0000 (22:12 -0500)]
Finish converting CONFIG_SYS_FSL_CLK to Kconfig

This converts the following to Kconfig:
   CONFIG_SYS_FSL_CLK

We move the exiting option to common/Kconfig near the other options to
control the contents of board_init_f() and note that this is a legacy
option.  We further restrict this to where the call is going to be
non-empty, for the SoCs that had only been using this for some
MMC-related clocks.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agowarp7, pic32mzdask: Remove SYS_FDT_ADDR/SYS_ENV_ADDR from CONFIG namespace
Tom Rini [Mon, 13 Dec 2021 03:12:33 +0000 (22:12 -0500)]
warp7, pic32mzdask: Remove SYS_FDT_ADDR/SYS_ENV_ADDR from CONFIG namespace

In the case of CONFIG_SYS_FDT_ADDR this was being used to modify the
default value of fdt_addr / fdt_addr_r, which is not something to expose
in this manner and is not otherwise done.  The case of SYS_ENV_ADDR is
similar but only done on the pic32mzdask platform, for scriptaddr.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SYS_PCI_64BIT to Kconfig
Tom Rini [Mon, 13 Dec 2021 03:12:32 +0000 (22:12 -0500)]
Convert CONFIG_SYS_PCI_64BIT to Kconfig

This converts the following to Kconfig:
   CONFIG_SYS_PCI_64BIT

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoFinish CONFIG_VID et al conversion to Kconfig
Tom Rini [Mon, 13 Dec 2021 03:12:31 +0000 (22:12 -0500)]
Finish CONFIG_VID et al conversion to Kconfig

This converts the following to Kconfig:
   CONFIG_VID
   CONFIG_VOL_MONITOR_INA220
   CONFIG_VOL_MONITOR_IR36021_READ
   CONFIG_VOL_MONITOR_IR36021_SET
   CONFIG_VOL_MONITOR_LTC3882_READ
   CONFIG_VOL_MONITOR_LTC3882_SET

To finish this migration, we first need to introduce CONFIG_SPL_VID as
some platforms only use this code in full U-Boot while others use it in
SPL as well.  To make the Kconfig logic clearer, guard all of the
sub-options with a if VID || SPL_VID check.  Finally, add Kconfig
options for the remaining related options that did not previously have
one.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SYS_IMMR to Kconfig
Tom Rini [Mon, 13 Dec 2021 03:12:30 +0000 (22:12 -0500)]
Convert CONFIG_SYS_IMMR to Kconfig

This converts the following to Kconfig:
   CONFIG_SYS_IMMR

We do this by consolidating the SYS_IMMR options we have and providing
defaults.

We also, in the few places where M68K was also sharing code with these
platforms, define it within the file to CONFIG_SYS_MBAR to match usage.
This should be cleaned up longer term.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SYS_MEMTEST_START et al to Kconfig
Tom Rini [Mon, 13 Dec 2021 03:12:29 +0000 (22:12 -0500)]
Convert CONFIG_SYS_MEMTEST_START et al to Kconfig

This converts the following to Kconfig:
   CONFIG_SYS_MEMTEST_START
   CONFIG_SYS_MEMTEST_END

This is removing unused defines and correcting the default value to be
0x0 as we are a hex symbol.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_WATCHDOG_TIMEOUT_MSECS to Kconfig
Tom Rini [Mon, 13 Dec 2021 03:12:28 +0000 (22:12 -0500)]
Convert CONFIG_WATCHDOG_TIMEOUT_MSECS to Kconfig

This converts the following to Kconfig:
   CONFIG_WATCHDOG_TIMEOUT_MSECS

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoFinish converting CONFIG_WATCHDOG, HW_WATCHDOG and WDT to Kconfig
Tom Rini [Mon, 13 Dec 2021 03:12:27 +0000 (22:12 -0500)]
Finish converting CONFIG_WATCHDOG, HW_WATCHDOG and WDT to Kconfig

Because of how these symbols work, and the remaining board config.h file
uses, we need to do these at the same time.  In some cases we just get
to move rather directly to the defconfigs.  A few cases require manual
intervention.

For the case of the eb_cpu5282 we need to select HW_WATCHDOG for the
target, given how it's implemented.

For the cases of m53menlo, dh_imx6, display5, and display5_factory we
disable SPL watchdog support as the particular combination of options
they want would require either more symbols or enabling SPL_DM.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agopci: Remove unused FSL_PCI_INIT code
Tom Rini [Mon, 13 Dec 2021 03:12:26 +0000 (22:12 -0500)]
pci: Remove unused FSL_PCI_INIT code

The symbol CONFIG_FSL_PCI_INIT is no longer enabled anywhere, removed
now unused code.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT to Kconfig
Tom Rini [Sat, 11 Dec 2021 19:55:54 +0000 (14:55 -0500)]
Convert CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT to Kconfig

This converts the following to Kconfig:
   CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT

In order to do this conversion, expose this option to the user and
use "save" not "safe" in the text.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SUPPORT_EMMC_RPMB to Kconfig
Tom Rini [Sat, 11 Dec 2021 19:55:53 +0000 (14:55 -0500)]
Convert CONFIG_SUPPORT_EMMC_RPMB to Kconfig

This converts the following to Kconfig:
   CONFIG_SUPPORT_EMMC_RPMB

This fixes a few platforms where the option was not taking effect as
intended.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoRemove CONFIG_SYS_MMC_IMG_LOAD_PART from CONFIG namespace
Tom Rini [Sat, 11 Dec 2021 19:55:52 +0000 (14:55 -0500)]
Remove CONFIG_SYS_MMC_IMG_LOAD_PART from CONFIG namespace

This option is used as part of configuring the default environment for a
number of platforms.  However, it is always set to 1 and the only time
it is part of Kconfig, it is used in a hard-coded manner.  Hard-code the
value in the environment instead.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_CONS_INDEX et al to Kconfig
Tom Rini [Sat, 11 Dec 2021 19:55:51 +0000 (14:55 -0500)]
Convert CONFIG_CONS_INDEX et al to Kconfig

This converts the following to Kconfig:
   CONFIG_CONS_INDEX
   CONFIG_DEBUG_UART_CLOCK
   CONFIG_FSL_TZPC_BP147
   CONFIG_GENERIC_ATMEL_MCI
   CONFIG_IDENT_STRING
   CONFIG_LIBATA
   CONFIG_LNX_KRNL_IMG_TEXT_OFFSET_BASE
   CONFIG_LPC32XX_GPIO
   CONFIG_MP
   CONFIG_MPC8XXX_GPIO
   CONFIG_MTD_PARTITIONS
   CONFIG_MVGBE
   CONFIG_MXC_GPIO
   CONFIG_NR_DRAM_BANKS
   CONFIG_OF_BOARD_SETUP
   CONFIG_OF_STDOUT_VIA_ALIAS
   CONFIG_OF_SYSTEM_SETUP
   CONFIG_PREBOOT
   CONFIG_ROCKCHIP_SERIAL
   CONFIG_RTC_ENABLE_32KHZ_OUTPUT
   CONFIG_RTC_MV
   CONFIG_SCSI_AHCI
   CONFIG_SF_DEFAULT_BUS
   CONFIG_SF_DEFAULT_CS
   CONFIG_SF_DEFAULT_SPEED
   CONFIG_SOFT_SPI
   CONFIG_SPI_FLASH_EON
   CONFIG_SPI_FLASH_MACRONIX
   CONFIG_SPI_FLASH_MTD
   CONFIG_SPI_FLASH_SPANSION
   CONFIG_SPI_FLASH_SST
   CONFIG_SPI_FLASH_STMICRO
   CONFIG_SUPPORT_RAW_INITRD
   CONFIG_SYS_ARCH_TIMER
   CONFIG_SYS_BOARD
   CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
   CONFIG_SYS_DCACHE_OFF
   CONFIG_SYS_FDT_SAVE_ADDRESS
   CONFIG_SYS_FLASH_CFI
   CONFIG_SYS_FSL_ERRATUM_ESDHC135
   CONFIG_SYS_HAS_SERDES
   CONFIG_SYS_L2CACHE_OFF
   CONFIG_SYS_LITTLE_ENDIAN
   CONFIG_SYS_LOAD_ADDR
   CONFIG_SYS_MMCSD_FS_BOOT_PARTITION
   CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION
   CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR
   CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
   CONFIG_SYS_NS16550
   CONFIG_SYS_PLLFIN
   CONFIG_SYS_SPI_U_BOOT_OFFS
   CONFIG_TIMER_SYS_TICK_CH
   CONFIG_USB_EHCI_FSL
   CONFIG_U_QE
   CONFIG_VERSION_VARIABLE

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_SD_BOOT et al to Kconfig
Tom Rini [Sat, 11 Dec 2021 19:55:50 +0000 (14:55 -0500)]
Convert CONFIG_SD_BOOT et al to Kconfig

This converts the following to Kconfig:
   CONFIG_SD_BOOT
   CONFIG_SD_BOOT_QSPI

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_FSL_IFC to Kconfig
Tom Rini [Sat, 11 Dec 2021 19:55:49 +0000 (14:55 -0500)]
Convert CONFIG_FSL_IFC to Kconfig

This converts the following to Kconfig:
   CONFIG_FSL_IFC

This is done via select statements to match previous logic.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoConvert CONFIG_ENV_SPI_BUS et al to Kconfig
Tom Rini [Sat, 11 Dec 2021 19:55:48 +0000 (14:55 -0500)]
Convert CONFIG_ENV_SPI_BUS et al to Kconfig

This converts the following to Kconfig:
   CONFIG_ENV_SPI_BUS
   CONFIG_ENV_SPI_CS
   CONFIG_ENV_SPI_MAX_HZ
   CONFIG_ENV_SPI_MODE

As part of this, we use Kconfig to provide the defaults now that were
done in include/spi_flash.h.  We also in some cases change from using
CONFIG_ENV_SPI_FOO to CONFIG_SF_DEFAULT_FOO as those were the values in
use anyhow as ENV was not enabled.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoClarify CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW in Kconfig
Tom Rini [Sat, 11 Dec 2021 19:55:47 +0000 (14:55 -0500)]
Clarify CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW in Kconfig

This is a "hex" prompt but the default value was given as an int.
Switch the default to hex (0x0) and remove the defconfigs that were
using the default, but as hex before.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agoarm: Drop unused tam3517-common.h
Tom Rini [Sat, 11 Dec 2021 19:55:46 +0000 (14:55 -0500)]
arm: Drop unused tam3517-common.h

With the relevant platforms removed, drop this file.

Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agox86: coreboot: Add a sample script to build a qemu image
Simon Glass [Fri, 19 Nov 2021 20:24:07 +0000 (13:24 -0700)]
x86: coreboot: Add a sample script to build a qemu image

It is useful to boot coreboot (with U-Boot as a payload) from qemu. Add
a sample script to show how to do this.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agox86: coreboot: Support getting a logo from virtio
Simon Glass [Fri, 19 Nov 2021 20:24:06 +0000 (13:24 -0700)]
x86: coreboot: Support getting a logo from virtio

Enable this feature so that a splash screen can be provided.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: Support virtio devices with the splash screen
Simon Glass [Fri, 19 Nov 2021 20:24:05 +0000 (13:24 -0700)]
video: Support virtio devices with the splash screen

This is useful for showing a logo when booting from qemu.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: Show the U-Boot logo by default
Simon Glass [Fri, 19 Nov 2021 20:24:04 +0000 (13:24 -0700)]
video: Show the U-Boot logo by default

Enable this for boards with a display, unless they are using the SPLASH
feature.

This shows a U-Boot logo on boards with a display, which seems like a
useful thing.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: Support showing the U-Boot logo
Simon Glass [Fri, 19 Nov 2021 20:24:03 +0000 (13:24 -0700)]
video: Support showing the U-Boot logo

Show the U-Boot logo by default. This is only 7KB in size so seems like
a useful default for boards that enable a display.

If SPLASH_SCREEN is enabled, it is not enabled by default, so as not to
conflict with that feature.

Also disable it for tests, since we don't want to complicate the output.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: Drop VIDEO_LOGO from cfb_console
Simon Glass [Fri, 19 Nov 2021 20:24:02 +0000 (13:24 -0700)]
video: Drop VIDEO_LOGO from cfb_console

This driver is obsolete and only used by nokia_rx51. It should be deleted.
For now, drop the VIDEO_LOGO code to avoid confusion with the new
implementation.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: Convert CONFIG_VIDEO_LOGO to Kconfig
Simon Glass [Fri, 19 Nov 2021 20:24:01 +0000 (13:24 -0700)]
video: Convert CONFIG_VIDEO_LOGO to Kconfig

This converts the following to Kconfig:
   CONFIG_VIDEO_LOGO

Note that this option depends on CONFIG_DM_VIDEO now, since cfb_console is
deprecated. The only relevant code is now in splash.c

Drop the check for DM_VIDEO in that file.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: Drop #ifdefs from video_bmp
Simon Glass [Fri, 19 Nov 2021 20:24:00 +0000 (13:24 -0700)]
video: Drop #ifdefs from video_bmp

Convert the current preprocessor macros to C code.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: theadorable: Use RGB565 for BMP blitting
Simon Glass [Fri, 19 Nov 2021 20:23:59 +0000 (13:23 -0700)]
video: theadorable: Use RGB565 for BMP blitting

At present this uses RGB555 format for blitting to a display. Sandbox uses
565 and that seems to be more normal for BMP as well. Update the code
accordingly and add a test.

Note that this likely breaks the theadorable board so we may need to
discuss supporting both formats.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: Add a test for 16bpp BMP files
Simon Glass [Fri, 19 Nov 2021 20:23:58 +0000 (13:23 -0700)]
video: Add a test for 16bpp BMP files

Add a compressed 16bpp BMP file and a test to cover this.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: Tidy up 24/32 BMP blitting
Simon Glass [Fri, 19 Nov 2021 20:23:57 +0000 (13:23 -0700)]
video: Tidy up 24/32 BMP blitting

Drop the unnecessary brackets.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: Drop the uclass colour map
Simon Glass [Fri, 19 Nov 2021 20:23:56 +0000 (13:23 -0700)]
video: Drop the uclass colour map

We don't need this anymore since we use the BMP palette directly. Drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: bmp: Update RLE8 support to use the write function
Simon Glass [Fri, 19 Nov 2021 20:23:55 +0000 (13:23 -0700)]
video: bmp: Update RLE8 support to use the write function

Update this code to use write_pix8() rather than writing the pixels only
for a single supported display depth. This allows us to support any
depth.

Add some more tests too.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: Move BMP pixel-writing into a function
Simon Glass [Fri, 19 Nov 2021 20:23:54 +0000 (13:23 -0700)]
video: Move BMP pixel-writing into a function

At present the code that writes to a pixel is quite convoluted. It uses a
colour map which is in the uclass and the same code is repeated in
different places within video_bmp_display().

As a first step, create a function which can write a pixel from the
bitmap, no matter what the display depth. Use any provided palette
directly, rather than using the uclass version.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: Drop fb_put_byte() el at
Simon Glass [Fri, 19 Nov 2021 20:23:53 +0000 (13:23 -0700)]
video: Drop fb_put_byte() el at

These functions are not used with driver model, nor in any U-Boot boards.
Drop them and inline the code.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agosandbox: Enable support for the gzip command
Simon Glass [Fri, 19 Nov 2021 20:23:52 +0000 (13:23 -0700)]
sandbox: Enable support for the gzip command

This does not work with sandbox at present. Fix it up to use map_sysmem()
to convert an address to a pointer.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: Expand video debugging buffer size
Simon Glass [Fri, 19 Nov 2021 20:23:51 +0000 (13:23 -0700)]
video: Expand video debugging buffer size

On sandbox these addresses are 16 hex digits log so we need more space
for the debug string. Update it.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agosandbox: video: Add BMP tests for 32bpp and 8bpp modes
Simon Glass [Fri, 19 Nov 2021 20:23:50 +0000 (13:23 -0700)]
sandbox: video: Add BMP tests for 32bpp and 8bpp modes

Add a few more tests for BMP rendering. Use a back door into the sandbox
SDL driver to adjust the resolution at runtime.

The truetype code does not support 8bpp. Add this so that the display is
not blank when running in this mode.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agosandbox: video: Correct the address of the copy base
Simon Glass [Fri, 19 Nov 2021 20:23:49 +0000 (13:23 -0700)]
sandbox: video: Correct the address of the copy base

The intention is for the copy base to start halfway through the
frame-buffer area. At present is it actually below the frame buffer,
which could have anything in it (probably it is malloc space). Fix
this.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: sandbox: Set a maximum frame-buffer size
Simon Glass [Fri, 19 Nov 2021 20:23:48 +0000 (13:23 -0700)]
video: sandbox: Set a maximum frame-buffer size

If U-Boot starts with the frame buffer set to 16bpp but then runs a test
that uses 32bpp, there is not enough space. Update the driver to use the
maximum possible frame-buffer size, to avoid this.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agoconsole: Avoid serial output before the console is running
Simon Glass [Fri, 19 Nov 2021 20:23:47 +0000 (13:23 -0700)]
console: Avoid serial output before the console is running

The video driver uses this for debugging, but if used before relocation it
crashes at present. Avoid trying to output debugging before the console is
ready.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agovideo: sandbox: Avoid duplicate display windows
Simon Glass [Fri, 19 Nov 2021 20:23:46 +0000 (13:23 -0700)]
video: sandbox: Avoid duplicate display windows

When unit tests are run they currently create a new window. Update the
code so that the old one is removed first. This avoids the confusion as to
which one is active.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agosandbox: video: Support 8bpp depth
Simon Glass [Fri, 19 Nov 2021 20:23:45 +0000 (13:23 -0700)]
sandbox: video: Support 8bpp depth

At present sandbox only supports 16 and 32bpp depths, since those are the
easy ones with SDL.

We can support other depths by manually converting the pixel formats. Add
support for this, to enable an 8ppp (monochrome) format.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agoMerge branch '2021-12-23-make-OF_BOARD-a-boolean' into next
Tom Rini [Fri, 24 Dec 2021 14:31:35 +0000 (09:31 -0500)]
Merge branch '2021-12-23-make-OF_BOARD-a-boolean' into next

Merge v8 of Simon's series to make CONFIG_OF_BOARD a boolean option.
Quoting him:

With Ilias' efforts we have dropped OF_PRIOR_STAGE and OF_HOSTFILE so
there are only three ways to obtain a devicetree:

   - OF_SEPARATE - the normal way, where the devicetree is built and
      appended to U-Boot
   - OF_EMBED - for development purposes, the devicetree is embedded in
      the ELF file (also used for EFI)
   - OF_BOARD - the board figures it out on its own

The last one is currently set up so that no devicetree is needed at all
in the U-Boot tree. Most boards do provide one, but some don't. Some
don't even provide instructions on how to boot on the board.

The problems with this approach were covered in another patch[1], since
removed from this series.

In practice, OF_BOARD is not really distinct from OF_SEPARATE. Any board
can obtain its devicetree at runtime, even it is has a devicetree built
in U-Boot. This is because U-Boot may be a second-stage bootloader and its
caller may have a better idea about the hardware available in the machine.
This is the case with a few QEMU boards, for example.

So it makes no sense to have OF_BOARD as a 'choice'. It should be an
option, available with either OF_SEPARATE or OF_EMBED. This would allow
rpi3, for example, to run with the devicetree provided by the prior
bootloader.

This series makes this change, adding various missing devicetree files
(and placeholders) to make the build work.

To make the 'prior stage' side of things more deterministic, a new
OF_HAS_PRIOR_STAGE is added, which cannot be disabled by updated a board's
defconfig. This should help to prevent mistakes.

It also adds a run-time message showing where the devicetree came from,
as well as warnings if the board's expected flow is not being used. This
comes originally from the 'standard passage' series, which depends on
this series.

It also provides a few qemu clean-ups discovered along the way. The
qemu-riscv64_spl problem is fixed.

Please see [2] for discussion on the v6 series.

I put Heinrich's Tested-by tag[3] for the series onto the three devicetree
patches (ARM and RISC-V) that I think it most affects. It isn't possible
to apply a tag to a whole series at present and in any case there are
changes in v7.

This series is available at u-boot-dm/ofb-working

[1] https://patchwork.ozlabs.org/project/uboot/patch/20211207001209.3467163-2-sjg@chromium.org/
[2] https://lore.kernel.org/u-boot/20211205133207.GW1220664@bill-the-cat/T/#mcd8c0258827fbc1bb3000b7ff9ba0929df1ddcb2
[3] https://lore.kernel.org/u-boot/93913911-4d20-d28f-ee04-739985184c5e@canonical.com/raw

2 years agofdt: Show a runtime warning based on devicetree source
Simon Glass [Fri, 17 Dec 2021 03:59:39 +0000 (20:59 -0700)]
fdt: Show a runtime warning based on devicetree source

When running, if the devicetree failed to come from the expected source,
show a warning, e.g:

   U-Boot ...

   DRAM:  128 MiB
   Core:  42 devices, 11 uclasses, devicetree: separate
   Warning: Unexpected devicetree source (not from a prior stage)
   Warning: U-Boot may not function properly
   Flash: 64 MiB
   ...

These warnings should only appear if the board config has been changed, or
the prior stage is broken.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agofdt: Avoid emitting an device tree when not needed
Simon Glass [Fri, 17 Dec 2021 03:59:38 +0000 (20:59 -0700)]
fdt: Avoid emitting an device tree when not needed

U-Boot always needs some sort of a device tree in the build. Some boards
never actually use this, at least in production systems, since a prior
firmware stage sets one up and passes it to U-Boot. At present the only
mechanism to do that is with custom function (OF_BOARD), but future work
will include a standard way of doing this ('standard passage').

It can be confusing to see a device tree emitted from the U-Boot build in
this situation. Add an option to drop it.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agofdt: Makefile: Ensure that OF_BOARD is used when needed
Simon Glass [Fri, 17 Dec 2021 03:59:37 +0000 (20:59 -0700)]
fdt: Makefile: Ensure that OF_BOARD is used when needed

Boards which define OF_HAS_PRIOR_STAGE must define OF_BOARD at present,
since a custom function is the only way to obtain the devicetree at
runtime.

Add a build error when this requirement is not met, to avoid accepting
any patches which break this requirement.

Add an allowlist for boards which use it, currently none. This allowlist
can be updated for local development, if needed.

Signed-off-by: Simon Glass <sjg@chromium.org>
[trini: change of_whitelist to of_allowlist]
Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agofdt: Enable OF_HAS_PRIOR_STAGE for most boards with OF_BOARD
Simon Glass [Fri, 17 Dec 2021 03:59:36 +0000 (20:59 -0700)]
fdt: Enable OF_HAS_PRIOR_STAGE for most boards with OF_BOARD

Use this new Kconfig instead of OF_BOARD, so we know for sure which boards
obtain their devicetree from a prior stage. Leave sandbox alone since it
does not. Also don't touch xilinx_versal_virt since it does not have a
specific TARGET Kconfig.

This option implies OF_BOARD for now, but with future work standard
passage may be used instead.

Signed-off-by: Simon Glass <sjg@chromium.org>
[trini: Add rpi_4_32b and rpi_arm64 to the list of boards converted]
Signed-off-by: Tom Rini <trini@konsulko.com>
2 years agofdt: Add a Kconfig for boards with a prior stage
Simon Glass [Fri, 17 Dec 2021 03:59:35 +0000 (20:59 -0700)]
fdt: Add a Kconfig for boards with a prior stage

When U-Boot is started from another firmware program, not just a prior
phase of U-Boot, special behaviour is typically used. In particular, the
device tree may come from that prior stage.

At present this is sort-of indicated by OF_BOARD, although the
correlation is not 1:1, since that option simply means that the board has
a custom mechanism for obtaining the device tree. For example, sandbox
defines OF_BOARD. Also the board_fdt_blob_setup() function can in fact
make use of the devicetree in U-Boot if it wishes, as used by
dragonboard410c until very recently.

Add an explicit Kconfig for this situation. Update the OF_BOARD option to
more-accurately reflect what it is doing, e.g. for sandbox.

Drop the docs in the README as it is out of date.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agofdt: Report the devicetree source
Simon Glass [Fri, 17 Dec 2021 03:59:34 +0000 (20:59 -0700)]
fdt: Report the devicetree source

It can be confusing to figure out where the devicetree came from. It seems
important enough to warrant a message during boot. Add information about
the number of devices and uclasses too since it is helpful to have some
idea what is going on with driver model.

Report the devicetree source in bdinfo too.

This looks something like this, with > marking the new line.

   U-Boot 2021.10-00190 (Oct 30 2021 - 09:01:29 -0600)

   DRAM:  128 MiB
>  Core:  42 devices, 11 uclasses, devicetree: passage
   Flash: 64 MiB

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agofdt: Record where the devicetree came from
Simon Glass [Fri, 17 Dec 2021 03:59:33 +0000 (20:59 -0700)]
fdt: Record where the devicetree came from

Keep track of where the devicetree came from, so we can report this later.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agodm: core: Allow getting some basic stats
Simon Glass [Fri, 17 Dec 2021 03:59:32 +0000 (20:59 -0700)]
dm: core: Allow getting some basic stats

Add a function that returns some basic stats about driver model. For now
we only have two.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agofdt: Don't call board_fdt_blob_setup() without OF_BOARD
Simon Glass [Fri, 17 Dec 2021 03:59:31 +0000 (20:59 -0700)]
fdt: Don't call board_fdt_blob_setup() without OF_BOARD

At present this override function is called even when OF_BOARD is not
enabled. This makes it impossible to disable this feature and in fact
makes the OF_BOARD option useless.

Reinstate its intended purpose, so that it is possible to switch between
the appended devicetree and one provided by the board's custom function.

A follower patch adds warnings for this scenario, but for now we don't
have a Kconfig that definitively tells us that OF_BOARD should be used.

Signed-off-by: Simon Glass <sjg@chromium.org>
2 years agofdt: Drop remaining preprocessor macros in fdtdec_setup()
Simon Glass [Fri, 17 Dec 2021 03:59:30 +0000 (20:59 -0700)]
fdt: Drop remaining preprocessor macros in fdtdec_setup()

We only have two choices for obtaining the devicetree. Simplify the code
to make that clear.

Signed-off-by: Simon Glass <sjg@chromium.org>