I have a device based on an EZUSB-FX2 part. It sends data with ISO
packets. My code uses the usbdevice_fs calls. It works on several
systems with 1.1 USB ports, but not on a 2.0 system. The call to
ioctl (device_fd, USBDEVFS_SUBMITURB, urb)
gets an error return -EINVAL. I have tracked this into the usb code as
far as the call to usb_submit_urb() in proc_submiturb() (in devio.c).
I have not yet figured out where in the ehci* stuff this goes.
The code is:
...
#define NUM_PKTS 1
#define NUM_URBS 2
struct usbdevfs_urb *urbs[NUM_URBS];
#define VIDEO_BUF_SIZE 1022
unsigned char video_buf[VIDEO_BUF_SIZE][NUM_URBS];
int ep_video = 2 | USB_DIR_IN;
...
for (i=0; i<NUM_URBS; i++) {
struct usbdevfs_urb *urb;
urbs[i] = (struct usbdevfs_urb *)malloc(sizeof(struct usbdevfs_urb) +
NUM_PKTS * sizeof(struct usbdevfs_iso_packet_desc));
urb = urbs[i];
urb->type = USBDEVFS_URB_TYPE_ISO;
urb->endpoint = ep_video;
urb->status = 0; // ????
urb->flags = USBDEVFS_URB_ISO_ASAP;
urb->buffer = &video_buf[0][i];
urb->buffer_length = VIDEO_BUF_SIZE;
// urb->actual_length
urb->start_frame = 0;
urb->error_count = 0; // ????
urb->signr = 0; // no signal
urb->usercontext = NULL;
urb->number_of_packets = NUM_PKTS;
for (j=0; j<NUM_PKTS; j++) {
urb->iso_frame_desc[j].length = VIDEO_BUF_SIZE;
}
result = ioctl (device_fd, USBDEVFS_SUBMITURB, urb);
...
This error occurs on the first call.
I am using 2.4.23. I tried a 2.6.2 system and got the same error (but I
have other applications that don't work under 2.6 yet).
Log message excerpts below. I'm using alternative setting 2.
--
Don Reid
-------------------------------------------
Feb 11 15:14:01 cvlx11 kernel: ehci_hcd 00:1d.7: USB 2.0 enabled, EHCI 1.00, driver
2003-Jun-19/2.4
Feb 11 15:14:01 cvlx11 kernel: Manufacturer: Linux 2.4.23 ehci_hcd
Feb 11 15:14:01 cvlx11 kernel: Product: Intel Corp. 82801DB USB2
Feb 11 15:14:01 cvlx11 kernel: SerialNumber: 00:1d.7
Feb 11 15:14:01 cvlx11 kernel: hub.c: USB hub found
Feb 11 15:14:01 cvlx11 kernel: hub.c: 6 ports detected
-------------------------------------------
Feb 11 15:14:43 cvlx11 kernel: hub.c: new USB device 00:1d.7-2.4, assigned address 5
Feb 11 15:14:43 cvlx11 kernel: Manufacturer: Agilent Technologies
Feb 11 15:14:43 cvlx11 kernel: Product: Camera Module Evaluation Board v2.0
Feb 11 15:14:43 cvlx11 kernel: usb.c: USB device 5 (vend/prod 0x957/0x199) is not
claimed by any active driver.
Feb 11 15:14:43 cvlx11 kernel: Length = 18
Feb 11 15:14:43 cvlx11 kernel: DescriptorType = 01
Feb 11 15:14:43 cvlx11 kernel: USB version = 2.00
Feb 11 15:14:43 cvlx11 kernel: Vendor:Product = 0957:0199
Feb 11 15:14:43 cvlx11 kernel: MaxPacketSize0 = 64
Feb 11 15:14:43 cvlx11 kernel: NumConfigurations = 1
Feb 11 15:14:43 cvlx11 kernel: Device version = 2.00
Feb 11 15:14:43 cvlx11 kernel: Device Class:SubClass:Protocol = 00:00:00
Feb 11 15:14:43 cvlx11 kernel: Per-interface classes
Feb 11 15:14:43 cvlx11 kernel: Configuration:
Feb 11 15:14:43 cvlx11 kernel: bLength = 9
Feb 11 15:14:43 cvlx11 kernel: bDescriptorType = 02
Feb 11 15:14:43 cvlx11 kernel: wTotalLength = 004e
Feb 11 15:14:43 cvlx11 kernel: bNumInterfaces = 01
Feb 11 15:14:43 cvlx11 kernel: bConfigurationValue = 01
Feb 11 15:14:43 cvlx11 kernel: iConfiguration = 00
Feb 11 15:14:43 cvlx11 kernel: bmAttributes = 80
Feb 11 15:14:43 cvlx11 kernel: MaxPower = 500mA
Feb 11 15:14:43 cvlx11 kernel:
Feb 11 15:14:43 cvlx11 kernel: Interface: 0
Feb 11 15:14:43 cvlx11 kernel: Alternate Setting: 0
Feb 11 15:14:43 cvlx11 kernel: bLength = 9
Feb 11 15:14:43 cvlx11 kernel: bDescriptorType = 04
Feb 11 15:14:43 cvlx11 kernel: bInterfaceNumber = 00
Feb 11 15:14:43 cvlx11 kernel: bAlternateSetting = 00
Feb 11 15:14:43 cvlx11 kernel: bNumEndpoints = 02
Feb 11 15:14:43 cvlx11 kernel: bInterface Class:SubClass:Protocol = 00:00:00
Feb 11 15:14:43 cvlx11 kernel: iInterface = 00
Feb 11 15:14:43 cvlx11 kernel: Endpoint:
Feb 11 15:14:43 cvlx11 kernel: bLength = 7
Feb 11 15:14:43 cvlx11 kernel: bDescriptorType = 05
Feb 11 15:14:43 cvlx11 kernel: bEndpointAddress = 81 (in)
Feb 11 15:14:43 cvlx11 kernel: bmAttributes = 03 (Interrupt)
Feb 11 15:14:43 cvlx11 kernel: wMaxPacketSize = 0000
Feb 11 15:14:43 cvlx11 kernel: bInterval = 00
Feb 11 15:14:43 cvlx11 kernel: Endpoint:
Feb 11 15:14:43 cvlx11 kernel: bLength = 7
Feb 11 15:14:43 cvlx11 kernel: bDescriptorType = 05
Feb 11 15:14:43 cvlx11 kernel: bEndpointAddress = 82 (in)
Feb 11 15:14:43 cvlx11 kernel: bmAttributes = 01 (Isochronous)
Feb 11 15:14:43 cvlx11 kernel: wMaxPacketSize = 0000
Feb 11 15:14:43 cvlx11 kernel: bInterval = 01
Feb 11 15:14:43 cvlx11 kernel: Alternate Setting: 1
Feb 11 15:14:43 cvlx11 kernel: bLength = 9
Feb 11 15:14:43 cvlx11 kernel: bDescriptorType = 04
Feb 11 15:14:43 cvlx11 kernel: bInterfaceNumber = 00
Feb 11 15:14:43 cvlx11 kernel: bAlternateSetting = 01
Feb 11 15:14:43 cvlx11 kernel: bNumEndpoints = 02
Feb 11 15:14:43 cvlx11 kernel: bInterface Class:SubClass:Protocol = 00:00:00
Feb 11 15:14:43 cvlx11 kernel: iInterface = 00
Feb 11 15:14:43 cvlx11 kernel: Endpoint:
Feb 11 15:14:43 cvlx11 kernel: bLength = 7
Feb 11 15:14:43 cvlx11 kernel: bDescriptorType = 05
Feb 11 15:14:43 cvlx11 kernel: bEndpointAddress = 81 (in)
Feb 11 15:14:43 cvlx11 kernel: bmAttributes = 03 (Interrupt)
Feb 11 15:14:43 cvlx11 kernel: wMaxPacketSize = 0000
Feb 11 15:14:43 cvlx11 kernel: bInterval = 00
Feb 11 15:14:43 cvlx11 kernel: Endpoint:
Feb 11 15:14:43 cvlx11 kernel: bLength = 7
Feb 11 15:14:43 cvlx11 kernel: bDescriptorType = 05
Feb 11 15:14:43 cvlx11 kernel: bEndpointAddress = 02 (out)
Feb 11 15:14:43 cvlx11 kernel: bmAttributes = 02 (Bulk)
Feb 11 15:14:43 cvlx11 kernel: wMaxPacketSize = 0200
Feb 11 15:14:43 cvlx11 kernel: bInterval = 00
Feb 11 15:14:43 cvlx11 kernel: Alternate Setting: 2
Feb 11 15:14:43 cvlx11 kernel: bLength = 9
Feb 11 15:14:43 cvlx11 kernel: bDescriptorType = 04
Feb 11 15:14:43 cvlx11 kernel: bInterfaceNumber = 00
Feb 11 15:14:43 cvlx11 kernel: bAlternateSetting = 02
Feb 11 15:14:43 cvlx11 kernel: bNumEndpoints = 02
Feb 11 15:14:43 cvlx11 kernel: bInterface Class:SubClass:Protocol = 00:00:00
Feb 11 15:14:43 cvlx11 kernel: iInterface = 00
Feb 11 15:14:43 cvlx11 kernel: Endpoint:
Feb 11 15:14:43 cvlx11 kernel: bLength = 7
Feb 11 15:14:43 cvlx11 kernel: bDescriptorType = 05
Feb 11 15:14:43 cvlx11 kernel: bEndpointAddress = 81 (in)
Feb 11 15:14:43 cvlx11 kernel: bmAttributes = 03 (Interrupt)
Feb 11 15:14:43 cvlx11 kernel: wMaxPacketSize = 0010
Feb 11 15:14:43 cvlx11 kernel: bInterval = 14
Feb 11 15:14:43 cvlx11 kernel: Endpoint:
Feb 11 15:14:43 cvlx11 kernel: bLength = 7
Feb 11 15:14:43 cvlx11 kernel: bDescriptorType = 05
Feb 11 15:14:43 cvlx11 kernel: bEndpointAddress = 82 (in)
Feb 11 15:14:43 cvlx11 kernel: bmAttributes = 01 (Isochronous)
Feb 11 15:14:43 cvlx11 kernel: wMaxPacketSize = 0400
Feb 11 15:14:43 cvlx11 kernel: bInterval = 01
-------------------------------------------
-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel