linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC 1/3] gpiolib: remove irq_to_gpio() definition
@ 2021-11-05 13:03 Arnd Bergmann
  2021-11-05 13:03 ` [RFC 2/3] gpiolib: remove empty asm/gpio.h files Arnd Bergmann
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Arnd Bergmann @ 2021-11-05 13:03 UTC (permalink / raw)
  To: linux-gpio, Bartosz Golaszewski, Linus Walleij
  Cc: linux-m68k, geert, gerg, linux, linux-arm-kernel, linux-sh,
	dalias, ysato, Arnd Bergmann, Fu Wei, Alex Shi, Hu Haowen,
	linux-doc-tw-discuss, Jonathan Corbet, Drew Fustini,
	Andy Shevchenko, linux-doc, linux-kernel

From: Arnd Bergmann <arnd@arndb.de>

All implementations other than coldfire have returned an error since
the avr32 and blackfin architectures got removed, and the last user in
driver code was removed in 2016, so just remove this old interface.

The only reference is now in the Chinese documentation, which should be
changed to remove this reference as well.

Cc: Fu Wei <tekkamanninja@gmail.com>
Cc: Alex Shi <alexs@kernel.org>
Cc: Hu Haowen <src.res@email.cn>
Cc: linux-doc-tw-discuss@lists.sourceforge.net
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 Documentation/driver-api/gpio/legacy.rst | 20 +++++---------------
 arch/m68k/include/asm/gpio.h             |  7 -------
 arch/sh/include/asm/gpio.h               |  5 -----
 include/linux/gpio.h                     | 12 ------------
 4 files changed, 5 insertions(+), 39 deletions(-)

diff --git a/Documentation/driver-api/gpio/legacy.rst b/Documentation/driver-api/gpio/legacy.rst
index 9b12eeb89170..06c05e2d62c1 100644
--- a/Documentation/driver-api/gpio/legacy.rst
+++ b/Documentation/driver-api/gpio/legacy.rst
@@ -382,22 +382,18 @@ GPIOs mapped to IRQs
 --------------------
 GPIO numbers are unsigned integers; so are IRQ numbers.  These make up
 two logically distinct namespaces (GPIO 0 need not use IRQ 0).  You can
-map between them using calls like::
+map between them using::
 
 	/* map GPIO numbers to IRQ numbers */
 	int gpio_to_irq(unsigned gpio);
 
-	/* map IRQ numbers to GPIO numbers (avoid using this) */
-	int irq_to_gpio(unsigned irq);
-
-Those return either the corresponding number in the other namespace, or
+This returns an irq number corresponding to the gpio number, or
 else a negative errno code if the mapping can't be done.  (For example,
 some GPIOs can't be used as IRQs.)  It is an unchecked error to use a GPIO
-number that wasn't set up as an input using gpio_direction_input(), or
-to use an IRQ number that didn't originally come from gpio_to_irq().
+number that wasn't set up as an input using gpio_direction_input().
 
-These two mapping calls are expected to cost on the order of a single
-addition or subtraction.  They're not allowed to sleep.
+The mapping call is expected to cost on the order of a single
+addition or subtraction.  It is not allowed to sleep.
 
 Non-error values returned from gpio_to_irq() can be passed to request_irq()
 or free_irq().  They will often be stored into IRQ resources for platform
@@ -405,12 +401,6 @@ devices, by the board-specific initialization code.  Note that IRQ trigger
 options are part of the IRQ interface, e.g. IRQF_TRIGGER_FALLING, as are
 system wakeup capabilities.
 
-Non-error values returned from irq_to_gpio() would most commonly be used
-with gpio_get_value(), for example to initialize or update driver state
-when the IRQ is edge-triggered.  Note that some platforms don't support
-this reverse mapping, so you should avoid using it.
-
-
 Emulating Open Drain Signals
 ----------------------------
 Sometimes shared signals need to use "open drain" signaling, where only the
diff --git a/arch/m68k/include/asm/gpio.h b/arch/m68k/include/asm/gpio.h
index a50b27719a58..5cfc0996ba94 100644
--- a/arch/m68k/include/asm/gpio.h
+++ b/arch/m68k/include/asm/gpio.h
@@ -66,13 +66,6 @@ static inline int gpio_to_irq(unsigned gpio)
 		return __gpio_to_irq(gpio);
 }
 
-static inline int irq_to_gpio(unsigned irq)
-{
-	return (irq >= MCFGPIO_IRQ_VECBASE &&
-		irq < (MCFGPIO_IRQ_VECBASE + MCFGPIO_IRQ_MAX)) ?
-		irq - MCFGPIO_IRQ_VECBASE : -ENXIO;
-}
-
 static inline int gpio_cansleep(unsigned gpio)
 {
 	return gpio < MCFGPIO_PIN_MAX ? 0 : __gpio_cansleep(gpio);
diff --git a/arch/sh/include/asm/gpio.h b/arch/sh/include/asm/gpio.h
index d643250f0a0f..588c1380e4cb 100644
--- a/arch/sh/include/asm/gpio.h
+++ b/arch/sh/include/asm/gpio.h
@@ -40,11 +40,6 @@ static inline int gpio_to_irq(unsigned gpio)
 	return __gpio_to_irq(gpio);
 }
 
-static inline int irq_to_gpio(unsigned int irq)
-{
-	return -ENOSYS;
-}
-
 #endif /* CONFIG_GPIOLIB */
 
 #endif /* __ASM_SH_GPIO_H */
diff --git a/include/linux/gpio.h b/include/linux/gpio.h
index 008ad3ee56b7..d8d7daa7eb94 100644
--- a/include/linux/gpio.h
+++ b/include/linux/gpio.h
@@ -81,11 +81,6 @@ static inline int gpio_to_irq(unsigned int gpio)
 	return __gpio_to_irq(gpio);
 }
 
-static inline int irq_to_gpio(unsigned int irq)
-{
-	return -EINVAL;
-}
-
 #endif /* ! CONFIG_ARCH_HAVE_CUSTOM_GPIO_H */
 
 /* CONFIG_GPIOLIB: bindings for managed devices that want to request gpios */
@@ -219,13 +214,6 @@ static inline int gpio_to_irq(unsigned gpio)
 	return -EINVAL;
 }
 
-static inline int irq_to_gpio(unsigned irq)
-{
-	/* irq can never have been returned from gpio_to_irq() */
-	WARN_ON(1);
-	return -EINVAL;
-}
-
 static inline int devm_gpio_request(struct device *dev, unsigned gpio,
 				    const char *label)
 {
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [RFC 2/3] gpiolib: remove empty asm/gpio.h files
  2021-11-05 13:03 [RFC 1/3] gpiolib: remove irq_to_gpio() definition Arnd Bergmann
@ 2021-11-05 13:03 ` Arnd Bergmann
  2021-11-08  8:07   ` Geert Uytterhoeven
  2021-11-09 11:51   ` Linus Walleij
  2021-11-05 13:03 ` [RFC 3/3] gpiolib: coldfire: remove custom asm/gpio.h Arnd Bergmann
                   ` (3 subsequent siblings)
  4 siblings, 2 replies; 13+ messages in thread
