[PATCH v3 0/5] Add SW_TABLET_MODE support for AMD SFH convertibles
Basavaraj Natikar <[email protected]> Mon, 3 Aug 2026 23:22:25 +0530
| Newsgroups | org.kernel.vger.linux-input |
|---|---|
| Message-ID | <[email protected]> |
Add SW_TABLET_MODE support for AMD convertibles whose operating mode (laptop or tablet) is reported by the Sensor Fusion Hub. Patches 1 and 2 are preparation: the first tracks the MP2 version explicitly and the second serializes access to the shared emp2 pointer. The third adds a way to read the operating mode. The fourth registers an auxiliary device when the sensor is present, and the fifth is a small input driver that binds to it and reports the posture to userspace. Keeping the input handling in its own driver avoids pulling input/evdev into the sensor transport driver. Changes in v3: - Destroy the tablet-mode auxiliary device before the hardware teardown in .remove(), instead of from a devres action that runs afterwards, closing a use-after-teardown window (Sashiko review). - Move the Makefile entry to its correct alphabetical position (Dmitry Torokhov). Changes in v2 (address the Sashiko review of v1): - Read the operating-mode register only on confirmed MP2 v2, by tracking the MP2 version explicitly. On v1.0 that register overlaps the 64-bit DMA address programmed through C2P, so the earlier unconditional read could return DMA bits instead of the operating mode. - Serialize the shared emp2 pointer and all exported readers under a mutex, so a concurrent unbind can no longer free the device while a reader is still dereferencing it. - Publish emp2 only after initialization has populated the client data, and clear it early on the MP2 v2 remove path instead of from a prematurely registered devres action; this removes both the publish-before-init data race and the unconditional global clear on a probe failure. - Destroy the tablet-mode auxiliary device and release its id on removal, and allocate the id dynamically so multiple instances cannot collide. - Report the initial tablet-mode state before registering the input device, so userspace never observes a stale default posture. - Rename the error variable from 'rc' to 'error' to follow the input-subsystem convention. v2: https://lore.kernel.org/all/[email protected]/ v1: https://lore.kernel.org/all/[email protected]/ Basavaraj Natikar (5): HID: amd_sfh: Track MP2 version explicitly HID: amd_sfh: Serialize access to the shared emp2 pointer HID: amd_sfh: Add accessor to read the operating-mode sensor HID: amd_sfh: Register tablet-mode auxiliary device Input: misc: Add AMD SFH tablet-mode switch driver MAINTAINERS | 1 + drivers/hid/amd-sfh-hid/Kconfig | 1 + drivers/hid/amd-sfh-hid/amd_sfh_client.c | 16 ++++ drivers/hid/amd-sfh-hid/amd_sfh_common.h | 13 +++ drivers/hid/amd-sfh-hid/amd_sfh_pcie.c | 63 ++++++++++++++- .../amd-sfh-hid/sfh1_1/amd_sfh_interface.c | 39 +++++++++ .../amd-sfh-hid/sfh1_1/amd_sfh_interface.h | 1 - drivers/input/misc/Kconfig | 15 ++++ drivers/input/misc/Makefile | 1 + drivers/input/misc/amd_sfh_tabletmode.c | 81 +++++++++++++++++++ include/linux/amd-pmf-io.h | 14 ++++ 11 files changed, 240 insertions(+), 5 deletions(-) create mode 100644 drivers/input/misc/amd_sfh_tabletmode.c -- 2.34.1