]> Git Repo - u-boot.git/blame - drivers/core/Kconfig
Merge tag 'dm-pull-18jan23' of https://source.denx.de/u-boot/custodians/u-boot-dm
[u-boot.git] / drivers / core / Kconfig
CommitLineData
0b11dbf7
MY
1menu "Generic Driver Options"
2
da333ae7 3config 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
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
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
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
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
38config 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
48config 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
59config 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
72config 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
78config 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
89config 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
99config 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 111config 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
121config 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
129config 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
138config 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
147config 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
155config 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
164config 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
172config 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
180config 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
189config 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 199config 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
209config 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
219config 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
229config 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 238config 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
247config 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
256config 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
265config 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 278config 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
289config 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
296config 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
304config 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
318config 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
325config 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
340config 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
354config 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
368config 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
382config 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
391config 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
414config DM_DEV_READ_INLINE
415 bool
416 default y if !OF_LIVE
417
41b65d68
SG
418config 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
432config 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
442config 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
452config 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 463endmenu
This page took 0.318258 seconds and 4 git commands to generate.