From b18d688570f970a86ce53f4b2de36126aed50c1a Mon Sep 17 00:00:00 2001 From: Werner Almesberger Date: Mon, 7 Jan 2013 16:16:31 -0300 Subject: [PATCH] libubb/mmcclk.c (mmcclk_first): base clock calculation on state of CPCCR.PCS Also rename BEN_SYS_CLK_HZ to BEN_PLL_CLK_HZ, since the system clock depends on CPCCR.PCS (while we assume BEN_PLL_CLK_HZ to be constant.) --- libubb/include/ubb/mmcclk.h | 2 +- libubb/mmcclk.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/libubb/include/ubb/mmcclk.h b/libubb/include/ubb/mmcclk.h index 289a887..8762e90 100644 --- a/libubb/include/ubb/mmcclk.h +++ b/libubb/include/ubb/mmcclk.h @@ -16,7 +16,7 @@ #include -#define BEN_SYS_CLK_HZ 336000000 +#define BEN_PLL_CLK_HZ 336000000 struct mmcclk { diff --git a/libubb/mmcclk.c b/libubb/mmcclk.c index b84fe59..42202d7 100644 --- a/libubb/mmcclk.c +++ b/libubb/mmcclk.c @@ -30,7 +30,11 @@ static int calculate_clock(struct mmcclk *dsc) void mmcclk_first(struct mmcclk *dsc, int sys_clk_hz) { - dsc->sys_clk_hz = sys_clk_hz ? sys_clk_hz : BEN_SYS_CLK_HZ; + if (sys_clk_hz) + dsc->sys_clk_hz = sys_clk_hz; + else + dsc->sys_clk_hz = + (CPCCR >> 21) & 1 ? BEN_PLL_CLK_HZ : BEN_PLL_CLK_HZ/2; dsc->clkdiv = dsc->clkrt = 0; if (calculate_clock(dsc)) return;