mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
ASoC: amd: ps: fix for irq handler return status
If any Soundwire manager interrupt is reported, and wake interrupt
is not reported, in this scenario irq_flag will be set to zero,
which results in interrupt handler return status as IRQ_NONE.
Add new irq flag 'wake_irq_flag' check for SoundWire wake interrupt
handling to fix incorrect irq handling return status.
Fixes: 3898b18907 ("ASoC: amd: ps: add soundwire wake interrupt handling")
Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com>
Link: https://patch.msgid.link/20250430195517.3065308-1-Vijendar.Mukunda@amd.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
3cc393d223
commit
7f91f012c1
|
|
@ -193,6 +193,7 @@ static irqreturn_t acp63_irq_handler(int irq, void *dev_id)
|
||||||
struct amd_sdw_manager *amd_manager;
|
struct amd_sdw_manager *amd_manager;
|
||||||
u32 ext_intr_stat, ext_intr_stat1;
|
u32 ext_intr_stat, ext_intr_stat1;
|
||||||
u16 irq_flag = 0;
|
u16 irq_flag = 0;
|
||||||
|
u16 wake_irq_flag = 0;
|
||||||
u16 sdw_dma_irq_flag = 0;
|
u16 sdw_dma_irq_flag = 0;
|
||||||
|
|
||||||
adata = dev_id;
|
adata = dev_id;
|
||||||
|
|
@ -231,7 +232,7 @@ static irqreturn_t acp63_irq_handler(int irq, void *dev_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (adata->acp_rev >= ACP70_PCI_REV)
|
if (adata->acp_rev >= ACP70_PCI_REV)
|
||||||
irq_flag = check_and_handle_acp70_sdw_wake_irq(adata);
|
wake_irq_flag = check_and_handle_acp70_sdw_wake_irq(adata);
|
||||||
|
|
||||||
if (ext_intr_stat & BIT(PDM_DMA_STAT)) {
|
if (ext_intr_stat & BIT(PDM_DMA_STAT)) {
|
||||||
ps_pdm_data = dev_get_drvdata(&adata->pdm_dev->dev);
|
ps_pdm_data = dev_get_drvdata(&adata->pdm_dev->dev);
|
||||||
|
|
@ -245,7 +246,7 @@ static irqreturn_t acp63_irq_handler(int irq, void *dev_id)
|
||||||
if (sdw_dma_irq_flag)
|
if (sdw_dma_irq_flag)
|
||||||
return IRQ_WAKE_THREAD;
|
return IRQ_WAKE_THREAD;
|
||||||
|
|
||||||
if (irq_flag)
|
if (irq_flag | wake_irq_flag)
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
else
|
else
|
||||||
return IRQ_NONE;
|
return IRQ_NONE;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user