WP7607 OTG as host

Hi

Were thinking of using the WP76XX series for a new product range we will start working on shortly. However, we have a concern that we need to address before we can start estimating the efforts on the project. We have the need for the device to be able to be connected to a PC for configuration but at the same time we need to have at least two USB host ports out of the box for connecting peripheral. As the space is limited the obvious solution is to only have two USB ports where one is the OTG port which then can be used for both configuration (USB slave to a PC) and peripheral (USB host to the peripheral). I have therefore played around with using the OTG port as a USB host but cannot seem to make it work fully as expected.

For the tests I have added a jumper wire between pin 3 of CN804 (power input selection jumper where the jumper is set to take power from console usb port) to pin 2 of CN307 for 5V output on OTG port.

What I see is:

  • When nothing (or the PC) is connected to the OTG port at boot the port starts up in slave mode and it doesn’t seem to be willing to switch to host functionality when a slave device is connected, even though it clearly detects it, as can be seen from dmesg output:
[   62.370798] PM: early resume of devices complete after 4.402 msecs
[   62.374541] msm_hsic_host 7c00000.hsic_host: HSIC-USB exited from low power mode
[   62.550966] usb 1-1: reset high-speed USB device number 2 using msm_hsic_host
[   63.000987] usb 1-1.1: reset full-speed USB device number 3 using msm_hsic_host
[   63.116429] PM: resume of devices complete after 745.594 msecs
[   63.122364] PM: Finishing wakeup.
[   63.122385] Restarting tasks ... done.
[   63.135805] sierra_pm_resume
[   63.136933] PM: suspend exit 1980-01-06 23:58:06.383354894 UTC
  • When usb device is connected to the port during boot the system recognises it and I can see the device in lsusb -t. However when I disconnect and try to reconnect it is seems it is not able to do so. Same behaviour as if the slave device had not been connected at boot.

Do anyone know of a way that I can make the system able to use the port as host port even though nothing were connected at boot. We can make the hardware in a way that we can detect that something has been connected and therefore we can add scripts to be executed at such an event so I don’t mind if we need to do something each time something has been connected, but having to reboot each time something is connected to the port is a no-go.

Thanks in advance

Kind regards

Andreas