-----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

Reply via email to