Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915/xe3lpd: Map POWER_DOMAIN_AUDIO_PLAYBACK to DC_off
@ 2025-02-27 19:14 Gustavo Sousa
  2025-02-27 20:10 ` ✓ CI.Patch_applied: success for " Patchwork
                   ` (16 more replies)
  0 siblings, 17 replies; 20+ messages in thread
From: Gustavo Sousa @ 2025-02-27 19:14 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Kai Vehmanen, Gustavo Sousa

In Xe3_LPD, display audio has the core audio logic located in PG0 and
per-transcoder logic in the same power well that provides power for the
transcoder [1].

For stuff like audio device enumeration, we need to ensure that PG0 is
turned on. For playback, we additionally need the transcoder's power
well to be enabled.

That essentially means that, for audio playback, there isn't a special
power well that needs to be enabled, because modeset sequences will
ensure that the required power wells are enabled.

That said, there might be cases where PG0 could be disabled due to
display entering DC6 while the audio driver tries to interact with the
graphics driver for stuff like audio device enumeration.

We recently hit that kind of scenario, where "aplay -l" was being used
to enumerate audio devices on a PTL machine with PSR enabled and no
external displays attached.

Since intel_audio_component_get_power() uses
POWER_DOMAIN_AUDIO_PLAYBACK, make sure to map that power domain to
DC_off power well, so that we disable dynamic DC states (which includes
DC6) while the audio driver needs display audio power.

[1] The core-audio vs per-transcoder logic split is not really new in
    Xe3_LPD. This is also true for previous display generations. We need
    to figure out the correct version where this split happened so that
    we can apply fixes in the current power domain mapping.

Bspec: 72519
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display_power_map.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display_power_map.c b/drivers/gpu/drm/i915/display/intel_display_power_map.c
index 0c8ac1af6db7e005b9bf5b33d1c2e4cebbde2524..572383a817daa749f3579647855c2a858e010716 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power_map.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power_map.c
@@ -1694,6 +1694,7 @@ I915_DECL_PW_DOMAINS(xe3lpd_pwdoms_dc_off,
 	XE3LPD_PW_C_POWER_DOMAINS,
 	XE3LPD_PW_D_POWER_DOMAINS,
 	POWER_DOMAIN_AUDIO_MMIO,
+	POWER_DOMAIN_AUDIO_PLAYBACK,
 	POWER_DOMAIN_INIT);
 
 static const struct i915_power_well_desc xe3lpd_power_wells_dcoff[] = {

---
base-commit: 4a2f1c823287a84dc0bd46c5a93545dfe49967f2
change-id: 20250226-xe3lpd-power-domain-audio-playback-8fb255190c3a

Best regards,
-- 
Gustavo Sousa <gustavo.sousa@intel.com>


^ permalink raw reply related	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2025-03-10 15:44 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-02-27 19:14 [PATCH] drm/i915/xe3lpd: Map POWER_DOMAIN_AUDIO_PLAYBACK to DC_off Gustavo Sousa
2025-02-27 20:10 ` ✓ CI.Patch_applied: success for " Patchwork
2025-02-27 20:10 ` ✓ CI.checkpatch: " Patchwork
2025-02-27 20:12 ` ✓ CI.KUnit: " Patchwork
2025-02-27 20:31 ` ✓ CI.Build: " Patchwork
2025-02-27 20:34 ` ✓ CI.Hooks: " Patchwork
2025-02-27 20:35 ` ✓ CI.checksparse: " Patchwork
2025-02-27 20:53 ` ✓ Xe.CI.BAT: " Patchwork
2025-02-28  0:29 ` ✗ Xe.CI.Full: failure " Patchwork
2025-02-28  9:40 ` [PATCH] " Kai Vehmanen
2025-03-10 15:43   ` Gustavo Sousa
2025-03-05 22:50 ` ✓ CI.Patch_applied: success for drm/i915/xe3lpd: Map POWER_DOMAIN_AUDIO_PLAYBACK to DC_off (rev2) Patchwork
2025-03-05 22:51 ` ✓ CI.checkpatch: " Patchwork
2025-03-05 22:52 ` ✓ CI.KUnit: " Patchwork
2025-03-05 23:08 ` ✓ CI.Build: " Patchwork
2025-03-05 23:11 ` ✓ CI.Hooks: " Patchwork
2025-03-05 23:12 ` ✓ CI.checksparse: " Patchwork
2025-03-05 23:32 ` ✓ Xe.CI.BAT: " Patchwork
2025-03-06  3:50 ` ✗ Xe.CI.Full: failure " Patchwork
2025-03-10 13:29   ` Gustavo Sousa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox