brcm2708: update to latest patches from RPi foundation
[openwrt/staging/dedeckeh.git] / target / linux / brcm2708 / patches-4.19 / 950-0373-staging-bcm2835-audio-Remove-redundant-spdif-stream-.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0373-staging-bcm2835-audio-Remove-redundant-spdif-stream-.patch b/target/linux/brcm2708/patches-4.19/950-0373-staging-bcm2835-audio-Remove-redundant-spdif-stream-.patch
new file mode 100644 (file)
index 0000000..ac5c0a0
--- /dev/null
@@ -0,0 +1,89 @@
+From a1a77a925422be3f0c48002c2aa6c6d898a37f95 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 4 Sep 2018 17:58:31 +0200
+Subject: [PATCH] staging: bcm2835-audio: Remove redundant spdif stream
+ ctls
+
+commit ab91e26229eaca2832df51e13c1285aea3be33ab upstream.
+
+The "IEC958 Playback Stream" control does basically the very same
+thing as "IEC958 Playback Default" redundantly.  The former should
+have been stream-specific and restored after closing the stream, but
+we don't do in that way.
+
+Since it's nothing but confusion, remove this fake.
+
+Signed-off-by: Takashi Iwai <tiwai@suse.de>
+Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ .../vc04_services/bcm2835-audio/bcm2835-ctl.c | 51 -------------------
+ 1 file changed, 51 deletions(-)
+
+--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-ctl.c
++++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-ctl.c
+@@ -233,48 +233,6 @@ static int snd_bcm2835_spdif_mask_get(st
+       return 0;
+ }
+-static int snd_bcm2835_spdif_stream_info(struct snd_kcontrol *kcontrol,
+-      struct snd_ctl_elem_info *uinfo)
+-{
+-      uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958;
+-      uinfo->count = 1;
+-      return 0;
+-}
+-
+-static int snd_bcm2835_spdif_stream_get(struct snd_kcontrol *kcontrol,
+-      struct snd_ctl_elem_value *ucontrol)
+-{
+-      struct bcm2835_chip *chip = snd_kcontrol_chip(kcontrol);
+-      int i;
+-
+-      mutex_lock(&chip->audio_mutex);
+-
+-      for (i = 0; i < 4; i++)
+-              ucontrol->value.iec958.status[i] =
+-              (chip->spdif_status >> (i * 8)) & 0xff;
+-
+-      mutex_unlock(&chip->audio_mutex);
+-      return 0;
+-}
+-
+-static int snd_bcm2835_spdif_stream_put(struct snd_kcontrol *kcontrol,
+-      struct snd_ctl_elem_value *ucontrol)
+-{
+-      struct bcm2835_chip *chip = snd_kcontrol_chip(kcontrol);
+-      unsigned int val = 0;
+-      int i, change;
+-
+-      mutex_lock(&chip->audio_mutex);
+-
+-      for (i = 0; i < 4; i++)
+-              val |= (unsigned int)ucontrol->value.iec958.status[i] << (i * 8);
+-      change = val != chip->spdif_status;
+-      chip->spdif_status = val;
+-
+-      mutex_unlock(&chip->audio_mutex);
+-      return change;
+-}
+-
+ static struct snd_kcontrol_new snd_bcm2835_spdif[] = {
+       {
+               .iface = SNDRV_CTL_ELEM_IFACE_PCM,
+@@ -290,15 +248,6 @@ static struct snd_kcontrol_new snd_bcm28
+               .info = snd_bcm2835_spdif_mask_info,
+               .get = snd_bcm2835_spdif_mask_get,
+       },
+-      {
+-              .access = SNDRV_CTL_ELEM_ACCESS_READWRITE |
+-              SNDRV_CTL_ELEM_ACCESS_INACTIVE,
+-              .iface = SNDRV_CTL_ELEM_IFACE_PCM,
+-              .name = SNDRV_CTL_NAME_IEC958("", PLAYBACK, PCM_STREAM),
+-              .info = snd_bcm2835_spdif_stream_info,
+-              .get = snd_bcm2835_spdif_stream_get,
+-              .put = snd_bcm2835_spdif_stream_put,
+-      },
+ };
+ int snd_bcm2835_new_ctl(struct bcm2835_chip *chip)