dm: core: Add a way to set a device name

Some devices are bound entirely by probing and do not have the benefit of
a device tree to give them a name. This is very common with PCI and USB. In
most cases this is fine, but we should add an official way to set a device
name. This should be called in the device's bind() method.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Simon Glass 2015-07-30 13:40:39 -06:00
parent c3e6847bb3
commit f5c67ea036
2 changed files with 25 additions and 0 deletions

View File

@ -603,3 +603,13 @@ bool device_is_last_sibling(struct udevice *dev)
return false;
return list_is_last(&dev->sibling_node, &parent->child_head);
}
int device_set_name(struct udevice *dev, const char *name)
{
name = strdup(name);
if (!name)
return -ENOMEM;
dev->name = name;
return 0;
}

View File

@ -470,6 +470,21 @@ bool device_has_active_children(struct udevice *dev);
*/
bool device_is_last_sibling(struct udevice *dev);
/**
* device_set_name() - set the name of a device
*
* This must be called in the device's bind() method and no later. Normally
* this is unnecessary but for probed devices which don't get a useful name
* this function can be helpful.
*
* @dev: Device to update
* @name: New name (this string is allocated new memory and attached to
* the device)
* @return 0 if OK, -ENOMEM if there is not enough memory to allocate the
* string
*/
int device_set_name(struct udevice *dev, const char *name);
/* device resource management */
typedef void (*dr_release_t)(struct udevice *dev, void *res);
typedef int (*dr_match_t)(struct udevice *dev, void *res, void *match_data);