Beispiel #1
0
static unsigned long clk_factor_recalc_rate(struct clk_hw *hw,
		unsigned long parent_rate)
{
	struct clk_fixed_factor *fix = to_clk_fixed_factor(hw);

	return parent_rate * fix->mult / fix->div;
}
Beispiel #2
0
void clk_hw_unregister_fixed_factor(struct clk_hw *hw)
{
	struct clk_fixed_factor *fix;

	fix = to_clk_fixed_factor(hw);

	clk_hw_unregister(hw);
	kfree(fix);
}
Beispiel #3
0
static unsigned long clk_factor_recalc_rate(struct clk_hw *hw,
		unsigned long parent_rate)
{
	struct clk_fixed_factor *fix = to_clk_fixed_factor(hw);
	unsigned long long int rate;

	rate = (unsigned long long int)parent_rate * fix->mult;
	do_div(rate, fix->div);
	return (unsigned long)rate;
}
Beispiel #4
0
void clk_unregister_fixed_factor(struct clk *clk)
{
	struct clk_hw *hw;

	hw = __clk_get_hw(clk);
	if (!hw)
		return;

	clk_unregister(clk);
	kfree(to_clk_fixed_factor(hw));
}
Beispiel #5
0
static long clk_factor_round_rate(struct clk_hw *hw, unsigned long rate,
				unsigned long *prate)
{
	struct clk_fixed_factor *fix = to_clk_fixed_factor(hw);

	if (clk_hw_get_flags(hw) & CLK_SET_RATE_PARENT) {
		unsigned long best_parent;

		best_parent = (rate / fix->mult) * fix->div;
		*prate = clk_hw_round_rate(clk_hw_get_parent(hw), best_parent);
	}

	return (*prate / fix->div) * fix->mult;
}
// ARM10C 20150124
// &(kmem_cache#30-oX (sclk_hsic_12m))->hw, 24000000
static unsigned long clk_factor_recalc_rate(struct clk_hw *hw,
		unsigned long parent_rate)
{
	// hw: &(kmem_cache#30-oX (sclk_hsic_12m))->hw,
	// to_clk_fixed_factor(&(kmem_cache#30-oX (sclk_hsic_12m))->hw): kmem_cache#30-oX (sclk_hsic_12m)
	struct clk_fixed_factor *fix = to_clk_fixed_factor(hw);
	// fix: kmem_cache#30-oX (sclk_hsic_12m)

	unsigned long long int rate;

	// parent_rate: 24000000,
	// fix->mult: (kmem_cache#30-oX (sclk_hsic_12m))->mult: 1
	rate = (unsigned long long int)parent_rate * fix->mult;
	// rate: 24000000,

	// rate: 24000000, fix->div: (kmem_cache#30-oX (sclk_hsic_12m))->div: 2
	do_div(rate, fix->div);
	// rate: 12000000

	// rate: 12000000
	return (unsigned long)rate;
	// return 12000000
}