提交 4edf5886 编写于 作者: L Linus Torvalds

Merge branch 'for-linus' of git://github.com/tiwai/sound

* 'for-linus' of git://github.com/tiwai/sound:
  ALSA: hda - Fix a regression of the position-buffer check
...@@ -1924,7 +1924,8 @@ static unsigned int azx_via_get_position(struct azx *chip, ...@@ -1924,7 +1924,8 @@ static unsigned int azx_via_get_position(struct azx *chip,
} }
static unsigned int azx_get_position(struct azx *chip, static unsigned int azx_get_position(struct azx *chip,
struct azx_dev *azx_dev) struct azx_dev *azx_dev,
bool with_check)
{ {
unsigned int pos; unsigned int pos;
int stream = azx_dev->substream->stream; int stream = azx_dev->substream->stream;
...@@ -1940,7 +1941,7 @@ static unsigned int azx_get_position(struct azx *chip, ...@@ -1940,7 +1941,7 @@ static unsigned int azx_get_position(struct azx *chip,
default: default:
/* use the position buffer */ /* use the position buffer */
pos = le32_to_cpu(*azx_dev->posbuf); pos = le32_to_cpu(*azx_dev->posbuf);
if (chip->position_fix[stream] == POS_FIX_AUTO) { if (with_check && chip->position_fix[stream] == POS_FIX_AUTO) {
if (!pos || pos == (u32)-1) { if (!pos || pos == (u32)-1) {
printk(KERN_WARNING printk(KERN_WARNING
"hda-intel: Invalid position buffer, " "hda-intel: Invalid position buffer, "
...@@ -1964,7 +1965,7 @@ static snd_pcm_uframes_t azx_pcm_pointer(struct snd_pcm_substream *substream) ...@@ -1964,7 +1965,7 @@ static snd_pcm_uframes_t azx_pcm_pointer(struct snd_pcm_substream *substream)
struct azx *chip = apcm->chip; struct azx *chip = apcm->chip;
struct azx_dev *azx_dev = get_azx_dev(substream); struct azx_dev *azx_dev = get_azx_dev(substream);
return bytes_to_frames(substream->runtime, return bytes_to_frames(substream->runtime,
azx_get_position(chip, azx_dev)); azx_get_position(chip, azx_dev, false));
} }
/* /*
...@@ -1987,7 +1988,7 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev) ...@@ -1987,7 +1988,7 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev)
return -1; /* bogus (too early) interrupt */ return -1; /* bogus (too early) interrupt */
stream = azx_dev->substream->stream; stream = azx_dev->substream->stream;
pos = azx_get_position(chip, azx_dev); pos = azx_get_position(chip, azx_dev, true);
if (WARN_ONCE(!azx_dev->period_bytes, if (WARN_ONCE(!azx_dev->period_bytes,
"hda-intel: zero azx_dev->period_bytes")) "hda-intel: zero azx_dev->period_bytes"))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册