Hi Alan,
thanks for the fast response and useful infos. Unfortunately your patch
does not work but triggered by it I made it working.
The changes as as follows:
First we should diverse between Audigy and X-Fi in snd_usb_apply_boot_quirk:
case USB_ID(0x041e, 0x30df):
/* X-Fi Surround 5.1 */
return snd_usb_sb_x_fi_boot_quirk(dev);
and then additional function
static int snd_usb_sb_x_fi_boot_quirk(struct usb_device *dev)
{
u16 buf = 1;
snd_printk(KERN_ERR "X-Fi Surround 5.1 newer quirk\n");
snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), 0x2a,
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_OTHER,
0, 0, &buf, 2);
snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), 0x2a,
USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_OTHER,
0, 0, &buf, 2);
if (buf == 0) {
snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), 0x29,
USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER,
1, 2000, NULL, 0);
usb_reset_device(dev);
return -EAGAIN; //-ENODEV;
}
return 0;
}
about this quirk function I am not sure. I tried to follow recorded
initialization process from WinXP running on virtual machine. I made it
finally running but without real understanding why it should be like
that. I noticed that initialization process takes a while (~2 sec.). I
do not care about that. If you think there is a smarter way to do it
just suggest and I will test it.
The patch combining these two is as follows:
===================================================================
mgrecki@mgpc:/usr/src/linux-3.9.2/sound/usb$ diff -c quirks.c.org quirks.c
===================================================================
*** quirks.c.org 2013-07-20 00:06:51.246927975 +0200
--- quirks.c 2013-07-20 00:07:28.067690027 +0200
***************
*** 374,379 ****
--- 374,401 ----
return 0;
}
+ static int snd_usb_sb_x_fi_boot_quirk(struct usb_device *dev)
+ {
+ u16 buf = 1;
+
+ snd_printk(KERN_ERR "X-Fi Surround 5.1 newer quirk\n");
+
+ snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), 0x2a,
+ USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_OTHER,
+ 0, 0, &buf, 2);
+ snd_usb_ctl_msg(dev, usb_rcvctrlpipe(dev, 0), 0x2a,
+ USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_OTHER,
+ 0, 0, &buf, 2);
+ if (buf == 0) {
+ snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), 0x29,
+ USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_OTHER,
+ 1, 2000, NULL, 0);
+ usb_reset_device(dev);
+ return -EAGAIN; //-ENODEV;
+ }
+ return 0;
+ }
+
static int snd_usb_fasttrackpro_boot_quirk(struct usb_device *dev)
{
int err;
***************
*** 733,738 ****
--- 755,764 ----
/* SB Audigy 2 NX needs its own boot-up magic, too */
return snd_usb_audigy2nx_boot_quirk(dev);
+ case USB_ID(0x041e, 0x30df):
+ /* X-Fi Surround 5.1 quirk for HS operation*/
+ return snd_usb_sb_x_fi_boot_quirk(dev);
+
case USB_ID(0x10f5, 0x0200):
/* C-Media CM106 / Turtle Beach Audio Advantage Roadie */
return snd_usb_cm106_boot_quirk(dev);
===================================================================
In case you would like me to perform additional tests just let me know.
Many thanks for your help. That was exactly what I was looking for.
Mariusz Grecki
PS. I still do not understand why the card was initialized to HS without
that. I really seen that once... But this is probably not important,
just a curiosity...
On 04.07.2013 18:26, Alan Stern wrote:
> As Oliver Neukum suggested earlier, your device appears to need the
> same magic message as the SoundBlaster Audigy 2 NX. This patch for
> 3.10 should do it. Let me know how it works.
>
> Index: usb-3.10/sound/usb/quirks.c
> ===================================================================
> --- usb-3.10.orig/sound/usb/quirks.c
> +++ usb-3.10/sound/usb/quirks.c
> @@ -744,6 +744,8 @@ int snd_usb_apply_boot_quirk(struct usb_
>
> case USB_ID(0x041e, 0x3020):
> /* SB Audigy 2 NX needs its own boot-up magic, too */
> + case USB_ID(0x041e, 0x30df):
> + /* Same for the X-Fi Surround 5.1 */
> return snd_usb_audigy2nx_boot_quirk(dev);
>
> case USB_ID(0x10f5, 0x0200):
>
--
Best regards
Mariusz Grecki
_____________________________________________________
| |
| Dr. Mariusz Grecki |
| Deutsches Elektronen-Synchrotron DESY |
| Notkestraße 85, 22607 Hamburg, Geb. 3/109a |
| tel.: +49 40 89985489 fax: +49 40 89983282 |
| e-mail: [email protected] |
| pgp key: B03772F8/pool.sks-keyservers.net |
|_____________________________________________________|
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html