Jaroslav Kysela 95c168
From 3d7433a3c87754ff8b51cf06de53a3e6c38c20b0 Mon Sep 17 00:00:00 2001
Jaroslav Kysela 95c168
From: Jordi Mallach <jordi@debian.org>
Jaroslav Kysela 95c168
Date: Fri, 17 May 2013 18:25:51 +0200
Jaroslav Kysela 95c168
Subject: [PATCH 1/5] =?UTF-8?q?pcm:=20Fix=20typo=20in=20documentation:=20P?=
Jaroslav Kysela 95c168
 =?UTF-8?q?REPARE=20=E2=86=92=20PREPARED.?=
Jaroslav Kysela 95c168
MIME-Version: 1.0
Jaroslav Kysela 95c168
Content-Type: text/plain; charset=UTF-8
Jaroslav Kysela 95c168
Content-Transfer-Encoding: 8bit
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
Signed-off-by: Jordi Mallach <jordi@debian.org>
Jaroslav Kysela 95c168
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Jaroslav Kysela 95c168
---
Jaroslav Kysela 95c168
 src/pcm/pcm.c | 2 +-
Jaroslav Kysela 95c168
 1 file changed, 1 insertion(+), 1 deletion(-)
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c
Jaroslav Kysela 95c168
index 438fb3f..7ec1f0e 100644
Jaroslav Kysela 95c168
--- a/src/pcm/pcm.c
Jaroslav Kysela 95c168
+++ b/src/pcm/pcm.c
Jaroslav Kysela 95c168
@@ -437,7 +437,7 @@ to #SND_PCM_STATE_SETUP
Jaroslav Kysela 95c168
 if successfully finishes, otherwise the state #SND_PCM_STATE_OPEN
Jaroslav Kysela 95c168
 is entered.
Jaroslav Kysela 95c168
 When it is brought to SETUP state, this function automatically
Jaroslav Kysela 95c168
-calls #snd_pcm_prepare() function to bring to the PREPARE state
Jaroslav Kysela 95c168
+calls #snd_pcm_prepare() function to bring to the PREPARED state
Jaroslav Kysela 95c168
 as below.
Jaroslav Kysela 95c168
 
Jaroslav Kysela 95c168
 \par snd_pcm_prepare
Jaroslav Kysela 95c168
-- 
Jaroslav Kysela 95c168
1.8.1.4
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
From 14d653d7c374f9ba6319a7c5a8ee6f0bc3071304 Mon Sep 17 00:00:00 2001
Jaroslav Kysela 95c168
From: =?UTF-8?q?Juho=20H=C3=A4m=C3=A4l=C3=A4inen?=
Jaroslav Kysela 95c168
 <juho.hamalainen@tieto.com>
Jaroslav Kysela 95c168
Date: Fri, 24 May 2013 14:01:25 +0300
Jaroslav Kysela 95c168
Subject: [PATCH 2/5] ucm: Fix segfault when device argument is missing from
Jaroslav Kysela 95c168
 _sw{dev, mod}
Jaroslav Kysela 95c168
MIME-Version: 1.0
Jaroslav Kysela 95c168
Content-Type: text/plain; charset=UTF-8
Jaroslav Kysela 95c168
Content-Transfer-Encoding: 8bit
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
Signed-off-by: Juho Hämäläinen <juho.hamalainen@tieto.com>
Jaroslav Kysela 95c168
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Jaroslav Kysela 95c168
---
Jaroslav Kysela 95c168
 src/ucm/main.c | 3 ++-
Jaroslav Kysela 95c168
 1 file changed, 2 insertions(+), 1 deletion(-)
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
diff --git a/src/ucm/main.c b/src/ucm/main.c
Jaroslav Kysela 95c168
index d38b7fa..0494728 100644
Jaroslav Kysela 95c168
--- a/src/ucm/main.c
Jaroslav Kysela 95c168
+++ b/src/ucm/main.c
Jaroslav Kysela 95c168
@@ -1647,7 +1647,8 @@ int snd_use_case_set(snd_use_case_mgr_t *uc_mgr,
Jaroslav Kysela 95c168
                 		goto __end;
Jaroslav Kysela 95c168
                         }
Jaroslav Kysela 95c168
                 } else {
Jaroslav Kysela 95c168
-                        str = NULL;
Jaroslav Kysela 95c168
+                        err = -EINVAL;
Jaroslav Kysela 95c168
+                        goto __end;
Jaroslav Kysela 95c168
                 }
Jaroslav Kysela 95c168
                 if (check_identifier(identifier, "_swdev"))
Jaroslav Kysela 95c168
                         err = switch_device(uc_mgr, str, value);
