Commit c5bfa007 authored by Martin Wilck's avatar Martin Wilck Committed by Peter Hutterer

udev: support firmware detection for pointing sticks

Add support for firmware detection on pointing stick devices. This
is needed for ALPS only at this time.
Signed-off-by: Martin Wilck's avatarMartin Wilck <mwilck@suse.com>
Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
parent 198c5365
......@@ -11,18 +11,22 @@
ACTION!="add|change", GOTO="libinput_model_quirks_end"
KERNEL!="event*", GOTO="libinput_model_quirks_end"
# Touchpad firmware detection, two-stage process.
# Firmware detection, two-stage process.
# First, run the program and import the LIBINPUT_MODEL_FIRMWARE_VERSION
# environment (if any)
KERNELS=="*input*", \
IMPORT{program}="@UDEV_TEST_PATH@libinput-model-quirks %S%p"
# Second, match on anything with that env set and import from the hwdb
KERNELS=="*input*", \
ENV{ID_INPUT_TOUCHPAD}=="1", \
ENV{LIBINPUT_MODEL_FIRMWARE_VERSION}!="", \
ENV{.DETECT_FWVERSION}="1"
KERNELS=="*input*", \
ENV{ID_INPUT_POINTINGSTICK}=="1", \
ENV{.DETECT_FWVERSION}="1"
ENV{.DETECT_FWVERSION}!="1", GOTO="skip_fwversion"
IMPORT{program}="@UDEV_TEST_PATH@libinput-model-quirks %S%p"
ENV{LIBINPUT_MODEL_FIRMWARE_VERSION}!="", \
IMPORT{builtin}="hwdb 'libinput:name:$attr{name}:fwversion:$env{LIBINPUT_MODEL_FIRMWARE_VERSION}'"
# End of touchpad firmware detection
LABEL="skip_fwversion"
# libinput:touchpad:<modalias>
ENV{ID_INPUT_TOUCHPAD}=="1", \
......
......@@ -108,6 +108,19 @@ handle_touchpad(struct udev_device *device)
handle_touchpad_synaptics(device);
}
static void
handle_pointingstick(struct udev_device *device)
{
const char *name = NULL;
name = prop_value(device, "NAME");
if (!name)
return;
if (strstr(name, "AlpsPS/2 ALPS") != NULL)
handle_touchpad_alps(device);
}
/**
* For a non-zero fuzz on the x/y axes, print that fuzz as property and
* reset the kernel's fuzz to 0.
......@@ -187,6 +200,8 @@ int main(int argc, char **argv)
if (prop_value(device, "ID_INPUT_TOUCHPAD"))
handle_touchpad(device);
if (prop_value(device, "ID_INPUT_POINTINGSTICK"))
handle_pointingstick(device);
rc = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment