Re: [PATCH v4 1/2] gpio: Add support for IDT 79RC3243x GPIO controller

From: Michael Walle
Date: Wed Apr 28 2021 - 10:04:38 EST


Am 2021-04-28 15:44, schrieb Andy Shevchenko:
On Wed, Apr 28, 2021 at 2:57 PM Michael Walle <michael@xxxxxxxx> wrote:

Am 2021-04-28 13:07, schrieb Andy Shevchenko:
> On Wed, Apr 28, 2021 at 1:51 AM Michael Walle <michael@xxxxxxxx> wrote:
>> Am 2021-04-26 12:29, schrieb Andy Shevchenko:
>> > On Mon, Apr 26, 2021 at 12:55 PM Thomas Bogendoerfer
>> > <tsbogend@xxxxxxxxxxxxxxxx> wrote:
>> >
>> > 2) there is gpio-regmap generic code, that may be worth
>> > considering.
>>
>> This driver uses memory mapped registers. While that is
>> also possible with gpio-regmap, there is one drawback:
>> it assumes gpiochip->can_sleep = true for now, see [1].
>> Unfortunately, there is no easy way to ask the regmap
>> if its mmio/fastio.
>
> I don't see how it is an impediment.

You'd have to use the *_cansleep() variants with the gpios,
which cannot be used everywhere, no?

*can* sleep means that it requires a sleeping context to run, if your
controller is fine with that, there are no worries. OTOH if you want
to run this in an atomic context, then consumers can't do with that
kind of controller.

Ok, then we are on the same track.

What I meant above (and you stripped it here) is
to add a patch that will fix that and set it based on
gpio_regmap_config.

Yes, but ideally, it would ask the regmap. Otherwise that
information is redundant and might mismatch, i.e. gpio_regmap_config
tell can_sleep=false but the regmap is an I2C type for example. Also
if a driver wants to support both regmap types, we are no step
further.

-michael