From: Guenter Roeck <linux@roeck-us.net>
To: Jonathan Cameron <jic23@jic23.retrosnub.co.uk>,
Quentin Schulz <quentin.schulz@free-electrons.com>
Cc: jdelvare@suse.com, jic23@kernel.org, knaack.h@gmx.de,
lars@metafoo.de, pmeerw@pmeerw.net,
maxime.ripard@free-electrons.com, wens@csie.org,
lee.jones@linaro.org, linux-kernel@vger.kernel.org,
linux-hwmon@vger.kernel.org, linux-iio@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
thomas.petazzoni@free-electrons.com,
antoine.tenart@free-electrons.com
Subject: Re: [3/3] hwmon: iio_hwmon: defer probe when no channel is found
Date: Thu, 30 Jun 2016 07:51:00 -0700 [thread overview]
Message-ID: <577531D4.1090106@roeck-us.net> (raw)
In-Reply-To: <6FBFD60A-4D68-4B60-AB34-5077BE6BD586@jic23.retrosnub.co.uk>
On 06/30/2016 06:59 AM, Jonathan Cameron wrote:
>
>
> On 30 June 2016 04:47:25 BST, Guenter Roeck <linux@roeck-us.net> wrote:
>> On Tue, Jun 28, 2016 at 10:18:17AM +0200, Quentin Schulz wrote:
>>> iio_channel_get_all returns -ENODEV when it cannot find either
>> phandles and
>>> properties in the Device Tree or channels whose consumer_dev_name
>> matches
>>> iio_hwmon in iio_map_list. The iio_map_list is filled in by iio
>> drivers
>>> which might be probed after iio_hwmon.
>>>
>>> It is better to defer the probe of iio_hwmon if such error is
>> returned by
>>> iio_channel_get_all in order to let a chance to iio drivers to expose
>>> channels in iio_map_list.
>>>
>>> Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com>
>>> ---
>>> drivers/hwmon/iio_hwmon.c | 5 ++++-
>>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/hwmon/iio_hwmon.c b/drivers/hwmon/iio_hwmon.c
>>> index b550ba5..c0da4d9 100644
>>> --- a/drivers/hwmon/iio_hwmon.c
>>> +++ b/drivers/hwmon/iio_hwmon.c
>>> @@ -73,8 +73,11 @@ static int iio_hwmon_probe(struct platform_device
>> *pdev)
>>> name = dev->of_node->name;
>>>
>>> channels = iio_channel_get_all(dev);
>>> - if (IS_ERR(channels))
>>> + if (IS_ERR(channels)) {
>>> + if (PTR_ERR(channels) == -ENODEV)
>>> + return -EPROBE_DEFER;
>>
>> The problem, as I see it, is with iio, which should return
>> -EPROBE_DEFER
>> in this situation.
> Agreed. New fangled stuff this deferred probing :)
>>
>> We can not convert -ENODEV to -EPROBE_DEFER without risking that the
>> channels are _really_ not there, which would result in endless
>> "deferred"
>> messages.
> Hmm not entirely sure how we prevent that happening wherever it is done..
>
Outch. Better at the source, though. I didn't look at the iio code recently,
but can you detect the defer situation at least with devicetree ?
For non-devicetree situations, the only option I can think of would be
to replace the module initcall with a later initcall. That should solve
the problem if both iio_hwmon and and underlying drivers are built
into the kernel. If iio_hwmon is modular, the only real option I can
see is to make sure that all drivers it needs are loaded first.
Does this make sense ?
Guenter
>>
>> Guenter
>>
>>> return PTR_ERR(channels);
>>> + }
>>>
>>> st = devm_kzalloc(dev, sizeof(*st), GFP_KERNEL);
>>> if (st == NULL) {
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2016-06-30 14:51 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-28 8:45 [PATCH 0/3] add support for Allwinner SoCs ADC Quentin Schulz
2016-06-28 8:18 ` [PATCH 1/3] mfd: " Quentin Schulz
2016-06-28 8:30 ` Antoine Tenart
2016-06-28 8:51 ` Antoine Tenart
2016-07-03 11:17 ` Jonathan Cameron
2016-07-03 16:49 ` Lars-Peter Clausen
2016-07-03 17:38 ` Guenter Roeck
2016-06-28 8:18 ` [PATCH 2/3] iio: adc: " Quentin Schulz
2016-06-28 8:32 ` Antoine Tenart
2016-07-03 11:54 ` Jonathan Cameron
2016-07-03 12:48 ` Jonathan Cameron
2016-07-03 15:43 ` Guenter Roeck
2016-07-04 7:26 ` Quentin Schulz
2016-07-04 16:29 ` Guenter Roeck
2016-07-05 7:40 ` Quentin Schulz
2016-06-28 8:18 ` [PATCH 3/3] hwmon: iio_hwmon: defer probe when no channel is found Quentin Schulz
2016-06-30 3:47 ` [3/3] " Guenter Roeck
2016-06-30 13:59 ` Jonathan Cameron
2016-06-30 14:49 ` Lars-Peter Clausen
2016-06-30 14:51 ` Guenter Roeck [this message]
2016-07-03 10:47 ` Jonathan Cameron
2016-07-03 15:48 ` Guenter Roeck
2016-06-29 3:28 ` [PATCH 0/3] add support for Allwinner SoCs ADC Chen-Yu Tsai
2016-07-01 9:45 ` Quentin Schulz
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=577531D4.1090106@roeck-us.net \
--to=linux@roeck-us.net \
--cc=antoine.tenart@free-electrons.com \
--cc=jdelvare@suse.com \
--cc=jic23@jic23.retrosnub.co.uk \
--cc=jic23@kernel.org \
--cc=knaack.h@gmx.de \
--cc=lars@metafoo.de \
--cc=lee.jones@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-iio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maxime.ripard@free-electrons.com \
--cc=pmeerw@pmeerw.net \
--cc=quentin.schulz@free-electrons.com \
--cc=thomas.petazzoni@free-electrons.com \
--cc=wens@csie.org \
/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