-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi,
thanks for your replies. I have my modules.conf already configured similar to Miguel's description. Sorry for not including it right away. From Georgi's very complete system information I found out some new spots in proc to look for things and I found out that oss emulation devices are there for both cards on my setup. Only the device names are not created. I modified Georgi's mknod commands like this: echo Creating missing Sound devices mknod /dev/sound/dsp1 c 14 19 mknod /dev/sound/mixer1 c 14 16 chown root.audio /dev/sound/dsp1 chown root.audio /dev/sound/mixer1 chmod 664 /dev/sound/dsp1 /dev/sound/mixer1 ln -s /dev/sound/dsp1 /dev/dsp1 ln -s /dev/sound/mixer1 /dev/mixer1 echo "Sound should be ok now!" and put them in my rc.local script. That does the job as a workaround. I'll also try the patch later. Hopefully it works with my 2.4.20 kernel. Jaroslav, do you know if the patch got rejected completely or only delayed? Any information from the kernel masters about the subject? Thanks again to all of you for your help. Finally both soundcards are usable, cool! CU, Richard On Friday 03 January 2003 10:53, Jaroslav Kysela wrote: > On Fri, 3 Jan 2003, Georgi Georgiev wrote: > > The devfs code of alsa seems to not work correctly. > > Even though my setup is as described below, the device /dev/sound/dsp1 > > for example, is not created (just check the whole mail). > > > > Creating a device manually does the job, but creating a device on boot is > > annoying. > > It's not an ALSA problem, but the sound_core.c from the 2.4 kernel is > buggy. Unfortunately, Marcelo hasn't accepted our patch. Here is it: > > --- /home/src/linux/drivers/sound/sound_core.c Thu Sep 19 10:36:04 2002 > +++ out.txt Fri Jan 3 10:51:26 2003 > @@ -17,7 +17,7 @@ > * plug into this. The fact they dont all go via OSS doesn't mean > * they don't have to implement the OSS API. There is a lot of logic > * to keeping much of the OSS weight out of the code in a compatibility > - * module, but its up to the driver to rember to load it... > + * module, but it's up to the driver to rember to load it... > * > * The code provides a set of functions for registration of devices > * by type. This is done rather than providing a single call so that > @@ -173,10 +173,10 @@ > return r; > } > > - if (r == low) > + if (r < SOUND_STEP) > sprintf (name_buf, "%s", name); > else > - sprintf (name_buf, "%s%d", name, (r - low) / SOUND_STEP); > + sprintf (name_buf, "%s%d", name, r / SOUND_STEP); > s->de = devfs_register (devfs_handle, name_buf, > DEVFS_FL_NONE, SOUND_MAJOR, s->unit_minor, > S_IFCHR | mode, fops, NULL); > @@ -217,7 +217,7 @@ > * 15 *16 unused > */ > > -static struct sound_unit *chains[16]; > +static struct sound_unit *chains[SOUND_STEP]; > > /** > * register_sound_special - register a special sound node > @@ -231,73 +231,62 @@ > > int register_sound_special(struct file_operations *fops, int unit) > { > - char *name, name_ext[32]; > - int suffix = 0; > + const int chain = unit % SOUND_STEP; > + int max_unit = 128 + chain; > + const char *name; > + char _name[16]; > > - switch (unit & 15) { > + switch (chain) { > case 0: > name = "mixer"; > - suffix = 1; > break; > case 1: > name = "sequencer"; > + if (unit >= SOUND_STEP) > + goto __unknown; > + max_unit = unit + 1; > break; > case 2: > - sprintf(name_ext, "midi0%d", unit / SOUND_STEP); > - name = name_ext; > + name = "midi"; > break; > case 3: > name = "dsp"; > - suffix = 1; > break; > case 4: > name = "audio"; > - suffix = 1; > - break; > - case 5: > - name = "unknown5"; > - break; > - case 6: /* Was once sndstat */ > - name = "unknown6"; > - break; > - case 7: > - name = "unknown7"; > break; > case 8: > name = "sequencer2"; > + if (unit >= SOUND_STEP) > + goto __unknown; > + max_unit = unit + 1; > break; > case 9: > name = "dmmidi"; > - suffix = 1; > break; > case 10: > name = "dmfm"; > - suffix = 1; > - break; > - case 11: > - name = "unknown11"; > break; > case 12: > name = "adsp"; > - suffix = 1; > break; > case 13: > name = "amidi"; > - suffix = 1; > break; > case 14: > name = "admmidi"; > - suffix = 1; > break; > default: > - name = "unknown"; > + { > + __unknown: > + sprintf(_name, "unknown%d", chain); > + if (unit >= SOUND_STEP) > + strcat(_name, "-"); > + name = _name; > + } > break; > } > - if (suffix && unit >= SOUND_STEP) { > - sprintf(name_ext, "%s%d", name, unit / SOUND_STEP); > - name = name_ext; > - } > - return sound_insert_unit(&chains[unit&15], fops, -1, unit, unit+1, > + return sound_insert_unit(&chains[chain], fops, -1, unit, max_unit, > name, S_IRUSR | S_IWUSR); > } > > @@ -396,7 +385,7 @@ > > void unregister_sound_special(int unit) > { > - sound_remove_unit(&chains[unit&15], unit); > + sound_remove_unit(&chains[unit % SOUND_STEP], unit); > } > > EXPORT_SYMBOL(unregister_sound_special); > @@ -494,7 +483,7 @@ > int soundcore_open(struct inode *inode, struct file *file) > { > int chain; > - int unit=MINOR(inode->i_rdev); > + int unit = MINOR(inode->i_rdev); > struct sound_unit *s; > struct file_operations *new_fops = NULL; > > > Jaroslav > > ----- > Jaroslav Kysela <[EMAIL PROTECTED]> > Linux Kernel Sound Maintainer > ALSA Project, SuSE Labs > > > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Welcome to geek heaven. > http://thinkgeek.com/sf > _______________________________________________ > Alsa-user mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/alsa-user -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQE+FYDpWQvEMJfcXlQRAsdiAKCIDarRhAzsnzITPGGxTOWgQi4B4gCfby84 PI1musYnzEV5o48lY4WbZE8= =A2Da -----END PGP SIGNATURE----- ------------------------------------------------------- This sf.net email is sponsored by:ThinkGeek Welcome to geek heaven. http://thinkgeek.com/sf _______________________________________________ Alsa-user mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-user