summaryrefslogtreecommitdiffstats
path: root/drivers/soc
diff options
context:
space:
mode:
authorMarek Szyprowski <m.szyprowski@samsung.com>2017-01-30 13:18:59 +0100
committerKrzysztof Kozlowski <krzk@kernel.org>2017-01-31 21:30:07 +0200
commitb13b2330aab53af4ebaa2859f72f2c802d01abad (patch)
tree7f9f63c4d90036f0eb5633d85f238a552ae62cce /drivers/soc
parentd1a09872fe2f28bf1a9e224abaf1688807adda91 (diff)
downloadlinux-b13b2330aab53af4ebaa2859f72f2c802d01abad.tar.gz
linux-b13b2330aab53af4ebaa2859f72f2c802d01abad.tar.bz2
linux-b13b2330aab53af4ebaa2859f72f2c802d01abad.zip
soc: samsung: pm_domains: Read domain name from the new label property
Device tree nodes for each power domain should use generic "power-domain" name, so using it as a domain name doesn't give much benefits. This patch adds support for human readable names defined in 'label' property. Such names are visible to userspace and makes debugging much easier. When no 'label' property is found, driver keeps using the name constructed from full node name. Suggested-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/samsung/pm_domains.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/soc/samsung/pm_domains.c b/drivers/soc/samsung/pm_domains.c
index 0649024fce09..31270171f23d 100644
--- a/drivers/soc/samsung/pm_domains.c
+++ b/drivers/soc/samsung/pm_domains.c
@@ -135,6 +135,15 @@ static const struct of_device_id exynos_pm_domain_of_match[] __initconst = {
{ },
};
+static __init const char *exynos_get_domain_name(struct device_node *node)
+{
+ const char *name;
+
+ if (of_property_read_string(node, "label", &name) < 0)
+ name = strrchr(node->full_name, '/') + 1;
+ return kstrdup_const(name, GFP_KERNEL);
+}
+
static __init int exynos4_pm_init_power_domain(void)
{
struct device_node *np;
@@ -152,8 +161,7 @@ static __init int exynos4_pm_init_power_domain(void)
of_node_put(np);
return -ENOMEM;
}
- pd->pd.name = kstrdup_const(strrchr(np->full_name, '/') + 1,
- GFP_KERNEL);
+ pd->pd.name = exynos_get_domain_name(np);
if (!pd->pd.name) {
kfree(pd);
of_node_put(np);