menu "Generic Driver Options"

config DM
	bool "Enable Driver Model"
	help
	  This config option enables Driver Model. This brings in the core
	  support, including scanning of platform data on start-up. If
	  CONFIG_OF_CONTROL is enabled, the device tree will be scanned also
	  when available.

config SPL_DM
	bool "Enable Driver Model for SPL"
	depends on DM && SPL
	help
	  Enable driver model in SPL. You will need to provide a
	  suitable malloc() implementation. If you are not using the
	  full malloc() enabled by CONFIG_SYS_SPL_MALLOC_START,
	  consider using CONFIG_SYS_MALLOC_SIMPLE. In that case you
	  must provide CONFIG_SPL_SYS_MALLOC_F_LEN to set the size.
	  In most cases driver model will only allocate a few uclasses
	  and devices in SPL, so 1KB should be enable. See
	  CONFIG_SPL_SYS_MALLOC_F_LEN for more details on how to enable it.

config TPL_DM
	bool "Enable Driver Model for TPL"
	depends on DM && TPL
	help
	  Enable driver model in TPL. You will need to provide a
	  suitable malloc() implementation. If you are not using the
	  full malloc() enabled by CONFIG_SYS_SPL_MALLOC_START,
	  consider using CONFIG_SYS_MALLOC_SIMPLE. In that case you
	  must provide CONFIG_SPL_SYS_MALLOC_F_LEN to set the size.
	  In most cases driver model will only allocate a few uclasses
	  and devices in SPL, so 1KB should be enough. See
	  CONFIG_SPL_SYS_MALLOC_F_LEN for more details on how to enable it.
	  Disable this for very small implementations.

config DM_WARN
	bool "Enable warnings in driver model"
	depends on DM
	default y
	help
	  The dm_warn() function can use up quite a bit of space for its
	  strings. By default this is disabled for SPL builds to save space.
	  This will cause dm_warn() to be compiled out - it will do nothing
	  when called.

config DM_DEBUG
	bool "Enable debug messages in driver model core"
	depends on DM
	help
	  Say Y here if you want to compile in debug messages in DM core.

config DM_DEVICE_REMOVE
	bool "Support device removal"
	depends on DM
	default y
	help
	  We can save some code space by dropping support for removing a
	  device. This is not normally required in SPL, so by default this
	  option is disabled for SPL.

	  Note that this may have undesirable results in the USB subsystem as
	  it causes unplugged devices to linger around in the dm-tree, and it
	  causes USB host controllers to not be stopped when booting the OS.

config DM_STDIO
	bool "Support stdio registration"
	depends on DM
	default y
	help
	  Normally serial drivers register with stdio so that they can be used
	  as normal output devices. In SPL we don't normally use stdio, so
	  we can omit this feature.

config DM_SEQ_ALIAS
	bool "Support numbered aliases in device tree"
	depends on DM
	default y
	help
	  Most boards will have a '/aliases' node containing the path to
	  numbered devices (e.g. serial0 = &serial0). This feature can be
	  disabled if it is not required.

config SPL_DM_SEQ_ALIAS
	bool "Support numbered aliases in device tree in SPL"
	depends on DM
	default n
	help
	  Most boards will have a '/aliases' node containing the path to
	  numbered devices (e.g. serial0 = &serial0). This feature can be
	  disabled if it is not required, to save code space in SPL.

config REGMAP
	bool "Support register maps"
	depends on DM
	help
	  Hardware peripherals tend to have one or more sets of registers
	  which can be accessed to control the hardware. A register map
	  models this with a simple read/write interface. It can in principle
	  support any bus type (I2C, SPI) but so far this only supports
	  direct memory access.

config SPL_REGMAP
	bool "Support register maps in SPL"
	depends on SPL_DM
	help
	  Hardware peripherals tend to have one or more sets of registers
	  which can be accessed to control the hardware. A register map
	  models this with a simple read/write interface. It can in principle
	  support any bus type (I2C, SPI) but so far this only supports
	  direct memory access.

config TPL_REGMAP
	bool "Support register maps in TPL"
	depends on TPL_DM
	help
	  Hardware peripherals tend to have one or more sets of registers
	  which can be accessed to control the hardware. A register map
	  models this with a simple read/write interface. It can in principle
	  support any bus type (I2C, SPI) but so far this only supports
	  direct memory access.

