diff options
author | Paul Walmsley <paul@pwsan.com> | 2010-02-23 00:09:12 -0500 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2010-02-24 14:15:03 -0500 |
commit | 93340a22943f3169de7d359ea14cd618114da6f6 (patch) | |
tree | e9736b9fb4e9f2fdd31491b2b7a5b3dfe60ed453 /arch/arm/mach-omap2 | |
parent | 7356f0b26b3176610b4de439e8c7bfe10c797347 (diff) |
OMAP2/3/4 clock: fix DPLL multiplier value errors; also copyrights, includes, documentation
The maximum DPLL multiplier (M) values for OMAP2xxx and OMAP3xxx are
one increment higher than they should be. See for example the
OMAP242x TRM Rev X Section 5.10.6 "Clock Generator Registers" and the
OMAP36xx TRM Rev C Table 3-202 "CM_CLKSEL1_PLL". Programming a 0 into
the DPLL's M register bitfield is valid for OMAP2/3 and indicates that
the DPLL should enter MN-bypass mode. Also, increase the minimum
multiplier (M) value for the DPLL rate rounding code from 1 to 2, to
ensure that it does not inadvertently put the DPLL into bypass.
Note that the register documentation in the OMAP2xxx and OMAP3xxx TRMs
does not make clear that the actual DPLL divider value (the "N") is
the content of the appropriate register bitfield for the N value,
_plus one_. (In other words, an N register bitfield of 0 indicates a
DPLL divider value of 1.) This is only clearly documented in the
OMAP4430 TRM, in, for example, OMAP4430 TRM Rev A Table 3-1167
"CM_CLKSEL_DPLL_USB".
While here, update copyrights, add kerneldoc for struct dpll_data,
drop the unused struct dpll_data.max_tolerance field, remove some
unnecessary #includes in DPLL-related code, and replace the #include
of <linux/module.h> with <linux/list.h>, which is what was really
needed. The OMAP4 clock autogenerator script has been updated
accordingly.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Benoît Cousson <b-cousson@ti.com>
Cc: Rajendra Nayak <rnayak@ti.com>
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r-- | arch/arm/mach-omap2/clkt_dpll.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clock2xxx_data.c | 6 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clock34xx_data.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clock44xx.h | 7 | ||||
-rw-r--r-- | arch/arm/mach-omap2/clock44xx_data.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/dpll3xxx.c | 4 |
6 files changed, 15 insertions, 14 deletions
diff --git a/arch/arm/mach-omap2/clkt_dpll.c b/arch/arm/mach-omap2/clkt_dpll.c index 9eee0e67d5d6..6ce512e902c6 100644 --- a/arch/arm/mach-omap2/clkt_dpll.c +++ b/arch/arm/mach-omap2/clkt_dpll.c | |||
@@ -29,7 +29,7 @@ | |||
29 | #include "cm-regbits-34xx.h" | 29 | #include "cm-regbits-34xx.h" |
30 | 30 | ||
31 | /* DPLL rate rounding: minimum DPLL multiplier, divider values */ | 31 | /* DPLL rate rounding: minimum DPLL multiplier, divider values */ |
32 | #define DPLL_MIN_MULTIPLIER 1 | 32 | #define DPLL_MIN_MULTIPLIER 2 |
33 | #define DPLL_MIN_DIVIDER 1 | 33 | #define DPLL_MIN_DIVIDER 1 |
34 | 34 | ||
35 | /* Possible error results from _dpll_test_mult */ | 35 | /* Possible error results from _dpll_test_mult */ |
diff --git a/arch/arm/mach-omap2/clock2xxx_data.c b/arch/arm/mach-omap2/clock2xxx_data.c index 52c7a6c2d9e0..f20a4b2bc6fc 100644 --- a/arch/arm/mach-omap2/clock2xxx_data.c +++ b/arch/arm/mach-omap2/clock2xxx_data.c | |||
@@ -2,7 +2,7 @@ | |||
2 | * linux/arch/arm/mach-omap2/clock2xxx_data.c | 2 | * linux/arch/arm/mach-omap2/clock2xxx_data.c |
3 | * | 3 | * |
4 | * Copyright (C) 2005-2009 Texas Instruments, Inc. | 4 | * Copyright (C) 2005-2009 Texas Instruments, Inc. |
5 | * Copyright (C) 2004-2009 Nokia Corporation | 5 | * Copyright (C) 2004-2010 Nokia Corporation |
6 | * | 6 | * |
7 | * Contacts: | 7 | * Contacts: |
8 | * Richard Woodruff <r-woodruff2@ti.com> | 8 | * Richard Woodruff <r-woodruff2@ti.com> |
@@ -13,9 +13,9 @@ | |||
13 | * published by the Free Software Foundation. | 13 | * published by the Free Software Foundation. |
14 | */ | 14 | */ |
15 | 15 | ||
16 | #include <linux/module.h> | ||
17 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
18 | #include <linux/clk.h> | 17 | #include <linux/clk.h> |
18 | #include <linux/list.h> | ||
19 | 19 | ||
20 | #include <plat/clkdev_omap.h> | 20 | #include <plat/clkdev_omap.h> |
21 | 21 | ||
@@ -107,7 +107,7 @@ static struct dpll_data dpll_dd = { | |||
107 | .clk_ref = &sys_ck, | 107 | .clk_ref = &sys_ck, |
108 | .control_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), | 108 | .control_reg = OMAP_CM_REGADDR(PLL_MOD, CM_CLKEN), |
109 | .enable_mask = OMAP24XX_EN_DPLL_MASK, | 109 | .enable_mask = OMAP24XX_EN_DPLL_MASK, |
110 | .max_multiplier = 1024, | 110 | .max_multiplier = 1023, |
111 | .min_divider = 1, | 111 | .min_divider = 1, |
112 | .max_divider = 16, | 112 | .max_divider = 16, |
113 | .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE | 113 | .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE |
diff --git a/arch/arm/mach-omap2/clock34xx_data.c b/arch/arm/mach-omap2/clock34xx_data.c index da71ef17cb11..94f603b16c5e 100644 --- a/arch/arm/mach-omap2/clock34xx_data.c +++ b/arch/arm/mach-omap2/clock34xx_data.c | |||
@@ -1,8 +1,8 @@ | |||
1 | /* | 1 | /* |
2 | * OMAP3 clock data | 2 | * OMAP3 clock data |
3 | * | 3 | * |
4 | * Copyright (C) 2007-2009 Texas Instruments, Inc. | 4 | * Copyright (C) 2007-2010 Texas Instruments, Inc. |
5 | * Copyright (C) 2007-2009 Nokia Corporation | 5 | * Copyright (C) 2007-2010 Nokia Corporation |
6 | * | 6 | * |
7 | * Written by Paul Walmsley | 7 | * Written by Paul Walmsley |
8 | * With many device clock fixes by Kevin Hilman and Jouni Högander | 8 | * With many device clock fixes by Kevin Hilman and Jouni Högander |
@@ -16,9 +16,9 @@ | |||
16 | * to be requested from drivers directly. | 16 | * to be requested from drivers directly. |
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <linux/module.h> | ||
20 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
21 | #include <linux/clk.h> | 20 | #include <linux/clk.h> |
21 | #include <linux/list.h> | ||
22 | 22 | ||
23 | #include <plat/control.h> | 23 | #include <plat/control.h> |
24 | #include <plat/clkdev_omap.h> | 24 | #include <plat/clkdev_omap.h> |
@@ -37,7 +37,7 @@ | |||
37 | #define OMAP_CM_REGADDR OMAP34XX_CM_REGADDR | 37 | #define OMAP_CM_REGADDR OMAP34XX_CM_REGADDR |
38 | 38 | ||
39 | /* Maximum DPLL multiplier, divider values for OMAP3 */ | 39 | /* Maximum DPLL multiplier, divider values for OMAP3 */ |
40 | #define OMAP3_MAX_DPLL_MULT 2048 | 40 | #define OMAP3_MAX_DPLL_MULT 2047 |
41 | #define OMAP3630_MAX_JTYPE_DPLL_MULT 4095 | 41 | #define OMAP3630_MAX_JTYPE_DPLL_MULT 4095 |
42 | #define OMAP3_MAX_DPLL_DIV 128 | 42 | #define OMAP3_MAX_DPLL_DIV 128 |
43 | 43 | ||
diff --git a/arch/arm/mach-omap2/clock44xx.h b/arch/arm/mach-omap2/clock44xx.h index efe849416aac..0c739726703d 100644 --- a/arch/arm/mach-omap2/clock44xx.h +++ b/arch/arm/mach-omap2/clock44xx.h | |||
@@ -2,12 +2,17 @@ | |||
2 | * OMAP4 clock function prototypes and macros | 2 | * OMAP4 clock function prototypes and macros |
3 | * | 3 | * |
4 | * Copyright (C) 2009 Texas Instruments, Inc. | 4 | * Copyright (C) 2009 Texas Instruments, Inc. |
5 | * Copyright (C) 2010 Nokia Corporation | ||
5 | */ | 6 | */ |
6 | 7 | ||
7 | #ifndef __ARCH_ARM_MACH_OMAP2_CLOCK_44XX_H | 8 | #ifndef __ARCH_ARM_MACH_OMAP2_CLOCK_44XX_H |
8 | #define __ARCH_ARM_MACH_OMAP2_CLOCK_44XX_H | 9 | #define __ARCH_ARM_MACH_OMAP2_CLOCK_44XX_H |
9 | 10 | ||
10 | #define OMAP4430_MAX_DPLL_MULT 2048 | 11 | /* |
12 | * XXX Missing values for the OMAP4 DPLL_USB | ||
13 | * XXX Missing min_multiplier values for all OMAP4 DPLLs | ||
14 | */ | ||
15 | #define OMAP4430_MAX_DPLL_MULT 2047 | ||
11 | #define OMAP4430_MAX_DPLL_DIV 128 | 16 | #define OMAP4430_MAX_DPLL_DIV 128 |
12 | 17 | ||
13 | int omap4xxx_clk_init(void); | 18 | int omap4xxx_clk_init(void); |
diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c index 8d8b57340950..1abfefff703b 100644 --- a/arch/arm/mach-omap2/clock44xx_data.c +++ b/arch/arm/mach-omap2/clock44xx_data.c | |||
@@ -20,7 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
23 | #include <linux/module.h> | 23 | #include <linux/list.h> |
24 | #include <linux/clk.h> | 24 | #include <linux/clk.h> |
25 | 25 | ||
26 | #include <plat/control.h> | 26 | #include <plat/control.h> |
diff --git a/arch/arm/mach-omap2/dpll3xxx.c b/arch/arm/mach-omap2/dpll3xxx.c index 417c3caa05db..b32ccd954a1b 100644 --- a/arch/arm/mach-omap2/dpll3xxx.c +++ b/arch/arm/mach-omap2/dpll3xxx.c | |||
@@ -18,7 +18,6 @@ | |||
18 | * published by the Free Software Foundation. | 18 | * published by the Free Software Foundation. |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <linux/module.h> | ||
22 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
23 | #include <linux/device.h> | 22 | #include <linux/device.h> |
24 | #include <linux/list.h> | 23 | #include <linux/list.h> |
@@ -26,13 +25,10 @@ | |||
26 | #include <linux/delay.h> | 25 | #include <linux/delay.h> |
27 | #include <linux/clk.h> | 26 | #include <linux/clk.h> |
28 | #include <linux/io.h> | 27 | #include <linux/io.h> |
29 | #include <linux/limits.h> | ||
30 | #include <linux/bitops.h> | 28 | #include <linux/bitops.h> |
31 | 29 | ||
32 | #include <plat/cpu.h> | 30 | #include <plat/cpu.h> |
33 | #include <plat/clock.h> | 31 | #include <plat/clock.h> |
34 | #include <plat/sram.h> | ||
35 | #include <asm/div64.h> | ||
36 | #include <asm/clkdev.h> | 32 | #include <asm/clkdev.h> |
37 | 33 | ||
38 | #include "clock.h" | 34 | #include "clock.h" |