From: Arnd Bergmann @ 2021-11-05 13:03 UTC (permalink / raw)
  To: linux-gpio, Bartosz Golaszewski, Linus Walleij
  Cc: linux-m68k, geert, gerg, linux, linux-arm-kernel, linux-sh,
	dalias, ysato, Arnd Bergmann, Geert Uytterhoeven, linux-kernel

From: Arnd Bergmann <arnd@arndb.de>

The arm and sh versions of this file are identical to the generic
versions and can just be removed.

The drivers that actually use the sh3 specific version also include
cpu/gpio.h directly. This leaves coldfire as the only gpio driver
that needs something custom for gpiolib.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/arm/Kconfig            |  1 -
 arch/arm/include/asm/gpio.h | 22 ------------------
 arch/sh/Kconfig             |  1 -
 arch/sh/include/asm/gpio.h  | 45 -------------------------------------
 4 files changed, 69 deletions(-)
 delete mode 100644 arch/arm/include/asm/gpio.h
 delete mode 100644 arch/sh/include/asm/gpio.h

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 526ae94b1c9a..80378eeee760 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -23,7 +23,6 @@ config ARM
 	select ARCH_HAS_SYNC_DMA_FOR_CPU if SWIOTLB || !MMU
 	select ARCH_HAS_TEARDOWN_DMA_OPS if MMU
 	select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
-	select ARCH_HAVE_CUSTOM_GPIO_H
 	select ARCH_HAVE_NMI_SAFE_CMPXCHG if CPU_V7 || CPU_V7M || CPU_V6K
 	select ARCH_HAS_GCOV_PROFILE_ALL
 	select ARCH_KEEP_MEMBLOCK
diff --git a/arch/arm/include/asm/gpio.h b/arch/arm/include/asm/gpio.h
deleted file mode 100644
index f3bb8a2bf788..000000000000
--- a/arch/arm/include/asm/gpio.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-#ifndef _ARCH_ARM_GPIO_H
-#define _ARCH_ARM_GPIO_H
-
-/* Note: this may rely upon the value of ARCH_NR_GPIOS set in mach/gpio.h */
-#include <asm-generic/gpio.h>
-
-/* The trivial gpiolib dispatchers */
-#define gpio_get_value  __gpio_get_value
-#define gpio_set_value  __gpio_set_value
-#define gpio_cansleep   __gpio_cansleep
-
-/*
- * Provide a default gpio_to_irq() which should satisfy every case.
- * However, some platforms want to do this differently, so allow them
- * to override it.
- */
-#ifndef gpio_to_irq
-#define gpio_to_irq	__gpio_to_irq
-#endif
-
-#endif /* _ARCH_ARM_GPIO_H */
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index 2474a04ceac4..cebd04314d76 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -4,7 +4,6 @@ config SUPERH
 	select ARCH_32BIT_OFF_T
 	select ARCH_ENABLE_MEMORY_HOTPLUG if SPARSEMEM && MMU
 	select ARCH_ENABLE_MEMORY_HOTREMOVE if SPARSEMEM && MMU
-	select ARCH_HAVE_CUSTOM_GPIO_H
 	select ARCH_HAVE_NMI_SAFE_CMPXCHG if (GUSA_RB || CPU_SH4A)
 	select ARCH_HAS_BINFMT_FLAT if !MMU
 	select ARCH_HAS_GIGANTIC_PAGE
