10b11dbf7SMasahiro Yamadamenu "Generic Driver Options" 20b11dbf7SMasahiro Yamada 3da333ae7SMasahiro Yamadaconfig DM 4da333ae7SMasahiro Yamada bool "Enable Driver Model" 5da333ae7SMasahiro Yamada help 6f94a1bedSSimon Glass This config option enables Driver Model. This brings in the core 7f94a1bedSSimon Glass support, including scanning of platform data on start-up. If 8f94a1bedSSimon Glass CONFIG_OF_CONTROL is enabled, the device tree will be scanned also 9f94a1bedSSimon Glass when available. 1091a91ff8SSimon Glass 1191a91ff8SSimon Glassconfig SPL_DM 1291a91ff8SSimon Glass bool "Enable Driver Model for SPL" 1391a91ff8SSimon Glass depends on DM && SPL 1491a91ff8SSimon Glass help 1591a91ff8SSimon Glass Enable driver model in SPL. You will need to provide a 1691a91ff8SSimon Glass suitable malloc() implementation. If you are not using the 1791a91ff8SSimon Glass full malloc() enabled by CONFIG_SYS_SPL_MALLOC_START, 1891a91ff8SSimon Glass consider using CONFIG_SYS_MALLOC_SIMPLE. In that case you 19f1896c45SAndy Yan must provide CONFIG_SPL_SYS_MALLOC_F_LEN to set the size. 2091a91ff8SSimon Glass In most cases driver model will only allocate a few uclasses 2191a91ff8SSimon Glass and devices in SPL, so 1KB should be enable. See 22f1896c45SAndy Yan CONFIG_SPL_SYS_MALLOC_F_LEN for more details on how to enable it. 2391a91ff8SSimon Glass 245a6f06f6SSimon Glassconfig TPL_DM 255a6f06f6SSimon Glass bool "Enable Driver Model for TPL" 265a6f06f6SSimon Glass depends on DM && TPL 275a6f06f6SSimon Glass help 285a6f06f6SSimon Glass Enable driver model in TPL. You will need to provide a 295a6f06f6SSimon Glass suitable malloc() implementation. If you are not using the 305a6f06f6SSimon Glass full malloc() enabled by CONFIG_SYS_SPL_MALLOC_START, 315a6f06f6SSimon Glass consider using CONFIG_SYS_MALLOC_SIMPLE. In that case you 32f1896c45SAndy Yan must provide CONFIG_SPL_SYS_MALLOC_F_LEN to set the size. 335a6f06f6SSimon Glass In most cases driver model will only allocate a few uclasses 345a6f06f6SSimon Glass and devices in SPL, so 1KB should be enough. See 35f1896c45SAndy Yan CONFIG_SPL_SYS_MALLOC_F_LEN for more details on how to enable it. 365a6f06f6SSimon Glass Disable this for very small implementations. 375a6f06f6SSimon Glass 3891a91ff8SSimon Glassconfig DM_WARN 3991a91ff8SSimon Glass bool "Enable warnings in driver model" 40d648964fSMasahiro Yamada depends on DM 41d648964fSMasahiro Yamada default y 4291a91ff8SSimon Glass help 4391a91ff8SSimon Glass The dm_warn() function can use up quite a bit of space for its 4491a91ff8SSimon Glass strings. By default this is disabled for SPL builds to save space. 4591a91ff8SSimon Glass This will cause dm_warn() to be compiled out - it will do nothing 4691a91ff8SSimon Glass when called. 4791a91ff8SSimon Glass 48*ceb91909SMasahiro Yamadaconfig DM_DEBUG 49*ceb91909SMasahiro Yamada bool "Enable debug messages in driver model core" 50*ceb91909SMasahiro Yamada depends on DM 51*ceb91909SMasahiro Yamada help 52*ceb91909SMasahiro Yamada Say Y here if you want to compile in debug messages in DM core. 53*ceb91909SMasahiro Yamada 5491a91ff8SSimon Glassconfig DM_DEVICE_REMOVE 5591a91ff8SSimon Glass bool "Support device removal" 56d648964fSMasahiro Yamada depends on DM 57d648964fSMasahiro Yamada default y 5891a91ff8SSimon Glass help 5991a91ff8SSimon Glass We can save some code space by dropping support for removing a 6091a91ff8SSimon Glass device. This is not normally required in SPL, so by default this 6191a91ff8SSimon Glass option is disabled for SPL. 6291a91ff8SSimon Glass 63e5c4564eSHans de Goede Note that this may have undesirable results in the USB subsystem as 64e5c4564eSHans de Goede it causes unplugged devices to linger around in the dm-tree, and it 65e5c4564eSHans de Goede causes USB host controllers to not be stopped when booting the OS. 66e5c4564eSHans de Goede 6791a91ff8SSimon Glassconfig DM_STDIO 6891a91ff8SSimon Glass bool "Support stdio registration" 69d648964fSMasahiro Yamada depends on DM 70d648964fSMasahiro Yamada default y 7191a91ff8SSimon Glass help 7291a91ff8SSimon Glass Normally serial drivers register with stdio so that they can be used 7391a91ff8SSimon Glass as normal output devices. In SPL we don't normally use stdio, so 7491a91ff8SSimon Glass we can omit this feature. 7536fa61dcSSimon Glass 7636fa61dcSSimon Glassconfig DM_SEQ_ALIAS 7736fa61dcSSimon Glass bool "Support numbered aliases in device tree" 7836fa61dcSSimon Glass depends on DM 7936fa61dcSSimon Glass default y 8036fa61dcSSimon Glass help 8136fa61dcSSimon Glass Most boards will have a '/aliases' node containing the path to 8236fa61dcSSimon Glass numbered devices (e.g. serial0 = &serial0). This feature can be 834f627c5aSNathan Rossi disabled if it is not required. 844f627c5aSNathan Rossi 854f627c5aSNathan Rossiconfig SPL_DM_SEQ_ALIAS 864f627c5aSNathan Rossi bool "Support numbered aliases in device tree in SPL" 874f627c5aSNathan Rossi depends on DM 884f627c5aSNathan Rossi default n 894f627c5aSNathan Rossi help 904f627c5aSNathan Rossi Most boards will have a '/aliases' node containing the path to 914f627c5aSNathan Rossi numbered devices (e.g. serial0 = &serial0). This feature can be 9236fa61dcSSimon Glass disabled if it is not required, to save code space in SPL. 9312dc8e75SSimon Glass 9412dc8e75SSimon Glassconfig REGMAP 9512dc8e75SSimon Glass bool "Support register maps" 9612dc8e75SSimon Glass depends on DM 9712dc8e75SSimon Glass help 9812dc8e75SSimon Glass Hardware peripherals tend to have one or more sets of registers 9912dc8e75SSimon Glass which can be accessed to control the hardware. A register map 10012dc8e75SSimon Glass models this with a simple read/write interface. It can in principle 10112dc8e75SSimon Glass support any bus type (I2C, SPI) but so far this only supports 10212dc8e75SSimon Glass direct memory access. 10312dc8e75SSimon Glass 10441c7f664Shuang linconfig SPL_REGMAP 10541c7f664Shuang lin bool "Support register maps in SPL" 1069c447370SPhilipp Tomsich depends on SPL_DM 10741c7f664Shuang lin help 10841c7f664Shuang lin Hardware peripherals tend to have one or more sets of registers 10941c7f664Shuang lin which can be accessed to control the hardware. A register map 11041c7f664Shuang lin models this with a simple read/write interface. It can in principle 11141c7f664Shuang lin support any bus type (I2C, SPI) but so far this only supports 11241c7f664Shuang lin direct memory access. 11341c7f664Shuang lin 114c6ac6c1bSPhilipp Tomsichconfig TPL_REGMAP 115c6ac6c1bSPhilipp Tomsich bool "Support register maps in TPL" 116c6ac6c1bSPhilipp Tomsich depends on TPL_DM 117c6ac6c1bSPhilipp Tomsich help 118c6ac6c1bSPhilipp Tomsich Hardware peripherals tend to have one or more sets of registers 119c6ac6c1bSPhilipp Tomsich which can be accessed to control the hardware. A register map 120c6ac6c1bSPhilipp Tomsich models this with a simple read/write interface. It can in principle 121c6ac6c1bSPhilipp Tomsich support any bus type (I2C, SPI) but so far this only supports 122c6ac6c1bSPhilipp Tomsich direct memory access. 123c6ac6c1bSPhilipp Tomsich 12412dc8e75SSimon Glassconfig SYSCON 12512dc8e75SSimon Glass bool "Support system controllers" 12612dc8e75SSimon Glass depends on REGMAP 12712dc8e75SSimon Glass help 12812dc8e75SSimon Glass Many SoCs have a number of system controllers which are dealt with 12912dc8e75SSimon Glass as a group by a single driver. Some common functionality is provided 13012dc8e75SSimon Glass by this uclass, including accessing registers via regmap and 13112dc8e75SSimon Glass assigning a unique number to each. 132608f26c5SMasahiro Yamada 13341c7f664Shuang linconfig SPL_SYSCON 13441c7f664Shuang lin bool "Support system controllers in SPL" 1359c447370SPhilipp Tomsich depends on SPL_REGMAP 13641c7f664Shuang lin help 13741c7f664Shuang lin Many SoCs have a number of system controllers which are dealt with 13841c7f664Shuang lin as a group by a single driver. Some common functionality is provided 13941c7f664Shuang lin by this uclass, including accessing registers via regmap and 14041c7f664Shuang lin assigning a unique number to each. 14141c7f664Shuang lin 142c6ac6c1bSPhilipp Tomsichconfig TPL_SYSCON 143c6ac6c1bSPhilipp Tomsich bool "Support system controllers in TPL" 144c6ac6c1bSPhilipp Tomsich depends on TPL_REGMAP 145c6ac6c1bSPhilipp Tomsich help 146c6ac6c1bSPhilipp Tomsich Many SoCs have a number of system controllers which are dealt with 147c6ac6c1bSPhilipp Tomsich as a group by a single driver. Some common functionality is provided 148c6ac6c1bSPhilipp Tomsich by this uclass, including accessing registers via regmap and 149c6ac6c1bSPhilipp Tomsich assigning a unique number to each. 150c6ac6c1bSPhilipp Tomsich 151e2282d70SMasahiro Yamadaconfig DEVRES 152e2282d70SMasahiro Yamada bool "Managed device resources" 153e2282d70SMasahiro Yamada depends on DM 154e2282d70SMasahiro Yamada help 155e2282d70SMasahiro Yamada This option enables the Managed device resources core support. 156e2282d70SMasahiro Yamada Device resources managed by the devres framework are automatically 157e2282d70SMasahiro Yamada released whether initialization fails half-way or the device gets 158e2282d70SMasahiro Yamada detached. 159e2282d70SMasahiro Yamada 160e2282d70SMasahiro Yamada If this option is disabled, devres functions fall back to 161e2282d70SMasahiro Yamada non-managed variants. For example, devres_alloc() to kzalloc(), 162e2282d70SMasahiro Yamada devm_kmalloc() to kmalloc(), etc. 163e2282d70SMasahiro Yamada 164608f26c5SMasahiro Yamadaconfig DEBUG_DEVRES 16540b6f2d0SMasahiro Yamada bool "Managed device resources debugging functions" 166e2282d70SMasahiro Yamada depends on DEVRES 167608f26c5SMasahiro Yamada help 168608f26c5SMasahiro Yamada If this option is enabled, devres debug messages are printed. 16940b6f2d0SMasahiro Yamada Also, a function is available to dump a list of device resources. 170608f26c5SMasahiro Yamada Select this if you are having a problem with devres or want to 171608f26c5SMasahiro Yamada debug resource management for a managed device. 172608f26c5SMasahiro Yamada 173608f26c5SMasahiro Yamada If you are unsure about this, Say N here. 1740b11dbf7SMasahiro Yamada 175628d792cSMarek Vasutconfig SIMPLE_BUS 176628d792cSMarek Vasut bool "Support simple-bus driver" 177628d792cSMarek Vasut depends on DM && OF_CONTROL 178628d792cSMarek Vasut default y 179628d792cSMarek Vasut help 180628d792cSMarek Vasut Supports the 'simple-bus' driver, which is used on some systems. 181628d792cSMarek Vasut 182628d792cSMarek Vasutconfig SPL_SIMPLE_BUS 183628d792cSMarek Vasut bool "Support simple-bus driver in SPL" 184628d792cSMarek Vasut depends on SPL_DM && SPL_OF_CONTROL 1858bebf03cSMichal Simek default y 186628d792cSMarek Vasut help 187628d792cSMarek Vasut Supports the 'simple-bus' driver, which is used on some systems 188628d792cSMarek Vasut in SPL. 189628d792cSMarek Vasut 190ef5cd330SStefan Roeseconfig OF_TRANSLATE 191ef5cd330SStefan Roese bool "Translate addresses using fdt_translate_address" 192ef5cd330SStefan Roese depends on DM && OF_CONTROL 193ef5cd330SStefan Roese default y 194ef5cd330SStefan Roese help 195ef5cd330SStefan Roese If this option is enabled, the reg property will be translated 196ef5cd330SStefan Roese using the fdt_translate_address() function. This is necessary 197ef5cd330SStefan Roese on some platforms (e.g. MVEBU) using complex "ranges" 198ef5cd330SStefan Roese properties in many nodes. As this translation is not handled 199ef5cd330SStefan Roese correctly in the default simple_bus_translate() function. 200ef5cd330SStefan Roese 201ef5cd330SStefan Roese If this option is not enabled, simple_bus_translate() will be 202ef5cd330SStefan Roese used for the address translation. This function is faster and 203ef5cd330SStefan Roese smaller in size than fdt_translate_address(). 204ef5cd330SStefan Roese 205ef5cd330SStefan Roeseconfig SPL_OF_TRANSLATE 2067b98a3b6SStefan Roese bool "Translate addresses using fdt_translate_address in SPL" 207ef5cd330SStefan Roese depends on SPL_DM && SPL_OF_CONTROL 208ef5cd330SStefan Roese default n 209ef5cd330SStefan Roese help 210ef5cd330SStefan Roese If this option is enabled, the reg property will be translated 211ef5cd330SStefan Roese using the fdt_translate_address() function. This is necessary 212ef5cd330SStefan Roese on some platforms (e.g. MVEBU) using complex "ranges" 213ef5cd330SStefan Roese properties in many nodes. As this translation is not handled 214ef5cd330SStefan Roese correctly in the default simple_bus_translate() function. 215ef5cd330SStefan Roese 216ef5cd330SStefan Roese If this option is not enabled, simple_bus_translate() will be 217ef5cd330SStefan Roese used for the address translation. This function is faster and 218ef5cd330SStefan Roese smaller in size than fdt_translate_address(). 219ef5cd330SStefan Roese 2200a222d53SPaul Burtonconfig OF_ISA_BUS 2210a222d53SPaul Burton bool 2220a222d53SPaul Burton depends on OF_TRANSLATE 2230a222d53SPaul Burton help 2240a222d53SPaul Burton Is this option is enabled then support for the ISA bus will 2250a222d53SPaul Burton be included for addresses read from DT. This is something that 2260a222d53SPaul Burton should be known to be required or not based upon the board 2270a222d53SPaul Burton being targetted, and whether or not it makes use of an ISA bus. 2280a222d53SPaul Burton 2290a222d53SPaul Burton The bus is matched based upon its node name equalling "isa". The 2300a222d53SPaul Burton busses #address-cells should equal 2, with the first cell being 2310a222d53SPaul Burton used to hold flags & flag 0x1 indicating that the address range 2320a222d53SPaul Burton should be accessed using I/O port in/out accessors. The second 2330a222d53SPaul Burton cell holds the offset into ISA bus address space. The #size-cells 2340a222d53SPaul Burton property should equal 1, and of course holds the size of the 2350a222d53SPaul Burton address range used by a device. 2360a222d53SPaul Burton 2370a222d53SPaul Burton If this option is not enabled then support for the ISA bus is 2380a222d53SPaul Burton not included and any such busses used in DT will be treated as 2390a222d53SPaul Burton typical simple-bus compatible busses. This will lead to 2400a222d53SPaul Burton mistranslation of device addresses, so ensure that this is 2410a222d53SPaul Burton enabled if your board does include an ISA bus. 2420a222d53SPaul Burton 243f11c7ab9SSimon Glassconfig DM_DEV_READ_INLINE 244f11c7ab9SSimon Glass bool 245f11c7ab9SSimon Glass default y if !OF_LIVE 246f11c7ab9SSimon Glass 2470b11dbf7SMasahiro Yamadaendmenu 248