Patch "iio: light: vcnl4000: Don't power on/off chip in config" 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

    iio: light: vcnl4000: Don't power on/off chip in config

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:
     iio-light-vcnl4000-don-t-power-on-off-chip-in-config.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 ab58fb6285dfd2ec47f73c95d974d091f5795188
Author: Mårten Lindahl <marten.lindahl@xxxxxxxx>
Date:   Mon Sep 11 14:43:01 2023 +0200

    iio: light: vcnl4000: Don't power on/off chip in config
    
    [ Upstream commit 7e87ab38eed09c9dec56da361d74158159ae84a3 ]
    
    After enabling/disabling interrupts on the vcnl4040 chip the als and/or
    ps sensor is powered on or off depending on the interrupt enable bits.
    This is made as a last step in write_event_config.
    
    But there is no reason to do this as the runtime PM handles the power
    state of the sensors. Interfering with this may impact sensor readings.
    
    Consider the following:
     1. Userspace makes sensor data reading which triggers RPM resume
        (sensor powered on) and a RPM suspend timeout. The timeout is 2000ms
        before RPM suspend powers the sensor off if no new reading is made
        within the timeout period.
     2. Userspace disables interrupts => powers sensor off
     3. Userspace reads sensor data = 0 because sensor is off and the
        suspend timeout has not passed. For each new reading made within the
        timeout period the timeout is renewed with 2000ms and RPM will not
        make a new resume (device was not suspended). So the sensor will
        not be powered on.
     4. No further userspace reading for 2000ms ends RPM suspend timeout and
        triggers suspend (powers off already powered off sensor).
    
    Powering sensor off in (2) makes all consecutive readings made within
    2000ms to the previous reading (3) return invalid data.
    
    Skip setting power state when writing new event config.
    
    Fixes: 546676121cb9 ("iio: light: vcnl4000: Add interrupt support for vcnl4040")
    Fixes: bc292aaf9cb4 ("iio: light: vcnl4000: add illuminance irq vcnl4040/4200")
    Signed-off-by: Mårten Lindahl <marten.lindahl@xxxxxxxx>
    Link: https://lore.kernel.org/r/20230907-vcnl4000-pm-fix-v2-1-298e01f54db4@xxxxxxxx
    Cc: <Stable@xxxxxxxxxxxxxxx>
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/iio/light/vcnl4000.c b/drivers/iio/light/vcnl4000.c
index 7c7362e288213..66433886b7b03 100644
--- a/drivers/iio/light/vcnl4000.c
+++ b/drivers/iio/light/vcnl4000.c
@@ -994,7 +994,6 @@ static int vcnl4040_write_event_config(struct iio_dev *indio_dev,
 
 out:
 	mutex_unlock(&data->vcnl4000_lock);
-	data->chip_spec->set_power_state(data, data->ps_int != 0);
 
 	return ret;
 }



[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