diff --git a/arch/sh/include/asm/gpio.h b/arch/sh/include/asm/gpio.h
deleted file mode 100644
index 588c1380e4cb..000000000000
--- a/arch/sh/include/asm/gpio.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0
- *
- *  include/asm-sh/gpio.h
- *
- * Generic GPIO API and pinmux table support for SuperH.
- *
- * Copyright (c) 2008 Magnus Damm
- */
-#ifndef __ASM_SH_GPIO_H
-#define __ASM_SH_GPIO_H
-
-#include <linux/kernel.h>
-#include <linux/errno.h>
-
-#if defined(CONFIG_CPU_SH3)
-#include <cpu/gpio.h>
-#endif
-
-#include <asm-generic/gpio.h>
-
-#ifdef CONFIG_GPIOLIB
-
-static inline int gpio_get_value(unsigned gpio)
-{
-	return __gpio_get_value(gpio);
-}
-
-static inline void gpio_set_value(unsigned gpio, int value)
-{
-	__gpio_set_value(gpio, value);
-}
-
-static inline int gpio_cansleep(unsigned gpio)
-{
-	return __gpio_cansleep(gpio);
-}
-
-static inline int gpio_to_irq(unsigned gpio)
-{
-	return __gpio_to_irq(gpio);
-}
-
-#endif /* CONFIG_GPIOLIB */
-
-#endif /* __ASM_SH_GPIO_H */
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [RFC 3/3] gpiolib: coldfire: remove custom asm/gpio.h
  2021-11-05 13:03 [RFC 1/3] gpiolib: remove irq_to_gpio() definition Arnd Bergmann
  2021-11-05 13:03 ` [RFC 2/3] gpiolib: remove empty asm/gpio.h files Arnd Bergmann
@ 2021-11-05 13:03 ` Arnd Bergmann
  2021-11-08  8:24   ` Geert Uytterhoeven
  2021-11-09 20:07   ` Linus Walleij
  2021-11-05 13:23 ` [RFC 1/3] gpiolib: remove irq_to_gpio() definition Andy Shevchenko
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 13+ messages in thread
From: Arnd Bergmann @ 2021-11-05 13:03 UTC (permalink / raw)
  To: linux-gpio, Bartosz Golaszewski, Linus Walleij
  Cc: linux-m68k, geert, gerg, linux, linux-arm-kernel, linux-sh,
	dalias, ysato, Arnd Bergmann, linux-kernel

From: Arnd Bergmann <arnd@arndb.de>

Now that coldfire is the only user of a custom asm/gpio.h, it seems
better to remove this as well, and have the same interface everywhere.

For the gpio_get_value()/gpio_set_value()/gpio_to_irq(), gpio_cansleep()
functions, the custom version is only a micro-optimization to inline the
function for constant GPIO numbers. However, in the coldfire defconfigs,
I was unable to find a single instance where this micro-optimization
was even used, so to my best knowledge removing this has no downsides.

The custom gpio_request_one() function is even less useful, as it is
guarded by an #ifdef that is never true.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 arch/m68k/Kconfig.cpu        |  1 -
 arch/m68k/include/asm/gpio.h | 95 ------------------------------------
 drivers/gpio/Kconfig         |  8 ---
 include/linux/gpio.h         |  7 ---
 4 files changed, 111 deletions(-)
 delete mode 100644 arch/m68k/include/asm/gpio.h

diff --git a/arch/m68k/Kconfig.cpu b/arch/m68k/Kconfig.cpu
index 0d00ef5117dc..8256ff6b5b87 100644
--- a/arch/m68k/Kconfig.cpu
+++ b/arch/m68k/Kconfig.cpu
@@ -24,7 +24,6 @@ config M68KCLASSIC
 
 config COLDFIRE
 	bool "Coldfire CPU family support"
-	select ARCH_HAVE_CUSTOM_GPIO_H
 	select CPU_HAS_NO_BITFIELDS
 	select CPU_HAS_NO_CAS
 	select CPU_HAS_NO_MULDIV64
diff --git a/arch/m68k/include/asm/gpio.h b/arch/m68k/include/asm/gpio.h
deleted file mode 100644
index 5cfc0996ba94..000000000000
--- a/arch/m68k/include/asm/gpio.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-/*
- * Coldfire generic GPIO support
- *
- * (C) Copyright 2009, Steven King <sfking@fdwdc.com>
-*/
-
-#ifndef coldfire_gpio_h
-#define coldfire_gpio_h
-
-#include <linux/io.h>
-#include <asm/coldfire.h>
-#include <asm/mcfsim.h>
-#include <asm/mcfgpio.h>
-/*
- * The Generic GPIO functions
- *
- * If the gpio is a compile time constant and is one of the Coldfire gpios,
- * use the inline version, otherwise dispatch thru gpiolib.
- */
-
-static inline int gpio_get_value(unsigned gpio)
-{
-	if (__builtin_constant_p(gpio) && gpio < MCFGPIO_PIN_MAX)
-		return mcfgpio_read(__mcfgpio_ppdr(gpio)) & mcfgpio_bit(gpio);
-	else
-		return __gpio_get_value(gpio);
-}
-
-static inline void gpio_set_value(unsigned gpio, int value)
-{
-	if (__builtin_constant_p(gpio) && gpio < MCFGPIO_PIN_MAX) {
-		if (gpio < MCFGPIO_SCR_START) {
-			unsigned long flags;
-			MCFGPIO_PORTTYPE data;
-
-			local_irq_save(flags);
-			data = mcfgpio_read(__mcfgpio_podr(gpio));
-			if (value)
-				data |= mcfgpio_bit(gpio);
-			else
-				data &= ~mcfgpio_bit(gpio);
-			mcfgpio_write(data, __mcfgpio_podr(gpio));
-			local_irq_restore(flags);
-		} else {
-			if (value)
-				mcfgpio_write(mcfgpio_bit(gpio),
-						MCFGPIO_SETR_PORT(gpio));
-			else
-				mcfgpio_write(~mcfgpio_bit(gpio),
-						MCFGPIO_CLRR_PORT(gpio));
-		}
-	} else
-		__gpio_set_value(gpio, value);
-}
-
-static inline int gpio_to_irq(unsigned gpio)
-{
-#if defined(MCFGPIO_IRQ_MIN)
-	if ((gpio >= MCFGPIO_IRQ_MIN) && (gpio < MCFGPIO_IRQ_MAX))
-#else
-	if (gpio < MCFGPIO_IRQ_MAX)
-#endif
-		return gpio + MCFGPIO_IRQ_VECBASE;
-	else
-		return __gpio_to_irq(gpio);
-}
-
-static inline int gpio_cansleep(unsigned gpio)
-{
-	return gpio < MCFGPIO_PIN_MAX ? 0 : __gpio_cansleep(gpio);
-}
-
-#ifndef CONFIG_GPIOLIB
-static inline int gpio_request_one(unsigned gpio, unsigned long flags, const char *label)
-{
-	int err;
-
-	err = gpio_request(gpio, label);
-	if (err)
-		return err;
-
-	if (flags & GPIOF_DIR_IN)
-		err = gpio_direction_input(gpio);
-	else
-		err = gpio_direction_output(gpio,
-			(flags & GPIOF_INIT_HIGH) ? 1 : 0);
-
-	if (err)
-		gpio_free(gpio);
-
-	return err;
-}
-#endif /* !CONFIG_GPIOLIB */
-#endif
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index 9ef5d3fdd405..5b233e69a98f 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -3,14 +3,6 @@
 # GPIO infrastructure and drivers
 #
 
-config ARCH_HAVE_CUSTOM_GPIO_H
-	bool
-	help
-	  Selecting this config option from the architecture Kconfig allows
-	  the architecture to provide a custom asm/gpio.h implementation
-	  overriding the default implementations.  New uses of this are
-	  strongly discouraged.
-
 menuconfig GPIOLIB
 	bool "GPIO Support"
 	help
diff --git a/include/linux/gpio.h b/include/linux/gpio.h
index d8d7daa7eb94..7e6b1b8277ca 100644
--- a/include/linux/gpio.h
+++ b/include/linux/gpio.h
@@ -54,11 +54,6 @@ struct gpio {
 };
 
 #ifdef CONFIG_GPIOLIB
-
-#ifdef CONFIG_ARCH_HAVE_CUSTOM_GPIO_H
-#include <asm/gpio.h>
-#else
-
 #include <asm-generic/gpio.h>
 
 static inline int gpio_get_value(unsigned int gpio)
@@ -81,8 +76,6 @@ static inline int gpio_to_irq(unsigned int gpio)
 	return __gpio_to_irq(gpio);
 }
 
-#endif /* ! CONFIG_ARCH_HAVE_CUSTOM_GPIO_H */
-
 /* CONFIG_GPIOLIB: bindings for managed devices that want to request gpios */
 
 struct device;
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [RFC 1/3] gpiolib: remove irq_to_gpio() definition
  2021-11-05 13:03 [RFC 1/3] gpiolib: remove irq_to_gpio() definition Arnd Bergmann
  2021-11-05 13:03 ` [RFC 2/3] gpiolib: remove empty asm/gpio.h files Arnd Bergmann
  2021-11-05 13:03 ` [RFC 3/3] gpiolib: coldfire: remove custom asm/gpio.h Arnd Bergmann
@ 2021-11-05 13:23 ` Andy Shevchenko
  2021-11-05 13:24   ` Andy Shevchenko
  2021-11-08  7:51 ` Geert Uytterhoeven
  2021-11-09 11:49 ` Linus Walleij
  4 siblings, 1 reply; 13+ messages in thread
From: Andy Shevchenko @ 2021-11-05 13:23 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linux-gpio, Bartosz Golaszewski, Linus Walleij, linux-m68k,
	geert, gerg, linux, linux-arm-kernel, linux-sh, dalias, ysato,
	Arnd Bergmann, Fu Wei, Alex Shi, Hu Haowen, linux-doc-tw-discuss,
	Jonathan Corbet, Drew Fustini, linux-doc, linux-kernel

On Fri, Nov 05, 2021 at 02:03:03PM +0100, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> All implementations other than coldfire have returned an error since
> the avr32 and blackfin architectures got removed, and the last user in
> driver code was removed in 2016, so just remove this old interface.
> 
> The only reference is now in the Chinese documentation, which should be
> changed to remove this reference as well.

FWIW,
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

Thanks, Arnd, for cleaning this up!

> Cc: Fu Wei <tekkamanninja@gmail.com>
> Cc: Alex Shi <alexs@kernel.org>
> Cc: Hu Haowen <src.res@email.cn>
> Cc: linux-doc-tw-discuss@lists.sourceforge.net
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  Documentation/driver-api/gpio/legacy.rst | 20 +++++---------------
>  arch/m68k/include/asm/gpio.h             |  7 -------
>  arch/sh/include/asm/gpio.h               |  5 -----
>  include/linux/gpio.h                     | 12 ------------
>  4 files changed, 5 insertions(+), 39 deletions(-)
> 
> diff --git a/Documentation/driver-api/gpio/legacy.rst b/Documentation/driver-api/gpio/legacy.rst
> index 9b12eeb89170..06c05e2d62c1 100644
> --- a/Documentation/driver-api/gpio/legacy.rst
> +++ b/Documentation/driver-api/gpio/legacy.rst
> @@ -382,22 +382,18 @@ GPIOs mapped to IRQs
>  --------------------
>  GPIO numbers are unsigned integers; so are IRQ numbers.  These make up
>  two logically distinct namespaces (GPIO 0 need not use IRQ 0).  You can
> -map between them using calls like::
> +map between them using::
>  
>  	/* map GPIO numbers to IRQ numbers */
>  	int gpio_to_irq(unsigned gpio);
>  
> -	/* map IRQ numbers to GPIO numbers (avoid using this) */
> -	int irq_to_gpio(unsigned irq);
> -
> -Those return either the corresponding number in the other namespace, or
> +This returns an irq number corresponding to the gpio number, or
>  else a negative errno code if the mapping can't be done.  (For example,
>  some GPIOs can't be used as IRQs.)  It is an unchecked error to use a GPIO
> -number that wasn't set up as an input using gpio_direction_input(), or
> -to use an IRQ number that didn't originally come from gpio_to_irq().
> +number that wasn't set up as an input using gpio_direction_input().
>  
> -These two mapping calls are expected to cost on the order of a single
> -addition or subtraction.  They're not allowed to sleep.
> +The mapping call is expected to cost on the order of a single
> +addition or subtraction.  It is not allowed to sleep.
>  
>  Non-error values returned from gpio_to_irq() can be passed to request_irq()
>  or free_irq().  They will often be stored into IRQ resources for platform
> @@ -405,12 +401,6 @@ devices, by the board-specific initialization code.  Note that IRQ trigger
>  options are part of the IRQ interface, e.g. IRQF_TRIGGER_FALLING, as are
>  system wakeup capabilities.
>  
> -Non-error values returned from irq_to_gpio() would most commonly be used
> -with gpio_get_value(), for example to initialize or update driver state
> -when the IRQ is edge-triggered.  Note that some platforms don't support
> -this reverse mapping, so you should avoid using it.
> -
> -
>  Emulating Open Drain Signals
>  ----------------------------
>  Sometimes shared signals need to use "open drain" signaling, where only the
> diff --git a/arch/m68k/include/asm/gpio.h b/arch/m68k/include/asm/gpio.h
> index a50b27719a58..5cfc0996ba94 100644
> --- a/arch/m68k/include/asm/gpio.h
> +++ b/arch/m68k/include/asm/gpio.h
> @@ -66,13 +66,6 @@ static inline int gpio_to_irq(unsigned gpio)
>  		return __gpio_to_irq(gpio);
>  }
>  
> -static inline int irq_to_gpio(unsigned irq)
> -{
> -	return (irq >= MCFGPIO_IRQ_VECBASE &&
> -		irq < (MCFGPIO_IRQ_VECBASE + MCFGPIO_IRQ_MAX)) ?
> -		irq - MCFGPIO_IRQ_VECBASE : -ENXIO;
> -}
> -
>  static inline int gpio_cansleep(unsigned gpio)
>  {
>  	return gpio < MCFGPIO_PIN_MAX ? 0 : __gpio_cansleep(gpio);
> diff --git a/arch/sh/include/asm/gpio.h b/arch/sh/include/asm/gpio.h
> index d643250f0a0f..588c1380e4cb 100644
> --- a/arch/sh/include/asm/gpio.h
> +++ b/arch/sh/include/asm/gpio.h
> @@ -40,11 +40,6 @@ static inline int gpio_to_irq(unsigned gpio)
>  	return __gpio_to_irq(gpio);
>  }
>  
> -static inline int irq_to_gpio(unsigned int irq)
> -{
> -	return -ENOSYS;
> -}
> -
>  #endif /* CONFIG_GPIOLIB */
>  
>  #endif /* __ASM_SH_GPIO_H */
> diff --git a/include/linux/gpio.h b/include/linux/gpio.h
> index 008ad3ee56b7..d8d7daa7eb94 100644
> --- a/include/linux/gpio.h
> +++ b/include/linux/gpio.h
> @@ -81,11 +81,6 @@ static inline int gpio_to_irq(unsigned int gpio)
>  	return __gpio_to_irq(gpio);
>  }
>  
> -static inline int irq_to_gpio(unsigned int irq)
> -{
> -	return -EINVAL;
> -}
> -
>  #endif /* ! CONFIG_ARCH_HAVE_CUSTOM_GPIO_H */
>  
>  /* CONFIG_GPIOLIB: bindings for managed devices that want to request gpios */
> @@ -219,13 +214,6 @@ static inline int gpio_to_irq(unsigned gpio)
>  	return -EINVAL;
>  }
>  
> -static inline int irq_to_gpio(unsigned irq)
> -{
> -	/* irq can never have been returned from gpio_to_irq() */
> -	WARN_ON(1);
> -	return -EINVAL;
> -}
> -
>  static inline int devm_gpio_request(struct device *dev, unsigned gpio,
>  				    const char *label)
>  {
> -- 
> 2.29.2
> 

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC 1/3] gpiolib: remove irq_to_gpio() definition
  2021-11-05 13:23 ` [RFC 1/3] gpiolib: remove irq_to_gpio() definition Andy Shevchenko
