blob: 2fc74e0a048edb82836e4b2b81e56fca427f5f1e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
From 89c0c9310876b7ae0d0ed9002e1ebe44f856f876 Mon Sep 17 00:00:00 2001
From: wm4 <wm4@nowhere>
Date: Tue, 19 Apr 2016 16:08:35 +0200
Subject: [PATCH] bcm2835: do not require substream for accessing chmap ctl
Fixes alsasctl store/restore operation.
---
sound/arm/bcm2835-ctl.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
--- a/sound/arm/bcm2835-ctl.c
+++ b/sound/arm/bcm2835-ctl.c
@@ -489,8 +489,6 @@ static int snd_bcm2835_chmap_ctl_get(str
{
struct snd_pcm_chmap *info = snd_kcontrol_chip(kcontrol);
bcm2835_chip_t *chip = info->private_data;
- unsigned int idx = snd_ctl_get_ioffidx(kcontrol, &ucontrol->id);
- struct snd_pcm_substream *substream = snd_pcm_chmap_substream(info, idx);
struct cea_channel_speaker_allocation *ch = NULL;
int res = 0;
int cur = 0;
@@ -499,11 +497,6 @@ static int snd_bcm2835_chmap_ctl_get(str
if (mutex_lock_interruptible(&chip->audio_mutex))
return -EINTR;
- if (!substream || !substream->runtime) {
- res = -ENODEV;
- goto unlock;
- }
-
for (i = 0; i < ARRAY_SIZE(channel_allocations); i++) {
if (channel_allocations[i].ca_index == chip->cea_chmap)
ch = &channel_allocations[i];
@@ -521,7 +514,6 @@ static int snd_bcm2835_chmap_ctl_get(str
while (cur < 8)
ucontrol->value.integer.value[cur++] = SNDRV_CHMAP_NA;
-unlock:
mutex_unlock(&chip->audio_mutex);
return res;
}
@@ -541,7 +533,7 @@ static int snd_bcm2835_chmap_ctl_put(str
return -EINTR;
if (!substream || !substream->runtime) {
- res = -ENODEV;
+ /* ignore and return success for the sake of alsactl */
goto unlock;
}
|