1menu "Generic Driver Options" 2 3config DM 4 bool "Enable Driver Model" 5 help 6 This config option enables Driver Model. This brings in the core 7 support, including scanning of platform data on start-up. If 8 CONFIG_OF_CONTROL is enabled, the device tree will be scanned also 9 when available. 10 11config SPL_DM 12 bool "Enable Driver Model for SPL" 13 depends on DM && SPL 14 help 15 Enable driver model in SPL. You will need to provide a 16 suitable malloc() implementation. If you are not using the 17 full malloc() enabled by CONFIG_SYS_SPL_MALLOC_START, 18 consider using CONFIG_SYS_MALLOC_SIMPLE. In that case you 19 must provide CONFIG_SPL_SYS_MALLOC_F_LEN to set the size. 20 In most cases driver model will only allocate a few uclasses 21 and devices in SPL, so 1KB should be enable. See 22 CONFIG_SPL_SYS_MALLOC_F_LEN for more details on how to enable it. 23 24config TPL_DM 25 bool "Enable Driver Model for TPL" 26 depends on DM && TPL 27 help 28 Enable driver model in TPL. You will need to provide a 29 suitable malloc() implementation. If you are not using the 30 full malloc() enabled by CONFIG_SYS_SPL_MALLOC_START, 31 consider using CONFIG_SYS_MALLOC_SIMPLE. In that case you 32 must provide CONFIG_SPL_SYS_MALLOC_F_LEN to set the size. 33 In most cases driver model will only allocate a few uclasses 34 and devices in SPL, so 1KB should be enough. See 35 CONFIG_SPL_SYS_MALLOC_F_LEN for more details on how to enable it. 36 Disable this for very small implementations. 37 38config DM_WARN 39 bool "Enable warnings in driver model" 40 depends on DM 41 default y 42 help 43 The dm_warn() function can use up quite a bit of space for its 44 strings. By default this is disabled for SPL builds to save space. 45 This will cause dm_warn() to be compiled out - it will do nothing 46 when called. 47 48config DM_DEBUG 49 bool "Enable debug messages in driver model core" 50 depends on DM 51 help 52 Say Y here if you want to compile in debug messages in DM core. 53 54config DM_DEVICE_REMOVE 55 bool "Support device removal" 56 depends on DM 57 default y 58 help 59 We can save some code space by dropping support for removing a 60 device. This is not normally required in SPL, so by default this 61 option is disabled for SPL. 62 63 Note that this may have undesirable results in the USB subsystem as 64 it causes unplugged devices to linger around in the dm-tree, and it 65 causes USB host controllers to not be stopped when booting the OS. 66 67config DM_STDIO 68 bool "Support stdio registration" 69 depends on DM 70 default y 71 help 72 Normally serial drivers register with stdio so that they can be used 73 as normal output devices. In SPL we don't normally use stdio, so 74 we can omit this feature. 75 76config DM_SEQ_ALIAS 77 bool "Support numbered aliases in device tree" 78 depends on DM 79 default y 80 help 81 Most boards will have a '/aliases' node containing the path to 82 numbered devices (e.g. serial0 = &serial0). This feature can be 83 disabled if it is not required. 84 85config SPL_DM_SEQ_ALIAS 86 bool "Support numbered aliases in device tree in SPL" 87 depends on DM 88 default n 89 help 90 Most boards will have a '/aliases' node containing the path to 91 numbered devices (e.g. serial0 = &serial0). This feature can be 92 disabled if it is not required, to save code space in SPL. 93 94config REGMAP 95 bool "Support register maps" 96 depends on DM 97 help 98 Hardware peripherals tend to have one or more sets of registers 99 which can be accessed to control the hardware. A register map 100 models this with a simple read/write interface. It can in principle 101 support any bus type (I2C, SPI) but so far this only supports 102 direct memory access. 103 104config SPL_REGMAP 105 bool "Support register maps in SPL" 106 depends on SPL_DM 107 help 108 Hardware peripherals tend to have one or more sets of registers 109 which can be accessed to control the hardware. A register map 110 models this with a simple read/write interface. It can in principle 111 support any bus type (I2C, SPI) but so far this only supports 112 direct memory access. 113 114config TPL_REGMAP 115 bool "Support register maps in TPL" 116 depends on TPL_DM 117 help 118 Hardware peripherals tend to have one or more sets of registers 119 which can be accessed to control the hardware. A register map 120 models this with a simple read/write interface. It can in principle 121 support any bus type (I2C, SPI) but so far this only supports 122 direct memory access. 123 124config SYSCON 125 bool "Support system controllers" 126 depends on REGMAP 127 help 128 Many SoCs have a number of system controllers which are dealt with 129 as a group by a single driver. Some common functionality is provided 130 by this uclass, including accessing registers via regmap and 131 assigning a unique number to each. 132 133config SPL_SYSCON 134 bool "Support system controllers in SPL" 135 depends on SPL_REGMAP 136 help 137 Many SoCs have a number of system controllers which are dealt with 138 as a group by a single driver. Some common functionality is provided 139 by this uclass, including accessing registers via regmap and 140 assigning a unique number to each. 141 142config TPL_SYSCON 143 bool "Support system controllers in TPL" 144 depends on TPL_REGMAP 145 help 146 Many SoCs have a number of system controllers which are dealt with 147 as a group by a single driver. Some common functionality is provided 148 by this uclass, including accessing registers via regmap and 149 assigning a unique number to each. 150 151config DEVRES 152 bool "Managed device resources" 153 depends on DM 154 help 155 This option enables the Managed device resources core support. 156 Device resources managed by the devres framework are automatically 157 released whether initialization fails half-way or the device gets 158 detached. 159 160 If this option is disabled, devres functions fall back to 161 non-managed variants. For example, devres_alloc() to kzalloc(), 162 devm_kmalloc() to kmalloc(), etc. 163 164config DEBUG_DEVRES 165 bool "Managed device resources debugging functions" 166 depends on DEVRES 167 help 168 If this option is enabled, devres debug messages are printed. 169 Also, a function is available to dump a list of device resources. 170 Select this if you are having a problem with devres or want to 171 debug resource management for a managed device. 172 173 If you are unsure about this, Say N here. 174 175config SIMPLE_BUS 176 bool "Support simple-bus driver" 177 depends on DM && OF_CONTROL 178 default y 179 help 180 Supports the 'simple-bus' driver, which is used on some systems. 181 182config SPL_SIMPLE_BUS 183 bool "Support simple-bus driver in SPL" 184 depends on SPL_DM && SPL_OF_CONTROL 185 default y 186 help 187 Supports the 'simple-bus' driver, which is used on some systems 188 in SPL. 189 190config OF_TRANSLATE 191 bool "Translate addresses using fdt_translate_address" 192 depends on DM && OF_CONTROL 193 default y 194 help 195 If this option is enabled, the reg property will be translated 196 using the fdt_translate_address() function. This is necessary 197 on some platforms (e.g. MVEBU) using complex "ranges" 198 properties in many nodes. As this translation is not handled 199 correctly in the default simple_bus_translate() function. 200 201 If this option is not enabled, simple_bus_translate() will be 202 used for the address translation. This function is faster and 203 smaller in size than fdt_translate_address(). 204 205config SPL_OF_TRANSLATE 206 bool "Translate addresses using fdt_translate_address in SPL" 207 depends on SPL_DM && SPL_OF_CONTROL 208 default n 209 help 210 If this option is enabled, the reg property will be translated 211 using the fdt_translate_address() function. This is necessary 212 on some platforms (e.g. MVEBU) using complex "ranges" 213 properties in many nodes. As this translation is not handled 214 correctly in the default simple_bus_translate() function. 215 216 If this option is not enabled, simple_bus_translate() will be 217 used for the address translation. This function is faster and 218 smaller in size than fdt_translate_address(). 219 220config OF_ISA_BUS 221 bool 222 depends on OF_TRANSLATE 223 help 224 Is this option is enabled then support for the ISA bus will 225 be included for addresses read from DT. This is something that 226 should be known to be required or not based upon the board 227 being targetted, and whether or not it makes use of an ISA bus. 228 229 The bus is matched based upon its node name equalling "isa". The 230 busses #address-cells should equal 2, with the first cell being 231 used to hold flags & flag 0x1 indicating that the address range 232 should be accessed using I/O port in/out accessors. The second 233 cell holds the offset into ISA bus address space. The #size-cells 234 property should equal 1, and of course holds the size of the 235 address range used by a device. 236 237 If this option is not enabled then support for the ISA bus is 238 not included and any such busses used in DT will be treated as 239 typical simple-bus compatible busses. This will lead to 240 mistranslation of device addresses, so ensure that this is 241 enabled if your board does include an ISA bus. 242 243config DM_DEV_READ_INLINE 244 bool 245 default y if !OF_LIVE 246 247endmenu 248