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 
 |