Re: Adding "fault count" support to opt3001

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 27 Sep 2019 10:08:19 -0700
David Frey <dpfrey@xxxxxxxxx> wrote:

> Hi,
> 
> The TI opt3001 light sensor has a fault count field in its configuration
> register.  See http://www.ti.com/lit/ds/symlink/opt3001.pdf on page 23.
> Basically, this field controls how many samples must be above the high
> threshold or below the low threshold in order to trigger the interrupt.
> Currently the driver initializes this field to 0 meaning that one fault
> will trigger an interrupt.
> 
> 0b00 -> 1
> 0b01 -> 2
> 0b10 -> 4
> 0b11 -> 8
> 
> The driver has an IIO event which allows for the high/low threshold to
> be set and enabled/disabled.  I would like to add the ability to specify
> the fault count as well and I'm wondering how this should be done.  I
> believe it should be done by adding a .mask_shared_by_type =
> BIT(IIO_EV_INFO_???) definition within the struct iio_event_spec, but
> I'm not sure if any of the existing IIO_EV_INFO_ values are appropriate.
>  The only one that might be appropriate is IIO_EV_INFO_HYSTERESIS.

If I have understood what this is correctly...

IIO_EV_INFO_PERIOD is the right one.  From a userspace point of view
it really doesn't care how many samples it is, what it cares about is
how long it needs to break the threshold for.  So across different
sensor types it might want to ignore camera flashes for example.

This does mean it becomes dependent on the sampling frequency. Now
I can't actually work out from that datasheet what controls the sampling
frequency...  I suppose it might just start a new reading immediately
after the previous one, but there isn't anything that I can see that
documents that.  Any ideas?

> 
> Am I going about this the right way?
> Is IIO_EV_INFO_HYSTERESIS appropriate?
> Should a new enum value be defined?
> 
> Thanks,
> David




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux