HID: sensor: Update document for custom sensor
Added custom sensor documentation Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Acked-by: Jonathan Cameron <jic23@kernel.org> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
4a7de0519d
commit
b2eafd7282
|
@ -138,3 +138,87 @@ accelerometer wants to poll X axis value, then it can call this function with
|
||||||
the usage id of X axis. HID sensors can provide events, so this is not necessary
|
the usage id of X axis. HID sensors can provide events, so this is not necessary
|
||||||
to poll for any field. If there is some new sample, the core driver will call
|
to poll for any field. If there is some new sample, the core driver will call
|
||||||
registered callback function to process the sample.
|
registered callback function to process the sample.
|
||||||
|
|
||||||
|
|
||||||
|
----------
|
||||||
|
|
||||||
|
HID Custom and generic Sensors
|
||||||
|
|
||||||
|
HID Sensor specification defines two special sensor usage types. Since they
|
||||||
|
don't represent a standard sensor, it is not possible to define using Linux IIO
|
||||||
|
type interfaces.
|
||||||
|
The purpose of these sensors is to extend the functionality or provide a
|
||||||
|
way to obfuscate the data being communicated by a sensor. Without knowing the
|
||||||
|
mapping between the data and its encapsulated form, it is difficult for
|
||||||
|
an application/driver to determine what data is being communicated by the sensor.
|
||||||
|
This allows some differentiating use cases, where vendor can provide applications.
|
||||||
|
Some common use cases are debug other sensors or to provide some events like
|
||||||
|
keyboard attached/detached or lid open/close.
|
||||||
|
|
||||||
|
To allow application to utilize these sensors, here they are exported uses sysfs
|
||||||
|
attribute groups, attributes and misc device interface.
|
||||||
|
|
||||||
|
An example of this representation on sysfs:
|
||||||
|
/sys/devices/pci0000:00/INT33C2:00/i2c-0/i2c-INT33D1:00/0018:8086:09FA.0001/HID-SENSOR-2000e1.6.auto$ tree -R
|
||||||
|
.
|
||||||
|
????????? enable_sensor
|
||||||
|
????????? feature-0-200316
|
||||||
|
??????? ????????? feature-0-200316-maximum
|
||||||
|
??????? ????????? feature-0-200316-minimum
|
||||||
|
??????? ????????? feature-0-200316-name
|
||||||
|
??????? ????????? feature-0-200316-size
|
||||||
|
??????? ????????? feature-0-200316-unit-expo
|
||||||
|
??????? ????????? feature-0-200316-units
|
||||||
|
??????? ????????? feature-0-200316-value
|
||||||
|
????????? feature-1-200201
|
||||||
|
??????? ????????? feature-1-200201-maximum
|
||||||
|
??????? ????????? feature-1-200201-minimum
|
||||||
|
??????? ????????? feature-1-200201-name
|
||||||
|
??????? ????????? feature-1-200201-size
|
||||||
|
??????? ????????? feature-1-200201-unit-expo
|
||||||
|
??????? ????????? feature-1-200201-units
|
||||||
|
??????? ????????? feature-1-200201-value
|
||||||
|
????????? input-0-200201
|
||||||
|
??????? ????????? input-0-200201-maximum
|
||||||
|
??????? ????????? input-0-200201-minimum
|
||||||
|
??????? ????????? input-0-200201-name
|
||||||
|
??????? ????????? input-0-200201-size
|
||||||
|
??????? ????????? input-0-200201-unit-expo
|
||||||
|
??????? ????????? input-0-200201-units
|
||||||
|
??????? ????????? input-0-200201-value
|
||||||
|
????????? input-1-200202
|
||||||
|
??????? ????????? input-1-200202-maximum
|
||||||
|
??????? ????????? input-1-200202-minimum
|
||||||
|
??????? ????????? input-1-200202-name
|
||||||
|
??????? ????????? input-1-200202-size
|
||||||
|
??????? ????????? input-1-200202-unit-expo
|
||||||
|
??????? ????????? input-1-200202-units
|
||||||
|
??????? ????????? input-1-200202-value
|
||||||
|
|
||||||
|
Here there is a custom sensors with four fields, two feature and two inputs.
|
||||||
|
Each field is represented by a set of attributes. All fields except the "value"
|
||||||
|
are read only. The value field is a RW field.
|
||||||
|
Example
|
||||||
|
/sys/bus/platform/devices/HID-SENSOR-2000e1.6.auto/feature-0-200316$ grep -r . *
|
||||||
|
feature-0-200316-maximum:6
|
||||||
|
feature-0-200316-minimum:0
|
||||||
|
feature-0-200316-name:property-reporting-state
|
||||||
|
feature-0-200316-size:1
|
||||||
|
feature-0-200316-unit-expo:0
|
||||||
|
feature-0-200316-units:25
|
||||||
|
feature-0-200316-value:1
|
||||||
|
|
||||||
|
How to enable such sensor?
|
||||||
|
By default sensor can be power gated. To enable sysfs attribute "enable" can be
|
||||||
|
used.
|
||||||
|
$ echo 1 > enable_sensor
|
||||||
|
|
||||||
|
Once enabled and powered on, sensor can report value using HID reports.
|
||||||
|
These reports are pushed using misc device interface in a FIFO order.
|
||||||
|
/dev$ tree | grep HID-SENSOR-2000e1.6.auto
|
||||||
|
??????? ????????? 10:53 -> ../HID-SENSOR-2000e1.6.auto
|
||||||
|
????????? HID-SENSOR-2000e1.6.auto
|
||||||
|
|
||||||
|
Each reports can be of variable length preceded by a header. This header
|
||||||
|
consist of a 32 bit usage id, 64 bit time stamp and 32 bit length field of raw
|
||||||
|
data.
|
||||||
|
|
Loading…
Reference in New Issue