Thread (61 messages) 61 messages, 12 authors, 2011-12-06

[PATCH v3 4/5] clk: basic gateable and fixed-rate clks

From: Turquette, Mike <hidden>
Date: 2011-11-27 06:04:10
Also in: linux-omap, lkml

On Sat, Nov 26, 2011 at 5:48 AM, Shawn Guo [off-list ref] wrote:
On Mon, Nov 21, 2011 at 05:40:46PM -0800, Mike Turquette wrote:
quoted
Many platforms support simple gateable clks and fixed-rate clks that
should not be re-implemented by every platform.

This patch introduces a gateable clk with a common programming model of
gate control via a write of 1 bit to a register. ?Both set-to-enable and
clear-to-enable are supported.

Also introduced is a fixed-rate clk which has no reprogrammable aspects.

The purpose of both types of clks is documented in drivers/clk/basic.c.
What I have seen is drivers/clk/clk-basic.c.
Will fix in v4.
quoted
+int clk_register_gate(struct device *dev, const char *name, unsigned long flags,
+ ? ? ? ? ? ? struct clk *fixed_parent, void __iomem *reg, u8 bit_idx,
+ ? ? ? ? ? ? int set_to_enable)
+{
+ ? ? struct clk_hw_gate *gclk;
+ ? ? struct clk *clk;
+
+ ? ? gclk = kmalloc(sizeof(struct clk_hw_gate), GFP_KERNEL);
+
+ ? ? if (!gclk) {
+ ? ? ? ? ? ? pr_err("%s: could not allocate gated clk\n", __func__);
+ ? ? ? ? ? ? return -ENOMEM;
+ ? ? }
+
+ ? ? clk = &gclk->clk;
+
+ ? ? /* struct clk_hw_gate assignments */
+ ? ? gclk->fixed_parent = fixed_parent;
+ ? ? gclk->reg = reg;
+ ? ? gclk->bit_idx = bit_idx;
+
+ ? ? /* struct clk assignments */
+ ? ? clk->name = name;
+ ? ? clk->flags = flags;
+
+ ? ? if (set_to_enable)
+ ? ? ? ? ? ? clk->ops = &clk_hw_gate_set_enable_ops;
+ ? ? else
+ ? ? ? ? ? ? clk->ops = &clk_hw_gate_set_disable_ops;
+
+ ? ? clk_init(NULL, clk);
+
+ ? ? return 0;
The device tree support needs to get this 'struct clk *', so we may
want to have all these registering functions return the 'clk'.
Thanks for the input.  Truthfully I'm very DT-ignorant so I'm happy to
reshape any APIs for that topic.  Hope to fix that soon.

Thanks for reviewing,
Mike
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help