cancel
Showing results for 
Search instead for 
Did you mean: 

STM32 uClinux USB Controller driver

vincent2
Associate II
Posted on July 03, 2014 at 16:09

Hi all,

I’am trying to port an USB Host Controller Driver for uClinux on STM32.

Here is my investigation so far :

I’am using jserv uClinux distro generation (

https://github.com/jserv/stm32f429-linux-builder/blob/master/README.md

)

It uses itself the robustest deposit : 

https://github.com/robutest

 (I didn’t test with Emcraft deposit : 

https://github.com/EmcraftSystems

).

The STM32 USB IP is from Synopsys, aka ''DesignWare HS OTG Controller''. The silicon release version on my STM32429i Disco is : 2.81a

I found 3 different drivers for this IP :

- s3c-hsotg.c in uClinux tree (/drivers/usb/gadget)

- dwc_otg from openwrt project

- dwc2 from Linux kernel mainline

I reached to compile and integrate all of them (adding usb platform definition, changing clock conf to support 48Mhz and deactivate usb power down) :

s3c-hsotg : This driver seems rather old. Even the reset procedure seems not good. I didn’t investigate to long on this driver.

dwc_otg : The driver starts, recognizes the internal hub but it seems that communication with device is an issue. I get timeout. 

The driver cover silicon revision until the version 2.72a (in otg_cil.h). I don’t know if my IP release is compatible with this driver ...

dwc2 : This one cover silicon release until rev 3.00a. I had to back port the driver from 3.x kernel API to 2.6. Now, the driver starts but do not recognize the internal hub, then stop.

I spent several hours to compare dwc_otg, dwc2 and ST USB HAL Driver and so far I don not have clue about what is going on.

If someone is interested I will generate patches and explain how to integrates.

But, I’ll much appreciate help from people (hello Emcraft 🙂 having Linux USB driver experience to identifie current problems.

Thanks for your support,

BR,

V.

1 REPLY 1
vincent2
Associate II
Posted on July 03, 2014 at 17:11

Here is the logs I got so far :

dwc_otg log at boot : https://drive.google.com/file/d/0BzL7nIuY5NR3d0kyeWRnbjBGZ28/edit?usp=sharing

dwc_otg when connecting an usb stick : https://drive.google.com/file/d/0BzL7nIuY5NR3clVZZnp5cDRPY0E/edit?usp=sharing

dwc2 log at boot : https://drive.google.com/file/d/0BzL7nIuY5NR3UmVxRzVRSEplRU0/edit?usp=sharing