Message ID | 20211105130338.241100-1-arnd@kernel.org |
---|---|
State | New |
Headers | show |
Series | [RFC,1/3] gpiolib: remove irq_to_gpio() definition | expand |
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 >
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!
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
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 --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) {