All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michael Walle <michael@walle.cc>
To: matti.vaittinen@fi.rohmeurope.com
Cc: "Andy Shevchenko" <andy.shevchenko@gmail.com>,
	"Linus Walleij" <linus.walleij@linaro.org>,
	"Bartosz Golaszewski" <bgolaszewski@baylibre.com>,
	"GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>,
	"Álvaro Fernández Rojas" <noltari@gmail.com>
Subject: Re: regmap-gpio: Support set_config and other not quite so standard ICs?
Date: Fri, 14 May 2021 22:34:13 +0200	[thread overview]
Message-ID: <5ddf313b915da284211fc961971ced37@walle.cc> (raw)
In-Reply-To: <3a8c418bc40a736f44ab19a549a58d6bdecc59be.camel@fi.rohmeurope.com>

Am 2021-05-11 05:59, schrieb Matti Vaittinen:
> Morning Andy,
> 
> On Mon, 2021-05-10 at 19:54 +0300, Andy Shevchenko wrote:
>> On Mon, May 10, 2021 at 4:41 PM Matti Vaittinen
>> <matti.vaittinen@fi.rohmeurope.com> wrote:
>> > Hi Linus, All,
>> >
>> > On Thu, 2021-03-25 at 12:32 +0200, Matti Vaittinen wrote:
>> > > On Thu, 2021-03-25 at 10:35 +0100, Linus Walleij wrote:
>> >
>> > snip
>> >
>> > > > It could potentially (like the other Rohm GPIO MFD PMIC
>> > > > drivers)
>> > > > make some use of the gpio regmap library, but we have some
>> > > > pending changes for that so look into it after the next merge
>> > > > window.
>> > > >
>> > > > I.e. for your TODO: look at the GPIO_REGMAP helper.
>> > >
>> > > I just took a quick peek at gpio_regmap and it looks pretty good
>> > > to
>> > > me!
>> > >
>> > > Any particular reason why gpio_regmap is not just part of
>> > > gpio_chip?
>> > > I
>> > > guess providing the 'gpio_regmap_direction_*()',
>> > > 'gpio_regmap_get()',
>> > > 'gpio_regmap_set()' as exported helpers and leaving calling the
>> > > (devm_)gpiochip_add_data() to IC driver would have allowed more
>> > > flexibility. Drivers could then use the gpio_regamap features
>> > > which
>> > > fit
>> > > the IC (by providing pointers to helper functions in gpio_chip) -
>> > > and
>> > > handle potential oddball-features by using pointers to some
>> > > customized
>> > > functions in gpio_chip.
>> >
>> > So, v5.13-rc1 is out. I started wondering the gpio_regamap - and
>> > same
>> > question persists. Why hiding the gpio_chip from gpio_regmap users?
>> 
>> In general to me this sounds like opening a window for
>> non-controllable changes vs. controllable. Besides that, struct
>> gpio_chip has more than a few callbacks. On top of that, opening this
>> wide window means you won't be able to stop or refactoring become a
>> burden. I would be on the stricter side here.

I tend to agree with Andy. Keep in mind that gpio-regmap was intended
to catch all the simple and similar controllers.

That being said, I'd still like to see new users. I've had a look
at existing drivers myself some time ago and determined that there
are quirks here and there which prevent porting that driver to
gpio-regmap, see for example gpio-mpc8xxx.c, there is a workaround
for some specific SoC which caches some values in the driver.

If we make this gpio-regmap more like a library where users can
just pick the functions they need, I fear that in the end it is
nearly impossible to change such a function because you'll always
break one or another user. But that is just a gut feeling.

> I kind of fail to see your point Andy. Or yes, I know exposing the
> gpio_chip to user allows much more flexibility. But what are the
> options? What would a driver developer do when his HW does almost fir
> the standard regmap_gpio - but not just quite? Say that for example the
> changing of gpio direction requires some odd additional register access
> - but other than that the regmap_gpio operations like setting/getting
> the value, IRQ options etc. fitted the regmap_gpio logic.
> 
> If he can not override this one function - then he will need to write
> wholly new GPIO driver without re-using any of the regmap-gpio stuff.
> You know, if one can't use regmap-gpio, he's likely to use the already
> exposed gpio_chip anyways. I'd say this is much more of a pain to
> maintain. Or maybe you add another work-around option in the
> gpio_regmap_config to indicate this (and every other) oddball HW -
> which eventually leads to a mess.

