Re: [PATCH] gpio: Get rid of gpio_to_chip()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jan 20, 2023 at 10:38 AM Linus Walleij <linus.walleij@xxxxxxxxxx> wrote:
>
> The gpio_to_chip() function refers to the global GPIO numberspace
> which is a problem we want to get rid of. Get this function out
> of the header and open code it into gpiolib with appropriate FIXME
> notices so no new users appear in the kernel.
>
> Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
> ---
>  drivers/pinctrl/core.c     | 14 ++++++++++++--
>  include/asm-generic/gpio.h |  6 ------
>  2 files changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c
> index 41fd84738707..d6e6c751255f 100644
> --- a/drivers/pinctrl/core.c
> +++ b/drivers/pinctrl/core.c
> @@ -325,7 +325,12 @@ static bool pinctrl_ready_for_gpio_range(unsigned gpio)
>  {
>         struct pinctrl_dev *pctldev;
>         struct pinctrl_gpio_range *range = NULL;
> -       struct gpio_chip *chip = gpio_to_chip(gpio);
> +       /*
> +        * FIXME: "gpio" here is a number in the global GPIO numberspace.
> +        * get rid of this from the ranges eventually and get the GPIO
> +        * descriptor from the gpio_chip.
> +        */
> +       struct gpio_chip *chip = gpiod_to_chip(gpio_to_desc(gpio));
>
>         if (WARN(!chip, "no gpio_chip for gpio%i?", gpio))
>                 return false;
> @@ -1657,7 +1662,12 @@ static int pinctrl_pins_show(struct seq_file *s, void *what)
>                         }
>                 }
>                 if (gpio_num >= 0)
> -                       chip = gpio_to_chip(gpio_num);
> +                       /*
> +                        * FIXME: gpio_num comes from the global GPIO numberspace.
> +                        * we need to get rid of the range->base eventually and
> +                        * get the descriptor directly from the gpio_chip.
> +                        */
> +                       chip = gpiod_to_chip(gpio_to_desc(gpio_num));
>                 else
>                         chip = NULL;
>                 if (chip)
> diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h
> index a7752cf152ce..21437fc96835 100644
> --- a/include/asm-generic/gpio.h
> +++ b/include/asm-generic/gpio.h
> @@ -31,12 +31,6 @@ struct module;
>  struct device_node;
>  struct gpio_desc;
>
> -/* caller holds gpio_lock *OR* gpio is marked as requested */
> -static inline struct gpio_chip *gpio_to_chip(unsigned gpio)
> -{
> -       return gpiod_to_chip(gpio_to_desc(gpio));
> -}
> -
>  /* Always use the library code for GPIO management calls,
>   * or when sleeping may be involved.
>   */
> --
> 2.34.1
>

Yes please! Applied, thanks!

Bart



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux