diff options
author | Alexander Shiyan <shc_work@mail.ru> | 2014-01-23 21:22:04 +0400 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2014-01-24 23:10:04 +0100 |
commit | c2c5f48b91cdbb963bb50e77ae57dd6071cb3b92 (patch) | |
tree | d932ade4face0219bb48aa148523a9cc15fab63d /drivers/mfd | |
parent | 42193d5b66b34956b3a8daafadf6f8c2edd82a49 (diff) | |
download | barebox-c2c5f48b91cdbb963bb50e77ae57dd6071cb3b92.tar.gz barebox-c2c5f48b91cdbb963bb50e77ae57dd6071cb3b92.tar.xz |
mfd: syscon: Introduce syscon_base_lookup_by_phandle() function
Signed-off-by: Alexander Shiyan <shc_work@mail.ru>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mfd')
-rw-r--r-- | drivers/mfd/syscon.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/mfd/syscon.c b/drivers/mfd/syscon.c index 52cb433a39..6437344775 100644 --- a/drivers/mfd/syscon.c +++ b/drivers/mfd/syscon.c @@ -41,6 +41,26 @@ void __iomem *syscon_base_lookup_by_pdevname(const char *s) return ERR_PTR(-ENODEV); } +void __iomem *syscon_base_lookup_by_phandle(struct device_node *np, + const char *property) +{ + struct device_node *node; + struct syscon *syscon; + struct device_d *dev; + + node = of_parse_phandle(np, property, 0); + if (!node) + return ERR_PTR(-ENODEV); + + dev = of_find_device_by_node(node); + if (!dev) + return ERR_PTR(-ENODEV); + + syscon = dev->priv; + + return syscon->base; +} + static int syscon_probe(struct device_d *dev) { struct syscon *syscon; |