1# do not edit this file, it will be overwritten on update
2# taken/updated from:
3# https://github.com/systemd/systemd/blob/master/src/login/71-seat.rules.in
4
5ACTION=="remove", GOTO="seat_end"
6
7TAG=="udev-acl", SUBSYSTEM!="sound", TAG+="seat"
8SUBSYSTEM=="sound", KERNEL=="card*", TAG+="seat"
9SUBSYSTEM=="input", KERNEL=="input*", TAG+="seat"
10SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", TAG+="seat", TAG+="master-of-seat"
11SUBSYSTEM=="drm", KERNEL=="card[0-9]*", TAG+="seat", TAG+="master-of-seat"
12SUBSYSTEM=="usb", ATTR{bDeviceClass}=="09", TAG+="seat"
13
14# 'Plugable' USB hub, sound, network, graphics adapter
15SUBSYSTEM=="usb", ATTR{idVendor}=="2230", ATTR{idProduct}=="000[13]", ENV{ID_AUTOSEAT}="1"
16
17# qemu (version 2.4+) has a PCI-PCI bridge (-device pci-bridge-seat) to group
18# devices belonging to one seat. See:
19#     http://git.qemu.org/?p=qemu.git;a=blob;f=docs/multiseat.txt
20SUBSYSTEM=="pci", ATTR{vendor}=="0x1b36", ATTR{device}=="0x000a", TAG+="seat", ENV{ID_AUTOSEAT}="1"
21
22# Mimo 720, with integrated USB hub, displaylink graphics, and e2i
23# touchscreen. This device carries no proper VID/PID in the USB hub,
24# but it does carry good ID data in the graphics component, hence we
25# check it from the parent. There's a bit of a race here however,
26# given that the child devices might not exist yet at the time this
27# rule is executed. To work around this we'll trigger the parent from
28# the child if we notice that the parent wasn't recognized yet.
29
30# Match parent
31SUBSYSTEM=="usb", ATTR{idVendor}=="058f", ATTR{idProduct}=="6254", \
32                  ATTR{%k.2/idVendor}=="17e9", ATTR{%k.2/idProduct}=="401a", ATTR{%k.2/product}=="mimo inc", \
33                  ENV{ID_AUTOSEAT}="1", ENV{ID_AVOID_LOOP}="1"
34
35# Match child, look for parent's ID_AVOID_LOOP
36SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \
37                  ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \
38                  IMPORT{parent}="ID_AVOID_LOOP"
39
40# Match child, retrigger parent
41SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \
42                  ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \
43                  ENV{ID_AVOID_LOOP}=="", \
44                  RUN+="@rootbindir@/udevadm trigger --parent-match=%p/.."
45
46TAG=="seat", ENV{ID_PATH}=="", IMPORT{builtin}="path_id"
47TAG=="seat", ENV{ID_FOR_SEAT}=="", ENV{ID_PATH_TAG}!="", ENV{ID_FOR_SEAT}="$env{SUBSYSTEM}-$env{ID_PATH_TAG}"
48
49LABEL="seat_end"
50