@ 2021-11-05 13:24   ` Andy Shevchenko
  0 siblings, 0 replies; 13+ messages in thread
From: Andy Shevchenko @ 2021-11-05 13:24 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linux-gpio, Bartosz Golaszewski, Linus Walleij, linux-m68k,
	geert, gerg, linux, linux-arm-kernel, linux-sh, dalias, ysato,
	Arnd Bergmann, Fu Wei, Alex Shi, Hu Haowen, linux-doc-tw-discuss,
	Jonathan Corbet, Drew Fustini, linux-doc, linux-kernel

On Fri, Nov 05, 2021 at 03:23:37PM +0200, Andy Shevchenko wrote:
> On Fri, Nov 05, 2021 at 02:03:03PM +0100, Arnd Bergmann wrote:
> > From: Arnd Bergmann <arnd@arndb.de>
> > 
> > All implementations other than coldfire have returned an error since
> > the avr32 and blackfin architectures got removed, and the last user in
> > driver code was removed in 2016, so just remove this old interface.
> > 
> > The only reference is now in the Chinese documentation, which should be
> > changed to remove this reference as well.
> 
> FWIW,
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>

This is for the entire series.

> Thanks, Arnd, for cleaning this up!

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC 1/3] gpiolib: remove irq_to_gpio() definition
  2021-11-05 13:03 [RFC 1/3] gpiolib: remove irq_to_gpio() definition Arnd Bergmann
                   ` (2 preceding siblings ...)
  2021-11-05 13:23 ` [RFC 1/3] gpiolib: remove irq_to_gpio() definition Andy Shevchenko
@ 2021-11-08  7:51 ` Geert Uytterhoeven
  2021-11-09 11:49 ` Linus Walleij
  4 siblings, 0 replies; 13+ messages in thread
From: Geert Uytterhoeven @ 2021-11-08  7:51 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: open list:GPIO SUBSYSTEM, Bartosz Golaszewski, Linus Walleij,
	linux-m68k, Greg Ungerer, Russell King, Linux ARM, Linux-sh list,
	Rich Felker, Yoshinori Sato, Arnd Bergmann, Fu Wei, Alex Shi,
	Hu Haowen, linux-doc-tw-discuss, Jonathan Corbet, Drew Fustini,
	Andy Shevchenko, open list:DOCUMENTATION,
	Linux Kernel Mailing List

On Fri, Nov 5, 2021 at 2:03 PM Arnd Bergmann <arnd@kernel.org> wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> All implementations other than coldfire have returned an error since
> the avr32 and blackfin architectures got removed, and the last user in
> driver code was removed in 2016, so just remove this old interface.
>
> The only reference is now in the Chinese documentation, which should be
> changed to remove this reference as well.
>
> Cc: Fu Wei <tekkamanninja@gmail.com>
> Cc: Alex Shi <alexs@kernel.org>
> Cc: Hu Haowen <src.res@email.cn>
> Cc: linux-doc-tw-discuss@lists.sourceforge.net
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC 2/3] gpiolib: remove empty asm/gpio.h files
  2021-11-05 13:03 ` [RFC 2/3] gpiolib: remove empty asm/gpio.h files Arnd Bergmann
