Skip to content

Commit

Permalink
usb: phy: nop: Handle power supply regulator for the PHY
Browse files Browse the repository at this point in the history
We use "vcc" as the supply name for the PHY's power supply.
The power supply will be enabled during .init() and disabled
during .shutdown()

Signed-off-by: Roger Quadros <rogerq@ti.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
  • Loading branch information
Roger Quadros authored and Felipe Balbi committed Mar 18, 2013
1 parent 2319fb8 commit 58f735f
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions drivers/usb/otg/nop-usb-xceiv.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,13 @@
#include <linux/usb/nop-usb-xceiv.h>
#include <linux/slab.h>
#include <linux/clk.h>
#include <linux/regulator/consumer.h>

struct nop_usb_xceiv {
struct usb_phy phy;
struct device *dev;
struct clk *clk;
struct regulator *vcc;
};

static struct platform_device *pd;
Expand Down Expand Up @@ -70,6 +72,11 @@ static int nop_init(struct usb_phy *phy)
{
struct nop_usb_xceiv *nop = dev_get_drvdata(phy->dev);

if (!IS_ERR(nop->vcc)) {
if (regulator_enable(nop->vcc))
dev_err(phy->dev, "Failed to enable power\n");
}

if (!IS_ERR(nop->clk))
clk_enable(nop->clk);

Expand All @@ -82,6 +89,11 @@ static void nop_shutdown(struct usb_phy *phy)

if (!IS_ERR(nop->clk))
clk_disable(nop->clk);

if (!IS_ERR(nop->vcc)) {
if (regulator_disable(nop->vcc))
dev_err(phy->dev, "Failed to disable power\n");
}
}

static int nop_set_peripheral(struct usb_otg *otg, struct usb_gadget *gadget)
Expand Down Expand Up @@ -154,6 +166,12 @@ static int nop_usb_xceiv_probe(struct platform_device *pdev)
}
}

nop->vcc = devm_regulator_get(&pdev->dev, "vcc");
if (IS_ERR(nop->vcc)) {
dev_dbg(&pdev->dev, "Error getting vcc regulator: %ld\n",
PTR_ERR(nop->vcc));
}

nop->dev = &pdev->dev;
nop->phy.dev = nop->dev;
nop->phy.label = "nop-xceiv";
Expand Down

0 comments on commit 58f735f

Please sign in to comment.