[PATCH] Hid: Intel-thc-hid: Intel-quickspi: switch first interrupt from level to edge detection

Even Xu posted 1 patch 4 months, 3 weeks ago
drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
[PATCH] Hid: Intel-thc-hid: Intel-quickspi: switch first interrupt from level to edge detection
Posted by Even Xu 4 months, 3 weeks ago
The original implementation used level detection for the first interrupt
after device reset to avoid potential interrupt line noise and missed
interrupts during the initialization phase. However, this approach
introduced unintended side effects when tested with certain touch panels,
including:
 - Delayed hardware interrupt response
 - Multiple spurious interrupt triggers

Switching back to edge detection for the first interrupt resolves these
issues while maintaining reliable interrupt handling.

Extensive testing across multiple platforms with touch panels from
various vendors confirms this change introduces no regressions.

Fixes: 9d8d51735a3a ("HID: intel-thc-hid: intel-quickspi: Add HIDSPI protocol implementation")
Tested-by: Rui Zhang <rui1.zhang@intel.com>
Signed-off-by: Even Xu <even.xu@intel.com>
---
 drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c b/drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
index e6ba2ddcc9cb..16f780bc879b 100644
--- a/drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
+++ b/drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
@@ -280,8 +280,7 @@ int reset_tic(struct quickspi_device *qsdev)
 
 	qsdev->reset_ack = false;
 
-	/* First interrupt uses level trigger to avoid missing interrupt */
-	thc_int_trigger_type_select(qsdev->thc_hw, false);
+	thc_int_trigger_type_select(qsdev->thc_hw, true);
 
 	ret = acpi_tic_reset(qsdev);
 	if (ret)
-- 
2.40.1
Re: [PATCH] Hid: Intel-thc-hid: Intel-quickspi: switch first interrupt from level to edge detection
Posted by Jiri Kosina 3 months, 3 weeks ago
On Fri, 19 Sep 2025, Even Xu wrote:

> The original implementation used level detection for the first interrupt
> after device reset to avoid potential interrupt line noise and missed
> interrupts during the initialization phase. However, this approach
> introduced unintended side effects when tested with certain touch panels,
> including:
>  - Delayed hardware interrupt response
>  - Multiple spurious interrupt triggers
> 
> Switching back to edge detection for the first interrupt resolves these
> issues while maintaining reliable interrupt handling.
> 
> Extensive testing across multiple platforms with touch panels from
> various vendors confirms this change introduces no regressions.
> 
> Fixes: 9d8d51735a3a ("HID: intel-thc-hid: intel-quickspi: Add HIDSPI protocol implementation")
> Tested-by: Rui Zhang <rui1.zhang@intel.com>
> Signed-off-by: Even Xu <even.xu@intel.com>

Applied to hid.git#for-6.18/upstream-fixes, thanks.

-- 
Jiri Kosina
SUSE Labs
RE: [PATCH] Hid: Intel-thc-hid: Intel-quickspi: switch first interrupt from level to edge detection
Posted by Xu, Even 4 months ago
Hi, Jiri,

This patch was in review list for 3 weeks without any review comments, would you help merge it?
Thanks!

Best Regards,
Even Xu

> -----Original Message-----
> From: Xu, Even <even.xu@intel.com>
> Sent: Friday, September 19, 2025 3:10 PM
> To: jikos@kernel.org; bentiss@kernel.org; srinivas.pandruvada@linux.intel.com
> Cc: linux-input@vger.kernel.org; linux-kernel@vger.kernel.org; Xu, Even
> <even.xu@intel.com>; Zhang, Rui1 <rui1.zhang@intel.com>
> Subject: [PATCH] Hid: Intel-thc-hid: Intel-quickspi: switch first interrupt from level
> to edge detection
> 
> The original implementation used level detection for the first interrupt after
> device reset to avoid potential interrupt line noise and missed interrupts during
> the initialization phase. However, this approach introduced unintended side
> effects when tested with certain touch panels,
> including:
>  - Delayed hardware interrupt response
>  - Multiple spurious interrupt triggers
> 
> Switching back to edge detection for the first interrupt resolves these issues while
> maintaining reliable interrupt handling.
> 
> Extensive testing across multiple platforms with touch panels from various
> vendors confirms this change introduces no regressions.
> 
> Fixes: 9d8d51735a3a ("HID: intel-thc-hid: intel-quickspi: Add HIDSPI protocol
> implementation")
> Tested-by: Rui Zhang <rui1.zhang@intel.com>
> Signed-off-by: Even Xu <even.xu@intel.com>
> ---
>  drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
> b/drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
> index e6ba2ddcc9cb..16f780bc879b 100644
> --- a/drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
> +++ b/drivers/hid/intel-thc-hid/intel-quickspi/quickspi-protocol.c
> @@ -280,8 +280,7 @@ int reset_tic(struct quickspi_device *qsdev)
> 
>  	qsdev->reset_ack = false;
> 
> -	/* First interrupt uses level trigger to avoid missing interrupt */
> -	thc_int_trigger_type_select(qsdev->thc_hw, false);
> +	thc_int_trigger_type_select(qsdev->thc_hw, true);
> 
>  	ret = acpi_tic_reset(qsdev);
>  	if (ret)
> --
> 2.40.1