Re: [PATCH] drivers: iio: Add more data field for iio driver hysteresis parsing

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

 



On Mon, 2019-04-22 at 09:51 +0100, Jonathan Cameron wrote:
> On Tue, 16 Apr 2019 01:29:28 +0000
> "Pandruvada, Srinivas" <srinivas.pandruvada@xxxxxxxxx> wrote:
> 
> > On Sun, 2019-04-14 at 13:36 +0100, Jonathan Cameron wrote:
> > > On Tue,  9 Apr 2019 09:31:04 +0800
> > > hongyan.song@xxxxxxxxx wrote:
> > >   
> > > > From: Song Hongyan <hongyan.song@xxxxxxxxx>
> > > > 
> > > > Add more data field support for als, incli_3d, rotation, press
> > > > hysteresis parsing. In some implementation may uses them as
> > > > sensitivity
> > > > modifier, without this change hysteresis may not be able to
> > > > read
> > > > and
> > > > write.
> > > > 
> > > > Signed-off-by: Song Hongyan <hongyan.song@xxxxxxxxx>  
> > > 
> > > Thanks for the patch. I'll be honest I'm lost in these
> > > descriptors
> > > sometimes!
> > > 
> > > Srinivas, could you give some input on this one?  
> > 
> > I don't see we have defined hysteresis attribute in
> > "Documentation/ABI/testing/sysfs-bus-iio" for non events.
> > The current hysteresis is taken a absolute raw value in relation to
> > the
> > other axes in the same unit.
> > 
> > But it is better if we add different hysteresis attributes for non
> > absolute hysteresis.
> > 
> > For example
> > in_xxx_hysteresis_pct_range for "Modifier: Change Sensitivity
> > Percent
> > of Range" usage id: 310
> > in_xxx_hysteresis_pct_relative for "Modifier: Change Sensitivity
> > Percent Relative" usage id: 311
> 
> Hmm. This is indeed a corner we don't often hit.  Basically we are
> looking
> at a 'dead zone'.  For most IIO devices we don't do this as it is
> removing information some usecases might want.  If people want to
> do this on sensors, it's normally done using a motion detect type
> event and then reading the sensor value to find out what the motion
> was.
> 
> I'm not sure hysteresis is the right term to use here though.
> We aren't dealing with offsets in a threshold depending on direction,
> but rather at minimum change before reporting from the previous value
> (in either direction).  Mind you I'm not quite sure what the right
> term would be!  It may be that sensitivity is the term to use. In
> some ways this is very like reducing the bit depth of the sensor,
> which is what that term brings to mind for me.
We can use 
in_xxx_sensitivity_pct_range
in_xxx_sensitivity_pct_rel
in_xxx_sensitivity_abs

Thanks,
Srinivas