@ 2021-11-08  8:07   ` Geert Uytterhoeven
  2021-11-09 11:51   ` Linus Walleij
  1 sibling, 0 replies; 13+ messages in thread
From: Geert Uytterhoeven @ 2021-11-08  8:07 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: open list:GPIO SUBSYSTEM, Bartosz Golaszewski, Linus Walleij,
	linux-m68k, Greg Ungerer, Russell King, Linux ARM, Linux-sh list,
	Rich Felker, Yoshinori Sato, Arnd Bergmann, Geert Uytterhoeven,
	Linux Kernel Mailing List

Hi Arnd,

On Fri, Nov 5, 2021 at 2:04 PM Arnd Bergmann <arnd@kernel.org> wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> The arm and sh versions of this file are identical to the generic
> versions and can just be removed.
>
> The drivers that actually use the sh3 specific version also include
> cpu/gpio.h directly. This leaves coldfire as the only gpio driver

All but arch/sh/boards/board-magicpanelr2.c do. So that one needs
a direct inclusion of <cpu/gpio.h>.

> that needs something custom for gpiolib.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

With the above fixed:
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC 3/3] gpiolib: coldfire: remove custom asm/gpio.h
  2021-11-05 13:03 ` [RFC 3/3] gpiolib: coldfire: remove custom asm/gpio.h Arnd Bergmann
@ 2021-11-08  8:24   ` Geert Uytterhoeven
  2021-11-08 14:21     ` Greg Ungerer
  2021-11-09 20:07   ` Linus Walleij
  1 sibling, 1 reply; 13+ messages in thread
