summaryrefslogtreecommitdiffstats
path: root/drivers/mfd
diff options
context:
space:
mode:
authorAlexander Shiyan <shc_work@mail.ru>2014-01-23 21:22:04 +0400
committerSascha Hauer <s.hauer@pengutronix.de>2014-01-24 23:10:04 +0100
commitc2c5f48b91cdbb963bb50e77ae57dd6071cb3b92 (patch)
treed932ade4face0219bb48aa148523a9cc15fab63d /drivers/mfd
parent42193d5b66b34956b3a8daafadf6f8c2edd82a49 (diff)
downloadbarebox-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.c20
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;