summaryrefslogtreecommitdiff
path: root/arch/arm/plat-mxc/clock.c
diff options
context:
space:
mode:
authorRanjani Vaidyanathan <ra5478@freescale.com>2010-09-27 15:52:45 -0500
committerAlan Tull <r80115@freescale.com>2010-09-30 15:44:39 -0500
commita30aecd7bc64d4813b842ccda2d665cc477f48cc (patch)
treeae18f31f6fad57edf81ae0d9ab3006a39f923a01 /arch/arm/plat-mxc/clock.c
parent4c6539f3161b66cdc2bb0d0ab917b2cd3c315cb9 (diff)
ENGR00132142: Add code to print system clocks information for 35 kernel.
Added support such that /proc/cpu/clocks prints the clock usage and frequency on 35 kernel. Signed-off-by: Ranjani Vaidyanathan <ra5478@freescale.com>
Diffstat (limited to 'arch/arm/plat-mxc/clock.c')
-rw-r--r--arch/arm/plat-mxc/clock.c69
1 files changed, 25 insertions, 44 deletions
diff --git a/arch/arm/plat-mxc/clock.c b/arch/arm/plat-mxc/clock.c
index f29a32052434..3dd6b9fb3209 100644
--- a/arch/arm/plat-mxc/clock.c
+++ b/arch/arm/plat-mxc/clock.c
@@ -366,11 +366,10 @@ struct clk *clk_get_parent(struct clk *clk)
}
EXPORT_SYMBOL(clk_get_parent);
-#ifndef CONFIG_COMMON_CLKDEV
/*
* Add a new clock to the clock tree.
*/
-int clk_register(struct clk *clk)
+int clk_register(struct mxc_clk *clk)
{
if (clk == NULL || IS_ERR(clk))
return -EINVAL;
@@ -384,7 +383,7 @@ int clk_register(struct clk *clk)
EXPORT_SYMBOL(clk_register);
/* Remove a clock from the clock tree */
-void clk_unregister(struct clk *clk)
+void clk_unregister(struct mxc_clk *clk)
{
if (clk == NULL || IS_ERR(clk))
return;
@@ -402,8 +401,8 @@ static void *mxc_proc_clocks_seq_start(struct seq_file *file, loff_t *index)
unsigned int i;
unsigned int name_length;
unsigned int longest_length = 0;
- struct clk *current_clock = 0;
- struct clk *clock;
+ struct mxc_clk *current_clock = 0;
+ struct mxc_clk *clock;
/* Examine the clock list. */
@@ -434,7 +433,7 @@ static void *mxc_proc_clocks_seq_start(struct seq_file *file, loff_t *index)
static void *mxc_proc_clocks_seq_next(struct seq_file *file, void *data,
loff_t *index)
{
- struct clk *current_clock = (struct clk *) data;
+ struct mxc_clk *current_clock = (struct clk *) data;
/* Check for nonsense. */
@@ -466,60 +465,43 @@ static void mxc_proc_clocks_seq_stop(struct seq_file *file, void *data)
static int mxc_proc_clocks_seq_show(struct seq_file *file, void *data)
{
int result;
- struct clk *clock = (struct clk *) data;
- struct clk *parent = clock->parent;
+ struct mxc_clk *clock = (struct mxc_clk *) data;
+ struct clk *parent = clock->reg_clk->parent;
unsigned int longest_length = (unsigned int) file->private;
unsigned long range_divisor;
const char *range_units;
+ int rate = clk_get_rate(clock->reg_clk);
- if (clock->rate >= 1000000) {
+ if (rate >= 1000000) {
range_divisor = 1000000;
range_units = "MHz";
- } else if (clock->rate >= 1000) {
+ } else if (rate >= 1000) {
range_divisor = 1000;
range_units = "KHz";
} else {
range_divisor = 1;
range_units = "Hz";
}
-
- if (parent)
- result = seq_printf(file,
- "%s-%-d%*s %s-%-d%*s %c%c%c%c%c%c %3d",
- clock->name,
- clock->id,
- longest_length - strlen(clock->name), "",
- parent->name,
- parent->id,
- longest_length - strlen(parent->name), "",
- (clock->flags & RATE_PROPAGATES) ? 'P' : '_',
- (clock->flags & ALWAYS_ENABLED) ? 'A' : '_',
- (clock->flags & RATE_FIXED) ? 'F' : '_',
- (clock->flags & CPU_FREQ_TRIG_UPDATE) ? 'T' : '_',
- (clock->flags & AHB_HIGH_SET_POINT) ? 'H' : '_',
- (clock->flags & AHB_MED_SET_POINT) ? 'M' : '_',
- clock->usecount);
- else
- result = seq_printf(file,
- "%s-%-d%*s %*s %c%c%c%c%c%c %3d",
- clock->name,
- clock->id,
- longest_length - strlen(clock->name), "",
- longest_length + 2, "",
- (clock->flags & RATE_PROPAGATES) ? 'P' : '_',
- (clock->flags & ALWAYS_ENABLED) ? 'A' : '_',
- (clock->flags & RATE_FIXED) ? 'F' : '_',
- (clock->flags & CPU_FREQ_TRIG_UPDATE) ? 'T' : '_',
- (clock->flags & AHB_HIGH_SET_POINT) ? 'H' : '_',
- (clock->flags & AHB_MED_SET_POINT) ? 'M' : '_',
- clock->usecount);
+ result = seq_printf(file,
+ "%s-%-d%*s %*s %c%c%c%c%c%c %3d",
+ clock->name,
+ clock->reg_clk->id,
+ longest_length - strlen(clock->name), "",
+ longest_length + 2, "",
+ (clock->reg_clk->flags & RATE_PROPAGATES) ? 'P' : '_',
+ (clock->reg_clk->flags & ALWAYS_ENABLED) ? 'A' : '_',
+ (clock->reg_clk->flags & RATE_FIXED) ? 'F' : '_',
+ (clock->reg_clk->flags & CPU_FREQ_TRIG_UPDATE) ? 'T' : '_',
+ (clock->reg_clk->flags & AHB_HIGH_SET_POINT) ? 'H' : '_',
+ (clock->reg_clk->flags & AHB_MED_SET_POINT) ? 'M' : '_',
+ clock->reg_clk->usecount);
if (result)
return result;
result = seq_printf(file, " %10lu (%lu%s)\n",
- clock->rate,
- clock->rate / range_divisor, range_units);
+ rate,
+ rate / range_divisor, range_units);
return result;
@@ -559,7 +541,6 @@ static int __init mxc_setup_proc_entry(void)
late_initcall(mxc_setup_proc_entry);
#endif /* CONFIG_PROC_FS */
-#endif
/*
* Get the resulting clock rate from a PLL register value and the input