On 10/11/21 2:28 PM, Joe Perches wrote: > On Mon, 2021-10-11 at 11:26 +0530, Vijendar Mukunda wrote: >> Add ACP6x irq handler for handling irq events for ACP IP. >> Add pdm irq events handling. >> Whenever audio data equal to the PDM watermark level are consumed, >> interrupt is generated. Acknowledge the interrupt. > >> diff --git a/sound/soc/amd/yc/pci-acp6x.c b/sound/soc/amd/yc/pci-acp6x.c > [] >> @@ -116,6 +118,33 @@ static int acp6x_deinit(void __iomem *acp_base) >> return 0; >> } >> >> +static irqreturn_t acp6x_irq_handler(int irq, void *dev_id) >> +{ >> + struct acp6x_dev_data *adata; >> + struct pdm_dev_data *yc_pdm_data; >> + u16 irq_flag; > > irq_flag seems unnecessary. > >> + u32 val; >> + >> + adata = dev_id; >> + if (!adata) >> + return IRQ_NONE; >> + >> + irq_flag = 0; >> + val = acp6x_readl(adata->acp6x_base + ACP_EXTERNAL_INTR_STAT); >> + if (val & BIT(PDM_DMA_STAT)) { >> + yc_pdm_data = dev_get_drvdata(&adata->pdev[0]->dev); >> + acp6x_writel(BIT(PDM_DMA_STAT), adata->acp6x_base + ACP_EXTERNAL_INTR_STAT); >> + if (yc_pdm_data->capture_stream) >> + snd_pcm_period_elapsed(yc_pdm_data->capture_stream); >> + irq_flag = 1; > > Could be: > > return IRQ_HANDLED; will fix it and post the new version. > >> + } >> + >> + if (irq_flag) >> + return IRQ_HANDLED; >> + else >> + return IRQ_NONE; > > and > return IRQ_NONE; > >> +} > >