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.