aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.4/950-0318-Rename-HDMI-ALSA-device-names-check-for-enable-state.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0318-Rename-HDMI-ALSA-device-names-check-for-enable-state.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.4/950-0318-Rename-HDMI-ALSA-device-names-check-for-enable-state.patch139
1 files changed, 0 insertions, 139 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0318-Rename-HDMI-ALSA-device-names-check-for-enable-state.patch b/target/linux/bcm27xx/patches-5.4/950-0318-Rename-HDMI-ALSA-device-names-check-for-enable-state.patch
deleted file mode 100644
index 8ec836621d..0000000000
--- a/target/linux/bcm27xx/patches-5.4/950-0318-Rename-HDMI-ALSA-device-names-check-for-enable-state.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From 95709d5c58c57f31a70e96fe9ebb8d34c046f877 Mon Sep 17 00:00:00 2001
-From: James Hughes <james.hughes@raspberrypi.org>
-Date: Tue, 24 Sep 2019 18:26:55 +0100
-Subject: [PATCH] Rename HDMI ALSA device names, check for enable state
-
-HDMI Alsa devices renamed to match names used by DRM, to
-HDMI 1 and HDMI 2
-
-Check for which HDMI devices are connected and only create
-devices for those that are present.
-
-The rename of the devices might cause some backwards compatibility
-issues, but since this particular part of the driver needs to be
-specifically enabled, I suspect the number of people who will see
-the problem will be very small.
-
-Signed-off-by: James Hughes <james.hughes@raspberrypi.org>
----
- .../vc04_services/bcm2835-audio/bcm2835.c | 70 +++++++++++++++++--
- 1 file changed, 63 insertions(+), 7 deletions(-)
-
---- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
-+++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
-@@ -9,8 +9,9 @@
- #include <linux/of.h>
-
- #include "bcm2835.h"
-+#include <soc/bcm2835/raspberrypi-firmware.h>
-
--static bool enable_hdmi;
-+static bool enable_hdmi, enable_hdmi0, enable_hdmi1;
- static bool enable_headphones;
- static bool enable_compat_alsa = true;
-
-@@ -115,8 +116,8 @@ static struct bcm2835_audio_driver bcm28
- .name = "bcm2835_hdmi",
- .owner = THIS_MODULE,
- },
-- .shortname = "bcm2835 HDMI",
-- .longname = "bcm2835 HDMI",
-+ .shortname = "bcm2835 HDMI 1",
-+ .longname = "bcm2835 HDMI 1",
- .minchannels = 1,
- .newpcm = bcm2835_audio_simple_newpcm,
- .newctl = snd_bcm2835_new_hdmi_ctl,
-@@ -128,8 +129,8 @@ static struct bcm2835_audio_driver bcm28
- .name = "bcm2835_hdmi",
- .owner = THIS_MODULE,
- },
-- .shortname = "bcm2835 HDMI 1",
-- .longname = "bcm2835 HDMI 1",
-+ .shortname = "bcm2835 HDMI 2",
-+ .longname = "bcm2835 HDMI 2",
- .minchannels = 1,
- .newpcm = bcm2835_audio_simple_newpcm,
- .newctl = snd_bcm2835_new_hdmi_ctl,
-@@ -161,11 +162,11 @@ static struct bcm2835_audio_drivers chil
- },
- {
- .audio_driver = &bcm2835_audio_hdmi0,
-- .is_enabled = &enable_hdmi,
-+ .is_enabled = &enable_hdmi0,
- },
- {
- .audio_driver = &bcm2835_audio_hdmi1,
-- .is_enabled = &enable_hdmi,
-+ .is_enabled = &enable_hdmi1,
- },
- {
- .audio_driver = &bcm2835_audio_headphones,
-@@ -312,6 +313,53 @@ static int snd_add_child_devices(struct
- return 0;
- }
-
-+static void set_hdmi_enables(struct device *dev)
-+{
-+ struct device_node *firmware_node;
-+ struct rpi_firmware *firmware;
-+ u32 num_displays, i, display_id;
-+ int ret;
-+
-+ firmware_node = of_parse_phandle(dev->of_node, "brcm,firmware", 0);
-+ firmware = rpi_firmware_get(firmware_node);
-+
-+ if (!firmware)
-+ return;
-+
-+ of_node_put(firmware_node);
-+
-+ ret = rpi_firmware_property(firmware,
-+ RPI_FIRMWARE_FRAMEBUFFER_GET_NUM_DISPLAYS,
-+ &num_displays, sizeof(u32));
-+
-+ if (ret)
-+ return;
-+
-+ for (i = 0; i < num_displays; i++) {
-+ display_id = i;
-+ ret = rpi_firmware_property(firmware,
-+ RPI_FIRMWARE_FRAMEBUFFER_GET_DISPLAY_ID,
-+ &display_id, sizeof(display_id));
-+ if (!ret) {
-+ if (display_id == 2)
-+ enable_hdmi0 = true;
-+ if (display_id == 7)
-+ enable_hdmi1 = true;
-+ }
-+ }
-+
-+ if (!enable_hdmi0 && enable_hdmi1) {
-+ /* Swap them over and reassign route. This means
-+ * that if we only have one connected, it is always named
-+ * HDMI1, irrespective of if its on port HDMI0 or HDMI1.
-+ * This should match with the naming of HDMI ports in DRM
-+ */
-+ enable_hdmi0 = true;
-+ enable_hdmi1 = false;
-+ bcm2835_audio_hdmi0.route = AUDIO_DEST_HDMI1;
-+ }
-+}
-+
- static int snd_bcm2835_alsa_probe(struct platform_device *pdev)
- {
- struct device *dev = &pdev->dev;
-@@ -332,6 +380,14 @@ static int snd_bcm2835_alsa_probe(struct
- numchans);
- }
-
-+ if (!enable_compat_alsa) {
-+ set_hdmi_enables(dev);
-+ // In this mode, always enable analog output
-+ enable_headphones = true;
-+ } else {
-+ enable_hdmi0 = enable_hdmi;
-+ }
-+
- err = bcm2835_devm_add_vchi_ctx(dev);
- if (err)
- return err;