ARM: OMAP: Use dynamic detection for setting default sys_ck
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
@@ -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
@@ -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 ,
--
Tony Lindgren
maintainerQuoted 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.
Signed-off-by Kevin Hilman <[email protected]>--- 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
3e02c8300f5a7900e91bb6da219faa6cf27b64f7Mon 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);
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