// 调用uclass_get_device_tail进行设备的get,最终会调用device_probe来对设备进行probe int uclass_get_device_tail(struct udevice *dev, int ret, struct udevice **devp) { if (ret) return ret; assert(dev); // 调用device_probe对设备进行probe,这个函数说明参考前面 ret = device_probe(dev); if...
int uclass_get_device(enum uclass_id id, int index, struct udevice **devp) { struct udevice *dev; int ret; *devp = NULL; ret = uclass_find_device(id, index, &dev); return uclass_get_device_tail(dev, ret, devp); } int uclass_get_device_by_name(enum uclass_id id, const ch...
int uclass_get_device_by_name(enum uclass_id id, const char *name, struct udevice **devp) { struct udevice *dev; int ret; *devp = NULL; ret = uclass_find_device_by_name(id, name, &dev); return uclass_get_device_tail(dev, ret, devp); } ...
void uclass_first_device(enum uclass_id id, struct udevice **devp) { struct udevice *dev; int ret; *devp = NULL; ret = uclass_find_first_device(id, &dev); if (!dev) return 0; return uclass_get_device_tail(dev, ret, devp); uclass_find_first_device(id, &dev); _uclass_next...
return uclass_get_device_tail(dev, 0, devp); } return -ENODEV; } enum button_state_t button_get_state(struct udevice *dev) { struct button_ops *ops = button_get_ops(dev); if (!ops->get_state) return -ENOSYS; return ops->get_state(dev); } UCLASS_DRIVER(button) = { .id =...
int uclass_get_device_by_name(enum uclass_id id, const char *name, struct udevice **devp) { struct udevice *dev; int ret; *devp = NULL; ret = uclass_find_device_by_name(id, name, &dev); return uclass_get_device_tail(dev, ret, devp); } ...
int uclass_get_device_by_seq(enum uclass_id id, int seq, struct udevice **devp) { struct udevice *dev; int ret; *devp = NULL; ret = uclass_find_device_by_seq(id, seq, &dev); return uclass_get_device_tail(dev, ret, devp); ...
uboot 2019 uclass、udevice uclass链表 drivers/core/uclass.c uclass_get,根据uclass_id去get,如果没有find到,则调用uclass_add()将uclass添加到gd->uclass_root链表里,uclass是用UCLASS_DRIVER macro define的,他们被放置在section(".u_boot_list_2_"#uclass"_2_"#_name) section,放置在.u_boot_list_2...
return uclass_get_device_tail(dev, ret, devp); } int uclass_first_device_err(enum uclass_id id, struct udevice **devp) { int ret; ret = uclass_first_device(id, devp); if (ret) return ret; else if (!*devp) return -ENODEV; return 0; } int uclass_next_device(struct udevice...
@@ -1143,9 +1143,29 @@ static int gpio_request_tail(int ret, const char *nodename,ret = uclass_get_device_by_ofnode(UCLASS_GPIO, args->node,&desc->dev); if (ret) { #if CONFIG_IS_ENABLED(MAX77663_GPIO) || CONFIG_IS_ENABLED(PALMAS_GPIO) ...