summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2014-11-10 17:16:47 -0700
committerSimon Glass <sjg@chromium.org>2014-11-21 08:13:02 +0100
commit3ac435d33a8f6a4e28df6bc068cb0569bc8061ad (patch)
tree9c13282080d8b92f6b83f46b393dd3567ea96610 /include
parent1151651831ff11b3f40d132bb9ab012e95a8faa1 (diff)
downloadu-boot-imx-3ac435d33a8f6a4e28df6bc068cb0569bc8061ad.zip
u-boot-imx-3ac435d33a8f6a4e28df6bc068cb0569bc8061ad.tar.gz
u-boot-imx-3ac435d33a8f6a4e28df6bc068cb0569bc8061ad.tar.bz2
dm: Allow device removal features to be dropped
For SPL we don't expect to need to remove a device. Save some code space by dropping this feature. The board config can define CONFIG_DM_DEVICE_REMOVE if this is in fact needed. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@ti.com>
Diffstat (limited to 'include')
-rw-r--r--include/config_defaults.h4
-rw-r--r--include/dm/device-internal.h10
2 files changed, 14 insertions, 0 deletions
diff --git a/include/config_defaults.h b/include/config_defaults.h
index ad08c1d..985f055 100644
--- a/include/config_defaults.h
+++ b/include/config_defaults.h
@@ -20,4 +20,8 @@
#define CONFIG_ZLIB 1
#define CONFIG_PARTITIONS 1
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_DM_DEVICE_REMOVE
+#endif
+
#endif
diff --git a/include/dm/device-internal.h b/include/dm/device-internal.h
index 44cb7ef..f0cc794 100644
--- a/include/dm/device-internal.h
+++ b/include/dm/device-internal.h
@@ -87,7 +87,11 @@ int device_probe_child(struct udevice *dev, void *parent_priv);
* @dev: Pointer to device to remove
* @return 0 if OK, -ve on error (an error here is normally a very bad thing)
*/
+#ifdef CONFIG_DM_DEVICE_REMOVE
int device_remove(struct udevice *dev);
+#else
+static inline int device_remove(struct udevice *dev) { return 0; }
+#endif
/**
* device_unbind() - Unbind a device, destroying it
@@ -99,6 +103,12 @@ int device_remove(struct udevice *dev);
*/
int device_unbind(struct udevice *dev);
+#ifdef CONFIG_DM_DEVICE_REMOVE
+void device_free(struct udevice *dev);
+#else
+static inline void device_free(struct udevice *dev) {}
+#endif
+
/* Cast away any volatile pointer */
#define DM_ROOT_NON_CONST (((gd_t *)gd)->dm_root)
#define DM_UCLASS_ROOT_NON_CONST (((gd_t *)gd)->uclass_root)