* Tony Lindgren <tony@xxxxxxxxxxx> [080409 21:54]: > * Russell King - ARM Linux <linux@xxxxxxxxxxxxxxxx> [080409 21:22]: > > On Wed, Apr 09, 2008 at 08:57:13PM +0000, Tony Lindgren wrote: > > > Here's how it now looks: > > > > Not quite. The point I was trying to make is: > > > > > @@ -302,15 +288,17 @@ > > > int eth_cs; > > > unsigned long cs_mem_base; > > > unsigned int muxed, rate; > > > - struct clk *l3ck; > > > + struct clk *gpmc_fck; > > > > > > eth_cs = H4_SMC91X_CS; > > > > > > - l3ck = clk_get(NULL, "core_l3_ck"); > > > - if (IS_ERR(l3ck)) > > > - rate = 100000000; > > > - else > > > - rate = clk_get_rate(l3ck); > > > + gpmc_fck = clk_get(NULL, "gpmc_fck"); /* Always on ENABLE_ON_INIT */ > > > + if (IS_ERR(gpmc_fck)) { > > > + WARN_ON(1); > > > + return; > > > + } > > > + > > > > that there should be a call to clk_enable() here - if even if it's > > apparantly "always on". (If it's always enabled then the call won't > > do any harm anyway - it just serves to ensure that the API conditions > > are followed.) > > OK, I'll clk_enable() before clk_get_rate() and then clk_disable() to > make usecounts happy as rate is only needed for setting GPMC timings: > > @@ -302,15 +288,19 @@ > int eth_cs; > unsigned long cs_mem_base; > unsigned int muxed, rate; > - struct clk *l3ck; > + struct clk *gpmc_fck; > > eth_cs = H4_SMC91X_CS; > > - l3ck = clk_get(NULL, "core_l3_ck"); > - if (IS_ERR(l3ck)) > - rate = 100000000; > - else > - rate = clk_get_rate(l3ck); > + gpmc_fck = clk_get(NULL, "gpmc_fck"); /* Always on ENABLE_ON_INIT */ > + if (IS_ERR(gpmc_fck)) { > + WARN_ON(1); > + return; > + } > + > + clk_enable(gpmc_fck); > + rate = clk_get_rate(gpmc_fck); > + clk_disable(gpmc_fck); > > if (is_gpmc_muxed()) > muxed = 0x200; I made one more update to do clk_disable() and clk_put() at the end of the function.. Tony -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html