From: Jonathan Cameron <jic23@kernel.org>
To: "Ivan T. Ivanov" <iivanov@mm-sol.com>
Cc: Adam.Thomson.Opensource@diasemi.com, knaack.h@gmx.de,
lars@metafoo.de, pmeerw@pmeerw.net, linux-iio@vger.kernel.org,
linux-kernel@vger.kernel.org, Guenter Roeck <linux@roeck-us.net>
Subject: Re: [PATCH] iio: core: Propagate error codes from OF layer to client drivers
Date: Mon, 25 Aug 2014 17:10:31 +0100 [thread overview]
Message-ID: <53FB5FF7.8020504@kernel.org> (raw)
In-Reply-To: <1408971437-10751-1-git-send-email-iivanov@mm-sol.com>
On 25/08/14 13:57, Ivan T. Ivanov wrote:
> Do not overwrite error codes returned from of_iio_channel_get().
> Error codes are used to distinguish between "io-channel-names"
> not present in DT bindings, property is optional, and IIO channel
> provider driver still not being loaded, defer probe.
>
> Signed-off-by: Ivan T. Ivanov <iivanov@mm-sol.com>
Cc'd Guenter who often takes an interest in this code (and wrote it ;)
Mostly seems logical to me, though I don't like the change of
priority in the last bit. I've also just taken a fix for this
code so there may be some fuzz from that once it's propogated
through to mainline and back to the togreg tree of iio.git
Thanks,
Jonathan
> ---
> drivers/iio/inkern.c | 24 ++++++++++++------------
> 1 file changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/iio/inkern.c b/drivers/iio/inkern.c
> index c749700..66a6cde 100644
> --- a/drivers/iio/inkern.c
> +++ b/drivers/iio/inkern.c
> @@ -162,7 +162,7 @@ err_free_channel:
> static struct iio_channel *of_iio_channel_get_by_name(struct device_node *np,
> const char *name)
> {
> - struct iio_channel *chan = NULL;
> + struct iio_channel *chan = ERR_PTR(-ENODEV);
>
> /* Walk up the tree of devices looking for a matching iio channel */
> while (np) {
> @@ -183,7 +183,7 @@ static struct iio_channel *of_iio_channel_get_by_name(struct device_node *np,
> else if (name && index >= 0) {
> pr_err("ERROR: could not get IIO channel %s:%s(%i)\n",
> np->full_name, name ? name : "", index);
> - return NULL;
> + break;
> }
>
> /*
> @@ -193,7 +193,7 @@ static struct iio_channel *of_iio_channel_get_by_name(struct device_node *np,
> */
> np = np->parent;
> if (np && !of_get_property(np, "io-channel-ranges", NULL))
> - return NULL;
> + break;
> }
>
> return chan;
> @@ -243,12 +243,12 @@ error_free_chans:
> static inline struct iio_channel *
> of_iio_channel_get_by_name(struct device_node *np, const char *name)
> {
> - return NULL;
> + return ERR_PTR(-ENODEV);
> }
>
> static inline struct iio_channel *of_iio_channel_get_all(struct device *dev)
> {
> - return NULL;
> + return ERR_PTR(-ENODEV);
> }
>
> #endif /* CONFIG_OF */
> @@ -312,14 +312,14 @@ struct iio_channel *iio_channel_get(struct device *dev,
> const char *name = dev ? dev_name(dev) : NULL;
> struct iio_channel *channel;
>
> - if (dev) {
> - channel = of_iio_channel_get_by_name(dev->of_node,
> - channel_name);
> - if (channel != NULL)
> - return channel;
> - }
> + channel = iio_channel_get_sys(name, channel_name);
> + if (!IS_ERR(channel))
> + return channel;
> +
> + if (!dev)
> + return channel;
>
> - return iio_channel_get_sys(name, channel_name);
> + return of_iio_channel_get_by_name(dev->of_node, channel_name);
> }
Why reorder the logic? This makes this patch less obviously
correct for limited obvious gain?
Previously the priority was clearly given to device tree bindings
wherease now it is given to board file provided map elements. It
would be interesting to see boards with both provided, but it is
possible.
> EXPORT_SYMBOL_GPL(iio_channel_get);
>
>
next prev parent reply other threads:[~2014-08-25 16:10 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-25 12:57 [PATCH] iio: core: Propagate error codes from OF layer to client drivers Ivan T. Ivanov
2014-08-25 16:10 ` Jonathan Cameron [this message]
2014-08-25 16:54 ` Guenter Roeck
2014-08-26 7:51 ` Ivan T. Ivanov
2014-08-26 13:25 ` Guenter Roeck
2014-08-26 13:48 ` Ivan T. Ivanov
2014-08-26 14:35 ` Opensource [Adam Thomson]
2014-08-27 15:59 ` Adam Thomson
2014-08-27 17:41 ` Jonathan Cameron
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=53FB5FF7.8020504@kernel.org \
--to=jic23@kernel.org \
--cc=Adam.Thomson.Opensource@diasemi.com \
--cc=iivanov@mm-sol.com \
--cc=knaack.h@gmx.de \
--cc=lars@metafoo.de \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=pmeerw@pmeerw.net \
/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;
as well as URLs for NNTP newsgroup(s).