mirror of
https://github.com/systemd/systemd
synced 2024-10-06 16:21:34 +00:00
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 += \
|
||||
src/login/70-uaccess.rules \
|
||||
src/login/71-seat.rules \
|
||||
src/login/70-power-switch.rules
|
||||
|
||||
nodist_udevrules_DATA += \
|
||||
src/login/71-seat.rules \
|
||||
src/login/73-seat-late.rules
|
||||
|
||||
MANPAGES += \
|
||||
|
@ -2943,12 +2943,14 @@ EXTRA_DIST += \
|
|||
src/login/logind-gperf.gperf \
|
||||
src/login/libsystemd-login.pc.in \
|
||||
src/login/libsystemd-login.sym \
|
||||
src/login/71-seat.rules.in \
|
||||
src/login/73-seat-late.rules.in \
|
||||
units/systemd-logind.service.in \
|
||||
units/systemd-user-sessions.service.in
|
||||
|
||||
CLEANFILES += \
|
||||
src/login/logind-gperf.c \
|
||||
src/login/71-seat.rules \
|
||||
src/login/73-seat-late.rules
|
||||
endif
|
||||
# ------------------------------------------------------------------------------
|
||||
|
|
3
TODO
3
TODO
|
@ -1,5 +1,4 @@
|
|||
Fedora 18:
|
||||
* fix mimo VID/PID check that claims "innocent" hubs
|
||||
* chrony/ntp target?
|
||||
|
||||
Bugfixes:
|
||||
|
@ -51,8 +50,6 @@ Features:
|
|||
- implement .d/ auto includes for unit files
|
||||
- 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
|
||||
|
||||
* steal SBF management from the kernel
|
||||
|
|
1
src/login/.gitignore
vendored
1
src/login/.gitignore
vendored
|
@ -1,4 +1,5 @@
|
|||
/libsystemd-login.pc
|
||||
/logind-gperf.c
|
||||
/org.freedesktop.login1.policy
|
||||
/71-seat.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"
|
46
src/login/71-seat.rules.in
Normal file
46
src/login/71-seat.rules.in
Normal file
|
@ -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 a new issue