Commit | Line | Data |
---|---|---|
a503059c | 1 | /* linux/arch/arm/plat-s3c/include/plat/clock.h |
1da177e4 LT |
2 | * |
3 | * Copyright (c) 2004-2005 Simtec Electronics | |
4 | * http://www.simtec.co.uk/products/SWLINUX/ | |
5 | * Written by Ben Dooks, <ben@simtec.co.uk> | |
6 | * | |
7 | * This program is free software; you can redistribute it and/or modify | |
8 | * it under the terms of the GNU General Public License version 2 as | |
9 | * published by the Free Software Foundation. | |
10 | */ | |
11 | ||
c3391e36 BD |
12 | #include <linux/spinlock.h> |
13 | ||
1da177e4 LT |
14 | struct clk { |
15 | struct list_head list; | |
16 | struct module *owner; | |
17 | struct clk *parent; | |
18 | const char *name; | |
19 | int id; | |
2a513ce7 | 20 | int usage; |
1da177e4 LT |
21 | unsigned long rate; |
22 | unsigned long ctrlbit; | |
d3468daa | 23 | |
1da177e4 | 24 | int (*enable)(struct clk *, int enable); |
6e8908ed | 25 | int (*set_rate)(struct clk *c, unsigned long rate); |
92b7eb8f | 26 | unsigned long (*get_rate)(struct clk *c); |
6e8908ed | 27 | unsigned long (*round_rate)(struct clk *c, unsigned long rate); |
d3468daa | 28 | int (*set_parent)(struct clk *c, struct clk *parent); |
1da177e4 LT |
29 | }; |
30 | ||
31 | /* other clocks which may be registered by board support */ | |
32 | ||
33 | extern struct clk s3c24xx_dclk0; | |
34 | extern struct clk s3c24xx_dclk1; | |
35 | extern struct clk s3c24xx_clkout0; | |
36 | extern struct clk s3c24xx_clkout1; | |
37 | extern struct clk s3c24xx_uclk; | |
38 | ||
36c64af4 BD |
39 | extern struct clk clk_usb_bus; |
40 | ||
99c13853 BD |
41 | /* core clock support */ |
42 | ||
43 | extern struct clk clk_f; | |
44 | extern struct clk clk_h; | |
45 | extern struct clk clk_p; | |
513846f8 | 46 | extern struct clk clk_mpll; |
99c13853 | 47 | extern struct clk clk_upll; |
4b31d8b2 | 48 | extern struct clk clk_epll; |
513846f8 | 49 | extern struct clk clk_xtal; |
4b31d8b2 BD |
50 | extern struct clk clk_ext; |
51 | ||
52 | /* S3C64XX specific clocks */ | |
a03f7daf | 53 | extern struct clk clk_h2; |
4b31d8b2 BD |
54 | extern struct clk clk_27m; |
55 | extern struct clk clk_48m; | |
99c13853 | 56 | |
1da177e4 LT |
57 | /* exports for arch/arm/mach-s3c2410 |
58 | * | |
59 | * Please DO NOT use these outside of arch/arm/mach-s3c2410 | |
60 | */ | |
61 | ||
c3391e36 | 62 | extern spinlock_t clocks_lock; |
36c64af4 | 63 | |
99c13853 BD |
64 | extern int s3c2410_clkcon_enable(struct clk *clk, int enable); |
65 | ||
1da177e4 | 66 | extern int s3c24xx_register_clock(struct clk *clk); |
ce89c206 | 67 | extern int s3c24xx_register_clocks(struct clk **clk, int nr_clks); |
1da177e4 | 68 | |
e425382e BD |
69 | extern int s3c24xx_register_baseclocks(unsigned long xtal); |
70 | ||
4b31d8b2 BD |
71 | extern void s3c64xx_register_clocks(void); |
72 | ||
e425382e BD |
73 | extern void s3c24xx_setup_clocks(unsigned long fclk, |
74 | unsigned long hclk, | |
75 | unsigned long pclk); | |
76 | ||
77 | extern void s3c2410_setup_clocks(void); | |
78 | extern void s3c2412_setup_clocks(void); | |
79 | extern void s3c244x_setup_clocks(void); | |
80 | extern void s3c2443_setup_clocks(void); | |
81 | ||
cf18acf0 BD |
82 | /* S3C64XX specific functions and clocks */ |
83 | ||
84 | extern int s3c64xx_sclk_ctrl(struct clk *clk, int enable); | |
9d325f23 BD |
85 | |
86 | /* Init for pwm clock code */ | |
87 | ||
88 | extern void s3c_pwmclk_init(void); | |
89 |