[ Upstream commit 99c05e4283a19a02a256f14100ca4ec3b2da3f62 ]
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:
|
||
|---|---|---|
| .. | ||
| accel | ||
| adc | ||
| afe | ||
| common | ||
| dac | ||
| frequency | ||
| gyro | ||
| imu | ||
| timer | ||
| buffer-dma.h | ||
| buffer-dmaengine.h | ||
| buffer.h | ||
| buffer_impl.h | ||
| configfs.h | ||
| consumer.h | ||
| driver.h | ||
| events.h | ||
| hw-consumer.h | ||
| iio-opaque.h | ||
| iio.h | ||
| kfifo_buf.h | ||
| machine.h | ||
| sw_device.h | ||
| sw_trigger.h | ||
| sysfs.h | ||
| trigger.h | ||
| trigger_consumer.h | ||
| triggered_buffer.h | ||
| triggered_event.h | ||
| types.h | ||