[PATCH 07/12] net: flexcan: convert to clk_prepare/clk_unprepare

Shawn Guo shawn.guo at freescale.com
Tue Dec 20 09:23:14 EST 2011


On Tue, Dec 20, 2011 at 02:48:48PM +0100, Marek Vasut wrote:
> > The patch converts flexcan driver to clk_prepare/clk_unprepare by
> > using helper functions clk_prepare_enable/clk_disable_unprepare.
> > 
> > Signed-off-by: Shawn Guo <shawn.guo at linaro.org>
> > Cc: Marc Kleine-Budde <mkl at pengutronix.de>
> > Cc: David S. Miller <davem at davemloft.net>
> > ---
> >  drivers/net/can/flexcan.c |   10 +++++-----
> >  1 files changed, 5 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
> > index e023379..fdd0f3f 100644
> > --- a/drivers/net/can/flexcan.c
> > +++ b/drivers/net/can/flexcan.c
> > @@ -802,7 +802,7 @@ static int flexcan_open(struct net_device *dev)
> >  	struct flexcan_priv *priv = netdev_priv(dev);
> >  	int err;
> > 
> > -	clk_enable(priv->clk);
> > +	clk_prepare_enable(priv->clk);
> > 
> >  	err = open_candev(dev);
> >  	if (err)
> > @@ -824,7 +824,7 @@ static int flexcan_open(struct net_device *dev)
> >   out_close:
> >  	close_candev(dev);
> >   out:
> > -	clk_disable(priv->clk);
> > +	clk_disable_unprepare(priv->clk);
> > 
> >  	return err;
> >  }
> > @@ -838,7 +838,7 @@ static int flexcan_close(struct net_device *dev)
> >  	flexcan_chip_stop(dev);
> > 
> >  	free_irq(dev->irq, dev);
> > -	clk_disable(priv->clk);
> > +	clk_disable_unprepare(priv->clk);
> > 
> >  	close_candev(dev);
> > 
> > @@ -877,7 +877,7 @@ static int __devinit register_flexcandev(struct
> > net_device *dev) struct flexcan_regs __iomem *regs = priv->base;
> >  	u32 reg, err;
> > 
> > -	clk_enable(priv->clk);
> > +	clk_prepare_enable(priv->clk);
> > 
> >  	/* select "bus clock", chip must be disabled */
> >  	flexcan_chip_disable(priv);
> > @@ -911,7 +911,7 @@ static int __devinit register_flexcandev(struct
> > net_device *dev) out:
> >  	/* disable core and turn off clocks */
> >  	flexcan_chip_disable(priv);
> > -	clk_disable(priv->clk);
> > +	clk_disable_unprepare(priv->clk);
> > 
> >  	return err;
> >  }
> 
> Are you sure close()/open() ops are not called from atomic?
> 
That's my understanding.  But I Cc-ed Marc and David for help :)

-- 
Regards,
Shawn




More information about the linux-arm-kernel mailing list