Skip to content

Commit ae696df

Browse files
root3315jic23
authored andcommitted
iio: adc: nxp-sar-adc: harden buffer ISR against per-channel read failure
nxp_sar_adc_isr_buffer() bails on the first channel-read failure without calling iio_trigger_notify_done(), so the trigger use_count is left incremented and iio_trigger_poll_chained() drops subsequent dispatches until the device is rebound. Reaching this path means a state machine has gone wrong (driver bug or the SAR ADC in an unexpected state) rather than a transient bus issue, so this is hardening rather than a bug fix. If the underlying condition persists the device is wedged and needs an unbind anyway. Call iio_trigger_notify_done() on the error exit too, matching the success path. The nxp_sar_adc_read_notify() duplication is intentional and avoids a goto label for a two-line bail-out, as suggested by David. Signed-off-by: Stepan Ionichev <sozdayvek@gmail.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
1 parent eb60a24 commit ae696df

1 file changed

Lines changed: 1 addition & 0 deletions

File tree

drivers/iio/adc/nxp-sar-adc.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@ static void nxp_sar_adc_isr_buffer(struct iio_dev *indio_dev)
346346
ret = nxp_sar_adc_read_data(info, info->buffered_chan[i]);
347347
if (ret < 0) {
348348
nxp_sar_adc_read_notify(info);
349+
iio_trigger_notify_done(indio_dev->trig);
349350
return;
350351
}
351352

0 commit comments

Comments
 (0)