[PATCH 07/18] regmap: mmio: add config option to allow relaxed MMIO accesses
Adrian Ratiu
adrian.ratiu at collabora.com
Wed Oct 14 09:00:38 EDT 2020
On Wed, 14 Oct 2020, Mark Brown <broonie at kernel.org> wrote:
> On Wed, Oct 14, 2020 at 02:51:14PM +0300, Adrian Ratiu wrote:
>> On Tue, 13 Oct 2020, Mark Brown <broonie at kernel.org> wrote:
>> > On Mon, Oct 12, 2020 at 11:59:46PM +0300, Adrian Ratiu wrote:
>
>> > > - writeb(val, ctx->regs + reg); + if
>> > > (ctx->relaxed_mmio) + writeb_relaxed(val, ctx->regs + reg);
>> > > + else + writeb(val, ctx->regs + reg);
>
>> > There is no point in doing a conditional operation on every
>> > I/O, it'd be better to register a different set of ops when
>> > doing relaxed I/O.
>
>> Indeed I have considered adding new functions but went with
>> this solution because it's easier for the users to only have to
>> define a "relaxed" config then test the regmap ctx as above.
>
> It seems like you've taken this in a direction other than what
> I was thinking of here - defining separate ops doesn't mean we
> have to do anything which has any impact on the interface seen
> by users. The regmap config is supplied at registration time,
> it's just as available then as it is when doing I/O.
Right. I got confused by the meaning of ops :) Sorry about that.
>
>> Thinking a bit more about it, yes, it makes more sense to have
>> dedicated ops: this way users don't have to be explicit about
>> adding membarriers and can combine relaxed and non-relaxed more
>> easily, so it's also a better API trade-off in addition to
>> avoiding the conditional. Thanks!
>
> I'm not sure what you're proposing here - it does seem useful to
> be able to combine relaxed and non-relaxed I/O but that seems
> like it'd break down the abstraction for regmap since tht's not
> really a concept other buses are going to have? Unless we
> provide an operation to switch by setting flags or somethin
> possibly and integrate it with the cache perhaps. Could you be
> a bit more specific about what you were thinking of here please?
I was thinking about exposing a relaxed API like
regmap_write_relaxed but now that I know what you meant by ops and
also that it doesn't make sense for other busses / violates the
abstraction, I realize that is a bad idea and I will continue
improving this to avoid the conditional and send a separete
patch. Thanks again!
>
>> Question: Do you want me to split this patch from the series and send it
>> separately just for the regmap subsystem to be easier to review / apply?
>
> Sure.
More information about the Linux-rockchip
mailing list