alistair23-linux/sound/hda
Takashi Iwai 029d92c289 ALSA: hda: Refactor display power management
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=106525
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2018-12-11 08:06:55 +01:00
..
ext ALSA: hda: Fix mismatch for register mask and value in ext controller. 2018-10-02 17:10:48 +02:00
array.c ALSA: hda: Fix krealloc() with __GFP_ZERO usage 2016-08-03 15:17:22 +02:00
hda_bus_type.c ALSA: hda - Advertise MODALIAS in uevent 2015-10-20 10:15:53 +02:00
hdac_bus.c ALSA: hda: Fix potential race at unregistration and unsol events 2017-06-20 07:53:57 +02:00
hdac_component.c ALSA: hda: Refactor display power management 2018-12-11 08:06:55 +01:00
hdac_controller.c sound: don't call skl_init_chip() to reset intel skl soc 2018-09-12 11:22:09 +01:00
hdac_device.c ALSA: hda: Refactor display power management 2018-12-11 08:06:55 +01:00
hdac_i915.c ALSA: hda: Fix the audio-component completion timeout 2018-09-20 08:36:03 +02:00
hdac_regmap.c regmap: split up regmap_config.use_single_rw 2018-09-07 13:03:55 +01:00
hdac_stream.c ALSA: hda: Proper endian notations for BDL pointers 2018-07-27 09:06:01 +02:00
hdac_sysfs.c ASoC: Updates for v4.15 2017-11-13 15:45:57 +01:00
hdmi_chmap.c ALSA: hda: Fix too short HDMI/DP chmap reporting 2017-11-17 12:20:37 +01:00
Kconfig ALSA: hda: Make audio component support more generic 2018-07-17 22:25:48 +02:00
local.h ASoC: Updates for v4.15 2017-11-13 15:45:57 +01:00
Makefile ALSA: hda: Make audio component support more generic 2018-07-17 22:25:48 +02:00
trace.c
trace.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00