riscv: Remove OF_PRIOR_STAGE from RISC-V boards
[platform/kernel/u-boot.git] / dts / Kconfig
index a5f30c8..7a297b2 100644 (file)
@@ -19,16 +19,44 @@ config BINMAN
        bool
        select DTOC
 
+config BINMAN_STANDALONE_FDT
+       bool
+       depends on BINMAN
+       default y if OF_BOARD || OF_PRIOR_STAGE
+       help
+         This option tells U-Boot build system that a standalone device tree
+         source is explicitly required when using binman to package U-Boot.
+
+         This is not necessary in a common scenario where a device tree source
+         that contains the binman node is provided in the arch/<arch>/dts
+         directory for a specific board. Such device tree sources are built for
+         OF_SEPARATE or OF_EMBED. However for a scenario like the board device
+         tree blob is not provided in the U-Boot build tree, but fed to U-Boot
+         in the runtime, e.g.: in the OF_PRIOR_STAGE case that it is passed by
+         a prior stage bootloader. For such scenario, a standalone device tree
+         blob containing binman node to describe how to package U-Boot should
+         be provided explicitly.
+
 menu "Device Tree Control"
        depends on SUPPORT_OF_CONTROL
 
 config OF_CONTROL
        bool "Run-time configuration via Device Tree"
        select DTC
+       select OF_LIBFDT if !OF_PLATDATA
+       select OF_REAL if !OF_PLATDATA
        help
          This feature provides for run-time configuration of U-Boot
          via a flattened device tree.
 
+config OF_REAL
+       bool
+       help
+         Indicates that a real devicetree is available which can be accessed
+         at runtime. This means that dev_read_...() functions can be used to
+         read data from the devicetree for each device. This is true if
+         OF_CONTROL is enabled in U-Boot proper.
+
 config OF_BOARD_FIXUP
        bool "Board-specific manipulation of Device Tree"
        help
@@ -42,14 +70,18 @@ config OF_BOARD_FIXUP
 config SPL_OF_CONTROL
        bool "Enable run-time configuration via Device Tree in SPL"
        depends on SPL && OF_CONTROL
+       select SPL_OF_LIBFDT if !SPL_OF_PLATDATA
+       select SPL_OF_REAL if !SPL_OF_PLATDATA
        help
          Some boards use device tree in U-Boot but only have 4KB of SRAM
-         which is not enough to support device tree. Enable this option to
+         which is not enough to support device tree. Disable this option to
          allow such boards to be supported by U-Boot SPL.
 
 config TPL_OF_CONTROL
        bool "Enable run-time configuration via Device Tree in TPL"
        depends on TPL && OF_CONTROL
+       select TPL_OF_LIBFDT if !TPL_OF_PLATDATA
+       select TPL_OF_REAL if !TPL_OF_PLATDATA
        help
          Some boards use device tree in U-Boot but only have 4KB of SRAM
          which is not enough to support device tree. Enable this option to
@@ -57,7 +89,7 @@ config TPL_OF_CONTROL
 
 config OF_LIVE
        bool "Enable use of a live tree"
-       depends on OF_CONTROL
+       depends on DM && OF_CONTROL
        help
          Normally U-Boot uses a flat device tree which saves space and
          avoids the need to unpack the tree before use. However a flat
@@ -86,7 +118,7 @@ config OF_EMBED
          Boards in the mainline U-Boot tree should not use it.
 
 config OF_BOARD
-       bool "Provided by the board at runtime"
+       bool "Provided by the board (e.g a previous loader) at runtime"
        depends on !SANDBOX
        help
          If this option is enabled, the device tree will be provided by
@@ -130,8 +162,16 @@ config OF_LIST
          device tree files (without the directory or .dtb suffix)
          separated by <space>.
 
+config OF_OVERLAY_LIST
+       string "List of device tree overlays to include for DT control"
+       depends on SPL_LOAD_FIT_APPLY_OVERLAY
+       help
+         This option specifies a list of device tree overlays to use for DT
+         control. This option can then be used by a FIT generator to include
+         the overlays in the FIT image.
+
 choice
