brcm2708: update to latest patches from RPi foundation
[openwrt/staging/chunkeey.git] / target / linux / brcm2708 / patches-4.19 / 950-0382-staging-bcm2835-audio-Use-PCM-runtime-values-instead.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0382-staging-bcm2835-audio-Use-PCM-runtime-values-instead.patch b/target/linux/brcm2708/patches-4.19/950-0382-staging-bcm2835-audio-Use-PCM-runtime-values-instead.patch
new file mode 100644 (file)
index 0000000..ffe06fe
--- /dev/null
@@ -0,0 +1,74 @@
+From 4efb059f297f8234bc188b6bc1e4af673ce9f9e3 Mon Sep 17 00:00:00 2001
+From: Takashi Iwai <tiwai@suse.de>
+Date: Tue, 4 Sep 2018 17:58:40 +0200
+Subject: [PATCH] staging: bcm2835-audio: Use PCM runtime values
+ instead
+
+commit b8f7fdd50890b848e085c0519469aed4ff4d9b54 upstream.
+
+Some fields in alsa_stream are the values we keep already in PCM
+runtime object, hence they are redundant.  Use the standard PCM
+runtime values instead of the private copies.
+
+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-pcm.c | 23 ++++---------------
+ .../vc04_services/bcm2835-audio/bcm2835.h     |  4 ----
+ 2 files changed, 4 insertions(+), 23 deletions(-)
+
+--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c
++++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-pcm.c
+@@ -206,22 +206,7 @@ static int snd_bcm2835_playback_close(st
+ static int snd_bcm2835_pcm_hw_params(struct snd_pcm_substream *substream,
+       struct snd_pcm_hw_params *params)
+ {
+-      struct snd_pcm_runtime *runtime = substream->runtime;
+-      struct bcm2835_alsa_stream *alsa_stream = runtime->private_data;
+-      int err;
+-
+-      err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(params));
+-      if (err < 0) {
+-              audio_error
+-                      (" pcm_lib_malloc failed to allocated pages for buffers\n");
+-              return err;
+-      }
+-
+-      alsa_stream->channels = params_channels(params);
+-      alsa_stream->params_rate = params_rate(params);
+-      alsa_stream->pcm_format_width = snd_pcm_format_width(params_format(params));
+-
+-      return err;
++      return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(params));
+ }
+ /* hw_free callback */
+@@ -248,11 +233,11 @@ static int snd_bcm2835_pcm_prepare(struc
+       if (chip->spdif_status & IEC958_AES0_NONAUDIO)
+               channels = 0;
+       else
+-              channels = alsa_stream->channels;
++              channels = runtime->channels;
+       err = bcm2835_audio_set_params(alsa_stream, channels,
+-              alsa_stream->params_rate,
+-              alsa_stream->pcm_format_width);
++                                     runtime->rate,
++                                     snd_pcm_format_width(runtime->format));
+       if (err < 0)
+               audio_error(" error setting hw params\n");
+--- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
++++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
+@@ -121,10 +121,6 @@ struct bcm2835_alsa_stream {
+       int draining;
+-      int channels;
+-      int params_rate;
+-      int pcm_format_width;
+-
+       unsigned int pos;
+       unsigned int buffer_size;
+       unsigned int period_size;