Martin Langer wrote:
> Thanks for all patches, but I don't found an error in the log-files. The last
> line is/was always the detection, which seems to work fine (see above). I'm
> still missing a client in /proc/asound/seq/clients, so the driver never
> reaches the port creation and I have no additional output from your patch.
> Something else must be between usb-detection and creation of the port!
It seems that snd_usbmidi_seq_device_new is never called (???), or fails.
Please try the following patch (in addition to my other one), which will output
a lot of debug messages:
--- usb/usbmidi.c.org Wed Jul 31 10:57:09 2002
+++ usb/usbmidi.c Wed Jul 31 12:13:03 2002
@@ -874,20 +874,24 @@
for (i = 0; i < MAX_ENDPOINTS; ++i) {
usbmidi_endpoint_info_t* ep_info = &umidi->device_info.endpoints[i];
+ printk(KERN_INFO "endpoint %d ...\n", i);
if (!ep_info->epnum)
continue;
if (ep_info->out_cables) {
+ printk(KERN_INFO "... output\n");
err = snd_usbmidi_out_endpoint_create(umidi, ep_info,
&umidi->endpoints[i]);
if (err < 0)
return err;
}
if (ep_info->in_cables) {
+ printk(KERN_INFO "... input\n");
err = snd_usbmidi_in_endpoint_create(umidi, ep_info,
&umidi->endpoints[i]);
if (err < 0)
return err;
}
+ printk(KERN_INFO "... ports\n");
err = snd_usbmidi_create_endpoint_ports(umidi, i, &port_idx);
if (err < 0)
return err;
@@ -909,8 +913,10 @@
snd_seq_client_info_t client_info;
int i, err;
+ printk(KERN_INFO "snd_usbmidi_seq_device_new() called\n");
umidi = (usbmidi_t*)SNDRV_SEQ_DEVICE_ARGPTR(seq_device);
+ printk(KERN_INFO "creating client\n");
memset(&client_callback, 0, sizeof(client_callback));
client_callback.allow_output = 1;
client_callback.allow_input = 1;
@@ -919,6 +925,7 @@
if (umidi->seq_client < 0)
return umidi->seq_client;
+ printk(KERN_INFO "setting client name\n");
memset(&client_info, 0, sizeof(client_info));
client_info.client = umidi->seq_client;
client_info.type = KERNEL_CLIENT;
@@ -928,12 +935,15 @@
SNDRV_SEQ_IOCTL_SET_CLIENT_INFO,
&client_info);
+ printk(KERN_INFO "creating endpoints\n");
err = snd_usbmidi_create_endpoints(umidi);
if (err < 0) {
+ printk(KERN_INFO "... failed\n");
snd_usbmidi_seq_device_delete(seq_device);
return err;
}
+ printk(KERN_INFO "submitting URBs\n");
for (i = 0; i < MAX_ENDPOINTS; ++i)
if (umidi->endpoints[i].in)
snd_usbmidi_submit_urb(umidi->endpoints[i].in->urb,
> tuba:~# cat /proc/asound/cards
> 0 [card0 ]: USB MIDI - Evolution Electronics L MK-249C Evolution
> Electronics L MK-249C Evolution Elect (a4d:8e if 1 at 001/002)
> Evolution Electronics L MK-249C Evolution Elect (a4d:8e
> if 1 at 001/002)
>
> The only strange thing I found are the unknown parts of the lsusb output
> (broken descriptor?) and the impossible module reload = segfault.
IMHO the garbled device name is strange, too. ;-) This is a (rather
harmless) buffer overflow which has been fixed by the latest version of my
other patch.
HTH
Clemens
-------------------------------------------------------
This sf.net email is sponsored by: Dice - The leading online job board
for high-tech professionals. Search and apply for tech jobs today!
http://seeker.dice.com/seeker.epl?rel_code=31
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel