On Fri, Jul 27, 2018 at 10:50:40AM +0900, Yoshihiro Shimoda wrote: > This patch adds role switch support for R-Car SoCs into the USB 3.0 > peripheral driver. Some R-Car SoCs (e.g. R-Car H3) have USB 3.0 > dual-role device controller which has the USB 3.0 xHCI host and > Renesas USB 3.0 peripheral. > > Unfortunately, the mode change register (DRD_CON) contains > the USB 3.0 peripheral controller side only. So, this renesas_usb3 > driver manages the DRD_CON now. However, in peripheral mode, the host > should stop. Also the host hardware needs to reinitialize its own > registers when the mode changes from peripheral to host mode. > Otherwise, the host cannot work correctly (e.g. detect a device > as high-speed). > > To achieve this reinitialization by a driver, this driver also > registers a role switch driver to manage the DRD_CON and get > a device pointer of usb 3.0 host from "companion" property of OF. > Then, when the usb role is changed, renesas_usb3_role_switch_set() > will attach/release the xhci-plat driver to reinitialize the host > hardware. > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx> > Reviewed-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> Reviewed-by: Simon Horman <horms+renesas@xxxxxxxxxxxx>