• 0

[SOLVED] Zybo USB OTG - Reset via MIO 46



I'm trying to set up the USB OTG on Zybo board.

I've done the following:

1. Checked the "Peripherals I/O pin" field for the USB0 and MIO as well for reset the PHY chip into Re-customize IP ( double click on zynq ).It matched with the schematics.

2. I have checked the devicetree auto-generated by SDK ( 2017.2 ).I have attached it. Seems to be good.

3. I have plugged my usb key on J10 ( the bigger USB connector ) as I want zybo to be a host controller.

4. The jumper JP1 is shorted.

5. The MIO 46 have to provide the reset signal to the PHY chip if I understand correctly

6. The connection between zynq ps and PHY is ULPI ( 12 signals from MIO 28 to 39 )

7. When I boot the whole thing the device driver is correctly registered ( dmesg | grep usb ) but my usb key is not recognized.

8 If i stop the u-boot autoboot and issue the followings:

- usb info ---> says that the usb is stopped

- usb reset --> it rescan and detect correctly the host conroller and the usb key

- boot --> boot the whole thing but the usb key is not recognized.

I have searched a lot and, if I understand well, the following line on devicetree:

usb-reset = <&gpio0 46 0>;

declare that the gpio 46 have to became the reset signal for PHY chip ( active low , I have checked on Vivado into re-customize ip menu ) and in fact the "usb reset" on u-boot shell works but I don't know why I cannot recognize my usb key.

I have also read that the fsbl have to issue the reset signal.

I have done a search on fsbl source code and I have not found any USB reset function or something similar.

The only thing that I have found is into ps7_init.c but honestly I can't understand a lot of that code... :)

Anyone have encountered the same problem?? I have read that many peaple had problems with zybo USB OTG.

I have also tried to do this into 

u32 FsblHookBeforeHandoff(void)

but it doesn't boot ( maybe my mistake I have to retry ).


Thanks in advance.







Edited by Michele

Share this post

Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Hi @Michele,



Unfortunately, I am not very experienced with embedded linux. I have reached out to a more experienced embedded linux engineer to look at this forum thread.





Share this post

Link to post
Share on other sites
  • 0


finally I have solved in this way:

- I have modified the system-top-dts adding:

    usb_phy0: phy0 {
        #phy-cells = <0>;
        compatible = "usb-nop-xceiv";
        reset-gpios = <&gpio0 46 1>;

- I have also modified the pcw.dtsi in this way:

&usb0 {
    status = "okay";
    dr_mode = "host";
    usb-phy = <&usb_phy0>;

Attached the result.

My usb key now is correctly detected and also the two partitions on it has been corectly detected into /dev.

Thx again I hope this can be useful for others that have same problem.




Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now