Hi, I am tring to find isochronous endpoints in an Interface and claim the particular interface. I m using the following code. It does the same. But i am not able to receive isochronous packets ... my kernel version 2.6.9.
i found difference in /proc/bus/usb/devices file when i m loading hci_usb and my module seperatly.. The difference is, when hci_usb module is loaded, one hub device shows like some bandwidth allocated . T: Bus=04 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 27/900 us ( 3%), #Int= 1, #Iso= 2 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 2.06 S: Manufacturer=Linux 2.6.9-1.667 uhci_hcd S: Product=UHCI Host Controller S: SerialNumber=0000:00:1d.3 C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms But when i loaded my module, it is displaying as Alloc 0% (Remaining all device are same). I think i am missing some thing. Any suggestions ... code snap: isoc_iface = usb_ifnum_to_if(dev, isoc_ifnum); if (isoc_iface) { info ("Total NUmber of Alt Settings in ISOC %d",isoc_iface->num_altsetting); for (a = 0; a < isoc_iface->num_altsetting; a++) { uif = &isoc_iface->altsetting[a]; err("Alternate setting Number %d",a); for (e = 0; e < uif->desc.bNumEndpoints; e++) { endpoint = &uif->endpoint[e]; switch (endpoint->desc.bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) { case USB_ENDPOINT_XFER_ISOC: if (le16_to_cpu(endpoint->desc.wMaxPacketSize) < size || uif->desc.bAlternateSetting != isoc) break; size = le16_to_cpu(endpoint->desc.wMaxPacketSize); isoc_alts = uif->desc.bAlternateSetting; if (endpoint->desc.bEndpointAddress & USB_DIR_IN) { isoc_in_ep = endpoint; } else isoc_out_ep = endpoint; break; } } } if (!isoc_in_ep || !isoc_out_ep) err("Isoc endpoints not found"); else { info("isoc ifnum %d alts %d", isoc_ifnum, isoc_alts); if (usb_interface_claimed(isoc_iface)) err("Interface already Claimed !!"); else if (usb_driver_claim_interface(&usb_bluetooth_driver, isoc_iface, bluetooth) != 0) err("Can't claim isoc interface"); else err("isoc interface claimed successfully"); if (usb_set_interface(bluetooth->dev, isoc_ifnum, isoc_alts)) { err("Can't set isoc interface settings"); bluetooth->isoc_iface = isoc_iface; goto probe_error; } else bluetooth->isoc_out_endpointAddress=isoc_out_ep->desc.bEndpointAddress; bluetooth->isoc_out_buffer_size=le16_to_cpu(isoc_out_ep->desc.wMaxPacketSize); bluetooth->isoc_read_urb = usb_alloc_urb (1, GFP_KERNEL); if (!bluetooth->isoc_read_urb) { info("Couldnt Allocate isoc_read_urb "); goto probe_error; } bluetooth->isoc_in_buffer_size=buffer_size= le16_to_cpu(isoc_in_ep->desc.wMaxPacketSize); bluetooth->isoc_in_endpointAddress = isoc_in_ep->desc.bEndpointAddress; bluetooth->isoc_in_interval = isoc_in_ep->desc.bInterval; bluetooth->isoc_iface = isoc_iface; bluetooth->isoc_in_buffer= kmalloc(buffer_size * 10 ,GFP_KERNEL); if (!bluetooth->isoc_in_buffer) { err("Couldnt allocate Isoc_in_buffer"); goto probe_error; } usb_fill_isoc_urb (bluetooth->isoc_read_urb, bluetooth->dev, usb_rcvisocpipe(bluetooth->dev,131), bluetooth->isoc_in_buffer, bluetooth->isoc_in_buffer_size, bluetooth_read_isoc_callback, bluetooth,bluetooth->isoc_in_interval); result = usb_submit_urb(bluetooth->isoc_read_urb, GFP_KERNEL); if (result < 0) err("Error in isoc submit "); -- Ivy __________________________ Free 2500MB email. Stops spam 100%. No banner ads. No popup ads. http://www.cashette.com ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel