Commit 19909a8a authored by Jaroslav Kysela's avatar Jaroslav Kysela

[ALSA] intel8x0 - fixed timeout in the 'get current DMA pointer' routine

Intel8x0 driver
Patch-level: High
Signed-off-by: default avatarWei Ni <Wei.Ni@uli.com.tw>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent c72434da
...@@ -1059,7 +1059,7 @@ static snd_pcm_uframes_t snd_intel8x0_pcm_pointer(snd_pcm_substream_t * substrea ...@@ -1059,7 +1059,7 @@ static snd_pcm_uframes_t snd_intel8x0_pcm_pointer(snd_pcm_substream_t * substrea
intel8x0_t *chip = snd_pcm_substream_chip(substream); intel8x0_t *chip = snd_pcm_substream_chip(substream);
ichdev_t *ichdev = get_ichdev(substream); ichdev_t *ichdev = get_ichdev(substream);
size_t ptr1, ptr; size_t ptr1, ptr;
int civ, timeout = 10; int civ, timeout = 100;
unsigned int position; unsigned int position;
spin_lock(&chip->reg_lock); spin_lock(&chip->reg_lock);
...@@ -1067,8 +1067,10 @@ static snd_pcm_uframes_t snd_intel8x0_pcm_pointer(snd_pcm_substream_t * substrea ...@@ -1067,8 +1067,10 @@ static snd_pcm_uframes_t snd_intel8x0_pcm_pointer(snd_pcm_substream_t * substrea
civ = igetbyte(chip, ichdev->reg_offset + ICH_REG_OFF_CIV); civ = igetbyte(chip, ichdev->reg_offset + ICH_REG_OFF_CIV);
ptr1 = igetword(chip, ichdev->reg_offset + ichdev->roff_picb); ptr1 = igetword(chip, ichdev->reg_offset + ichdev->roff_picb);
position = ichdev->position; position = ichdev->position;
if (ptr1 == 0) if (ptr1 == 0) {
udelay(1); udelay(10);
continue;
}
if (civ == igetbyte(chip, ichdev->reg_offset + ICH_REG_OFF_CIV) && if (civ == igetbyte(chip, ichdev->reg_offset + ICH_REG_OFF_CIV) &&
ptr1 == igetword(chip, ichdev->reg_offset + ichdev->roff_picb)) ptr1 == igetword(chip, ichdev->reg_offset + ichdev->roff_picb))
break; break;
......
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