aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-4.19/950-0373-staging-bcm2835-audio-Remove-redundant-spdif-stream-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-4.19/950-0373-staging-bcm2835-audio-Remove-redundant-spdif-stream-.patch')
-rw-r--r--target/linux/bcm27xx/patches-4.19/950-0373-staging-bcm2835-audio-Remove-redundant-spdif-stream-.patch89
1 files changed, 89 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-4.19/950-0373-staging-bcm2835-audio-Remove-redundant-spdif-stream-.patch b/target/linux/bcm27xx/patches-4.19/950-0373-staging-bcm2835-audio-Remove-redundant-spdif-stream-.patch
new file mode 100644
index 0000000000..ac5c0a0d75
--- /dev/null
+++ b/target/linux/bcm27xx/patches-4.19/950-0373-staging-bcm2835-audio-Remove-redundant-spdif-stream-.patch
@@ -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)