Thread (8 messages) 8 messages, 3 authors, 2021-01-28

Re: [PATCH 2/3] hid-sensor-common: Add relative sensitivity check

From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date: 2021-01-24 16:22:17
Also in: linux-iio, lkml

On Sun, 2021-01-24 at 13:14 +0000, Jonathan Cameron wrote:
On Wed, 20 Jan 2021 15:47:05 +0800
Ye Xiang [off-list ref] wrote:
quoted
Some hid sensors may use relative sensitivity such as als sensor.
This patch add relative sensitivity check for all hid-sensors.

Signed-off-by: Ye Xiang <redacted>
---
 .../iio/common/hid-sensors/hid-sensor-attributes.c    | 11
++++++++++-
 include/linux/hid-sensor-ids.h                        |  1 +
 2 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c 
b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
index d349ace2e33f..b685c292a179 100644
--- a/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
+++ b/drivers/iio/common/hid-sensors/hid-sensor-attributes.c
@@ -480,7 +480,7 @@ int hid_sensor_parse_common_attributes(struct
hid_sensor_hub_device *hsdev,
 
 	/*
 	 * Set Sensitivity field ids, when there is no individual
modifier, will
-	 * check absolute sensitivity of data field
+	 * check absolute sensitivity and relative sensitivity of data
field
 	 */
 	for (i = 0; i < sensitivity_addresses_len && st-
quoted
sensitivity.index < 0; i++) {
 		sensor_hub_input_get_attribute_info(hsdev,
@@ -488,6 +488,15 @@ int hid_sensor_parse_common_attributes(struct
hid_sensor_hub_device *hsdev,
 				HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSIT
IVITY_ABS |
 					sensitivity_addresses[i],
 				&st->sensitivity);
+
+		if (st->sensitivity.index >= 0)
+			break;
+
+		sensor_hub_input_get_attribute_info(hsdev,
+				HID_FEATURE_REPORT, usage_id,
+				HID_USAGE_SENSOR_DATA_MOD_CHANGE_SENSIT
IVITY_REL_PCT |
+					sensitivity_addresses[i],
+				&st->sensitivity);
We can't provide the value to userspace without reflecting the
difference between
the two ways of expressing it.

It seems there are 3 ways sensitivity is expressed.
1. Raw value in same units as the measurement (easy one and what is
currently reported)
2. Percentage of range - also relatively easy to transform into the
same as 1.
3. Percentage of prior reading..  This one doesn't fit in any
existing ABI, so
   unfortunately we'll have to invent something new along the lines
of
   *_hysteresis_relative 
This is why it was not added before when I developed.  But later few
years back there was a patch to add this by one of our developer. There
was some discussion, I thought it was decided it is OK to add.

But I agree, we should add new ABI as you suggested. Now almost every
laptop has HID sensors, better to address this. 

Thanks,
Srinivas

 

Jonathan


quoted
 	}
 
 	st->raw_hystersis = -1;
diff --git a/include/linux/hid-sensor-ids.h b/include/linux/hid-
sensor-ids.h
index 3bbdbccc5805..ac631159403a 100644
--- a/include/linux/hid-sensor-ids.h
+++ b/include/linux/hid-sensor-ids.h
@@ -149,6 +149,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
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help