mbox series

[RFC,0/3] io: imu: st_lsm6dsx: wake on acc event

Message ID 20190614122604.52935-1-sean@geanix.com (mailing list archive)
Headers show
Series io: imu: st_lsm6dsx: wake on acc event | expand

Message

Sean Nyekjaer June 14, 2019, 12:26 p.m. UTC
Hi,

The first patch enables the wake event creation in the suspend function,
it hardcodes the accelerometer to low power mode and the gyro is powered down.

The second and third patch is where I have some questions.
Is it okay to create an sysfs entry that can enable and disable the wake
events from the accelerometer?

The third patch is enabling us to set the threshold value.
Obviously this will need to be changed to represent a real value instead
of the raw register value.
Maybe I need to add a threshold avaliable sysfs entry?
Do I set it to a raw value calculated from the scale value or is some have
a better idea?

Finally is this the right approach to enable wake on accelerometer
events?
Please provide some idea's to how we could do it in the best and most
generic way.

/Sean

Sean Nyekjaer (3):
  iio: imu: st_lsm6dsx: add wake on accelerometer threshold
  iio: imu: st_lsm6dsx: add wake on accelerometer enable hook in sysfs
  iio: imu: st_lsm6dsx: add wake on accelerometer threshold hook in
    sysfs

 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h      |   2 +
 drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 135 +++++++++++++++++++
 2 files changed, 137 insertions(+)

Comments

Jonathan Cameron June 16, 2019, 1:24 p.m. UTC | #1
On Fri, 14 Jun 2019 14:26:01 +0200
Sean Nyekjaer <sean@geanix.com> wrote:

> Hi,
> 
> The first patch enables the wake event creation in the suspend function,
> it hardcodes the accelerometer to low power mode and the gyro is powered down.
> 
> The second and third patch is where I have some questions.
> Is it okay to create an sysfs entry that can enable and disable the wake
> events from the accelerometer?

On that I'm not sure - is there a standard way of configuring wake up events
outside of IIO?

> 
> The third patch is enabling us to set the threshold value.
> Obviously this will need to be changed to represent a real value instead
> of the raw register value.
> Maybe I need to add a threshold avaliable sysfs entry?
> Do I set it to a raw value calculated from the scale value or is some have
> a better idea?
Yes, if a device is providing a _raw channel reading then threshold
values should also be raw.

Available sysfs attribute makes sense if it helps a user, or userspace
program to set the value.

> 
> Finally is this the right approach to enable wake on accelerometer
> events?
> Please provide some idea's to how we could do it in the best and most
> generic way.

It's not something I've come across before, so hopefully someone else
can provide guidance on this!

My only immediate thought is that perhaps this should be a device tree
thing rather than userspace controlled?
There also seems to be some existing infrastructure to control this
in the power directory for a device.

Documentation/ABI/testing/sysfs-devices-power

Thanks,

Jonathan

> 
> /Sean
> 
> Sean Nyekjaer (3):
>   iio: imu: st_lsm6dsx: add wake on accelerometer threshold
>   iio: imu: st_lsm6dsx: add wake on accelerometer enable hook in sysfs
>   iio: imu: st_lsm6dsx: add wake on accelerometer threshold hook in
>     sysfs
> 
>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h      |   2 +
>  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 135 +++++++++++++++++++
>  2 files changed, 137 insertions(+)
>
Jonathan Cameron June 16, 2019, 1:27 p.m. UTC | #2
On Sun, 16 Jun 2019 14:24:31 +0100
Jonathan Cameron <jic23@kernel.org> wrote:

> On Fri, 14 Jun 2019 14:26:01 +0200
> Sean Nyekjaer <sean@geanix.com> wrote:
> 
> > Hi,
> > 
> > The first patch enables the wake event creation in the suspend function,
> > it hardcodes the accelerometer to low power mode and the gyro is powered down.
> > 
> > The second and third patch is where I have some questions.
> > Is it okay to create an sysfs entry that can enable and disable the wake
> > events from the accelerometer?  
> 
> On that I'm not sure - is there a standard way of configuring wake up events
> outside of IIO?
> 
> > 
> > The third patch is enabling us to set the threshold value.
> > Obviously this will need to be changed to represent a real value instead
> > of the raw register value.
> > Maybe I need to add a threshold avaliable sysfs entry?
> > Do I set it to a raw value calculated from the scale value or is some have
> > a better idea?  
> Yes, if a device is providing a _raw channel reading then threshold
> values should also be raw.
> 
> Available sysfs attribute makes sense if it helps a user, or userspace
> program to set the value.
> 
> > 
> > Finally is this the right approach to enable wake on accelerometer
> > events?
> > Please provide some idea's to how we could do it in the best and most
> > generic way.  
> 
> It's not something I've come across before, so hopefully someone else
> can provide guidance on this!
> 
> My only immediate thought is that perhaps this should be a device tree
> thing rather than userspace controlled?
doh. Should have read the patches first rather than just replying to the
cover letter ;) Ignore this bit!

> There also seems to be some existing infrastructure to control this
> in the power directory for a device.
> 
> Documentation/ABI/testing/sysfs-devices-power
> 
> Thanks,
> 
> Jonathan
> 
> > 
> > /Sean
> > 
> > Sean Nyekjaer (3):
> >   iio: imu: st_lsm6dsx: add wake on accelerometer threshold
> >   iio: imu: st_lsm6dsx: add wake on accelerometer enable hook in sysfs
> >   iio: imu: st_lsm6dsx: add wake on accelerometer threshold hook in
> >     sysfs
> > 
> >  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx.h      |   2 +
> >  drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c | 135 +++++++++++++++++++
> >  2 files changed, 137 insertions(+)
> >   
>