Skip to content

Commit 63d2a9e

Browse files
pujarstiwai
authored andcommitted
ALSA: hda/tegra: clear pending irq handlers
Even after disabling interrupts on the module, it could be possible that irq handlers are still running. System hang is seen during suspend path. It was found that, there were pending writes on the HDA bus and clock was disabled by that time. Above mentioned issue is fixed by clearing any pending irq handlers before disabling clocks and returning from hda suspend. Suggested-by: Mohan Kumar <[email protected]> Suggested-by: Dara Ramesh <[email protected]> Signed-off-by: Sameer Pujar <[email protected]> Cc: <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
1 parent 82b0114 commit 63d2a9e

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

sound/pci/hda/hda_tegra.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,12 @@ static int hda_tegra_suspend(struct device *dev)
234234
struct snd_card *card = dev_get_drvdata(dev);
235235
struct azx *chip = card->private_data;
236236
struct hda_tegra *hda = container_of(chip, struct hda_tegra, chip);
237+
struct hdac_bus *bus = azx_bus(chip);
237238

238239
snd_power_change_state(card, SNDRV_CTL_POWER_D3hot);
239240

240241
azx_stop_chip(chip);
242+
synchronize_irq(bus->irq);
241243
azx_enter_link_reset(chip);
242244
hda_tegra_disable_clocks(hda);
243245

0 commit comments

Comments
 (0)