[PATCH v4 00/12] Add pinctrl support for the AAEON UP board FPGA

Thomas Richard posted 12 patches 9 months, 2 weeks ago
There is a newer version of this series
drivers/gpio/gpio-aggregator.c    |  344 +++++++++---
drivers/gpio/gpiolib.c            |   29 +-
drivers/pinctrl/Kconfig           |   19 +
drivers/pinctrl/Makefile          |    1 +
drivers/pinctrl/core.c            |   27 +
drivers/pinctrl/pinctrl-upboard.c | 1068 +++++++++++++++++++++++++++++++++++++
include/linux/gpio/driver.h       |   51 +-
include/linux/gpio/forwarder.h    |   51 ++
include/linux/pinctrl/machine.h   |   20 +-
include/linux/string_choices.h    |    6 +
10 files changed, 1538 insertions(+), 78 deletions(-)
[PATCH v4 00/12] Add pinctrl support for the AAEON UP board FPGA
Posted by Thomas Richard 9 months, 2 weeks ago
This is the fourth version of this series.

The main change is the way the forwarder type is exported, now gpiochip_fwd
is an opaque structure.
In the forwarder, a valid_mask was added to track registered GPIO
descriptors, and it is now possible to remove a GPIO at runtime using the new
gpio_fwd_gpio_free() helper.

Two new patches were added, the first one to remove extern specifier in
machine.h, the second one to define new helpers str_input_output() and
str_output_input().

Other minor changes address Andy's comments, see below for more details in the
changelog.

Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
---
Changes in v4:
- gpiolib: use positive conditonal in gpiochip_add_pin_range_with_pins().
- pinctrl: fix warning reported by kernel robot in
  include/linux/pinctrl/machine.h.
- pinctrl: add a patch to remove the extern specifier in machine.h.
- pinctrl: use devm_add_action_or_reset() in
  devm_pinctrl_register_mappings().
- string_choices: add a patch to define str_input_output() and
  str_output_input() helpers.
- gpio: aggregator: set gpiochip_fwd as opaque and define getters
  gpio_fwd_get_gpiochip() and gpio_fwd_get_data().
- gpio: aggregator: add valid_mask in gpiochip_fwd struct to track already
  registered gpio descs.
- gpio: aggregator: add gpio_fwd_gpio_free() helper.
- gpio: aggregator: add kdoc sections for exported functions.
- gpio: aggregator: fix some nitpicks.
- pinctrl-upboard: use str_input_output() helper.
- pinctrl-upboard: fix some nitpicks.
- pinctrl-upboard: add missing headers stddef.h and types.h.
- pinctrl-upboard: add intermediate cast (unsigned long) for dmi_id->driver_data.
- pinctrl-upboard: use getter gpio_fwd_get_gpiochip() and
  gpio_fwd_get_data().
- pinctrl-upboard: fix kernel robot warning 'unmet direct dependencies detected
  for GPIO_AGGREGATOR when selected by PINCTRL_UPBOARD'.
- pinctrl-upboard: use gpio_fwd_gpio_free() helper.
- Link to v3: https://lore.kernel.org/r/20250416-aaeon-up-board-pinctrl-support-v3-0-f40776bd06ee@bootlin.com

Changes in v3:
- pinctrl: add devm_pinctrl_register_mappings()
- gpiolib: rename gpiochip_add_pin_range() to
  gpiochip_add_pin_range_with_pins() and add pins parameter
- gpiolib: add stubs gpiochip_add_pin_range() and 
  gpiochip_add_sparse_pin_range()
- aggregator: split to more simpler patches
- aggregator: add a namespace for the forwarder library
- aggregator: rename header file to forwarder.h
- aggregator: add some missing headers and declaration in forwarder.h
- aggregator: forwarder.h provides consumer.h and driver.h
- aggregator: fix error code returned by gpio_fwd_request()
- pinctrl-upboard: fix order of header files
- pinctrl-upboard: fix some nitpicks
- pinctrl-upboard: rework macros to define pin groups
- pinctrl-upboard: add missing container_of.h and err.h header files
- pinctrl-upboard: handle correctly pointer returned by dmi_first_match()
- pinctrl-upboard: use devm_pinctrl_register_mappings()
- pinctrl-upboard: import GPIO_FORWARDER namespace
- Link to v2: https://lore.kernel.org/r/20250317-aaeon-up-board-pinctrl-support-v2-0-36126e30aa62@bootlin.com

