All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime@cerno.tech>
To: Daniel Vetter <daniel.vetter@intel.com>,
	David Airlie <airlied@linux.ie>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	Maxime Ripard <maxime@cerno.tech>
Cc: Dom Cobley <popcornmix@gmail.com>, dri-devel@lists.freedesktop.org
Subject: [PATCH 24/33] drm/vc4: hdmi: Stop checking for enabled output in audio
Date: Mon, 13 Jun 2022 16:47:51 +0200	[thread overview]
Message-ID: <20220613144800.326124-25-maxime@cerno.tech> (raw)
In-Reply-To: <20220613144800.326124-1-maxime@cerno.tech>

From: Dom Cobley <popcornmix@gmail.com>

The current HDMI driver, in vc4_hdmi_audio_can_stream() checks whether
the display output is enabled.

This has been there in one form or the other since the introduction of
the audio support in the VC4 HDMI driver in commit bb7d78568814
("drm/vc4: Add HDMI audio support"), but no justification for this check
is in the commit message, or in the discussions around the patches.

One can only assume this was done to prevent a user from playing audio
on the ALSA soundcard when the monitor doesn't support it.

However, this is causing some issues. Indeed, Kodi, for example, was
hitting some errors if it was streaming audio during a modeset. With the
theory above, it does make sense, but the display and audio threads are
typically completely different processes with no opportunity to
synchronise which makes it hard to workaround.

Removing that check also doesn't seem to cause any trouble, so let's
just remove it.

Signed-off-by: Dom Cobley <popcornmix@gmail.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 drivers/gpu/drm/vc4/vc4_hdmi.c | 30 +++---------------------------
 drivers/gpu/drm/vc4/vc4_hdmi.h |  6 ------
 2 files changed, 3 insertions(+), 33 deletions(-)

diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 654c4116b669..0dc7e57715af 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -788,15 +788,6 @@ static void vc4_hdmi_encoder_post_crtc_powerdown(struct drm_encoder *encoder,
 	mutex_unlock(&vc4_hdmi->mutex);
 }
 
-static void vc4_hdmi_encoder_disable(struct drm_encoder *encoder)
-{
-	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
-
-	mutex_lock(&vc4_hdmi->mutex);
-	vc4_hdmi->output_enabled = false;
-	mutex_unlock(&vc4_hdmi->mutex);
-}
-
 static void vc4_hdmi_csc_setup(struct vc4_hdmi *vc4_hdmi,
 			       struct drm_connector_state *state,
 			       const struct drm_display_mode *mode)
@@ -1370,15 +1361,6 @@ static void vc4_hdmi_encoder_post_crtc_enable(struct drm_encoder *encoder,
 	mutex_unlock(&vc4_hdmi->mutex);
 }
 
-static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
-{
-	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
-
-	mutex_lock(&vc4_hdmi->mutex);
-	vc4_hdmi->output_enabled = true;
-	mutex_unlock(&vc4_hdmi->mutex);
-}
-
 static void vc4_hdmi_encoder_atomic_mode_set(struct drm_encoder *encoder,
 					     struct drm_crtc_state *crtc_state,
 					     struct drm_connector_state *conn_state)
@@ -1672,8 +1654,6 @@ static const struct drm_encoder_helper_funcs vc4_hdmi_encoder_helper_funcs = {
 	.atomic_check = vc4_hdmi_encoder_atomic_check,
 	.atomic_mode_set = vc4_hdmi_encoder_atomic_mode_set,
 	.mode_valid = vc4_hdmi_encoder_mode_valid,
-	.disable = vc4_hdmi_encoder_disable,
-	.enable = vc4_hdmi_encoder_enable,
 };
 
 static u32 vc4_hdmi_channel_map(struct vc4_hdmi *vc4_hdmi, u32 channel_mask)
