Re: [alsa-devel] Problem with snd_hda_intel from 05-27-2010 snapshot
On Sun, 30 May 2010, VDR User wrote:
On Sun, May 30, 2010 at 8:37 AM, Jaroslav Kysela perex@perex.cz wrote:
Thanks. The wallclock register seems working OK. Please, use value 29 for the xrun_debug file to do more accurate inspection what's going wrong (as I suggested in my first reply):
Attached is my full syslog with xrun_debug 29.
Thanks. Could you try this patch?
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 170610e..ac3dbab 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1910,7 +1910,7 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev) if (WARN_ONCE(!azx_dev->period_bytes, "hda-intel: zero azx_dev->period_bytes")) return -1; /* this shouldn't happen! */ - if (wallclk <= azx_dev->period_wallclk && + if (wallclk < (azx_dev->period_wallclk * 3) / 2 && pos % azx_dev->period_bytes > azx_dev->period_bytes / 2) /* NG - it's below the first next period boundary */ return bdl_pos_adj[chip->dev_index] ? 0 : -1;
----- Jaroslav Kysela perex@perex.cz Linux Kernel Sound Maintainer ALSA Project, Red Hat, Inc.
On Mon, May 31, 2010 at 11:30 AM, Jaroslav Kysela perex@perex.cz wrote:
Thanks. Could you try this patch?
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 170610e..ac3dbab 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1910,7 +1910,7 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev) if (WARN_ONCE(!azx_dev->period_bytes, "hda-intel: zero azx_dev->period_bytes")) return -1; /* this shouldn't happen! */
- if (wallclk <= azx_dev->period_wallclk &&
- if (wallclk < (azx_dev->period_wallclk * 3) / 2 &&
pos % azx_dev->period_bytes > azx_dev->period_bytes / 2) /* NG - it's below the first next period boundary */ return bdl_pos_adj[chip->dev_index] ? 0 : -1;
I've got a bit of a strange result. With the above patch (and the wallclk logging patch from your previous email), sound does not work. However, it _does_ start working only if I `echo 29 > /proc/asound/card1/pcm3p/xrun_debug`. I tested these results with a reboot in between each attempt just to make sure I'm working with a clean boot. I can't imagine what's causing this weird condition. Any ideas?
Best regards, Derek
On Mon, 31 May 2010, VDR User wrote:
On Mon, May 31, 2010 at 11:30 AM, Jaroslav Kysela perex@perex.cz wrote:
Thanks. Could you try this patch?
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 170610e..ac3dbab 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1910,7 +1910,7 @@ static int azx_position_ok(struct azx *chip, struct azx_dev *azx_dev) if (WARN_ONCE(!azx_dev->period_bytes, "hda-intel: zero azx_dev->period_bytes")) return -1; /* this shouldn't happen! */
- if (wallclk <= azx_dev->period_wallclk &&
- if (wallclk < (azx_dev->period_wallclk * 3) / 2 &&
pos % azx_dev->period_bytes > azx_dev->period_bytes / 2) /* NG - it's below the first next period boundary */ return bdl_pos_adj[chip->dev_index] ? 0 : -1;
I've got a bit of a strange result. With the above patch (and the wallclk logging patch from your previous email), sound does not work. However, it _does_ start working only if I `echo 29 > /proc/asound/card1/pcm3p/xrun_debug`. I tested these results with a reboot in between each attempt just to make sure I'm working with a clean boot. I can't imagine what's causing this weird condition. Any ideas?
Try to disable jiffies check (value 25 for xrun_debug). Please, post your log for value 29 for inspection. Thanks.
Jaroslav
----- Jaroslav Kysela perex@perex.cz Linux Kernel Sound Maintainer ALSA Project, Red Hat, Inc.
participants (2)
-
Jaroslav Kysela
-
VDR User