• Yoshihiro Shimoda's avatar
    phy: renesas: rcar-gen3-usb2: Disable clearing VBUS in over-current · 4fb95f29
    Yoshihiro Shimoda authored
    commit e6839c31 upstream.
    
    The hardware manual should be revised, but the initial value of
    VBCTRL.OCCLREN is set to 1 actually. If the bit is set, the hardware
    clears VBCTRL.VBOUT and ADPCTRL.DRVVBUS registers automatically
    when the hardware detects over-current signal from a USB power switch.
    However, since the hardware doesn't have any registers which
    indicates over-current, the driver cannot handle it at all. So, if
    "is_otg_channel" hardware detects over-current, since ADPCTRL.DRVVBUS
    register is cleared automatically, the channel cannot be used after
    that.
    
    To resolve this behavior, this patch sets the VBCTRL.OCCLREN to 0
    to keep ADPCTRL.DRVVBUS even if the "is_otg_channel" hardware
    detects over-current. (We assume a USB power switch itself protects
    over-current and turns the VBUS off.)
    
    This patch is inspired by a BSP patch from Kazuya Mizuguchi.
    
    Fixes: 1114e2d3 ("phy: rcar-gen3-usb2: change the mode to OTG on the combined channel")
    Cc: <stable@vger.kernel.org> # v4.5+
    Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
    Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    4fb95f29
phy-rcar-gen3-usb2.c 13.7 KB