02-03-2016 04:42 PM
I followe the wiki page and the forum postings to fix the usb for petalinux 2015.2 2015.2.1 but there have been changes since then, especially with the full adoption of the Linux 4.0 kernel.
The device tree has been modified since petalinux 2015.2, but its still not right, especially since one of the configuration field names has apparently changed. Here is what is presently in my device tree. Note that viewport has become view-port.
compatible = "ulpi-phy";
#phy-cells = <0>;
reg = <0xe0002000 0x1000>;
view-port = <0x170>;
usb-phy = <&usb_phy0>;
I believe, you still need to configure all of the recommended kernel modules into the build. And perform the command line module installs and configfs commands. But without the view-port device tree entry change, the ulpi driver never initializes properly.
07-29-2016 01:03 AM
Hi @madison_a, I use Petalinux 2015.4 the USB not work too.
The device tree has been modified the same as you write, but the USB not work yet. I think the kernel config may be error, could you show the right config file for me? Thanks.
08-02-2016 08:27 AM
This is what's in my notes. Not sure you need everything turned on. Depends upon how you want to use the USB port. I just want to plug in a keyboard and/or an Ethernet-fob. The use of * or m is the character Kconfig uses to indicate the module status. The lines I am putting in are not necessarily together or even the only items in that menu.
* support for Host-side USB
* EHCI HCD (USB 2.0) Support
* USB Mass Storage Support
* Chip Idea Highspeed Dual Role Controller
* Chip Idea host controller
USB Gadget Support
m USB Gadget Drivers
m USB Functions configurable through configfs
* Mass Storage RNDIS
(have side comment in my notes: "Essential")
* NOP USB Transceiver Driver
* Generic ULPI Transceiver Driver
My google searches for USB issues started having me go down this path of writing a script to modify the USB setup through configfs, which was not the problem. The device-tree entry gave the device driver a bad address to the USB register set. So, some of the above may be unnecessary, especially the configfs stuff. I'm terrible about making my notes exactly match what's on screen, so I apologize if you need to search through the menus to find the correct configuration item. Hope this helps.
08-04-2016 03:24 AM
Thank you help! But the USB still not work. The error message is:
ci_hdrc ci_hdrc.0: unable to init phy: -110
ci_hdrc: probe of ci_hdrc.0 failed with error -110
By read the code ,I know the error is read the USB phy id timeout by ULPI。But I don't why!
Looking forward to your help,Thanks!
My configfs like this:
<*> Support for Host-side USB
<*> OTG support
<*> EHCI HCD (USB 2.0) support
<*> USB Mass Storage support
<*> ChipIdea Highspeed Dual Role Controller
<*> ChipIdea host controller
<*> ChipIdea device controller
USB Physical Layer drivers --->
<*> NOP USB Transceiver Driver
<*> Generic ULPI Transceiver Driver
08-05-2016 01:41 AM
08-07-2016 07:28 PM
The problem is resolved, thanks.
The root of the problem is the Vivado generated *.hdf file is config error.
The kernel config and the dts file is correct.
12-19-2016 08:49 AM
I'd have to look again for the specifics, but the The HDF file drops some needed items about USB in wrong sections of the device-tree-blob files so when using the petalinux tools (--get-hw-description), the info about USB is in the wrong place and has to be moved.
THEN, if you run petalinux-config, it will remove some info from the device tree information.
I moved the needed USB into one of the device-tree files that petalinux-config doesn't touch...