Hi all, I am currently involved in porting the USB stack (linux 2.6.11.11 kernel) on ARM 10 architecture. I have two separate ports on the Root Hub (one EHCI and one OHCI). The Host Controller implements all the standard EHCI and OHCI registers. The only difference is that the stack has been ported onto the AMBA bus directly and does not interface through the PCI as in most cases.
I have managed to port the basic stack, though there were some issues regarding the enumeration of an external USB 2.0 hub. Though the hub is getting enumerated, it is unable to detect any devices connected on it. I understand that the linux kernel creates a USB hub deamon (khubd) that manages various devices connected to the ports. There are two distinct issues I am facing. 1.) A device is connected to the hub prior to plugging it into the Root Hub. In this case, once the hub has been detected and the hub scans each of the ports for any device presence by issuing the GET_PORT_STATUS command in the hub_events() routine. I noticed that when a device is detected, the hub issues consecutive GET_PORT_STATUS commands for the hub_debounce period of 100ms (once after each 25ms period for transient removals). In my case the second time I call the GET_PORT_STATUS command, the urb is submitted ( message.c), but it never completes. The code calls wait_for_completion in usb_start_wait_urb() call. I am not understanding why the hub fails to respond. I have checked the submission of the urb till the HCD layer and have confirmed that the ASE bit is set in the EHCI Operation USBCMD register. I believe that the hub responds and the stack recognizes the command through ehci_irq->ehci_work->scan_async->qh_completions->ehci_urb_done->usb_hcd_giveback_urb->complete call stack. But no interrupt is getting raised. 2.) In the second case, when no device is connected on the hub, after the hub enumeration completes, the hub thread (khubd) issues constant IN transactions to check device connection on the hub. Again I have traced the sumission of the Interrupt In URB till the setting of the PSE bit in the USBCMD register. But as expected, I am not receiving the NAK response from the device. Hence not device detection is happening. Could some please suggest any possible reasons for the failure of device detection on the external hub? The stack works successfully for other 2.0 devices such as memory sticks, keyboards, and other mass storage devices. With regards, Kaustubh ------------------------------------------------------- This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit: http://ads.osdn.com/?ad_idv28&alloc_id845&op=click _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel