Re: [PATCH 2/3] HID: valve-index: Reboot headset on system power transitions
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Date: 2026-09-11 05:56:07
Also in:
linux-usb, lkml
On Thu, Sep 10, 2026 at 12:02:53PM -0500, Mario Limonciello wrote:
quoted hunk ↗ jump to hunk
The Valve Index HMD stops serving its EDID after the host disables the DisplayPort PHY. The headset remains powered by its breakout box across suspend and shutdown, so the bad state survives and the next connector detection reports "No EDID read". The HMD then appears as a synthesized 640x480 display until it is power-cycled. The 64-byte HID output report 0x16 with command 0x01 reboots the headset and restores its EDID service. Add a device-specific driver which sends this report for system sleep transitions and orderly shutdown while leaving runtime autosuspend alone. Resume a runtime-suspended interface for a shutdown request and restrict the command to the composite interface which declares report 0x16. Closes: https://gitlab.freedesktop.org/drm/amd/-/work_items/4333 Link: https://github.com/ValveSoftware/SteamVR-for-Linux/issues/939 Assisted-by: LLM Co-developed-by: Curtis Vogt <redacted> Signed-off-by: Curtis Vogt <redacted> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> --- .../ABI/testing/sysfs-driver-hid-valve-index | 12 ++ drivers/hid/Kconfig | 11 ++ drivers/hid/Makefile | 1 + drivers/hid/hid-ids.h | 1 + drivers/hid/hid-valve-index.c | 142 ++++++++++++++++++ 5 files changed, 167 insertions(+) create mode 100644 Documentation/ABI/testing/sysfs-driver-hid-valve-index create mode 100644 drivers/hid/hid-valve-index.cdiff --git a/Documentation/ABI/testing/sysfs-driver-hid-valve-index b/Documentation/ABI/testing/sysfs-driver-hid-valve-index new file mode 100644 index 0000000000000..47d8c26b1eace --- /dev/null +++ b/Documentation/ABI/testing/sysfs-driver-hid-valve-index@@ -0,0 +1,12 @@ +What: /sys/bus/hid/devices/<bus>:<vid>:<pid>.<n>/reboot +Date: October 2026 +Contact: linux-input@vger.kernel.org +Description: + Writing a boolean true value reboots the Valve Index headset to + recover its EDID service. Writing a boolean false value has no + effect. This file is write-only.
Shouldn't this just be a debugfs file? Making it a sysfs file seems "risky" as it's not a normal operation.
+ The Valve Index is a composite HID device. The reboot command is + only supported by the interface that provides the headset's 64-byte + output report. Writing true to this file on another interface fails + with -ENODEV.
Why would it be present on "another interface'? That feels wrong. thanks, greg k-h