@@ -1770,19 +1750,15 @@ static inline struct vc4_hdmi *dai_to_hdmi(struct snd_soc_dai *dai)
 
 static bool vc4_hdmi_audio_can_stream(struct vc4_hdmi *vc4_hdmi)
 {
-	lockdep_assert_held(&vc4_hdmi->mutex);
+	struct drm_display_info *display = &vc4_hdmi->connector.display_info;
 
-	/*
-	 * If the controller is disabled, prevent any ALSA output.
-	 */
-	if (!vc4_hdmi->output_enabled)
-		return false;
+	lockdep_assert_held(&vc4_hdmi->mutex);
 
 	/*
 	 * If the encoder is currently in DVI mode, treat the codec DAI
 	 * as missing.
 	 */
-	if (!(HDMI_READ(HDMI_RAM_PACKET_CONFIG) & VC4_HDMI_RAM_PACKET_ENABLE))
+	if (!display->is_hdmi)
 		return false;
 
 	return true;
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h
index 1520387b317f..1159b2992fb1 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.h
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.h
@@ -212,12 +212,6 @@ struct vc4_hdmi {
 	 */
 	struct drm_display_mode saved_adjusted_mode;
 
-	/**
-	 * @output_enabled: Is the HDMI controller currently active?
-	 * Protected by @mutex.
-	 */
-	bool output_enabled;
-
 	/**
 	 * @scdc_enabled: Is the HDMI controller currently running with
 	 * the scrambler on? Protected by @mutex.
-- 
2.36.1


  parent reply	other threads:[~2022-06-13 14:49 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-13 14:47 [PATCH 00/33] drm/vc4: Misc fixes Maxime Ripard
2022-06-13 14:47 ` [PATCH 01/33] drm/vc4: drv: Adopt the dma configuration from the HVS or V3D component Maxime Ripard
2022-06-13 14:47   ` Maxime Ripard
2022-06-13 14:47 ` [PATCH 02/33] drm/vc4: kms: Warn if clk_set_min_rate fails Maxime Ripard
2022-06-28 11:28   ` Dave Stevenson
2022-06-13 14:47 ` [PATCH 03/33] drm/vc4: kms: Use maximum FIFO load for the HVS clock rate Maxime Ripard
2022-06-28 11:30   ` Dave Stevenson
2022-06-13 14:47 ` [PATCH 04/33] drm/vc4: plane: Remove subpixel positioning check Maxime Ripard
2022-06-13 14:47 ` [PATCH 05/33] drm/vc4: plane: Fix margin calculations for the right/bottom edges Maxime Ripard
2022-06-13 14:47 ` [PATCH 06/33] drm/vc4: plane: Add alpha_blend_mode property to each plane Maxime Ripard
2022-06-13 14:47 ` [PATCH 07/33] drm/vc4: hvs: Add debugfs node that dumps the current display lists Maxime Ripard
2022-06-13 14:47 ` [PATCH 08/33] drm/vc4: dpi: Add support for composite syncs to vc4_dpi Maxime Ripard
2022-06-13 14:47 ` [PATCH 09/33] drm/vc4: dpi: Add option for inverting pixel clock and output enable Maxime Ripard
2022-06-13 14:47 ` [PATCH 10/33] drm/vc4: dpi: Ensure a default format is selected Maxime Ripard
2022-06-13 14:47 ` [PATCH 11/33] drm/vc4: dsi: Release workaround buffer and DMA Maxime Ripard
2022-06-13 14:47 ` [PATCH 12/33] drm/vc4: dsi: Correct DSI divider calculations Maxime Ripard
2022-06-13 14:47 ` [PATCH 13/33] drm/vc4: dsi: Correct pixel order for DSI0 Maxime Ripard
2022-06-13 14:47 ` [PATCH 14/33] drm/vc4: dsi: Register dsi0 as the correct vc4 encoder type Maxime Ripard
2022-06-13 14:47 ` [PATCH 15/33] drm/vc4: dsi: Fix dsi0 interrupt support Maxime Ripard
2022-06-13 14:47 ` [PATCH 16/33] drm/vc4: dsi: Add correct stop condition to vc4_dsi_encoder_disable iteration Maxime Ripard
2022-06-13 14:47 ` [PATCH 17/33] drm/vc4: hdmi: Disable audio if dmas property is present but empty Maxime Ripard
2022-06-13 14:47   ` Maxime Ripard
2022-06-13 14:47 ` [PATCH 18/33] drm/vc4: hdmi: Add all the vc5 HDMI registers into the debugfs dumps Maxime Ripard
2022-06-13 14:47 ` [PATCH 19/33] drm/vc4: hdmi: Clear unused infoframe packet RAM registers Maxime Ripard
2022-06-13 14:47 ` [PATCH 20/33] drm/vc4: hdmi: Avoid full hdmi audio fifo writes Maxime Ripard
2022-06-13 14:47 ` [PATCH 21/33] drm/vc4: hdmi: Reset HDMI MISC_CONTROL register Maxime Ripard
2022-06-13 14:47 ` [PATCH 22/33] drm/vc4: hdmi: Switch to pm_runtime_status_suspended Maxime Ripard
2022-06-13 14:47 ` [PATCH 23/33] drm/vc4: hdmi: Move HDMI reset to pm_resume Maxime Ripard
2022-08-04 23:11   ` Florian Fainelli
2022-08-09 19:02     ` Florian Fainelli
2022-08-10 11:06       ` Dave Stevenson
2022-08-10 20:33       ` Stefan Wahren
2022-08-15 14:12         ` Maxime Ripard
2022-08-15 16:52           ` Florian Fainelli
2022-08-18 15:38             ` Maxime Ripard
2022-08-09 20:16     ` Stefan Wahren
2022-08-09 20:28       ` Florian Fainelli
2022-06-13 14:47 ` Maxime Ripard [this message]
2022-06-13 14:47 ` [PATCH 25/33] drm/vc4: hdmi: Skip writes to disabled packet RAM Maxime Ripard
2022-06-13 14:47 ` [PATCH 26/33] drm/vc4: hdmi: Remove VC4_HDMI_SCHEDULER_CONTROL_VERT_ALWAYS_KEEPOUT Maxime Ripard
2022-06-13 14:47 ` [PATCH 27/33] drm/vc4: hdmi: Add HDMI format detection registers to register list Maxime Ripard
2022-06-13 14:47 ` [PATCH 28/33] drm/vc4: hdmi: Add MISC_CONTROL register for vc4 Maxime Ripard
2022-06-13 14:47 ` [PATCH 29/33] drm/vc4: hdmi: Report that 3d/stereo is allowed Maxime Ripard
2022-06-13 14:47 ` [PATCH 30/33] drm/vc4: hdmi: Fix timings for interlaced modes Maxime Ripard
2022-06-13 14:47 ` [PATCH 31/33] drm/vc4: hdmi: Force modeset when bpc or format changes Maxime Ripard
2022-06-13 14:47 ` [PATCH 32/33] drm/vc4: hdmi: Correct HDMI timing registers for interlaced modes Maxime Ripard
2022-06-13 14:48 ` [PATCH 33/33] drm/vc4: hdmi: Move pixel doubling from Pixelvalve to HDMI block Maxime Ripard
2022-06-28 13:34 ` [PATCH 00/33] drm/vc4: Misc fixes Maxime Ripard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220613144800.326124-25-maxime@cerno.tech \
    --to=maxime@cerno.tech \
    --cc=airlied@linux.ie \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=popcornmix@gmail.com \
    --cc=tzimmermann@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.