Hi Linus,

> El 2 mar 2021, a las 23:39, Linus Walleij <[email protected]> escribió:
> 
> On Tue, Mar 2, 2021 at 7:14 PM Álvaro Fernández Rojas <[email protected]> 
> 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.

Reply via email to