blob: ffae6f9795ff2f4ce2b6f8b08a3063314278b065 [file] [log] [blame]
Masahiro Yamadacc85b7b2015-07-26 02:46:26 +09001menu "Generic Driver Options"
2
Masahiro Yamada57ad8ee2014-10-23 22:26:09 +09003config DM
4 bool "Enable Driver Model"
Masahiro Yamada57ad8ee2014-10-23 22:26:09 +09005 help
Simon Glassd8b771d2015-02-05 21:41:35 -07006 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.
Simon Glass93e414d2015-02-05 21:41:36 -070010
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
Andy Yan1fa20e4d2017-07-24 17:43:34 +080019 must provide CONFIG_SPL_SYS_MALLOC_F_LEN to set the size.
Simon Glass93e414d2015-02-05 21:41:36 -070020 In most cases driver model will only allocate a few uclasses
21 and devices in SPL, so 1KB should be enable. See
Andy Yan1fa20e4d2017-07-24 17:43:34 +080022 CONFIG_SPL_SYS_MALLOC_F_LEN for more details on how to enable it.
Simon Glass93e414d2015-02-05 21:41:36 -070023
Simon Glassc833c002017-04-02 09:50:31 -060024config 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
Andy Yan1fa20e4d2017-07-24 17:43:34 +080032 must provide CONFIG_SPL_SYS_MALLOC_F_LEN to set the size.
Simon Glassc833c002017-04-02 09:50:31 -060033 In most cases driver model will only allocate a few uclasses
34 and devices in SPL, so 1KB should be enough. See
Andy Yan1fa20e4d2017-07-24 17:43:34 +080035 CONFIG_SPL_SYS_MALLOC_F_LEN for more details on how to enable it.
Simon Glassc833c002017-04-02 09:50:31 -060036 Disable this for very small implementations.
37
Simon Glass93e414d2015-02-05 21:41:36 -070038config DM_WARN
39 bool "Enable warnings in driver model"
Masahiro Yamadacfc2f7d2015-02-24 22:26:21 +090040 depends on DM
41 default y
Simon Glass93e414d2015-02-05 21:41:36 -070042 help
Simon Glass85bf4f22020-10-03 11:31:26 -060043 Enable this to see warnings related to driver model.
44
45 Warnings may help with debugging, such as when expected devices do
46 not bind correctly. If the option is disabled, dm_warn() is compiled
47 out - it will do nothing when called.
48
49config SPL_DM_WARN
50 bool "Enable warnings in driver model wuth SPL"
51 depends on SPL_DM
52 help
53 Enable this to see warnings related to driver model in SPL
54
Simon Glass93e414d2015-02-05 21:41:36 -070055 The dm_warn() function can use up quite a bit of space for its
56 strings. By default this is disabled for SPL builds to save space.
Simon Glass85bf4f22020-10-03 11:31:26 -060057
58 Warnings may help with debugging, such as when expected devices do
59 not bind correctly. If the option is disabled, dm_warn() is compiled
60 out - it will do nothing when called.
Simon Glass93e414d2015-02-05 21:41:36 -070061
Masahiro Yamadaf70f39f2017-09-29 12:31:20 +090062config DM_DEBUG
63 bool "Enable debug messages in driver model core"
64 depends on DM
65 help
66 Say Y here if you want to compile in debug messages in DM core.
67
Simon Glass93e414d2015-02-05 21:41:36 -070068config DM_DEVICE_REMOVE
69 bool "Support device removal"
Masahiro Yamadacfc2f7d2015-02-24 22:26:21 +090070 depends on DM
71 default y
Simon Glass93e414d2015-02-05 21:41:36 -070072 help
73 We can save some code space by dropping support for removing a
Jean-Jacques Hiblot00b29882018-12-07 14:50:53 +010074 device.
Simon Glass93e414d2015-02-05 21:41:36 -070075
Hans de Goede246ba262015-07-01 20:52:59 +020076 Note that this may have undesirable results in the USB subsystem as
77 it causes unplugged devices to linger around in the dm-tree, and it
78 causes USB host controllers to not be stopped when booting the OS.
79
Jean-Jacques Hiblot00b29882018-12-07 14:50:53 +010080config SPL_DM_DEVICE_REMOVE
81 bool "Support device removal in SPL"
82 depends on SPL_DM
83 default n
84 help
85 We can save some code space by dropping support for removing a
86 device. This is not normally required in SPL, so by default this
87 option is disabled for SPL.
88
Simon Glass93e414d2015-02-05 21:41:36 -070089config DM_STDIO
90 bool "Support stdio registration"
Masahiro Yamadacfc2f7d2015-02-24 22:26:21 +090091 depends on DM
92 default y
Simon Glass93e414d2015-02-05 21:41:36 -070093 help
94 Normally serial drivers register with stdio so that they can be used
95 as normal output devices. In SPL we don't normally use stdio, so
96 we can omit this feature.
Simon Glass1bd3deb2015-02-27 22:06:30 -070097
98config DM_SEQ_ALIAS
99 bool "Support numbered aliases in device tree"
100 depends on DM
101 default y
102 help
103 Most boards will have a '/aliases' node containing the path to
104 numbered devices (e.g. serial0 = &serial0). This feature can be
Nathan Rossi7fa6ff42016-01-08 03:00:45 +1000105 disabled if it is not required.
106
107config SPL_DM_SEQ_ALIAS
108 bool "Support numbered aliases in device tree in SPL"
Adam Fordac4d80e2019-08-24 13:50:34 -0500109 depends on SPL_DM
Nathan Rossi7fa6ff42016-01-08 03:00:45 +1000110 default n
111 help
112 Most boards will have a '/aliases' node containing the path to
113 numbered devices (e.g. serial0 = &serial0). This feature can be
Simon Glass1bd3deb2015-02-27 22:06:30 -0700114 disabled if it is not required, to save code space in SPL.
Simon Glass8e5efa02015-07-17 09:22:07 -0600115
116config REGMAP
117 bool "Support register maps"
118 depends on DM
119 help
120 Hardware peripherals tend to have one or more sets of registers
121 which can be accessed to control the hardware. A register map
122 models this with a simple read/write interface. It can in principle
123 support any bus type (I2C, SPI) but so far this only supports
124 direct memory access.
125
huang lindd8515e2015-11-17 14:20:13 +0800126config SPL_REGMAP
127 bool "Support register maps in SPL"
Philipp Tomsichcdda3492017-06-29 01:37:10 +0200128 depends on SPL_DM
huang lindd8515e2015-11-17 14:20:13 +0800129 help
130 Hardware peripherals tend to have one or more sets of registers
131 which can be accessed to control the hardware. A register map
132 models this with a simple read/write interface. It can in principle
133 support any bus type (I2C, SPI) but so far this only supports
134 direct memory access.
135
Philipp Tomsich03cdf692017-06-29 01:38:49 +0200136config TPL_REGMAP
137 bool "Support register maps in TPL"
138 depends on TPL_DM
139 help
140 Hardware peripherals tend to have one or more sets of registers
141 which can be accessed to control the hardware. A register map
142 models this with a simple read/write interface. It can in principle
143 support any bus type (I2C, SPI) but so far this only supports
144 direct memory access.
145
Simon Glass8e5efa02015-07-17 09:22:07 -0600146config SYSCON
147 bool "Support system controllers"
148 depends on REGMAP
149 help
150 Many SoCs have a number of system controllers which are dealt with
151 as a group by a single driver. Some common functionality is provided
152 by this uclass, including accessing registers via regmap and
153 assigning a unique number to each.
Masahiro Yamada8b15b162015-07-25 21:52:35 +0900154
huang lindd8515e2015-11-17 14:20:13 +0800155config SPL_SYSCON
156 bool "Support system controllers in SPL"
Philipp Tomsichcdda3492017-06-29 01:37:10 +0200157 depends on SPL_REGMAP
huang lindd8515e2015-11-17 14:20:13 +0800158 help
159 Many SoCs have a number of system controllers which are dealt with
160 as a group by a single driver. Some common functionality is provided
161 by this uclass, including accessing registers via regmap and
162 assigning a unique number to each.
163
Philipp Tomsich03cdf692017-06-29 01:38:49 +0200164config TPL_SYSCON
165 bool "Support system controllers in TPL"
166 depends on TPL_REGMAP
167 help
168 Many SoCs have a number of system controllers which are dealt with
169 as a group by a single driver. Some common functionality is provided
170 by this uclass, including accessing registers via regmap and
171 assigning a unique number to each.
172
Masahiro Yamada029bfca2015-07-25 21:52:37 +0900173config DEVRES
174 bool "Managed device resources"
175 depends on DM
176 help
177 This option enables the Managed device resources core support.
178 Device resources managed by the devres framework are automatically
179 released whether initialization fails half-way or the device gets
180 detached.
181
182 If this option is disabled, devres functions fall back to
183 non-managed variants. For example, devres_alloc() to kzalloc(),
184 devm_kmalloc() to kmalloc(), etc.
185
Masahiro Yamada8b15b162015-07-25 21:52:35 +0900186config DEBUG_DEVRES
Masahiro Yamadaf929c0b2015-07-25 21:52:38 +0900187 bool "Managed device resources debugging functions"
Masahiro Yamada029bfca2015-07-25 21:52:37 +0900188 depends on DEVRES
Masahiro Yamada8b15b162015-07-25 21:52:35 +0900189 help
190 If this option is enabled, devres debug messages are printed.
Masahiro Yamadaf929c0b2015-07-25 21:52:38 +0900191 Also, a function is available to dump a list of device resources.
Masahiro Yamada8b15b162015-07-25 21:52:35 +0900192 Select this if you are having a problem with devres or want to
193 debug resource management for a managed device.
194
195 If you are unsure about this, Say N here.
Masahiro Yamadacc85b7b2015-07-26 02:46:26 +0900196
Marek Vasut298e6082015-08-03 01:15:48 +0200197config SIMPLE_BUS
198 bool "Support simple-bus driver"
199 depends on DM && OF_CONTROL
200 default y
201 help
202 Supports the 'simple-bus' driver, which is used on some systems.
203
204config SPL_SIMPLE_BUS
205 bool "Support simple-bus driver in SPL"
206 depends on SPL_DM && SPL_OF_CONTROL
Michal Simekb32467f2015-12-01 08:37:16 +0100207 default y
Marek Vasut298e6082015-08-03 01:15:48 +0200208 help
209 Supports the 'simple-bus' driver, which is used on some systems
210 in SPL.
211
Sean Andersonb7860542020-06-24 06:41:12 -0400212config SIMPLE_PM_BUS
213 bool "Support simple-pm-bus driver"
214 depends on DM && OF_CONTROL && CLK && POWER_DOMAIN
215 help
216 Supports the 'simple-pm-bus' driver, which is used for busses that
217 have power domains and/or clocks which need to be enabled before use.
218
Stefan Roeseadc09052015-09-02 07:41:12 +0200219config OF_TRANSLATE
220 bool "Translate addresses using fdt_translate_address"
221 depends on DM && OF_CONTROL
222 default y
223 help
224 If this option is enabled, the reg property will be translated
225 using the fdt_translate_address() function. This is necessary
226 on some platforms (e.g. MVEBU) using complex "ranges"
227 properties in many nodes. As this translation is not handled
228 correctly in the default simple_bus_translate() function.
229
230 If this option is not enabled, simple_bus_translate() will be
231 used for the address translation. This function is faster and
232 smaller in size than fdt_translate_address().
233
234config SPL_OF_TRANSLATE
Stefan Roesef05eeb22015-11-26 13:38:01 +0100235 bool "Translate addresses using fdt_translate_address in SPL"
Stefan Roeseadc09052015-09-02 07:41:12 +0200236 depends on SPL_DM && SPL_OF_CONTROL
237 default n
238 help
239 If this option is enabled, the reg property will be translated
240 using the fdt_translate_address() function. This is necessary
241 on some platforms (e.g. MVEBU) using complex "ranges"
242 properties in many nodes. As this translation is not handled
243 correctly in the default simple_bus_translate() function.
244
245 If this option is not enabled, simple_bus_translate() will be
246 used for the address translation. This function is faster and
247 smaller in size than fdt_translate_address().
248
Stefan Roese85bddff2019-04-12 16:42:28 +0200249config TRANSLATION_OFFSET
250 bool "Platforms specific translation offset"
251 depends on DM && OF_CONTROL
252 help
253 Some platforms need a special address translation. Those
254 platforms (e.g. mvebu in SPL) can configure a translation
255 offset by enabling this option and setting the translation_offset
256 variable in the GD in their platform- / board-specific code.
257
Paul Burtondbef2f02016-05-17 07:43:24 +0100258config OF_ISA_BUS
259 bool
260 depends on OF_TRANSLATE
261 help
262 Is this option is enabled then support for the ISA bus will
263 be included for addresses read from DT. This is something that
264 should be known to be required or not based upon the board
Chris Packham3b6b4622019-01-13 22:13:24 +1300265 being targeted, and whether or not it makes use of an ISA bus.
Paul Burtondbef2f02016-05-17 07:43:24 +0100266
267 The bus is matched based upon its node name equalling "isa". The
268 busses #address-cells should equal 2, with the first cell being
269 used to hold flags & flag 0x1 indicating that the address range
270 should be accessed using I/O port in/out accessors. The second
271 cell holds the offset into ISA bus address space. The #size-cells
272 property should equal 1, and of course holds the size of the
273 address range used by a device.
274
275 If this option is not enabled then support for the ISA bus is
276 not included and any such busses used in DT will be treated as
277 typical simple-bus compatible busses. This will lead to
278 mistranslation of device addresses, so ensure that this is
279 enabled if your board does include an ISA bus.
280
Simon Glass34ef0c22017-05-18 20:09:03 -0600281config DM_DEV_READ_INLINE
282 bool
283 default y if !OF_LIVE
284
Simon Glass9fb9e9b2020-04-09 10:27:38 -0600285config ACPIGEN
286 bool "Support ACPI table generation in driver model"
Simon Glass55f3cde2020-07-16 21:22:39 -0600287 default y if SANDBOX || (GENERATE_ACPI_TABLE && !QEMU)
Simon Glass9fb9e9b2020-04-09 10:27:38 -0600288 help
289 This option enables generation of ACPI tables using driver-model
290 devices. It adds a new operation struct to each driver, to support
291 things like generating device-specific tables and returning the ACPI
292 name of a device.
293
Simon Glassd73344b2020-09-22 12:45:14 -0600294config INTEL_ACPIGEN
295 bool "Support ACPI table generation for Intel SoCs"
296 depends on ACPIGEN
297 help
298 This option adds some functions used for programatic generation of
299 ACPI tables on Intel SoCs. This provides features for writing CPU
300 information such as P states and T stages. Also included is a way
301 to create a GNVS table and set it up.
302
Simon Glass5f78ee72020-09-10 20:21:25 -0600303config BOUNCE_BUFFER
304 bool "Include bounce buffer API"
305 help
306 Some peripherals support DMA from a subset of physically
307 addressable memory only. To support such peripherals, the
308 bounce buffer API uses a temporary buffer: it copies data
309 to/from DMA regions while managing cache operations.
310
311 A second possible use of bounce buffers is their ability to
312 provide aligned buffers for DMA operations.
313
Masahiro Yamadacc85b7b2015-07-26 02:46:26 +0900314endmenu