mirror of
https://github.com/systemd/systemd.git
synced 2026-11-06 05:17:24 +00:00
If the device or one of its parent devices is marked as removable or unknown, then the device itself should be considered removable. For example, consider a device connected to a USB port of a dock: 1. xHCI Host Controller (devpath=0, maxchild=12, removable=unknown) 2. USB2.1 Hub (dock upstream) (devpath=3, maxchild=4, removable=removable) 3. USB2.1 Hub (inside dock) (devpath=3.2, maxchild=4, removable=fixed) 4. USB Device (devpath=3.2.4, maxchild=0, removable=unknown) Previously, the leaf device was considered as internal. With this change, the device is considered as external, as there is a removable parent. Fixes #43965.
31 lines
1.6 KiB
Plaintext
31 lines
1.6 KiB
Plaintext
# do not edit this file, it will be overwritten on update
|
|
|
|
# ID_INTEGRATION variable tells us if a device is internal (inherent part of the system) or external otherwise.
|
|
# This must be loaded after 60-persistent-*.rules to have ID_BUS.
|
|
|
|
ACTION=="remove", GOTO="integration_end"
|
|
ENV{ID_BUS}=="", GOTO="integration_end"
|
|
|
|
# ACPI, platform, PS/2, I2C, RMI, SPI and PCI devices: Internal by default.
|
|
ENV{ID_BUS}=="acpi|platform|i8042|i2c|rmi|spi|pci", ENV{ID_INTEGRATION}="internal", GOTO="libinput_integration_compat"
|
|
|
|
# Bluetooth devices: External by default.
|
|
ENV{ID_BUS}=="bluetooth", ENV{ID_INTEGRATION}="external", GOTO="libinput_integration_compat"
|
|
|
|
# USB devices
|
|
ENV{ID_BUS}!="usb", GOTO="libinput_integration_compat"
|
|
# Do not set integration for the USB root device.
|
|
SUBSYSTEM=="usb", ATTR{devpath}=="0", GOTO="libinput_integration_compat"
|
|
# Assume the device is external if any parent USB device is removable.
|
|
DRIVERS=="usb", ATTRS{removable}=="removable", ENV{ID_INTEGRATION}="external", GOTO="libinput_integration_compat"
|
|
# If no parent device is removable, check for fixed parent devices to assume it is internal.
|
|
DRIVERS=="usb", ATTRS{removable}=="fixed", ENV{ID_INTEGRATION}="internal", GOTO="libinput_integration_compat"
|
|
# Fallback: if all devices in the USB chain are unknown, assume it is external.
|
|
ENV{ID_INTEGRATION}="external", GOTO="libinput_integration_compat"
|
|
|
|
# libinput compatibility, must be loaded before 70-touchpad.rules to allow hwdb quirks to override.
|
|
LABEL="libinput_integration_compat"
|
|
ENV{ID_INPUT_TOUCHPAD}=="1", ENV{ID_INPUT_TOUCHPAD_INTEGRATION}="$env{ID_INTEGRATION}"
|
|
|
|
LABEL="integration_end"
|