All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Mark Knecht <markknecht@attbi.com>
Cc: Paul Davis <paul@linuxaudiosystems.com>,
	Alsa-Devel <alsa-devel@lists.sourceforge.net>
Subject: Re: alsasound init script (Re: possible problems with	rc6 aplay )
Date: Tue, 17 Dec 2002 12:06:35 +0100	[thread overview]
Message-ID: <s5hpts0sy4k.wl@alsa2.suse.de> (raw)
In-Reply-To: <1040096816.3766.16.camel@Godzilla>

[-- Attachment #1: Type: text/plain, Size: 3755 bytes --]

At 16 Dec 2002 19:46:55 -0800,
Mark Knecht wrote:
> 
> On Mon, 2002-12-16 at 18:51, Paul Davis wrote:
> 
> > 
> > i think it would something like this:
> > 
> > options snd-hdsp snd_index=0
> > options snd-usb-foo snd_index=1
> > 
> > i'm sure that takashi or jaroslav will correct me if i got this wrong.
> > 
> > --p
> 
> Paul,
>    This makes perfect sense, and it isn't what I did. (!!)
> 
>    The PlanetCCRMA has a Nano-HOWTO on how to install the MidiMan 2X2 by
> hand. It's a little USB-based MIDI interface (not a sound card) that is
> not recognized by alsaconf, so we do a bit of editing by hand.
> 
>    alsaconf sets up modules.conf for the HDSP
> 
> # --- BEGIN: Generated by ALSACONF, do not edit. ---
> # --- ALSACONF verion 0.9.0 ---
> alias char-major-116 snd
> alias snd-card-0 snd-hdsp
> alias char-major-14 soundcore
> alias sound-slot-0 snd-card-0
> alias sound-service-0-0 snd-mixer-oss
> alias sound-service-0-1 snd-seq-oss
> alias sound-service-0-3 snd-pcm-oss
> alias sound-service-0-8 snd-seq-oss
> alias sound-service-0-12 snd-pcm-oss
> options snd major=116 cards_limit=1 device_mode=0666
> options snd-hdsp index=0
> # --- END: Generated by ALSACONF, do not edit. ---
> 
> 
> We then modify one line in the file to look like this:
> 
> options snd major=116 cards_limit=2 device_mode=0666
> 
> 
> and we also do the following:
> 
> <SNIP from the Planet>
> add usb-midi and audio to the /etc/hotplug/blacklist file
> So that the OSS audio and usb-midi modules are not automatically loaded
> when the device reconnects after the firmware download. Add ``usb-midi''
> and ``audio'' in separate lines at the end of the list of blacklisted
> modules in that file. 
> <End SNIP>
> 
> I think, according to your info, that the problem is caused by not
> having some sort of 
> 
> options snd-midiman index=1
> 
> line. That makes sense to me, except that I don't know what to put there
> since there actually isn't a driver. The goal is to get the system to
> make some devices in /dev/snd. This works fine on a cold boot, but fails
> sometimes on a warm boot. (At least I think it does, since sometimes I
> get pcmC1D0 when I have no pcmC0D0

the behavior depends on the order of booting.
if the hotplug service is booted before the alsasound init script,
hotplug will start the snd-usbaudio module, which will be assigned as
the first empty device, i.e. device #0, unless you specify the index
option.  and afterwards, the alsasound script is started, and it
results in the confliction of devices.

setting an index option is one of the solutions.
in this case, the first usb-audio/midi device will be forced to be
assigned to #1.  so, it's safe to start it beforehand.

but, when we take a deeper look at this, we find another problem.
the alsasound init script checks whether the ALSA was already started
by checking the existence of /proc/asound directory.  and, if hotplug
started the usb-audio/midi before alsasound, this directory would be
also created because the alsa core was started without help of
alsasound init script, too.  this leads to the skip of loading of any
other soundcards, because alsasound will quit immediately.

after all, a simple solution for this is to make sure that alsasound
starts before hotplug.  then, even the index option for snd-usbaudio
wouldn't be necessary (in theory).


in the above scenario, anyway, cards_limit must be changed.  and i
think it's a bit annoying.

the attached patch will change the handling of cards_limit option.
with the patch, the alsa won't restrict the number of cards per
cards_limit option, but only limits the auto-probing via kmod.
i.e. you can load more card modules even with cards_limit=1.

i'd like to hear which behavior is preferable.


ciao,

Takashi

[-- Attachment #2: limit-check.dif --]
[-- Type: application/octet-stream, Size: 1133 bytes --]

--- alsa-kernel/core/init.c	12 Jun 2002 10:21:00 -0000	1.9
+++ alsa-kernel/core/init.c	16 Jul 2002 12:11:37 -0000
@@ -67,11 +67,19 @@
 				idx = idx2;
 				break;
 			}
+		if (idx < 0 && snd_ecards_limit < SNDRV_CARDS)
+			/* for dynamically additional devices like hotplug:
+			 * increment the limit if still free slot exists.
+			 */
+			idx = snd_ecards_limit++;
 	} else if (idx < snd_ecards_limit) {
 		if (snd_cards_lock & (1 << idx))
 			idx = -1;	/* invalid */
-	}
-	if (idx < 0 || idx >= snd_ecards_limit) {
+	} else if (idx < SNDRV_CARDS)
+		snd_ecards_limit = idx + 1; /* increase the limit */
+	else
+		idx = -1;
+	if (idx < 0) {
 		write_unlock(&snd_card_rwlock);
 		if (idx >= snd_ecards_limit)
 			snd_printk(KERN_ERR "card %i is out of range (0-%i)\n", idx, snd_ecards_limit-1);
--- alsa-kernel/core/sound.c	23 May 2002 08:26:29 -0000	1.14
+++ alsa-kernel/core/sound.c	16 Jul 2002 12:13:03 -0000
@@ -81,7 +81,7 @@
 
 	if (snd_cards[card] != NULL)
 		return;
-	if (card < 0 || card >= snd_ecards_limit)
+	if (card < 0 || card >= snd_cards_limit)
 		return;
 	sprintf(str, "snd-card-%i", card);
 	request_module(str);

  reply	other threads:[~2002-12-17 11:06 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20021216152035.CZFC3512.sccrgwc01.attbi.com@newmx1.fast.net>
2002-12-16 21:18 ` alsasound init script (Re: possible problems with rc6 aplay ) Mark Knecht
2002-12-17  2:51   ` Paul Davis
2002-12-17  3:46     ` Mark Knecht
2002-12-17 11:06       ` Takashi Iwai [this message]
2002-12-17 19:36         ` Fernando Pablo Lopez-Lezcano
2002-12-18 10:46           ` Takashi Iwai
2002-12-18 11:17             ` Takashi Iwai
2002-12-18 13:11               ` Mark Knecht
2002-12-20 15:10                 ` Takashi Iwai
2002-12-20 16:10                   ` Clemens Ladisch
     [not found] <E18PTTN-0004YV-00@sc8-sf-list2.sourceforge.net>
2002-12-20 22:53 ` Pedro Lopez-Cabanillas
2002-12-23 13:44   ` Takashi Iwai
2002-12-23 17:18     ` Patrick Shirkey
2002-12-16 13:57 possible problems with rc6 aplay Takashi Iwai
2002-12-16 14:29 ` Paul Davis
2002-12-16 14:53   ` alsasound init script (Re: possible problems with rc6 aplay ) Takashi Iwai
2002-12-16 15:23     ` Paul Davis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=s5hpts0sy4k.wl@alsa2.suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@lists.sourceforge.net \
    --cc=markknecht@attbi.com \
    --cc=paul@linuxaudiosystems.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.