[PATCH 45/49] dm: of-platadata: Add option for device instantiation

Walter Lozano walter.lozano at collabora.com
Wed Jan 6 04:39:59 CET 2021


On 12/29/20 12:35 AM, Simon Glass wrote:
> Add Kconfig options to support build-time device instantiation. When
> fully implemented, this will allow dtoc to create U-Boot devices (i.e.
> struct udevice records) at build time, thus reducing code space in
> SPL.
>
> For now this defaults to off, but will be enabled when the rest of
> the implementation is in place.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
>   dts/Kconfig          | 23 +++++++++++++++++++++--
>   scripts/Makefile.spl |  4 ++++
>   2 files changed, 25 insertions(+), 2 deletions(-)
>
> diff --git a/dts/Kconfig b/dts/Kconfig
> index 71f50552e4f..e861ea48d01 100644
> --- a/dts/Kconfig
> +++ b/dts/Kconfig
> @@ -355,15 +355,24 @@ config SPL_OF_PLATDATA
>   	  compatible string, then adding platform data and U_BOOT_DRVINFO
>   	  declarations for each node. See of-plat.txt for more information.
>   
> +if SPL_OF_PLATDATA
> +
>   config SPL_OF_PLATDATA_PARENT
>   	bool "Support parent information in devices"
> -	depends on SPL_OF_PLATDATA
>   	default y
>   	help
>   	  Generally it is useful to be able to access the parent of a device
>   	  with of-platdata. To save space this can be disabled, but in that
>   	  case dev_get_parent() will always return NULL;
>   
> +config SPL_OF_PLATDATA_INST

Not sure about the limits to config names, I understand that 
SPL_OF_PLATDATA_INST means SPL_OF_PLATDATA_INSTANCE? I'm not sure but 
maybe a better name could be SPL_OF_PLATDATA_BTIME_DEV. To be honest I 
find it difficult to come with nice name.

> +	bool "Declare devices at build time"
> +	help
> +	  Declare devices as udevice instances so that they do not need to be
> +	  bound when U-Boot starts. This can save time and code space.
> +
> +endif
> +
>   config TPL_OF_PLATDATA
>   	bool "Generate platform data for use in TPL"
>   	depends on TPL_OF_CONTROL
> @@ -385,13 +394,23 @@ config TPL_OF_PLATDATA
>   	  compatible string, then adding platform data and U_BOOT_DRVINFO
>   	  declarations for each node. See of-plat.txt for more information.
>   
> +if TPL_OF_PLATDATA
> +
>   config TPL_OF_PLATDATA_PARENT
>   	bool "Support parent information in devices"
> -	depends on TPL_OF_PLATDATA
>   	default y
>   	help
>   	  Generally it is useful to be able to access the parent of a device
>   	  with of-platdata. To save space this can be disabled, but in that
>   	  case dev_get_parent() will always return NULL;
>   
> +config TPL_OF_PLATDATA_INST

Same here. Also I have a question, in which case TPL_OF_PLATDATA_INST 
and SPL_OF_PLATDATA_INST would have different values. Which is the value 
of decoupling the TPL and SPL behavior? Or is use for consistency with 
SPL_OF_PLATDATA_PARENT and TPL_OF_PLATDATA_PARENT (which also not sure 
if needed to have two different options).

> +	bool "Declare devices at build time"
> +
> +	help
> +	  Declare devices as udevice instances so that they do not need to be
> +	  bound when U-Boot starts. This can save time and code space.
> +
> +endif
> +
>   endmenu
> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
> index 72c0ad82793..6ca33abf348 100644
> --- a/scripts/Makefile.spl
> +++ b/scripts/Makefile.spl
> @@ -311,6 +311,10 @@ pythonpath = PYTHONPATH=scripts/dtc/pylibfdt
>   DTOC_ARGS := $(pythonpath) $(srctree)/tools/dtoc/dtoc \
>   	-d $(obj)/$(SPL_BIN).dtb -p $(SPL_NAME)
>   
> +ifneq ($(CONFIG_$(SPL_TPL_)OF_PLATDATA_INST),)
> +DTOC_ARGS += -i
> +endif
> +
>   quiet_cmd_dtoc = DTOC    $@
>   cmd_dtoc = $(DTOC_ARGS) -c $(obj)/dts -C include/generated all
>   


More information about the U-Boot mailing list