From: Geert Uytterhoeven @ 2021-11-08  8:24 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: open list:GPIO SUBSYSTEM, Bartosz Golaszewski, Linus Walleij,
	linux-m68k, Greg Ungerer, Russell King, Linux ARM, Linux-sh list,
	Rich Felker, Yoshinori Sato, Arnd Bergmann,
	Linux Kernel Mailing List

Hi Arnd,

On Fri, Nov 5, 2021 at 2:05 PM Arnd Bergmann <arnd@kernel.org> wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> Now that coldfire is the only user of a custom asm/gpio.h, it seems
> better to remove this as well, and have the same interface everywhere.
>
> For the gpio_get_value()/gpio_set_value()/gpio_to_irq(), gpio_cansleep()
> functions, the custom version is only a micro-optimization to inline the
> function for constant GPIO numbers. However, in the coldfire defconfigs,
> I was unable to find a single instance where this micro-optimization
> was even used, so to my best knowledge removing this has no downsides.

The only user seems to be QSPI chip select handling (not bit-banged
data transfer) in arch/m68k/coldfire/device.c, but that indeed depends
on CONFIG_SPI_COLDFIRE_QSPI, which is not set in any of the defconfigs.
That doesn't mean there were/are no real users, though ;-)

> The custom gpio_request_one() function is even less useful, as it is
> guarded by an #ifdef that is never true.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC 3/3] gpiolib: coldfire: remove custom asm/gpio.h
  2021-11-08  8:24   ` Geert Uytterhoeven
@ 2021-11-08 14:21     ` Greg Ungerer
  0 siblings, 0 replies; 13+ messages in thread
