From 0957d783931c0cd86aee25388142391c73977f59 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 12 May 2025 11:15:22 +0200 Subject: [PATCH] 6.6-stable patches added patches: input-cyttsp5-ensure-minimum-reset-pulse-width.patch input-cyttsp5-fix-power-control-issue-on-wakeup.patch input-mtk-pmic-keys-fix-possible-null-pointer-dereference.patch input-synaptics-enable-intertouch-on-dell-precision-m3800.patch input-synaptics-enable-intertouch-on-dynabook-portege-x30-d.patch input-synaptics-enable-intertouch-on-dynabook-portege-x30l-g.patch input-synaptics-enable-intertouch-on-tuxedo-infinitybook-pro-14-v5.patch input-synaptics-enable-smbus-for-hp-elitebook-850-g1.patch input-xpad-add-support-for-8bitdo-ultimate-2-wireless-controller.patch input-xpad-fix-share-button-on-xbox-one-controllers.patch input-xpad-fix-two-controller-table-values.patch staging-axis-fifo-correct-handling-of-tx_fifo_depth-for-size-validation.patch staging-axis-fifo-remove-hardware-resets-for-user-errors.patch staging-iio-adc-ad7816-correct-conditional-logic-for-store-mode.patch --- ...sp5-ensure-minimum-reset-pulse-width.patch | 48 +++++++ ...p5-fix-power-control-issue-on-wakeup.patch | 44 ++++++ ...ix-possible-null-pointer-dereference.patch | 40 ++++++ ...e-intertouch-on-dell-precision-m3800.patch | 32 +++++ ...intertouch-on-dynabook-portege-x30-d.patch | 38 ++++++ ...ntertouch-on-dynabook-portege-x30l-g.patch | 33 +++++ ...uch-on-tuxedo-infinitybook-pro-14-v5.patch | 36 +++++ ...enable-smbus-for-hp-elitebook-850-g1.patch | 31 +++++ ...bitdo-ultimate-2-wireless-controller.patch | 31 +++++ ...share-button-on-xbox-one-controllers.patch | 128 ++++++++++++++++++ ...xpad-fix-two-controller-table-values.patch | 44 ++++++ queue-6.6/series | 15 +- ...of-tx_fifo_depth-for-size-validation.patch | 38 ++++++ ...move-hardware-resets-for-user-errors.patch | 73 ++++++++++ ...ect-conditional-logic-for-store-mode.patch | 46 +++++++ 15 files changed, 676 insertions(+), 1 deletion(-) create mode 100644 queue-6.6/input-cyttsp5-ensure-minimum-reset-pulse-width.patch create mode 100644 queue-6.6/input-cyttsp5-fix-power-control-issue-on-wakeup.patch create mode 100644 queue-6.6/input-mtk-pmic-keys-fix-possible-null-pointer-dereference.patch create mode 100644 queue-6.6/input-synaptics-enable-intertouch-on-dell-precision-m3800.patch create mode 100644 queue-6.6/input-synaptics-enable-intertouch-on-dynabook-portege-x30-d.patch create mode 100644 queue-6.6/input-synaptics-enable-intertouch-on-dynabook-portege-x30l-g.patch create mode 100644 queue-6.6/input-synaptics-enable-intertouch-on-tuxedo-infinitybook-pro-14-v5.patch create mode 100644 queue-6.6/input-synaptics-enable-smbus-for-hp-elitebook-850-g1.patch create mode 100644 queue-6.6/input-xpad-add-support-for-8bitdo-ultimate-2-wireless-controller.patch create mode 100644 queue-6.6/input-xpad-fix-share-button-on-xbox-one-controllers.patch create mode 100644 queue-6.6/input-xpad-fix-two-controller-table-values.patch create mode 100644 queue-6.6/staging-axis-fifo-correct-handling-of-tx_fifo_depth-for-size-validation.patch create mode 100644 queue-6.6/staging-axis-fifo-remove-hardware-resets-for-user-errors.patch create mode 100644 queue-6.6/staging-iio-adc-ad7816-correct-conditional-logic-for-store-mode.patch diff --git a/queue-6.6/input-cyttsp5-ensure-minimum-reset-pulse-width.patch b/queue-6.6/input-cyttsp5-ensure-minimum-reset-pulse-width.patch new file mode 100644 index 0000000000..30c6f28918 --- /dev/null +++ b/queue-6.6/input-cyttsp5-ensure-minimum-reset-pulse-width.patch @@ -0,0 +1,48 @@ +From c6cb8bf79466ae66bd0d07338c7c505ce758e9d7 Mon Sep 17 00:00:00 2001 +From: Hugo Villeneuve +Date: Thu, 10 Apr 2025 14:46:32 -0400 +Subject: Input: cyttsp5 - ensure minimum reset pulse width + +From: Hugo Villeneuve + +commit c6cb8bf79466ae66bd0d07338c7c505ce758e9d7 upstream. + +The current reset pulse width is measured to be 5us on a +Renesas RZ/G2L SOM. The manufacturer's minimum reset pulse width is +specified as 10us. + +Extend reset pulse width to make sure it is long enough on all platforms. + +Also reword confusing comments about reset pin assertion. + +Fixes: 5b0c03e24a06 ("Input: Add driver for Cypress Generation 5 touchscreen") +Cc: stable@vger.kernel.org +Acked-by: Alistair Francis +Signed-off-by: Hugo Villeneuve +Link: https://lore.kernel.org/r/20250410184633.1164837-1-hugo@hugovil.com +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/input/touchscreen/cyttsp5.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/drivers/input/touchscreen/cyttsp5.c ++++ b/drivers/input/touchscreen/cyttsp5.c +@@ -865,13 +865,16 @@ static int cyttsp5_probe(struct device * + ts->input->phys = ts->phys; + input_set_drvdata(ts->input, ts); + +- /* Reset the gpio to be in a reset state */ ++ /* Assert gpio to be in a reset state */ + ts->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_HIGH); + if (IS_ERR(ts->reset_gpio)) { + error = PTR_ERR(ts->reset_gpio); + dev_err(dev, "Failed to request reset gpio, error %d\n", error); + return error; + } ++ ++ fsleep(10); /* Ensure long-enough reset pulse (minimum 10us). */ ++ + gpiod_set_value_cansleep(ts->reset_gpio, 0); + + /* Need a delay to have device up */ diff --git a/queue-6.6/input-cyttsp5-fix-power-control-issue-on-wakeup.patch b/queue-6.6/input-cyttsp5-fix-power-control-issue-on-wakeup.patch new file mode 100644 index 0000000000..c2c78051e0 --- /dev/null +++ b/queue-6.6/input-cyttsp5-fix-power-control-issue-on-wakeup.patch @@ -0,0 +1,44 @@ +From 7675b5efd81fe6d524e29d5a541f43201e98afa8 Mon Sep 17 00:00:00 2001 +From: Mikael Gonella-Bolduc +Date: Wed, 23 Apr 2025 09:52:43 -0400 +Subject: Input: cyttsp5 - fix power control issue on wakeup + +From: Mikael Gonella-Bolduc + +commit 7675b5efd81fe6d524e29d5a541f43201e98afa8 upstream. + +The power control function ignores the "on" argument when setting the +report ID, and thus is always sending HID_POWER_SLEEP. This causes a +problem when trying to wakeup. + +Fix by sending the state variable, which contains the proper HID_POWER_ON or +HID_POWER_SLEEP based on the "on" argument. + +Fixes: 3c98b8dbdced ("Input: cyttsp5 - implement proper sleep and wakeup procedures") +Cc: stable@vger.kernel.org +Signed-off-by: Mikael Gonella-Bolduc +Signed-off-by: Hugo Villeneuve +Reviewed-by: Alistair Francis +Link: https://lore.kernel.org/r/20250423135243.1261460-1-hugo@hugovil.com +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/input/touchscreen/cyttsp5.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/input/touchscreen/cyttsp5.c b/drivers/input/touchscreen/cyttsp5.c +index 14c43f0a6c21..071b7c9bf566 100644 +--- a/drivers/input/touchscreen/cyttsp5.c ++++ b/drivers/input/touchscreen/cyttsp5.c +@@ -580,7 +580,7 @@ static int cyttsp5_power_control(struct cyttsp5 *ts, bool on) + int rc; + + SET_CMD_REPORT_TYPE(cmd[0], 0); +- SET_CMD_REPORT_ID(cmd[0], HID_POWER_SLEEP); ++ SET_CMD_REPORT_ID(cmd[0], state); + SET_CMD_OPCODE(cmd[1], HID_CMD_SET_POWER); + + rc = cyttsp5_write(ts, HID_COMMAND_REG, cmd, sizeof(cmd)); +-- +2.49.0 + diff --git a/queue-6.6/input-mtk-pmic-keys-fix-possible-null-pointer-dereference.patch b/queue-6.6/input-mtk-pmic-keys-fix-possible-null-pointer-dereference.patch new file mode 100644 index 0000000000..775b079aa6 --- /dev/null +++ b/queue-6.6/input-mtk-pmic-keys-fix-possible-null-pointer-dereference.patch @@ -0,0 +1,40 @@ +From 11cdb506d0fbf5ac05bf55f5afcb3a215c316490 Mon Sep 17 00:00:00 2001 +From: Gary Bisson +Date: Tue, 29 Apr 2025 09:16:29 -0700 +Subject: Input: mtk-pmic-keys - fix possible null pointer dereference + +From: Gary Bisson + +commit 11cdb506d0fbf5ac05bf55f5afcb3a215c316490 upstream. + +In mtk_pmic_keys_probe, the regs parameter is only set if the button is +parsed in the device tree. However, on hardware where the button is left +floating, that node will most likely be removed not to enable that +input. In that case the code will try to dereference a null pointer. + +Let's use the regs struct instead as it is defined for all supported +platforms. Note that it is ok setting the key reg even if that latter is +disabled as the interrupt won't be enabled anyway. + +Fixes: b581acb49aec ("Input: mtk-pmic-keys - transfer per-key bit in mtk_pmic_keys_regs") +Signed-off-by: Gary Bisson +Cc: stable@vger.kernel.org +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/input/keyboard/mtk-pmic-keys.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/input/keyboard/mtk-pmic-keys.c ++++ b/drivers/input/keyboard/mtk-pmic-keys.c +@@ -147,8 +147,8 @@ static void mtk_pmic_keys_lp_reset_setup + u32 value, mask; + int error; + +- kregs_home = keys->keys[MTK_PMIC_HOMEKEY_INDEX].regs; +- kregs_pwr = keys->keys[MTK_PMIC_PWRKEY_INDEX].regs; ++ kregs_home = ®s->keys_regs[MTK_PMIC_HOMEKEY_INDEX]; ++ kregs_pwr = ®s->keys_regs[MTK_PMIC_PWRKEY_INDEX]; + + error = of_property_read_u32(keys->dev->of_node, "power-off-time-sec", + &long_press_debounce); diff --git a/queue-6.6/input-synaptics-enable-intertouch-on-dell-precision-m3800.patch b/queue-6.6/input-synaptics-enable-intertouch-on-dell-precision-m3800.patch new file mode 100644 index 0000000000..6ee44bfa16 --- /dev/null +++ b/queue-6.6/input-synaptics-enable-intertouch-on-dell-precision-m3800.patch @@ -0,0 +1,32 @@ +From a609cb4cc07aa9ab8f50466622814356c06f2c17 Mon Sep 17 00:00:00 2001 +From: Aditya Garg +Date: Wed, 7 May 2025 12:12:15 -0700 +Subject: Input: synaptics - enable InterTouch on Dell Precision M3800 + +From: Aditya Garg + +commit a609cb4cc07aa9ab8f50466622814356c06f2c17 upstream. + +Enable InterTouch mode on Dell Precision M3800 by adding "DLL060d" to +the list of SMBus-enabled variants. + +Reported-by: Markus Rathgeb +Signed-off-by: Aditya Garg +Link: https://lore.kernel.org/r/PN3PR01MB959789DD6D574E16141E5DC4B888A@PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM +Cc: stable@vger.kernel.org +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/input/mouse/synaptics.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -163,6 +163,7 @@ static const char * const topbuttonpad_p + + static const char * const smbus_pnp_ids[] = { + /* all of the topbuttonpad_pnp_ids are valid, we just add some extras */ ++ "DLL060d", /* Dell Precision M3800 */ + "LEN0048", /* X1 Carbon 3 */ + "LEN0046", /* X250 */ + "LEN0049", /* Yoga 11e */ diff --git a/queue-6.6/input-synaptics-enable-intertouch-on-dynabook-portege-x30-d.patch b/queue-6.6/input-synaptics-enable-intertouch-on-dynabook-portege-x30-d.patch new file mode 100644 index 0000000000..3d869584d2 --- /dev/null +++ b/queue-6.6/input-synaptics-enable-intertouch-on-dynabook-portege-x30-d.patch @@ -0,0 +1,38 @@ +From 6d7ea0881000966607772451b789b5fb5766f11d Mon Sep 17 00:00:00 2001 +From: Manuel Fombuena +Date: Wed, 7 May 2025 12:05:26 -0700 +Subject: Input: synaptics - enable InterTouch on Dynabook Portege X30-D + +From: Manuel Fombuena + +commit 6d7ea0881000966607772451b789b5fb5766f11d upstream. + +[ 5.989588] psmouse serio1: synaptics: Your touchpad (PNP: TOS0213 PNP0f03) says it can support a different bus. If i2c-hid and hid-rmi are not used, you might want to try setting psmouse.synaptics_intertouch to 1 and report this to linux-input@vger.kernel.org. +[ 6.039923] psmouse serio1: synaptics: Touchpad model: 1, fw: 9.32, id: 0x1e2a1, caps: 0xf00223/0x840300/0x12e800/0x52d884, board id: 3322, fw id: 2658004 + +The board is labelled TM3322. + +Present on the Toshiba / Dynabook Portege X30-D and possibly others. + +Confirmed working well with psmouse.synaptics_intertouch=1 and local build. + +Signed-off-by: Manuel Fombuena +Signed-off-by: Aditya Garg +Link: https://lore.kernel.org/r/PN3PR01MB9597711E7933A08389FEC31DB888A@PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM +Cc: stable@vger.kernel.org +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/input/mouse/synaptics.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -194,6 +194,7 @@ static const char * const smbus_pnp_ids[ + "SYN3221", /* HP 15-ay000 */ + "SYN323d", /* HP Spectre X360 13-w013dx */ + "SYN3257", /* HP Envy 13-ad105ng */ ++ "TOS0213", /* Dynabook Portege X30-D */ + NULL + }; + diff --git a/queue-6.6/input-synaptics-enable-intertouch-on-dynabook-portege-x30l-g.patch b/queue-6.6/input-synaptics-enable-intertouch-on-dynabook-portege-x30l-g.patch new file mode 100644 index 0000000000..2a29890830 --- /dev/null +++ b/queue-6.6/input-synaptics-enable-intertouch-on-dynabook-portege-x30l-g.patch @@ -0,0 +1,33 @@ +From 47d768b32e644b56901bb4bbbdb1feb01ea86c85 Mon Sep 17 00:00:00 2001 +From: Aditya Garg +Date: Wed, 7 May 2025 12:06:32 -0700 +Subject: Input: synaptics - enable InterTouch on Dynabook Portege X30L-G + +From: Aditya Garg + +commit 47d768b32e644b56901bb4bbbdb1feb01ea86c85 upstream. + +Enable InterTouch mode on Dynabook Portege X30L-G by adding "TOS01f6" to +the list of SMBus-enabled variants. + +Reported-by: Xuntao Chi +Tested-by: Xuntao Chi +Signed-off-by: Aditya Garg +Link: https://lore.kernel.org/r/PN3PR01MB959786E4AC797160CDA93012B888A@PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM +Cc: stable@vger.kernel.org +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/input/mouse/synaptics.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -194,6 +194,7 @@ static const char * const smbus_pnp_ids[ + "SYN3221", /* HP 15-ay000 */ + "SYN323d", /* HP Spectre X360 13-w013dx */ + "SYN3257", /* HP Envy 13-ad105ng */ ++ "TOS01f6", /* Dynabook Portege X30L-G */ + "TOS0213", /* Dynabook Portege X30-D */ + NULL + }; diff --git a/queue-6.6/input-synaptics-enable-intertouch-on-tuxedo-infinitybook-pro-14-v5.patch b/queue-6.6/input-synaptics-enable-intertouch-on-tuxedo-infinitybook-pro-14-v5.patch new file mode 100644 index 0000000000..4e4076d62e --- /dev/null +++ b/queue-6.6/input-synaptics-enable-intertouch-on-tuxedo-infinitybook-pro-14-v5.patch @@ -0,0 +1,36 @@ +From 2abc698ac77314e0de5b33a6d96a39c5159d88e4 Mon Sep 17 00:00:00 2001 +From: Aditya Garg +Date: Wed, 7 May 2025 12:09:00 -0700 +Subject: Input: synaptics - enable InterTouch on TUXEDO InfinityBook Pro 14 v5 + +From: Aditya Garg + +commit 2abc698ac77314e0de5b33a6d96a39c5159d88e4 upstream. + +Enable InterTouch mode on TUXEDO InfinityBook Pro 14 v5 by adding +"SYN1221" to the list of SMBus-enabled variants. + +Add support for InterTouch on SYN1221 by adding it to the list of +SMBus-enabled variants. + +Reported-by: Matthias Eilert +Tested-by: Matthias Eilert +Signed-off-by: Aditya Garg +Link: https://lore.kernel.org/r/PN3PR01MB9597C033C4BC20EE2A0C4543B888A@PN3PR01MB9597.INDPRD01.PROD.OUTLOOK.COM +Cc: stable@vger.kernel.org +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/input/mouse/synaptics.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -190,6 +190,7 @@ static const char * const smbus_pnp_ids[ + "LEN2054", /* E480 */ + "LEN2055", /* E580 */ + "LEN2068", /* T14 Gen 1 */ ++ "SYN1221", /* TUXEDO InfinityBook Pro 14 v5 */ + "SYN3003", /* HP EliteBook 850 G1 */ + "SYN3015", /* HP EliteBook 840 G2 */ + "SYN3052", /* HP EliteBook 840 G4 */ diff --git a/queue-6.6/input-synaptics-enable-smbus-for-hp-elitebook-850-g1.patch b/queue-6.6/input-synaptics-enable-smbus-for-hp-elitebook-850-g1.patch new file mode 100644 index 0000000000..3c19b26301 --- /dev/null +++ b/queue-6.6/input-synaptics-enable-smbus-for-hp-elitebook-850-g1.patch @@ -0,0 +1,31 @@ +From f04f03d3e99bc8f89b6af5debf07ff67d961bc23 Mon Sep 17 00:00:00 2001 +From: Dmitry Torokhov +Date: Wed, 7 May 2025 14:52:55 -0700 +Subject: Input: synaptics - enable SMBus for HP Elitebook 850 G1 + +From: Dmitry Torokhov + +commit f04f03d3e99bc8f89b6af5debf07ff67d961bc23 upstream. + +The kernel reports that the touchpad for this device can support +SMBus mode. + +Reported-by: jt +Link: https://lore.kernel.org/r/iys5dbv3ldddsgobfkxldazxyp54kay4bozzmagga6emy45jop@2ebvuxgaui4u +Cc: stable@vger.kernel.org +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/input/mouse/synaptics.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/input/mouse/synaptics.c ++++ b/drivers/input/mouse/synaptics.c +@@ -190,6 +190,7 @@ static const char * const smbus_pnp_ids[ + "LEN2054", /* E480 */ + "LEN2055", /* E580 */ + "LEN2068", /* T14 Gen 1 */ ++ "SYN3003", /* HP EliteBook 850 G1 */ + "SYN3015", /* HP EliteBook 840 G2 */ + "SYN3052", /* HP EliteBook 840 G4 */ + "SYN3221", /* HP 15-ay000 */ diff --git a/queue-6.6/input-xpad-add-support-for-8bitdo-ultimate-2-wireless-controller.patch b/queue-6.6/input-xpad-add-support-for-8bitdo-ultimate-2-wireless-controller.patch new file mode 100644 index 0000000000..06a783a7b8 --- /dev/null +++ b/queue-6.6/input-xpad-add-support-for-8bitdo-ultimate-2-wireless-controller.patch @@ -0,0 +1,31 @@ +From 22cd66a5db56a07d9e621367cb4d16ff0f6baf56 Mon Sep 17 00:00:00 2001 +From: Lode Willems +Date: Tue, 22 Apr 2025 13:24:27 +0200 +Subject: Input: xpad - add support for 8BitDo Ultimate 2 Wireless Controller + +From: Lode Willems + +commit 22cd66a5db56a07d9e621367cb4d16ff0f6baf56 upstream. + +This patch adds support for the 8BitDo Ultimate 2 Wireless Controller. +Tested using the wireless dongle and plugged in. + +Signed-off-by: Lode Willems +Link: https://lore.kernel.org/r/20250422112457.6728-1-me@lodewillems.com +Cc: stable@vger.kernel.org +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/input/joystick/xpad.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/input/joystick/xpad.c ++++ b/drivers/input/joystick/xpad.c +@@ -387,6 +387,7 @@ static const struct xpad_device { + { 0x2dc8, 0x3106, "8BitDo Ultimate Wireless / Pro 2 Wired Controller", 0, XTYPE_XBOX360 }, + { 0x2dc8, 0x3109, "8BitDo Ultimate Wireless Bluetooth", 0, XTYPE_XBOX360 }, + { 0x2dc8, 0x310a, "8BitDo Ultimate 2C Wireless Controller", 0, XTYPE_XBOX360 }, ++ { 0x2dc8, 0x310b, "8BitDo Ultimate 2 Wireless Controller", 0, XTYPE_XBOX360 }, + { 0x2dc8, 0x6001, "8BitDo SN30 Pro", 0, XTYPE_XBOX360 }, + { 0x2e24, 0x0652, "Hyperkin Duke X-Box One pad", 0, XTYPE_XBOXONE }, + { 0x2e24, 0x1688, "Hyperkin X91 X-Box One pad", 0, XTYPE_XBOXONE }, diff --git a/queue-6.6/input-xpad-fix-share-button-on-xbox-one-controllers.patch b/queue-6.6/input-xpad-fix-share-button-on-xbox-one-controllers.patch new file mode 100644 index 0000000000..7cfcf6f52a --- /dev/null +++ b/queue-6.6/input-xpad-fix-share-button-on-xbox-one-controllers.patch @@ -0,0 +1,128 @@ +From 4ef46367073b107ec22f46fe5f12176e87c238e8 Mon Sep 17 00:00:00 2001 +From: Vicki Pfau +Date: Sat, 10 May 2025 22:59:25 -0700 +Subject: Input: xpad - fix Share button on Xbox One controllers + +From: Vicki Pfau + +commit 4ef46367073b107ec22f46fe5f12176e87c238e8 upstream. + +The Share button, if present, is always one of two offsets from the end of the +file, depending on the presence of a specific interface. As we lack parsing for +the identify packet we can't automatically determine the presence of that +interface, but we can hardcode which of these offsets is correct for a given +controller. + +More controllers are probably fixable by adding the MAP_SHARE_BUTTON in the +future, but for now I only added the ones that I have the ability to test +directly. + +Signed-off-by: Vicki Pfau +Link: https://lore.kernel.org/r/20250328234345.989761-2-vi@endrift.com +Cc: stable@vger.kernel.org +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/input/joystick/xpad.c | 35 ++++++++++++++++++++--------------- + 1 file changed, 20 insertions(+), 15 deletions(-) + +--- a/drivers/input/joystick/xpad.c ++++ b/drivers/input/joystick/xpad.c +@@ -77,12 +77,13 @@ + * xbox d-pads should map to buttons, as is required for DDR pads + * but we map them to axes when possible to simplify things + */ +-#define MAP_DPAD_TO_BUTTONS (1 << 0) +-#define MAP_TRIGGERS_TO_BUTTONS (1 << 1) +-#define MAP_STICKS_TO_NULL (1 << 2) +-#define MAP_SELECT_BUTTON (1 << 3) +-#define MAP_PADDLES (1 << 4) +-#define MAP_PROFILE_BUTTON (1 << 5) ++#define MAP_DPAD_TO_BUTTONS BIT(0) ++#define MAP_TRIGGERS_TO_BUTTONS BIT(1) ++#define MAP_STICKS_TO_NULL BIT(2) ++#define MAP_SHARE_BUTTON BIT(3) ++#define MAP_PADDLES BIT(4) ++#define MAP_PROFILE_BUTTON BIT(5) ++#define MAP_SHARE_OFFSET BIT(6) + + #define DANCEPAD_MAP_CONFIG (MAP_DPAD_TO_BUTTONS | \ + MAP_TRIGGERS_TO_BUTTONS | MAP_STICKS_TO_NULL) +@@ -135,7 +136,7 @@ static const struct xpad_device { + { 0x03f0, 0x048D, "HyperX Clutch", 0, XTYPE_XBOX360 }, /* wireless */ + { 0x03f0, 0x0495, "HyperX Clutch Gladiate", 0, XTYPE_XBOXONE }, + { 0x03f0, 0x07A0, "HyperX Clutch Gladiate RGB", 0, XTYPE_XBOXONE }, +- { 0x03f0, 0x08B6, "HyperX Clutch Gladiate", 0, XTYPE_XBOXONE }, /* v2 */ ++ { 0x03f0, 0x08B6, "HyperX Clutch Gladiate", MAP_SHARE_BUTTON, XTYPE_XBOXONE }, /* v2 */ + { 0x03f0, 0x09B4, "HyperX Clutch Tanto", 0, XTYPE_XBOXONE }, + { 0x044f, 0x0f00, "Thrustmaster Wheel", 0, XTYPE_XBOX }, + { 0x044f, 0x0f03, "Thrustmaster Wheel", 0, XTYPE_XBOX }, +@@ -159,7 +160,7 @@ static const struct xpad_device { + { 0x045e, 0x0719, "Xbox 360 Wireless Receiver", MAP_DPAD_TO_BUTTONS, XTYPE_XBOX360W }, + { 0x045e, 0x0b00, "Microsoft X-Box One Elite 2 pad", MAP_PADDLES, XTYPE_XBOXONE }, + { 0x045e, 0x0b0a, "Microsoft X-Box Adaptive Controller", MAP_PROFILE_BUTTON, XTYPE_XBOXONE }, +- { 0x045e, 0x0b12, "Microsoft Xbox Series S|X Controller", MAP_SELECT_BUTTON, XTYPE_XBOXONE }, ++ { 0x045e, 0x0b12, "Microsoft Xbox Series S|X Controller", MAP_SHARE_BUTTON | MAP_SHARE_OFFSET, XTYPE_XBOXONE }, + { 0x046d, 0xc21d, "Logitech Gamepad F310", 0, XTYPE_XBOX360 }, + { 0x046d, 0xc21e, "Logitech Gamepad F510", 0, XTYPE_XBOX360 }, + { 0x046d, 0xc21f, "Logitech Gamepad F710", 0, XTYPE_XBOX360 }, +@@ -211,7 +212,7 @@ static const struct xpad_device { + { 0x0738, 0xcb29, "Saitek Aviator Stick AV8R02", 0, XTYPE_XBOX360 }, + { 0x0738, 0xf738, "Super SFIV FightStick TE S", 0, XTYPE_XBOX360 }, + { 0x07ff, 0xffff, "Mad Catz GamePad", 0, XTYPE_XBOX360 }, +- { 0x0b05, 0x1a38, "ASUS ROG RAIKIRI", 0, XTYPE_XBOXONE }, ++ { 0x0b05, 0x1a38, "ASUS ROG RAIKIRI", MAP_SHARE_BUTTON, XTYPE_XBOXONE }, + { 0x0b05, 0x1abb, "ASUS ROG RAIKIRI PRO", 0, XTYPE_XBOXONE }, + { 0x0c12, 0x0005, "Intec wireless", 0, XTYPE_XBOX }, + { 0x0c12, 0x8801, "Nyko Xbox Controller", 0, XTYPE_XBOX }, +@@ -389,7 +390,7 @@ static const struct xpad_device { + { 0x2dc8, 0x6001, "8BitDo SN30 Pro", 0, XTYPE_XBOX360 }, + { 0x2e24, 0x0652, "Hyperkin Duke X-Box One pad", 0, XTYPE_XBOXONE }, + { 0x2e24, 0x1688, "Hyperkin X91 X-Box One pad", 0, XTYPE_XBOXONE }, +- { 0x2e95, 0x0504, "SCUF Gaming Controller", MAP_SELECT_BUTTON, XTYPE_XBOXONE }, ++ { 0x2e95, 0x0504, "SCUF Gaming Controller", MAP_SHARE_BUTTON, XTYPE_XBOXONE }, + { 0x31e3, 0x1100, "Wooting One", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1200, "Wooting Two", 0, XTYPE_XBOX360 }, + { 0x31e3, 0x1210, "Wooting Lekker", 0, XTYPE_XBOX360 }, +@@ -1025,7 +1026,7 @@ static void xpad360w_process_packet(stru + * The report format was gleaned from + * https://github.com/kylelemons/xbox/blob/master/xbox.go + */ +-static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char *data) ++static void xpadone_process_packet(struct usb_xpad *xpad, u16 cmd, unsigned char *data, u32 len) + { + struct input_dev *dev = xpad->dev; + bool do_sync = false; +@@ -1066,8 +1067,12 @@ static void xpadone_process_packet(struc + /* menu/view buttons */ + input_report_key(dev, BTN_START, data[4] & BIT(2)); + input_report_key(dev, BTN_SELECT, data[4] & BIT(3)); +- if (xpad->mapping & MAP_SELECT_BUTTON) +- input_report_key(dev, KEY_RECORD, data[22] & BIT(0)); ++ if (xpad->mapping & MAP_SHARE_BUTTON) { ++ if (xpad->mapping & MAP_SHARE_OFFSET) ++ input_report_key(dev, KEY_RECORD, data[len - 26] & BIT(0)); ++ else ++ input_report_key(dev, KEY_RECORD, data[len - 18] & BIT(0)); ++ } + + /* buttons A,B,X,Y */ + input_report_key(dev, BTN_A, data[4] & BIT(4)); +@@ -1215,7 +1220,7 @@ static void xpad_irq_in(struct urb *urb) + xpad360w_process_packet(xpad, 0, xpad->idata); + break; + case XTYPE_XBOXONE: +- xpadone_process_packet(xpad, 0, xpad->idata); ++ xpadone_process_packet(xpad, 0, xpad->idata, urb->actual_length); + break; + default: + xpad_process_packet(xpad, 0, xpad->idata); +@@ -1972,7 +1977,7 @@ static int xpad_init_input(struct usb_xp + xpad->xtype == XTYPE_XBOXONE) { + for (i = 0; xpad360_btn[i] >= 0; i++) + input_set_capability(input_dev, EV_KEY, xpad360_btn[i]); +- if (xpad->mapping & MAP_SELECT_BUTTON) ++ if (xpad->mapping & MAP_SHARE_BUTTON) + input_set_capability(input_dev, EV_KEY, KEY_RECORD); + } else { + for (i = 0; xpad_btn[i] >= 0; i++) diff --git a/queue-6.6/input-xpad-fix-two-controller-table-values.patch b/queue-6.6/input-xpad-fix-two-controller-table-values.patch new file mode 100644 index 0000000000..90856b805a --- /dev/null +++ b/queue-6.6/input-xpad-fix-two-controller-table-values.patch @@ -0,0 +1,44 @@ +From d05a424bea9aa3435009d5c462055008cc1545d8 Mon Sep 17 00:00:00 2001 +From: Vicki Pfau +Date: Fri, 28 Mar 2025 16:43:36 -0700 +Subject: Input: xpad - fix two controller table values + +From: Vicki Pfau + +commit d05a424bea9aa3435009d5c462055008cc1545d8 upstream. + +Two controllers -- Mad Catz JOYTECH NEO SE Advanced and PDP Mirror's +Edge Official -- were missing the value of the mapping field, and thus +wouldn't detect properly. + +Signed-off-by: Vicki Pfau +Link: https://lore.kernel.org/r/20250328234345.989761-1-vi@endrift.com +Fixes: 540602a43ae5 ("Input: xpad - add a few new VID/PID combinations") +Fixes: 3492321e2e60 ("Input: xpad - add multiple supported devices") +Cc: stable@vger.kernel.org +Signed-off-by: Dmitry Torokhov +Signed-off-by: Greg Kroah-Hartman +--- + drivers/input/joystick/xpad.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/input/joystick/xpad.c ++++ b/drivers/input/joystick/xpad.c +@@ -206,7 +206,7 @@ static const struct xpad_device { + { 0x0738, 0x9871, "Mad Catz Portable Drum", 0, XTYPE_XBOX360 }, + { 0x0738, 0xb726, "Mad Catz Xbox controller - MW2", 0, XTYPE_XBOX360 }, + { 0x0738, 0xb738, "Mad Catz MVC2TE Stick 2", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOX360 }, +- { 0x0738, 0xbeef, "Mad Catz JOYTECH NEO SE Advanced GamePad", XTYPE_XBOX360 }, ++ { 0x0738, 0xbeef, "Mad Catz JOYTECH NEO SE Advanced GamePad", 0, XTYPE_XBOX360 }, + { 0x0738, 0xcb02, "Saitek Cyborg Rumble Pad - PC/Xbox 360", 0, XTYPE_XBOX360 }, + { 0x0738, 0xcb03, "Saitek P3200 Rumble Pad - PC/Xbox 360", 0, XTYPE_XBOX360 }, + { 0x0738, 0xcb29, "Saitek Aviator Stick AV8R02", 0, XTYPE_XBOX360 }, +@@ -241,7 +241,7 @@ static const struct xpad_device { + { 0x0e6f, 0x0146, "Rock Candy Wired Controller for Xbox One", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x0147, "PDP Marvel Xbox One Controller", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x015c, "PDP Xbox One Arcade Stick", MAP_TRIGGERS_TO_BUTTONS, XTYPE_XBOXONE }, +- { 0x0e6f, 0x015d, "PDP Mirror's Edge Official Wired Controller for Xbox One", XTYPE_XBOXONE }, ++ { 0x0e6f, 0x015d, "PDP Mirror's Edge Official Wired Controller for Xbox One", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x0161, "PDP Xbox One Controller", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x0162, "PDP Xbox One Controller", 0, XTYPE_XBOXONE }, + { 0x0e6f, 0x0163, "PDP Xbox One Controller", 0, XTYPE_XBOXONE }, diff --git a/queue-6.6/series b/queue-6.6/series index 29a133941e..c0771022f2 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -8,7 +8,6 @@ ksmbd-prevent-out-of-bounds-stream-writes-by-validating-pos.patch ksmbd-fix-uaf-in-__close_file_table_ids.patch openvswitch-fix-unsafe-attribute-parsing-in-output_userspace.patch ksmbd-fix-memory-leak-in-parse_lease_state.patch -s390-entry-fix-last-breaking-event-handling-in-case-.patch sch_htb-make-htb_deactivate-idempotent.patch gre-fix-again-ipv6-link-local-address-generation.patch netdevice-add-netdev_tx_reset_subqueue-shorthand.patch @@ -24,3 +23,17 @@ net-dsa-b53-fix-flushing-old-pvid-vlan-on-pvid-chang.patch net-dsa-b53-fix-vlan-id-for-untagged-vlan-on-bridge-.patch net-dsa-b53-always-rejoin-default-untagged-vlan-on-b.patch net-dsa-b53-fix-learning-on-vlan-unaware-bridges.patch +input-cyttsp5-ensure-minimum-reset-pulse-width.patch +input-cyttsp5-fix-power-control-issue-on-wakeup.patch +input-mtk-pmic-keys-fix-possible-null-pointer-dereference.patch +input-xpad-fix-share-button-on-xbox-one-controllers.patch +input-xpad-add-support-for-8bitdo-ultimate-2-wireless-controller.patch +input-xpad-fix-two-controller-table-values.patch +input-synaptics-enable-intertouch-on-dynabook-portege-x30-d.patch +input-synaptics-enable-intertouch-on-dynabook-portege-x30l-g.patch +input-synaptics-enable-intertouch-on-dell-precision-m3800.patch +input-synaptics-enable-smbus-for-hp-elitebook-850-g1.patch +input-synaptics-enable-intertouch-on-tuxedo-infinitybook-pro-14-v5.patch +staging-iio-adc-ad7816-correct-conditional-logic-for-store-mode.patch +staging-axis-fifo-remove-hardware-resets-for-user-errors.patch +staging-axis-fifo-correct-handling-of-tx_fifo_depth-for-size-validation.patch diff --git a/queue-6.6/staging-axis-fifo-correct-handling-of-tx_fifo_depth-for-size-validation.patch b/queue-6.6/staging-axis-fifo-correct-handling-of-tx_fifo_depth-for-size-validation.patch new file mode 100644 index 0000000000..8915dc9618 --- /dev/null +++ b/queue-6.6/staging-axis-fifo-correct-handling-of-tx_fifo_depth-for-size-validation.patch @@ -0,0 +1,38 @@ +From 2ca34b508774aaa590fc3698a54204706ecca4ba Mon Sep 17 00:00:00 2001 +From: Gabriel Shahrouzi +Date: Fri, 18 Apr 2025 21:29:37 -0400 +Subject: staging: axis-fifo: Correct handling of tx_fifo_depth for size validation + +From: Gabriel Shahrouzi + +commit 2ca34b508774aaa590fc3698a54204706ecca4ba upstream. + +Remove erroneous subtraction of 4 from the total FIFO depth read from +device tree. The stored depth is for checking against total capacity, +not initial vacancy. This prevented writes near the FIFO's full size. + +The check performed just before data transfer, which uses live reads of +the TDFV register to determine current vacancy, correctly handles the +initial Depth - 4 hardware state and subsequent FIFO fullness. + +Fixes: 4a965c5f89de ("staging: add driver for Xilinx AXI-Stream FIFO v4.1 IP core") +Cc: stable@vger.kernel.org +Signed-off-by: Gabriel Shahrouzi +Link: https://lore.kernel.org/r/20250419012937.674924-1-gshahrouzi@gmail.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/axis-fifo/axis-fifo.c | 3 --- + 1 file changed, 3 deletions(-) + +--- a/drivers/staging/axis-fifo/axis-fifo.c ++++ b/drivers/staging/axis-fifo/axis-fifo.c +@@ -775,9 +775,6 @@ static int axis_fifo_parse_dt(struct axi + goto end; + } + +- /* IP sets TDFV to fifo depth - 4 so we will do the same */ +- fifo->tx_fifo_depth -= 4; +- + ret = get_dts_property(fifo, "xlnx,use-rx-data", &fifo->has_rx_fifo); + if (ret) { + dev_err(fifo->dt_device, "missing xlnx,use-rx-data property\n"); diff --git a/queue-6.6/staging-axis-fifo-remove-hardware-resets-for-user-errors.patch b/queue-6.6/staging-axis-fifo-remove-hardware-resets-for-user-errors.patch new file mode 100644 index 0000000000..b6eb1feaba --- /dev/null +++ b/queue-6.6/staging-axis-fifo-remove-hardware-resets-for-user-errors.patch @@ -0,0 +1,73 @@ +From c6e8d85fafa7193613db37da29c0e8d6e2515b13 Mon Sep 17 00:00:00 2001 +From: Gabriel Shahrouzi +Date: Fri, 18 Apr 2025 20:43:06 -0400 +Subject: staging: axis-fifo: Remove hardware resets for user errors + +From: Gabriel Shahrouzi + +commit c6e8d85fafa7193613db37da29c0e8d6e2515b13 upstream. + +The axis-fifo driver performs a full hardware reset (via +reset_ip_core()) in several error paths within the read and write +functions. This reset flushes both TX and RX FIFOs and resets the +AXI-Stream links. + +Allow the user to handle the error without causing hardware disruption +or data loss in other FIFO paths. + +Fixes: 4a965c5f89de ("staging: add driver for Xilinx AXI-Stream FIFO v4.1 IP core") +Cc: stable@vger.kernel.org +Signed-off-by: Gabriel Shahrouzi +Link: https://lore.kernel.org/r/20250419004306.669605-1-gshahrouzi@gmail.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/axis-fifo/axis-fifo.c | 11 +++-------- + 1 file changed, 3 insertions(+), 8 deletions(-) + +--- a/drivers/staging/axis-fifo/axis-fifo.c ++++ b/drivers/staging/axis-fifo/axis-fifo.c +@@ -398,16 +398,14 @@ static ssize_t axis_fifo_read(struct fil + + bytes_available = ioread32(fifo->base_addr + XLLF_RLR_OFFSET); + if (!bytes_available) { +- dev_err(fifo->dt_device, "received a packet of length 0 - fifo core will be reset\n"); +- reset_ip_core(fifo); ++ dev_err(fifo->dt_device, "received a packet of length 0\n"); + ret = -EIO; + goto end_unlock; + } + + if (bytes_available > len) { +- dev_err(fifo->dt_device, "user read buffer too small (available bytes=%zu user buffer bytes=%zu) - fifo core will be reset\n", ++ dev_err(fifo->dt_device, "user read buffer too small (available bytes=%zu user buffer bytes=%zu)\n", + bytes_available, len); +- reset_ip_core(fifo); + ret = -EINVAL; + goto end_unlock; + } +@@ -416,8 +414,7 @@ static ssize_t axis_fifo_read(struct fil + /* this probably can't happen unless IP + * registers were previously mishandled + */ +- dev_err(fifo->dt_device, "received a packet that isn't word-aligned - fifo core will be reset\n"); +- reset_ip_core(fifo); ++ dev_err(fifo->dt_device, "received a packet that isn't word-aligned\n"); + ret = -EIO; + goto end_unlock; + } +@@ -438,7 +435,6 @@ static ssize_t axis_fifo_read(struct fil + + if (copy_to_user(buf + copied * sizeof(u32), tmp_buf, + copy * sizeof(u32))) { +- reset_ip_core(fifo); + ret = -EFAULT; + goto end_unlock; + } +@@ -547,7 +543,6 @@ static ssize_t axis_fifo_write(struct fi + + if (copy_from_user(tmp_buf, buf + copied * sizeof(u32), + copy * sizeof(u32))) { +- reset_ip_core(fifo); + ret = -EFAULT; + goto end_unlock; + } diff --git a/queue-6.6/staging-iio-adc-ad7816-correct-conditional-logic-for-store-mode.patch b/queue-6.6/staging-iio-adc-ad7816-correct-conditional-logic-for-store-mode.patch new file mode 100644 index 0000000000..0352fc50d5 --- /dev/null +++ b/queue-6.6/staging-iio-adc-ad7816-correct-conditional-logic-for-store-mode.patch @@ -0,0 +1,46 @@ +From 2e922956277187655ed9bedf7b5c28906e51708f Mon Sep 17 00:00:00 2001 +From: Gabriel Shahrouzi +Date: Mon, 14 Apr 2025 11:40:49 -0400 +Subject: staging: iio: adc: ad7816: Correct conditional logic for store mode +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Gabriel Shahrouzi + +commit 2e922956277187655ed9bedf7b5c28906e51708f upstream. + +The mode setting logic in ad7816_store_mode was reversed due to +incorrect handling of the strcmp return value. strcmp returns 0 on +match, so the `if (strcmp(buf, "full"))` block executed when the +input was not "full". + +This resulted in "full" setting the mode to AD7816_PD (power-down) and +other inputs setting it to AD7816_FULL. + +Fix this by checking it against 0 to correctly check for "full" and +"power-down", mapping them to AD7816_FULL and AD7816_PD respectively. + +Fixes: 7924425db04a ("staging: iio: adc: new driver for AD7816 devices") +Cc: stable@vger.kernel.org +Signed-off-by: Gabriel Shahrouzi +Acked-by: Nuno Sá +Link: https://lore.kernel.org/stable/20250414152920.467505-1-gshahrouzi%40gmail.com +Link: https://patch.msgid.link/20250414154050.469482-1-gshahrouzi@gmail.com +Signed-off-by: Jonathan Cameron +Signed-off-by: Greg Kroah-Hartman +--- + drivers/staging/iio/adc/ad7816.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/staging/iio/adc/ad7816.c ++++ b/drivers/staging/iio/adc/ad7816.c +@@ -136,7 +136,7 @@ static ssize_t ad7816_store_mode(struct + struct iio_dev *indio_dev = dev_to_iio_dev(dev); + struct ad7816_chip_info *chip = iio_priv(indio_dev); + +- if (strcmp(buf, "full")) { ++ if (strcmp(buf, "full") == 0) { + gpiod_set_value(chip->rdwr_pin, 1); + chip->mode = AD7816_FULL; + } else { -- 2.47.3