summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorFelix Brack <fb@ltec.ch>2017-11-27 11:14:16 +0300
committerSimon Glass <sjg@chromium.org>2017-12-13 05:53:45 +0300
commitbf802f5d544f85c03b4097ab23d078be43c61855 (patch)
treee1d409198ac421f5796a5d61e1609eaf3bd95ce7 /drivers/power
parentb53f6992e9cb7f0d892ebc2b1620b55559f461be (diff)
downloadu-boot-bf802f5d544f85c03b4097ab23d078be43c61855.tar.xz
power: extend prefix match to regulator-name property
This patch extends pmic_bind_children prefix matching. In addition to the node name the property regulator-name is used while trying to match prefixes. This allows assigning different drivers to regulator nodes named regulator@1 and regulator@10 for example. I have discarded the idea of using other properties then regulator-name as I do not see any benefit in using property compatible or even regulator-compatible. Of course I am open to change this if there are good reasons to do so. Signed-off-by: Felix Brack <fb@ltec.ch> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/pmic/pmic-uclass.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/power/pmic/pmic-uclass.c b/drivers/power/pmic/pmic-uclass.c
index 64964e4e96..9347b40688 100644
--- a/drivers/power/pmic/pmic-uclass.c
+++ b/drivers/power/pmic/pmic-uclass.c
@@ -26,6 +26,7 @@ int pmic_bind_children(struct udevice *pmic, ofnode parent,
struct driver *drv;
struct udevice *child;
const char *node_name;
+ const char *reg_name;
int bind_count = 0;
ofnode node;
int prefix_len;
@@ -44,8 +45,14 @@ int pmic_bind_children(struct udevice *pmic, ofnode parent,
debug(" - compatible prefix: '%s'\n", info->prefix);
prefix_len = strlen(info->prefix);
- if (strncmp(info->prefix, node_name, prefix_len))
- continue;
+ if (strncmp(info->prefix, node_name, prefix_len)) {
+ reg_name = ofnode_read_string(node,
+ "regulator-name");
+ if (!reg_name)
+ continue;
+ if (strncmp(info->prefix, reg_name, prefix_len))
+ continue;
+ }
drv = lists_driver_lookup_name(info->driver);
if (!drv) {