aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2015-08-27 12:44:28 +0900
committerSimon Glass <sjg@chromium.org>2015-08-31 07:57:29 -0600
commite6cabe4a6d142ab981bd31bff0795ed230caf151 (patch)
treeb06fc2afa6bf4c2e43b0fda2aaf776dec5a3472a
parentf6ac9f1f666a291358f8a402a3d49217ddaef80d (diff)
dm: core: allow device_bind() to not return a device pointer
This is useful when we want to bind a device, but do not need the pointer to the device. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Acked-by: Simon Glass <sjg@chromium.org>
-rw-r--r--drivers/core/device.c6
-rw-r--r--include/dm/device-internal.h4
-rw-r--r--include/dm/lists.h4
3 files changed, 8 insertions, 6 deletions
diff --git a/drivers/core/device.c b/drivers/core/device.c
index 01f664796d..afa4b4fda9 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -32,7 +32,8 @@ int device_bind(struct udevice *parent, const struct driver *drv,
struct uclass *uc;
int size, ret = 0;
- *devp = NULL;
+ if (devp)
+ *devp = NULL;
if (!name)
return -EINVAL;
@@ -133,7 +134,8 @@ int device_bind(struct udevice *parent, const struct driver *drv,
if (parent)
dm_dbg("Bound device %s to %s\n", dev->name, parent->name);
- *devp = dev;
+ if (devp)
+ *devp = dev;
dev->flags |= DM_FLAG_BOUND;
diff --git a/include/dm/device-internal.h b/include/dm/device-internal.h
index 04884f1805..322d35a478 100644
--- a/include/dm/device-internal.h
+++ b/include/dm/device-internal.h
@@ -31,7 +31,7 @@ struct udevice;
* devices which use device tree.
* @of_offset: Offset of device tree node for this device. This is -1 for
* devices which don't use device tree.
- * @devp: Returns a pointer to the bound device
+ * @devp: if non-NULL, returns a pointer to the bound device
* @return 0 if OK, -ve on error
*/
int device_bind(struct udevice *parent, const struct driver *drv,
@@ -48,7 +48,7 @@ int device_bind(struct udevice *parent, const struct driver *drv,
* @pre_reloc_only: If true, bind the driver only if its DM_INIT_F flag is set.
* If false bind the driver always.
* @info: Name and platdata for this device
- * @devp: Returns a pointer to the bound device
+ * @devp: if non-NULL, returns a pointer to the bound device
* @return 0 if OK, -ve on error
*/
int device_bind_by_name(struct udevice *parent, bool pre_reloc_only,
diff --git a/include/dm/lists.h b/include/dm/lists.h
index 61610e69aa..4513d6a311 100644
--- a/include/dm/lists.h
+++ b/include/dm/lists.h
@@ -68,7 +68,7 @@ int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
* @parent: Parent device
* @drv_name: Name of driver to attach to this parent
* @dev_name: Name of the new device thus created
- * @devp: Returns the newly bound device
+ * @devp: If non-NULL, returns the newly bound device
*/
int device_bind_driver(struct udevice *parent, const char *drv_name,
const char *dev_name, struct udevice **devp);
@@ -83,7 +83,7 @@ int device_bind_driver(struct udevice *parent, const char *drv_name,
* @drv_name: Name of driver to attach to this parent
* @dev_name: Name of the new device thus created
* @node: Device tree node
- * @devp: Returns the newly bound device
+ * @devp: If non-NULL, returns the newly bound device
*/
int device_bind_driver_to_node(struct udevice *parent, const char *drv_name,
const char *dev_name, int node,