udev: Allow quirks for ACPI input accelerometers
authorDaniel Drake <drake@endlessm.com>
Tue, 28 Feb 2017 17:38:18 +0000 (11:38 -0600)
committerhadess <hadess@users.noreply.github.com>
Wed, 1 Mar 2017 23:02:22 +0000 (00:02 +0100)
commit906d8a2ac52f38ab0c9e65462cb2233c4ef46ef3
tree4c6eea6b0eb9a513b110c70c8ded54b898c8a1ac
parent268b6e193231952ecc2096a2fc881798e90db08c
udev: Allow quirks for ACPI input accelerometers

The existing accelerometer rules only support IIO devices, however
iio-sensor-proxy can also work with accelerometers made available
through the input (evdev) subsystem.

In this case I am working with an accelerometer input device backed by an
ACPI driver for which the hierarchy is:
ACCE0001 (ACPI device)
  -> input8
    -> event7

We want the mount matrix (from hwdb) to be applied to both input8 and
event7. However, to match in 60-sensor.hwdb, we need to be working
with the modalias of the parent device (ACCE0001), and it is tricky
to access that when processing the input8 device which has it's own
modalias.

Instead of working directly with modalias, this ACPI-specific rule
uses the "hid" attribute to reconstruct the ACPI modalias. Since input
and event devices do not provide a hid attribute we will always get this
from the ACPI parent.

The modalias is constructed according to the definition in the kernel's
Documentation/acpi/namespace.txt and create_pnp_modalias(). We will only
use the first _CID/_HID value available, i.e. in some cases we will only
reconstruct the first part of the modalias, but that should be enough
granularity for our needs.
rules/60-sensor.rules