On Wed, 14 Oct 2020, Mark Brown <broonie@xxxxxxxxxx> wrote:
On Wed, Oct 14, 2020 at 02:51:14PM +0300, Adrian Ratiu wrote:
On Tue, 13 Oct 2020, Mark Brown <broonie@xxxxxxxxxx> 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.