MUSB: Problem limiting otg host to FullSpeed mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux