Commit c32649fe authored by Wu Fengguang's avatar Wu Fengguang Committed by Takashi Iwai

ALSA: hda: read CORBWP inside reg_lock

This converts the last CORBWP access outside of reg_lock.
Signed-off-by: default avatarWu Fengguang <fengguang.wu@intel.com>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent cdb1fbf2
...@@ -588,15 +588,17 @@ static int azx_corb_send_cmd(struct hda_bus *bus, u32 val) ...@@ -588,15 +588,17 @@ static int azx_corb_send_cmd(struct hda_bus *bus, u32 val)
unsigned int addr = azx_command_addr(val); unsigned int addr = azx_command_addr(val);
unsigned int wp; unsigned int wp;
spin_lock_irq(&chip->reg_lock);
/* add command to corb */ /* add command to corb */
wp = azx_readb(chip, CORBWP); wp = azx_readb(chip, CORBWP);
wp++; wp++;
wp %= ICH6_MAX_CORB_ENTRIES; wp %= ICH6_MAX_CORB_ENTRIES;
spin_lock_irq(&chip->reg_lock);
chip->rirb.cmds[addr]++; chip->rirb.cmds[addr]++;
chip->corb.buf[wp] = cpu_to_le32(val); chip->corb.buf[wp] = cpu_to_le32(val);
azx_writel(chip, CORBWP, wp); azx_writel(chip, CORBWP, wp);
spin_unlock_irq(&chip->reg_lock); spin_unlock_irq(&chip->reg_lock);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment