[alsa-devel] [PATCH] ALSA: hda - Fix a wrong busy check in alt PCM open

Raymond Yau superquad.vortex2 at gmail.com
Mon Aug 3 04:07:05 CEST 2015


> >
> > >
> > > Currently, the alt PCM open callback returns -EBUSY when an
> > > independent HP is turned off, supposing that it conflicts with the
> > > main PCM.  However, obviously, this check is wrong when the
> > > independent HP itself isn't enabled but the alt PCM was explicitly
> > > created via alc_dac_nid by a codec driver.
> >
> > The alt_pcm is created only when indep_hp == 1
> >
> > When indep_hp_enable = 0, HP is reconnected to analog device stream , alt
> > analog device return ebusy
> >
> > This look like bug in indep_hp_possible() which should return false when
> HP
> > and Line Out/Speaker share same DAC
>
> The problem happens in a very special case where the codec driver
> enables the alt PCM manually in a fixup.  It doesn't exist in the
> current code, so this is no real problem, but just a hypothetical
> issue.
>
>
http://git.kernel.org/cgit/linux/kernel/git/tiwai/hda-emu.git/tree/codecs/alc662-intel-d945gclf2?id=HEAD

This Intel Desktop motherboard is not in the support list of multistreaming

http://www.intel.com/support/motherboards/desktop/sb/CS-034206.htm

However , user can still enable Independent HP by using hint

multi_io = 0
indep_hp = 1

This mean that function indep_hp_possible() should return false for those
hda codecs which does not support multistreaming (e.g. ad1986a and alc66x)


https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/pci/hda?id=55a63d4da3b8850480a1c5b222f77c739e30e346

+ /* clear indep_hp flag if not available */
+ if (spec->indep_hp && !indep_hp_possible(codec))
+ spec->indep_hp = 0;


More information about the Alsa-devel mailing list