Skip to contentSkip to conversation

ARM: OMAP: Use dynamic detection for setting default sys_ck

PATCH In review Kevin Hilman 2 participants 3 messages Oct 23, 2007

Subsystems (4)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: OMAP: Use dynamic detection for setting default sys_ck

A cleaner way than my previous static fix... Rather than setting a static sys_ck.rate, detect the correct value at boot time.

---
 arch/arm/mach-omap2/clock24xx.c |    1 +
 arch/arm/mach-omap2/clock24xx.h |    1 -
 2 files changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-omap2/clock24xx.c +1 -0
Index: dev/arch/arm/mach-omap2/clock24xx.c
===================================================================
@@ -475,6 +475,7 @@ int __init omap2_clk_init(void)
 	clk_init(&omap2_clk_functions);
 
 	omap2_osc_clk_recalc(&osc_ck);
+	omap2_sys_clk_recalc(&sys_ck);
 
 	for (clkp = onchip_24xx_clks;
 	     clkp < onchip_24xx_clks + ARRAY_SIZE(onchip_24xx_clks);
arch/arm/mach-omap2/clock24xx.h +0 -1
Index: dev/arch/arm/mach-omap2/clock24xx.h
===================================================================
@@ -581,7 +581,6 @@ static struct clk osc_ck = {		/* (*12, *
 /* With out modem likely 12MHz, with modem likely 13MHz */
 static struct clk sys_ck = {		/* (*12, *13, 19.2, 26, 38.4)MHz */
 	.name		= "sys_ck",		/* ~ ref_clk also */
-	.rate           = 13000000,
 	.parent		= &osc_ck,
 	.flags		= CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X |
 				ALWAYS_ENABLED | RATE_PROPAGATES,

--

maintainer
#1 lore raw
Quoted 27 lines · Kevin Hilman

A cleaner way than my previous static fix... Rather than setting a static sys_ck.rate, detect the correct value at boot time.

---
 arch/arm/mach-omap2/clock24xx.c |    1 +
 arch/arm/mach-omap2/clock24xx.h |    1 -
 2 files changed, 1 insertion(+), 1 deletion(-)

Index: dev/arch/arm/mach-omap2/clock24xx.c
===================================================================

arch/arm/mach-omap2/clock24xx.c +1 -0
@@ -475,6 +475,7 @@ int __init omap2_clk_init(void)
 	clk_init(&omap2_clk_functions);
 
 	omap2_osc_clk_recalc(&osc_ck);
+	omap2_sys_clk_recalc(&sys_ck);
 
 	for (clkp = onchip_24xx_clks;
 	     clkp < onchip_24xx_clks + ARRAY_SIZE(onchip_24xx_clks);

Index: dev/arch/arm/mach-omap2/clock24xx.h
===================================================================

arch/arm/mach-omap2/clock24xx.h static struct clk osc_ck = { /* (*12, *

Quoted 8 lines
arch/arm/mach-omap2/clock24xx.h +0 -2
@@ -581,7 +581,6 @@ static struct clk osc_ck = {		/* (*12, *
 /* With out modem likely 12MHz, with modem likely 13MHz */
 static struct clk sys_ck = {		/* (*12, *13, 19.2, 26, 38.4)MHz */
 	.name		= "sys_ck",		/* ~ ref_clk also */
-	.rate           = 13000000,
 	.parent		= &osc_ck,
 	.flags		= CLOCK_IN_OMAP242X | CLOCK_IN_OMAP243X |
 				ALWAYS_ENABLED | RATE_PROPAGATES,
--

I'll undo your earlier patch and apply first part of this if you don't mind. Also merged comments from your first patch, hope that's OK with you, see attached.

Regards,

Tony

Quoted 1 line

From 3e02c8300f5a7900e91bb6da219faa6cf27b64f7 Mon Sep 17 00:00:00 2001

From: Kevin Hilman <[email protected]>
Date: Fri, 19 Oct 2007 14:14:15 -0700
Subject: [PATCH] ARM: OMAP: fix default sys_ck.rate for boot-time DPLL detection

In the clock init code, the DPLL value set by the bootloader is queried, but always turns zero due it's parent clock (sys_ck) having no default rate. This results in the improper setting of the default PRCM rate-table entry and any queries of virt_prcm_set rate to return 0.

Rather than setting a static sys_ck.rate, detect the correct value at boot time.

arch/arm/mach-omap2/clock24xx.c +1 -0
@@ -475,6 +475,7 @@ int __init omap2_clk_init(void)
 	clk_init(&omap2_clk_functions);
 
 	omap2_osc_clk_recalc(&osc_ck);
+	omap2_sys_clk_recalc(&sys_ck);
 
 	for (clkp = onchip_24xx_clks;
 	     clkp < onchip_24xx_clks + ARRAY_SIZE(onchip_24xx_clks);
#2 lore raw
Quoted 5 lines · Tony Lindgren

I'll undo your earlier patch and apply first part of this if you don't mind. Also merged comments from your first patch, hope that's OK with you, see attached.

Looks good to me, Thanks.

Kevin