diff --git a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c index 2708a0333e85..ec12f7d3ab27 100644 --- a/drivers/phy/rockchip/phy-rockchip-inno-usb2.c +++ b/drivers/phy/rockchip/phy-rockchip-inno-usb2.c @@ -122,6 +122,7 @@ struct rockchip_chg_det_reg { * @bvalid_det_en: vbus valid rise detection enable register. * @bvalid_det_st: vbus valid rise detection status register. * @bvalid_det_clr: vbus valid rise detection clear register. + * @bvalid_set: bvalid select and set to usb controller. * @bypass_dm_en: usb bypass uart DM enable register. * @bypass_sel: usb bypass uart select register. * @bypass_iomux: usb bypass uart GRF iomux register. @@ -152,6 +153,7 @@ struct rockchip_usb2phy_port_cfg { struct usb2phy_reg bvalid_det_en; struct usb2phy_reg bvalid_det_st; struct usb2phy_reg bvalid_det_clr; + struct usb2phy_reg bvalid_set; struct usb2phy_reg bypass_dm_en; struct usb2phy_reg bypass_sel; struct usb2phy_reg bypass_iomux; @@ -1730,6 +1732,10 @@ static int rockchip_usb2phy_otg_port_init(struct rockchip_usb2phy *rphy, rport->mode == USB_DR_MODE_UNKNOWN) goto out; + /* Select bvalid of usb phy as bvalid of usb controller */ + if (rport->port_cfg->bvalid_set.enable != 0) + property_enable(base, &rport->port_cfg->bvalid_set, false); + wake_lock_init(&rport->wakelock, WAKE_LOCK_SUSPEND, "rockchip_otg"); INIT_DELAYED_WORK(&rport->bypass_uart_work, rockchip_usb_bypass_uart_work);