• Yoshihiro Shimoda's avatar
    usb: gadget: udc: renesas_usb3: Add register of usb role switch · 39facfa0
    Yoshihiro Shimoda authored
    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: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Reviewed-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: default avatarFelipe Balbi <felipe.balbi@linux.intel.com>
    39facfa0
renesas_usb3.c 71.2 KB