[PATCH 19/33] ARM i.MX: prepare for common clock framework

Shawn Guo shawn.guo at linaro.org
Fri Apr 27 03:55:41 EDT 2012


On Fri, Apr 27, 2012 at 09:16:22AM +0200, Sascha Hauer wrote:
> On Fri, Apr 27, 2012 at 02:40:09PM +0800, Shawn Guo wrote:
> > On Wed, Apr 25, 2012 at 05:28:09PM +0200, Sascha Hauer wrote:
> > > - Add necessary #ifdefs for CONFIG_COMMON_CLOCK
> > > - Add a global spinlock to protect the CCM registers
> > > 
> > > Signed-off-by: Sascha Hauer <s.hauer at pengutronix.de>
> > > ---
> > > +
> > > +static inline struct clk *imx_clk_mux(const char *name, void __iomem *reg,
> > > +		u8 shift, u8 width, const char **parents, int num_parents)
> > > +{
> > > +	return clk_register_mux(NULL, name, parents, num_parents, 0, reg, shift,
> > 
> > I think the fourth parameter should be CLK_SET_RATE_PARENT too, as mux
> > could also likely be in a clk_set_rate propagation path, saying it has
> > a parent clk who has .round_rate and .set_rate operations.
> 
> Nope, we can't do this. When we do this every clock_set_rate on a leaf
> node will propagate up to the ipg, ahb, main_clk, plls and whatever is
> up there.

PLL does not have CLK_SET_RATE_PARENT set, right?

What's the problem with that propagation?  Isn't it designed so?  Now
on imx6q, 792MHz is a set point for cpu frequency, we have to propagate
up to pll's set_rate to get that frequency.  There is a mux in the
middle of the propagation path.  If we do not set CLK_SET_RATE_PARENT
for mux, how can we get this frequency?

Regards,
Shawn

> 
> I made the assumption that we can safely propagate up to the next mux
> but not further. It may turn out that this is to simple and needs
> adjustments, but generally adding a CLK_SET_RATE_PARENT to a mux won't
> work.
> 



More information about the linux-arm-kernel mailing list