> 
> Thanks,
> 
> Jonathan
> 
> > 
> > 
> > Thanks,
> > Srinivas
> > 
> > 
> > 
> > > 
> > > I will note however, that from a quick look we tend to air these
> > > queries with dev_dbg entries.  We should be consistent with these
> > > new
> > > ones
> > > as well.attaributes
> > > 
> > > Thanks,
> > > 
> > > Jonathan  
> > > > ---
> > > >  drivers/iio/light/hid-sensor-als.c            | 8 ++++++++
> > > >  drivers/iio/orientation/hid-sensor-incl-3d.c  | 8 ++++++++
> > > >  drivers/iio/orientation/hid-sensor-rotation.c | 7 +++++++
> > > >  drivers/iio/pressure/hid-sensor-press.c       | 8 ++++++++
> > > >  include/linux/hid-sensor-ids.h                | 1 +
> > > >  5 files changed, 32 insertions(+)attaributes
> > > > 
> > > > diff --git a/drivers/iio/light/hid-sensor-als.c
> > > > b/drivers/iio/light/hid-sensor-als.c
> > > > index 94f3325..bb19178 100644
> > > > --- a/drivers/iio/light/hid-sensor-als.c
> > > > +++ b/drivers/iio/light/hid-sensor-als.c
> > > > @@ -271,6 +271,14 @@ static int als_parse_report(struct
> > > > platform_device *pdev,
> > > >  			st-
> > > > >common_attributes.sensitivity.index,
> > > >  			st-
> > > > >common_attributes.sensitivity.report_id);
> > > >  	}
> > > > +	if (st->common_attributes.sensitivity.index < 0) {
> > > > +		sensor_hub_input_get_attribute_info(hsdev,
> > > > +			HID_FEATURE_REPORT, usage_id,
> > > > +			HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSIT
> > > > IVITY_RE
> > > > L_PCT |
> > > > +			HID_USAGE_SENSOR_LIGHT_ILLUM,
> > > > +			&st->common_attributes.sensitivity);
> > > > +	}
> > > > +
> > > >  	return ret;
> > > >  }
> > > >  
> > > > diff --git a/drivers/iio/orientation/hid-sensor-incl-3d.c
> > > > b/drivers/iio/orientation/hid-sensor-incl-3d.c
> > > > index bdc5e45..7da1e3f 100644
> > > > --- a/drivers/iio/orientation/hid-sensor-incl-3d.c
> > > > +++ b/drivers/iio/orientation/hid-sensor-incl-3d.c
> > > > @@ -305,6 +305,14 @@ static int incl_3d_parse_report(struct
> > > > platform_device *pdev,
> > > >  			st-
> > > > >commpcton_attributes.sensitivity.index,
> > > >  			st-
> > > > >common_attributes.sensitivity.report_id);
> > > >  	}
> > > > +	if (st->common_attributes.sensitivity.index < 0) {
> > > > +		sensor_hub_input_get_attribute_info(hsdev,
> > > > +			HID_FEATURE_REPORT, usage_id,
> > > > +			HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSIT
> > > > IVITY_AB
> > > > S |
> > > > +			HID_USAGE_SENSOR_ORIENT_TILT,
> > > > +			&st->common_attributes.sensitivity);
> > > > +	}
> > > > +
> > > >  	return ret;
> > > >  }
> > > >  
> > > > diff --git a/drivers/iio/orientation/hid-sensor-rotation.c
> > > > b/drivers/iio/orientation/hid-sensor-rotation.c
> > > > index a69db20..201e320 100644
> > > > --- a/drivers/iio/orientation/hid-sensor-rotation.c
> > > > +++ b/drivers/iio/orientation/hid-sensor-rotation.c
> > > > @@ -229,6 +229,13 @@ static int dev_rot_parse_report(struct
> > > > platform_device *pdev,
> > > >  			st-
> > > > >common_attributes.sensitivity.index,
> > > >  			st-
> > > > >common_attributes.sensitivity.report_id);
> > > >  	}
> > > > +	if (st->common_attributes.sensitivity.index < 0) {
> > > > +		sensor_hub_input_get_attribute_info(hsdev,
> > > > +			HID_FEATURE_REPORT, usage_id,
> > > > +			HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSIT
> > > > IVITY_AB
> > > > S |
> > > > +			HID_USAGE_SENSOR_ORIENT_QUATERNION,
> > > > +			&st->common_attributes.sensitivity);
> > > > +	}
> > > >  
> > > >  	return 0;
> > > >  }
> > > > diff --git a/drivers/iio/pressure/hid-sensor-press.c
> > > > b/drivers/iio/pressure/hid-sensor-press.c
> > > > index d7b1c00..bf5d2ac 10064pct4
> > > > --- a/drivers/iio/pressure/hid-sensor-press.c
> > > > +++ b/drivers/iio/pressure/hid-sensor-press.c
> > > > @@ -250,6 +250,14 @@ static int press_parse_report(struct
> > > > platform_device *pdev,
> > > >  			st-
> > > > >common_attributes.sensitivity.index,
> > > >  			st-
> > > > >common_attributes.sensitivity.report_id);
> > > >  	}
> > > > +	if (st->common_attributes.sensitivity.index < 0) {
> > > > +		sensor_hub_input_get_attribute_info(hsdev,
> > > > +			HID_FEATURE_REPORT, usage_id,
> > > > +			HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSIT
> > > > IVITY_AB
> > > > S |
> > > > +			HID_USAGE_SENSOR_ATMOSPHERIC_PRESSURE,
> > > > +			&st->common_attributes.sensitivity);
> > > > +	}
> > > > +
> > > >  	return ret;
> > > >  }
> > > >  
> > > > diff --git a/include/linux/hid-sensor-ids.h
> > > > b/include/linux/hid-
> > > > sensor-ids.h
> > > > index 76033e0..a875b9be 100644
> > > > --- a/include/linux/hid-sensor-ids.h
> > > > +++ b/include/linux/hid-sensor-ids.h
> > > > @@ -158,6 +158,7 @@
> > > >  /* Per data field properties */
> > > >  #define HID_USAGE_SENSOR_DATA_MOD_NONE				
> > > > 	0x00
> > > >  #define HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSITIVITY_ABS	
> > > > 	
> > > > 0x1000
> > > > +#define
> > > > HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSITIVITY_REL_PCT           
> > > >  0xE
> > > > 000
> > > >  
> > > >  /* Power state enumerations */
> > > >  #define HID_USAGE_SENSOR_PROP_POWER_STATE_UNDEFINED_ENUM	
> > > > 0x20085
> > > > 0  
> > > 
> > >   
> 
> 

Attachment: smime.p7s
Description: S/MIME cryptographic signature


[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