linux/drivers/iio/imu
Ramona Bolboaca 39a156715f iio: adis: add '__adis_enable_irq()' implementation
[ Upstream commit 99c05e4283 ]

Add '__adis_enable_irq()' implementation which is the unlocked
version of 'adis_enable_irq()'.
Call '__adis_enable_irq()' instead of 'adis_enable_irq()' from
'__adis_intial_startup()' to keep the expected unlocked functionality.

This fix is needed to remove a deadlock for all devices which are
using 'adis_initial_startup()'. The deadlock occurs because the
same mutex is acquired twice, without releasing it.
The mutex is acquired once inside 'adis_initial_startup()', before
calling '__adis_initial_startup()', and once inside
'adis_enable_irq()', which is called by '__adis_initial_startup()'.
The deadlock is removed by calling '__adis_enable_irq()', instead of
'adis_enable_irq()' from within '__adis_initial_startup()'.

Fixes: b600bd7eb3 ("iio: adis: do not disabe IRQs in 'adis_init()'")
Signed-off-by: Ramona Bolboaca <ramona.bolboaca@analog.com>
Reviewed-by: Nuno Sá <nuno.sa@analog.com>
Link: https://lore.kernel.org/r/20221122082757.449452-2-ramona.bolboaca@analog.com
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-12-31 13:14:29 +01:00
..
bmi160
inv_icm42600
inv_mpu6050
st_lsm6dsx
st_lsm9ds0
Kconfig
Makefile
adis.c iio: adis: add '__adis_enable_irq()' implementation 2022-12-31 13:14:29 +01:00
adis16400.c iio:imu:adis: Move exports into IIO_ADISLIB namespace 2022-12-31 13:14:29 +01:00
adis16460.c iio:imu:adis: Move exports into IIO_ADISLIB namespace 2022-12-31 13:14:29 +01:00
adis16475.c iio:imu:adis: Move exports into IIO_ADISLIB namespace 2022-12-31 13:14:29 +01:00
adis16480.c iio:imu:adis: Move exports into IIO_ADISLIB namespace 2022-12-31 13:14:29 +01:00
adis_buffer.c iio:imu:adis: Move exports into IIO_ADISLIB namespace 2022-12-31 13:14:29 +01:00
adis_trigger.c iio:imu:adis: Move exports into IIO_ADISLIB namespace 2022-12-31 13:14:29 +01:00
fxos8700.h
fxos8700_core.c
fxos8700_i2c.c
fxos8700_spi.c
kmx61.c