-       prompt "SPL OF LIST compression"
+       prompt "OF LIST compression"
        depends on MULTI_DTB_FIT
        default MULTI_DTB_FIT_NO_COMPRESSION
 
@@ -207,7 +247,7 @@ config MULTI_DTB_FIT
 
 
 config SPL_MULTI_DTB_FIT
-       depends on SPL_LOAD_FIT && SPL_OF_CONTROL && !SPL_OF_PLATDATA
+       depends on SPL_LOAD_FIT && SPL_OF_REAL
        bool "Support embedding several DTBs in a FIT image for the SPL"
        help
          This option provides the SPL with the ability to select its own
@@ -291,10 +331,10 @@ config SPL_MULTI_DTB_FIT_USER_DEF_ADDR
 config OF_SPL_REMOVE_PROPS
        string "List of device tree properties to drop for SPL"
        depends on SPL_OF_CONTROL
-       default "interrupt-parent" if SPL_PINCTRL && SPL_CLK
-       default "clocks clock-names interrupt-parent" if SPL_PINCTRL
-       default "pinctrl-0 pinctrl-names interrupt-parent" if SPL_CLK
-       default "pinctrl-0 pinctrl-names clocks clock-names interrupt-parent"
+       default "interrupt-parent interrupts" if SPL_PINCTRL && SPL_CLK
+       default "clocks clock-names interrupt-parent interrupts" if SPL_PINCTRL
+       default "pinctrl-0 pinctrl-names interrupt-parent interrupts" if SPL_CLK
+       default "pinctrl-0 pinctrl-names clocks clock-names interrupt-parent interrupts"
        help
          Since SPL normally runs in a reduced memory space, the device tree
          is cut down to only what is needed to load and start U-Boot. Only
@@ -303,10 +343,31 @@ config OF_SPL_REMOVE_PROPS
          can be discarded. This option defines the list of properties to
          discard.
 
+config OF_DTB_PROPS_REMOVE
+       bool "Enable removal of device tree properties"
+       depends on OF_CONTROL
+       help
+         Some boards have restricted amount of storage for U-Boot image.
+         If the generated binary doesn't fit into available image storage,
+         the built-in device tree could probably be cut down by removing
+         some not required device tree properties to reduce the image size.
+         Enable this option and define the properties to be removed in the
+         CONFIG_OF_REMOVE_PROPS list. Do not enable this option if you must
+         pass the built-in DTB directly to the kernel!
+
+config OF_REMOVE_PROPS
+       string "List of device tree properties to drop"
+       depends on OF_DTB_PROPS_REMOVE
+       default "interrupt-parent interrupts" if PINCTRL
+       help
+         Some properties are not used by U-Boot and can be discarded.
+         This option defines the list of properties to discard.
+
 config SPL_OF_PLATDATA
        bool "Generate platform data for use in SPL"
        depends on SPL_OF_CONTROL
        select DTOC
+       select SPL_OF_PLATDATA_DRIVER_RT if !SPL_OF_PLATDATA_INST
        help
          For very constrained SPL environments the overhead of decoding
          device tree nodes and converting their contents into platform data
@@ -315,19 +376,83 @@ config SPL_OF_PLATDATA
          former can add 3KB or more to a Thumb 2 Image.
 
          This option enables generation of platform data from the device
-         tree as C code. This code creates devices using U_BOOT_DEVICE()
+         tree as C code. This code creates devices using U_BOOT_DRVINFO()
          declarations. The benefit is that it allows driver code to access
          the platform data directly in C structures, avoidin the libfdt
          overhead.
 
          This option works by generating C structure declarations for each
-         compatible string, then adding platform data and U_BOOT_DEVICE
+         compatible string, then adding platform data and U_BOOT_DRVINFO
          declarations for each node. See of-plat.txt for more information.
 
