diff options
author | Bastien Nocera <hadess@hadess.net> | 2016-12-06 17:16:43 +0100 |
---|---|---|
committer | Anthony G. Basile <blueness@gentoo.org> | 2016-12-11 10:55:12 -0500 |
commit | c61e6c912bc6f1e5b11223c705ac4f309434a555 (patch) | |
tree | 269487b0c16956c96cf2da0c92cb85fc38f3951b | |
parent | 48e435dcfdf80958a7d9cfdd63e378cddea99596 (diff) |
udev: Add rules for accelerometer orientation quirks
This commit adds a rules file to extract the properties from hwdb
to set on i2c IIO devices. This is used to set the ACCEL_MOUNT_MATRIX
property on IIO devices, to be consumed by iio-sensor-proxy or
equivalent daemon.
The hwdb file contains documentation on how to write quirks. Note
however that mount information is usually exported in:
- the device-tree for ARM devices
- the ACPI DSDT for Intel-compatible devices
but currently not extracted by the kernel.
Also note that some devices have the framebuffer rotation that changes
between the bootloader and the main system, which might mean that the
accelerometer is then wrongly oriented. This is a missing feature in the
i915 kernel driver: https://bugs.freedesktop.org/show_bug.cgi?id=94894
which needs to be fixed, and won't require quirks.
Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
-rw-r--r-- | hwdb/60-sensor.hwdb | 45 | ||||
-rw-r--r-- | hwdb/Makefile.am | 1 | ||||
-rw-r--r-- | rules/60-sensor.rules | 10 | ||||
-rw-r--r-- | rules/Makefile.am | 1 |
4 files changed, 57 insertions, 0 deletions
diff --git a/hwdb/60-sensor.hwdb b/hwdb/60-sensor.hwdb new file mode 100644 index 0000000000..3160cf77e8 --- /dev/null +++ b/hwdb/60-sensor.hwdb @@ -0,0 +1,45 @@ +# This file is part of systemd. +# +# The lookup keys are composed in: +# 60-sensor.rules +# +# Note: The format of the "sensor:" prefix match key is a +# contract between the rules file and the hardware data, it might +# change in later revisions to support more or better matches, it +# is not necessarily expected to be a stable ABI. +# +# Match string formats: +# sensor:modalias:<parent device modalias>:dmi:<dmi string> +# +# To add local entries, create a new file +# /etc/udev/hwdb.d/61-sensor-local.hwdb +# and add your rules there. To load the new rules execute (as root): +# systemd-hwdb update +# udevadm trigger `dirname $(udevadm info -n "/dev/iio:deviceXXX" -q path)` +# where /dev/iio:deviceXXX is the device in question. +# +# If your changes are generally applicable, preferably send them as a pull +# request to +# https://github.com/systemd/systemd +# or create a bug report on https://github.com/systemd/systemd/issues and +# include your new rules, a description of the device, and the output of +# udevadm info --export-db +# +# Allowed properties are: +# ACCEL_MOUNT_MATRIX=<matrix> +# +# where <matrix> is a mount-matrix in the format specified in the IIO +# subsystem[1]. The default, when unset, is equivalent to: +# ACCEL_MOUNT_MATRIX=1, 0, 0; 0, 1, 0; 0, 0, 1 +# eg. the identity matrix. +# +# [1]: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dfc57732ad38f93ae6232a3b4e64fd077383a0f1 + +# +# Sort by brand, model + +######################################### +# Winbook +######################################### +sensor:modalias:acpi:BMA250*:dmi:*svn*WinBook*:*pn*TW100* + ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 0 diff --git a/hwdb/Makefile.am b/hwdb/Makefile.am index 747197c14a..f60e896bd5 100644 --- a/hwdb/Makefile.am +++ b/hwdb/Makefile.am @@ -13,6 +13,7 @@ dist_udevhwdb_DATA = \ 20-usb-vendor-model.hwdb \ 60-evdev.hwdb \ 60-keyboard.hwdb \ + 60-sensor.hwdb \ 70-mouse.hwdb \ 70-pointingstick.hwdb \ 70-touchpad.hwdb diff --git a/rules/60-sensor.rules b/rules/60-sensor.rules new file mode 100644 index 0000000000..82e44f8843 --- /dev/null +++ b/rules/60-sensor.rules @@ -0,0 +1,10 @@ +# do not edit this file, it will be overwritten on update + +ACTION=="remove", GOTO="sensor_end" + +# device matching the sensor's name and the machine's DMI data for IIO devices +SUBSYSTEM=="iio", KERNEL=="iio*", SUBSYSTEMS=="usb|i2c", \ + IMPORT{builtin}="hwdb 'sensor:modalias:$attr{modalias}:$attr{[dmi/id]modalias}'", \ + GOTO="sensor_end" + +LABEL="sensor_end" diff --git a/rules/Makefile.am b/rules/Makefile.am index f99322b134..a403710ed0 100644 --- a/rules/Makefile.am +++ b/rules/Makefile.am @@ -10,6 +10,7 @@ dist_udevrules_DATA = \ 60-persistent-input.rules \ 60-persistent-storage-tape.rules \ 60-persistent-v4l.rules \ + 60-sensor.rules \ 60-serial.rules \ 64-btrfs.rules \ 70-mouse.rules \ |