Re: [PATCH v4 0/3] gpio: gpio-regmap: Support few custom operations

From: Andy Shevchenko
Date: Wed May 26 2021 - 04:42:35 EST


On Wed, May 26, 2021 at 9:02 AM Matti Vaittinen
<matti.vaittinen@xxxxxxxxxxxxxxxxx> wrote:
>
> Support providing some IC specific operations at gpio_regmap registration.
>
> Implementation of few GPIO related functionalities are likely to be
> very IC specific. For example the pin-configuration registers and the
> pin validity checks. Allow IC driver to provide IC specific functions
> which gpio-regmap can utilize for these IC specific configurations.
> This should help broaden the gpio-regmap IC coverage without the need
> of exposing the registered gpio_chip or struct gpio_regmap to IC drivers.
>
> The set_config and init_valid_mask are used by ROHM BD71815 GPIO driver.
> Convert the BD71815 GPIO driver to use gpio-regmap and get rid of some
> code. Rest of the ROHM GPIO drivers are to be reworked after the
> mechanism of adding IC specific functions is settled.
>
> Some preliminary discussion can be seen here:
> https://lore.kernel.org/linux-gpio/c4faac648d3e0c7f3dcb50f7e24c8b322e8c6974.camel@xxxxxxxxxxxxxxxxx/
>
> I did also prepare change where the getters for drvdata and regmap
> are used. It can also work - but it does not scale quite as well
> if (when) IC drivers need some register information to do custom
> operations. Interested people can see the:
> https://github.com/M-Vaittinen/linux/commits/gpio-regmap-getters
> for comparison.

Entire series looks good to me,
Reviewed-by: Andy Shevchenko <andy.shevchenko@xxxxxxxxx>

> Changelog v4:
> - Convert also the existing users.
>
> Changelog v3:
> - divide gpio_regmap into private part and part which contains
> user-visible configurations. This should allow keeping the internal
> data internal to gpio_regmap - while allowing the IC driver to re-use
> configurations it has provided to gpio-regmap without a need of
> storing them to private-data. Furthermore avoid implementing dummy
> 'getter-functions' for regmap, driver-data, register details,
> firmware node etc.
> - change devm_add_action() to devm_add_action_or_reset()
> - the bd71815 GPIO driver, completely drop private-data.
>
> Changelog v2:
> - Add cover-letter
> - Drop unnecessary checks for callback function validity
> - drop driver_data setting function as it is likely to be a
> race-condition-by-design
>
> ---
>
> Matti Vaittinen (3):
> gpio: regmap: Support few IC specific operations
> gpio: gpio-regmap: Use devm_add_action_or_reset()
> gpio: bd71815: Use gpio-regmap
>
> drivers/gpio/Kconfig | 1 +
> drivers/gpio/gpio-bd71815.c | 121 ++++-----------
> drivers/gpio/gpio-regmap.c | 212 +++++++++++++++-----------
> drivers/gpio/gpio-sl28cpld.c | 3 +-
> drivers/pinctrl/bcm/pinctrl-bcm63xx.c | 8 +-
> include/linux/gpio/regmap.h | 51 +++++--
> 6 files changed, 194 insertions(+), 202 deletions(-)
>
>
> base-commit: c4681547bcce777daf576925a966ffa824edd09d
> --
> 2.25.4
>
>
> --
> Matti Vaittinen, Linux device drivers
> ROHM Semiconductors, Finland SWDC
> Kiviharjunlenkki 1E
> 90220 OULU
> FINLAND
>
> ~~~ "I don't think so," said Rene Descartes. Just then he vanished ~~~
> Simon says - in Latin please.
> ~~~ "non cogito me" dixit Rene Descarte, deinde evanescavit ~~~
> Thanks to Simon Glass for the translation =]



--
With Best Regards,
Andy Shevchenko