config SYSCON
	bool "Support system controllers"
	depends on REGMAP
	help
	  Many SoCs have a number of system controllers which are dealt with
	  as a group by a single driver. Some common functionality is provided
	  by this uclass, including accessing registers via regmap and
	  assigning a unique number to each.

config SPL_SYSCON
	bool "Support system controllers in SPL"
	depends on SPL_REGMAP
	help
	  Many SoCs have a number of system controllers which are dealt with
	  as a group by a single driver. Some common functionality is provided
	  by this uclass, including accessing registers via regmap and
	  assigning a unique number to each.

config TPL_SYSCON
	bool "Support system controllers in TPL"
	depends on TPL_REGMAP
	help
	  Many SoCs have a number of system controllers which are dealt with
	  as a group by a single driver. Some common functionality is provided
	  by this uclass, including accessing registers via regmap and
	  assigning a unique number to each.

config DEVRES
	bool "Managed device resources"
	depends on DM
	help
	  This option enables the Managed device resources core support.
	  Device resources managed by the devres framework are automatically
	  released whether initialization fails half-way or the device gets
	  detached.

	  If this option is disabled, devres functions fall back to
	  non-managed variants.  For example, devres_alloc() to kzalloc(),
	  devm_kmalloc() to kmalloc(), etc.

config DEBUG_DEVRES
	bool "Managed device resources debugging functions"
	depends on DEVRES
	help
	  If this option is enabled, devres debug messages are printed.
	  Also, a function is available to dump a list of device resources.
	  Select this if you are having a problem with devres or want to
	  debug resource management for a managed device.

	  If you are unsure about this, Say N here.

config SIMPLE_BUS
	bool "Support simple-bus driver"
	depends on DM && OF_CONTROL
	default y
	help
	  Supports the 'simple-bus' driver, which is used on some systems.

config SPL_SIMPLE_BUS
	bool "Support simple-bus driver in SPL"
	depends on SPL_DM && SPL_OF_CONTROL
	default y
	help
	  Supports the 'simple-bus' driver, which is used on some systems
	  in SPL.

config OF_TRANSLATE
	bool "Translate addresses using fdt_translate_address"
	depends on DM && OF_CONTROL
	default y
	help
	  If this option is enabled, the reg property will be translated
	  using the fdt_translate_address() function. This is necessary
	  on some platforms (e.g. MVEBU) using complex "ranges"
	  properties in many nodes. As this translation is not handled
	  correctly in the default simple_bus_translate() function.

	  If this option is not enabled, simple_bus_translate() will be
	  used for the address translation. This function is faster and
	  smaller in size than fdt_translate_address().

config SPL_OF_TRANSLATE
	bool "Translate addresses using fdt_translate_address in SPL"
	depends on SPL_DM && SPL_OF_CONTROL
	default n
	help
	  If this option is enabled, the reg property will be translated
	  using the fdt_translate_address() function. This is necessary
	  on some platforms (e.g. MVEBU) using complex "ranges"
	  properties in many nodes. As this translation is not handled
	  correctly in the default simple_bus_translate() function.

	  If this option is not enabled, simple_bus_translate() will be
	  used for the address translation. This function is faster and
	  smaller in size than fdt_translate_address().

config OF_ISA_BUS
	bool
	depends on OF_TRANSLATE
	help
	  Is this option is enabled then support for the ISA bus will
	  be included for addresses read from DT. This is something that
	  should be known to be required or not based upon the board
	  being targetted, and whether or not it makes use of an ISA bus.

	  The bus is matched based upon its node name equalling "isa". The
	  busses #address-cells should equal 2, with the first cell being
	  used to hold flags & flag 0x1 indicating that the address range
	  should be accessed using I/O port in/out accessors. The second
	  cell holds the offset into ISA bus address space. The #size-cells
	  property should equal 1, and of course holds the size of the
	  address range used by a device.

	  If this option is not enabled then support for the ISA bus is
	  not included and any such busses used in DT will be treated as
	  typical simple-bus compatible busses. This will lead to
	  mistranslation of device addresses, so ensure that this is
	  enabled if your board does include an ISA bus.

config DM_DEV_READ_INLINE
	bool
	default y if !OF_LIVE

endmenu
