diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0763-snd_bcm2835-disable-HDMI-audio-when-vc4-is-used-3640.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0763-snd_bcm2835-disable-HDMI-audio-when-vc4-is-used-3640.patch | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0763-snd_bcm2835-disable-HDMI-audio-when-vc4-is-used-3640.patch b/target/linux/bcm27xx/patches-5.4/950-0763-snd_bcm2835-disable-HDMI-audio-when-vc4-is-used-3640.patch new file mode 100644 index 0000000000..ed45410294 --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0763-snd_bcm2835-disable-HDMI-audio-when-vc4-is-used-3640.patch @@ -0,0 +1,92 @@ +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 { |