forked from Minki/linux
sound fixes for 3.18-rc1
Here are a collection of small fixes after 3.18 merge. The urgent one is the fix for kernel panics with linked PCM substream triggered by the recent nonatomic PCM ops support. Other two fixes (emu10k1 and bebob) are stable fixes, and one easy PCI ID addition for a new Intel HD-audio controller. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABAgAGBQJUQDOmAAoJEGwxgFQ9KSmkkKQP/R4WO6FaoIKqQOuSDrFlrqo5 sxjQrsqLL1jYvZpJjwgfthEsL7n+6ERqXAGul6V90iXWAm1yKfVoyJY30O2p5vVb 9klS9geh/fZ0183FbnkLuUe3/CtEiZv3UBpR/YVCEx2fYQ5CKRZ2d2tug21vDTa9 ce2OQrxsRoWRIsi1jvpu1NgxJ0FUqj/iXNMu8aGttFyZQkg3vJ9HggMkIgT4+25p mCq3YMcCjZN/lSwg6/uYt1IW/zdfQ3MRA+pppGj9+hIynBrvaiFlhda1HmBLj5cy fIIntVBO5aBOUL6ze2D2vdRWOFUr61gjvV3U91gvJn1TEYa3Nj3Lig/E0pCE6iba 4YdZK5v4Wbug9Zk4iyPmFV+Zii6YxLmnrF+AA09pBgNtdzmcrZci6AFNjbXP4seB RCXg0Ymu68pbjLkqJqLvw8Ts6CIPN7LjcEbYCgB/kSFfQmkWP4Ab1KWfKsNw3pok PR51l4N/ZhvFbXlLAf5ke11DgEt4LALP3cD0QpbnBneXqwUIS9OQ5+nckh5VKYnF 41UHgVIZfxnq8Gqv3AuvZf+ocYXjINDH7glBVm3uLZwEK8bnVNpaLzpd07IePOiR qCVNWGzvOwHgd+vAVvJ35r0O76fyiKOtATPDZZz66QXxvkd5GPVZNJseD3lIkzyg jAWBp53zesgQCLv1Naj7 =jf99 -----END PGP SIGNATURE----- Merge tag 'sound-fix-3.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound fixes from Takashi Iwai: "Here are a collection of small fixes after 3.18 merge. The urgent one is the fix for kernel panics with linked PCM substream triggered by the recent nonatomic PCM ops support. Other two fixes (emu10k1 and bebob) are stable fixes, and one easy PCI ID addition for a new Intel HD-audio controller" * tag 'sound-fix-3.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: hda_intel: Add Device IDs for Intel Sunrise Point PCH ALSA: emu10k1: Fix deadlock in synth voice lookup ALSA: pcm: Fix referred substream in snd_pcm_action_group() unlock loop ALSA: bebob: Fix failure to detect source of clock for Terratec Phase 88
This commit is contained in:
commit
d590c6cdd9
@ -818,7 +818,7 @@ static int snd_pcm_action_group(struct action_ops *ops,
|
||||
/* unlock streams */
|
||||
snd_pcm_group_for_each_entry(s1, substream) {
|
||||
if (s1 != substream) {
|
||||
if (s->pcm->nonatomic)
|
||||
if (s1->pcm->nonatomic)
|
||||
mutex_unlock(&s1->self_group.mutex);
|
||||
else
|
||||
spin_unlock(&s1->self_group.lock);
|
||||
|
@ -17,10 +17,10 @@ phase88_rack_clk_src_get(struct snd_bebob *bebob, unsigned int *id)
|
||||
unsigned int enable_ext, enable_word;
|
||||
int err;
|
||||
|
||||
err = avc_audio_get_selector(bebob->unit, 0, 0, &enable_ext);
|
||||
err = avc_audio_get_selector(bebob->unit, 0, 9, &enable_ext);
|
||||
if (err < 0)
|
||||
goto end;
|
||||
err = avc_audio_get_selector(bebob->unit, 0, 0, &enable_word);
|
||||
err = avc_audio_get_selector(bebob->unit, 0, 8, &enable_word);
|
||||
if (err < 0)
|
||||
goto end;
|
||||
|
||||
|
@ -85,6 +85,8 @@ snd_emu10k1_ops_setup(struct snd_emux *emux)
|
||||
* get more voice for pcm
|
||||
*
|
||||
* terminate most inactive voice and give it as a pcm voice.
|
||||
*
|
||||
* voice_lock is already held.
|
||||
*/
|
||||
int
|
||||
snd_emu10k1_synth_get_voice(struct snd_emu10k1 *hw)
|
||||
@ -92,12 +94,10 @@ snd_emu10k1_synth_get_voice(struct snd_emu10k1 *hw)
|
||||
struct snd_emux *emu;
|
||||
struct snd_emux_voice *vp;
|
||||
struct best_voice best[V_END];
|
||||
unsigned long flags;
|
||||
int i;
|
||||
|
||||
emu = hw->synth;
|
||||
|
||||
spin_lock_irqsave(&emu->voice_lock, flags);
|
||||
lookup_voices(emu, hw, best, 1); /* no OFF voices */
|
||||
for (i = 0; i < V_END; i++) {
|
||||
if (best[i].voice >= 0) {
|
||||
@ -113,11 +113,9 @@ snd_emu10k1_synth_get_voice(struct snd_emu10k1 *hw)
|
||||
vp->emu->num_voices--;
|
||||
vp->ch = -1;
|
||||
vp->state = SNDRV_EMUX_ST_OFF;
|
||||
spin_unlock_irqrestore(&emu->voice_lock, flags);
|
||||
return ch;
|
||||
}
|
||||
}
|
||||
spin_unlock_irqrestore(&emu->voice_lock, flags);
|
||||
|
||||
/* not found */
|
||||
return -ENOMEM;
|
||||
|
@ -218,6 +218,7 @@ MODULE_SUPPORTED_DEVICE("{{Intel, ICH6},"
|
||||
"{Intel, LPT},"
|
||||
"{Intel, LPT_LP},"
|
||||
"{Intel, WPT_LP},"
|
||||
"{Intel, SPT},"
|
||||
"{Intel, HPT},"
|
||||
"{Intel, PBG},"
|
||||
"{Intel, SCH},"
|
||||
@ -1998,6 +1999,9 @@ static const struct pci_device_id azx_ids[] = {
|
||||
/* Wildcat Point-LP */
|
||||
{ PCI_DEVICE(0x8086, 0x9ca0),
|
||||
.driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
|
||||
/* Sunrise Point */
|
||||
{ PCI_DEVICE(0x8086, 0xa170),
|
||||
.driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
|
||||
/* Haswell */
|
||||
{ PCI_DEVICE(0x8086, 0x0a0c),
|
||||
.driver_data = AZX_DRIVER_HDMI | AZX_DCAPS_INTEL_HASWELL },
|
||||
|
Loading…
Reference in New Issue
Block a user