mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-26 08:51:13 +00:00
93 lines
2.9 KiB
Diff
93 lines
2.9 KiB
Diff
|
From 744543757bef8621f7791e28ecb894b2627cb449 Mon Sep 17 00:00:00 2001
|
||
|
From: Hristo Venev <hristo@venev.name>
|
||
|
Date: Fri, 5 Jun 2020 09:22:49 +0000
|
||
|
Subject: [PATCH] snd_bcm2835: disable HDMI audio when vc4 is used
|
||
|
(#3640)
|
||
|
|
||
|
Things don't work too well when both the vc4 driver and the firmware
|
||
|
driver are trying to control the same audio output:
|
||
|
|
||
|
[ 763.569406] bcm2835_audio bcm2835_audio: vchi message timeout, msg=5
|
||
|
|
||
|
Hence, when the vc4 HDMI driver is used, let it control audio. This is done
|
||
|
by introducing a new device tree property to the audio node, and
|
||
|
extending the vc4-kms-v3d overlays to set it appropriately.
|
||
|
|
||
|
Signed-off-by: Hristo Venev <hristo@venev.name>
|
||
|
---
|
||
|
arch/arm/boot/dts/overlays/README | 2 ++
|
||
|
arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts | 10 +++++++++-
|
||
|
arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts | 8 ++++++++
|
||
|
drivers/staging/vc04_services/bcm2835-audio/bcm2835.c | 4 +++-
|
||
|
4 files changed, 22 insertions(+), 2 deletions(-)
|
||
|
|
||
|
--- a/arch/arm/boot/dts/overlays/README
|
||
|
+++ b/arch/arm/boot/dts/overlays/README
|
||
|
@@ -2745,6 +2745,7 @@ Params: cma-256 CMA is 2
|
||
|
cma-size CMA size in bytes, 4MB aligned
|
||
|
cma-default Use upstream's default value
|
||
|
audio Enable or disable audio over HDMI (default "on")
|
||
|
+ noaudio Disable all HDMI audio (default "off")
|
||
|
|
||
|
|
||
|
Name: vc4-kms-v3d-pi4
|
||
|
@@ -2761,6 +2762,7 @@ Params: cma-256 CMA is 2
|
||
|
"on")
|
||
|
audio1 Enable or disable audio over HDMI1 (default
|
||
|
"on")
|
||
|
+ noaudio Disable all HDMI audio (default "off")
|
||
|
|
||
|
|
||
|
Name: vga666
|
||
|
--- a/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
|
||
|
+++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts
|
||
|
@@ -108,7 +108,15 @@
|
||
|
};
|
||
|
};
|
||
|
|
||
|
+ fragment@14 {
|
||
|
+ target = <&audio>;
|
||
|
+ __overlay__ {
|
||
|
+ brcm,disable-hdmi;
|
||
|
+ };
|
||
|
+ };
|
||
|
+
|
||
|
__overrides__ {
|
||
|
- audio = <0>,"!13";
|
||
|
+ audio = <0>,"!13", <0>,"=14";
|
||
|
+ noaudio = <0>,"=13", <0>,"!14";
|
||
|
};
|
||
|
};
|
||
|
--- a/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts
|
||
|
+++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4-overlay.dts
|
||
|
@@ -138,8 +138,16 @@
|
||
|
};
|
||
|
};
|
||
|
|
||
|
+ fragment@19 {
|
||
|
+ target = <&audio>;
|
||
|
+ __overlay__ {
|
||
|
+ brcm,disable-hdmi;
|
||
|
+ };
|
||
|
+ };
|
||
|
+
|
||
|
__overrides__ {
|
||
|
audio = <0>,"!17";
|
||
|
audio1 = <0>,"!18";
|
||
|
+ noaudio = <0>,"=17", <0>,"=18", <0>,"!19";
|
||
|
};
|
||
|
};
|
||
|
--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
|
||
|
+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
|
||
|
@@ -381,7 +381,9 @@ static int snd_bcm2835_alsa_probe(struct
|
||
|
}
|
||
|
|
||
|
if (!enable_compat_alsa) {
|
||
|
- set_hdmi_enables(dev);
|
||
|
+ if (!of_property_read_bool(dev->of_node, "brcm,disable-hdmi"))
|
||
|
+ set_hdmi_enables(dev);
|
||
|
+
|
||
|
// In this mode, always enable analog output
|
||
|
enable_headphones = true;
|
||
|
} else {
|