On Wednesday 05 April 2017 07:36 PM, Sjoerd Simons wrote: > On rockchip devices vbus is supplied by a separate power supply, often > through a regulator. Add support for describing the the regulator in > device-tree following the same convention as several other usb phy's. > merged, thanks. -Kishon > Signed-off-by: Sjoerd Simons <sjoerd.simons@xxxxxxxxxxxxxxx> > --- > > .../devicetree/bindings/phy/rockchip-usb-phy.txt | 1 + > drivers/phy/phy-rockchip-usb.c | 19 +++++++++++++++++++ > 2 files changed, 20 insertions(+) > > diff --git a/Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt b/Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt > index 57dc388e2fa2..4ed569046daf 100644 > --- a/Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt > +++ b/Documentation/devicetree/bindings/phy/rockchip-usb-phy.txt > @@ -30,6 +30,7 @@ Optional Properties: > - reset-names: Only allow the following entries: > - phy-reset > - resets: Must contain an entry for each entry in reset-names. > +- vbus-supply: power-supply phandle for vbus power source > > Example: > > diff --git a/drivers/phy/phy-rockchip-usb.c b/drivers/phy/phy-rockchip-usb.c > index 734987fa0ad7..3378eeb7a562 100644 > --- a/drivers/phy/phy-rockchip-usb.c > +++ b/drivers/phy/phy-rockchip-usb.c > @@ -66,6 +66,7 @@ struct rockchip_usb_phy { > struct phy *phy; > bool uart_enabled; > struct reset_control *reset; > + struct regulator *vbus; > }; > > static int rockchip_usb_phy_power(struct rockchip_usb_phy *phy, > @@ -88,6 +89,9 @@ static void rockchip_usb_phy480m_disable(struct clk_hw *hw) > struct rockchip_usb_phy, > clk480m_hw); > > + if (phy->vbus) > + regulator_disable(phy->vbus); > + > /* Power down usb phy analog blocks by set siddq 1 */ > rockchip_usb_phy_power(phy, 1); > } > @@ -143,6 +147,14 @@ static int rockchip_usb_phy_power_on(struct phy *_phy) > if (phy->uart_enabled) > return -EBUSY; > > + if (phy->vbus) { > + int ret; > + > + ret = regulator_enable(phy->vbus); > + if (ret) > + return ret; > + } > + > return clk_prepare_enable(phy->clk480m); > } > > @@ -268,6 +280,13 @@ static int rockchip_usb_phy_init(struct rockchip_usb_phy_base *base, > } > phy_set_drvdata(rk_phy->phy, rk_phy); > > + rk_phy->vbus = devm_regulator_get_optional(&rk_phy->phy->dev, "vbus"); > + if (IS_ERR(rk_phy->vbus)) { > + if (PTR_ERR(rk_phy->vbus) == -EPROBE_DEFER) > + return PTR_ERR(rk_phy->vbus); > + rk_phy->vbus = NULL; > + } > + > /* > * When acting as uart-pipe, just keep clock on otherwise > * only power up usb phy when it use, so disable it when init > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html