From: Greg Ungerer @ 2021-11-08 14:21 UTC (permalink / raw)
  To: Geert Uytterhoeven, Arnd Bergmann
  Cc: open list:GPIO SUBSYSTEM, Bartosz Golaszewski, Linus Walleij,
	linux-m68k, Russell King, Linux ARM, Linux-sh list, Rich Felker,
	Yoshinori Sato, Arnd Bergmann, Linux Kernel Mailing List

Hi arnd, Geert,

On 8/11/21 6:24 pm, Geert Uytterhoeven wrote:
> Hi Arnd,
> 
> On Fri, Nov 5, 2021 at 2:05 PM Arnd Bergmann <arnd@kernel.org> wrote:
>> From: Arnd Bergmann <arnd@arndb.de>
>>
>> Now that coldfire is the only user of a custom asm/gpio.h, it seems
>> better to remove this as well, and have the same interface everywhere.
>>
>> For the gpio_get_value()/gpio_set_value()/gpio_to_irq(), gpio_cansleep()
>> functions, the custom version is only a micro-optimization to inline the
>> function for constant GPIO numbers. However, in the coldfire defconfigs,
>> I was unable to find a single instance where this micro-optimization
>> was even used, so to my best knowledge removing this has no downsides.
> 
> The only user seems to be QSPI chip select handling (not bit-banged
> data transfer) in arch/m68k/coldfire/device.c, but that indeed depends
> on CONFIG_SPI_COLDFIRE_QSPI, which is not set in any of the defconfigs.
> That doesn't mean there were/are no real users, though ;-)

That is definitely used by some.
But the generalization and removal of the special casing seems like a win to me.


>> The custom gpio_request_one() function is even less useful, as it is
>> guarded by an #ifdef that is never true.
>>
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> 
> Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>

Reviewed-by: Greg Ungerer <gerg@linux-m68k.org>

Regards
Greg



> Gr{oetje,eeting}s,
> 
>                          Geert
> 
> --
> Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
> 
> In personal conversations with technical people, I call myself a hacker. But
> when I'm talking to journalists I just say "programmer" or something like that.
>                                  -- Linus Torvalds
> 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC 1/3] gpiolib: remove irq_to_gpio() definition
  2021-11-05 13:03 [RFC 1/3] gpiolib: remove irq_to_gpio() definition Arnd Bergmann
                   ` (3 preceding siblings ...)
  2021-11-08  7:51 ` Geert Uytterhoeven
