[pkg-fso-commits] [SCM] linux-2.6-openmoko, the Linux 2.6 kernel tree from Openmoko branch, andy-tracking, updated. upstream/20090303.gitb9de904e-140-g23b564c

Andy Green agreen at octopus.localdomain
Mon Jun 8 17:28:59 UTC 2009


The following commit has been merged in the andy-tracking branch:
commit b0345baf86a811059177e6fc493d1c7d4086f7b7
Author: Werner Almesberger <werner at openmoko.org>
Date:   Thu Mar 5 14:39:30 2009 +0000

    Fix s3c64xx_setrate_clksrc
    
    Note: this patch is already on the way upstream but is currently missing
    in the Openmoko kernel.
    
    Some of the rate selection logic in s3c64xx_setrate_clksrc uses what
    appears to be parent clock selection logic. This patch corrects it.
    
    I also added a check for overly large dividers to prevent them
    from changing unrelated clocks.
    
    Signed-off-by: Werner Almesberger <werner at openmoko.org>

diff --git a/arch/arm/plat-s3c64xx/s3c6400-clock.c b/arch/arm/plat-s3c64xx/s3c6400-clock.c
index a6f6b91..6699b57 100644
--- a/arch/arm/plat-s3c64xx/s3c6400-clock.c
+++ b/arch/arm/plat-s3c64xx/s3c6400-clock.c
@@ -239,10 +239,12 @@ static int s3c64xx_setrate_clksrc(struct clk *clk, unsigned long rate)
 
 	rate = clk_round_rate(clk, rate);
 	div = clk_get_rate(clk->parent) / rate;
+	if (div > 16)
+		return -EINVAL;
 
 	val = __raw_readl(reg);
-	val &= ~sclk->mask;
-	val |= (rate - 1) << sclk->shift;
+	val &= ~(0xf << sclk->shift);
+	val |= (div - 1) << sclk->shift;
 	__raw_writel(val, reg);
 
 	return 0;

-- 
linux-2.6-openmoko, the Linux 2.6 kernel tree from Openmoko



More information about the pkg-fso-commits mailing list