diff options
Diffstat (limited to 'drivers/sh/clk/core.c')
| -rw-r--r-- | drivers/sh/clk/core.c | 107 | 
1 files changed, 20 insertions, 87 deletions
diff --git a/drivers/sh/clk/core.c b/drivers/sh/clk/core.c index dc8d022c07a..db257a35e71 100644 --- a/drivers/sh/clk/core.c +++ b/drivers/sh/clk/core.c @@ -25,7 +25,6 @@  #include <linux/seq_file.h>  #include <linux/err.h>  #include <linux/io.h> -#include <linux/debugfs.h>  #include <linux/cpufreq.h>  #include <linux/clk.h>  #include <linux/sh_clk.h> @@ -173,6 +172,26 @@ long clk_rate_div_range_round(struct clk *clk, unsigned int div_min,  	return clk_rate_round_helper(&div_range_round);  } +static long clk_rate_mult_range_iter(unsigned int pos, +				      struct clk_rate_round_data *rounder) +{ +	return clk_get_rate(rounder->arg) * pos; +} + +long clk_rate_mult_range_round(struct clk *clk, unsigned int mult_min, +			       unsigned int mult_max, unsigned long rate) +{ +	struct clk_rate_round_data mult_range_round = { +		.min	= mult_min, +		.max	= mult_max, +		.func	= clk_rate_mult_range_iter, +		.arg	= clk_get_parent(clk), +		.rate	= rate, +	}; + +	return clk_rate_round_helper(&mult_range_round); +} +  int clk_rate_table_find(struct clk *clk,  			struct cpufreq_frequency_table *freq_table,  			unsigned long rate) @@ -205,9 +224,6 @@ int clk_reparent(struct clk *child, struct clk *parent)  		list_add(&child->sibling, &parent->children);  	child->parent = parent; -	/* now do the debugfs renaming to reattach the child -	   to the proper parent */ -  	return 0;  } @@ -665,89 +681,6 @@ static int __init clk_syscore_init(void)  subsys_initcall(clk_syscore_init);  #endif -/* - *	debugfs support to trace clock tree hierarchy and attributes - */ -static struct dentry *clk_debugfs_root; - -static int clk_debugfs_register_one(struct clk *c) -{ -	int err; -	struct dentry *d; -	struct clk *pa = c->parent; -	char s[255]; -	char *p = s; - -	p += sprintf(p, "%p", c); -	d = debugfs_create_dir(s, pa ? pa->dentry : clk_debugfs_root); -	if (!d) -		return -ENOMEM; -	c->dentry = d; - -	d = debugfs_create_u8("usecount", S_IRUGO, c->dentry, (u8 *)&c->usecount); -	if (!d) { -		err = -ENOMEM; -		goto err_out; -	} -	d = debugfs_create_u32("rate", S_IRUGO, c->dentry, (u32 *)&c->rate); -	if (!d) { -		err = -ENOMEM; -		goto err_out; -	} -	d = debugfs_create_x32("flags", S_IRUGO, c->dentry, (u32 *)&c->flags); -	if (!d) { -		err = -ENOMEM; -		goto err_out; -	} -	return 0; - -err_out: -	debugfs_remove_recursive(c->dentry); -	return err; -} - -static int clk_debugfs_register(struct clk *c) -{ -	int err; -	struct clk *pa = c->parent; - -	if (pa && !pa->dentry) { -		err = clk_debugfs_register(pa); -		if (err) -			return err; -	} - -	if (!c->dentry) { -		err = clk_debugfs_register_one(c); -		if (err) -			return err; -	} -	return 0; -} - -static int __init clk_debugfs_init(void) -{ -	struct clk *c; -	struct dentry *d; -	int err; - -	d = debugfs_create_dir("clock", NULL); -	if (!d) -		return -ENOMEM; -	clk_debugfs_root = d; - -	list_for_each_entry(c, &clock_list, node) { -		err = clk_debugfs_register(c); -		if (err) -			goto err_out; -	} -	return 0; -err_out: -	debugfs_remove_recursive(clk_debugfs_root); -	return err; -} -late_initcall(clk_debugfs_init); -  static int __init clk_late_init(void)  {  	unsigned long flags;  |