]> git.alsa-project.org Git - alsa-lib.git/commitdiff
Allow specifying the max number of cards
authorTakashi Iwai <tiwai@suse.de>
Fri, 24 May 2013 15:21:15 +0000 (17:21 +0200)
committerTakashi Iwai <tiwai@suse.de>
Fri, 24 May 2013 15:21:15 +0000 (17:21 +0200)
Add --with-max-cards option to specify the max number of cards in
configure script, when the support for more than 32 cards is
required.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
configure.in
src/confmisc.c
src/control/cards.c
src/control/control_hw.c
src/hwdep/hwdep_hw.c

index 35b8e842bdf9aec077437ef45ab0f80dc38a6841..3d394fc12137b87ee2b9f9f2002780579bb67a56 100644 (file)
@@ -632,6 +632,20 @@ for t in $CTL_PLUGIN_LIST; do
   fi
 done
 
+dnl Max number of cards
+AC_MSG_CHECKING(for max number of cards)
+AC_ARG_WITH(max-cards,
+  AS_HELP_STRING([--with-max-cards], [Specify the max number of cards (default = 32)]),
+  [ max_cards="$withval" ], [ max_cards="32" ])
+AC_MSG_RESULT([$max_cards])
+
+if test "$max_cards" -lt 1; then
+   AC_ERROR([Invalid max cards $max_cards])
+elif test "$max_cards" -gt 256; then
+   AC_ERROR([Invalid max cards $max_cards])
+fi
+AC_DEFINE_UNQUOTED(SND_MAX_CARDS, $max_cards, [Max number of cards])
+
 dnl Make a symlink for inclusion of alsa/xxx.h
 if test ! -L "$srcdir"/include/alsa ; then
   echo "Making a symlink include/alsa"
index 80b0027dc80f2a7731f08eaf4654c9a53766064d..af686bea323c6ec8ac8bdb2e1e02e1c01148fd9c 100644 (file)
@@ -668,7 +668,7 @@ int snd_determine_driver(int card, char **driver)
        char *res = NULL;
        int err;
 
-       assert(card >= 0 && card <= 32);
+       assert(card >= 0 && card <= SND_MAX_CARDS);
        err = open_ctl(card, &ctl);
        if (err < 0) {
                SNDERR("could not open control for card %i", card);
index b528e33a36c049d63fe617cb7e23135a98e83792..5d7376c802a971903518e3ff636ae8073d3107ad 100644 (file)
@@ -103,7 +103,7 @@ int snd_card_next(int *rcard)
                return -EINVAL;
        card = *rcard;
        card = card < 0 ? 0 : card + 1;
-       for (; card < 32; card++) {
+       for (; card < SND_MAX_CARDS; card++) {
                if (snd_card_load(card)) {
                        *rcard = card;
                        return 0;
@@ -134,7 +134,7 @@ int snd_card_get_index(const char *string)
            (isdigit(*string) && isdigit(*(string + 1)) && *(string + 2) == 0)) {
                if (sscanf(string, "%i", &card) != 1)
                        return -EINVAL;
-               if (card < 0 || card > 31)
+               if (card < 0 || card >= SND_MAX_CARDS)
                        return -EINVAL;
                err = snd_card_load1(card);
                if (err >= 0)
@@ -143,7 +143,7 @@ int snd_card_get_index(const char *string)
        }
        if (string[0] == '/')   /* device name */
                return snd_card_load2(string);
-       for (card = 0; card < 32; card++) {
+       for (card = 0; card < SND_MAX_CARDS; card++) {
 #ifdef SUPPORT_ALOAD
                if (! snd_card_load(card))
                        continue;
index 90c4ba79ce517ed31985e82cd80637fa166d145c..148097facd90e396af97f9040728c2b67bc26478 100644 (file)
@@ -382,7 +382,7 @@ int snd_ctl_hw_open(snd_ctl_t **handle, const char *name, int card, int mode)
 
        *handle = NULL; 
 
-       if (CHECK_SANITY(card < 0 || card >= 32)) {
+       if (CHECK_SANITY(card < 0 || card >= SND_MAX_CARDS)) {
                SNDMSG("Invalid card index %d", card);
                return -EINVAL;
        }
index e4fcdc39f228ffa26cd1eb53227d21a0bd8156e3..4314e32bade67ecfa330ab129575da0fbfc43063 100644 (file)
@@ -112,7 +112,7 @@ int snd_hwdep_hw_open(snd_hwdep_t **handle, const char *name, int card, int devi
 
        *handle = NULL;
        
-       if (card < 0 || card >= 32)
+       if (card < 0 || card >= SND_MAX_CARDS)
                return -EINVAL;
        sprintf(filename, SNDRV_FILE_HWDEP, card, device);
        fd = snd_open_device(filename, mode);