• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * linux/arch/arm/mach-at91/clock.h
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  */
8 
9 #include <linux/clkdev.h>
10 
11 #define CLK_TYPE_PRIMARY	0x1
12 #define CLK_TYPE_PLL		0x2
13 #define CLK_TYPE_PROGRAMMABLE	0x4
14 #define CLK_TYPE_PERIPHERAL	0x8
15 #define CLK_TYPE_SYSTEM		0x10
16 
17 
18 struct clk {
19 	struct list_head node;
20 	const char	*name;		/* unique clock name */
21 	struct clk_lookup cl;
22 	unsigned long	rate_hz;
23 	unsigned	div;		/* parent clock divider */
24 	struct clk	*parent;
25 	unsigned	pid;		/* peripheral ID */
26 	u32		pmc_mask;
27 	void		(*mode)(struct clk *, int);
28 	unsigned	id:3;		/* PCK0..4, or 32k/main/a/b */
29 	unsigned	type;		/* clock type */
30 	u16		users;
31 };
32 
33 
34 extern int __init clk_register(struct clk *clk);
35 extern struct clk mck;
36 extern struct clk utmi_clk;
37 
38 #define CLKDEV_CON_ID(_id, _clk)			\
39 	{						\
40 		.con_id = _id,				\
41 		.clk = _clk,				\
42 	}
43 
44 #define CLKDEV_CON_DEV_ID(_con_id, _dev_id, _clk)	\
45 	{						\
46 		.con_id = _con_id,			\
47 		.dev_id = _dev_id,			\
48 		.clk = _clk,				\
49 	}
50