From 85acce4689d169ba7aa0abb877b8f4e7499155b6 Mon Sep 17 00:00:00 2001 From: Richard Woodruff Date: Thu, 17 Nov 2005 17:15:03 -0800 Subject: [PATCH] ARM: OMAP: omap clk tweak This fixes USB OMAP2 clock parents that Nishant pointed out they were off. It also adds in an information proc file for clocks. Signed-off-by: Richard Woodruff Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/clock.c | 2 +- arch/arm/mach-omap2/clock.h | 4 +-- arch/arm/plat-omap/clock.c | 62 +++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 3 deletions(-) diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c index aee5bdd7084..5b16880f836 100644 --- a/arch/arm/mach-omap2/clock.c +++ b/arch/arm/mach-omap2/clock.c @@ -651,7 +651,7 @@ static u32 omap2_get_clksel(u32 *div_sel, u32 *field_mask, case 13: /* dss2 */ mask = 0x1; break; case 25: /* usb */ - mask = 0xf; break; + mask = 0x7; break; } } diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h index 4aeab5591bd..f818f9dd9fe 100644 --- a/arch/arm/mach-omap2/clock.h +++ b/arch/arm/mach-omap2/clock.h @@ -859,7 +859,7 @@ static struct clk core_l3_ck = { /* Used for ick and fck, interconnect */ static struct clk usb_l4_ick = { /* FS-USB interface clock */ .name = "usb_l4_ick", - .parent = &core_ck, + .parent = &core_l3_ck, .flags = CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X | RATE_CKCTL | CM_CORE_SEL1 | DELAYED_APP | CONFIG_PARTICIPANT, @@ -1839,7 +1839,7 @@ static struct clk usb_fck = { static struct clk usbhs_ick = { .name = "usbhs_ick", - .parent = &l4_ck, + .parent = &core_l3_ck, .flags = CLOCK_IN_OMAP243X, .enable_reg = (void __iomem *)&CM_ICLKEN2_CORE, .enable_bit = 6, diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c index 7ce39b986e2..befb326273d 100644 --- a/arch/arm/plat-omap/clock.c +++ b/arch/arm/plat-omap/clock.c @@ -302,3 +302,65 @@ int __init clk_init(struct clk_functions * custom_clocks) return 0; } + +#ifdef CONFIG_PROC_FS +#include +#include + +static void *omap_ck_start(struct seq_file *m, loff_t *pos) +{ + return *pos < 1 ? (void *)1 : NULL; +} + +static void *omap_ck_next(struct seq_file *m, void *v, loff_t *pos) +{ + ++*pos; + return NULL; +} + +static void omap_ck_stop(struct seq_file *m, void *v) +{ +} + +int omap_ck_show(struct seq_file *m, void *v) +{ + struct clk *cp; + + list_for_each_entry(cp, &clocks, node) + seq_printf(m,"%s %ld %d\n", cp->name, cp->rate, cp->usecount); + + return 0; +} + +static struct seq_operations omap_ck_op = { + .start = omap_ck_start, + .next = omap_ck_next, + .stop = omap_ck_stop, + .show = omap_ck_show +}; + +static int omap_ck_open(struct inode *inode, struct file *file) +{ + return seq_open(file, &omap_ck_op); +} + +static struct file_operations proc_omap_ck_operations = { + .open = omap_ck_open, + .read = seq_read, + .llseek = seq_lseek, + .release = seq_release, +}; + +int __init omap_ck_init(void) +{ + struct proc_dir_entry *entry; + + entry = create_proc_entry("omap_clocks", 0, NULL); + if (entry) + entry->proc_fops = &proc_omap_ck_operations; + return 0; + +} +__initcall(omap_ck_init); +#endif /* CONFIG_DEBUG_PROC_FS */ + -- 2.41.1