| 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 |