Jaroslav Kysela 95c168
-- 
Jaroslav Kysela 95c168
1.8.1.4
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
From 2f43b66c06ece64529e482a6dcc95cde37648252 Mon Sep 17 00:00:00 2001
Jaroslav Kysela 95c168
From: Takashi Iwai <tiwai@suse.de>
Jaroslav Kysela 95c168
Date: Fri, 24 May 2013 17:21:15 +0200
Jaroslav Kysela 95c168
Subject: [PATCH 3/5] Allow specifying the max number of cards
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
Add --with-max-cards option to specify the max number of cards in
Jaroslav Kysela 95c168
configure script, when the support for more than 32 cards is
Jaroslav Kysela 95c168
required.
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Jaroslav Kysela 95c168
---
Jaroslav Kysela 95c168
 configure.in             | 14 ++++++++++++++
Jaroslav Kysela 95c168
 src/confmisc.c           |  2 +-
Jaroslav Kysela 95c168
 src/control/cards.c      |  6 +++---
Jaroslav Kysela 95c168
 src/control/control_hw.c |  2 +-
Jaroslav Kysela 95c168
 src/hwdep/hwdep_hw.c     |  2 +-
Jaroslav Kysela 95c168
 5 files changed, 20 insertions(+), 6 deletions(-)
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
diff --git a/configure.in b/configure.in
Jaroslav Kysela 95c168
index 35b8e84..3d394fc 100644
Jaroslav Kysela 95c168
--- a/configure.in
Jaroslav Kysela 95c168
+++ b/configure.in
Jaroslav Kysela 95c168
@@ -632,6 +632,20 @@ for t in $CTL_PLUGIN_LIST; do
Jaroslav Kysela 95c168
   fi
Jaroslav Kysela 95c168
 done
Jaroslav Kysela 95c168
 
Jaroslav Kysela 95c168
+dnl Max number of cards
Jaroslav Kysela 95c168
+AC_MSG_CHECKING(for max number of cards)
Jaroslav Kysela 95c168
+AC_ARG_WITH(max-cards,
Jaroslav Kysela 95c168
+  AS_HELP_STRING([--with-max-cards], [Specify the max number of cards (default = 32)]),
Jaroslav Kysela 95c168
+  [ max_cards="$withval" ], [ max_cards="32" ])
Jaroslav Kysela 95c168
+AC_MSG_RESULT([$max_cards])
Jaroslav Kysela 95c168
+
Jaroslav Kysela 95c168
+if test "$max_cards" -lt 1; then
Jaroslav Kysela 95c168
+   AC_ERROR([Invalid max cards $max_cards])
Jaroslav Kysela 95c168
+elif test "$max_cards" -gt 256; then
Jaroslav Kysela 95c168
+   AC_ERROR([Invalid max cards $max_cards])
Jaroslav Kysela 95c168
+fi
Jaroslav Kysela 95c168
+AC_DEFINE_UNQUOTED(SND_MAX_CARDS, $max_cards, [Max number of cards])
Jaroslav Kysela 95c168
+
Jaroslav Kysela 95c168
 dnl Make a symlink for inclusion of alsa/xxx.h
Jaroslav Kysela 95c168
 if test ! -L "$srcdir"/include/alsa ; then
Jaroslav Kysela 95c168
   echo "Making a symlink include/alsa"
Jaroslav Kysela 95c168
diff --git a/src/confmisc.c b/src/confmisc.c
Jaroslav Kysela 95c168
index 80b0027..af686be 100644
Jaroslav Kysela 95c168
--- a/src/confmisc.c
Jaroslav Kysela 95c168
+++ b/src/confmisc.c
Jaroslav Kysela 95c168
@@ -668,7 +668,7 @@ int snd_determine_driver(int card, char **driver)
Jaroslav Kysela 95c168
 	char *res = NULL;
Jaroslav Kysela 95c168
 	int err;
Jaroslav Kysela 95c168
 
