On Mon, Jan 20, 2025 at 03:31:19PM +0530, Vijendar Mukunda wrote: > +static irqreturn_t acp70_irq_thread(int irq, void *context) > +{ > + struct sdw_dma_dev_data *sdw_dma_data; > + struct acp70_dev_data *adata = context; > + u32 stream_index; > + > + sdw_dma_data = dev_get_drvdata(&adata->sdw_dma_dev->dev); > + > + for (stream_index = 0; stream_index < ACP70_SDW0_DMA_MAX_STREAMS; stream_index++) { > + if (adata->sdw0_dma_intr_stat[stream_index]) { > + if (sdw_dma_data->sdw0_dma_stream[stream_index]) > + snd_pcm_period_elapsed(sdw_dma_data->sdw0_dma_stream[stream_index]); > + adata->sdw0_dma_intr_stat[stream_index] = 0; > + } > + } > + for (stream_index = 0; stream_index < ACP70_SDW1_DMA_MAX_STREAMS; stream_index++) { > + if (adata->sdw1_dma_intr_stat[stream_index]) { > + if (sdw_dma_data->sdw1_dma_stream[stream_index]) > + snd_pcm_period_elapsed(sdw_dma_data->sdw1_dma_stream[stream_index]); > + adata->sdw1_dma_intr_stat[stream_index] = 0; > + } > + } > + return IRQ_HANDLED; > +} I appreciate that this pattern is already (identically...) in the ps driver but I'm not seeing anything here that looks like it can't run in interrupt context - is there a special reason for deferring to thread context? > +static irqreturn_t acp70_irq_handler(int irq, void *dev_id) > +{ This really does seem *very* similar to the acp63 code...
Attachment:
signature.asc
Description: PGP signature