lkml.org 
[lkml]   [2023]   [Sep]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v3] i2c: stm32f7: Add atomic_xfer method to driver
Hi Sean,

On Mon, Sep 04, 2023 at 07:29:59AM +0200, Sean Nyekjaer wrote:
> Hi Andy,
>
> > On 3 Sep 2023, at 14.46, Andi Shyti <andi.shyti@kernel.org> wrote:
> >
> > Hi Pierre-Yves, Alain,
> >
> > mind taking a look here?
> >
> > [...]
> >
> >> @@ -357,6 +357,7 @@ struct stm32f7_i2c_dev {
> >> u32 dnf_dt;
> >> u32 dnf;
> >> struct stm32f7_i2c_alert *alert;
> >> + bool atomic;
> >
> > this smells a bit racy here, this works only if the xfer's are
> > always sequential.
> >
> > What happens when we receive at the same time two xfer's, one
> > atomic and one non atomic?
>
> From the include/i2c.h:
> * @master_xfer_atomic: same as @master_xfer. Yet, only using atomic context
> * so e.g. PMICs can be accessed very late before shutdown. Optional.
>
> So it’s only used very late in the shutdown.
>
> It’s implemented the same way as in:
> drivers/i2c/busses/i2c-imx.c
> drivers/i2c/busses/i2c-meson.c
> drivers/i2c/busses/i2c-mv64xxx.c
> drivers/i2c/busses/i2c-tegra.c
> … etc…
>
>
> In drivers/i2c/i2c-core.h it’s determined whether it’s atomic transfer or not:
>
> /*
> * We only allow atomic transfers for very late communication, e.g. to access a
> * PMIC when powering down. Atomic transfers are a corner case and not for
> * generic use!
> */
> static inline bool i2c_in_atomic_xfer_mode(void)
> {
> return system_state > SYSTEM_RUNNING && irqs_disabled();
> }
>
> So you would not have an atomic transfer and later an non atomic.

What about the opposite? I.e. a non atomic and later an atomic,
for very late tardive communications :)

Andi

\
 
 \ /
  Last update: 2023-09-06 01:09    [W:0.078 / U:0.624 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site