44 lines
		
	
	
	
		
			870 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
	
		
			870 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | struct clk; | ||
|  | 
 | ||
|  | struct clkops { | ||
|  | 	void			(*enable)(struct clk *); | ||
|  | 	void			(*disable)(struct clk *); | ||
|  | 	unsigned long		(*getrate)(struct clk *); | ||
|  | }; | ||
|  | 
 | ||
|  | struct clk { | ||
|  | 	struct list_head	node; | ||
|  | 	const char		*name; | ||
|  | 	struct device		*dev; | ||
|  | 	const struct clkops	*ops; | ||
|  | 	unsigned long		rate; | ||
|  | 	unsigned int		cken; | ||
|  | 	unsigned int		delay; | ||
|  | 	unsigned int		enabled; | ||
|  | }; | ||
|  | 
 | ||
|  | #define INIT_CKEN(_name, _cken, _rate, _delay, _dev)	\
 | ||
|  | 	{						\ | ||
|  | 		.name	= _name,			\ | ||
|  | 		.dev	= _dev,				\ | ||
|  | 		.ops	= &clk_cken_ops,		\ | ||
|  | 		.rate	= _rate,			\ | ||
|  | 		.cken	= CKEN_##_cken,			\ | ||
|  | 		.delay	= _delay,			\ | ||
|  | 	} | ||
|  | 
 | ||
|  | #define INIT_CK(_name, _cken, _ops, _dev)		\
 | ||
|  | 	{						\ | ||
|  | 		.name	= _name,			\ | ||
|  | 		.dev	= _dev,				\ | ||
|  | 		.ops	= _ops,				\ | ||
|  | 		.cken	= CKEN_##_cken,			\ | ||
|  | 	} | ||
|  | 
 | ||
|  | extern const struct clkops clk_cken_ops; | ||
|  | 
 | ||
|  | void clk_cken_enable(struct clk *clk); | ||
|  | void clk_cken_disable(struct clk *clk); | ||
|  | 
 | ||
|  | void clks_register(struct clk *clks, size_t num); |