brcm2708: update to latest patches from RPi Foundation
[openwrt/staging/dedeckeh.git] / target / linux / brcm2708 / patches-4.19 / 950-0653-Add-HDMI1-facility-to-the-driver.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0653-Add-HDMI1-facility-to-the-driver.patch b/target/linux/brcm2708/patches-4.19/950-0653-Add-HDMI1-facility-to-the-driver.patch
new file mode 100644 (file)
index 0000000..7594d16
--- /dev/null
@@ -0,0 +1,85 @@
+From 0a37470a112260ef1c9a016a400fdf1f8792eadc Mon Sep 17 00:00:00 2001
+From: James Hughes <james.hughes@raspberrypi.org>
+Date: Tue, 16 Jul 2019 12:18:21 +0100
+Subject: [PATCH] Add HDMI1 facility to the driver.
+
+For generic ALSA, all you need is the bcm2835.h change, but
+have also added structures for IEC958 HDMI. Not sure how to
+test those.
+---
+ .../vc04_services/bcm2835-audio/bcm2835.c     | 29 ++++++++++++++++---
+ .../vc04_services/bcm2835-audio/bcm2835.h     |  4 ++-
+ 2 files changed, 28 insertions(+), 5 deletions(-)
+
+--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
++++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.c
+@@ -79,7 +79,11 @@ static int bcm2835_audio_alsa_newpcm(str
+       if (err)
+               return err;
+-      err = snd_bcm2835_new_pcm(chip, "bcm2835 IEC958/HDMI", 1, 0, 1, true);
++      err = snd_bcm2835_new_pcm(chip, "bcm2835 IEC958/HDMI", 1, AUDIO_DEST_HDMI0, 1, true);
++      if (err)
++              return err;
++
++      err = snd_bcm2835_new_pcm(chip, "bcm2835 IEC958/HDMI1", 2, AUDIO_DEST_HDMI1, 1, true);
+       if (err)
+               return err;
+@@ -106,7 +110,7 @@ static struct bcm2835_audio_driver bcm28
+       .newctl = snd_bcm2835_new_ctl,
+ };
+-static struct bcm2835_audio_driver bcm2835_audio_hdmi = {
++static struct bcm2835_audio_driver bcm2835_audio_hdmi0 = {
+       .driver = {
+               .name = "bcm2835_hdmi",
+               .owner = THIS_MODULE,
+@@ -116,7 +120,20 @@ static struct bcm2835_audio_driver bcm28
+       .minchannels = 1,
+       .newpcm = bcm2835_audio_simple_newpcm,
+       .newctl = snd_bcm2835_new_hdmi_ctl,
+-      .route = AUDIO_DEST_HDMI
++      .route = AUDIO_DEST_HDMI0
++};
++
++static struct bcm2835_audio_driver bcm2835_audio_hdmi1 = {
++      .driver = {
++              .name = "bcm2835_hdmi",
++              .owner = THIS_MODULE,
++      },
++      .shortname = "bcm2835 HDMI 1",
++      .longname  = "bcm2835 HDMI 1",
++      .minchannels = 1,
++      .newpcm = bcm2835_audio_simple_newpcm,
++      .newctl = snd_bcm2835_new_hdmi_ctl,
++      .route = AUDIO_DEST_HDMI1
+ };
+ static struct bcm2835_audio_driver bcm2835_audio_headphones = {
+@@ -143,7 +160,11 @@ static struct bcm2835_audio_drivers chil
+               .is_enabled = &enable_compat_alsa,
+       },
+       {
+-              .audio_driver = &bcm2835_audio_hdmi,
++              .audio_driver = &bcm2835_audio_hdmi0,
++              .is_enabled = &enable_hdmi,
++      },
++      {
++              .audio_driver = &bcm2835_audio_hdmi1,
+               .is_enabled = &enable_hdmi,
+       },
+       {
+--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
++++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
+@@ -33,7 +33,9 @@ enum {
+ enum snd_bcm2835_route {
+       AUDIO_DEST_AUTO = 0,
+       AUDIO_DEST_HEADPHONES = 1,
+-      AUDIO_DEST_HDMI = 2,
++      AUDIO_DEST_HDMI = 2,  // for backwards compatibility.
++      AUDIO_DEST_HDMI0 = 2,
++      AUDIO_DEST_HDMI1 = 3,
+       AUDIO_DEST_MAX,
+ };