kernel_samsung_a53x/drivers/iio
Hans de Goede 14940a52ab iio: accel: mxc4005: Interrupt handling fixes
commit 57a1592784d622ecee0b71940c65429173996b33 upstream.

There are 2 issues with interrupt handling in the mxc4005 driver:

1. mxc4005_set_trigger_state() writes MXC4005_REG_INT_MASK1_BIT_DRDYE
(0x01) to INT_MASK1 to enable the interrupt, but to disable the interrupt
it writes ~MXC4005_REG_INT_MASK1_BIT_DRDYE which is 0xfe, so it enables
all other interrupt sources in the INT_SRC1 register. On the MXC4005 this
is not an issue because only bit 0 of the register is used. On the MXC6655
OTOH this is a problem since bit7 is used as TC (Temperature Compensation)
disable bit and writing 1 to this disables Temperature Compensation which
should only be done when running self-tests on the chip.

Write 0 instead of ~MXC4005_REG_INT_MASK1_BIT_DRDYE to disable
the interrupts to fix this.

2. The datasheets for the MXC4005 / MXC6655 do not state what the reset
value for the INT_MASK0 and INT_MASK1 registers is and since these are
write only we also cannot learn this from the hw. Presumably the reset
value for both is all 0, which means all interrupts disabled.

Explicitly set both registers to 0 from mxc4005_chip_init() to ensure
both masks are actually set to 0.

Fixes: 79846e33aac1 ("iio: accel: mxc4005: add support for mxc6655")
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20240326113700.56725-2-hdegoede@redhat.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-19 11:32:48 +01:00
..
accel iio: accel: mxc4005: Interrupt handling fixes 2024-11-19 11:32:48 +01:00
adc iio:adc:ad7091r: Move exports into IIO_AD7091R namespace. 2024-11-18 12:12:55 +01:00
addac Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
afe Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
amplifiers Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
buffer Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
chemical Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
common iio: common: ms_sensors: ms_sensors_i2c: fix humidity conversion time table 2024-11-18 12:12:00 +01:00
dac Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
dummy Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
frequency Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gyro Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
health Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
humidity Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
imu iio:imu: adis16475: Fix sync mode setting 2024-11-19 11:32:48 +01:00
light Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
magnetometer iio: magnetometer: rm3100: add boundary check for the value read from RM3100_REG_TMRC 2024-11-18 12:13:31 +01:00
multiplexer Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
orientation Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
position Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
potentiometer Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
potentiostat Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
pressure iio: pressure: ms5611: ms5611_prom_is_valid false negative bug 2024-11-08 11:25:49 +01:00
proximity Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
resolver Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
temperature Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
trigger Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
iio_core.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
iio_core_trigger.h Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
industrialio-buffer.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
industrialio-configfs.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
industrialio-core.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
industrialio-event.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
industrialio-sw-device.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
industrialio-sw-trigger.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
industrialio-trigger.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
industrialio-triggered-event.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
inkern.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
TODO Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00