1. 25 6月, 2019 1 次提交
  2. 08 5月, 2019 1 次提交
  3. 20 4月, 2019 1 次提交
  4. 12 2月, 2019 1 次提交
  5. 15 1月, 2019 1 次提交
    • T
      ASoC: intel: skl: Fix display power regression · 687ae9e2
      Takashi Iwai 提交于
      Since the refactoring of HD-audio display power management, the
      display power status is managed per domain.  Meanwhile the ASoC
      hdac_hdmi driver still keeps and relies (incorrectly) on the
      refcounting together with ASoC skl driver, and this leads to the
      display state always on.
      
      This patch is an attempt to address the regression by simplifying the
      PM code of ASoC skl and hdac_hdmi drivers.  Basically, since the
      refactoring, we don't have to manage the display power at HD-audio
      controller suspend / resume but only at HD-audio HDMI codec suspend /
      resume.  So the patch drops the superfluous snd_hdac_display_power()
      calls in skl driver.
      
      Meanwhile, in hdac_hdmi side, we rewrite the PM call just to re-use
      the runtime PM callbacks like other drivers do.  Now the logic is
      simple: turn off at suspend and turn on at resume.
      
      The patch also fixes the possibly missing display-power off at skl
      driver removal as well as some error paths at probe.
      
      Fixes: 029d92c2 ("ALSA: hda: Refactor display power management")
      Reported-by: NLibin Yang <libin.yang@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      687ae9e2
  6. 11 12月, 2018 3 次提交
    • T
      ASoC: hdac_hdmi: Add missing display power-off at driver removal · 77a49672
      Takashi Iwai 提交于
      The display power is in unbalance at removing the driver since it
      misses the snd_hdac_display_power(OFF) call.
      Acked-by: NMark Brown <broonie@kernel.org>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      77a49672
    • T
      ALSA: hda: Make snd_hdac_display_power() void function · 4f799e73
      Takashi Iwai 提交于
      After the recent refactoring, snd_hdac_display_power() doesn't return
      any error, hence it can be defined to return void.
      This makes many error checks redundant and allows us to reduce them
      gracefully.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      4f799e73
    • T
      ALSA: hda: Refactor display power management · 029d92c2
      Takashi Iwai 提交于
      The current HD-audio code manages the DRM audio power via too complex
      redirections, and this seems even still unbalanced in a corner case as
      Intel DRM CI has been intermittently reporting.  This patch is a big
      surgery for addressing the complexity and the possible unbalance.
      
      Basically the patch changes the display PM in the following ways:
      
      - Both HD-audio controller and codec drivers call a single helper,
        snd_hdac_display_power().  (Formerly, the display power control from
        a codec was done indirectly via link_power bus ops.)
      
      - snd_hdac_display_power() receives the codec address index.  For
        turning on/off from the controller, pass HDA_CODEC_IDX_CONTROLLER.
      
      - snd_hdac_display_power() doesn't manage refcounts any longer, but
        keeps the power status in bitmap.  If any of controller or codecs is
        turned on, the function updates the DRM power state via get_power()
        or put_power().
      
      Also this refactor allows us more cleanup:
      
      - The link_power bus ops is dropped, so there is no longer indirect
        management, as mentioned in the above.
      
      - hdac_device link_power_control flag is moved to hda_codec
        display_power_control flag, as it's only for HDA legacy.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106525Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      029d92c2
  7. 14 11月, 2018 2 次提交
  8. 21 9月, 2018 1 次提交
  9. 07 9月, 2018 1 次提交
  10. 06 9月, 2018 1 次提交
  11. 18 7月, 2018 4 次提交
    • S
      ASoC: hdac_hdmi: Add documentation for power management · bf270262
      Sriram Periyasamy 提交于
      Add documentation for power management of HDAC HDMI codec device for
      various scenarios such as S0/S3, probe and playback use case.
      Signed-off-by: NSriram Periyasamy <sriramx.periyasamy@intel.com>
      Signed-off-by: NSanyog Kale <sanyog.r.kale@intel.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      bf270262
    • T
      ALSA: hda: Make audio component support more generic · a57942bf
      Takashi Iwai 提交于
      This is the final step for more generic support of DRM audio
      component.  The generic audio component code is now moved to its own
      file, and the symbols are renamed from snd_hac_i915_* to
      snd_hdac_acomp_*, respectively.  The generic code is enabled via the
      new kconfig, CONFIG_SND_HDA_COMPONENT, while CONFIG_SND_HDA_I915 is
      kept as the super-class.
      
      Along with the split, three new callbacks are added to audio_ops:
      pin2port is for providing the conversion between the pin number and
      the widget id, and master_bind/master_unbin are called at binding /
      unbinding the master component, respectively.  All these are optional,
      but used in i915 implementation and also other later implementations.
      
      A note about the new snd_hdac_acomp_init() function: there is a slight
      difference between this and the old snd_hdac_i915_init().  The latter
      (still) synchronizes with the master component binding, i.e. it
      assures that the relevant DRM component gets bound when it returns, or
      gives a negative error.  Meanwhile the new function doesn't
      synchronize but just leaves as is.  It's the responsibility by the
      caller's side to synchronize, or the caller may accept the
      asynchronous binding on the fly.
      
      v1->v2: Fix missing NULL check in master_bind/unbind
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      a57942bf
    • T
      ALSA: hda/i915: Associate audio component with devres · 82887c0b
      Takashi Iwai 提交于
      The HD-audio i915 binding code contains a single pointer, hdac_acomp,
      for allowing the access to audio component from the master bind/unbind
      callbacks.  This was needed because the callbacks pass only the device
      pointer and we can't guarantee the object type assigned to the drvdata
      (which is free for each controller driver implementation).
      And this implementation will be a problem if we support multiple
      components for different DRM drivers, not only i915.
      
      As a solution, allocate the audio component object via devres and
      associate it with the given device, so that the component callbacks
      can refer to it via devres_find().
      
      The removal of the object is still done half-manually via
      devres_destroy() to make the code consistent (although it may work
      without the explicit call).
      
      Also, the snd_hda_i915_register_notifier() had the reference to
      hdac_acomp as well.  In this patch, the corresponding code is removed
      by passing hdac_bus object to the function, too.
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      82887c0b
    • T
      drm/i915: Split audio component to a generic type · ae891abe
      Takashi Iwai 提交于
      For allowing other drivers to use the DRM audio component, rename the
      i915_audio_component_* with drm_audio_component_*, and split the
      generic part into drm_audio_component.h.  The i915 specific stuff
      remains in struct i915_audio_component, which contains
      drm_audio_component as the base.
      
      The license of drm_audio_component.h is kept to MIT as same as the the
      original i915_component.h.
      
      This is a preliminary change for further development, and no
      functional changes by this patch itself, merely code-split and
      renames.
      
      v1->v2: Use SPDX for drm_audio_component.h, fix remaining i915
              argument in drm_audio_component.h
      Reviewed-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      ae891abe
  12. 28 6月, 2018 3 次提交
  13. 16 2月, 2018 1 次提交
  14. 15 2月, 2018 1 次提交
  15. 12 2月, 2018 1 次提交
    • K
      ASoC: hdac_hdmi/nau8825/rt286/rt298/rt5663/da7219: replace codec to component · 45101122
      Kuninori Morimoto 提交于
      Now we can replace Codec to Component. Let's do it.
      
      Because intal/rockchip boards are using multi-codecs in 1 driver,
      we need to update these all related drivers in same time.
      Otherwise compile error/warning happen
      
      Note:
      
      hdac_hdmi
      	xxx_codec_xxx()		->	xxx_component_xxx()
      	.idle_bias_off = 1	->	.idle_bias_on = 0
      	.ignore_pmdown_time = 0	->	.use_pmdown_time = 1
      	-			->	.endianness = 1
      	-			->	.non_legacy_dai_naming = 1
      
      nau8825
      	xxx_codec_xxx()		->	xxx_component_xxx()
      	.idle_bias_off = 0	->	.idle_bias_on = 1
      	.ignore_pmdown_time = 0	->	.use_pmdown_time = 1
      	-			->	.endianness = 1
      	-			->	.non_legacy_dai_naming = 1
      
      rt286
      	xxx_codec_xxx()		->	xxx_component_xxx()
      	.idle_bias_off = 1	->	.idle_bias_on = 0
      	.ignore_pmdown_time = 0	->	.use_pmdown_time = 1
      	-			->	.endianness = 1
      	-			->	.non_legacy_dai_naming = 1
      
      rt298
      	xxx_codec_xxx()		->	xxx_component_xxx()
      	.idle_bias_off = 1	->	.idle_bias_on = 0
      	.ignore_pmdown_time = 0	->	.use_pmdown_time = 1
      	-			->	.endianness = 1
      	-			->	.non_legacy_dai_naming = 1
      
      rt5663
      	xxx_codec_xxx()		->	xxx_component_xxx()
      	.idle_bias_off = 1	->	.idle_bias_on = 0
      	.ignore_pmdown_time = 0	->	.use_pmdown_time = 1
      	-			->	.endianness = 1
      	-			->	.non_legacy_dai_naming = 1
      
      da7219
      	xxx_codec_xxx()		->	xxx_component_xxx()
      	.idle_bias_off = 0	->	.idle_bias_on = 1
      	.ignore_pmdown_time = 0	->	.use_pmdown_time = 1
      	-			->	.endianness = 1
      	-			->	.non_legacy_dai_naming = 1
      Signed-off-by: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      45101122
  16. 21 12月, 2017 1 次提交
  17. 20 12月, 2017 1 次提交
  18. 07 12月, 2017 2 次提交
  19. 01 12月, 2017 3 次提交
  20. 09 11月, 2017 3 次提交
  21. 18 8月, 2017 1 次提交
  22. 10 8月, 2017 1 次提交
    • B
      ASoC: codecs: add const to snd_soc_codec_driver structures · a180ba45
      Bhumika Goyal 提交于
      Declare snd_soc_codec_driver structures as const as they are only passed
      as an argument to the function snd_soc_register_codec. This argument is
      of type const, so declare the structures with this property as const.
      In file codecs/sn95031.c, snd_soc_codec_driver structure is also used in
      a copy operation along with getting passed to snd_soc_register_codec.
      So, it can be made const too.
      Done using Coccinelle:
      
      @match disable optional_qualifier@
      identifier s;
      position p;
      @@
      static struct snd_soc_codec_driver s@p={...};
      
      @good1@
      identifier match.s;
      position p;
      @@
      snd_soc_register_codec(...,&s@p,...)
      
      @bad@
      identifier match.s;
      position p!={match.p,good1.p};
      @@
      s@p
      
      @depends on !bad disable optional_qualifier@
      identifier match.s;
      @@
      static
      +const
      struct snd_soc_codec_driver s={...};
      Signed-off-by: NBhumika Goyal <bhumirks@gmail.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      a180ba45
  23. 20 7月, 2017 1 次提交
  24. 17 7月, 2017 1 次提交
  25. 29 3月, 2017 1 次提交
  26. 06 3月, 2017 2 次提交