 bef4a0ab98
			
		
	
	
	bef4a0ab98
	
	
	
		
			
			patches, both new drivers and fixes to existing. A high percentage of these are for Samsung platforms like Exynos. Core framework fixes and some new features like automagical clock re-parenting round out the patches. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAABAgAGBQJSLkImAAoJEDqPOy9afJhJOjsP/Ri26AW7XB9pPWJRSU9REBZA 31wxcFo2T+PNir9duwDwjFBFycC3MisaKFlg7D134M+7txbYqm1TRvfu9OEDxpSP 4b/Yl6TarN4dhCN2R+BREO8PnxCBVpspDcsdh6Esuwuet2xUom3UtN8yvSjhPP/u qGNmXQYXyQy4fom5r+GsDVW+HIhLkaX9b0fYc9EN/bqfgv94PMZAxAxsK9CroAGZ 0m0g9ZXw9iSvVfz+iQEqPINtvpTLHk0FGyimoSR7kvW4o4o47tVtLEWp7VjG6mr5 zvBsycaQq6NgxPu96iUWWhsO9Uj2I7/7JgidXF7r+wvEFs1mcgZtkkirSA/n4zUN C8a87rvQrZRLr+xXhVuqiVHCgCY8vXoHqkWg6SrZ62ORL8C7uYRpog5SEe2ZzLJX l5uGAsDM6el+Uc/YviCPoZbeFr3h3CQvvFo8+i2eN0v/Phf30rq4lotBvpQj894G ngEIMj+D8wshdYSF2dNJ0rLnkLHTgCbiA28L6Cl5TRzRMj3Uaj9aT3cmoLUnimZu 7F7nWU4Iu/vzQKCTQ+eTvwxXJqIlE0JeVbJilqH1f2a68JdXP1LOId+2w/CP8gqQ i2odj6JHMgBzM9rNs+y0Ir9X/bXIVi6F341c19Nl15srEiLLl8xQIpcPDaI/Kvzs pefYgF2yS5AZAW3ac90r =5GfA -----END PGP SIGNATURE----- Merge tag 'clk-for-linus-3.12' of git://git.linaro.org/people/mturquette/linux Pull clock framework changes from Michael Turquette: "The common clk framework changes for 3.12 are dominated by clock driver patches, both new drivers and fixes to existing. A high percentage of these are for Samsung platforms like Exynos. Core framework fixes and some new features like automagical clock re-parenting round out the patches" * tag 'clk-for-linus-3.12' of git://git.linaro.org/people/mturquette/linux: (102 commits) clk: only call get_parent if there is one clk: samsung: exynos5250: Simplify registration of PLL rate tables clk: samsung: exynos4: Register PLL rate tables for Exynos4x12 clk: samsung: exynos4: Register PLL rate tables for Exynos4210 clk: samsung: exynos4: Reorder registration of mout_vpllsrc clk: samsung: pll: Add support for rate configuration of PLL46xx clk: samsung: pll: Use new registration method for PLL46xx clk: samsung: pll: Add support for rate configuration of PLL45xx clk: samsung: pll: Use new registration method for PLL45xx clk: samsung: exynos4: Rename exynos4_plls to exynos4x12_plls clk: samsung: exynos4: Remove checks for DT node clk: samsung: exynos4: Remove unused static clkdev aliases clk: samsung: Modify _get_rate() helper to use __clk_lookup() clk: samsung: exynos4: Use separate aliases for cpufreq related clocks clocksource: samsung_pwm_timer: Get clock from device tree ARM: dts: exynos4: Specify PWM clocks in PWM node pwm: samsung: Update DT bindings documentation to cover clocks clk: Move symbol export to proper location clk: fix new_parent dereference before null check clk: wm831x: Initialise wm831x pointer on init ...
		
			
				
	
	
		
			113 lines
		
	
	
	
		
			3.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
	
		
			3.4 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __MACH_IMX_CLK_H
 | |
| #define __MACH_IMX_CLK_H
 | |
| 
 | |
| #include <linux/spinlock.h>
 | |
| #include <linux/clk-provider.h>
 | |
| 
 | |
| extern spinlock_t imx_ccm_lock;
 | |
| 
 | |
| extern void imx_cscmr1_fixup(u32 *val);
 | |
| 
 | |
| struct clk *imx_clk_pllv1(const char *name, const char *parent,
 | |
| 		void __iomem *base);
 | |
| 
 | |
| struct clk *imx_clk_pllv2(const char *name, const char *parent,
 | |
| 		void __iomem *base);
 | |
| 
 | |
| enum imx_pllv3_type {
 | |
| 	IMX_PLLV3_GENERIC,
 | |
| 	IMX_PLLV3_SYS,
 | |
| 	IMX_PLLV3_USB,
 | |
| 	IMX_PLLV3_AV,
 | |
| 	IMX_PLLV3_ENET,
 | |
| };
 | |
| 
 | |
