1. 26 10月, 2013 4 次提交
    • T
      ALSA: hda - Sync EAPD with vmaster on AD1984A Thinkpads · afb5a779
      Takashi Iwai 提交于
      As EAPD on NID 0x12 (speaker pin) is used as the master amp on
      Thinkpads with AD1984A codec, we can hook this to vmaster for saving a
      bit more power at master mute state.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      afb5a779
    • T
      Merge branch 'for-linus' into for-next · d601b666
      Takashi Iwai 提交于
      d601b666
    • T
      ALSA: hda - Fix silent headphone on Thinkpads with AD1984A codec · 1ac32930
      Takashi Iwai 提交于
      AD1984A codec has a couple of pins with EAPD controls, and the generic
      codec driver tries to turn each of them on/off depending on the pin
      active state.  However, Thinkpads seem to use EAPD of the speaker pin
      as a master EAPD for controlling the mute of all outputs, including
      the headphone.  This results in the dead headphone output via the
      headphone plugging because it mutes the speaker and turns off EAPD.
      
      The fix is to simply add spec->gen.keep_on_eapd flag.
      
      [This is a regression fix on 3.12 where we moved the AD codec parser
       to the generic parser.  3.11 and earlier didn't show this problem
       because still static quirks have been used.]
      Reported-and-tested-by: NVito Caputo <vcaputo@gnugeneration.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      1ac32930
    • T
      ALSA: hda - Add missing initial vmaster hook at build_controls callback · b63eae0a
      Takashi Iwai 提交于
      The generic parser has a support of vmaster hook, but this is
      initialized only in the init callback with the check of the presence
      of the corresponding kctl.  However, since kctl is NULL at the very
      first init callback that is called before build_controls callback, the
      vmaster hook sync is skipped there.  Eventually this leads to the
      uninitialized state depending on the hook implementation.
      
      This patch adds a simple workaround, just calling the sync function
      explicitly at build_controls callback.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      b63eae0a
  2. 25 10月, 2013 7 次提交
    • T
      Merge tag 'asoc-v3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next · 6913a9db
      Takashi Iwai 提交于
      ASoC: Updates for v3.13
      
       - Further work on the dmaengine helpers, including support for
         configuring the parameters for DMA by reading the capabilities of the
         DMA controller which removes some guesswork and magic numbers fromm
         drivers.
       - A refresh of the documentation.
       - Conversions of many drivers to direct regmap API usage in order to
         allow the ASoC level register I/O code to be removed, this will
         hopefully be completed by v3.14.
       - Support for using async register I/O in DAPM, reducing the time taken
         to implement power transitions on systems that support it.
      6913a9db
    • A
      ALSA: hda - hdmi: Re-setup pin and infoframe on plug-in on all codecs · 7342017f
      Anssi Hannula 提交于
      hdmi_setup_audio_infoframe() does not set up pin and infoframe if there
      is no connected sink. If a sink is connected while audio playback is
      already in progress, the pin and infoframe will not be properly set up,
      causing no audio or wrongly mapped audio.
      
      On Intel Haswell codecs the hdmi_setup_audio_infoframe() is already
      called again from hdmi_present_sense() when an ELD appears because
      transcoder:port mapping may have changed.
      
      Make the call non-Haswell-specific so that audio will be properly set up
      if the playback was started before a sink was connected.
      
      Tested on non-Haswell Intel HDMI codec by plugging sink in during
      playback.
      Signed-off-by: NAnssi Hannula <anssi.hannula@iki.fi>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      7342017f
    • A
      ALSA: hda - hdmi: Disable ramp-up/down for non-PCM on AMD codecs · 84d69e79
      Anssi Hannula 提交于
      Recent AMD HDMI codecs (revision ID 3 and later, 0x100300 as reported by
      procfs codec#0) have a configurable ramp-up/down functionality.
      
      The documentation ( http://www.x.org/docs/AMD/AMD_HDA_verbs_v2.pdf )
      specifies that 180 ("180/256 =~ 0.7") is recommended for PCM and 0 for
      non-PCM.
      
      Apply the recommended values according to provided S/PDIF AES0 settings
      since ramp-up/down does not make sense for non-PCM.
      
      v2: adapted to hdmi_ops infrastructure
      
      * More note from Anssi:
      actually, re-reading mails reveals that Olivier didn't find the
      expected difference with this setting, except for "maybe slightly
      slower startup with AES0=6" (i.e. value 0, which is unexpected).
      
      So maybe
      a) it makes too unnoticiable a difference, or
      b) only affects certain hardware (card and/or sink), or
      c) ramp-up/down is only triggered with the MUTE bit of
         ATI_VERB_SET_MULTICHANNEL_xx which is also rev3+ specific,
         but is not presently used by the driver,
      or something else.
      
      So there's a significant chance setting ramp rate is useless for us ATM,
      but probably does not do actual harm either.
      Signed-off-by: NAnssi Hannula <anssi.hannula@iki.fi>
      Tested-by: Olivier Langlois <olivier@trillion01.com> # v1
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      84d69e79
    • A
      ALSA: hda - hdmi: Add HBR bitstreaming support for ATI/AMD HDMI codecs · 461cf6b3
      Anssi Hannula 提交于
      ATI/AMD HDMI codecs do not include standard HDA HDMI HBR support (which
      is required for bitstreaming DTS-HD and Dolby TrueHD), instead they have
      custom verbs for checking and enabling it.
      
      Add support for the ATI/AMD HDMI HBR verbs.
      
      The specification is available at:
      http://www.x.org/docs/AMD/AMD_HDA_verbs_v2.pdf
      
      v2: adapted to hdmi_ops infrastructure
      Signed-off-by: NAnssi Hannula <anssi.hannula@iki.fi>
      Tested-by: Peter Frühberger <fritsch@xbmc.org> # v1
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      461cf6b3
    • A
      ALSA: hda - hdmi: Add ELD emulation for ATI/AMD codecs · 89250f84
      Anssi Hannula 提交于
      ATI/AMD HDMI/DP codecs do not include standard HDA ELD (EDID-like data)
      support.
      
      In place of providing access to an ELD buffer, various vendor-specific
      verbs are provided to provide the relevant information. Revision ID 3
      and later (0x100300 as reported by procfs codec#X) have support for
      providing more information than the previous revisions (but only if
      supported by the display driver).
      
      Generate ELD from the information provided by the vendor-specific verbs
      on ATI/AMD codecs.
      
      The specification is available at:
      http://www.x.org/docs/AMD/AMD_HDA_verbs_v2.pdf
      
      v2: moved code to hda_eld.c and cleaned it up
      v3: adapted to hdmi_ops infrastructure
      Signed-off-by: NAnssi Hannula <anssi.hannula@iki.fi>
      Tested-by: Peter Frühberger <fritsch@xbmc.org> # v2
      Tested-by: Olivier Langlois <olivier@trillion01.com> # v2
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      89250f84
    • A
      ALSA: hda - hdmi: Add ATI/AMD multi-channel audio support · 5a613584
      Anssi Hannula 提交于
      ATI/AMD codecs do not support all the standard HDA HDMI/DP functions,
      instead various vendor-specific verbs are provided.
      
      This commit addresses these missing functions:
      - standard channel mapping support
      - standard infoframe configuration support
      
      ATI/AMD provides their own verbs that allow the following:
      - setting CA for infoframe
      - setting down-mix information for infoframe
      - channel pair remapping
      - individual channel remapping (revision ID 3+, 0x100300+)
      
      The documentation for the verbs has now been released by AMD:
      http://www.x.org/docs/AMD/AMD_HDA_verbs_v2.pdf
      
      Add support for the ATI/AMD specific verbs and use them instead of the
      generic methods on ATI/AMD codecs. This allows multi-channel PCM audio
      to work.
      
      Channel remapping is restricted to pairwise mapping on codecs with
      revision ID 2 (0x100200 as reported by procfs codec#X) or lower. This
      means cards up to Radeon HD7670 as far as I know. This will not affect
      standard multi-channel modes since these codecs support automatic
      FC-LFE swapping for HDMI.
      
      ATI/AMD codecs do not advertise all of their supported rates, formats
      and channel counts, therefore that information is forced accordingly so
      that all HDMI 1.x PCM parameters are marked as supported.
      
      Support for multiple ports is also added to patch_atihdmi so that
      0x1002aa01 codecs with multiple ports will work properly when switched
      back to that patch.
      
      v2: splitted ELD emulation to a separate patch, tlv fixes
      v3: adapted to the new hdmi_ops infrastructure, fixed rev3+ vendor id
      Signed-off-by: NAnssi Hannula <anssi.hannula@iki.fi>
      Tested-by: Peter Frühberger <fritsch@xbmc.org> # v2
      Tested-by: Olivier Langlois <olivier@trillion01.com> # v2+rev3fix
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      5a613584
    • A
      ALSA: hda - hdmi: Allow HDA patches to customize more operations · 307229d2
      Anssi Hannula 提交于
      Upcoming AMD multichannel support requires many customized operations
      (channel mapping, ELD, HBR) but can otherwise share most of its code
      with the generic patch.
      
      Add a local struct hdmi_ops containing customizable HDMI-specific
      callbacks and move the current code to those callbacks. Functionality is
      unaltered.
      Signed-off-by: NAnssi Hannula <anssi.hannula@iki.fi>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      307229d2
  3. 24 10月, 2013 29 次提交