Thread (9 messages) 9 messages, 3 authors, 2021-07-19

Re: [PATCH 1/4] phy: rockchip: add rockchip usb3 innosilicon phy driver

From: Peter Geis <hidden>
Date: 2021-07-19 23:21:40
Also in: linux-arm-kernel, linux-rockchip

On Mon, Jul 19, 2021 at 10:29 AM Alex Bee [off-list ref] wrote:
Hi Peter,

thanks for working on this (I hope to have picked the latest version of
your series).

It's pretty obvious that the quirky innosilicon phy Rockchip decided for
in RK3328 needs a additional glue layer. Even if this version isn't
perfect yet (usb3 devices "sometimes" do net get detected if detached
and attached again) - it makes thing *a lot* better than it is now (IIRC
its about the same in vendor tree)
Yes, it certainly is broken.
So: are you going to rebase this on current upstream?
Honestly I hadn't planned on it, mostly because my board started
exhibiting stability issues.
This series had been tagged as an RFC as I was hoping to resolve the
issues with it.
Unfortunately either the documentation provided was insufficient to
fix the problem, or the hardware doesn't behave as the documentation
suggests.
Also the way we have to tie into the usb core makes me really uncomfortable.

Perhaps once the rk3566 is in good shape I can poke at this again.
There's a number of other issues with older boards that have come to
light that need attention.
Regards,

Alex

Am 16.11.20 um 16:17 schrieb Peter Geis:
quoted
The innosilicon based usb3 phy used in rockchip devices such as the rk3328 is bugged, requiring special handling.
The following erata have been observed:
  - usb3 device disconnect events are not detected by the controller
  - usb2 hubs with no devices attached do not trigger disconnect events when removed
  - interrupts are not reliable

To work around these issue we implement polling of the usb2 and usb3 status.
On usb3 disconnection we reset the usb3 phy which triggers the disconnect event.
On usb2 disconnection we have to force reset the whole controller.
This requires a handoff to a special dwc3 device driver.

This has been tested on the rk3328-roc-cc board with the following devices:
  - usb2 only device
  - usb3 only device
  - usb2 only hub without devices
  - usb3 hub without devices
  - usb2 hub with devices
  - usb3 hub with devices

Signed-off-by: Peter Geis <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help