Re: [PATCH 2/2] soc: sprd: Add Spreadtrum special bits updating support

From: Baolin Wang
Date: Fri Apr 17 2020 - 10:10:50 EST


On Fri, Apr 17, 2020 at 9:39 PM Arnd Bergmann <arnd@xxxxxxxx> wrote:
>
> On Fri, Apr 17, 2020 at 4:14 AM Baolin Wang <baolin.wang7@xxxxxxxxx> wrote:
> > + *
> > + * Note: there is a potential risk when users want to set and clear bits
> > + * at the same time, since the set/clear method will always do bits setting
> > + * before bits clearing, which may cause some unexpected results if the
> > + * operation sequence is strict. Thus we recommend that do not set and
> > + * clear bits at the same time if you are not sure the results.
>
> Would it make sense to have a
>
> WARN_ONCE(set && clk, "%s: non-atomic update", __func__);
>
> in the code to check for this?

Yes, will add.

>
> > +static int sprd_syscon_init(void)
> > +{
> > + syscon_register_phys_regmap_bus(&sprd_syscon_regmap);
> > +
> > + return 0;
> > +}
> > +core_initcall_sync(sprd_syscon_init);
>
> This no longer breaks at runtime based on the changes in the other
> patch, but I still don't like how you have to manually load this module
> on spreadtrum platforms.
>
> What I meant to suggest in my previous reply was to add the regmap_bus
> instance into drivers/mfd/syscon.c itself.

Sorry, I misunderstood your meaning before, but what you suggested
will add some vendor-specific things into the common syscon driver, if
other platforms have different update bits method, we will add another
vendor-specific regmap bus into the syscon.c, which will make syscon.c
more complicated.

But if you still prefer to add these vendor-specific things into the
syscon.c, I will follow your suggestion in next version. Thanks.

--
Baolin Wang