| struct clk *imx_clk_pllv3(enum imx_pllv3_type type, const char *name,
 | |
| 		const char *parent_name, void __iomem *base, u32 div_mask);
 | |
| 
 | |
| struct clk *clk_register_gate2(struct device *dev, const char *name,
 | |
| 		const char *parent_name, unsigned long flags,
 | |
| 		void __iomem *reg, u8 bit_idx,
 | |
| 		u8 clk_gate_flags, spinlock_t *lock);
 | |
| 
 | |
| struct clk * imx_obtain_fixed_clock(
 | |
| 			const char *name, unsigned long rate);
 | |
| 
 | |
| static inline struct clk *imx_clk_gate2(const char *name, const char *parent,
 | |
| 		void __iomem *reg, u8 shift)
 | |
| {
 | |
| 	return clk_register_gate2(NULL, name, parent, CLK_SET_RATE_PARENT, reg,
 | |
| 			shift, 0, &imx_ccm_lock);
 | |
| }
 | |
| 
 | |
| struct clk *imx_clk_pfd(const char *name, const char *parent_name,
 | |
| 		void __iomem *reg, u8 idx);
 | |
| 
 | |
| struct clk *imx_clk_busy_divider(const char *name, const char *parent_name,
 | |
| 				 void __iomem *reg, u8 shift, u8 width,
 | |
| 				 void __iomem *busy_reg, u8 busy_shift);
 | |
| 
 | |
| struct clk *imx_clk_busy_mux(const char *name, void __iomem *reg, u8 shift,
 | |
| 			     u8 width, void __iomem *busy_reg, u8 busy_shift,
 | |
| 			     const char **parent_names, int num_parents);
 | |
| 
 | |
| struct clk *imx_clk_fixup_divider(const char *name, const char *parent,
 | |
| 				  void __iomem *reg, u8 shift, u8 width,
 | |
| 				  void (*fixup)(u32 *val));
 | |
| 
 | |
| struct clk *imx_clk_fixup_mux(const char *name, void __iomem *reg,
 | |
| 			      u8 shift, u8 width, const char **parents,
 | |
| 			      int num_parents, void (*fixup)(u32 *val));
 | |
| 
 | |
| static inline struct clk *imx_clk_fixed(const char *name, int rate)
 | |
| {
 | |
| 	return clk_register_fixed_rate(NULL, name, NULL, CLK_IS_ROOT, rate);
 | |
| }
 | |
| 
 | |
| static inline struct clk *imx_clk_divider(const char *name, const char *parent,
 | |
| 		void __iomem *reg, u8 shift, u8 width)
 | |
| {
 | |
| 	return clk_register_divider(NULL, name, parent, CLK_SET_RATE_PARENT,
 | |
| 			reg, shift, width, 0, &imx_ccm_lock);
 | |
| }
 | |
| 
 | |
| static inline struct clk *imx_clk_divider_flags(const char *name,
 | |
| 		const char *parent, void __iomem *reg, u8 shift, u8 width,
 | |
| 		unsigned long flags)
 | |
| {
 | |
| 	return clk_register_divider(NULL, name, parent, flags,
 | |
| 			reg, shift, width, 0, &imx_ccm_lock);
 | |
| }
 | |
| 
 | |
| static inline struct clk *imx_clk_gate(const char *name, const char *parent,
 | |
| 		void __iomem *reg, u8 shift)
 | |
| {
 | |
| 	return clk_register_gate(NULL, name, parent, CLK_SET_RATE_PARENT, reg,
 | |
| 			shift, 0, &imx_ccm_lock);
 | |
| }
 | |
| 
 | |
| static inline struct clk *imx_clk_mux(const char *name, void __iomem *reg,
 | |
| 		u8 shift, u8 width, const char **parents, int num_parents)
 | |
| {
 | |
| 	return clk_register_mux(NULL, name, parents, num_parents,
 | |
| 			CLK_SET_RATE_NO_REPARENT, reg, shift,
 | |
| 			width, 0, &imx_ccm_lock);
 | |
| }
 | |
| 
 | |
| static inline struct clk *imx_clk_mux_flags(const char *name,
 | |
| 		void __iomem *reg, u8 shift, u8 width, const char **parents,
 | |
| 		int num_parents, unsigned long flags)
 | |
| {
 | |
| 	return clk_register_mux(NULL, name, parents, num_parents,
 | |
| 			flags | CLK_SET_RATE_NO_REPARENT, reg, shift, width, 0,
 | |
| 			&imx_ccm_lock);
 | |
| }
 | |
| 
 | |
| static inline struct clk *imx_clk_fixed_factor(const char *name,
 | |
| 		const char *parent, unsigned int mult, unsigned int div)
 | |
| {
 | |
| 	return clk_register_fixed_factor(NULL, name, parent,
 | |
| 			CLK_SET_RATE_PARENT, mult, div);
 | |
| }
 | |
| 
 | |
| #endif
 |