Patch "Input: iqs7222 - configure power mode before triggering ATI" has been added to the 6.5-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    Input: iqs7222 - configure power mode before triggering ATI

to the 6.5-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     input-iqs7222-configure-power-mode-before-triggering.patch
and it can be found in the queue-6.5 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 2cf6d8c16a368d2bca1a110997acff80476dcb27
Author: Jeff LaBundy <jeff@xxxxxxxxxxx>
Date:   Sun Jul 9 12:06:37 2023 -0500

    Input: iqs7222 - configure power mode before triggering ATI
    
    [ Upstream commit 2e00b8bf5624767f6be7427b6eb532524793463e ]
    
    If the device drops into ultra-low-power mode before being placed
    into normal-power mode as part of ATI being triggered, the device
    does not assert any interrupts until the ATI routine is restarted
    two seconds later.
    
    Solve this problem by adopting the vendor's recommendation, which
    calls for the device to be placed into normal-power mode prior to
    being configured and ATI being triggered.
    
    The original implementation followed this sequence, but the order
    was inadvertently changed as part of the resolution of a separate
    erratum.
    
    Fixes: 1e4189d8af27 ("Input: iqs7222 - protect volatile registers")
    Signed-off-by: Jeff LaBundy <jeff@xxxxxxxxxxx>
    Link: https://lore.kernel.org/r/ZKrpHc2Ji9qR25r2@nixie71
    Signed-off-by: Dmitry Torokhov <dmitry.torokhov@xxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/input/misc/iqs7222.c b/drivers/input/misc/iqs7222.c
index 096b0925f41ba..acb95048e8230 100644
--- a/drivers/input/misc/iqs7222.c
+++ b/drivers/input/misc/iqs7222.c
@@ -1381,9 +1381,6 @@ static int iqs7222_ati_trigger(struct iqs7222_private *iqs7222)
 	if (error)
 		return error;
 
-	sys_setup &= ~IQS7222_SYS_SETUP_INTF_MODE_MASK;
-	sys_setup &= ~IQS7222_SYS_SETUP_PWR_MODE_MASK;
-
 	for (i = 0; i < IQS7222_NUM_RETRIES; i++) {
 		/*
 		 * Trigger ATI from streaming and normal-power modes so that
@@ -1561,8 +1558,11 @@ static int iqs7222_dev_init(struct iqs7222_private *iqs7222, int dir)
 			return error;
 	}
 
-	if (dir == READ)
+	if (dir == READ) {
+		iqs7222->sys_setup[0] &= ~IQS7222_SYS_SETUP_INTF_MODE_MASK;
+		iqs7222->sys_setup[0] &= ~IQS7222_SYS_SETUP_PWR_MODE_MASK;
 		return 0;
+	}
 
 	return iqs7222_ati_trigger(iqs7222);
 }



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux