hwdb: Permit unsetting power/persist for USB devices

The USB persist feature allows devices that can retain their state when
powered down to work across suspend/resume. This is in particular useful
for USB drives.

However, the persist feature can get in the way for devices that are
unable to retain their state when power is lost. An example of such
stateful devices are fingerprint readers where USB persist should be
disabled to ensure userspace can detect whether the USB device had a
power loss during system suspend.

This will initially be used by the libfprint autosuspend hwdb.

Closes: #20754
This commit is contained in:
Benjamin Berg 2021-09-15 18:37:24 +02:00
parent 7e99216c1d
commit bd37360a21
3 changed files with 12 additions and 0 deletions

View file

@ -24,6 +24,13 @@
#
# Allowed properties are:
# ID_AUTOSUSPEND=1
# ID_PERSIST=0
#
# ID_PERSIST=0 allows disabling the kernels USB "persist" feature, which allows
# the continued use of devices after a power loss (due to suspend). Disable it
# if the device will loose state without a USB power session and the driver
# is unable to recover the state when resuming. See
# https://www.kernel.org/doc/html/latest/driver-api/usb/persist.html
# Sort by brand, model

View file

@ -134,6 +134,7 @@ def property_grammar():
('MOUSE_WHEEL_CLICK_COUNT', INTEGER),
('MOUSE_WHEEL_CLICK_COUNT_HORIZONTAL', INTEGER),
('ID_AUTOSUSPEND', Or((Literal('0'), Literal('1')))),
('ID_PERSIST', Or((Literal('0'), Literal('1')))),
('ID_INPUT', Or((Literal('0'), Literal('1')))),
('ID_INPUT_ACCELEROMETER', Or((Literal('0'), Literal('1')))),
('ID_INPUT_JOYSTICK', Or((Literal('0'), Literal('1')))),

View file

@ -11,4 +11,8 @@ SUBSYSTEM=="i2c", ATTR{name}=="cyapa", \
ENV{ID_AUTOSUSPEND}=="1", TEST=="power/control", \
ATTR{power/control}="auto"
# Disable USB persist if hwdb says so.
ENV{ID_PERSIST}=="0", TEST=="power/persist", \
ATTR{power/persist}="0"
LABEL="autosuspend_end"