1. 03 6月, 2015 1 次提交
  2. 29 5月, 2015 1 次提交
  3. 28 5月, 2015 1 次提交
  4. 22 5月, 2015 2 次提交
  5. 20 5月, 2015 1 次提交
    • M
      ALSA: hda - Move hda_i915.c from sound/pci/hda to sound/hda · 98d8fc6c
      Mengdong Lin 提交于
      The file is moved to hda core and renamed to hdac_i915.c, so can be used
      by both legacy HDA driver and new Skylake audio driver.
      
      - Add snd_hdac_ prefix to the public APIs.
      - The i915 audio component is moved to core bus and dynamically allocated.
      - A static pointer hdac_acomp is used to help bind/unbind callbacks to get
        this component, because the sound card's private_data is used by the azx
        chip pointer, which is a legacy structure. It could be removed if private
        _data changes to some core structure which can be extended to find the
        bus.
      - snd_hdac_get_display_clk() is added to get the display core clock for
        HSW/BDW.
      - haswell_set_bclk() is moved to hda_intel.c because it needs to write the
        controller registers EM4/EM5, and only legacy HD-A needs it for HSW/BDW.
      - Move definition of HSW/BDW-specific registers EM4/EM5 to hda_register.h
        and rename them to HSW_EM4/HSW_EM5, because other HD-A controllers have
        different layout for the extended mode registers.
      Signed-off-by: NMengdong Lin <mengdong.lin@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      98d8fc6c
  6. 29 4月, 2015 2 次提交
  7. 28 4月, 2015 5 次提交
  8. 27 4月, 2015 2 次提交
  9. 24 4月, 2015 3 次提交
  10. 23 4月, 2015 2 次提交
  11. 19 4月, 2015 1 次提交
  12. 17 4月, 2015 3 次提交
  13. 16 4月, 2015 4 次提交
  14. 13 4月, 2015 1 次提交
    • T
      ALSA: hda - Fix another race in runtime PM refcounting · c3aeda62
      Takashi Iwai 提交于
      Although some races in runtime PM refcount was fixed by the commit
      [664c7155: ALSA: hda - Work around races of power up/down with
      runtime PM], there is still a race in the following case:
      
      CPU0:                   CPU1 :
      runtime suspend:
        codec->in_pm = 1
                              snd_hdac_power_up_pm():
                                pm_runtime_get_sync() skipped
      suspend finished:
        codec->in_pm = 0
                              snd_hdac_power_down_pm():
                                pm_runtime_put_*() is called!
      
      For avoiding this situation, increment in_pm flag atomically when it's
      non-zero, and decrement accordingly, to ensure that in_pm is set
      consistently for the whole concurrent operations.
      
      Also, since atomic_inc_not_zero() and atomic_dec_if_positive() are
      lengthy inline functions, move snd_hdac_power_up_pm() and _down_pm()
      to sound/hda/hdac_device.c as no inline functions.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      c3aeda62
  15. 09 4月, 2015 1 次提交
  16. 08 4月, 2015 1 次提交
    • T
      ALSA: hda - Work around races of power up/down with runtime PM · 664c7155
      Takashi Iwai 提交于
      Currently, snd_hdac_power_up()/down() helpers checks whether the codec
      is being in pm (suspend/resume), and skips the call of runtime get/put
      during it.  This is needed as there are lots of power up/down
      sequences called in the paths that are also used in the PM itself.  An
      example is found in hda_codec.c::codec_exec_verb(), where this can
      power up the codec while it may be called again in its power up
      sequence, too.
      
      The above works in most cases, but sometimes we really want to wait
      for the real power up.  For example, the control element get/put may
      want explicit power up so that the value change is assured to reach to
      the hardware.   Using the current snd_hdac_power_up(), however,
      results in a race, e.g. when it's called during the runtime suspend is
      being performed.  In the worst case, as found in patch_ca0132.c, it
      can even lead to the deadlock because the code assumes the power up
      while it was skipped due to the check above.
      
      For dealing with such cases, this patch makes snd_hdac_power_up() and
      _down() to two variants: with and without in_pm flag check.  The
      version with pm flag check is named as snd_hdac_power_up_pm() while
      the version without pm flag check is still kept as
      snd_hdac_power_up().  (Just because the usage of the former is fewer.)
      
      Then finally, the patch replaces each call potentially done in PM with
      the new _pm() variant.
      
      In theory, we can implement a unified version -- if we can distinguish
      the current context whether it's in the pm path.  But such an
      implementation is cumbersome, so leave the code like this a bit messy
      way for now...
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=96271Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      664c7155
  17. 05 4月, 2015 1 次提交
  18. 04 4月, 2015 1 次提交
  19. 02 4月, 2015 2 次提交
  20. 27 3月, 2015 1 次提交
  21. 23 3月, 2015 4 次提交
    • T
      ALSA: hda - Add cache support for COEF read/write · 40ba66a7
      Takashi Iwai 提交于
      The 16bit COEF read/write is pretty standard for many codecs, and they
      can be cached in most cases -- more importantly, they need to be
      restored at resume.  For making this easier, add the cache support to
      regmap.  If the codec driver wants to cache the COEF access, set
      codec->cache_coef flag and issue AC_VERB_GET_PROC_COEF with the coef
      index in LSB 8 bits.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      40ba66a7
    • T
      ALSA: hda - Add a fake stereo amp register support · d313e0a8
      Takashi Iwai 提交于
      HD-audio spec is inconvenient regarding the handling of stereo volume
      controls.  It can set and get only single channel at once (although
      there is a special option to set the same value to both channels).
      This patch provides a fake pseudo-register via the regmap access so
      that the stereo channels can be read and written by a single call.
      It'd be useful, for example, for implementing DAPM widgets.
      
      A stereo amp pseudo register consists of the encoding like the normal
      amp verbs but it has both SET_LEFT (bit 13) and SET_RIGHT (bit 12)
      bits set.  The regmap reads and writes a 16bit value for this pseudo
      register where the upper 8bit is for the right chanel and the lower
      8bit for the left channel.
      
      Note that the driver doesn't recognize conflicts when both stereo and
      mono channel registers are mixed.  Mixing them would certainly confuse
      the operation.  So, use carefully.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      d313e0a8
    • T
      ALSA: hda - Allow driver to add vendor-specific verbs for regmap · 5e56bcea
      Takashi Iwai 提交于
      Codecs may have own vendor-specific verbs, and we need to allow each
      driver to give such verbs for cached accesses.  Here a verb can be put
      into a single array and looked through it at readable and writeable
      callbacks.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      5e56bcea
    • T
      ALSA: hda - Use regmap for parameter caches, too · faa75f8a
      Takashi Iwai 提交于
      The amp hash table was used for recording the cached reads of some
      capability values like pin caps or amp caps.  Now all these are moved
      to regmap as well.
      
      One addition to the regmap helper is codec->caps_overwriting flag.
      This is set in snd_hdac_override_parm(), and the regmap helper accepts
      any register while this flag is set, so that it can overwrite even the
      read-only verb like AC_VERB_PARAMETERS.  The flag is cleared
      immediately in snd_hdac_override_parm(), as it's a once-off flag.
      
      Along with these changes, the no longer needed amp hash and relevant
      fields are removed from hda_codec struct now.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      faa75f8a