summaryrefslogtreecommitdiffstats
path: root/drivers/core/Kconfig
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2015-07-25 21:52:35 +0900
committerSimon Glass <sjg@chromium.org>2015-08-06 07:44:29 -0600
commit608f26c51bebc68db7f2edc7590ee513d2bc5465 (patch)
tree3f38bebfffd02994fa19fe2ba5eea98e82b0d1ec /drivers/core/Kconfig
parentaed1a4dd88e94001b811b297c1ff734c3f8d22d9 (diff)
downloadtalos-obmc-uboot-608f26c51bebc68db7f2edc7590ee513d2bc5465.tar.gz
talos-obmc-uboot-608f26c51bebc68db7f2edc7590ee513d2bc5465.zip
devres: introduce Devres (Managed Device Resource) framework
In U-Boot's driver model, memory is basically allocated and freed in the core framework. So, low level drivers generally only have to specify the size of needed memory with .priv_auto_alloc_size, .platdata_auto_alloc_size, etc. Nevertheless, some drivers still need to allocate/free memory on their own in case they cannot statically know the necessary memory size. So, I believe it is reasonable enough to port Devres into U-boot. Devres, which originates in Linux, manages device resources for each device and automatically releases them on driver detach. With devres, device resources are guaranteed to be freed whether initialization fails half-way or the device gets detached. The basic idea is totally the same to that of Linux, but I tweaked it a bit so that it fits in U-Boot's driver model. In U-Boot, drivers are activated in two steps: binding and probing. Binding puts a driver and a device together. It is just data manipulation on the system memory, so nothing has happened on the hardware device at this moment. When the device is really used, it is probed. Probing initializes the real hardware device to make it really ready for use. So, the resources acquired during the probing process must be freed when the device is removed. Likewise, what has been allocated in binding should be released when the device is unbound. The struct devres has a member "probe" to remember when the resource was allocated. CONFIG_DEBUG_DEVRES is also supported for easier debugging. If enabled, debug messages are printed each time a resource is allocated/freed. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Acked-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/core/Kconfig')
-rw-r--r--drivers/core/Kconfig10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/core/Kconfig b/drivers/core/Kconfig
index 5d0e949f05..a002d69d79 100644
--- a/drivers/core/Kconfig
+++ b/drivers/core/Kconfig
@@ -78,3 +78,13 @@ config SYSCON
as a group by a single driver. Some common functionality is provided
by this uclass, including accessing registers via regmap and
assigning a unique number to each.
+
+config DEBUG_DEVRES
+ bool "Managed device resources verbose debug messages"
+ depends on DM
+ help
+ If this option is enabled, devres debug messages are printed.
+ Select this if you are having a problem with devres or want to
+ debug resource management for a managed device.
+
+ If you are unsure about this, Say N here.
OpenPOWER on IntegriCloud