From: "thermal-bot for Dmitry Baryshkov" <tip-bot2@linutronix.de>
To: linux-pm@vger.kernel.org
Cc: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
Jonathan Cameron <Jonathan.Cameron@huawei.com>,
rui.zhang@intel.com, daniel.lezcano@linaro.org, amitk@kernel.org
Subject: [thermal: thermal/next] iio: provide of_iio_channel_get_by_name() and devm_ version it
Date: Thu, 18 Feb 2021 20:39:44 -0000 [thread overview]
Message-ID: <161368078423.20312.15393574883602604651.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20201204025509.1075506-8-dmitry.baryshkov@linaro.org>
The following commit has been merged into the thermal/next branch of thermal:
Commit-ID: 6e39b145cef7577cd6b550e633155e5fc1e5838e
Gitweb: https://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux.git//6e39b145cef7577cd6b550e633155e5fc1e5838e
Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
AuthorDate: Fri, 04 Dec 2020 05:55:01 +03:00
Committer: Jonathan Cameron <Jonathan.Cameron@huawei.com>
CommitterDate: Sat, 16 Jan 2021 18:27:51
iio: provide of_iio_channel_get_by_name() and devm_ version it
There might be cases when the IIO channel is attached to the device
subnode instead of being attached to the main device node. Allow drivers
to query IIO channels by using device tree nodes.
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Link: https://lore.kernel.org/r/20201204025509.1075506-8-dmitry.baryshkov@linaro.org
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
---
drivers/iio/inkern.c | 34 +++++++++++++++++++++++++--------
include/linux/iio/consumer.h | 36 +++++++++++++++++++++++++++++++++++-
2 files changed, 62 insertions(+), 8 deletions(-)
diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
index fe30bcb..db77a2d 100644
--- a/drivers/iio/inkern.c
+++ b/drivers/iio/inkern.c
@@ -191,8 +191,8 @@ err_free_channel:
return ERR_PTR(err);
}
-static struct iio_channel *of_iio_channel_get_by_name(struct device_node *np,
- const char *name)
+struct iio_channel *of_iio_channel_get_by_name(struct device_node *np,
+ const char *name)
{
struct iio_channel *chan = NULL;
@@ -230,6 +230,7 @@ static struct iio_channel *of_iio_channel_get_by_name(struct device_node *np,
return chan;
}
+EXPORT_SYMBOL_GPL(of_iio_channel_get_by_name);
static struct iio_channel *of_iio_channel_get_all(struct device *dev)
{
@@ -272,12 +273,6 @@ error_free_chans:
#else /* CONFIG_OF */
-static inline struct iio_channel *
-of_iio_channel_get_by_name(struct device_node *np, const char *name)
-{
- return NULL;
-}
-
static inline struct iio_channel *of_iio_channel_get_all(struct device *dev)
{
return NULL;
@@ -393,6 +388,29 @@ struct iio_channel *devm_iio_channel_get(struct device *dev,
}
EXPORT_SYMBOL_GPL(devm_iio_channel_get);
+struct iio_channel *devm_of_iio_channel_get_by_name(struct device *dev,
+ struct device_node *np,
+ const char *channel_name)
+{
+ struct iio_channel **ptr, *channel;
+
+ ptr = devres_alloc(devm_iio_channel_free, sizeof(*ptr), GFP_KERNEL);
+ if (!ptr)
+ return ERR_PTR(-ENOMEM);
+
+ channel = of_iio_channel_get_by_name(np, channel_name);
+ if (IS_ERR(channel)) {
+ devres_free(ptr);
+ return channel;
+ }
+
+ *ptr = channel;
+ devres_add(dev, ptr);
+
+ return channel;
+}
+EXPORT_SYMBOL_GPL(devm_of_iio_channel_get_by_name);
+
struct iio_channel *iio_channel_get_all(struct device *dev)
{
const char *name;
diff --git a/include/linux/iio/consumer.h b/include/linux/iio/consumer.h
index c4118dc..0a90ba8 100644
--- a/include/linux/iio/consumer.h
+++ b/include/linux/iio/consumer.h
@@ -13,6 +13,7 @@
struct iio_dev;
struct iio_chan_spec;
struct device;
+struct device_node;
/**
* struct iio_channel - everything needed for a consumer to use a channel
@@ -97,6 +98,41 @@ void iio_channel_release_all(struct iio_channel *chan);
*/
struct iio_channel *devm_iio_channel_get_all(struct device *dev);
+/**
+ * of_iio_channel_get_by_name() - get description of all that is needed to access channel.
+ * @np: Pointer to consumer device tree node
+ * @consumer_channel: Unique name to identify the channel on the consumer
+ * side. This typically describes the channels use within
+ * the consumer. E.g. 'battery_voltage'
+ */
+#ifdef CONFIG_OF
+struct iio_channel *of_iio_channel_get_by_name(struct device_node *np, const char *name);
+#else
+static inline struct iio_channel *
+of_iio_channel_get_by_name(struct device_node *np, const char *name)
+{
+ return NULL;
+}
+#endif
+
+/**
+ * devm_of_iio_channel_get_by_name() - Resource managed version of of_iio_channel_get_by_name().
+ * @dev: Pointer to consumer device.
+ * @np: Pointer to consumer device tree node
+ * @consumer_channel: Unique name to identify the channel on the consumer
+ * side. This typically describes the channels use within
+ * the consumer. E.g. 'battery_voltage'
+ *
+ * Returns a pointer to negative errno if it is not able to get the iio channel
+ * otherwise returns valid pointer for iio channel.
+ *
+ * The allocated iio channel is automatically released when the device is
+ * unbound.
+ */
+struct iio_channel *devm_of_iio_channel_get_by_name(struct device *dev,
+ struct device_node *np,
+ const char *consumer_channel);
+
struct iio_cb_buffer;
/**
* iio_channel_get_all_cb() - register callback for triggered capture
next prev parent reply other threads:[~2021-02-18 20:43 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-04 2:54 [PATCH v10 00/15] qcom: pm8150: add support for thermal monitoring Dmitry Baryshkov
2020-12-04 2:54 ` [PATCH v10 01/15] dt-bindings: thermal: qcom: add adc-thermal monitor bindings Dmitry Baryshkov
2020-12-04 2:54 ` [PATCH v10 02/15] fixp-arith: add a linear interpolation function Dmitry Baryshkov
2021-02-18 20:39 ` [thermal: thermal/next] " thermal-bot for Craig Tatlor
2020-12-04 2:54 ` [PATCH v10 03/15] iio: adc: qcom-vadc: move several adc5 functions to common file Dmitry Baryshkov
2021-02-18 20:39 ` [thermal: thermal/next] " thermal-bot for Dmitry Baryshkov
2020-12-04 2:54 ` [PATCH v10 04/15] iio: adc: qcom-vadc-common: use fixp_linear_interpolate Dmitry Baryshkov
2021-02-18 20:39 ` [thermal: thermal/next] " thermal-bot for Dmitry Baryshkov
2021-02-18 22:03 ` kernel test robot
2020-12-04 2:54 ` [PATCH v10 05/15] iio: adc: move qcom-vadc-common.h to include dir Dmitry Baryshkov
2021-02-18 20:39 ` [thermal: thermal/next] " thermal-bot for Dmitry Baryshkov
2020-12-04 2:55 ` [PATCH v10 06/15] iio: adc: qcom-spmi-adc5: use of_device_get_match_data Dmitry Baryshkov
2021-02-18 20:39 ` [thermal: thermal/next] " thermal-bot for Dmitry Baryshkov
2020-12-04 2:55 ` [PATCH v10 07/15] iio: provide of_iio_channel_get_by_name() and devm_ version it Dmitry Baryshkov
2021-02-18 20:39 ` thermal-bot for Dmitry Baryshkov [this message]
2020-12-04 2:55 ` [PATCH v10 08/15] iio: adc: move vadc_map_pt from header to the source file Dmitry Baryshkov
2021-02-18 20:39 ` [thermal: thermal/next] " thermal-bot for Dmitry Baryshkov
2020-12-04 2:55 ` [PATCH v10 09/15] iio: adc: qcom-vadc-common: rewrite vadc7 die temp calculation Dmitry Baryshkov
2021-02-18 20:39 ` [thermal: thermal/next] " thermal-bot for Dmitry Baryshkov
2020-12-04 2:55 ` [PATCH v10 10/15] iio: adc: qcom-vadc-common: simplify qcom_vadc_map_voltage_temp Dmitry Baryshkov
2021-02-18 20:39 ` [thermal: thermal/next] " thermal-bot for Dmitry Baryshkov
2020-12-04 2:55 ` [PATCH v10 11/15] iio: adc: qcom-vadc-common: scale adcmap_100k_104ef_104fb Dmitry Baryshkov
2021-02-18 20:39 ` [thermal: thermal/next] " thermal-bot for Dmitry Baryshkov
2020-12-04 2:55 ` [PATCH v10 12/15] thermal: qcom: add support for adc-tm5 PMIC thermal monitor Dmitry Baryshkov
2020-12-04 2:55 ` [PATCH v10 13/15] arm64: dts: qcom: pm8150x: add definitions for adc-tm5 part Dmitry Baryshkov
2020-12-04 2:55 ` [PATCH v10 14/15] arm64: dts: sm8250-mtp: add thermal zones using pmic's adc-tm5 Dmitry Baryshkov
2020-12-04 2:55 ` [PATCH v10 15/15] arm64: dts: qrb5165-rb5: port thermal zone definitions Dmitry Baryshkov
2020-12-05 17:08 ` [PATCH v10 00/15] qcom: pm8150: add support for thermal monitoring Jonathan Cameron
2020-12-05 21:05 ` Dmitry Baryshkov
2020-12-08 10:39 ` Jonathan Cameron
2020-12-08 17:14 ` Dmitry Baryshkov
2021-01-13 17:19 ` Dmitry Baryshkov
2021-01-05 2:03 ` Dmitry Baryshkov
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=161368078423.20312.15393574883602604651.tip-bot2@tip-bot2 \
--to=tip-bot2@linutronix.de \
--cc=Jonathan.Cameron@huawei.com \
--cc=amitk@kernel.org \
--cc=daniel.lezcano@linaro.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=linux-pm@vger.kernel.org \
--cc=rui.zhang@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox