Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e9931b5d authored by Vitaly Wool's avatar Vitaly Wool Committed by Russell King
Browse files

[ARM] 3622/1: pnx4008: remove clk_use/clk_unuse



Patch from Vitaly Wool

clk_use/clk_unuse functions are no longer needed, so removing those from arch/arm/mach-pnx4008/clock.c.
Also, the order of functions is rearranged a bit, to avoid forward declarations.

Signed-off-by: default avatarVitaly Wool <vwool@ru.mvista.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 1a6be26d
Loading
Loading
Loading
Loading
+51 −78
Original line number Diff line number Diff line
@@ -767,6 +767,54 @@ static struct clk *onchip_clks[] = {
	&uart6_ck,
};

static int local_clk_enable(struct clk *clk)
{
	int ret = 0;

	if (!(clk->flags & FIXED_RATE) && !clk->rate && clk->set_rate
	    && clk->user_rate)
		ret = clk->set_rate(clk, clk->user_rate);
	return ret;
}

static void local_clk_disable(struct clk *clk)
{
	if (!(clk->flags & FIXED_RATE) && clk->rate && clk->set_rate)
		clk->set_rate(clk, 0);
}

static void local_clk_unuse(struct clk *clk)
{
	if (clk->usecount > 0 && !(--clk->usecount)) {
		local_clk_disable(clk);
		if (clk->parent)
			local_clk_unuse(clk->parent);
	}
}

static int local_clk_use(struct clk *clk)
{
	int ret = 0;
	if (clk->usecount++ == 0) {
		if (clk->parent)
			ret = local_clk_use(clk->parent);

		if (ret != 0) {
			clk->usecount--;
			goto out;
		}

		ret = local_clk_enable(clk);

		if (ret != 0 && clk->parent) {
			local_clk_unuse(clk->parent);
			clk->usecount--;
		}
	}
out:
	return ret;
}

static int local_set_rate(struct clk *clk, u32 rate)
{
	int ret = -EINVAL;
@@ -847,28 +895,12 @@ unsigned long clk_get_rate(struct clk *clk)
}
EXPORT_SYMBOL(clk_get_rate);

static int local_clk_enable(struct clk *clk)
{
	int ret = 0;

	if (!(clk->flags & FIXED_RATE) && !clk->rate && clk->set_rate
	    && clk->user_rate)
		ret = clk->set_rate(clk, clk->user_rate);
	return ret;
}

static void local_clk_disable(struct clk *clk)
{
	if (!(clk->flags & FIXED_RATE) && clk->rate && clk->set_rate)
		clk->set_rate(clk, 0);
}

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

	clock_lock();
	ret = local_clk_enable(clk);
	ret = local_clk_use(clk);
	clock_unlock();
	return ret;
}
@@ -877,71 +909,12 @@ EXPORT_SYMBOL(clk_enable);

void clk_disable(struct clk *clk)
{
	clock_lock();
	local_clk_disable(clk);
	clock_unlock();
}

EXPORT_SYMBOL(clk_disable);

static void local_clk_unuse(struct clk *clk)
{
	if (clk->usecount > 0 && !(--clk->usecount)) {
		local_clk_disable(clk);
		if (clk->parent)
			local_clk_unuse(clk->parent);
	}
}

static int local_clk_use(struct clk *clk)
{
	int ret = 0;
	if (clk->usecount++ == 0) {
		if (clk->parent)
			ret = local_clk_use(clk->parent);

		if (ret != 0) {
			clk->usecount--;
			goto out;
		}

		ret = local_clk_enable(clk);

		if (ret != 0 && clk->parent) {
			local_clk_unuse(clk->parent);
			clk->usecount--;
		}
	}
out:
	return ret;
}

/* The main purpose of clk_use ans clk_unuse functions
 * is to control switching 13MHz oscillator and PLL1 (13'MHz),
 * so that they are disabled whenever none of PLL2-5 is using them.
 * Although in theory these functions should work with any clock,
 * please use them only on PLL2 - PLL5 to avoid confusion.
 */
int clk_use(struct clk *clk)
{
	int ret = 0;

	clock_lock();
	ret = local_clk_use(clk);
	clock_unlock();
	return ret;
}
EXPORT_SYMBOL(clk_use);

void clk_unuse(struct clk *clk)
{

	clock_lock();
	local_clk_unuse(clk);
	clock_unlock();
}

EXPORT_SYMBOL(clk_unuse);
EXPORT_SYMBOL(clk_disable);

long clk_round_rate(struct clk *clk, unsigned long rate)
{
@@ -995,7 +968,7 @@ static int __init clk_init(void)
			__FUNCTION__, (*clkp)->name, (*clkp)->rate);
	}

	clk_use(&ck_pll4);
	local_clk_use(&ck_pll4);

	/* if ck_13MHz is not used, disable it. */
	if (ck_13MHz.usecount == 0)