You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.5 KiB
Diff
75 lines
2.5 KiB
Diff
5 years ago
|
From 4efb059f297f8234bc188b6bc1e4af673ce9f9e3 Mon Sep 17 00:00:00 2001
|
||
5 years ago
|
From: Takashi Iwai <tiwai@suse.de>
|
||
|
Date: Tue, 4 Sep 2018 17:58:40 +0200
|
||
5 years ago
|
Subject: [PATCH] staging: bcm2835-audio: Use PCM runtime values
|
||
5 years ago
|
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;
|