1. 05 11月, 2015 1 次提交
  2. 27 10月, 2015 1 次提交
    • T
      ALSA: hda - Disable 64bit address for Creative HDA controllers · cadd16ea
      Takashi Iwai 提交于
      We've had many reports that some Creative sound cards with CA0132
      don't work well.  Some reported that it starts working after reloading
      the module, while some reported it starts working when a 32bit kernel
      is used.  All these facts seem implying that the chip fails to
      communicate when the buffer is located in 64bit address.
      
      This patch addresses these issues by just adding AZX_DCAPS_NO_64BIT
      flag to the corresponding PCI entries.  I casually had a chance to
      test an SB Recon3D board, and indeed this seems helping.
      
      Although this hasn't been tested on all Creative devices, it's safer
      to assume that this restriction applies to the rest of them, too.  So
      the flag is applied to all Creative entries.
      
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      cadd16ea
  3. 30 7月, 2015 1 次提交
  4. 20 7月, 2015 2 次提交
  5. 25 6月, 2015 1 次提交
  6. 16 6月, 2015 1 次提交
  7. 12 6月, 2015 1 次提交
    • T
      ALSA: hda - Abort the probe without i915 binding for HSW/BDW · 535115b5
      Takashi Iwai 提交于
      The previous patch tried to continue the probe if i915 binding fails.
      For for simplicity reason, we haven't implemented abort even for
      controller chips that are dedicated for HDMI/DP on HSW and BDW.
      However, Mengdong suggested that this can be dangerous; BIOS may
      disable gfx power well although the PCI entry for HD-audio is left,
      and this may result in the unexpected behavior, kernel errors, etc.
      
      For avoiding this situation, abort the probe at i915 binding failure
      only for HSW/BDW chips selectively.  For other chips, it still
      continues.
      
      Fixes: bf06848b ('ALSA: hda - Continue probing even if i915 binding fails')
      Reported-by: NMengdong Lin <mengdong.lin@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      535115b5
  8. 11 6月, 2015 1 次提交
    • T
      ALSA: hda - Continue probing even if i915 binding fails · bf06848b
      Takashi Iwai 提交于
      Currently snd-hda-intel driver aborts the probing of Intel HD-audio
      controller with i915 power well management when binding with i915
      driver via hda_i915_init() fails.  This is no big problem for Haswell
      and Broadwell where the HD-audio controllers are dedicated to
      HDMI/DP, thus i915 link is mandatory.  However, Skylake, Baytrail and
      Braswell have only one controller and both HDMI/DP and analog codecs
      share the same bus.  Thus, even if HDMI/DP isn't usable, we should
      keep the controller working for other codecs.
      
      For fixing this, this patch simply allows continuing the probing even
      if hda_i915_init() call fails.  This may leave stale sound components
      for HDMI/DP devices that are unbound with graphics.  We could abort
      the probing selectively, but from the code simplicity POV, it's better
      to continue in all cases.
      Reported-by: NLibin Yang <libin.yang@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      bf06848b
  9. 03 6月, 2015 1 次提交
  10. 28 5月, 2015 1 次提交
    • L
      kernel/params: constify struct kernel_param_ops uses · 9c27847d
      Luis R. Rodriguez 提交于
      Most code already uses consts for the struct kernel_param_ops,
      sweep the kernel for the last offending stragglers. Other than
      include/linux/moduleparam.h and kernel/params.c all other changes
      were generated with the following Coccinelle SmPL patch. Merge
      conflicts between trees can be handled with Coccinelle.
      
      In the future git could get Coccinelle merge support to deal with
      patch --> fail --> grammar --> Coccinelle --> new patch conflicts
      automatically for us on patches where the grammar is available and
      the patch is of high confidence. Consider this a feature request.
      
      Test compiled on x86_64 against:
      
      	* allnoconfig
      	* allmodconfig
      	* allyesconfig
      
      @ const_found @
      identifier ops;
      @@
      
      const struct kernel_param_ops ops = {
      };
      
      @ const_not_found depends on !const_found @
      identifier ops;
      @@
      
      -struct kernel_param_ops ops = {
      +const struct kernel_param_ops ops = {
      };
      
      Generated-by: Coccinelle SmPL
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Junio C Hamano <gitster@pobox.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: cocci@systeme.lip6.fr
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: NLuis R. Rodriguez <mcgrof@suse.com>
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      9c27847d
  11. 27 5月, 2015 1 次提交
  12. 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
  13. 18 5月, 2015 1 次提交
  14. 05 5月, 2015 1 次提交
    • L
      ALSA: hda - reset display codec when power on · 0a673521
      Lu, Han 提交于
      In SKL, HDMI/DP codec and PCH HD Audio Controller are in different power wells,
      so it's necessary to reset display audio codecs when power well on, otherwise
      display audio codecs will disappear when resume from low power state.
      Reset steps when power on:
          enable codec wakeup -> azx_init_chip() -> disable codec wakeup
      
      The callback for codec wakeup enable/disable is in drivers/gpu/drm/i915/.
      Signed-off-by: NLu, Han <han.lu@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      0a673521
  15. 30 4月, 2015 1 次提交
  16. 29 4月, 2015 3 次提交
    • M
      ALSA: hda - remove controller dependency on i915 power well for Baytrail/Braswell · 2bd1f73f
      Mengdong Lin 提交于
      For Baytrail (Valleyview) and Braswell (Cherryview), only the HDMI codec is
      in the display power well while the HD-A controller isn't. So the controller
      flag 'need_i915_power' is not set to release the display power after probe,
      and the codec flag 'link_power_control" is set to request/release the display
      power via bus link_power ops.
      Signed-off-by: NMengdong Lin <mengdong.lin@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      2bd1f73f
    • M
      ALSA: hda - divide controller and codec dependency on i915 gfx power well · 795614dd
      Mengdong Lin 提交于
      This patch can improve power saving for Intel platforms on which only the
      display audio codec is in the shared i915 power well:
      
      - Add a flag "need_i915_power" to indicate whether the controller needs the
        i915 power well.
      
      - The driver will always request the i915 power when probing the controller
        and codecs if AZX_DCAPS_I915_POWERWELL is set (either the controller or a
        codec needs this power).
      
      - If the controller needs the i915 power, the power will be held after probe
        until the controller is runtime suspended or S3. If the controller doesn't
        need the power, the power will be released the after probe, and a codec
        that needs the power can request/release the power via bus link_power ops.
      
      Background:
      - For Haswell/Broadwell, which has a separate HD-A controller for display audio,
        both the controller and the display codec are in the i915 power well.
      
      - For Baytrail/Braswell, the display and analog audio share the same HDA
        controller and link, and only the display codec is in the i915 power well.
      
      - For Skylake, the display and analog audio share the same HDA controller but
        use separate links. Only the display codec is in the i915 power well. And in
        legacy mode we take the two links as one. So it can follow Baytrail/Braswell.
      Signed-off-by: NMengdong Lin <mengdong.lin@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      795614dd
    • M
      ALSA: hda - implement link_power ops for i915 display power control · 17eccb27
      Mengdong Lin 提交于
      This patch implements the bus link_power ops to request/release i915 display
      power well. It can be used by the display codec which shares this power well
      with GPU on Intel platforms.
      Signed-off-by: NMengdong Lin <mengdong.lin@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      17eccb27
  17. 21 4月, 2015 1 次提交
    • M
      ALSA: hda - add AZX_DCAPS_I915_POWERWELL to Baytrail · 40cc2392
      Mengdong Lin 提交于
      This patch addes AZX_DCAPS_I915_POWERWELL to BYT (Baytrail).
      
      Like Braswell and Skylake, the HDMI codec on Bytrail is also in the shared
      power well with GPU. This power well must be turned on before we reset link
      to probe the codec, to avoid communication failure with the codec.
      
      The side effect is that this power is always ON in S0 because the BYT HDMI
      codec does not support EPSS or D3ClkStop and so the controller doesn't enter
      D3 at runtime, and the HDMI codec and analog codec share a single physical
      HD-A link and so we cannot reset the HD-A link freely when we re-enable the
      power to use the HDMI codec.
      
      Next step is to test if an AGP reset or double AGP reset on BYT HDMI codec is
      okay to bring the HDMI codec back to a functional state after restoring the
      power. If okay, we can bind the power on/off with the HDMI codec PM without
      interrupting the analog audio.
      Signed-off-by: NMengdong Lin <mengdong.lin@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      40cc2392
  18. 16 4月, 2015 7 次提交
  19. 07 4月, 2015 1 次提交
  20. 26 3月, 2015 1 次提交
  21. 23 3月, 2015 1 次提交
    • T
      ALSA: hda - Move some codes up to hdac_bus struct · d068ebc2
      Takashi Iwai 提交于
      A few basic codes for communicating over HD-audio bus are moved to
      struct hdac_bus now.  It has only command and get_response ops in
      addition to the unsolicited event handling.
      
      Note that the codec-side tracing support is disabled temporarily
      during this transition due to the code shuffling.  It will be
      re-enabled later once when all pieces are settled down.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      d068ebc2
  22. 13 3月, 2015 1 次提交
  23. 03 3月, 2015 3 次提交
  24. 26 2月, 2015 3 次提交
    • T
      ALSA: hda - Power down codec automatically at registration · 709949fb
      Takashi Iwai 提交于
      So far, we let the controller driver power down the all codecs at the
      end of probe.  But this can be done better in the codec's dev_register
      callback.  This results in the reduction of duplicated codes in each
      control driver.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      709949fb
    • T
      ALSA: hda - Replace bus pm_notify with the standard runtime PM framework · 55ed9cd1
      Takashi Iwai 提交于
      Now the final bit of runtime PM cleanup: instead of manual
      notification of the power up/down of the codec via hda_bus pm_notify
      ops, use the standard runtime PM feature.
      
      The child codec device will kick off the runtime PM of the parent
      (PCI) device upon suspend/resume automatically.  For managing whether
      the link can be really turned off, we use the bit flags
      bus->codec_powered instead of the earlier bus->power_keep_link_on.
      flag.  Each codec driver is responsible to set/clear the bit flag, and
      the controller device can be turned off only when all these bits are
      cleared.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      55ed9cd1
    • T
      ALSA: hda - Drop power_save value indirection in hda_bus · bb573928
      Takashi Iwai 提交于
      We used to pass the power_save option value to hda_bus via a given
      pointer.  This was needed to refer to the value from the HD-audio core
      side.  However, after the transition to the runtime PM, this is no
      longer needed.
      
      This patch drops the power_save value indirection in hda_bus above,
      and let the controller driver reprograms the autosuspend value
      explicitly by a new helper, snd_hda_set_power_save().  Without this
      call, the HD-audio core doesn't set up the autosuspend and flip the
      runtime PM.  (User may still be able to set up via sysfs, though.)
      
      Along with this change, the pointer argument of azx_bus_create() is
      dropped as well.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      bb573928
  25. 25 2月, 2015 1 次提交
  26. 23 2月, 2015 2 次提交
    • T
      ALSA: hda - Use standard runtime PM for codec power-save control · cc72da7d
      Takashi Iwai 提交于
      Like the previous transition of suspend/resume, now move the
      power-save code to the standard runtime PM.  As usual for runtime PM,
      it's a bit tricky, but this simplified codes a lot in the end.
      
      For keeping the usage compatibility, power_save module option still
      controls the whole power-saving behavior on all codecs.  The value is
      translated to pm_runtime_*_autosuspend() and pm_runtime_allow() /
      pm_runtime_forbid() calls.
      
      snd_hda_power_up() and snd_hda_power_down() are translated to
      pm_runtime_get_sync() and pm_runtime_put_autosuspend(), respectively.
      Since we can do call pm_runtime_get_sync() more reliably, the sync
      version is used always and snd_hda_power_up_d3wait() is dropped.
      Another slight difference is that snd_hda_power_up()/down() don't call
      runtime_pm code during the suspend/resume transition phase.  Calling
      them there isn't safe unlike our own code, resulted in unexpected
      behavior (endless wakeups).
      
      The hda_power_count tracepoint was removed, as it doesn't match well
      with the new code.
      
      Last but not least, we need to set ignore_children flag in the parent
      dev.power field so that the runtime PM of the controller chip won't
      get confused.  The notification is still done in the bus pm_notify
      callback.  We'll get rid of this hack in the later patch.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      cc72da7d
    • T
      ALSA: hda - Move codec suspend/resume to codec driver · 59ed1ead
      Takashi Iwai 提交于
      This patch moves the suspend/resume mechanisms down to each codec
      driver level, as we have a proper codec driver bound on the bus now.
      Then we get the asynchronous PM gratis without fiddling much in the
      driver level.
      
      As a soft-landing transition, implement the common suspend/resume pm
      ops for hda_codec_driver and keep the each codec driver intact.  Only
      the callers of suspend/resume in the controller side (azx_suspend()
      and azx_resume()) are removed.
      
      Another involved place is azx_bus_reset() calling the temporary
      suspend and resume as a hackish method of bus reset.  The HD-audio
      core provide a helper function snd_hda_bus_reset() instead.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      59ed1ead