I am using iMX35 EVK board with linux-2.6.31 linus kernel. The iMX35 OTG port has been configured as Host and working as High Speed port. We would like to force the High speed port as Full Speed port. Any idea what changes we have to make in the configuration or in the code to achieve this.
Modification in USB driver code and set bit PFSC=1 register PORTSC, refer to Table 48-34 "Port Status Control x Registers Field Descriptions" i.MX35 Reference Manual (rev.3 12/2010) should configure for full speed but I am unable to do it. "dr_controller_setup" and "fsl_wakeup" in "'driver/usb/gadget/fsl_udc_core.c" are the only function which are writing to portsc1 register but they are not at all getting called from anywhere. Which function can I modify in order to write to portsc1 register.
Hi navanisrivastana,
you can set this bit as part of USB reset sequence in file
<ltib_dir>/rpm/BUILD/linux/arch/arm/plat-mxc/usb_common.c
Speed can not changed dynamically, in particular sect.
9.2.6.6 "Speed Dependent Descriptors" USB 2.0 specification states:
"A device also operates at a single speed after completing the reset
sequence. In particular, there is no speed switch during normal operation."
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Hi chipexpert,
Thanks for your reply.
Unfortunatly we have to change the linux version from 2.6.31 to 2.6.35 and in this newer version we don't have usb_common.c file.
Any ideas are appreciated.
Thanks
Navani
I would recommend 3.15-rc4 instead. There is a devicetree property called "maximum-speed = "full-speed" that does exactly what you want:
Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt b/Documentation/devicetree/bindings/usb/ci-hdrc-imx.txt