sound fix for 3.1
Linus,
please pull a sound fix for v3.1 from:
git://github.com/tiwai/sound.git for-linus
The only commit to pull is 798cb7e897210dbf827f69a302c0967e0380ebac, a fix for a regression introduced in 3.1-rc.
Thanks!
Takashi
===
Takashi Iwai (1):
ALSA: hda - Fix a regression of the position-buffer check
--- sound/pci/hda/hda_intel.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-)
sound/pci/hda/hda_intel.c +5 -4
@@ -1924,7 +1924,8 @@ static unsigned int azx_via_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;int stream = azx_dev->substream->stream;
@@ -1940,7 +1941,7 @@ static unsigned int azx_get_position(struct azx *chip,default :/* use the position buffer */ 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 ) {printk (KERN_WARNING "hda-intel: Invalid position buffer, "
@@ -1964,7 +1965,7 @@ static snd_pcm_uframes_t azx_pcm_pointer(struct snd_pcm_substream *substream)struct azx *chip = apcm->chip;struct azx_dev *azx_dev =get_azx_dev (substream);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)return -1 ;/* bogus (too early) interrupt */ 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,"hda-intel: zero azx_dev->period_bytes" ))
Hi,
Quoted 2 lines · Takashi Iwai
The only commit to pull is
798cb7e897210dbf827f69a302c0967e0380ebac, a fix for a regression introduced in 3.1-rc.
Unfortunately that fix causes problems in audio playback for me. The audio seems to play faster and have rather large skips.
Reverting that commit ontop of v3.1-rc10-2-gfb630b9 fixes that problem for me.
05:00.0 Audio device: Creative Labs [SB X-Fi Xtreme Audio] CA0110-IBG
Subsystem: Creative Labs SB1040
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (500ns min, 5000ns max)
Interrupt: pin A routed to IRQ 16
Region 0: Memory at fb9fc000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [dc] Power Management version 3
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mAPME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use: snd_hda_intel
Anything more you need?
Greetings,
Andres
At Tue, 25 Oct 2011 09:02:46 +0200,
Quoted 26 lines · Andres Freund
Hi,
Quoted 2 lines · Takashi Iwai
The only commit to pull is
798cb7e897210dbf827f69a302c0967e0380ebac, a fix for a regression introduced in 3.1-rc.Unfortunately that fix causes problems in audio playback for me. The audio seems to play faster and have rather large skips.
Reverting that commit ontop of v3.1-rc10-2-gfb630b9 fixes that problem for me.
05:00.0 Audio device: Creative Labs [SB X-Fi Xtreme Audio] CA0110-IBG
Subsystem: Creative Labs SB1040
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (500ns min, 5000ns max)
Interrupt: pin A routed to IRQ 16
Region 0: Memory atfb9fc000(32-bit, non-prefetchable) [size=16K]
Capabilities: [dc] Power Management version 3
Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mAPME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use:snd_hda_intel
Quoted 1 line
Anything more you need?
Grrr, I hate this endless madness with the DMA position...
Could you try position_fix=1 or position_fix=2 option whether it fixes the problem? If position_fix=1 works, try the patch below without the option.
thanks,
Takashi
---
sound/pci/hda/hda_intel.c +2 -2
@@ -3063,12 +3063,12 @@ static DEFINE_PCI_DEVICE_TABLE(azx_ids) = { .class = PCI_CLASS_MULTIMEDIA_HD_AUDIO << 8, .class_mask = 0xffffff, .driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND | - AZX_DCAPS_RIRB_PRE_DELAY }, + AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB }, #else /* this entry seems still valid -- i.e. without emu20kx chip */ { PCI_DEVICE(0x1102, 0x0009), .driver_data = AZX_DRIVER_CTX | AZX_DCAPS_CTX_WORKAROUND | - AZX_DCAPS_RIRB_PRE_DELAY }, + AZX_DCAPS_RIRB_PRE_DELAY | AZX_DCAPS_POSFIX_LPIB }, #endif /* Vortex86MX */ { PCI_DEVICE(0x17f3, 0x3010), .driver_data = AZX_DRIVER_GENERIC },
Hi,
Quoted 35 lines · On Tuesday 25 Oct 2011 10:30:20 Takashi Iwai wrote:
Quoted 35 lines · Takashi Iwai
Quoted 2 lines
The only commit to pull is
798cb7e897210dbf827f69a302c0967e0380ebac, a fix for a regression introduced in 3.1-rc.Unfortunately that fix causes problems in audio playback for me. The audio seems to play faster and have rather large skips.
Reverting that commit ontop of v3.1-rc10-2-gfb630b9 fixes that problem for me.
05:00.0 Audio device: Creative Labs [SB X-Fi Xtreme Audio] CA0110-IBG
Subsystem: Creative Labs SB1040
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort-
<TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (500ns min, 5000ns max)
Interrupt: pin A routed to IRQ 16
Region 0: Memory atfb9fc000(32-bit, non-prefetchable) [size=16K] Capabilities: [dc] Power Management version 3Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA
PME(D0-,D1-,D2-,D3hot-,D3cold-)Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
Kernel driver in use:
snd_hda_intel
Quoted 7 lines
Quoted 1 line
Anything more you need?
Grrr, I hate this endless madness with the DMA position...
Could you try position_fix=1 or position_fix=2 option whether it fixes the problem? If position_fix=1 works, try the patch below without the option.
Will do as soon as I am home again (~7 hours from now).
Andres