-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
I guess I won't try it then. Hopefully this gets resolved at some stage. I
don't mind another alsa workaround anyways since there is already one. I have
to reload the alsa drivers for my Terratec DMX XFire 1024 after the initial
load at boottime. Otherwise I only get heavily distorted sound. After
reloading it's ok. I started a thread with a question about that a while ago.
AFAIR the terratec Cards doesn't get initialized properly the first time. The
second time it works. So I just create the missing devices after the reload.
It could be worse ;)
CU and thanks again,
Richard
On Friday 03 January 2003 14:07, Georgi Georgiev wrote:
> On Fri, Jan 03, 2003 at 01:24:08PM +0100, Richard Stevens wrote:
> > 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?
>
> I just tried the patch and I use vanilla 2.4.20 kernel. Only the fourth
> chunk is not appliable, bacause it seems sort of applied already. The
> function register_sound_special that is in the kernel looks a lot like the
> alsa patch wants it to look like. The part that is not applied is the
> shortcut with the unknown devices - the kernel source prefers a long switch
> statement, rather than using goto.
>
> There is also the part with the switch statement.
>
> The kernel source has changed like
> - switch (unit & 15) {
> + switch (unit) {
>
> and the alsa patch suggests
>
> - switch (unit & 15) {
> + switch (chain) {
>
> where chain is assigned a value of unit % SOUND_STEP a few lines before
> that. The name of the device with minor 2 became hardcoded as midi00 (again
> rejection of a part of the alsa patch).
>
> That's about it. The rest of the fourth chunk is applied (more or less) and
> the rest of the patch is not applied at all.
>
> I applied the patch almost manually, and for the curious, here is my diff.
> You'd need to patch -R, but do read until the end first.
>
> --- /usr/src/linux/drivers/sound/sound_core.c.bak 2003-01-03
> 20:48:46.000000000 +0900 +++ /usr/src/linux/drivers/sound/sound_core.c
> 2003-01-03 21:47:59.000000000 +0900 @@ -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
> @@ -233,7 +233,7 @@
> {
> char *name;
>
> - switch (unit) {
> + switch (unit & 15) {
> case 0:
> name = "mixer";
> break;
> @@ -382,7 +382,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);
> @@ -480,7 +480,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;
>
>
> The /dev/sound devices are created as expected with this patch.
> I could do "modprobe -r snd-pcm-oss", but once I decided to do
> "modprobe -r snd-cmipci" next I got a segfault, and "modprobe -r
> snd-emu10k1" (right after that) froze the modprobe process.
>
> # lsmod | grep ^snd
> snd-cmipci 0 0 (deleted)
> snd-opl3-lib 6628 0 [snd-cmipci]
> snd-mpu401-uart 3120 0 [snd-cmipci]
> snd-emu10k1 0 0 (deleted)
> snd-ac97-codec 30436 0 [snd-emu10k1]
> snd-pcm 60576 0 [snd-cmipci snd-emu10k1]
> snd-timer 11080 0 [snd-opl3-lib snd-pcm]
> snd-rawmidi 13824 0 [snd-mpu401-uart snd-emu10k1]
> snd-util-mem 1392 0 [snd-emu10k1]
> snd-hwdep 4256 0 [snd-opl3-lib snd-emu10k1]
> snd-seq-device 4268 0 [snd-opl3-lib snd-emu10k1 snd-rawmidi]
> snd 27980 0 [snd-cmipci snd-opl3-lib snd-mpu401-uart
> snd-emu10k1 snd-ac97-codec snd-pcm snd-timer snd-rawmidi snd-util-mem
> snd-hwdep snd-seq-device]
>
> The directory /dev/sound has disappeared already.
>
> I hope someone posts a more soffisticated patch soon. This was simply my
> attempt to "make it compile" but it obviously doesn't work :(
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
iD8DBQE+FZBjWQvEMJfcXlQRArZuAKCbzYonxR41tYOvb422xDjSX1garwCdGX6U
Ut7AgieCROzn6tDnYlYEWmo=
=NiLp
-----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