diff options
Diffstat (limited to 'arch/arm/plat-samsung')
-rw-r--r-- | arch/arm/plat-samsung/clock.c | 15 | ||||
-rw-r--r-- | arch/arm/plat-samsung/dev-fb.c | 1 | ||||
-rw-r--r-- | arch/arm/plat-samsung/include/plat/clock.h | 1 | ||||
-rw-r--r-- | arch/arm/plat-samsung/include/plat/cpu.h | 1 | ||||
-rw-r--r-- | arch/arm/plat-samsung/include/plat/fb.h | 7 | ||||
-rw-r--r-- | arch/arm/plat-samsung/include/plat/pll6553x.h | 51 |
6 files changed, 75 insertions, 1 deletions
diff --git a/arch/arm/plat-samsung/clock.c b/arch/arm/plat-samsung/clock.c index 1b25c9d8c403..8bf79f3efdfb 100644 --- a/arch/arm/plat-samsung/clock.c +++ b/arch/arm/plat-samsung/clock.c | |||
@@ -376,6 +376,21 @@ void __init s3c_register_clocks(struct clk *clkp, int nr_clks) | |||
376 | } | 376 | } |
377 | } | 377 | } |
378 | 378 | ||
379 | /** | ||
380 | * s3c_disable_clocks() - disable an array of clocks | ||
381 | * @clkp: Pointer to the first clock in the array. | ||
382 | * @nr_clks: Number of clocks to register. | ||
383 | * | ||
384 | * for internal use only at initialisation time. disable the clocks in the | ||
385 | * @clkp array. | ||
386 | */ | ||
387 | |||
388 | void __init s3c_disable_clocks(struct clk *clkp, int nr_clks) | ||
389 | { | ||
390 | for (; nr_clks > 0; nr_clks--, clkp++) | ||
391 | (clkp->enable)(clkp, 0); | ||
392 | } | ||
393 | |||
379 | /* initalise all the clocks */ | 394 | /* initalise all the clocks */ |
380 | 395 | ||
381 | int __init s3c24xx_register_baseclocks(unsigned long xtal) | 396 | int __init s3c24xx_register_baseclocks(unsigned long xtal) |
diff --git a/arch/arm/plat-samsung/dev-fb.c b/arch/arm/plat-samsung/dev-fb.c index 002a15f313f3..bf60204c6297 100644 --- a/arch/arm/plat-samsung/dev-fb.c +++ b/arch/arm/plat-samsung/dev-fb.c | |||
@@ -19,7 +19,6 @@ | |||
19 | 19 | ||
20 | #include <mach/irqs.h> | 20 | #include <mach/irqs.h> |
21 | #include <mach/map.h> | 21 | #include <mach/map.h> |
22 | #include <mach/regs-fb.h> | ||
23 | 22 | ||
24 | #include <plat/fb.h> | 23 | #include <plat/fb.h> |
25 | #include <plat/devs.h> | 24 | #include <plat/devs.h> |
diff --git a/arch/arm/plat-samsung/include/plat/clock.h b/arch/arm/plat-samsung/include/plat/clock.h index efbc984640c3..0fbcd0effd8e 100644 --- a/arch/arm/plat-samsung/include/plat/clock.h +++ b/arch/arm/plat-samsung/include/plat/clock.h | |||
@@ -92,6 +92,7 @@ extern int s3c24xx_register_clock(struct clk *clk); | |||
92 | extern int s3c24xx_register_clocks(struct clk **clk, int nr_clks); | 92 | extern int s3c24xx_register_clocks(struct clk **clk, int nr_clks); |
93 | 93 | ||
94 | extern void s3c_register_clocks(struct clk *clk, int nr_clks); | 94 | extern void s3c_register_clocks(struct clk *clk, int nr_clks); |
95 | extern void s3c_disable_clocks(struct clk *clkp, int nr_clks); | ||
95 | 96 | ||
96 | extern int s3c24xx_register_baseclocks(unsigned long xtal); | 97 | extern int s3c24xx_register_baseclocks(unsigned long xtal); |
97 | 98 | ||
diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h index c54f318991b6..6412933d6fbb 100644 --- a/arch/arm/plat-samsung/include/plat/cpu.h +++ b/arch/arm/plat-samsung/include/plat/cpu.h | |||
@@ -73,6 +73,7 @@ extern struct sys_timer s3c24xx_timer; | |||
73 | extern struct sysdev_class s3c2410_sysclass; | 73 | extern struct sysdev_class s3c2410_sysclass; |
74 | extern struct sysdev_class s3c2410a_sysclass; | 74 | extern struct sysdev_class s3c2410a_sysclass; |
75 | extern struct sysdev_class s3c2412_sysclass; | 75 | extern struct sysdev_class s3c2412_sysclass; |
76 | extern struct sysdev_class s3c2416_sysclass; | ||
76 | extern struct sysdev_class s3c2440_sysclass; | 77 | extern struct sysdev_class s3c2440_sysclass; |
77 | extern struct sysdev_class s3c2442_sysclass; | 78 | extern struct sysdev_class s3c2442_sysclass; |
78 | extern struct sysdev_class s3c2443_sysclass; | 79 | extern struct sysdev_class s3c2443_sysclass; |
diff --git a/arch/arm/plat-samsung/include/plat/fb.h b/arch/arm/plat-samsung/include/plat/fb.h index ffc01a76b7ce..1f85649d8c18 100644 --- a/arch/arm/plat-samsung/include/plat/fb.h +++ b/arch/arm/plat-samsung/include/plat/fb.h | |||
@@ -15,6 +15,13 @@ | |||
15 | #ifndef __PLAT_S3C_FB_H | 15 | #ifndef __PLAT_S3C_FB_H |
16 | #define __PLAT_S3C_FB_H __FILE__ | 16 | #define __PLAT_S3C_FB_H __FILE__ |
17 | 17 | ||
18 | /* S3C_FB_MAX_WIN | ||
19 | * Set to the maximum number of windows that any of the supported hardware | ||
20 | * can use. Since the platform data uses this for an array size, having it | ||
21 | * set to the maximum of any version of the hardware can do is safe. | ||
22 | */ | ||
23 | #define S3C_FB_MAX_WIN (5) | ||
24 | |||
18 | /** | 25 | /** |
19 | * struct s3c_fb_pd_win - per window setup data | 26 | * struct s3c_fb_pd_win - per window setup data |
20 | * @win_mode: The display parameters to initialise (not for window 0) | 27 | * @win_mode: The display parameters to initialise (not for window 0) |
diff --git a/arch/arm/plat-samsung/include/plat/pll6553x.h b/arch/arm/plat-samsung/include/plat/pll6553x.h new file mode 100644 index 000000000000..b8b7e1d884f8 --- /dev/null +++ b/arch/arm/plat-samsung/include/plat/pll6553x.h | |||
@@ -0,0 +1,51 @@ | |||
1 | /* arch/arm/plat-samsung/include/plat/pll6553x.h | ||
2 | * partially from arch/arm/mach-s3c64xx/include/mach/pll.h | ||
3 | * | ||
4 | * Copyright 2008 Openmoko, Inc. | ||
5 | * Copyright 2008 Simtec Electronics | ||
6 | * Ben Dooks <ben@simtec.co.uk> | ||
7 | * http://armlinux.simtec.co.uk/ | ||
8 | * | ||
9 | * Samsung PLL6553x PLL code | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or modify | ||
12 | * it under the terms of the GNU General Public License version 2 as | ||
13 | * published by the Free Software Foundation. | ||
14 | */ | ||
15 | |||
16 | /* S3C6400 and compatible (S3C2416, etc.) EPLL code */ | ||
17 | |||
18 | #define PLL6553X_MDIV_MASK ((1 << (23-16)) - 1) | ||
19 | #define PLL6553X_PDIV_MASK ((1 << (13-8)) - 1) | ||
20 | #define PLL6553X_SDIV_MASK ((1 << (2-0)) - 1) | ||
21 | #define PLL6553X_MDIV_SHIFT (16) | ||
22 | #define PLL6553X_PDIV_SHIFT (8) | ||
23 | #define PLL6553X_SDIV_SHIFT (0) | ||
24 | #define PLL6553X_KDIV_MASK (0xffff) | ||
25 | |||
26 | static inline unsigned long s3c_get_pll6553x(unsigned long baseclk, | ||
27 | u32 pll0, u32 pll1) | ||
28 | { | ||
29 | unsigned long result; | ||
30 | u32 mdiv, pdiv, sdiv, kdiv; | ||
31 | u64 tmp; | ||
32 | |||
33 | mdiv = (pll0 >> PLL6553X_MDIV_SHIFT) & PLL6553X_MDIV_MASK; | ||
34 | pdiv = (pll0 >> PLL6553X_PDIV_SHIFT) & PLL6553X_PDIV_MASK; | ||
35 | sdiv = (pll0 >> PLL6553X_SDIV_SHIFT) & PLL6553X_SDIV_MASK; | ||
36 | kdiv = pll1 & PLL6553X_KDIV_MASK; | ||
37 | |||
38 | /* We need to multiple baseclk by mdiv (the integer part) and kdiv | ||
39 | * which is in 2^16ths, so shift mdiv up (does not overflow) and | ||
40 | * add kdiv before multiplying. The use of tmp is to avoid any | ||
41 | * overflows before shifting bac down into result when multipling | ||
42 | * by the mdiv and kdiv pair. | ||
43 | */ | ||
44 | |||
45 | tmp = baseclk; | ||
46 | tmp *= (mdiv << 16) + kdiv; | ||
47 | do_div(tmp, (pdiv << sdiv)); | ||
48 | result = tmp >> 16; | ||
49 | |||
50 | return result; | ||
51 | } | ||