1. 07 9月, 2013 1 次提交
  2. 06 9月, 2013 1 次提交
    • T
      ALSA: hda - Add dock speaker support for ASUS TX300 · 7bba2157
      Takashi Iwai 提交于
      ASUS TX300 has a built-in speaker in the tablet part and in the dock
      part, and the tablet speaker is supposed to be unused while the
      machine is docked.  The current HD-audio driver, however, doesn't
      support the dock speaker, partly because BIOS doesn't set up the pin
      for the corresponding output.
      
      But, not only the missing pin config, also the missing unsol event
      handling is another issue.  Otherwise the automatic switching via
      dock/undock won't work.
      
      Through debugging sessions, we found out that the dock speaker pin is
      NID 0x1b, and it generates an unsol event at docking/undocking, the
      docking state can be inquired via the normal pin detection verb.
      Also, it's turned out that GPIO 2 is needed as an amp.  So, all
      materials are ready to cook.
      
      This patch provides the basic dock speaker support with TX300:
      - The dock speaker is turned on/off via "Dock Speaker" mixer mute.
      - The dock speaker is automatically muted when docked.  This is
        independently from the mixer mute switch, just like the headphone
        auto-mute function.
      
      The implementation is a bit tricky.  Since we want to handle it as a
      secondary speaker, we set it up a pin as a speaker with a jack
      detection.  Then, the fixup function registers the own unsol callback
      for this pin because the standard automute can't handle the thing like
      a "speaker jack".  In the own automute hook, we apply the mute of the
      tablet speaker in addition by checking the dock state.
      
      Also, the speaker control names are slightly shuffled because the
      generic parser doesn't give good names but blindly assumes a bass
      speaker as a secondary speaker.
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=59791Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      7bba2157
  3. 03 9月, 2013 1 次提交
    • T
      ALSA: hda - Re-setup HDMI pin and audio infoframe on stream switches · b054087d
      Takashi Iwai 提交于
      When the transcoder:port mapping on Haswell HDMI/DP audio is changed
      during the stream playback, the sound gets lost.  Typically this
      problem is seen when the user switches the graphics mode from eDP+DP
      to DP-only configuration, where CRTC 1 is used for DP in the former
      while CRTC 0 is used for the latter.
      
      The graphics controller notifies the change via the normal ELD update
      procedure, so we get the intrinsic event.  For enabling the sound
      again, the HDMI audio driver needs to reset the pin and set up the
      audio infoframe again.
      
      This patch achieves it by:
      - keep the current status of channels and info frame setup in per_pin
        struct,
      - check the reconnection in the intrinsic event handler,
      - reset the pin and the re-invoke hdmi_setup_audio_infoframe()
        accordingly.
      
      The hdmi_setup_audio_infoframe() function has been changed, too, so
      that it can be invoked without passing the substream instance.
      
      The patch is mostly based on the work by Mengdong Lin.
      
      Cc: Mengdong Lin <mengdong.lin@intel.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      b054087d
  4. 02 9月, 2013 1 次提交
    • A
      ALSA: hda - hdmi: Fallback to ALSA allocation when selecting CA · 18e39186
      Anssi Hannula 提交于
      hdmi_channel_allocation() tries to find a HDMI channel allocation that
      matches the number channels in the playback stream and contains only
      speakers that the HDMI sink has reported as available via EDID. If no
      such allocation is found, 0 (stereo audio) is used.
      
      Using CA 0 causes the audio causes the sink to discard everything except
      the first two channels (front left and front right).
      
      However, the sink may be capable of receiving more channels than it has
      speakers (and then perform downmix or discard the extra channels), in
      which case it is preferable to use a CA that contains extra channels
      than to use CA 0 which discards all the non-stereo channels.
      
      Additionally, it seems that HBR (HD) passthrough output does not work on
      Intel HDMI codecs when CA is set to 0 (possibly the codec zeroes
      channels not present in CA). This happens with all receivers that report
      a 5.1 speaker mask since a HBR stream is carried on 8 channels to the
      codec.
      
      Add a fallback in the CA selection so that the CA channel count at least
      matches the stream channel count, even if the stream contains channels
      not present in the sink speaker descriptor.
      
      Thanks to GrimGriefer at OpenELEC forums for discovering that changing
      the sink speaker mask allowed HBR output.
      
      Reported-by: GrimGriefer
      Reported-by: Ashecrow
      Reported-by: NFrank Zafka <kafkaesque1978@gmail.com>
      Reported-by: NPeter Frühberger <fritsch@xbmc.org>
      Signed-off-by: NAnssi Hannula <anssi.hannula@iki.fi>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      18e39186
  5. 27 8月, 2013 5 次提交
  6. 23 8月, 2013 1 次提交
  7. 22 8月, 2013 4 次提交
  8. 20 8月, 2013 2 次提交
  9. 19 8月, 2013 2 次提交
  10. 16 8月, 2013 3 次提交
  11. 14 8月, 2013 1 次提交
  12. 13 8月, 2013 2 次提交
  13. 12 8月, 2013 2 次提交
  14. 05 8月, 2013 1 次提交
  15. 02 8月, 2013 1 次提交
    • T
      ALSA: hda - Fix missing fixup for Mac Mini with STAC9221 · 697aebab
      Takashi Iwai 提交于
      A fixup for Apple Mac Mini was lost during the adaption to the generic
      parser because the fallback for the generic ID 8384:7680 was dropped,
      and it resulted in the silence output (and maybe other problems).
      
      Unfortunately, just adding the missing subsystem ID wasn't enough, in
      this case.  The subsystem ID of this machine is 0000:0100 (what Apple
      thought...?), and since snd_hda_pick_fixup() doesn't take the vendor
      id zero into account, the driver ignored this entry.  Now it's fixed
      to regard the vendor id zero as a valid value.
      Reported-and-tested-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Cc: <stable@vger.kernel.org> [v3.9+]
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      697aebab
  16. 29 7月, 2013 5 次提交
    • T
      ALSA: hda - Fix invalid multi-io creation on VAIO-Z laptops · da96fb5b
      Takashi Iwai 提交于
      VAIO-Z laptops need to use the specific DAC for the speaker output
      by some unknown reason although the codec itself supports the flexible
      connection.  So we implemented a workaround by a new flag,
      no_primary_hp, for assigning the speaker pin first.
      
      This worked until 3.8 kernel, but it got broken because the driver
      learned for a better multi-io pin mapping, and not it can assign two
      mic pins for multi-io.  Since the multi-io requires to be the primary
      output, the hp and two mic pins are assigned in prior to the speaker
      in the end.
      
      Although the machine has two mic pins, one of them is used as a noise-
      canceling headphone, thus it's no real retaskable mic jack.  Thus, at
      best, we can disable the multi-io assignment and make the parser
      behavior back to the state before the multi-io.
      
      This patch adds again a new flag, no_multi_io, to indicate that the
      device has no multi-io capability, and set it in the fixup for
      VAIO-Z.  The no_multi_io flag itself can be used generically, added
      via a helper line, too.
      Reported-by: NTormen <my.nl.abos@gmail.com>
      Reported-by: NAdam Williamson <awilliam@redhat.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      da96fb5b
    • T
      ALSA: hda - Remove analog mic pin override from STAC9228 dell-bios quirk · eefb8be4
      Takashi Iwai 提交于
      The current fixup for dell-bios model with STAC9228 codec contains the
      override of pin 0x0c for analog mic.  But this is actually just adding
      a bogus pin and confuses the parser.  Better to remove it for the
      auto-mic switching.
      
      Meanwhile, for a possible regression, keep the old configuration as
      model=dell-bios-amic, so that people can test it again quickly.
      
      Tested on Dell 1420n laptop.
      Reported-and-tested-by: NEric Shattow <lucent@gmail.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      eefb8be4
    • W
      ALSA: hda - WAKEEN feature enabling for runtime pm · 7d4f606c
      Wang Xingchao 提交于
      With runtime power save feature enabled, Headphone hotplug
      event will not be detected while controller/codec in D3. HDA has
      feature WAKEEN to let codec wake up system if controller is in D3 or
      system in S3.(HDA Spec 4.5.9.2/3). Codec can send out INT or wake up
      controller depending on whether CIE or GIE enabled.(Figure 4, Interupt
      structure).
      
      The controller must be in RESET mode after enter runtime-suspend, otherwise
      it will not be waken up even if codec send out wake-up event. And STATESTS
      will be cleared after controller brought out of RESET mode.
      
      This patch only enable WAKEEN for runtime-suspend(Controller D3) mode,
      not for system S3 mode. with tool "evtest", Headphone hotplug events
      could be cought and reported successfully.
      
      [fixed an unused variable warning by tiwai]
      Signed-off-by: NWang Xingchao <xingchao.wang@linux.intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      7d4f606c
    • W
      ALSA: hda - jack poll once if jackpoll_interval==0 · 18e60627
      Wang Xingchao 提交于
      With jackpoll_interval != 0, it's used to poll jack event periodically
      in a delayed work. if it's 0, give the caller chance to probe jack status
      but will not restart the delayed work.
      
      In the next patch which enable WAKEEN feature, HDA controller was able to wake
      up system when it's in D3, it's useful to detect Jack hotplug event and notify
      userspace. By default the jackpoll_interval=0, this patch let jack poll once
      without starting the delayed work.
      Signed-off-by: NWang Xingchao <xingchao.wang@linux.intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      18e60627
    • W
      ALSA: hda - Clearing jackpoll_interval avoid pending work · 7eaa9161
      Wang Xingchao 提交于
      Clearing jackpoll_interval before calling cancel_delayed_work_sync(),
      otherwise the work will be triggered again and cause impact in
      hda_jackpoll_work(). The next patch will poll jack once even with
      jackpoll_interval=0.
      Signed-off-by: NWang Xingchao <xingchao.wang@linux.intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      7eaa9161
  17. 24 7月, 2013 3 次提交
  18. 21 7月, 2013 2 次提交
    • J
      ALSA: replace strict_strto*() with kstrto*() · b785a492
      Jingoo Han 提交于
      The usage of strict_strto*() is not preferred, because
      strict_strto*() is obsolete. Thus, kstrto*() should be
      used.
      Signed-off-by: NJingoo Han <jg1.han@samsung.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      b785a492
    • T
      ALSA: hda - Add snd_hda_jack_detect_state() helper function · 60ea8ca2
      Takashi Iwai 提交于
      snd_hda_jack_detect() function returns a boolean value for a jack
      plugged in or not, but it also returns always true when the
      corresponding pin is phantom (i.e. fixed).  This is OK in most cases,
      but it makes the generic parser misbehaving about the auto-mute or
      auto-mic switching, e.g. when one of headphone pins is a fixed.
      Namely, the driver decides whether to mute the speaker or not, just
      depending on the headphone plug state: if one of the headphone jacks
      is seen as active, then the speaker is muted.  Thus this will result
      always in the muted speaker output.
      
      So, the problem is the function returns a boolean, after all, although
      we need to think of "phantom" jack.  Now a new function,
      snd_hda_jack_detect_state() is introduced to return these tristates.
      The generic parser uses this function for checking the headphone or
      mic jack states.
      
      Meanwhile, the behavior of snd_hda_jack_detect() is kept as is, for
      keeping compatibility in other driver codes.
      Acked-by: NDavid Henningsson <david.henningsson@canonical.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      60ea8ca2
  19. 19 7月, 2013 2 次提交
    • T
      ALSA: hda - Remove NO_PRESENCE bit override for Dell 1420n Laptop · f3e351ee
      Takashi Iwai 提交于
      The quirk for Dell laptops with STAC9228 overrides the pin default
      config of NID 0x0f to the value with AC_DEFCFG_MISC_NO_PRESENCE bit
      on.  I'm not quite sure why this was done so, but can guess that this
      was introduced for avoiding this to be muted by another headphone
      plug.  Now, after transition to the generic parser, this workaround
      rather causes a problem (notably as unexpected speaker mutes) because
      the pin is seen as if it's always plugged in.
      
      Since the generic parser can handle multiple headphone plugging
      gracefully, we can get rid of this override now.
      Reported-and-tested-by: NEric Shattow <lucent@gmail.com>
      Cc: <stable@vger.kernel.org> [v3.9+]
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      f3e351ee
    • T
      ALSA: hda - Fix EAPD GPIO control for Sigmatel codecs · 1ea9a69d
      Takashi Iwai 提交于
      The EAPD GPIO is dynamically turned on/off for some machines with
      Sigmatel codecs, but this didn't work as expected, and it resulted in
      spontaneous lost of speaker outputs per HP plugging or power-saving.
      
      This patch fixes the bug by simply including spec->eapd_mask into
      spec->gpio_mask and spec->gpio_data bits.
      Reported-and-tested-by: NEric Shattow <lucent@gmail.com>
      Cc: <stable@vger.kernel.org> [v3.9+]
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      1ea9a69d