login: properly detect MIMO USB displays
MIMO USB displays use a generic VID/PID for the hub component. With a bit of trickery we can detect them by the VID/PID of the graphics component.
This commit is contained in:
parent
da5d4bf64f
commit
d7e1c95e0a
|
@ -2883,10 +2883,10 @@ rootlibexec_PROGRAMS += \
|
||||||
|
|
||||||
dist_udevrules_DATA += \
|
dist_udevrules_DATA += \
|
||||||
src/login/70-uaccess.rules \
|
src/login/70-uaccess.rules \
|
||||||
src/login/71-seat.rules \
|
|
||||||
src/login/70-power-switch.rules
|
src/login/70-power-switch.rules
|
||||||
|
|
||||||
nodist_udevrules_DATA += \
|
nodist_udevrules_DATA += \
|
||||||
|
src/login/71-seat.rules \
|
||||||
src/login/73-seat-late.rules
|
src/login/73-seat-late.rules
|
||||||
|
|
||||||
MANPAGES += \
|
MANPAGES += \
|
||||||
|
@ -2943,12 +2943,14 @@ EXTRA_DIST += \
|
||||||
src/login/logind-gperf.gperf \
|
src/login/logind-gperf.gperf \
|
||||||
src/login/libsystemd-login.pc.in \
|
src/login/libsystemd-login.pc.in \
|
||||||
src/login/libsystemd-login.sym \
|
src/login/libsystemd-login.sym \
|
||||||
|
src/login/71-seat.rules.in \
|
||||||
src/login/73-seat-late.rules.in \
|
src/login/73-seat-late.rules.in \
|
||||||
units/systemd-logind.service.in \
|
units/systemd-logind.service.in \
|
||||||
units/systemd-user-sessions.service.in
|
units/systemd-user-sessions.service.in
|
||||||
|
|
||||||
CLEANFILES += \
|
CLEANFILES += \
|
||||||
src/login/logind-gperf.c \
|
src/login/logind-gperf.c \
|
||||||
|
src/login/71-seat.rules \
|
||||||
src/login/73-seat-late.rules
|
src/login/73-seat-late.rules
|
||||||
endif
|
endif
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
3
TODO
3
TODO
|
@ -1,5 +1,4 @@
|
||||||
Fedora 18:
|
Fedora 18:
|
||||||
* fix mimo VID/PID check that claims "innocent" hubs
|
|
||||||
* chrony/ntp target?
|
* chrony/ntp target?
|
||||||
|
|
||||||
Bugfixes:
|
Bugfixes:
|
||||||
|
@ -51,8 +50,6 @@ Features:
|
||||||
- implement .d/ auto includes for unit files
|
- implement .d/ auto includes for unit files
|
||||||
- add syntax to reset ExecStart= lists (and similar)
|
- add syntax to reset ExecStart= lists (and similar)
|
||||||
|
|
||||||
* properly detect mimo devices, the current VID/PID check is too broad
|
|
||||||
|
|
||||||
* manipulate CPU governor during boot, set it to performance
|
* manipulate CPU governor during boot, set it to performance
|
||||||
|
|
||||||
* steal SBF management from the kernel
|
* steal SBF management from the kernel
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/libsystemd-login.pc
|
/libsystemd-login.pc
|
||||||
/logind-gperf.c
|
/logind-gperf.c
|
||||||
/org.freedesktop.login1.policy
|
/org.freedesktop.login1.policy
|
||||||
|
/71-seat.rules
|
||||||
/73-seat-late.rules
|
/73-seat-late.rules
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
# This file is part of systemd.
|
|
||||||
#
|
|
||||||
# systemd is free software; you can redistribute it and/or modify it
|
|
||||||
# under the terms of the GNU Lesser General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2.1 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
|
|
||||||
ACTION=="remove", GOTO="seat_end"
|
|
||||||
|
|
||||||
TAG=="uaccess", SUBSYSTEM!="sound", TAG+="seat"
|
|
||||||
SUBSYSTEM=="sound", KERNEL=="card*", TAG+="seat"
|
|
||||||
SUBSYSTEM=="input", KERNEL=="input*", TAG+="seat"
|
|
||||||
SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", TAG+="seat"
|
|
||||||
SUBSYSTEM=="usb", ATTR{bDeviceClass}=="09", TAG+="seat"
|
|
||||||
|
|
||||||
# 'Plugable' USB hub, sound, network, graphics adapter
|
|
||||||
SUBSYSTEM=="usb", ATTR{idVendor}=="2230", ATTR{idProduct}=="000[13]", ENV{ID_AUTOSEAT}="1"
|
|
||||||
|
|
||||||
# Mimo 720, with integrated USB hub, displaylink graphics, and e2i touchscreen
|
|
||||||
SUBSYSTEM=="usb", ATTR{idVendor}=="058f", ATTR{idProduct}=="6254", ENV{ID_AUTOSEAT}="1"
|
|
||||||
|
|
||||||
TAG=="seat", ENV{ID_PATH}=="", IMPORT{builtin}="path_id"
|
|
||||||
TAG=="seat", ENV{ID_FOR_SEAT}=="", ENV{ID_PATH_TAG}!="", ENV{ID_FOR_SEAT}="$env{SUBSYSTEM}-$env{ID_PATH_TAG}"
|
|
||||||
|
|
||||||
LABEL="seat_end"
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
# This file is part of systemd.
|
||||||
|
#
|
||||||
|
# systemd is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU Lesser General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2.1 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
|
||||||
|
ACTION=="remove", GOTO="seat_end"
|
||||||
|
|
||||||
|
TAG=="uaccess", SUBSYSTEM!="sound", TAG+="seat"
|
||||||
|
SUBSYSTEM=="sound", KERNEL=="card*", TAG+="seat"
|
||||||
|
SUBSYSTEM=="input", KERNEL=="input*", TAG+="seat"
|
||||||
|
SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", TAG+="seat"
|
||||||
|
SUBSYSTEM=="usb", ATTR{bDeviceClass}=="09", TAG+="seat"
|
||||||
|
|
||||||
|
# 'Plugable' USB hub, sound, network, graphics adapter
|
||||||
|
SUBSYSTEM=="usb", ATTR{idVendor}=="2230", ATTR{idProduct}=="000[13]", ENV{ID_AUTOSEAT}="1"
|
||||||
|
|
||||||
|
# Mimo 720, with integrated USB hub, displaylink graphics, and e2i
|
||||||
|
# touchscreen. This device carries no proper VID/PID in the USB hub,
|
||||||
|
# but it does carry good ID data in the graphics component, hence we
|
||||||
|
# check it from the parent. There's a bit of a race here however,
|
||||||
|
# given that the child devices might not exist yet at the time this
|
||||||
|
# rule is executed. To work around this we'll trigger the parent from
|
||||||
|
# the child if we notice that the parent wasn't recognized yet.
|
||||||
|
|
||||||
|
# Match parent
|
||||||
|
SUBSYSTEM=="usb", ATTR{idVendor}=="058f", ATTR{idProduct}=="6254", \
|
||||||
|
ATTR{%k.2/idVendor}=="17e9", ATTR{%k.2/idProduct}=="401a", ATTR{%k.2/product}=="mimo inc", \
|
||||||
|
ENV{ID_AUTOSEAT}="1", ENV{ID_AVOID_LOOP}="1"
|
||||||
|
|
||||||
|
# Match child, look for parent's ID_AVOID_LOOP
|
||||||
|
SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \
|
||||||
|
ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \
|
||||||
|
IMPORT{parent}="ID_AVOID_LOOP"
|
||||||
|
|
||||||
|
# Match child, retrigger parent
|
||||||
|
SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \
|
||||||
|
ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \
|
||||||
|
ENV{ID_AVOID_LOOP}=="", \
|
||||||
|
RUN+="@bindir@/udevadm trigger --parent-match=%p/.."
|
||||||
|
|
||||||
|
TAG=="seat", ENV{ID_PATH}=="", IMPORT{builtin}="path_id"
|
||||||
|
TAG=="seat", ENV{ID_FOR_SEAT}=="", ENV{ID_PATH_TAG}!="", ENV{ID_FOR_SEAT}="$env{SUBSYSTEM}-$env{ID_PATH_TAG}"
|
||||||
|
|
||||||
|
LABEL="seat_end"
|
Loading…
Reference in New Issue