Hello! We are currently evaluating if it would be possible to limit the USB Speed of the MUSB controller of an TI-OMAP 4430 in host mode to FullSpeed mode. Hardware: CPU: TI-OMAP 4430 Board: Pandaboard A5 Kernel: 3.9.11 Unfortunately I currently face some problems. I tried to mask out 'MUSB_POWER_HSENAB' bit from MUSB_POWER register initialization in musb_core.c: musb_start(). See my patch [2] below. For the first instance everything looks ok, the bit stays 0, all the time and is not set back to 1 at any place. According to [1] disabling the HSENAB flag should prevent the MUSB from negotiating new devices to HighSpeed mode, but stay on FullSpeed. Nevertheless the the USB link seem to negotiate to HightSpeed mode after inserting a new HighSpeed device and the HSMODE flag in MUSB_POWER register is set to 1. In my understanding of the MUSB register and functional description, this should be prevented by the disabled HSENAB flag. In practice, when inserting a FullSpeed device (like an old memory stick) everything works fine, but when inserting a HighSpeed mode device enumeration fails. It looks like it is first negotiated as FullSpeed device, but then it takes a few seconds where nothing happens, then the kernel reports it again as new HighSpeed device, but enumerations fails with error -110. See my log below: usb 2-1: new full-speed USB device number 2 using musb-hdrc ^^^^^^^^^^ usb 2-1: new high-speed USB device number 3 using musb-hdrc ^^^^^^^^^^ usb 2-1: device descriptor read/64, error -110 usb 2-1: device descriptor read/64, error -110 usb 2-1: new high-speed USB device number 4 using musb-hdrc usb 2-1: device not accepting address 4, error -110 usb 2-1: new high-speed USB device number 5 using musb-hdrc usb 2-1: device not accepting address 5, error -110 hub 2-0:1.0: unable to enumerate USB device on port 1 Question: ========= Is this the right way to limit the MUSB OTG in host mode to FullSpeed mode? Do I need to implement further changes or is FulLSpeed mode limitation not possible at all? Any hints how to correctly limit the MUSB to FullSpeed mode are very welcome! Thank you for your help! Best regards, Ole Reinhardt [1]: http://www.ti.com/lit/ug/sprued2c/sprued2c.pdf Chapter 3.2, page 45 Chapter 4.47, page 107 (unfortunately the MUSB peripheral is not well documented in the OMAP4430 reference manual, but the same peripheral (IP block) is used in this device as well). [2]: My patch: diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c index daec6e0..8bbe1a9 100644 --- a/drivers/usb/musb/musb_core.c +++ b/drivers/usb/musb/musb_core.c @@ -928,7 +928,7 @@ void musb_start(struct musb *musb) /* put into basic highspeed mode and start session */ musb_writeb(regs, MUSB_POWER, MUSB_POWER_ISOUPDATE - | MUSB_POWER_HSENAB + /* | MUSB_POWER_HSENAB */ /* ENSUSPEND wedges tusb */ /* | MUSB_POWER_ENSUSPEND */ ); -- kernel concepts GmbH Tel: +49-271-771091-14 Sieghuetter Hauptweg 48 Mob: +49-177-7420433 D-57072 Siegen http://www.kernelconcepts.de -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html