1. 10 4月, 2017 1 次提交
  2. 08 12月, 2015 2 次提交
  3. 21 3月, 2015 1 次提交
  4. 18 3月, 2015 1 次提交
    • T
      ALSA: hda - Support advanced power state controls · e6feb5d0
      Takashi Iwai 提交于
      This patch enables the finer power state control of each widget
      depending on the jack plug state and streaming state in addition to
      the existing power_down_unused power optimization.  The new feature is
      enabled only when codec->power_mgmt flag is set.
      
      Two new flags, pin_enabled and stream_enabled, are introduced in
      nid_path struct for marking the two individual power states: the pin
      plug/unplug and DAC/ADC stream, respectively.  They can be set
      statically in case they are static routes (e.g. some mixer paths),
      too.
      
      The power up and down events for each pin are triggered via the
      standard hda_jack table.  The call order is hard-coded, relying on the
      current implementation of jack event chain (a la FILO/stack order).
      
      One point to be dealt carefully is that DAC/ADC cannot be powered
      on/off while streaming.  They are pinned as long as the stream is
      running.  For controlling the power of DAC/ADC, a new patch_ops is
      added.  The generic parser provides the default callback for that.
      
      As of this patch, only IDT/Sigmatel codec driver enables the flag.
      The support on other codecs will follow.
      
      An assumption we made in this code is that the widget state (e.g. amp,
      pinctl, connections) remains after the widget power transition (not
      about FG power transition).  This is true for IDT codecs, at least.
      But if the widget state is lost at widget power transition, we'd need
      to implement additional code to sync the cached amp/verbs for the
      specific NID.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      e6feb5d0
  5. 03 3月, 2015 1 次提交
    • T
      ALSA: hda - Allocate hda_pcm objects dynamically · bbbc7e85
      Takashi Iwai 提交于
      So far, the hda_codec object kept the hda_pcm list in an array, and
      the codec driver was expected to assign the array.  However, this
      makes the object life cycle management harder, because the assigned
      array is freed at the codec driver detach while it might be still
      accessed by the opened streams.
      
      In this patch, we allocate each hda_pcm object dynamically and manage
      it as a linked list.  Each object has a kref refcount, and both the
      codec driver binder and the PCM open/close touches it, so that the
      object won't be freed while in use.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      bbbc7e85
  6. 15 12月, 2014 1 次提交
  7. 16 9月, 2014 1 次提交
    • T
      ALSA: hda - Allow multiple callbacks for jack · 1a4f69d5
      Takashi Iwai 提交于
      So far, hda_jack infrastructure allows only one callback per jack, and
      this makes things slightly complicated when a driver wants to assign
      multiple tasks to a jack, e.g. the standard auto-mute with a power
      up/down sequence.  This can be simplified if the hda_jack accepts
      multiple callbacks.
      
      This patch is such an extension: the callback-specific part (the
      function and private_data) is split to another struct from
      hda_jack_tbl, and multiple such objects can be assigned to a single
      hda_jack_tbl entry.
      
      The new struct hda_jack_callback is passed to each callback function
      now, thus the patch became bigger than expected.  But these changes
      are mostly trivial.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      1a4f69d5
  8. 11 9月, 2014 1 次提交
    • T
      ALSA: hda - Get rid of action field from struct hda_jack_tbl · 62f949bf
      Takashi Iwai 提交于
      The action value assigned to each hda_jack_tbl entry is mostly
      superfluous.  The actually used values are either the widget NID or a
      value specific to the callback.
      
      The former case can be simply replaced by a reference to widget NID
      itself.  The only place doing the latter is STAC/IDT codec driver for
      the powermap handling.  But, the code doesn't need to check the action
      field at all -- the function jack_update_power() is called either with
      a specific pin or with NULL.  So the check of jack->action can be
      removed completely there, too.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      62f949bf
  9. 03 9月, 2014 1 次提交
    • T
      ALSA: hda - Add TLV_DB_SCALE_MUTE bit for relevant controls · d89c6c0c
      Takashi Iwai 提交于
      The DACs on Sigmatel/IDT codecs do mute at the lowest volume level,
      and in the earlier drivers, we passed TLV_DB_SCALE_MUTE bit for each
      volume control element like Speaker and Headphone as well as Master.
      Along with the translation to the generic parser, however, the TLV bit
      was lost for the slave controls (e.g. Speaker) but set only to
      Master.  In theory this should have sufficed, but apps, particularly
      PA, do care the slave volume bits, so we seem to see a regression in
      the volume controls.
      
      This patch adds a flag to hda_gen_spec to specify the DAC mute
      feature, and adds the TLV bit properly for all relevant volume
      controls.  Also, the TLV bit for vmaster is set in hda_generic.c, so
      that we can get rid of all tricks from the codec driver side.
      
      As the similar hack is applied to Conexant 5051 stuff, we can get rid
      of it as well.
      
      BugLink: https://bugs.launchpad.net/bugs/1357928Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      d89c6c0c
  10. 11 2月, 2014 1 次提交
  11. 07 2月, 2014 1 次提交
    • T
      ALSA: hda - Fix inconsistent Mic mute LED · 7fe30711
      Takashi Iwai 提交于
      The current code for controlling mic mute LED in patch_sigmatel.c
      blindly assumes that there is a single capture switch.  But, there can
      be multiple multiple ones, and each of them flips the state, ended up
      in an inconsistent state.
      
      For fixing this problem, this patch adds kcontrol to be passed to the
      hook function so that the callee can check which switch is being
      accessed.  In stac_capture_led_hook(), the state is checked as a
      bitmask, and turns on the LED when all capture switches are off.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      7fe30711
  12. 13 1月, 2014 1 次提交
  13. 11 12月, 2013 1 次提交
    • T
      ALSA: hda - Add static DAC/pin mapping for AD1986A codec · 3690739b
      Takashi Iwai 提交于
      AD1986A codec is a pretty old codec and has really many hidden
      restrictions.  One of such is that each DAC is dedicated to certain
      pin although there are possible connections.  Currently, the generic
      parser tries to assign individual DACs as much as possible, and this
      lead to two bad situations: connections where the sound actually
      doesn't work, and connections conflicting other channels.
      
      We may fix this by trying to find the best connections more harder,
      but as of now, it's easier to give some hints for paired DAC/pin
      connections and honor them if available, since such a hint is needed
      only for specific codecs (right now only AD1986A, and there will be
      unlikely any others in future).
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=64971
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=66621
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      3690739b
  14. 05 11月, 2013 1 次提交
  15. 29 7月, 2013 1 次提交
    • 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
  16. 25 6月, 2013 1 次提交
    • T
      ALSA: hda - Add auto_mute_via_amp flag to generic parser · 7eebffd3
      Takashi Iwai 提交于
      Add a new flag, auto_mute_via_amp, to determine the behavior of the
      headphone / line-out auto-mute.  When this flag is set, the generic
      driver mutes the speaker and line outputs via the amp mute of each
      pin, instead of changing the pin control values.
      
      This is introduced for devices that don't work expectedly with the pin
      control values; for example, some devices are known to keep enabling
      the speaker outputs no matter which pin control values are set on the
      speaker pins.
      
      The driver doesn't check actually whether the pins have the output amp
      caps, but assumes that the proper mixer (mute) controls are created on
      all these pins.  If not the case, you can't use this flag for your
      device.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      7eebffd3
  17. 03 6月, 2013 1 次提交
  18. 22 3月, 2013 1 次提交
  19. 18 3月, 2013 1 次提交
  20. 08 3月, 2013 3 次提交
    • T
      ALSA: hda - Avoid automatic pin-ctl update for hp/mic when jack ctl exists · 8ba955ce
      Takashi Iwai 提交于
      When the headphone mic jack enum control is created (via explicitly
      specification by user), it doesn't make much sense to change the I/O
      direction dynamically per capture source change, since the I/O
      direction is rather controlled over the enum ctl.
      
      This also reduces the implicit dependency between the capture source
      and the hp mic jack enum ctls, which might confuse a program accessing
      the whole control elements at once like alsactl.
      
      In addition, this patch introduces update_hp_automute_hook() function
      to call the proper hook function.  It's just to remove the open codes
      in multiple places in hda_generic.c.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      8ba955ce
    • T
      ALSA: hda - Consolidate add_in_jack_modes and add_out_jack_modes hints · f811c3cf
      Takashi Iwai 提交于
      There is no big merit to distinguish these two hints.  Instead, just
      have a single flag, add_jack_modes, for creating the jack mode enum
      ctls for both I/O directions.
      
      The hint string parser code is left and translated as add_jack_modes
      just for keeping compatibility.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      f811c3cf
    • T
      ALSA: hda - Add the generic Headphone Mic feature · 967303da
      Takashi Iwai 提交于
      This patch improves the generic parser code to allow to set up the
      headphone jack as a mic input.  User can enable this feature by giving
      hp_mic hint string.
      
      The former shared hp/mic feature for the single built-in mic is still
      retained.  This detection can be disabled now via hp_mic_detect hint
      string, too.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      967303da
  21. 07 2月, 2013 2 次提交
  22. 25 1月, 2013 1 次提交
  23. 24 1月, 2013 1 次提交
  24. 22 1月, 2013 1 次提交
  25. 21 1月, 2013 1 次提交
    • T
      ALSA: hda - Fix conflicts between Loopback Mixing and Independent HP · a1e908ed
      Takashi Iwai 提交于
      This patch eventually fixes two issues:
      - Handle the case where the primary output is a headphone and can have
        independent HP mode;
        so far we checked only the case where the headphone is the secondary
        output.
      
      - Fix the conflict of HP independent mode and aamix mode;
        when switched to aamix mode, the DAC might be also switched to
        another widget shared with other outputs.  Then even if we disable
        the DAC for the original output, it doesn't change -- because the
        active route is from another (shared) DAC to HP pin through aamix.
        So, in such a case, we have to prohibit the switch to aamix for HP
        routes.
      
      This fixes issues appearing on VT codecs.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      a1e908ed
  26. 18 1月, 2013 4 次提交
  27. 17 1月, 2013 7 次提交