@ 2021-11-09 11:49 ` Linus Walleij
  4 siblings, 0 replies; 13+ messages in thread
From: Linus Walleij @ 2021-11-09 11:49 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linux-gpio, Bartosz Golaszewski, linux-m68k, geert, gerg, linux,
	linux-arm-kernel, linux-sh, dalias, ysato, Arnd Bergmann, Fu Wei,
	Alex Shi, Hu Haowen, linux-doc-tw-discuss, Jonathan Corbet,
	Drew Fustini, Andy Shevchenko, linux-doc, linux-kernel

On Fri, Nov 5, 2021 at 2:03 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> All implementations other than coldfire have returned an error since
> the avr32 and blackfin architectures got removed, and the last user in
> driver code was removed in 2016, so just remove this old interface.
>
> The only reference is now in the Chinese documentation, which should be
> changed to remove this reference as well.
>
> Cc: Fu Wei <tekkamanninja@gmail.com>
> Cc: Alex Shi <alexs@kernel.org>
> Cc: Hu Haowen <src.res@email.cn>
> Cc: linux-doc-tw-discuss@lists.sourceforge.net
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Thanks for doing this Arnd. I had it on my mind some years
ago but I think Coldfire or something was still using it and didn't
think about it as the last user disappeared.
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC 2/3] gpiolib: remove empty asm/gpio.h files
  2021-11-05 13:03 ` [RFC 2/3] gpiolib: remove empty asm/gpio.h files Arnd Bergmann
  2021-11-08  8:07   ` Geert Uytterhoeven
@ 2021-11-09 11:51   ` Linus Walleij
  2021-11-09 12:20     ` Arnd Bergmann
  1 sibling, 1 reply; 13+ messages in thread
From: Linus Walleij @ 2021-11-09 11:51 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linux-gpio, Bartosz Golaszewski, linux-m68k, geert, gerg, linux,
	linux-arm-kernel, linux-sh, dalias, ysato, Arnd Bergmann,
	Geert Uytterhoeven, linux-kernel

On Fri, Nov 5, 2021 at 2:04 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> The arm and sh versions of this file are identical to the generic
> versions and can just be removed.
>
> The drivers that actually use the sh3 specific version also include
> cpu/gpio.h directly. This leaves coldfire as the only gpio driver
> that needs something custom for gpiolib.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Excellent!
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

I suggest Bartosz can queue this in the GPIO tree.

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC 2/3] gpiolib: remove empty asm/gpio.h files
  2021-11-09 11:51   ` Linus Walleij
@ 2021-11-09 12:20     ` Arnd Bergmann
  0 siblings, 0 replies; 13+ messages in thread
From: Arnd Bergmann @ 2021-11-09 12:20 UTC (permalink / raw)
  To: Linus Walleij
  Cc: open list:GPIO SUBSYSTEM, Bartosz Golaszewski, linux-m68k,
	Geert Uytterhoeven, Greg Ungerer, Russell King - ARM Linux,
	Linux ARM, Linux-sh list, Rich Felker, Yoshinori Sato,
	Arnd Bergmann, Geert Uytterhoeven, Linux Kernel Mailing List

On Tue, Nov 9, 2021 at 12:51 PM Linus Walleij <linus.walleij@linaro.org> wrote:
>
> On Fri, Nov 5, 2021 at 2:04 PM Arnd Bergmann <arnd@kernel.org> wrote:
>
> > From: Arnd Bergmann <arnd@arndb.de>
> >
> > The arm and sh versions of this file are identical to the generic
> > versions and can just be removed.
> >
> > The drivers that actually use the sh3 specific version also include
> > cpu/gpio.h directly. This leaves coldfire as the only gpio driver
> > that needs something custom for gpiolib.
> >
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>
> Excellent!
> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
>
> I suggest Bartosz can queue this in the GPIO tree.

I just sent v2 with slightly updated changelog texts and additional patches
but without your Reviewed-by:. I suppose I'll have a v3 after the merge window,
let's use that.

      Arnd

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFC 3/3] gpiolib: coldfire: remove custom asm/gpio.h
  2021-11-05 13:03 ` [RFC 3/3] gpiolib: coldfire: remove custom asm/gpio.h Arnd Bergmann
  2021-11-08  8:24   ` Geert Uytterhoeven
@ 2021-11-09 20:07   ` Linus Walleij
  1 sibling, 0 replies; 13+ messages in thread
From: Linus Walleij @ 2021-11-09 20:07 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: linux-gpio, Bartosz Golaszewski, linux-m68k, geert, gerg, linux,
	linux-arm-kernel, linux-sh, dalias, ysato, Arnd Bergmann,
	linux-kernel

On Fri, Nov 5, 2021 at 2:05 PM Arnd Bergmann <arnd@kernel.org> wrote:

> From: Arnd Bergmann <arnd@arndb.de>
>
> Now that coldfire is the only user of a custom asm/gpio.h, it seems
> better to remove this as well, and have the same interface everywhere.
>
> For the gpio_get_value()/gpio_set_value()/gpio_to_irq(), gpio_cansleep()
> functions, the custom version is only a micro-optimization to inline the
> function for constant GPIO numbers. However, in the coldfire defconfigs,
> I was unable to find a single instance where this micro-optimization
> was even used, so to my best knowledge removing this has no downsides.
>
> The custom gpio_request_one() function is even less useful, as it is
> guarded by an #ifdef that is never true.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2021-11-09 20:07 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-05 13:03 [RFC 1/3] gpiolib: remove irq_to_gpio() definition Arnd Bergmann
2021-11-05 13:03 ` [RFC 2/3] gpiolib: remove empty asm/gpio.h files Arnd Bergmann
2021-11-08  8:07   ` Geert Uytterhoeven
2021-11-09 11:51   ` Linus Walleij
2021-11-09 12:20     ` Arnd Bergmann
2021-11-05 13:03 ` [RFC 3/3] gpiolib: coldfire: remove custom asm/gpio.h Arnd Bergmann
2021-11-08  8:24   ` Geert Uytterhoeven
2021-11-08 14:21     ` Greg Ungerer
2021-11-09 20:07   ` Linus Walleij
2021-11-05 13:23 ` [RFC 1/3] gpiolib: remove irq_to_gpio() definition Andy Shevchenko
2021-11-05 13:24   ` Andy Shevchenko
2021-11-08  7:51 ` Geert Uytterhoeven
2021-11-09 11:49 ` Linus Walleij

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).