All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chanwoo Choi <cw00.choi@samsung.com>
To: myungjoo.ham@samsung.com, kyungmin.park@samsung.com,
	k.kozlowski@samsung.com, kgene@kernel.org,
	s.nawrocki@samsung.com, tomasz.figa@gmail.com
Cc: rjw@rjwysocki.net, robh+dt@kernel.org, pawel.moll@arm.com,
	mark.rutland@arm.com, ijc+devicetree@hellion.org.uk,
	galak@codeaurora.org, linux@arm.linux.org.uk,
	linux.amoon@gmail.com, m.reichl@fivetechno.de,
	tjakobi@math.uni-bielefeld.de, inki.dae@samsung.com,
	cw00.choi@samsung.com, linux-kernel@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org
Subject: [PATCH v9 03/20] PM / devfreq: Add devfreq_get_devfreq_by_phandle()
Date: Mon, 11 Apr 2016 12:57:41 +0900	[thread overview]
Message-ID: <1460347078-15175-4-git-send-email-cw00.choi@samsung.com> (raw)
In-Reply-To: <1460347078-15175-1-git-send-email-cw00.choi@samsung.com>

This patch adds the new devfreq_get_devfreq_by_phandle() OF helper function
which can find the instance of devfreq device by using phandle ("devfreq").

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
[m.reichl and linux.amoon: Tested it on exynos4412-odroidu3 board]
Tested-by: Markus Reichl <m.reichl@fivetechno.de>
Tested-by: Anand Moon <linux.amoon@gmail.com>
---
 drivers/devfreq/devfreq.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 include/linux/devfreq.h   |  9 +++++++++
 2 files changed, 53 insertions(+)

diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 984c5e9e7bdd..20a9422c2552 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -25,6 +25,7 @@
 #include <linux/list.h>
 #include <linux/printk.h>
 #include <linux/hrtimer.h>
+#include <linux/of.h>
 #include "governor.h"
 
 static struct class *devfreq_class;
@@ -639,6 +640,49 @@ struct devfreq *devm_devfreq_add_device(struct device *dev,
 }
 EXPORT_SYMBOL(devm_devfreq_add_device);
 
