1. 21 3月, 2013 1 次提交
    • T
      ALSA: hda - Fix abuse of snd_hda_lock_devices() for DSP loader · eb49faa6
      Takashi Iwai 提交于
      The current DSP loader code abuses snd_hda_lock_devices() for ensuring
      the DSP loader not conflicting with the other normal operations.  But
      this trick obviously doesn't work for the PM resume since the streams
      are kept opened there where snd_hda_lock_devices() returns -EBUSY.
      That means we need another lock mechanism instead of abuse.
      
      This patch provides the new lock state to azx_dev.  Theoretically it's
      possible that the DSP loader conflicts with the stream that has been
      already assigned for another PCM.  If it's running, the DSP loader
      should simply fail.  If not -- it's the case for PM resume --, we
      should assign this stream temporarily to the DSP loader, and take it
      back to the PCM after finishing DSP loading.  If the PCM is operated
      during the DSP loading, it should get an error, too.
      Reported-and-tested-by: NDylan Reid <dgreid@chromium.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      eb49faa6
  2. 20 3月, 2013 1 次提交
  3. 18 3月, 2013 3 次提交
  4. 15 3月, 2013 4 次提交
  5. 14 3月, 2013 1 次提交
  6. 12 3月, 2013 1 次提交
    • T
      ALSA: hda - Fix snd_hda_get_num_raw_conns() to return a correct value · b5f82b10
      Takashi Iwai 提交于
      In the connection list expansion in hda_codec.c and hda_proc.c, the
      value returned from snd_hda_get_num_raw_conns() is used as the array
      size to store the connection list.  However, the function returns
      simply a raw value of the AC_PAR_CONNLIST_LEN parameter, and the
      widget list with ranges isn't considered there.  Thus it may return a
      smaller size than the actual list, which results in -ENOSPC in
      snd_hda_get_raw_conections().
      
      This patch fixes the bug by parsing the connection list correctly also
      for snd_hda_get_num_raw_conns().
      Reported-and-tested-by: NDavid Henningsson <david.henningsson@canonical.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      b5f82b10
  7. 07 3月, 2013 4 次提交
  8. 25 2月, 2013 1 次提交
  9. 22 2月, 2013 1 次提交
  10. 20 2月, 2013 5 次提交
  11. 19 2月, 2013 1 次提交
  12. 18 2月, 2013 1 次提交
  13. 14 2月, 2013 2 次提交
  14. 13 2月, 2013 2 次提交
    • T
      ALSA: hda - Increase badness for missing multi-io · 1d739066
      Takashi Iwai 提交于
      The current badness value used for the missing multi-io seems too
      weak, and the multi-io tends to be skipped for desktop configurations
      when no enough DACs are available.  It's because the total badness of
      the multi-io becomes often larger than the badness with assigning an
      individual DAC to a headphone jack.  This is good for one side, but it
      seems that the surround outputs are more demanded by that.
      
      This patch increases the badness value for the missing multi-io
      slightly so that the multi-io would be preferred than the individual
      headphone DAC if they conflict.  Through the tests with hda-emu,
      mostly only desktop configurations with ALC662/663 and CMI codecs are
      affected by this change, and all look reasonable.
      Reported-by: NRaymond Yau <superquad.vortex2@gmail.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      1d739066
    • T
      ALSA: hda - Fix broken workaround for HDMI/SPDIF conflicts · ea9b43ad
      Takashi Iwai 提交于
      The commit [dcda5806: ALSA: hda - Add workaround for conflicting
      IEC958 controls] introduced a workaround for cards that have both
      SPDIF and HDMI devices for giving device=1 to SPDIF control elements.
      It turned out, however, that this workaround doesn't work well -
      
      - The workaround checks only conflicts in a single codec, but SPDIF
        and HDMI are provided by multiple codecs in many cases, and
      
      - ALSA mixer abstraction doesn't care about the device number in ctl
        elements, thus you'll get errors from amixer such as
        % amixer scontrols -c 0
        ALSA lib simple_none.c:1551:(simple_add1) helem (MIXER,'IEC958
        Playback Switch',0,1,0) appears twice or more
        amixer: Mixer hw:0 load error: Invalid argument
      
      This patch fixes the previous broken workaround.  Instead of changing
      the device number of SPDIF ctl elements, shift the element indices of
      such controls up to 16.  Also, the conflict check is performed over
      all codecs found on the bus.
      
      HDMI devices will be put to dev=0,index=0 as before.  Only the
      conflicting SPDIF device is moved to a different place.  The new place
      of SPDIF device is supposed by the updated alsa-lib HDA-Intel.conf,
      respectively.
      Reported-by: NStephan Raue <stephan@openelec.tv>
      Reported-by: NAnssi Hannula <anssi.hannula@iki.fi>
      Cc: <stable@vger.kernel.org> [v3.8]
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      ea9b43ad
  15. 12 2月, 2013 4 次提交
  16. 11 2月, 2013 1 次提交
  17. 10 2月, 2013 3 次提交
  18. 08 2月, 2013 4 次提交
    • T
      ALSA: hda - Yet another fix for broken HSW HDMI pin connections · c88d4e84
      Takashi Iwai 提交于
      A Haswell test machine showed that the invalid connection list, but
      this time it has only a single pin on the codec, thus the former fixup
      code doesn't work as it assumes the three pins blindly.
      
      This patch splits the former fixup code to two parts:
      - Enable eDP 1.2 for Haswell codec
      - Fix the connection list of pins on Haswell codec;
        the converter list is recorded dynamically in hdmi_add_cvt(), and
        applied in hdmi_add_pin()
      Signed-off-by: NMengdong Lin <mengdong.lin@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      c88d4e84
    • M
      ALSA: hda - Add fixup for Haswell to enable all pin and convertor widgets · 1611a9c9
      Mengdong Lin 提交于
      Some Haswell machines support more than one display outputs (HDMI or DP),
      but its BIOS may not enable the codec's 2nd and 3rd pin and output cvt widgets.
      
      This patch implements a board-specific fixup for Intel Haswell Machines:
      If the hidden pins are not enabled by BIOS, the driver will enable them
      and call common code to update the codec tree.
      Signed-off-by: NMengdong Lin <mengdong.lin@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      1611a9c9
    • M
      ALSA: hda - Support rereading widgets under the function group · a15d05db
      Mengdong Lin 提交于
      A codec may allow software to hide some unused pin/cvt widgets.
      
      Sometimes BIOS does not enable the hidden widgets properly although they are
      needed for the board. Thus the driver need to enable them as a board-specific
      fixup and the whole tree will change.
      
      This patch implements a common code for rereading codec widgets. So the fixup
      code can call it after enabling the hidden widgets.
      Signed-off-by: NMengdong Lin <mengdong.lin@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      a15d05db
    • T
      ALSA: hda - Remove limit of widget connections · 4eea3091
      Takashi Iwai 提交于
      Currently we set the max number of connections to be 32, but there
      seems codec that gives longer connection lists like AD1988, and we see
      errors in proc output and else.  (Though, in the case of AD1988, it's
      a list of all codecs connected to a single vendor widget, so this must
      be something fishy, but it's still valid from the h/w design POV.)
      
      This patch tries to remove this restriction.  For efficiency, we still
      use the fixed size array in the parser, but takes a dynamic array when
      the size is reported to be greater than that.
      
      Now the fixed array size is found only in patch_hdmi.c, but it should
      be fine, as the codec itself can't support so many pins.
      Reported-by: NRaymond Yau <superquad.vortex2@gmail.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      4eea3091