From: Abhishek Tamboli abhishektamboli9@gmail.com
[ Upstream commit 50f1f782f8d621a90108340c632bcb6ab4307d2e ]
Add the missing PCI ID for the quickspi device used on the Lenovo Yoga Pro 9i 16IAH10.
Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=220567
Signed-off-by: Abhishek Tamboli abhishektamboli9@gmail.com Reviewed-by: Even Xu even.xu@intel.com Signed-off-by: Jiri Kosina jkosina@suse.com Signed-off-by: Sasha Levin sashal@kernel.org ---
LLM Generated explanations, may be completely bogus:
## ANALYSIS COMPLETE
**BACKPORT STATUS: YES**
### Detailed Analysis:
#### 1. **Semantic Code Analysis Results:**
**Tool: mcp__semcode__find_function** - Located `quickspi_probe` function (drivers/hid/intel-thc-hid/intel- quickspi/pci-quickspi.c:578-689) - Found `quickspi_dev_init` function which uses the driver_data structure - Both functions show this is the standard PCI driver probe path
**Tool: mcp__semcode__find_callers** - `quickspi_probe` has 0 direct callers (called via PCI subsystem function pointer in `quickspi_driver` struct) - This is expected behavior for PCI drivers
**Tool: mcp__semcode__diff_functions** - Analysis confirms: 0 functions modified, only adds data structures and table entries - Only uses existing `PCI_DEVICE_DATA` macro - **Conclusion: Purely additive change with zero behavioral modifications**
**Tool: mcp__semcode__find_type** - `struct quickspi_driver_data` contains only one field: `max_packet_size_value` - Used at pci-quickspi.c:194 to configure SPI packet size for device communication - Missing this configuration would cause device malfunction
#### 2. **Impact Analysis:**
**User Impact:** HIGH - Without this commit, Arrow Lake (ARL) systems with THC QuickSPI touchscreens/touchpads (like Lenovo Yoga Pro 9i 16IAH10) will have **completely non-functional touch input** - Bug report linked: https://bugzilla.kernel.org/show_bug.cgi?id=220567 - This is a user-visible hardware support regression
**Scope:** MINIMAL - Only 2 files changed: pci-quickspi.c (+6 lines), quickspi-dev.h (+2 lines) - Total addition: 8 lines of code - Zero lines removed or modified
#### 3. **Risk Assessment:**
**Regression Risk:** ZERO - Change is **purely additive** - adds new PCI device IDs only - No existing code paths are modified - Existing hardware (MTL, LNL, PTL, WCL) completely unaffected - Uses existing constant `MAX_PACKET_SIZE_VALUE_MTL` (defined since driver introduction)
**Dependencies:** NONE - Driver was introduced in v6.14-rc1 (commit c8f3027dd2a5b) - All required infrastructure exists in kernels >= v6.14 - No new kernel APIs or features required - Reuses existing MTL packet size value
#### 4. **Stable Tree Compliance:**
**Fits stable tree criteria:** - ✅ **Bug fix:** Enables missing hardware support (touchscreen/touchpad broken on ARL systems) - ✅ **Small and self-contained:** 8 lines, 2 files, purely additive - ✅ **Zero regression risk:** No existing functionality affected - ✅ **User-visible benefit:** Makes hardware functional - ✅ **Well-tested pattern:** Identical to WCL device ID addition (cc54ed51c7617) - ❌ **Explicit stable tag:** Not present (but not required for all backports)
**Not a new feature:** - This is NOT adding new driver functionality - This is enabling existing driver for new hardware variant - The driver already supports the ARL architecture; just needs PCI ID matching
#### 5. **Historical Context:**
**Similar commits:** - cc54ed51c7617: "HID: intel-thc-hid: intel-quickspi: Add WCL Device IDs" - identical pattern - Multiple commits added device IDs for PTL-H, PTL-U, LNL platforms - None had explicit stable tags, but all are good backport candidates
**Driver maturity:** - Driver introduced in v6.14 (released ~Jan 2025) - Available in stable branches: 6.14.y, 6.15.y, 6.16.y, 6.17.y - Sufficient time in mainline for stabilization
#### 6. **Recommendation:**
**BACKPORT: YES** to stable kernels **6.14+**
**Rationale:** 1. **Fixes real user pain:** Users with Arrow Lake laptops have non- functional touchscreens without this 2. **Zero risk:** Purely additive, cannot break existing systems 3. **Trivial change:** 8 lines following established pattern 4. **Proper scope:** Only backport to kernels containing the base driver (6.14+) 5. **Aligns with stable rules:** Small, obvious fix for user-visible hardware issue
**Target stable branches:** - linux-6.14.y - linux-6.15.y - linux-6.16.y - linux-6.17.y
This commit should NOT be backported to kernels older than 6.14 since the base intel-quickspi driver doesn't exist in those versions.
drivers/hid/intel-thc-hid/intel-quickspi/pci-quickspi.c | 6 ++++++ drivers/hid/intel-thc-hid/intel-quickspi/quickspi-dev.h | 2 ++ 2 files changed, 8 insertions(+)
diff --git a/drivers/hid/intel-thc-hid/intel-quickspi/pci-quickspi.c b/drivers/hid/intel-thc-hid/intel-quickspi/pci-quickspi.c index 84314989dc534..14cabd5dc6ddb 100644 --- a/drivers/hid/intel-thc-hid/intel-quickspi/pci-quickspi.c +++ b/drivers/hid/intel-thc-hid/intel-quickspi/pci-quickspi.c @@ -33,6 +33,10 @@ struct quickspi_driver_data ptl = { .max_packet_size_value = MAX_PACKET_SIZE_VALUE_LNL, };
+struct quickspi_driver_data arl = { + .max_packet_size_value = MAX_PACKET_SIZE_VALUE_MTL, +}; + /* THC QuickSPI ACPI method to get device properties */ /* HIDSPI Method: {6e2ac436-0fcf-41af-a265-b32a220dcfab} */ static guid_t hidspi_guid = @@ -978,6 +982,8 @@ static const struct pci_device_id quickspi_pci_tbl[] = { {PCI_DEVICE_DATA(INTEL, THC_PTL_U_DEVICE_ID_SPI_PORT2, &ptl), }, {PCI_DEVICE_DATA(INTEL, THC_WCL_DEVICE_ID_SPI_PORT1, &ptl), }, {PCI_DEVICE_DATA(INTEL, THC_WCL_DEVICE_ID_SPI_PORT2, &ptl), }, + {PCI_DEVICE_DATA(INTEL, THC_ARL_DEVICE_ID_SPI_PORT1, &arl), }, + {PCI_DEVICE_DATA(INTEL, THC_ARL_DEVICE_ID_SPI_PORT2, &arl), }, {} }; MODULE_DEVICE_TABLE(pci, quickspi_pci_tbl); diff --git a/drivers/hid/intel-thc-hid/intel-quickspi/quickspi-dev.h b/drivers/hid/intel-thc-hid/intel-quickspi/quickspi-dev.h index f3532d866749c..c30e1a42eb098 100644 --- a/drivers/hid/intel-thc-hid/intel-quickspi/quickspi-dev.h +++ b/drivers/hid/intel-thc-hid/intel-quickspi/quickspi-dev.h @@ -21,6 +21,8 @@ #define PCI_DEVICE_ID_INTEL_THC_PTL_U_DEVICE_ID_SPI_PORT2 0xE44B #define PCI_DEVICE_ID_INTEL_THC_WCL_DEVICE_ID_SPI_PORT1 0x4D49 #define PCI_DEVICE_ID_INTEL_THC_WCL_DEVICE_ID_SPI_PORT2 0x4D4B +#define PCI_DEVICE_ID_INTEL_THC_ARL_DEVICE_ID_SPI_PORT1 0x7749 +#define PCI_DEVICE_ID_INTEL_THC_ARL_DEVICE_ID_SPI_PORT2 0x774B
/* HIDSPI special ACPI parameters DSM methods */ #define ACPI_QUICKSPI_REVISION_NUM 2