Jaroslav Kysela 95c168
-	assert(card >= 0 && card <= 32);
Jaroslav Kysela 95c168
+	assert(card >= 0 && card <= SND_MAX_CARDS);
Jaroslav Kysela 95c168
 	err = open_ctl(card, &ctl;;
Jaroslav Kysela 95c168
 	if (err < 0) {
Jaroslav Kysela 95c168
 		SNDERR("could not open control for card %i", card);
Jaroslav Kysela 95c168
diff --git a/src/control/cards.c b/src/control/cards.c
Jaroslav Kysela 95c168
index b528e33..5d7376c 100644
Jaroslav Kysela 95c168
--- a/src/control/cards.c
Jaroslav Kysela 95c168
+++ b/src/control/cards.c
Jaroslav Kysela 95c168
@@ -103,7 +103,7 @@ int snd_card_next(int *rcard)
Jaroslav Kysela 95c168
 		return -EINVAL;
Jaroslav Kysela 95c168
 	card = *rcard;
Jaroslav Kysela 95c168
 	card = card < 0 ? 0 : card + 1;
Jaroslav Kysela 95c168
-	for (; card < 32; card++) {
Jaroslav Kysela 95c168
+	for (; card < SND_MAX_CARDS; card++) {
Jaroslav Kysela 95c168
 		if (snd_card_load(card)) {
Jaroslav Kysela 95c168
 			*rcard = card;
Jaroslav Kysela 95c168
 			return 0;
Jaroslav Kysela 95c168
@@ -134,7 +134,7 @@ int snd_card_get_index(const char *string)
Jaroslav Kysela 95c168
 	    (isdigit(*string) && isdigit(*(string + 1)) && *(string + 2) == 0)) {
Jaroslav Kysela 95c168
 		if (sscanf(string, "%i", &card) != 1)
Jaroslav Kysela 95c168
 			return -EINVAL;
Jaroslav Kysela 95c168
-		if (card < 0 || card > 31)
Jaroslav Kysela 95c168
+		if (card < 0 || card >= SND_MAX_CARDS)
Jaroslav Kysela 95c168
 			return -EINVAL;
Jaroslav Kysela 95c168
 		err = snd_card_load1(card);
Jaroslav Kysela 95c168
 		if (err >= 0)
Jaroslav Kysela 95c168
@@ -143,7 +143,7 @@ int snd_card_get_index(const char *string)
Jaroslav Kysela 95c168
 	}
Jaroslav Kysela 95c168
 	if (string[0] == '/')	/* device name */
Jaroslav Kysela 95c168
 		return snd_card_load2(string);
Jaroslav Kysela 95c168
-	for (card = 0; card < 32; card++) {
Jaroslav Kysela 95c168
+	for (card = 0; card < SND_MAX_CARDS; card++) {
Jaroslav Kysela 95c168
 #ifdef SUPPORT_ALOAD
Jaroslav Kysela 95c168
 		if (! snd_card_load(card))
Jaroslav Kysela 95c168
 			continue;
Jaroslav Kysela 95c168
diff --git a/src/control/control_hw.c b/src/control/control_hw.c
Jaroslav Kysela 95c168
index 90c4ba7..148097f 100644
Jaroslav Kysela 95c168
--- a/src/control/control_hw.c
Jaroslav Kysela 95c168
+++ b/src/control/control_hw.c
Jaroslav Kysela 95c168
@@ -382,7 +382,7 @@ int snd_ctl_hw_open(snd_ctl_t **handle, const char *name, int card, int mode)
Jaroslav Kysela 95c168
 
Jaroslav Kysela 95c168
 	*handle = NULL;	
Jaroslav Kysela 95c168
 
Jaroslav Kysela 95c168
-	if (CHECK_SANITY(card < 0 || card >= 32)) {
Jaroslav Kysela 95c168
+	if (CHECK_SANITY(card < 0 || card >= SND_MAX_CARDS)) {
Jaroslav Kysela 95c168
 		SNDMSG("Invalid card index %d", card);
Jaroslav Kysela 95c168
 		return -EINVAL;
Jaroslav Kysela 95c168
 	}
Jaroslav Kysela 95c168
diff --git a/src/hwdep/hwdep_hw.c b/src/hwdep/hwdep_hw.c
Jaroslav Kysela 95c168
index e4fcdc3..4314e32 100644
Jaroslav Kysela 95c168
--- a/src/hwdep/hwdep_hw.c
Jaroslav Kysela 95c168
+++ b/src/hwdep/hwdep_hw.c
Jaroslav Kysela 95c168
@@ -112,7 +112,7 @@ int snd_hwdep_hw_open(snd_hwdep_t **handle, const char *name, int card, int devi
Jaroslav Kysela 95c168
 
Jaroslav Kysela 95c168
 	*handle = NULL;
Jaroslav Kysela 95c168
 	
Jaroslav Kysela 95c168
-	if (card < 0 || card >= 32)
Jaroslav Kysela 95c168
+	if (card < 0 || card >= SND_MAX_CARDS)
Jaroslav Kysela 95c168
 		return -EINVAL;
Jaroslav Kysela 95c168
 	sprintf(filename, SNDRV_FILE_HWDEP, card, device);
Jaroslav Kysela 95c168
 	fd = snd_open_device(filename, mode);
Jaroslav Kysela 95c168
-- 
Jaroslav Kysela 95c168
1.8.1.4
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
From 7f877543a36efd8fd5d38fae21352fc0567ece21 Mon Sep 17 00:00:00 2001
Jaroslav Kysela 95c168
From: David Henningsson <david.henningsson@canonical.com>
Jaroslav Kysela 95c168
Date: Thu, 30 May 2013 12:26:33 +0200
Jaroslav Kysela 95c168
Subject: [PATCH 4/5] pcm_hw: Remove unused fields in struct
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
These fields are not used, and their name similarity to other
Jaroslav Kysela 95c168
fields are quite confusing when trying to debug alsa-lib.
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Jaroslav Kysela 95c168
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela 95c168
---
Jaroslav Kysela 95c168
 src/pcm/pcm_hw.c | 2 --
Jaroslav Kysela 95c168
 1 file changed, 2 deletions(-)
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c
Jaroslav Kysela 95c168
index 0f3226d..196393d 100644
Jaroslav Kysela 95c168
--- a/src/pcm/pcm_hw.c
Jaroslav Kysela 95c168
+++ b/src/pcm/pcm_hw.c
Jaroslav Kysela 95c168
@@ -95,8 +95,6 @@ typedef struct {
Jaroslav Kysela 95c168
 	volatile struct snd_pcm_mmap_status * mmap_status;
Jaroslav Kysela 95c168
 	struct snd_pcm_mmap_control *mmap_control;
Jaroslav Kysela 95c168
 	struct snd_pcm_sync_ptr *sync_ptr;
Jaroslav Kysela 95c168
-	snd_pcm_uframes_t hw_ptr;
Jaroslav Kysela 95c168
-	snd_pcm_uframes_t appl_ptr;
Jaroslav Kysela 95c168
 	int period_event;
Jaroslav Kysela 95c168
 	snd_timer_t *period_timer;
Jaroslav Kysela 95c168
 	struct pollfd period_timer_pfd;
Jaroslav Kysela 95c168
-- 
Jaroslav Kysela 95c168
1.8.1.4
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
From f2d39afe6139ab16aa2aeea0f51f32db79ab1262 Mon Sep 17 00:00:00 2001
Jaroslav Kysela 95c168
From: David Henningsson <david.henningsson@canonical.com>
Jaroslav Kysela 95c168
Date: Thu, 30 May 2013 12:26:34 +0200
Jaroslav Kysela 95c168
Subject: [PATCH 5/5] pcm_plugin: Fix return value of snd_pcm_rewind
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
In case the rewind did not rewind as much as expected, e g due to
Jaroslav Kysela 95c168
time delay between the latest avail update and the rewind, we must
Jaroslav Kysela 95c168
properly account for that in the plugin layer.
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
Otherwise, the plugin's appl ptr and the hw's appl ptr become
Jaroslav Kysela 95c168
unsynchronised, which is very bad, especially in mmap_shadow plugins,
Jaroslav Kysela 95c168
e g, this could cause the overlapping memcpy in the softvol plugin
Jaroslav Kysela 95c168
as seen here:
Jaroslav Kysela 95c168
https://bugs.freedesktop.org/show_bug.cgi?id=64299
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Jaroslav Kysela 95c168
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela 95c168
---
Jaroslav Kysela 95c168
 src/pcm/pcm_plugin.c | 4 ++--
Jaroslav Kysela 95c168
 1 file changed, 2 insertions(+), 2 deletions(-)
Jaroslav Kysela 95c168
Jaroslav Kysela 95c168
diff --git a/src/pcm/pcm_plugin.c b/src/pcm/pcm_plugin.c
Jaroslav Kysela 95c168
index 96218a8..17157e8 100644
Jaroslav Kysela 95c168
--- a/src/pcm/pcm_plugin.c
Jaroslav Kysela 95c168
+++ b/src/pcm/pcm_plugin.c
Jaroslav Kysela 95c168
@@ -219,9 +219,9 @@ static snd_pcm_sframes_t snd_pcm_plugin_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t
Jaroslav Kysela 95c168
 		snd_atomic_write_end(&plugin->watom);
Jaroslav Kysela 95c168
 		return sframes;
Jaroslav Kysela 95c168
 	}
Jaroslav Kysela 95c168
-	snd_pcm_mmap_appl_backward(pcm, (snd_pcm_uframes_t) frames);
Jaroslav Kysela 95c168
+	snd_pcm_mmap_appl_backward(pcm, (snd_pcm_uframes_t) sframes);
Jaroslav Kysela 95c168
 	snd_atomic_write_end(&plugin->watom);
Jaroslav Kysela 95c168
-	return (snd_pcm_sframes_t) frames;
Jaroslav Kysela 95c168
+	return (snd_pcm_sframes_t) sframes;
Jaroslav Kysela 95c168
 }
Jaroslav Kysela 95c168
 
Jaroslav Kysela 95c168
 static snd_pcm_sframes_t snd_pcm_plugin_forwardable(snd_pcm_t *pcm)
Jaroslav Kysela 95c168
-- 
Jaroslav Kysela 95c168
1.8.1.4
Jaroslav Kysela 95c168