Re: [PATCH] gpio: regmap: move struct gpio_regmap definition

From: Álvaro Fernández Rojas
Date: Wed Mar 03 2021 - 07:25:09 EST


Hi Linus,

> El 2 mar 2021, a las 23:39, Linus Walleij <linus.walleij@xxxxxxxxxx> escribió:
>
> On Tue, Mar 2, 2021 at 7:14 PM Álvaro Fernández Rojas <noltari@xxxxxxxxx> wrote:
>
>> I'm trying to add support for bcm63xx pin controllers, and Linus
>> suggested that I could use gpio regmap instead of adding duplicated code.
>> However, I need to access gpio_chip inside gpio_regmap to call
>> pinctrl_add_gpio_range() with gpio_chip.base.
>
> Can't you just put the ranges in the device tree using the standard
> property gpio-ranges?

Ok, I’ll use that on v3 :).

So I guess that I should also call gpio_direction_input() and gpio_direction_output() directly to replace gpio_chip->direction_input() and gpio_chip->direction_output() for the two drivers that need it (BCM6358 and BCM6368).

>
> These will be added automatically after the chip is added.
>
> It is documented in
> Documentation/devicetree/bindings/gpio/gpio.txt
> a bit down the file.

Thanks for the link :)

>
> The code is in of_gpiochip_add_pin_range() in gpiolib-of.c
> called from of_gpiochip_add() which is always called
> when gpiochip_add_data_with_key(), the main gpiochip
> registering function is called.
>
> This would just do the work for you with no effort in the driver.
>
> It is a bit counterintuitive that this can be done in the device
> tree but the hierarchical IRQs cannot do the same clever
> manouver to map IRQs, sorry.
>
> Yours,
> Linus Walleij

Best regards,
Álvaro.