+config SPL_OF_REAL
+       bool
+       help
+         Indicates that a real devicetree is available which can be accessed
+         at runtime. This means that dev_read_...() functions can be used to
+         read data from the devicetree for each device. This is true if
+         SPL_OF_CONTROL is enabled and not SPL_OF_PLATDATA
+
+if SPL_OF_PLATDATA
+
+config SPL_OF_PLATDATA_PARENT
+       bool "Support parent information in devices"
+       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
+       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.
+
+config SPL_OF_PLATDATA_NO_BIND
+       bool "Don't allow run-time binding of devices"
+       depends on SPL_OF_PLATDATA_INST
+       default y
+       help
+         This removes the ability to bind devices at run time, thus saving
+         some code space in U-Boot. This can be disabled if binding is needed,
+         at the code of some code size increase.
+
+config SPL_OF_PLATDATA_RT
+       bool "Use a separate struct for device runtime data"
+       depends on SPL_OF_PLATDATA_INST
+       default y
+       help
+         For systems running SPL from read-only memory it is convenient to
+         separate out the runtime information, so that the devices don't need
+         to be copied before being used. This moves the read-write parts of
+         struct udevice (at present just the flags) into a separate struct,
+         which is allocated at runtime.
+
+config SPL_OF_PLATDATA_DRIVER_RT
+       bool
+       help
+         Use a separate struct for driver runtime data.
+
+         This enables the driver_rt information, used with of-platdata when
+         of-platdata-inst is not used. It allows finding devices by their
+         driver data.
+
+endif
+
+config TPL_OF_REAL
+       bool
+       help
+         Indicates that a real devicetree is available which can be accessed
+         at runtime. This means that dev_read_...() functions can be used to
+         read data from the devicetree for each device. This is true if
+         TPL_OF_CONTROL is enabled and not TPL_OF_PLATDATA
+
 config TPL_OF_PLATDATA
        bool "Generate platform data for use in TPL"
        depends on TPL_OF_CONTROL
        select DTOC
+       select TPL_OF_PLATDATA_DRIVER_RT if !TPL_OF_PLATDATA_INST
        help
          For very constrained SPL environments the overhead of decoding
          device tree nodes and converting their contents into platform data
@@ -336,22 +461,61 @@ config TPL_OF_PLATDATA
          former can add 3KB or more to a Thumb 2 Image.
 
          This option enables generation of platform data from the device
-         tree as C code. This code creates devices using U_BOOT_DEVICE()
+         tree as C code. This code creates devices using U_BOOT_DRVINFO()
          declarations. The benefit is that it allows driver code to access
          the platform data directly in C structures, avoidin the libfdt
          overhead.
 
          This option works by generating C structure declarations for each
-         compatible string, then adding platform data and U_BOOT_DEVICE
+         compatible string, then adding platform data and U_BOOT_DRVINFO
          declarations for each node. See of-plat.txt for more information.
 
-endmenu
+if TPL_OF_PLATDATA
+
+config TPL_OF_PLATDATA_PARENT
+       bool "Support parent information in devices"
+       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
+       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.
+
+config TPL_OF_PLATDATA_NO_BIND
+       bool "Don't allow run-time binding of devices"
+       depends on TPL_OF_PLATDATA_INST
+       default y
+       help
+         This removes the ability to bind devices at run time, thus saving
+         some code space in U-Boot. This can be disabled if binding is needed,
+         at the code of some code size increase.
+
+config TPL_OF_PLATDATA_RT
+       bool "Use a separate struct for device runtime data"
+       depends on TPL_OF_PLATDATA_INST
+       default y
+       help
+         For systems running TPL from read-only memory it is convenient to
+         separate out the runtime information, so that the devices don't need
+         to be copied before being used. This moves the read-write parts of
+         struct udevice (at present just the flags) into a separate struct,
+         which is allocated at runtime.
 
-config MKIMAGE_DTC_PATH
-       string "Path to dtc binary for use within mkimage"
-       default "dtc"
+config TPL_OF_PLATDATA_DRIVER_RT
+       bool
        help
-         The mkimage host tool will, in order to generate FIT images make
-         calls to the dtc application in order to create the output.  In
-         some cases the system dtc may not support all required features
-         and the path to a different version should be given here.
+         Use a separate struct for driver runtime data.
+
+         This enables the driver_rt information, used with of-platdata when
+         of-platdata-inst is not used. It allows finding devices by their
+         driver data.
+
+endif
+
+endmenu