1 Aug
2009
1 Aug
'09
12:48 p.m.
This converts the last CORBWP access outside of reg_lock.
Signed-off-by: Wu Fengguang fengguang.wu@intel.com --- sound/pci/hda/hda_intel.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
--- sound-2.6.orig/sound/pci/hda/hda_intel.c +++ sound-2.6/sound/pci/hda/hda_intel.c @@ -595,15 +595,17 @@ static int azx_corb_send_cmd(struct hda_ unsigned int addr = azx_command_addr(val); unsigned int wp;
+ spin_lock_irq(&chip->reg_lock); + /* add command to corb */ wp = azx_readb(chip, CORBWP); wp++; wp %= ICH6_MAX_CORB_ENTRIES;
- spin_lock_irq(&chip->reg_lock); chip->rirb.cmds[addr]++; chip->corb.buf[wp] = cpu_to_le32(val); azx_writel(chip, CORBWP, wp); + spin_unlock_irq(&chip->reg_lock);
return 0;