Changes in v2:
- mfd: removed driver (already merged)
- led: removed driver (already merged)
- gpio-aggregator: refactor code to create a gpio-fwd library
- pinctrl: refactor gpio part to use the gpio-fwd library
- pinctrl: add pinctrl mappings for each board

---
Thomas Richard (12):
      gpiolib: add support to register sparse pin range
      pinctrl: remove extern specifier for functions in machine.h
      pinctrl: core: add devm_pinctrl_register_mappings()
      gpio: aggregator: move GPIO forwarder allocation in a dedicated function
      gpio: aggregator: refactor the code to add GPIO desc in the forwarder
      gpio: aggregator: refactor the forwarder registration part
      gpio: aggregator: update gpiochip_fwd_setup_delay_line() parameters
      gpio: aggregator: export symbols of the GPIO forwarder library
      gpio: aggregator: handle runtime registration of gpio_desc in gpiochip_fwd
      gpio: aggregator: add possibility to attach data to the forwarder
      lib/string_choices: Add str_input_output() helper
      pinctrl: Add pin controller driver for AAEON UP boards

 drivers/gpio/gpio-aggregator.c    |  344 +++++++++---
 drivers/gpio/gpiolib.c            |   29 +-
 drivers/pinctrl/Kconfig           |   19 +
 drivers/pinctrl/Makefile          |    1 +
 drivers/pinctrl/core.c            |   27 +
 drivers/pinctrl/pinctrl-upboard.c | 1068 +++++++++++++++++++++++++++++++++++++
 include/linux/gpio/driver.h       |   51 +-
 include/linux/gpio/forwarder.h    |   51 ++
 include/linux/pinctrl/machine.h   |   20 +-
 include/linux/string_choices.h    |    6 +
 10 files changed, 1538 insertions(+), 78 deletions(-)
---
base-commit: 8a834b0ac9ceb354a6e0b8cf5b363edca8221bdd
change-id: 20240930-aaeon-up-board-pinctrl-support-98fa4a030490

Best regards,
-- 
Thomas Richard <thomas.richard@bootlin.com>
Re: [PATCH v4 00/12] Add pinctrl support for the AAEON UP board FPGA
Posted by Bartosz Golaszewski 9 months, 2 weeks ago
On Tue, Apr 29, 2025 at 4:08 PM Thomas Richard
<thomas.richard@bootlin.com> wrote:
>
> This is the fourth version of this series.
>
> The main change is the way the forwarder type is exported, now gpiochip_fwd
> is an opaque structure.
> In the forwarder, a valid_mask was added to track registered GPIO
> descriptors, and it is now possible to remove a GPIO at runtime using the new
> gpio_fwd_gpio_free() helper.
>
> Two new patches were added, the first one to remove extern specifier in
> machine.h, the second one to define new helpers str_input_output() and
> str_output_input().
>
> Other minor changes address Andy's comments, see below for more details in the
> changelog.
>
> Signed-off-by: Thomas Richard <thomas.richard@bootlin.com>
> ---

This looks pretty good now. Who should take it - Linus or I?

Bartosz
Re: [PATCH v4 00/12] Add pinctrl support for the AAEON UP board FPGA
Posted by Andy Shevchenko 9 months, 2 weeks ago
On Tue, Apr 29, 2025 at 9:43 PM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
> On Tue, Apr 29, 2025 at 4:08 PM Thomas Richard
> <thomas.richard@bootlin.com> wrote:

...

> This looks pretty good now. Who should take it - Linus or I?

I agree, but it still has a few issues that need to be corrected.
I believe the next version will be final.

-- 
With Best Regards,
Andy Shevchenko
Re: [PATCH v4 00/12] Add pinctrl support for the AAEON UP board FPGA
Posted by Bartosz Golaszewski 9 months, 2 weeks ago
On Tue, Apr 29, 2025 at 10:30 PM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>
> On Tue, Apr 29, 2025 at 9:43 PM Bartosz Golaszewski <brgl@bgdev.pl> wrote:
> > On Tue, Apr 29, 2025 at 4:08 PM Thomas Richard
> > <thomas.richard@bootlin.com> wrote:
>
> ...
>
> > This looks pretty good now. Who should take it - Linus or I?
>
> I agree, but it still has a few issues that need to be corrected.
> I believe the next version will be final.
>

No worries, I'm just thinking ahead.

Bart