+#ifdef CONFIG_OF
+/*
+ * devfreq_get_devfreq_by_phandle - Get the devfreq device from devicetree
+ * @dev - instance to the given device
+ * @index - index into list of devfreq
+ *
+ * return the instance of devfreq device
+ */
+struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, int index)
+{
+	struct device_node *node;
+	struct devfreq *devfreq;
+
+	if (!dev)
+		return ERR_PTR(-EINVAL);
+
+	if (!dev->of_node)
+		return ERR_PTR(-EINVAL);
+
+	node = of_parse_phandle(dev->of_node, "devfreq", index);
+	if (!node)
+		return ERR_PTR(-ENODEV);
+
+	mutex_lock(&devfreq_list_lock);
+	list_for_each_entry(devfreq, &devfreq_list, node) {
+		if (devfreq->dev.parent
+			&& devfreq->dev.parent->of_node == node) {
+			mutex_unlock(&devfreq_list_lock);
+			return devfreq;
+		}
+	}
+	mutex_unlock(&devfreq_list_lock);
+
+	return ERR_PTR(-EPROBE_DEFER);
+}
+#else
+struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, int index)
+{
+	return ERR_PTR(-ENODEV);
+}
+#endif /* CONFIG_OF */
+EXPORT_SYMBOL_GPL(devfreq_get_devfreq_by_phandle);
+
 /**
  * devm_devfreq_remove_device() - Resource-managed devfreq_remove_device()
  * @dev:	the device to add devfreq feature.
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
index 6fa02a20eb63..aa0b8424ebc3 100644
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
@@ -208,6 +208,9 @@ extern int devm_devfreq_register_opp_notifier(struct device *dev,
 extern void devm_devfreq_unregister_opp_notifier(struct device *dev,
 						struct devfreq *devfreq);
 
+extern struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev,
+						int index);
+
 /**
  * devfreq_update_stats() - update the last_status pointer in struct devfreq
  * @df:		the devfreq instance whose status needs updating
@@ -307,6 +310,12 @@ static inline void devm_devfreq_unregister_opp_notifier(struct device *dev,
 {
 }
 
+static inline struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev,
+							int index)
+{
+	return ERR_PTR(-ENODEV);
+}
+
 static inline int devfreq_update_stats(struct devfreq *df)
 {
 	return -EINVAL;
-- 
1.9.1

WARNING: multiple messages have this Message-ID (diff)
From: Chanwoo Choi <cw00.choi@samsung.com>
To: myungjoo.ham@samsung.com, kyungmin.park@samsung.com,
	k.kozlowski@samsung.com, kgene@kernel.org,
	s.nawrocki@samsung.com, tomasz.figa@gmail.com
Cc: mark.rutland@arm.com, inki.dae@samsung.com,
	linux-samsung-soc@vger.kernel.org, linux@arm.linux.org.uk,
	cw00.choi@samsung.com, pawel.moll@arm.com,
	ijc+devicetree@hellion.org.uk, linux.amoon@gmail.com,
	linux-pm@vger.kernel.org, rjw@rjwysocki.net,
	linux-kernel@vger.kernel.org, m.reichl@fivetechno.de,
	tjakobi@math.uni-bielefeld.de, devicetree@vger.kernel.org,
	robh+dt@kernel.org, galak@codeaurora.org,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v9 03/20] PM / devfreq: Add devfreq_get_devfreq_by_phandle()
Date: Mon, 11 Apr 2016 12:57:41 +0900	[thread overview]
Message-ID: <1460347078-15175-4-git-send-email-cw00.choi@samsung.com> (raw)
In-Reply-To: <1460347078-15175-1-git-send-email-cw00.choi@samsung.com>

This patch adds the new devfreq_get_devfreq_by_phandle() OF helper function
which can find the instance of devfreq device by using phandle ("devfreq").

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
[m.reichl and linux.amoon: Tested it on exynos4412-odroidu3 board]
Tested-by: Markus Reichl <m.reichl@fivetechno.de>
Tested-by: Anand Moon <linux.amoon@gmail.com>
---
 drivers/devfreq/devfreq.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 include/linux/devfreq.h   |  9 +++++++++
 2 files changed, 53 insertions(+)

diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 984c5e9e7bdd..20a9422c2552 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -25,6 +25,7 @@
 #include <linux/list.h>
 #include <linux/printk.h>
 #include <linux/hrtimer.h>
+#include <linux/of.h>
 #include "governor.h"
 
 static struct class *devfreq_class;
@@ -639,6 +640,49 @@ struct devfreq *devm_devfreq_add_device(struct device *dev,
 }
 EXPORT_SYMBOL(devm_devfreq_add_device);
 
+#ifdef CONFIG_OF
+/*
+ * devfreq_get_devfreq_by_phandle - Get the devfreq device from devicetree
+ * @dev - instance to the given device
+ * @index - index into list of devfreq
+ *
+ * return the instance of devfreq device
+ */
+struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, int index)
+{
+	struct device_node *node;
+	struct devfreq *devfreq;
+
+	if (!dev)
+		return ERR_PTR(-EINVAL);
+
+	if (!dev->of_node)
+		return ERR_PTR(-EINVAL);
+
+	node = of_parse_phandle(dev->of_node, "devfreq", index);
+	if (!node)
+		return ERR_PTR(-ENODEV);
+
+	mutex_lock(&devfreq_list_lock);
+	list_for_each_entry(devfreq, &devfreq_list, node) {
+		if (devfreq->dev.parent
+			&& devfreq->dev.parent->of_node == node) {
+			mutex_unlock(&devfreq_list_lock);
+			return devfreq;
+		}
+	}
+	mutex_unlock(&devfreq_list_lock);
+
+	return ERR_PTR(-EPROBE_DEFER);
+}
+#else
+struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, int index)
+{
+	return ERR_PTR(-ENODEV);
+}
+#endif /* CONFIG_OF */
+EXPORT_SYMBOL_GPL(devfreq_get_devfreq_by_phandle);
+
 /**
  * devm_devfreq_remove_device() - Resource-managed devfreq_remove_device()
  * @dev:	the device to add devfreq feature.
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
index 6fa02a20eb63..aa0b8424ebc3 100644
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
@@ -208,6 +208,9 @@ extern int devm_devfreq_register_opp_notifier(struct device *dev,
 extern void devm_devfreq_unregister_opp_notifier(struct device *dev,
 						struct devfreq *devfreq);
 
+extern struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev,
+						int index);
+
 /**
  * devfreq_update_stats() - update the last_status pointer in struct devfreq
  * @df:		the devfreq instance whose status needs updating
@@ -307,6 +310,12 @@ static inline void devm_devfreq_unregister_opp_notifier(struct device *dev,
 {
 }
 
+static inline struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev,
+							int index)
+{
+	return ERR_PTR(-ENODEV);
+}
+
 static inline int devfreq_update_stats(struct devfreq *df)
 {
 	return -EINVAL;
-- 
1.9.1

WARNING: multiple messages have this Message-ID (diff)
From: cw00.choi@samsung.com (Chanwoo Choi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v9 03/20] PM / devfreq: Add devfreq_get_devfreq_by_phandle()
Date: Mon, 11 Apr 2016 12:57:41 +0900	[thread overview]
Message-ID: <1460347078-15175-4-git-send-email-cw00.choi@samsung.com> (raw)
In-Reply-To: <1460347078-15175-1-git-send-email-cw00.choi@samsung.com>

This patch adds the new devfreq_get_devfreq_by_phandle() OF helper function
which can find the instance of devfreq device by using phandle ("devfreq").

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
[m.reichl and linux.amoon: Tested it on exynos4412-odroidu3 board]
Tested-by: Markus Reichl <m.reichl@fivetechno.de>
Tested-by: Anand Moon <linux.amoon@gmail.com>
---
 drivers/devfreq/devfreq.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
 include/linux/devfreq.h   |  9 +++++++++
 2 files changed, 53 insertions(+)

diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index 984c5e9e7bdd..20a9422c2552 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -25,6 +25,7 @@
 #include <linux/list.h>
 #include <linux/printk.h>
 #include <linux/hrtimer.h>
+#include <linux/of.h>
 #include "governor.h"
 
 static struct class *devfreq_class;
@@ -639,6 +640,49 @@ struct devfreq *devm_devfreq_add_device(struct device *dev,
 }
 EXPORT_SYMBOL(devm_devfreq_add_device);
 
+#ifdef CONFIG_OF
+/*
+ * devfreq_get_devfreq_by_phandle - Get the devfreq device from devicetree
+ * @dev - instance to the given device
+ * @index - index into list of devfreq
+ *
+ * return the instance of devfreq device
+ */
+struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, int index)
+{
+	struct device_node *node;
+	struct devfreq *devfreq;
+
+	if (!dev)
+		return ERR_PTR(-EINVAL);
+
+	if (!dev->of_node)
+		return ERR_PTR(-EINVAL);
+
+	node = of_parse_phandle(dev->of_node, "devfreq", index);
+	if (!node)
+		return ERR_PTR(-ENODEV);
+
+	mutex_lock(&devfreq_list_lock);
+	list_for_each_entry(devfreq, &devfreq_list, node) {
+		if (devfreq->dev.parent
+			&& devfreq->dev.parent->of_node == node) {
+			mutex_unlock(&devfreq_list_lock);
+			return devfreq;
+		}
+	}
+	mutex_unlock(&devfreq_list_lock);
+
+	return ERR_PTR(-EPROBE_DEFER);
+}
+#else
+struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev, int index)
+{
+	return ERR_PTR(-ENODEV);
+}
+#endif /* CONFIG_OF */
+EXPORT_SYMBOL_GPL(devfreq_get_devfreq_by_phandle);
+
 /**
  * devm_devfreq_remove_device() - Resource-managed devfreq_remove_device()
  * @dev:	the device to add devfreq feature.
diff --git a/include/linux/devfreq.h b/include/linux/devfreq.h
index 6fa02a20eb63..aa0b8424ebc3 100644
--- a/include/linux/devfreq.h
+++ b/include/linux/devfreq.h
@@ -208,6 +208,9 @@ extern int devm_devfreq_register_opp_notifier(struct device *dev,
 extern void devm_devfreq_unregister_opp_notifier(struct device *dev,
 						struct devfreq *devfreq);
 
+extern struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev,
+						int index);
+
 /**
  * devfreq_update_stats() - update the last_status pointer in struct devfreq
  * @df:		the devfreq instance whose status needs updating
@@ -307,6 +310,12 @@ static inline void devm_devfreq_unregister_opp_notifier(struct device *dev,
 {
 }
 
+static inline struct devfreq *devfreq_get_devfreq_by_phandle(struct device *dev,
+							int index)
+{
+	return ERR_PTR(-ENODEV);
+}
+
 static inline int devfreq_update_stats(struct devfreq *df)
 {
 	return -EINVAL;
-- 
1.9.1

  parent reply	other threads:[~2016-04-11  4:03 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-11  3:57 [PATCH v9 00/20] PM / devferq: Add generic exynos bus frequency driver and new passive governor Chanwoo Choi
2016-04-11  3:57 ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 01/20] PM / devfreq: exynos: Add generic exynos bus frequency driver Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-12  7:23   ` Krzysztof Kozlowski
2016-04-12  7:23     ` Krzysztof Kozlowski
2016-04-11  3:57 ` [PATCH v9 02/20] PM / devfreq: exynos: Add documentation for " Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57 ` Chanwoo Choi [this message]
2016-04-11  3:57   ` [PATCH v9 03/20] PM / devfreq: Add devfreq_get_devfreq_by_phandle() Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-12  7:24   ` Krzysztof Kozlowski
2016-04-12  7:24     ` Krzysztof Kozlowski
2016-04-11  3:57 ` [PATCH v9 04/20] PM / devfreq: Add new DEVFREQ_TRANSITION_NOTIFIER notifier Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-12  7:29   ` Krzysztof Kozlowski
2016-04-12  7:29     ` Krzysztof Kozlowski
2016-04-11  3:57 ` [PATCH v9 05/20] PM / devfreq: Add new passive governor Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-12  7:30   ` Krzysztof Kozlowski
2016-04-12  7:30     ` Krzysztof Kozlowski
2016-04-11  3:57 ` [PATCH v9 06/20] PM / devfreq: exynos: Add support of bus frequency of sub-blocks using " Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-12  7:31   ` Krzysztof Kozlowski
2016-04-12  7:31     ` Krzysztof Kozlowski
2016-04-11  3:57 ` [PATCH v9 07/20] PM / devfreq: exynos: Update documentation for bus devices " Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-12  7:34   ` Krzysztof Kozlowski
2016-04-12  7:34     ` Krzysztof Kozlowski
2016-04-12  8:19     ` Chanwoo Choi
2016-04-12  8:19       ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 08/20] PM / devfreq: exynos: Add the detailed correlation between sub-blocks and power line Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-12  7:35   ` Krzysztof Kozlowski
2016-04-12  7:35     ` Krzysztof Kozlowski
2016-04-12  8:20     ` Chanwoo Choi
2016-04-12  8:20       ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 09/20] PM / devfreq: exynos: Remove unused exynos4/5 busfreq driver Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-12  7:40   ` Krzysztof Kozlowski
2016-04-12  7:40     ` Krzysztof Kozlowski
2016-04-11  3:57 ` [PATCH v9 10/20] MAINTAINERS: Add samsung bus frequency driver entry Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-12  7:46   ` Krzysztof Kozlowski
2016-04-12  7:46     ` Krzysztof Kozlowski
2016-04-12  8:20     ` Chanwoo Choi
2016-04-12  8:20       ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 11/20] ARM: dts: Add DMC bus node for Exynos3250 Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 12/20] ARM: dts: Add DMC bus frequency for exynos3250-rinato/monk Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 13/20] ARM: dts: Add bus nodes using VDD_INT for Exynos3250 Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 14/20] ARM: dts: Add bus nodes using VDD_MIF for Exynos4x12 Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 15/20] ARM: dts: Add bus nodes using VDD_INT " Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 16/20] ARM: dts: Add bus nodes using VDD_MIF for Exynos4210 Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 17/20] ARM: dts: Add exynos4412-ppmu-common dtsi to delete duplicate PPMU nodes Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 18/20] ARM: dts: Add support of bus frequency using VDD_INT for exynos3250-rinato Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 19/20] ARM: dts: Expand the voltage range of buck1/3 regulator for exynos4412-odroidu3 Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57 ` [PATCH v9 20/20] ARM: dts: Add support of bus frequency for exynos4412-trats/odroidu3 Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  3:57   ` Chanwoo Choi
2016-04-11  4:01 ` [PATCH v9 00/20] PM / devferq: Add generic exynos bus frequency driver and new passive governor Chanwoo Choi
2016-04-11  4:01   ` Chanwoo Choi
2016-04-11 19:55   ` Krzysztof Kozlowski
2016-04-11 19:55     ` Krzysztof Kozlowski
2016-04-11 20:15     ` Chanwoo Choi
2016-04-11 20:15       ` Chanwoo Choi
2016-04-11 20:15       ` Chanwoo Choi
2016-05-03 10:25 ` Krzysztof Kozlowski
2016-05-03 10:25   ` Krzysztof Kozlowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1460347078-15175-4-git-send-email-cw00.choi@samsung.com \
    --to=cw00.choi@samsung.com \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=inki.dae@samsung.com \
    --cc=k.kozlowski@samsung.com \
    --cc=kgene@kernel.org \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=linux.amoon@gmail.com \
    --cc=linux@arm.linux.org.uk \
    --cc=m.reichl@fivetechno.de \
    --cc=mark.rutland@arm.com \
    --cc=myungjoo.ham@samsung.com \
    --cc=pawel.moll@arm.com \
    --cc=rjw@rjwysocki.net \
    --cc=robh+dt@kernel.org \
    --cc=s.nawrocki@samsung.com \
    --cc=tjakobi@math.uni-bielefeld.de \
    --cc=tomasz.figa@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.