The driver may sleep in an interrupt handler. The function call paths (from bottom to top) in Linux-4.17 are:
[FUNC] mutex_lock_nested drivers/mfd/ezx-pcap.c, 272: mutex_lock_nested in pcap_adc_irq (interrupt handler) [FUNC] mutex_lock_nested drivers/mfd/ezx-pcap.c, 100: mutex_lock_nested in ezx_pcap_read drivers/mfd/ezx-pcap.c, 281: ezx_pcap_read in pcap_adc_irq (interrupt handler) [FUNC] mutex_lock_nested drivers/mfd/ezx-pcap.c, 85: mutex_lock_nested in ezx_pcap_write drivers/mfd/ezx-pcap.c, 285: ezx_pcap_write in pcap_adc_irq (interrupt handler) [FUNC] mutex_lock_nested drivers/mfd/ezx-pcap.c, 244: mutex_lock_nested in pcap_adc_trigger drivers/mfd/ezx-pcap.c, 299: pcap_adc_trigger in pcap_adc_irq (interrupt handler) These bugs are found by my static analysis tool DSAC. Best wishes, Jia-Ju Bai