aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.15/950-0603-vc4-drm-Ignore-vc4_hdmi-output_enabled-for-allowing-.patch
diff options
context:
space:
mode:
authorÁlvaro Fernández Rojas <noltari@gmail.com>2022-05-16 23:40:32 +0200
committerÁlvaro Fernández Rojas <noltari@gmail.com>2022-05-17 15:11:22 +0200
commit20ea6adbf199097c4f5f591ffee088340630dae4 (patch)
treed6719d95e136611a1c25bbf7789652d6d402779d /target/linux/bcm27xx/patches-5.15/950-0603-vc4-drm-Ignore-vc4_hdmi-output_enabled-for-allowing-.patch
parentbca05bd072180dc38ef740b37ded9572a6db1981 (diff)
downloadupstream-20ea6adbf199097c4f5f591ffee088340630dae4.tar.gz
upstream-20ea6adbf199097c4f5f591ffee088340630dae4.tar.bz2
upstream-20ea6adbf199097c4f5f591ffee088340630dae4.zip
bcm27xx: add support for linux v5.15
Build system: x86_64 Build-tested: bcm2708, bcm2709, bcm2710, bcm2711 Run-tested: bcm2708/RPiB+, bcm2709/RPi3B, bcm2710/RPi3B, bcm2711/RPi4B Signed-off-by: Marty Jones <mj8263788@gmail.com> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Diffstat (limited to 'target/linux/bcm27xx/patches-5.15/950-0603-vc4-drm-Ignore-vc4_hdmi-output_enabled-for-allowing-.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.15/950-0603-vc4-drm-Ignore-vc4_hdmi-output_enabled-for-allowing-.patch98
1 files changed, 98 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.15/950-0603-vc4-drm-Ignore-vc4_hdmi-output_enabled-for-allowing-.patch b/target/linux/bcm27xx/patches-5.15/950-0603-vc4-drm-Ignore-vc4_hdmi-output_enabled-for-allowing-.patch
new file mode 100644
index 0000000000..9d0361c426
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.15/950-0603-vc4-drm-Ignore-vc4_hdmi-output_enabled-for-allowing-.patch
@@ -0,0 +1,98 @@
+From 68522ed7c1135fd5ea5b4541d557bdbdcba80669 Mon Sep 17 00:00:00 2001
+From: popcornmix <popcornmix@gmail.com>
+Date: Wed, 8 Dec 2021 15:57:15 +0000
+Subject: [PATCH] vc4/drm: Ignore vc4_hdmi->output_enabled for allowing
+ audio (#4759)
+
+Otherwise we reject audio playback when switching hdmi modes
+
+Signed-off-by: Dom Cobley <popcornmix@gmail.com>
+---
+ drivers/gpu/drm/vc4/vc4_hdmi.c | 29 ++---------------------------
+ drivers/gpu/drm/vc4/vc4_hdmi.h | 6 ------
+ 2 files changed, 2 insertions(+), 33 deletions(-)
+
+--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
++++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
+@@ -210,6 +210,7 @@ vc4_hdmi_connector_detect(struct drm_con
+ connected = true;
+ }
+
++ vc4_hdmi->encoder.hdmi_monitor = false;
+ if (connected) {
+ if (connector->status != connector_status_connected) {
+ struct edid *edid = drm_get_edid(connector, vc4_hdmi->ddc);
+@@ -730,15 +731,6 @@ static void vc4_hdmi_encoder_post_crtc_p
+ 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, bool enable)
+ {
+ unsigned long flags;
+@@ -1218,15 +1210,6 @@ static void vc4_hdmi_encoder_post_crtc_e
+ 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)
+@@ -1320,8 +1303,6 @@ static const struct drm_encoder_helper_f
+ .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)
+@@ -1421,16 +1402,10 @@ static bool vc4_hdmi_audio_can_stream(st
+ lockdep_assert_held(&vc4_hdmi->mutex);
+
+ /*
+- * If the controller is disabled, prevent any ALSA output.
+- */
+- if (!vc4_hdmi->output_enabled)
+- return false;
+-
+- /*
+ * 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 (!vc4_hdmi->encoder.hdmi_monitor)
+ return false;
+
+ return true;
+--- a/drivers/gpu/drm/vc4/vc4_hdmi.h
++++ b/drivers/gpu/drm/vc4/vc4_hdmi.h
+@@ -209,12 +209,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.
+ */