summaryrefslogtreecommitdiff
path: root/drivers/input
AgeCommit message (Collapse)Author
2 daysMerge tag 'input-for-v7.4-rc0' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Pull input updates from Dmitry Torokhov: - Updates to input core to reject parent device overrides on managed input devices so devres lifetime management is not split across different devices, along with fixes for da7280, drv2665, drv2667, and tps6507x-ts that were reparenting managed input devices, and removal of redundant parent assignments across multiple drivers - A fix in input core to always accept EV_SYN events in input_event() and input_inject_event() so events seeded before device registration are properly flushed by input_sync() - A fix in matrix-keymap helper to reject keycodes above KEY_MAX and prevent out-of-bounds bitmap writes - Fixes and cleanups for HP GSC PS/2 (gscps2) serio driver to resolve race conditions in port list management, ring buffer access, and interrupt handling, return IRQ_NONE for unhandled shared interrupts, and drop busy-waiting on transmit - Fixes for maple_keyb driver to correct inverted key press detection, implement open and close methods so polling only runs while the device is open, and clean up unused driver fields - Fixes for maplecontrol driver to emit EV_SYN after reporting events, only enable axes reported by the controller with corrected hat limits, and stop polling and clear the callback on close - Updates to maplemouse driver to stop polling and clear the callback on close and drop redundant driver data cleanup - Fixes for matrix_keypad driver reverting forced switching of row GPIOs to input mode that broke row interrupts on platforms with separate GPIO and interrupt pinmux functions, and propagating the actual error code from matrix_keypad_build_keymap() - A fix for st-keyscan driver to keep the interrupt disabled while the peripheral clock is gated off to prevent bus faults, along with probe error handling improvements - A fix for mms114 touchscreen driver to disable interrupts before synthesizing touch release events during suspend so concurrent interrupts do not leave stuck active touch slots - Updates to xpad driver to support GameSir Nova Lite controller - A number of updates to device tree bindings, including a new schema for Analog Devices AD7147 CapTouch controller, conversion of SiS 9200 I2C touchscreen binding to DT schema format, and allowing the wakeup-source property on Dialog DA9062 onkey - Other assorted driver cleanups, style fixes, and conversions, including switching to named initializers for acpi_device_id tables and converting cyttsp5 to DEFINE_SIMPLE_DEV_PM_OPS. * tag 'input-for-v7.4-rc0' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: (94 commits) Revert "Input: matrix_keypad - force switch rows to input mode" Input: s6sy761 - drop duplicate axis initialization in s6sy761_probe() Input: always accept EV_SYN in input_event() dt-bindings: input: dlg,da9062-onkey: Allow wakeup-source property Input: xpad - add GameSir Nova Lite support Input: touchscreen - use named initializers for acpi_device_id Input: mouse - cyapa: use named initializers for acpi_device_id Input: misc - use named initializers for acpi_device_id Input: keyboard - use named initializers for acpi_device_id Input: reject parent overrides on managed input devices Input: tps6507x-ts - fix input device parent assignment Input: drv2667 - fix input device parent assignment Input: drv2665 - fix input device parent assignment Input: da7280 - fix input device parent assignment Input: maple_keyb - remove unused mdev->driver assignment Input: maplecontrol - remove unused mdev->driver assignment Input: maplemouse - remove unused mdev->driver assignment Input: maplecontrol - remove redundant drvdata resetting Input: maple_keyb - remove redundant drvdata resetting Input: maplemouse - remove redundant drvdata resetting ...
5 daysMerge tag 'soc-arm-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/socLinus Torvalds
Pull ARM SoC board file updates from Arnd Bergmann: "These are mostly smaller cleanups for the remaining platform code in arch/arm/, the most notable one being the conversion of the s3c/crag6410 board to use software nodes for GPIO references in place of plain GPIO numbers. The earlier plan was to drop the deprecated (since 7.3) board files here, which would have been a much larger set of changes, but that is now deferred to 7.5" * tag 'soc-arm-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: MAINTAINERS: Drop arm64 dts/intel path from ARM/SOCFPGA ARCHITECTURE ARM: tegra: Fix Trun -> Turn typo ARM: vexpress: fix device_node refcount leak in vexpress_smp_dt_prepare_cpus() ARM: vexpress: fix device_node refcount leak in vexpress_flags_set() MAINTAINERS: Change ARM Visconti5 architecture maintenance status to Odd Fixes ARM: mvebu: fix Cortex-A9 errata selection for Armada 38x ARM: OMAP2+: remove unused ctrl_module_wkup_44xx.h header ARM: EXYNOS: Replace __ASSEMBLY__ with __ASSEMBLER__ ARM: s3c: crag6410: use software nodes/properties to set up GPIO keys Input: samsung-keypad - remove support for platform data ARM: s3c: crag6410: switch keypad device to software properties ARM: s3c: register and attach software nodes for Samsung gpio_chips Input: samsung-keypad - handle compact binding dt-bindings: input: samsung,s3c6410-keypad: introduce compact binding ARM: imx6q: remove KSZ9021 PHY fixup ARM: imx: Fix suspend/resume crash with Clang CFI ARM: OMAP2+: Replace __ASSEMBLY__ with __ASSEMBLER__ soc: imx: Replace __ASSEMBLY__ with __ASSEMBLER__ in header file ARM: imx: Replace __ASSEMBLY__ with __ASSEMBLER__ MAINTAINERS: Add git tree for TI K3 ARCHITECTURE
8 daysMerge branch 'next' into for-linusDmitry Torokhov
Prepare input updates for 7.4 merge window.
8 daysRevert "Input: matrix_keypad - force switch rows to input mode"Alexander Kochetkov
This reverts commit 01c84b03d80aab9f04c4e3e1f9085f4202ff7c29. The commit makes every scan call gpiod_direction_input() on the row GPIOs. On pin controllers where GPIO input and interrupt are separate pinmux functions this switches the row pins out of interrupt mode, and enable_row_irqs() does not switch them back: it only unmasks the interrupts. Row interrupts then never arrive and the keypad stops working. Seen with a matrix keypad on an Allwinner A64 board (PINE A64-LTS); it works again with the commit reverted. The workaround is not needed on Ingenic either: the author of the reverted commit re-tested all available JZ47xx SoCs and they all report the live pin state in interrupt mode, see the thread in Link. Fixes: 01c84b03d80a ("Input: matrix_keypad - force switch rows to input mode") Link: https://lore.kernel.org/all/4130C026-2A83-408B-836A-ECA044491C47@gmail.com/ Cc: stable@vger.kernel.org Signed-off-by: Alexander Kochetkov <al.kochet@gmail.com> Acked-by: Siarhei Volkau <lis8215@gmail.com> Acked-by: Paul Cercueil <paul@crapouillou.net> Link: https://patch.msgid.link/20261002100935.449473-1-al.kochet@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
8 daysInput: s6sy761 - drop duplicate axis initialization in s6sy761_probe()Dmitry Torokhov
ABS_MT_TOUCH_MAJOR and ABS_MT_TOUCH_MINOR are initialized twice with identical parameters in s6sy761_probe(). Remove the duplicate calls. Reported-by: sashiko-bot@kernel.org Assisted-by: LLM Reviewed-by: David Heidelberg <david@ixit.cz> Link: https://patch.msgid.link/asdjLHHNrrtjIKCb@google.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
8 daysInput: always accept EV_SYN in input_event()Dmitry Torokhov
Commit 0cd587735205 ("Input: preallocate memory to hold event values") moved allocation of dev->vals into input_allocate_device(), which caused input core to accumulate events reported while seeding initial device state before input_register_device(). However, because EV_SYN is only set in dev->evbit during input_register_device() (and some drivers also overwrite dev->evbit directly before registration), any EV_SYN/SYN_REPORT events sent before registration were dropped by is_event_supported(), leaving those seeded events stuck in dev->vals until the next SYN_REPORT after registration. Always accept EV_SYN in input_event() and input_inject_event() without checking dev->evbit so input_sync() flushes dev->vals as intended. Reported-by: Karlos Abel <kabel@voidship.net>, Fixes: 0cd587735205 ("Input: preallocate memory to hold event values") Cc: stable@vger.kernel.org Assisted-by: LLM Acked-by: Jiri Kosina <jkosina@suse.com> Link: https://patch.msgid.link/asx50uz6iafsyAd5@google.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: xpad - add GameSir Nova Lite supportFrancesco Orlando
Add vendor and product ID for GameSir Nova Lite (0x3537:0x1040) in XInput mode to enable force feedback rumble support. Signed-off-by: Francesco Orlando <francesco.orlando99@libero.it> Link: https://patch.msgid.link/20261011165821.72698-1-francesco.orlando99@libero.it Cc: stable@vger.kernel.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: touchscreen - use named initializers for acpi_device_idPawel Zalewski
Use a designated initializer for the acpi_device_id fields which makes the code more readable and consistent with how lists are initialized in the rest of the kernel code base. Also drop explicitly setting fields to 0 where it is redundant. Unify the list terminator to have a single space between the brackets and no trailing comma. Signed-off-by: Pawel Zalewski <pzalewski@thegoodpenguin.co.uk> Link: https://patch.msgid.link/20261013-acpi-input-v1-4-53ad09ba82b7@thegoodpenguin.co.uk Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: mouse - cyapa: use named initializers for acpi_device_idPawel Zalewski
Use a designated initializer for the acpi_device_id fields which makes the code more readable and consistent with how lists are initialized in the rest of the kernel code base. Also drop explicitly setting fields to 0 where it is redundant. Signed-off-by: Pawel Zalewski <pzalewski@thegoodpenguin.co.uk> Link: https://patch.msgid.link/20261013-acpi-input-v1-3-53ad09ba82b7@thegoodpenguin.co.uk Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: misc - use named initializers for acpi_device_idPawel Zalewski
Use a designated initializer for the acpi_device_id fields which makes the code more readable and consistent with how lists are initialized in the rest of the kernel code base. Also drop explicitly setting fields to 0 where it is redundant. Unify the list terminator to have a single space between the brackets and no trailing comma. Signed-off-by: Pawel Zalewski <pzalewski@thegoodpenguin.co.uk> Link: https://patch.msgid.link/20261013-acpi-input-v1-2-53ad09ba82b7@thegoodpenguin.co.uk Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: keyboard - use named initializers for acpi_device_idPawel Zalewski
Use a designated initializer for the acpi_device_id fields which makes the code more readable and consistent with how lists are initialized in the rest of the kernel code base. Also drop explicitly setting fields to 0 where it is redundant. Unify the list terminator to have a single space between the brackets and no trailing comma. Signed-off-by: Pawel Zalewski <pzalewski@thegoodpenguin.co.uk> Link: https://patch.msgid.link/20261013-acpi-input-v1-1-53ad09ba82b7@thegoodpenguin.co.uk Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: reject parent overrides on managed input devicesDmitry Torokhov
When an input device is allocated with devm_input_allocate_device(), the owner struct device is set as dev->dev.parent and holds the devm_input_device_release resource. Later, input_register_device() attaches the devm_input_device_unregister resource to dev->dev.parent. Clearing or overriding dev->dev.parent before registration splits devres ownership across different devices, which breaks managed lifetime assumptions. Verify via devres_find() that dev->dev.parent is non-NULL and still holds the matching devm_input_device_release entry before registering a managed input device, rejecting registration with -EINVAL otherwise. Also add KUnit test coverage in input_test.c verifying that reparented and NULL-parent managed input devices are rejected while preserving the owner parent succeeds. Assisted-by: LLM Link: https://patch.msgid.link/asmCc1VxVPLIMgY6@google.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: tps6507x-ts - fix input device parent assignmentDmitry Torokhov
Assigning the MFD parent device (tsc->dev) instead of the platform device (&pdev->dev) as the parent device after devm_input_allocate_device(&pdev->dev) splits devres management across two devices. As a result, input_register_device() attaches the devm unregistration action to the MFD parent device rather than the platform device, leaving the input device registered when the platform driver unbinds. devm_input_allocate_device(&pdev->dev) already sets input_dev->dev.parent to &pdev->dev. Drop the redundant and erroneous assignment. Fixes: 2e2a0db8c88d ("Input: tps6507x-ts - update to devm_* API") Assisted-by: LLM Link: https://patch.msgid.link/20261008094736.918137-4-dmitry.torokhov@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: drv2667 - fix input device parent assignmentDmitry Torokhov
Assigning the I2C bus controller (client->dev.parent) instead of the I2C client (&client->dev) as the parent device after devm_input_allocate_device() causes input_register_device() to attach the devm unregistration action to the parent controller device rather than the client device. This leaves the input device registered on driver unbind, leading to use-after-free. devm_input_allocate_device() already sets input_dev->dev.parent to &client->dev. Drop the redundant and erroneous assignment. Fixes: 1c24622572d6 ("Input: add support for the DRV2667 haptic driver") Assisted-by: LLM Link: https://patch.msgid.link/20261008094736.918137-3-dmitry.torokhov@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: drv2665 - fix input device parent assignmentDmitry Torokhov
Assigning the I2C bus controller (client->dev.parent) instead of the I2C client (&client->dev) as the parent device after devm_input_allocate_device() causes input_register_device() to attach the devm unregistration action to the parent controller device rather than the client device. This leaves the input device registered on driver unbind, leading to use-after-free. devm_input_allocate_device() already sets input_dev->dev.parent to &client->dev. Drop the redundant and erroneous assignment. Fixes: 4d10da13467e ("Input: add TI drv2665 haptics driver") Assisted-by: LLM Link: https://patch.msgid.link/20261008094736.918137-2-dmitry.torokhov@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: da7280 - fix input device parent assignmentDmitry Torokhov
Assigning the I2C bus controller (client->dev.parent) instead of the I2C client (&client->dev) as the parent device after devm_input_allocate_device() causes input_register_device() to attach the devm unregistration action to the parent controller device rather than the client device. This leaves the input device registered on driver unbind, leading to use-after-free. devm_input_allocate_device() already sets input_dev->dev.parent to &client->dev. Drop the redundant and erroneous assignment. Fixes: cd3f609823a5 ("Input: new da7280 haptic driver") Assisted-by: LLM Link: https://patch.msgid.link/20261008094736.918137-1-dmitry.torokhov@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: maple_keyb - remove unused mdev->driver assignmentDmitry Torokhov
The driver field in struct maple_device is no longer used since commit 1795cf48b322 ("sh/maple: clean maple bus code") which removed the reading of this field. Remove the unused assignment to mdev->driver and the now unused mdrv variable in probe_maple_kbd. Assisted-by: Antigravity:gemini-3.5-flash Link: https://patch.msgid.link/20260703-b4-maple-cleanup-v1-13-41e424964da5@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: maplecontrol - remove unused mdev->driver assignmentDmitry Torokhov
The driver field in struct maple_device is no longer used since commit 1795cf48b322 ("sh/maple: clean maple bus code") which removed the reading of this field. Remove the unused assignment to mdev->driver and the now unused mdrv variable in probe_maple_controller. Assisted-by: Antigravity:gemini-3.5-flash Link: https://patch.msgid.link/20260703-b4-maple-cleanup-v1-12-41e424964da5@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: maplemouse - remove unused mdev->driver assignmentDmitry Torokhov
The driver field in struct maple_device is no longer used since commit 1795cf48b322 ("sh/maple: clean maple bus code") which removed the reading of this field. Remove the unused assignment to mdev->driver and the now unused mdrv variable in probe_maple_mouse. Assisted-by: Antigravity:gemini-3.5-flash Link: https://patch.msgid.link/20260703-b4-maple-cleanup-v1-11-41e424964da5@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: maplecontrol - remove redundant drvdata resettingDmitry Torokhov
The driver core automatically resets driver data to NULL on probe failures and device removal, so we can remove it from the driver. Assisted-by: Antigravity:gemini-3.5-flash Link: https://patch.msgid.link/20260703-b4-maple-cleanup-v1-10-41e424964da5@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: maple_keyb - remove redundant drvdata resettingDmitry Torokhov
The driver core automatically resets driver data to NULL on probe failures and device removal, so we can remove it from the driver. Assisted-by: Antigravity:gemini-3.5-flash Link: https://patch.msgid.link/20260703-b4-maple-cleanup-v1-9-41e424964da5@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: maplemouse - remove redundant drvdata resettingDmitry Torokhov
The driver core automatically resets driver data to NULL on probe failures and device removal, so we can remove it from the driver. Assisted-by: Antigravity:gemini-3.5-flash Link: https://patch.msgid.link/20260703-b4-maple-cleanup-v1-8-41e424964da5@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: maple_keyb - implement open and close methodsDmitry Torokhov
Instead of polling the keyboard constantly from probe, implement open and close methods for the input device to only start polling when the device is actually opened by userspace, and stop polling when it is closed. This matches the behavior of maplemouse and maplecontrol drivers. Assisted-by: Antigravity:gemini-3.5-flash Link: https://patch.msgid.link/20260703-b4-maple-cleanup-v1-7-41e424964da5@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: maplemouse - stop polling and clear callback on closeDmitry Torokhov
In dc_mouse_close(), pass NULL instead of dc_mouse_callback to maple_getcond_callback() to both stop polling and clear the callback pointer when the input device is closed. This makes the manual clearing of mdev->callback in remove_maple_mouse() redundant, as input_unregister_device() automatically closes the device if it was open. Remove the redundant assignment. Assisted-by: Antigravity:gemini-3.5-flash Link: https://patch.msgid.link/20260703-b4-maple-cleanup-v1-4-41e424964da5@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: maplecontrol - stop polling and clear callback on closeDmitry Torokhov
In dc_pad_close(), pass NULL instead of dc_pad_callback to maple_getcond_callback() to both stop polling and clear the callback pointer when the input device is closed. This makes the manual clearing of mdev->callback in remove_maple_controller() redundant, as input_unregister_device() automatically closes the device if it was open. Remove the redundant assignment. Assisted-by: Antigravity:gemini-3.5-flash Link: https://patch.msgid.link/20260703-b4-maple-cleanup-v1-5-41e424964da5@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: maplecontrol - emit EV_SYN report after reporting eventsDmitry Torokhov
The driver decodes controller packets and reports button presses and axis positions in dc_pad_callback(), but never calls input_sync() to signal completion of the input report frame. Consequently, events remain pending without waking up userspace readers. Emit an EV_SYN/SYN_REPORT event after reporting buttons and axis states. Fixes: 01461d7e65a6 ("Input: add support for Maple controller as a joystick") Reported-by: sashiko-bot@kernel.org Closes: https://lore.kernel.org/r/20260704061045.036701F000E9@smtp.kernel.org Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: maplecontrol - only enable present axesDmitry Torokhov
The driver was unconditionally enabling all possible analog axes and hats on the input device, even if the controller reported it did not have them in its function data. Move the input_set_abs_params() calls inside the capability check loop so that only actually present axes are enabled on the input device. Also, correct the D-pad (hat) axis limits. They were initialized with inverted limits (min=1, max=-1). Correct them to min=-1, max=1, which matches the values (-1, 0, 1) reported by the driver. Assisted-by: Antigravity:gemini-3.5-flash Link: https://patch.msgid.link/20260703-b4-maple-cleanup-v1-3-41e424964da5@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
13 daysInput: maple_keyb - fix key press detectionDmitry Torokhov
The key press detection logic was using ptr instead of !ptr (where ptr is the result of memchr searching for the new key in the old keys). If ptr is not NULL, it means the key was already pressed in the previous report, so it is not a new press. If ptr is NULL, it means the key was not pressed before, so it is a new press. Using ptr instead of !ptr caused new presses to be ignored in the first poll cycle (only reported in the second cycle if still held, because then it was in 'old'), and caused redundant press events to be sent on every subsequent poll while the key was held. Fix this by using !ptr for press detection, matching the release detection logic. Fixes: b11d2127c489 ("Input: add support for SEGA Dreamcast keyboard") Assisted-by: Antigravity:gemini-3.5-flash Tested-by: Florian Fuchs <fuchsfl@gmail.com> Link: https://patch.msgid.link/20260703-b4-maple-cleanup-v1-2-41e424964da5@gmail.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-11Merge tag 'input-for-v7.3-rc6' of ↵Linus Torvalds
git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input Pull input fixes from Dmitry Torokhov: - A fix for the ati_remote2 sysfs attributes handling, resolving type confusion after conversion to dev_groups - Updates to the xpad joystick driver adding support for the Corsair Novablade Pro controller (wired and 2.4 GHz wireless) and a newer hardware revision of the 8BitDo Pro 2 Wired Controller for Xbox. * tag 'input-for-v7.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input: Input: xpad - add support for 8BitDo Pro 2 Wired Controller for Xbox Input: xpad - add support for Corsair Novablade Pro Input: ati_remote2 - fix type confusion in device attribute handlers
2026-10-10Input: st-keyscan - disable interrupt while clock is gatedDmitry Torokhov
The driver gates off its peripheral clock when the input device is not open and during system suspend without wakeup. However, the interrupt is requested without IRQF_NO_AUTOEN and remains unmasked when the device is stopped. If a pending or spurious interrupt fires while the clock is disabled, keyscan_isr() will attempt to read the matrix state register with the clock gated off, triggering a bus fault (synchronous external abort) and panicking the system. Request the interrupt with IRQF_NO_AUTOEN, enable it in keyscan_start(), and disable it in keyscan_stop() prior to gating the clock. Drop the pointless clock enable/stop sequence in keyscan_probe(), leaving the clock gated and hardware untouched until the device is opened. Fixes: 062589b13991 ("Input: add st-keyscan driver") Reported-by: sashiko-bot@kernel.org Assisted-by: LLM Link: https://patch.msgid.link/apK-PZ5c97mCxBSC@google.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: mms114 - fix touch slot corruption in suspendDmitry Torokhov
In mms114_suspend, the driver synthesizes touch release events for all slots and calls input_sync before disabling the hardware interrupt via mms114_stop. Because the threaded interrupt handler runs independently and does not share a lock with this early part of the suspend path, an incoming hardware interrupt can fire after input_sync completes but before disable_irq is invoked. If a touch event arrives during this window, the interrupt handler reports the touch slot as active again, overwriting the synthetic release event right before the system goes to sleep. Upon resume, lifting the finger does not generate a release interrupt, potentially leaving userspace with a stuck active touch slot. Fix this race by calling mms114_stop, which disables the IRQ and synchronizes with any executing interrupt handler, before synthesizing the touch release events. Also ensure that we only synthesize touch release events if the input device is enabled, keeping the entire suspend sequence protected by input_dev->mutex. Reported-by: sashiko-bot@kernel.org Assisted-by: Antigravity:gemini-3.6-flash Link: https://patch.msgid.link/anKxGkyRRu5A92Q_@google.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: xpad - add support for 8BitDo Pro 2 Wired Controller for XboxBihaan Sen
The 8BitDo Pro 2 Wired Controller for Xbox is already matched by the vendor-wide XPAD_XBOXONE_VENDOR(0x2dc8) entry, but a later hardware revision reports product ID 0x201e, which has no entry in the xpad_device table. The device therefore binds and functions but is exposed to userspace as "Generic X-Box pad". Add the VID/PID pair so the controller is named correctly, and set MAP_SHARE_BUTTON to expose the share button as KEY_RECORD. Signed-off-by: Bihaan Sen <stevewholikesthings@gmail.com> Link: https://patch.msgid.link/20260925114459.110253-1-stevewholikesthings@gmail.com Cc: stable@vger.kernel.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: xpad - add support for Corsair Novablade ProKrzysztof Furman
Add device IDs for the Corsair Novablade Pro leverless fight controller in both wired (0x2b1f) and 2.4 GHz receiver (0x2b2b) modes, and add Corsair's vendor ID to the Xbox 360 vendor match list. Outside of its PS4/PS5 modes the controller uses the Xbox 360 protocol (vendor-specific class, subclass 93, protocol 1) on interface 0, which xpad does not currently bind, so no gamepad device is created. The PS4/PS5 modes present a standard HID gamepad and already work with hid-generic. Tested on 7.2.5 with the 2.4 GHz receiver and wired. Assisted-by: Claude Opus 5.5 Signed-off-by: Krzysztof Furman <krisfur@proton.me> Link: https://patch.msgid.link/20261009-xpad-corsair-novablade-v1-1-e58746bef99f@proton.me Cc: stable@vger.kernel.org Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: wm97xx - drop redundant wm->input_dev->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes wm->input_dev->dev.parent to the supplied parent device, so the explicit assignment in wm97xx_register_touch() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: wm831x-ts - drop redundant input_dev->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input_dev->dev.parent to the supplied parent device, so the explicit assignment in wm831x_ts_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: sx8654 - drop redundant input->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input->dev.parent to the supplied parent device, so the explicit assignment in sx8654_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: mms114 - drop redundant input_dev->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input_dev->dev.parent to the supplied parent device, so the explicit assignment in mms114_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: max11801-ts - drop redundant input_dev->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input_dev->dev.parent to the supplied parent device, so the explicit assignment in max11801_ts_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: jornada720-ts - drop redundant input_dev->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input_dev->dev.parent to the supplied parent device, so the explicit assignment in jornada720_ts_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: hycon-hy46xx - drop redundant input->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input->dev.parent to the supplied parent device, so the explicit assignment in hycon_hy46xx_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: edt-ft5x06 - drop redundant input->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input->dev.parent to the supplied parent device, so the explicit assignment in edt_ft5x06_ts_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: da9034-ts - drop redundant input_dev->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input_dev->dev.parent to the supplied parent device, so the explicit assignment in da9034_touch_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: cyttsp - drop redundant input_dev->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input_dev->dev.parent to the supplied parent device, so the explicit assignment in cyttsp_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: colibri-vf50-ts - drop redundant input->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input->dev.parent to the supplied parent device, so the explicit assignment in vf50_ts_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: chipone-icn8318 - drop redundant input->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input->dev.parent to the supplied parent device, so the explicit assignment in icn8318_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: bcm-iproc-tsc - drop redundant idev->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes idev->dev.parent to the supplied parent device, so the explicit assignment in iproc_ts_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: ar1021-i2c - drop redundant input->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input->dev.parent to the supplied parent device, so the explicit assignment in ar1021_i2c_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: ad7879 - drop redundant input_dev->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input_dev->dev.parent to the supplied parent device, so the explicit assignment in ad7879_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: ad7877 - drop redundant input_dev->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes input_dev->dev.parent to the supplied parent device, so the explicit assignment in ad7877_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
2026-10-09Input: wm831x-on - drop redundant wm831x_on->dev->dev.parent assignmentDmitry Torokhov
devm_input_allocate_device() already initializes wm831x_on->dev->dev.parent to the supplied parent device, so the explicit assignment in wm831x_on_probe() is redundant. Remove it. Assisted-by: LLM Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>