Input: serio - add hangup support
authorHans Verkuil <hverkuil@xs4all.nl>
Thu, 4 Aug 2016 18:16:23 +0000 (11:16 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Wed, 21 Sep 2016 14:57:11 +0000 (07:57 -0700)
commit51db013767c46dc0243a8945085b5a229d9bd281
treecd9fa85b271618ce6835e400bf7d7f19bf8c9d51
parent722dc54628ca5cffd3b4581b523775aa422b55df
Input: serio - add hangup support

The Pulse-Eight USB CEC adapter is a usb device that shows up as a ttyACM0
device.  It requires that you run inputattach in order to communicate with
it via serio.

This all works well, but it would be nice to have a udev rule to
automatically start inputattach. That too works OK, but the problem comes
when the USB device is unplugged: the tty hangup is never handled by the
serio framework so the inputattach utility never exits and you have to kill
it manually.

By adding this hangup callback the inputattach utility now properly exits
as soon as the USB device is unplugged.

The udev rule I used on my Debian sid system is:

SUBSYSTEM=="tty", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="2548", ATTRS{idProduct}=="1002", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="pulse8-cec-inputattach@%k.service"

And /etc/systemd/system/pulse8-cec-inputattach@.service is as follows:

===============================================================
[Unit]
Description=inputattach for pulse8-cec device on %I

[Service]
Type=simple
ExecStart=/usr/local/bin/inputattach --pulse8-cec /dev/%I
KillMode=process
===============================================================

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Tested-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/serio/serport.c