Thread (126 messages) 126 messages, 18 authors, 2011-04-20

Re: Locking in the clk API, part 2: clk_prepare/clk_unprepare

From: Russell King - ARM Linux <hidden>
Date: 2011-02-04 13:21:26
Also in: linux-arm-kernel, lkml

On Fri, Feb 04, 2011 at 08:45:34PM +0800, Richard Zhao wrote:
quoted
= Implementation =

Basically:

struct clk {
	const struct clk_ops *ops
	int                  enable_count;
	spinlock_t           enable_lock;
	int                  prepare_count;
	struct mutex         prepare_lock;
};

int clk_enable(struct clk *clk)
{
	int ret = 0;

	spin_lock(&clk->enable_lock);
	if (!clk->enable_count)
		ret = clk->ops->enable(clk);

	if (!ret)
		clk->enable_count++;
	spin_unlock(&clk->enable_lock);

	return ret;
}
Why do we not call parent's clk_enable in this function? For flexible? How many
different cases is causing us to move the effert to platform clock driver?
You may notice that struct clk above doesn't have a parent.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help