]>
Commit | Line | Data |
---|---|---|
0b11dbf7 MY |
1 | menu "Generic Driver Options" |
2 | ||
da333ae7 | 3 | config DM |
9af4a0c8 | 4 | def_bool y |
da333ae7 | 5 | help |
f94a1bed SG |
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. | |
91a91ff8 SG |
10 | |
11 | config 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 | |
65cc0e2a | 17 | full malloc() enabled by CFG_SYS_SPL_MALLOC_START, |
66bda092 | 18 | consider using CONFIG_SPL_SYS_MALLOC_SIMPLE. In that case you |
f1896c45 | 19 | must provide CONFIG_SPL_SYS_MALLOC_F_LEN to set the size. |
91a91ff8 | 20 | In most cases driver model will only allocate a few uclasses |
76656bca | 21 | and devices in SPL, so 1KB should be enough. See |
f1896c45 | 22 | CONFIG_SPL_SYS_MALLOC_F_LEN for more details on how to enable it. |
91a91ff8 | 23 | |
5a6f06f6 SG |
24 | config 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 | |
65cc0e2a | 30 | full malloc() enabled by CFG_SYS_SPL_MALLOC_START, |
66bda092 | 31 | consider using CONFIG_TPL_SYS_MALLOC_SIMPLE. In that case you |
f1896c45 | 32 | must provide CONFIG_SPL_SYS_MALLOC_F_LEN to set the size. |
5a6f06f6 SG |
33 | In most cases driver model will only allocate a few uclasses |
34 | and devices in SPL, so 1KB should be enough. See | |
f1896c45 | 35 | CONFIG_SPL_SYS_MALLOC_F_LEN for more details on how to enable it. |
5a6f06f6 SG |
36 | Disable this for very small implementations. |
37 | ||
747093dd SG |
38 | config VPL_DM |
39 | bool "Enable Driver Model for VPL" | |
40 | depends on DM && VPL | |
41 | default y if SPL_DM | |
42 | help | |
43 | Enable driver model in VPL. You will need to provide a | |
44 | suitable malloc() implementation. If you are not using the | |
65cc0e2a | 45 | full malloc() enabled by CFG_SYS_SPL_MALLOC_START, |
66bda092 | 46 | consider using CONFIG_SPL_SYS_MALLOC_SIMPLE. |
747093dd | 47 | |
91a91ff8 SG |
48 | config DM_WARN |
49 | bool "Enable warnings in driver model" | |
d648964f MY |
50 | depends on DM |
51 | default y | |
91a91ff8 | 52 | help |
abb9cd30 SG |
53 | Enable this to see warnings related to driver model. |
54 | ||
55 | Warnings may help with debugging, such as when expected devices do | |
56 | not bind correctly. If the option is disabled, dm_warn() is compiled | |
57 | out - it will do nothing when called. | |
58 | ||
59 | config SPL_DM_WARN | |
60 | bool "Enable warnings in driver model wuth SPL" | |
61 | depends on SPL_DM | |
62 | help | |
63 | Enable this to see warnings related to driver model in SPL | |
64 | ||
91a91ff8 SG |
65 | The dm_warn() function can use up quite a bit of space for its |
66 | strings. By default this is disabled for SPL builds to save space. | |
abb9cd30 SG |
67 | |
68 | Warnings may help with debugging, such as when expected devices do | |
69 | not bind correctly. If the option is disabled, dm_warn() is compiled | |
70 | out - it will do nothing when called. | |
91a91ff8 | 71 | |
ceb91909 MY |
72 | config DM_DEBUG |
73 | bool "Enable debug messages in driver model core" | |
74 | depends on DM | |
75 | help | |
76 | Say Y here if you want to compile in debug messages in DM core. | |
77 | ||
2cb4ddb9 SG |
78 | config DM_STATS |
79 | bool "Collect and show driver model stats" | |
80 | depends on DM | |
81 | default y if SANDBOX | |
82 | help | |
83 | Enable this to collect and display memory statistics about driver | |
84 | model. This can help to figure out where all the memory is going and | |
85 | to find optimisations. | |
86 | ||
87 | To display the memory stats, use the 'dm mem' command. | |
88 | ||
4f6500aa SG |
89 | config SPL_DM_STATS |
90 | bool "Collect and show driver model stats in SPL" | |
91 | depends on DM_SPL | |
92 | help | |
93 | Enable this to collect and display memory statistics about driver | |
94 | model. This can help to figure out where all the memory is going and | |
95 | to find optimisations. | |
96 | ||
97 | The stats are displayed just before SPL boots to the next phase. | |
98 | ||
91a91ff8 SG |
99 | config DM_DEVICE_REMOVE |
100 | bool "Support device removal" | |
d648964f MY |
101 | depends on DM |
102 | default y | |
91a91ff8 SG |
103 | help |
104 | We can save some code space by dropping support for removing a | |
85e51be9 | 105 | device. |
91a91ff8 | 106 | |
e5c4564e HG |
107 | Note that this may have undesirable results in the USB subsystem as |
108 | it causes unplugged devices to linger around in the dm-tree, and it | |
109 | causes USB host controllers to not be stopped when booting the OS. | |
110 | ||
5b896ed5 | 111 | config DM_EVENT |
448e2b63 TR |
112 | bool |
113 | depends on DM | |
114 | select EVENT | |
5b896ed5 SG |
115 | help |
116 | This enables support for generating events related to driver model | |
117 | operations, such as prbing or removing a device. Subsystems can | |
448e2b63 TR |
118 | register a 'spy' function that is called when the event occurs. Such |
119 | subsystems must select this option. | |
5b896ed5 | 120 | |
85e51be9 JJH |
121 | config SPL_DM_DEVICE_REMOVE |
122 | bool "Support device removal in SPL" | |
123 | depends on SPL_DM | |
85e51be9 JJH |
124 | help |
125 | We can save some code space by dropping support for removing a | |
126 | device. This is not normally required in SPL, so by default this | |
127 | option is disabled for SPL. | |
128 | ||
91a91ff8 SG |
129 | config DM_STDIO |
130 | bool "Support stdio registration" | |
d648964f MY |
131 | depends on DM |
132 | default y | |
91a91ff8 SG |
133 | help |
134 | Normally serial drivers register with stdio so that they can be used | |
135 | as normal output devices. In SPL we don't normally use stdio, so | |
136 | we can omit this feature. | |
36fa61dc SG |
137 | |
138 | config DM_SEQ_ALIAS | |
139 | bool "Support numbered aliases in device tree" | |
140 | depends on DM | |
141 | default y | |
4f627c5a NR |
142 | help |
143 | Most boards will have a '/aliases' node containing the path to | |
144 | numbered devices (e.g. serial0 = &serial0). This feature can be | |
145 | disabled if it is not required. | |
146 | ||
147 | config SPL_DM_SEQ_ALIAS | |
148 | bool "Support numbered aliases in device tree in SPL" | |
a074667d | 149 | depends on SPL_DM |
36fa61dc SG |
150 | help |
151 | Most boards will have a '/aliases' node containing the path to | |
152 | numbered devices (e.g. serial0 = &serial0). This feature can be | |
153 | disabled if it is not required, to save code space in SPL. | |
12dc8e75 | 154 | |
747093dd SG |
155 | config VPL_DM_SEQ_ALIAS |
156 | bool "Support numbered aliases in device tree in VPL" | |
157 | depends on VPL_DM | |
158 | default y | |
159 | help | |
160 | Most boards will have a '/aliases' node containing the path to | |
161 | numbered devices (e.g. serial0 = &serial0). This feature can be | |
162 | disabled if it is not required, to save code space in VPL. | |
163 | ||
ec1add1e SG |
164 | config SPL_DM_INLINE_OFNODE |
165 | bool "Inline some ofnode functions which are seldom used in SPL" | |
166 | depends on SPL_DM | |
167 | default y | |
168 | help | |
169 | This applies to several ofnode functions (see ofnode.h) which are | |
170 | seldom used. Inlining them can help reduce code size. | |
171 | ||
172 | config TPL_DM_INLINE_OFNODE | |
173 | bool "Inline some ofnode functions which are seldom used in TPL" | |
174 | depends on TPL_DM | |
175 | default y | |
176 | help | |
177 | This applies to several ofnode functions (see ofnode.h) which are | |
178 | seldom used. Inlining them can help reduce code size. | |
179 | ||
4abf68d5 NSJ |
180 | config DM_DMA |
181 | bool "Support per-device DMA constraints" | |
182 | depends on DM | |
4abf68d5 NSJ |
183 | help |
184 | Enable this to extract per-device DMA constraints, only supported on | |
185 | device-tree systems for now. This is needed in order translate | |
186 | addresses on systems where different buses have different views of | |
187 | the physical address space. | |
188 | ||
12dc8e75 SG |
189 | config REGMAP |
190 | bool "Support register maps" | |
191 | depends on DM | |
192 | help | |
193 | Hardware peripherals tend to have one or more sets of registers | |
194 | which can be accessed to control the hardware. A register map | |
195 | models this with a simple read/write interface. It can in principle | |
196 | support any bus type (I2C, SPI) but so far this only supports | |
197 | direct memory access. | |
198 | ||
41c7f664 | 199 | config SPL_REGMAP |
200 | bool "Support register maps in SPL" | |
9c447370 | 201 | depends on SPL_DM |
41c7f664 | 202 | help |
203 | Hardware peripherals tend to have one or more sets of registers | |
204 | which can be accessed to control the hardware. A register map | |
205 | models this with a simple read/write interface. It can in principle | |
206 | support any bus type (I2C, SPI) but so far this only supports | |
207 | direct memory access. | |
208 | ||
c6ac6c1b PT |
209 | config TPL_REGMAP |
210 | bool "Support register maps in TPL" | |
211 | depends on TPL_DM | |
212 | help | |
213 | Hardware peripherals tend to have one or more sets of registers | |
214 | which can be accessed to control the hardware. A register map | |
215 | models this with a simple read/write interface. It can in principle | |
216 | support any bus type (I2C, SPI) but so far this only supports | |
217 | direct memory access. | |
218 | ||
747093dd SG |
219 | config VPL_REGMAP |
220 | bool "Support register maps in VPL" | |
221 | depends on VPL_DM | |
222 | help | |
223 | Hardware peripherals tend to have one or more sets of registers | |
224 | which can be accessed to control the hardware. A register map | |
225 | models this with a simple read/write interface. It can in principle | |
226 | support any bus type (I2C, SPI) but so far this only supports | |
227 | direct memory access. | |
228 | ||
12dc8e75 SG |
229 | config SYSCON |
230 | bool "Support system controllers" | |
231 | depends on REGMAP | |
232 | help | |
233 | Many SoCs have a number of system controllers which are dealt with | |
234 | as a group by a single driver. Some common functionality is provided | |
235 | by this uclass, including accessing registers via regmap and | |
236 | assigning a unique number to each. | |
608f26c5 | 237 | |
41c7f664 | 238 | config SPL_SYSCON |
239 | bool "Support system controllers in SPL" | |
9c447370 | 240 | depends on SPL_REGMAP |
41c7f664 | 241 | help |
242 | Many SoCs have a number of system controllers which are dealt with | |
243 | as a group by a single driver. Some common functionality is provided | |
244 | by this uclass, including accessing registers via regmap and | |
245 | assigning a unique number to each. | |
246 | ||
c6ac6c1b PT |
247 | config TPL_SYSCON |
248 | bool "Support system controllers in TPL" | |
8bea4bf7 | 249 | depends on TPL_REGMAP |
747093dd SG |
250 | help |
251 | Many SoCs have a number of system controllers which are dealt with | |
252 | as a group by a single driver. Some common functionality is provided | |
253 | by this uclass, including accessing registers via regmap and | |
254 | assigning a unique number to each. | |
255 | ||
256 | config VPL_SYSCON | |
257 | bool "Support system controllers in VPL" | |
258 | depends on VPL_REGMAP | |
c6ac6c1b PT |
259 | help |
260 | Many SoCs have a number of system controllers which are dealt with | |
261 | as a group by a single driver. Some common functionality is provided | |
262 | by this uclass, including accessing registers via regmap and | |
263 | assigning a unique number to each. | |
264 | ||
e2282d70 MY |
265 | config DEVRES |
266 | bool "Managed device resources" | |
267 | depends on DM | |
268 | help | |
269 | This option enables the Managed device resources core support. | |
270 | Device resources managed by the devres framework are automatically | |
271 | released whether initialization fails half-way or the device gets | |
272 | detached. | |
273 | ||
274 | If this option is disabled, devres functions fall back to | |
275 | non-managed variants. For example, devres_alloc() to kzalloc(), | |
276 | devm_kmalloc() to kmalloc(), etc. | |
277 | ||
608f26c5 | 278 | config DEBUG_DEVRES |
40b6f2d0 | 279 | bool "Managed device resources debugging functions" |
e2282d70 | 280 | depends on DEVRES |
608f26c5 MY |
281 | help |
282 | If this option is enabled, devres debug messages are printed. | |
40b6f2d0 | 283 | Also, a function is available to dump a list of device resources. |
608f26c5 MY |
284 | Select this if you are having a problem with devres or want to |
285 | debug resource management for a managed device. | |
286 | ||
287 | If you are unsure about this, Say N here. | |
0b11dbf7 | 288 | |
628d792c MV |
289 | config SIMPLE_BUS |
290 | bool "Support simple-bus driver" | |
291 | depends on DM && OF_CONTROL | |
292 | default y | |
293 | help | |
294 | Supports the 'simple-bus' driver, which is used on some systems. | |
295 | ||
296 | config SPL_SIMPLE_BUS | |
297 | bool "Support simple-bus driver in SPL" | |
298 | depends on SPL_DM && SPL_OF_CONTROL | |
8bebf03c | 299 | default y |
628d792c MV |
300 | help |
301 | Supports the 'simple-bus' driver, which is used on some systems | |
302 | in SPL. | |
303 | ||
80279fa1 BM |
304 | config SIMPLE_BUS_CORRECT_RANGE |
305 | bool "Decode the 'simple-bus' <range> by honoring the #address-cells and #size-cells" | |
306 | depends on SIMPLE_BUS | |
ea8971cd | 307 | default y if SANDBOX |
80279fa1 BM |
308 | help |
309 | Decoding the 'simple-bus' <range> by honoring the #address-cells | |
310 | and #size-cells of parent/child bus. If unset, #address-cells of | |
311 | parent bus is assumed to be 1, #address-cells and #size-cells of | |
312 | child bus is also assumed to be 1, to save some spaces of using | |
313 | an advanced API to decode the <range>, which benefits SPL image | |
314 | builds that have size limits. | |
315 | ||
316 | If you are unsure about this, Say N here. | |
317 | ||
4a3390f1 SA |
318 | config SIMPLE_PM_BUS |
319 | bool "Support simple-pm-bus driver" | |
320 | depends on DM && OF_CONTROL && CLK && POWER_DOMAIN | |
321 | help | |
322 | Supports the 'simple-pm-bus' driver, which is used for busses that | |
323 | have power domains and/or clocks which need to be enabled before use. | |
324 | ||
ef5cd330 SR |
325 | config OF_TRANSLATE |
326 | bool "Translate addresses using fdt_translate_address" | |
327 | depends on DM && OF_CONTROL | |
328 | default y | |
329 | help | |
330 | If this option is enabled, the reg property will be translated | |
331 | using the fdt_translate_address() function. This is necessary | |
332 | on some platforms (e.g. MVEBU) using complex "ranges" | |
333 | properties in many nodes. As this translation is not handled | |
334 | correctly in the default simple_bus_translate() function. | |
335 | ||
336 | If this option is not enabled, simple_bus_translate() will be | |
337 | used for the address translation. This function is faster and | |
338 | smaller in size than fdt_translate_address(). | |
339 | ||
340 | config SPL_OF_TRANSLATE | |
7b98a3b6 | 341 | bool "Translate addresses using fdt_translate_address in SPL" |
ef5cd330 | 342 | depends on SPL_DM && SPL_OF_CONTROL |
ef5cd330 SR |
343 | help |
344 | If this option is enabled, the reg property will be translated | |
345 | using the fdt_translate_address() function. This is necessary | |
346 | on some platforms (e.g. MVEBU) using complex "ranges" | |
347 | properties in many nodes. As this translation is not handled | |
348 | correctly in the default simple_bus_translate() function. | |
349 | ||
350 | If this option is not enabled, simple_bus_translate() will be | |
351 | used for the address translation. This function is faster and | |
352 | smaller in size than fdt_translate_address(). | |
353 | ||
6792bd99 WZ |
354 | config TPL_OF_TRANSLATE |
355 | bool "Translate addresses using fdt_translate_address in TPL" | |
356 | depends on TPL_DM && TPL_OF_CONTROL | |
357 | help | |
358 | If this option is enabled, the reg property will be translated | |
359 | using the fdt_translate_address() function. This is necessary | |
360 | on some platforms (e.g. MVEBU) using complex "ranges" | |
361 | properties in many nodes. As this translation is not handled | |
362 | correctly in the default simple_bus_translate() function. | |
363 | ||
364 | If this option is not enabled, simple_bus_translate() will be | |
365 | used for the address translation. This function is faster and | |
366 | smaller in size than fdt_translate_address() | |
367 | ||
747093dd SG |
368 | config VPL_OF_TRANSLATE |
369 | bool "Translate addresses using fdt_translate_address in SPL" | |
370 | depends on SPL_DM && VPL_OF_CONTROL | |
371 | help | |
372 | If this option is enabled, the reg property will be translated | |
373 | using the fdt_translate_address() function. This is necessary | |
374 | on some platforms (e.g. MVEBU) using complex "ranges" | |
375 | properties in many nodes. As this translation is not handled | |
376 | correctly in the default simple_bus_translate() function. | |
377 | ||
378 | If this option is not enabled, simple_bus_translate() will be | |
379 | used for the address translation. This function is faster and | |
380 | smaller in size than fdt_translate_address(). | |
381 | ||
f2100f6f SR |
382 | config TRANSLATION_OFFSET |
383 | bool "Platforms specific translation offset" | |
384 | depends on DM && OF_CONTROL | |
385 | help | |
386 | Some platforms need a special address translation. Those | |
387 | platforms (e.g. mvebu in SPL) can configure a translation | |
388 | offset by enabling this option and setting the translation_offset | |
389 | variable in the GD in their platform- / board-specific code. | |
390 | ||
0a222d53 PB |
391 | config OF_ISA_BUS |
392 | bool | |
393 | depends on OF_TRANSLATE | |
394 | help | |
395 | Is this option is enabled then support for the ISA bus will | |
396 | be included for addresses read from DT. This is something that | |
397 | should be known to be required or not based upon the board | |
83e7a4d5 | 398 | being targeted, and whether or not it makes use of an ISA bus. |
0a222d53 PB |
399 | |
400 | The bus is matched based upon its node name equalling "isa". The | |
401 | busses #address-cells should equal 2, with the first cell being | |
402 | used to hold flags & flag 0x1 indicating that the address range | |
403 | should be accessed using I/O port in/out accessors. The second | |
404 | cell holds the offset into ISA bus address space. The #size-cells | |
405 | property should equal 1, and of course holds the size of the | |
406 | address range used by a device. | |
407 | ||
408 | If this option is not enabled then support for the ISA bus is | |
409 | not included and any such busses used in DT will be treated as | |
410 | typical simple-bus compatible busses. This will lead to | |
411 | mistranslation of device addresses, so ensure that this is | |
412 | enabled if your board does include an ISA bus. | |
413 | ||
f11c7ab9 SG |
414 | config DM_DEV_READ_INLINE |
415 | bool | |
416 | default y if !OF_LIVE | |
417 | ||
41b65d68 SG |
418 | config OFNODE_MULTI_TREE |
419 | bool "Allow the ofnode interface to access any tree" | |
420 | default y if EVENT && !DM_DEV_READ_INLINE && !DM_INLINE_OFNODE | |
421 | help | |
422 | Normally U-Boot makes use of its control FDT, the one used to bind | |
423 | devices and provide options. In some cases, U-Boot must also process | |
424 | a separate FDT, e.g. one provided by the operating system, which | |
425 | needs additions to the /chosen node. | |
426 | ||
427 | This works fine with live tree (OF_LIVE), but with flat tree the | |
428 | offset provided in ofnode is only useful with the control FDT. This | |
429 | option adds a 'tree ID' to the offset, so that multiple trees can | |
430 | be used. Call oftree_from_fdt() to register a new tree. | |
431 | ||
432 | config OFNODE_MULTI_TREE_MAX | |
433 | int "Maximum number of FDTs" | |
434 | range 2 8 | |
435 | depends on OFNODE_MULTI_TREE | |
436 | default 4 | |
437 | help | |
438 | Sets the maximum number of device trees which can be used with the | |
439 | ofnode interface when using flat trees (OF_LIVE). This is only | |
440 | available in U-Boot proper and only after relocation. | |
441 | ||
7ca2850c SG |
442 | config ACPIGEN |
443 | bool "Support ACPI table generation in driver model" | |
d40d2c57 | 444 | default y if SANDBOX || (GENERATE_ACPI_TABLE && !QEMU) |
8b6ee248 | 445 | select LIB_UUID |
7ca2850c SG |
446 | help |
447 | This option enables generation of ACPI tables using driver-model | |
448 | devices. It adds a new operation struct to each driver, to support | |
449 | things like generating device-specific tables and returning the ACPI | |
450 | name of a device. | |
451 | ||
d472d821 SG |
452 | config BOUNCE_BUFFER |
453 | bool "Include bounce buffer API" | |
454 | help | |
455 | Some peripherals support DMA from a subset of physically | |
456 | addressable memory only. To support such peripherals, the | |
457 | bounce buffer API uses a temporary buffer: it copies data | |
458 | to/from DMA regions while managing cache operations. | |
459 | ||
460 | A second possible use of bounce buffers is their ability to | |
461 | provide aligned buffers for DMA operations. | |
462 | ||
0b11dbf7 | 463 | endmenu |