Lines Matching +full:child +full:- +full:node

2  * Copyright (C) 2014-2015 Samsung Electronics
5 * SPDX-License-Identifier: GPL-2.0+
14 #include <dm/device-internal.h>
15 #include <dm/uclass-internal.h>
28 struct udevice *child; in pmic_bind_children() local
32 ofnode node; in pmic_bind_children() local
36 debug("%s for '%s' at node offset: %d\n", __func__, pmic->name, in pmic_bind_children()
39 ofnode_for_each_subnode(node, parent) { in pmic_bind_children()
40 node_name = ofnode_get_name(node); in pmic_bind_children()
42 debug("* Found child node: '%s'\n", node_name); in pmic_bind_children()
44 if (ofnode_is_np(node)) in pmic_bind_children()
45 enable = of_device_is_available(ofnode_to_np(node)); in pmic_bind_children()
47 enable = fdtdec_get_is_enabled(gd->fdt_blob, in pmic_bind_children()
48 ofnode_to_offset(node)); in pmic_bind_children()
54 child = NULL; in pmic_bind_children()
55 for (info = child_info; info->prefix && info->driver; info++) { in pmic_bind_children()
56 debug(" - compatible prefix: '%s'\n", info->prefix); in pmic_bind_children()
58 if (!strstr(node_name, info->prefix)) { in pmic_bind_children()
59 reg_name = ofnode_read_string(node, in pmic_bind_children()
60 "regulator-name"); in pmic_bind_children()
63 if (!strstr(reg_name, info->prefix)) in pmic_bind_children()
68 * If some child info->prefix are the same, try to in pmic_bind_children()
73 if (info->addr) { in pmic_bind_children()
74 if (!strstr(dev_read_name(pmic), info->addr)) in pmic_bind_children()
78 drv = lists_driver_lookup_name(info->driver); in pmic_bind_children()
80 debug(" - driver: '%s' not found!\n", in pmic_bind_children()
81 info->driver); in pmic_bind_children()
85 debug(" - found child driver: '%s'\n", drv->name); in pmic_bind_children()
88 0, node, &child); in pmic_bind_children()
90 debug(" - child binding error: %d\n", ret); in pmic_bind_children()
94 debug(" - bound child device: '%s'\n", child->name); in pmic_bind_children()
96 child->driver_data = trailing_strtol(node_name); in pmic_bind_children()
98 debug(" - set 'child->driver_data': %lu\n", in pmic_bind_children()
99 child->driver_data); in pmic_bind_children()
103 if (child) in pmic_bind_children()
106 debug(" - compatible prefix not found\n"); in pmic_bind_children()
109 debug("Bound: %d children for PMIC: '%s'\n", bind_count, pmic->name); in pmic_bind_children()
123 if (!ops || !ops->reg_count) in pmic_reg_count()
124 return -ENOSYS; in pmic_reg_count()
126 return ops->reg_count(dev); in pmic_reg_count()
134 return -EFAULT; in pmic_read()
136 if (!ops || !ops->read) in pmic_read()
137 return -ENOSYS; in pmic_read()
139 return ops->read(dev, reg, buffer, len); in pmic_read()
147 return -EFAULT; in pmic_write()
149 if (!ops || !ops->write) in pmic_write()
150 return -ENOSYS; in pmic_write()
152 return ops->write(dev, reg, buffer, len); in pmic_write()
196 if (!ops || !ops->suspend) in pmic_suspend()
197 return -ENOSYS; in pmic_suspend()
199 return ops->suspend(dev); in pmic_suspend()
206 if (!ops || !ops->resume) in pmic_resume()
207 return -ENOSYS; in pmic_resume()
209 return ops->resume(dev); in pmic_resume()
216 if (!ops || !ops->shutdown) in pmic_shutdown()
217 return -ENOSYS; in pmic_shutdown()
219 return ops->shutdown(dev); in pmic_shutdown()