diff mbox series

[v1,1/2] iio: core: Replace iio_sysfs_match_string_with_gaps() by __sysfs_match_string()

Message ID 20230118074828.66155-1-andriy.shevchenko@linux.intel.com (mailing list archive)
State Accepted
Headers show
Series [v1,1/2] iio: core: Replace iio_sysfs_match_string_with_gaps() by __sysfs_match_string() | expand

Commit Message

Andy Shevchenko Jan. 18, 2023, 7:48 a.m. UTC
None of the current users is using gaps in the list of the items.
No need to have a specific function for that, just replace it by
library available __sysfs_match_string().

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/iio/industrialio-core.c | 32 +-------------------------------
 1 file changed, 1 insertion(+), 31 deletions(-)

Comments

Lars-Peter Clausen Jan. 18, 2023, 3:22 p.m. UTC | #1
On 1/17/23 23:48, Andy Shevchenko wrote:
> None of the current users is using gaps in the list of the items.
> No need to have a specific function for that, just replace it by
> library available __sysfs_match_string().

Hm, I specifically remember adding this for a driver where there were 
gaps. One of the DACs. But it might be that the driver itself never made 
it upstream.

>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>   drivers/iio/industrialio-core.c | 32 +-------------------------------
>   1 file changed, 1 insertion(+), 31 deletions(-)
>
> diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
> index 52e690f031cb..26e357f14db8 100644
> --- a/drivers/iio/industrialio-core.c
> +++ b/drivers/iio/industrialio-core.c
> @@ -205,36 +205,6 @@ bool iio_buffer_enabled(struct iio_dev *indio_dev)
>   }
>   EXPORT_SYMBOL_GPL(iio_buffer_enabled);
>   
> -/**
> - * iio_sysfs_match_string_with_gaps - matches given string in an array with gaps
> - * @array: array of strings
> - * @n: number of strings in the array
> - * @str: string to match with
> - *
> - * Returns index of @str in the @array or -EINVAL, similar to match_string().
> - * Uses sysfs_streq instead of strcmp for matching.
> - *
> - * This routine will look for a string in an array of strings.
> - * The search will continue until the element is found or the n-th element
> - * is reached, regardless of any NULL elements in the array.
> - */
> -static int iio_sysfs_match_string_with_gaps(const char * const *array, size_t n,
> -					    const char *str)
> -{
> -	const char *item;
> -	int index;
> -
> -	for (index = 0; index < n; index++) {
> -		item = array[index];
> -		if (!item)
> -			continue;
> -		if (sysfs_streq(item, str))
> -			return index;
> -	}
> -
> -	return -EINVAL;
> -}
> -
>   #if defined(CONFIG_DEBUG_FS)
>   /*
>    * There's also a CONFIG_DEBUG_FS guard in include/linux/iio/iio.h for
> @@ -569,7 +539,7 @@ ssize_t iio_enum_write(struct iio_dev *indio_dev,
>   	if (!e->set)
>   		return -EINVAL;
>   
> -	ret = iio_sysfs_match_string_with_gaps(e->items, e->num_items, buf);
> +	ret = __sysfs_match_string(e->items, e->num_items, buf);
>   	if (ret < 0)
>   		return ret;
>
Andy Shevchenko Jan. 18, 2023, 3:49 p.m. UTC | #2
On Wed, Jan 18, 2023 at 07:22:30AM -0800, Lars-Peter Clausen wrote:
> On 1/17/23 23:48, Andy Shevchenko wrote:
> > None of the current users is using gaps in the list of the items.
> > No need to have a specific function for that, just replace it by
> > library available __sysfs_match_string().
> 
> Hm, I specifically remember adding this for a driver where there were gaps.
> One of the DACs. But it might be that the driver itself never made it
> upstream.

I have checked all modules that have struct iio_enum and/or ("or" probably may
not happen) IIO_ENUM() in them.

It might be that I missed something.
Lars-Peter Clausen Jan. 18, 2023, 4:37 p.m. UTC | #3
On 1/18/23 07:49, Andy Shevchenko wrote:
> On Wed, Jan 18, 2023 at 07:22:30AM -0800, Lars-Peter Clausen wrote:
>> On 1/17/23 23:48, Andy Shevchenko wrote:
>>> None of the current users is using gaps in the list of the items.
>>> No need to have a specific function for that, just replace it by
>>> library available __sysfs_match_string().
>> Hm, I specifically remember adding this for a driver where there were gaps.
>> One of the DACs. But it might be that the driver itself never made it
>> upstream.
> I have checked all modules that have struct iio_enum and/or ("or" probably may
> not happen) IIO_ENUM() in them.
>
> It might be that I missed something.
I checked too, I can't find it either. The driver probably never made it 
upstream.
Nuno Sá Jan. 19, 2023, 8 a.m. UTC | #4
On Wed, 2023-01-18 at 08:37 -0800, Lars-Peter Clausen wrote:
> On 1/18/23 07:49, Andy Shevchenko wrote:
> > On Wed, Jan 18, 2023 at 07:22:30AM -0800, Lars-Peter Clausen wrote:
> > > On 1/17/23 23:48, Andy Shevchenko wrote:
> > > > None of the current users is using gaps in the list of the
> > > > items.
> > > > No need to have a specific function for that, just replace it
> > > > by
> > > > library available __sysfs_match_string().
> > > Hm, I specifically remember adding this for a driver where there
> > > were gaps.
> > > One of the DACs. But it might be that the driver itself never
> > > made it
> > > upstream.
> > I have checked all modules that have struct iio_enum and/or ("or"
> > probably may
> > not happen) IIO_ENUM() in them.
> > 
> > It might be that I missed something.
> I checked too, I can't find it either. The driver probably never made
> it 
> upstream.

Yeah, I also did a quick check and I could find it in one adc (most
likely we have more downstream users of this) that did not make it
upstream. Eventually, we want to have it upstream but the ABI using the
gaps can arguably be dropped...

Anyways, from my side I'm fine with this change. We can revert it if we
ever have a real user for this. I'll just have to be careful when
updating ADI tree (but that is our problem :)).

- Nuno Sá
Andy Shevchenko Jan. 19, 2023, 11:23 a.m. UTC | #5
On Thu, Jan 19, 2023 at 09:00:45AM +0100, Nuno Sá wrote:
> On Wed, 2023-01-18 at 08:37 -0800, Lars-Peter Clausen wrote:
> > On 1/18/23 07:49, Andy Shevchenko wrote:
> > > On Wed, Jan 18, 2023 at 07:22:30AM -0800, Lars-Peter Clausen wrote:
> > > > On 1/17/23 23:48, Andy Shevchenko wrote:
> > > > > None of the current users is using gaps in the list of the
> > > > > items.
> > > > > No need to have a specific function for that, just replace it
> > > > > by
> > > > > library available __sysfs_match_string().
> > > > Hm, I specifically remember adding this for a driver where there
> > > > were gaps.
> > > > One of the DACs. But it might be that the driver itself never
> > > > made it
> > > > upstream.
> > > I have checked all modules that have struct iio_enum and/or ("or"
> > > probably may
> > > not happen) IIO_ENUM() in them.
> > > 
> > > It might be that I missed something.
> > I checked too, I can't find it either. The driver probably never made
> > it 
> > upstream.
> 
> Yeah, I also did a quick check and I could find it in one adc (most
> likely we have more downstream users of this) that did not make it
> upstream. Eventually, we want to have it upstream but the ABI using the
> gaps can arguably be dropped...
> 
> Anyways, from my side I'm fine with this change. We can revert it if we
> ever have a real user for this. I'll just have to be careful when
> updating ADI tree (but that is our problem :)).

We usually do not keep a dead code in the kernel, and handling gaps is
a dead code. And yes, we always can return to that when we have a user,
most likely as a part of the generic library and not just IIO.
Nuno Sá Jan. 19, 2023, 1:24 p.m. UTC | #6
On Thu, 2023-01-19 at 13:23 +0200, Andy Shevchenko wrote:
> On Thu, Jan 19, 2023 at 09:00:45AM +0100, Nuno Sá wrote:
> > On Wed, 2023-01-18 at 08:37 -0800, Lars-Peter Clausen wrote:
> > > On 1/18/23 07:49, Andy Shevchenko wrote:
> > > > On Wed, Jan 18, 2023 at 07:22:30AM -0800, Lars-Peter Clausen
> > > > wrote:
> > > > > On 1/17/23 23:48, Andy Shevchenko wrote:
> > > > > > None of the current users is using gaps in the list of the
> > > > > > items.
> > > > > > No need to have a specific function for that, just replace
> > > > > > it
> > > > > > by
> > > > > > library available __sysfs_match_string().
> > > > > Hm, I specifically remember adding this for a driver where
> > > > > there
> > > > > were gaps.
> > > > > One of the DACs. But it might be that the driver itself never
> > > > > made it
> > > > > upstream.
> > > > I have checked all modules that have struct iio_enum and/or
> > > > ("or"
> > > > probably may
> > > > not happen) IIO_ENUM() in them.
> > > > 
> > > > It might be that I missed something.
> > > I checked too, I can't find it either. The driver probably never
> > > made
> > > it 
> > > upstream.
> > 
> > Yeah, I also did a quick check and I could find it in one adc (most
> > likely we have more downstream users of this) that did not make it
> > upstream. Eventually, we want to have it upstream but the ABI using
> > the
> > gaps can arguably be dropped...
> > 
> > Anyways, from my side I'm fine with this change. We can revert it
> > if we
> > ever have a real user for this. I'll just have to be careful when
> > updating ADI tree (but that is our problem :)).
> 
> We usually do not keep a dead code in the kernel, and handling gaps
> is a dead code.

Yes, I know... That is why I cannot really complain about this
change :)

- Nuno Sá
Jonathan Cameron Jan. 21, 2023, 5:49 p.m. UTC | #7
On Thu, 19 Jan 2023 14:24:07 +0100
Nuno Sá <noname.nuno@gmail.com> wrote:

> On Thu, 2023-01-19 at 13:23 +0200, Andy Shevchenko wrote:
> > On Thu, Jan 19, 2023 at 09:00:45AM +0100, Nuno Sá wrote:  
> > > On Wed, 2023-01-18 at 08:37 -0800, Lars-Peter Clausen wrote:  
> > > > On 1/18/23 07:49, Andy Shevchenko wrote:  
> > > > > On Wed, Jan 18, 2023 at 07:22:30AM -0800, Lars-Peter Clausen
> > > > > wrote:  
> > > > > > On 1/17/23 23:48, Andy Shevchenko wrote:  
> > > > > > > None of the current users is using gaps in the list of the
> > > > > > > items.
> > > > > > > No need to have a specific function for that, just replace
> > > > > > > it
> > > > > > > by
> > > > > > > library available __sysfs_match_string().  
> > > > > > Hm, I specifically remember adding this for a driver where
> > > > > > there
> > > > > > were gaps.
> > > > > > One of the DACs. But it might be that the driver itself never
> > > > > > made it
> > > > > > upstream.  
> > > > > I have checked all modules that have struct iio_enum and/or
> > > > > ("or"
> > > > > probably may
> > > > > not happen) IIO_ENUM() in them.
> > > > > 
> > > > > It might be that I missed something.  
> > > > I checked too, I can't find it either. The driver probably never
> > > > made
> > > > it 
> > > > upstream.  
> > > 
> > > Yeah, I also did a quick check and I could find it in one adc (most
> > > likely we have more downstream users of this) that did not make it
> > > upstream. Eventually, we want to have it upstream but the ABI using
> > > the
> > > gaps can arguably be dropped...
> > > 
> > > Anyways, from my side I'm fine with this change. We can revert it
> > > if we
> > > ever have a real user for this. I'll just have to be careful when
> > > updating ADI tree (but that is our problem :)).

You could always upstream the problematic drivers :)

> > 
> > We usually do not keep a dead code in the kernel, and handling gaps
> > is a dead code.  
> 
> Yes, I know... That is why I cannot really complain about this
> change :)

I joined in because I was really really sure we had a user of this
at somepoint. However, despite there having been a bunch of users
in the counter stuff before that spun out as a separate subsystem
looks like they were contiguous as well. Ah well the reasoning behind
this dance may remain lost to history :)

Series applied,

Jonathan

> 
> - Nuno Sá
>
diff mbox series

Patch

diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index 52e690f031cb..26e357f14db8 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -205,36 +205,6 @@  bool iio_buffer_enabled(struct iio_dev *indio_dev)
 }
 EXPORT_SYMBOL_GPL(iio_buffer_enabled);
 
-/**
- * iio_sysfs_match_string_with_gaps - matches given string in an array with gaps
- * @array: array of strings
- * @n: number of strings in the array
- * @str: string to match with
- *
- * Returns index of @str in the @array or -EINVAL, similar to match_string().
- * Uses sysfs_streq instead of strcmp for matching.
- *
- * This routine will look for a string in an array of strings.
- * The search will continue until the element is found or the n-th element
- * is reached, regardless of any NULL elements in the array.
- */
-static int iio_sysfs_match_string_with_gaps(const char * const *array, size_t n,
-					    const char *str)
-{
-	const char *item;
-	int index;
-
-	for (index = 0; index < n; index++) {
-		item = array[index];
-		if (!item)
-			continue;
-		if (sysfs_streq(item, str))
-			return index;
-	}
-
-	return -EINVAL;
-}
-
 #if defined(CONFIG_DEBUG_FS)
 /*
  * There's also a CONFIG_DEBUG_FS guard in include/linux/iio/iio.h for
@@ -569,7 +539,7 @@  ssize_t iio_enum_write(struct iio_dev *indio_dev,
 	if (!e->set)
 		return -EINVAL;
 
-	ret = iio_sysfs_match_string_with_gaps(e->items, e->num_items, buf);
+	ret = __sysfs_match_string(e->items, e->num_items, buf);
 	if (ret < 0)
 		return ret;