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
..
2018-02-12 09:37:29 +00:00
2015-10-05 17:42:49 +01:00
2018-02-19 16:53:10 +00:00
2018-02-27 10:41:34 +00:00
2018-10-19 17:06:07 +01:00
2015-07-07 13:35:13 +01:00
2018-09-25 10:18:38 -07:00
2018-08-29 16:04:16 +01:00
2017-06-13 19:30:53 +01:00
2018-10-25 09:00:15 -07:00
2018-10-17 19:53:37 +01:00
2016-08-08 11:55:20 +01:00
2018-10-17 19:53:37 +01:00
2018-02-20 12:05:58 +00:00
2018-03-02 13:17:04 +00:00
2018-03-02 13:17:04 +00:00
2018-04-26 12:44:15 +01:00
2018-10-17 19:53:37 +01:00
2018-10-17 19:53:37 +01:00
2018-05-18 17:46:03 +01:00
2018-11-13 16:30:05 -08:00
2018-08-28 20:41:24 +01:00
2017-07-18 14:46:20 +01:00
2015-12-19 12:02:18 +00:00
2018-10-25 09:00:15 -07:00
2018-10-25 09:00:15 -07:00
2018-02-12 11:48:26 +00:00
2018-10-25 09:00:15 -07:00
2018-10-25 09:00:15 -07:00
2018-10-25 09:00:15 -07:00
2018-09-18 10:28:38 -07:00
2018-05-18 11:20:11 +01:00
2018-06-27 12:26:41 +01:00
2018-06-27 12:26:41 +01:00
2016-06-26 12:28:13 +01:00
2018-06-01 12:05:30 +01:00
2018-08-28 20:11:37 +01:00
2015-04-08 19:25:40 +01:00
2018-09-18 10:28:29 -07:00
2018-09-18 10:28:29 -07:00