[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <0db2a42f-d393-4e75-afbf-cf30c0e06cce@gmail.com>
Date: Mon, 17 Mar 2025 10:42:07 +0200
From: Matti Vaittinen <mazziesaccount@...il.com>
To: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
Cc: Jonathan Cameron <jic23@...nel.org>,
Matti Vaittinen <matti.vaittinen@...rohmeurope.com>,
Lars-Peter Clausen <lars@...afoo.de>, Chen-Yu Tsai <wens@...e.org>,
Jernej Skrabec <jernej.skrabec@...il.com>,
Samuel Holland <samuel@...lland.org>, Nuno Sa <nuno.sa@...log.com>,
David Lechner <dlechner@...libre.com>,
Javier Carrasco <javier.carrasco.cruz@...il.com>,
Olivier Moysan <olivier.moysan@...s.st.com>,
Guillaume Stols <gstols@...libre.com>,
Dumitru Ceclan <mitrutzceclan@...il.com>,
Trevor Gamblin <tgamblin@...libre.com>,
Matteo Martelli <matteomartelli3@...il.com>,
Alisa-Dariana Roman <alisadariana@...il.com>, linux-iio@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org,
linux-sunxi@...ts.linux.dev
Subject: Re: [PATCH v7 05/10] iio: adc: sun20i-gpadc: Use adc-helpers
On 17/03/2025 09:51, Andy Shevchenko wrote:
> On Mon, Mar 17, 2025 at 09:11:08AM +0200, Matti Vaittinen wrote:
>> On 16/03/2025 11:41, Jonathan Cameron wrote:
>>> On Thu, 13 Mar 2025 14:34:24 +0200
>>> Andy Shevchenko <andriy.shevchenko@...ux.intel.com> wrote:
>>>> On Thu, Mar 13, 2025 at 09:18:49AM +0200, Matti Vaittinen wrote:
>
> ...
>
>>>>> + num_channels = devm_iio_adc_device_alloc_chaninfo_se(dev,
>>>>> + &sun20i_gpadc_chan_template, -1, &channels);
>>>>> + if (num_channels < 0)
>>>>> + return num_channels;
>>>>> +
>>>>> if (num_channels == 0)
>>>>> return dev_err_probe(dev, -ENODEV, "no channel children\n");
>>>>
>>>> Note, this what I would expected in your helper to see, i.e. separated cases
>>>> for < 0 (error code) and == 0, no channels.
>>>>
>>>> Also, are all users going to have this check? Usually in other similar APIs
>>>> we return -ENOENT. And user won't need to have an additional check in case of
>>>> 0 being considered as an error case too.
>>> In a few cases we'll need to do the dance the other way in the caller.
>>> So specifically check for -ENOENT and not treat it as an error.
>>>
>>> That stems from channel nodes being optionally added to drivers after
>>> they have been around a while (usually to add more specific configuration)
>>> and needing to maintain old behaviour of presenting all channels with default
>>> settings.
>>>
>>> I agree that returning -ENOENT is a reasonable way to handle this.
>>
>> I agree - but I'm going to use -ENODEV instead of -ENOENT because that's
>> what the current callers return if they find no channels. That way the
>> drivers can return the value directly without converting -ENOENT to -ENODEV.
>
> ENODEV can be easily clashed with other irrelevant cases,
Can you please explain what cases?
> ENOENT is the correct
> error code.
I kind of agree if we look this from the fwnode perspective. But, when
we look this from the intended user's perspective, I can very well
understand the -ENODEV. Returning -ENODEV from ADC driver's probe which
can't find any of the channels feels correct to me.
> If drivers return this instead of another error code, nothing bad
> happen, it's not an ABI path, correct?
I don't know if failure returned from a probe is an ABI. I still feel
-ENODEV is correct value, and I don't want to change it for existing
users - and I think also new ADC drivers should use -ENODEV if they find
no channels at all.
Besides that I think -ENODEV to be right, changing it to -ENOENT for
existing callers requires a buy-in from Jonathan (and/or) the driver
maintainers.
Yours,
-- Matti
Powered by blists - more mailing lists