diff mbox series

[RFC,1/3] gpiolib: remove irq_to_gpio() definition

Message ID 20211105130338.241100-1-arnd@kernel.org
State New
Headers show
Series [RFC,1/3] gpiolib: remove irq_to_gpio() definition | expand

Commit Message

Arnd Bergmann Nov. 5, 2021, 1:03 p.m. UTC
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(-)

Comments

Andy Shevchenko Nov. 5, 2021, 1:23 p.m. UTC | #1
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
>
Andy Shevchenko Nov. 5, 2021, 1:24 p.m. UTC | #2
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!
Geert Uytterhoeven Nov. 8, 2021, 7:51 a.m. UTC | #3
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
Linus Walleij Nov. 9, 2021, 11:49 a.m. UTC | #4
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
diff mbox series

Patch

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