On 15 May 2013 14:03, Fabio Baltieri <fabio.baltieri@xxxxxxxxxx> wrote: > From: Mian Yousaf Kaukab <mian.yousaf.kaukab@xxxxxxxxxxxxxx> > > Add common clock support code for the ab8500-usb phy driver. > > Acked-by: Linus Walleij <linus.walleij@xxxxxxxxxx> > Acked-by: Maxime Coquelin <maxime.coquelin@xxxxxx> > Signed-off-by: Mian Yousaf Kaukab <mian.yousaf.kaukab@xxxxxxxxxxxxxx> > Signed-off-by: Fabio Baltieri <fabio.baltieri@xxxxxxxxxx> > --- > drivers/usb/phy/phy-ab8500-usb.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/usb/phy/phy-ab8500-usb.c b/drivers/usb/phy/phy-ab8500-usb.c > index b043faa..cc0d7e5 100644 > --- a/drivers/usb/phy/phy-ab8500-usb.c > +++ b/drivers/usb/phy/phy-ab8500-usb.c > @@ -29,6 +29,8 @@ > #include <linux/notifier.h> > #include <linux/interrupt.h> > #include <linux/delay.h> > +#include <linux/clk.h> > +#include <linux/err.h> > #include <linux/mfd/abx500.h> > #include <linux/mfd/abx500/ab8500.h> > #include <linux/usb/musb-ux500.h> > @@ -126,6 +128,7 @@ struct ab8500_usb { > unsigned vbus_draw; > struct work_struct phy_dis_work; > enum ab8500_usb_mode mode; > + struct clk *sysclk; > struct regulator *v_ape; > struct regulator *v_musb; > struct regulator *v_ulpi; > @@ -252,6 +255,9 @@ static void ab8500_usb_phy_enable(struct ab8500_usb *ab, bool sel_host) > if (IS_ERR(ab->pinctrl)) > dev_err(ab->dev, "could not get/set default pinstate\n"); > > + if (clk_prepare_enable(ab->sysclk)) > + dev_err(ab->dev, "can't prepare/enable clock\n"); > + > ab8500_usb_regulator_enable(ab); > > abx500_mask_and_set_register_interruptible(ab->dev, > @@ -274,6 +280,8 @@ static void ab8500_usb_phy_disable(struct ab8500_usb *ab, bool sel_host) > /* Needed to disable the phy.*/ > ab8500_usb_wd_workaround(ab); > > + clk_disable_unprepare(ab->sysclk); > + > ab8500_usb_regulator_disable(ab); > > if (!IS_ERR(ab->pinctrl)) { > @@ -784,6 +792,12 @@ static int ab8500_usb_probe(struct platform_device *pdev) > if (err) > return err; > > + ab->sysclk = devm_clk_get(ab->dev, "sysclk"); > + if (IS_ERR(ab->sysclk)) { > + dev_err(ab->dev, "Could not get sysclk.\n"); > + return PTR_ERR(ab->sysclk); > + } > + > err = ab8500_usb_irq_setup(pdev, ab); > if (err < 0) > return err; > -- > 1.8.2 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ Acked-by: Ulf Hansson <ulf.hansson@xxxxxxxxxx> -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html