On 2011-12-13 14:56, Paul Walmsley wrote:
On Tue, 13 Dec 2011, Gary Thomas wrote:
What's the best way to enable sys_clkout2 (DM3730, latest kernel)?
I've managed to set it up properly and it runs in U-Boot, but the
kernel is disabling it. It's a bit of a tangle trying to figure out
not only what piece of code is undoing my work, but how to get the
clock to keep running.
It's probably getting disabled by omap2_clk_disable_unused() in
mach-omap2/clock.c, which runs at the end of kernel init.
I want the clkout_cntrl register set to 0x8a,
so any guidance on how to make this happen would be greatly appreciated.
I presume you have some external device that relies on sys_clkout2 for its
clock input?
Precisely. Do I need to do anything special to control how the clock is
configured, e.g. div & src settings?
If the device has a Linux driver associated with it, the clean way to fix
it would be to add a clkdev line for it into mach-omap2/clock3xxx_data.c.
Something like
CLK("devname", "fck", &sys_clkout2, CK_3XXX),
where "devname" is the name of your device. Then add some code into that
driver to enable and disable the clock as needed. Something like
...
struct clk *c;
c = clk_get(dev_name(dev), "fck");
WARN(IS_ERR(c), "cannot clk_get() device functional clock");
clk_enable(c);
...
and then clk_disable() it later in your driver when you don't need it.
If you don't have a driver, you can hack a quick one up that just deals
with the clock, and add it to your board file.
Or if you just want a dirty hack, you can probably get away with just
adding the ENABLE_ON_INIT flag to the sys_clkout2 .flags field in
mach-omap2/clock3xxx_data.c.
Thanks, I'll give this a try when I have eyes on the hardware (Wednesday)
--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------
--
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