linux/drivers/iio
Hans de Goede b56d4991cf iio: accel: mxc4005: Interrupt handling fixes
commit 57a1592784 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: 79846e33aa ("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>
History 2024-05-17 11:56:19 +02:00
..
accel iio: accel: mxc4005: Interrupt handling fixes 2024-05-17 11:56:19 +02:00
adc iio: adc: ad7091r: Enable internal vref if external vref is not supplied 2024-01-31 16:17:00 -08:00
addac iio: addac: Kconfig: update ad74413r selections 2023-10-19 23:08:55 +02:00
afe iio: afe: rescale: Accept only offset channels 2023-11-02 09:35:29 +01:00
amplifiers iio: amplifiers: ad8366: Fix alignment for DMA safety 2022-06-14 11:53:15 +01:00
buffer iio: triggered-buffer: prevent possible freeing of wrong buffer 2024-01-01 12:39:01 +00:00
cdc iio: cdc: ad7746: Move driver out of staging. 2022-08-15 22:30:01 +01:00
chemical i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
common iio: common: ms_sensors: ms_sensors_i2c: fix humidity conversion time table 2024-01-01 12:39:01 +00:00
dac iio: dac: ad3552r: Correct device IDs 2023-10-19 23:08:55 +02:00
dummy Bitmap patches for 5.19-rc1 2022-06-04 14:04:27 -07:00
filter iio:filter:admv8818: select REGMAP_SPI for ADMV8818 2022-04-04 09:19:01 +01:00
frequency iio: frequency: adf4350: Use device managed functions and fix power down issue. 2023-11-20 11:52:09 +01:00
gyro iio: hid: fix the retval in gyro_3d_capture_sample 2023-02-09 11:28:17 +01:00
health iio: health: afe4404: Fix oob read in afe4404_[read|write]_raw 2022-11-12 16:30:23 +00:00
humidity i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
imu iio:imu: adis16475: Fix sync mode setting 2024-05-17 11:56:19 +02:00
light iio: hid-sensor-als: Return 0 for HID_USAGE_SENSOR_TIME_TIMESTAMP 2024-02-23 09:12:33 +01:00
magnetometer iio: magnetometer: rm3100: add boundary check for the value read from RM3100_REG_TMRC 2024-02-23 09:12:40 +01:00
multiplexer iio: multiplexer: Make use of device properties 2022-04-04 09:11:24 +01:00
orientation iio: hid-sensors: bind IIO channels alloc to device object 2021-07-13 18:21:53 +01:00
position iio: hid-sensors: Update header includes 2021-06-16 14:53:13 +01:00
potentiometer iio: potentiometer: mcp4131: Fix alignment for DMA safety 2022-06-14 11:53:19 +01:00
potentiostat i2c: Make remove callback return void 2022-08-16 12:46:26 +02:00
pressure iio: pressure: ms5611: ms5611_prom_is_valid false negative bug 2023-10-19 23:08:55 +02:00
proximity Char/Misc and other driver changes for 6.1-rc1 2022-10-08 08:56:37 -07:00
resolver iio: resolver: ad2s90: Fix alignment for DMA safety 2022-06-14 11:53:19 +01:00
temperature iio: temperature: ltc2983: make bulk write buffer DMA-safe 2022-12-31 13:32:40 +01:00
test iio: test: Mark file local structure arrays static. 2022-08-15 22:30:01 +01:00
trigger iio: trigger: sysfs: fix possible memory leak in iio_sysfs_trig_init() 2022-10-24 18:48:57 +01:00
iio_core.h iio: Mark iio_device_type as const 2021-11-17 17:51:35 +00:00
iio_core_trigger.h iio: core-trigger: make iio_device_register_trigger_consumer() an int return 2021-03-11 20:47:02 +00:00
industrialio-buffer.c iio: buffer: make sure O_NONBLOCK is respected 2023-04-13 16:55:27 +02:00
industrialio-configfs.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
industrialio-core.c iio: core: fix memleak in iio_device_register_sysfs 2024-02-23 09:12:40 +01:00
industrialio-event.c iio: fix memory leak in iio_device_register_eventset() 2022-12-31 13:33:10 +01:00
industrialio-sw-device.c iio: Don't use bare "unsigned" 2022-07-01 11:19:08 +01:00
industrialio-sw-trigger.c iio: core: Fix entry not deleted when iio_register_sw_trigger_type() fails 2022-11-12 17:53:35 +00:00
industrialio-trigger.c iio: Add blank lines after declarations. 2022-08-15 22:29:56 +01:00
industrialio-triggered-event.c iio: core: move @id from struct iio_dev to struct iio_dev_opaque 2021-05-17 13:49:13 +01:00
inkern.c iio: inkern: fix coding style warnings 2022-08-15 22:30:00 +01:00
Kconfig iio: add filter subfolder 2021-12-16 17:29:46 +00:00
Makefile iio: add filter subfolder 2021-12-16 17:29:46 +00:00
TODO iio: add a TODO 2020-03-08 17:28:53 +00:00