Agreed, if possible, I'd not like to see options just for one
obscure HW.

> But this is all just my thinking - I'm kind of a "bystander" here and
> that's why I asked for opinions. Thanks for sharing yours, Andy. I do
> appreciate all the help and discussion.
> 
>> > 3) The last option would be adding pointer to regmap_gpio to
>> > gpio_chip
>> > - and exporting the regmap_gpio functions as helpers - leaving the
>> > gpio
>> > registration to be done by the IC driver. That would allow IC
>> > driver to
>> > use the regmap_gpio helpers which suit the IC and write own
>> > functions
>> > for rest of the stuff.
> 
> I was trying to describe here the approach that has been taken in use
> at the regulator subsystem - which has used the regmap helpers for
> quite a while. I think that approach is scaling quite Ok even for
> strange HW.

Do you have any pointers?

-michael

  reply	other threads:[~2021-05-14 20:34 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-24  7:21 [PATCH v4 00/16] Support ROHM BD71815 PMIC Matti Vaittinen
2021-03-24  7:22 ` [PATCH v4 01/16] rtc: bd70528: Do not require parent data Matti Vaittinen
2021-03-24  7:22 ` [PATCH v4 02/16] mfd: bd718x7: simplify by cleaning unnecessary device data Matti Vaittinen
2021-03-24  7:23 ` [PATCH v4 03/16] dt_bindings: bd71828: Add clock output mode Matti Vaittinen
2021-03-24  7:23 ` [PATCH v4 04/16] dt_bindings: regulator: Add ROHM BD71815 PMIC regulators Matti Vaittinen
2021-03-24  7:23 ` [PATCH v4 05/16] dt_bindings: mfd: Add ROHM BD71815 PMIC Matti Vaittinen
2021-03-24  7:25 ` [PATCH v4 06/16] mfd: Add ROHM BD71815 ID Matti Vaittinen
2021-03-24  7:26 ` [PATCH v4 07/16] mfd: Sort ROHM chip ID list for better readability Matti Vaittinen
2021-03-24  7:26 ` [PATCH v4 08/16] mfd: Support for ROHM BD71815 PMIC core Matti Vaittinen
2021-03-24  7:29 ` [PATCH v4 09/16] gpio: support ROHM BD71815 GPOs Matti Vaittinen
2021-03-25  9:35   ` Linus Walleij
2021-03-25 10:32     ` Matti Vaittinen
2021-05-10 12:58       ` regmap-gpio: Support set_config and other not quite so standard ICs? Matti Vaittinen
2021-05-10 16:54         ` Andy Shevchenko
2021-05-11  3:59           ` Matti Vaittinen
2021-05-14 20:34             ` Michael Walle [this message]
2021-05-17  4:46               ` Vaittinen, Matti
2021-03-26 11:26   ` [PATCH v4 09/16] gpio: support ROHM BD71815 GPOs Andy Shevchenko
2021-03-26 11:27     ` Andy Shevchenko
2021-03-26 13:33     ` Matti Vaittinen
2021-03-26 17:51       ` Andy Shevchenko
2021-03-28 16:59         ` Matti Vaittinen
2021-03-24  7:29 ` [PATCH v4 10/16] regulator: helpers: Export helper voltage listing Matti Vaittinen
2021-03-24  7:30 ` [PATCH v4 12/16] regulator: rohm-regulator: Support SNVS HW state Matti Vaittinen
2021-03-24  7:30 ` [PATCH v4 13/16] regulator: Support ROHM BD71815 regulators Matti Vaittinen
2021-03-24  7:30 ` [PATCH v4 14/16] clk: bd718x7: Add support for clk gate on ROHM BD71815 PMIC Matti Vaittinen
2021-03-24  7:31 ` [PATCH v4 15/16] rtc: bd70528: Support RTC on ROHM BD71815 Matti Vaittinen
2021-03-24  7:31 ` [PATCH v4 16/16] MAINTAINERS: Add ROHM BD71815AGW Matti Vaittinen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5ddf313b915da284211fc961971ced37@walle.cc \
    --to=michael@walle.cc \
    --cc=andy.shevchenko@gmail.com \
    --cc=bgolaszewski@baylibre.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=matti.vaittinen@fi.rohmeurope.com \
    --cc=noltari@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.