lkml.org 
[lkml]   [2023]   [Jan]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/8] gpiolib: coldfire: remove custom asm/gpio.h
    Date
    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, and according to Geert the only user appears to be the
    QSPI chip that is disabled everywhere.

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

    Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    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 9380f6e3bb66..96a0fb4f1af5 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 218d7e4c27ff..06a268d56800 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 85beb236c925..2b75017b3aad 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.39.0
    \
     
     \ /
      Last update: 2023-03-26 23:56    [W:4.553 / U:0.164 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site