aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-07-03 14:54:50 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2013-07-03 14:54:50 -0400
commit92295f632cefbdf15d46e9ac5f0fc3cfade35259 (patch)
tree5b3820d4ed135ccbef540781d99a46137959bbb6 /include
parent750b2d7b93f2ba19f4f238cc641bda22fe07c155 (diff)
parent45e3ec3784aec0d194740b75b547bfabca448ff3 (diff)
Merge tag 'clk-for-linus-3.11' of git://git.linaro.org/people/mturquette/linux
Pull clock framework updates from Mike Turquette: "The common clock framework changes for 3.11 include new clock drivers across several different platforms and architectures, fixes to existing drivers, a MAINTAINERS file fix and improvements to the basic clock types that allow them to be of use to more platforms than before. Only a few fixes to the core framework are included with most all of the changes landing in the various clock drivers themselves." * tag 'clk-for-linus-3.11' of git://git.linaro.org/people/mturquette/linux: (55 commits) clk: tegra: fix ifdef for tegra_periph_reset_assert inline clk: tegra: provide tegra_periph_reset_assert alternative clk: exynos4: Fix clock aliases for cpufreq related clocks clk: samsung: Add MUX_FA macro to pass flag and alias clk: add support for Rockchip gate clocks clk: vexpress: Make the clock drivers directly available for arm64 clk: vexpress: Use full node name to identify individual clocks clk: tegra: T114: add DFLL DVCO reset control clk: tegra: T114: add DFLL source clocks clk: tegra: T114: add FCPU clock shaper programming, needed by the DFLL clk: gate: add CLK_GATE_HIWORD_MASK clk: divider: add CLK_DIVIDER_HIWORD_MASK flag clk: mux: add CLK_MUX_HIWORD_MASK clk: Always notify whole subtree when reparenting MAINTAINERS: make drivers/clk entry match subdirs clk: honor CLK_GET_RATE_NOCACHE in clk_set_rate clk: use clk_get_rate() for debugfs clk: tegra: Use override bits when needed clk: tegra: override bits for Tegra30 PLLM clk: tegra: override bits for Tegra114 PLLM ...
Diffstat (limited to 'include')
-rw-r--r--include/linux/clk-provider.h62
-rw-r--r--include/linux/clk/tegra.h6
-rw-r--r--include/linux/mfd/abx500/ab8500-sysctrl.h4
-rw-r--r--include/linux/mfd/dbx500-prcmu.h12
-rw-r--r--include/linux/platform_data/clk-ux500.h6
-rw-r--r--include/linux/platform_data/si5351.h18
6 files changed, 95 insertions, 13 deletions
diff --git a/include/linux/clk-provider.h b/include/linux/clk-provider.h
index 11860985fecb..1ec14a732176 100644
--- a/include/linux/clk-provider.h
+++ b/include/linux/clk-provider.h
@@ -210,6 +210,10 @@ void of_fixed_clk_setup(struct device_node *np);
210 * CLK_GATE_SET_TO_DISABLE - by default this clock sets the bit at bit_idx to 210 * CLK_GATE_SET_TO_DISABLE - by default this clock sets the bit at bit_idx to
211 * enable the clock. Setting this flag does the opposite: setting the bit 211 * enable the clock. Setting this flag does the opposite: setting the bit
212 * disable the clock and clearing it enables the clock 212 * disable the clock and clearing it enables the clock
213 * CLK_GATE_HIWORD_MASK - The gate settings are only in lower 16-bit
214 * of this register, and mask of gate bits are in higher 16-bit of this
215 * register. While setting the gate bits, higher 16-bit should also be
216 * updated to indicate changing gate bits.
213 */ 217 */
214struct clk_gate { 218struct clk_gate {
215 struct clk_hw hw; 219 struct clk_hw hw;
@@ -220,6 +224,7 @@ struct clk_gate {
220}; 224};
221 225
222#define CLK_GATE_SET_TO_DISABLE BIT(0) 226#define CLK_GATE_SET_TO_DISABLE BIT(0)
227#define CLK_GATE_HIWORD_MASK BIT(1)
223 228
224extern const struct clk_ops clk_gate_ops; 229extern const struct clk_ops clk_gate_ops;
225struct clk *clk_register_gate(struct device *dev, const char *name, 230struct clk *clk_register_gate(struct device *dev, const char *name,
@@ -257,6 +262,10 @@ struct clk_div_table {
257 * Some hardware implementations gracefully handle this case and allow a 262 * Some hardware implementations gracefully handle this case and allow a
258 * zero divisor by not modifying their input clock 263 * zero divisor by not modifying their input clock
259 * (divide by one / bypass). 264 * (divide by one / bypass).
265 * CLK_DIVIDER_HIWORD_MASK - The divider settings are only in lower 16-bit
266 * of this register, and mask of divider bits are in higher 16-bit of this
267 * register. While setting the divider bits, higher 16-bit should also be
268 * updated to indicate changing divider bits.
260 */ 269 */
261struct clk_divider { 270struct clk_divider {
262 struct clk_hw hw; 271 struct clk_hw hw;
@@ -271,6 +280,7 @@ struct clk_divider {
271#define CLK_DIVIDER_ONE_BASED BIT(0) 280#define CLK_DIVIDER_ONE_BASED BIT(0)
272#define CLK_DIVIDER_POWER_OF_TWO BIT(1) 281#define CLK_DIVIDER_POWER_OF_TWO BIT(1)
273#define CLK_DIVIDER_ALLOW_ZERO BIT(2) 282#define CLK_DIVIDER_ALLOW_ZERO BIT(2)
283#define CLK_DIVIDER_HIWORD_MASK BIT(3)
274 284
275extern const struct clk_ops clk_divider_ops; 285extern const struct clk_ops clk_divider_ops;
276struct clk *clk_register_divider(struct device *dev, const char *name, 286struct clk *clk_register_divider(struct device *dev, const char *name,
@@ -299,6 +309,10 @@ struct clk *clk_register_divider_table(struct device *dev, const char *name,
299 * Flags: 309 * Flags:
300 * CLK_MUX_INDEX_ONE - register index starts at 1, not 0 310 * CLK_MUX_INDEX_ONE - register index starts at 1, not 0
301 * CLK_MUX_INDEX_BIT - register index is a single bit (power of two) 311 * CLK_MUX_INDEX_BIT - register index is a single bit (power of two)
312 * CLK_MUX_HIWORD_MASK - The mux settings are only in lower 16-bit of this
313 * register, and mask of mux bits are in higher 16-bit of this register.
314 * While setting the mux bits, higher 16-bit should also be updated to
315 * indicate changing mux bits.
302 */ 316 */
303struct clk_mux { 317struct clk_mux {
304 struct clk_hw hw; 318 struct clk_hw hw;
@@ -312,6 +326,7 @@ struct clk_mux {
312 326
313#define CLK_MUX_INDEX_ONE BIT(0) 327#define CLK_MUX_INDEX_ONE BIT(0)
314#define CLK_MUX_INDEX_BIT BIT(1) 328#define CLK_MUX_INDEX_BIT BIT(1)
329#define CLK_MUX_HIWORD_MASK BIT(2)
315 330
316extern const struct clk_ops clk_mux_ops; 331extern const struct clk_ops clk_mux_ops;
317 332
@@ -423,6 +438,17 @@ struct of_device_id;
423 438
424typedef void (*of_clk_init_cb_t)(struct device_node *); 439typedef void (*of_clk_init_cb_t)(struct device_node *);
425 440
441struct clk_onecell_data {
442 struct clk **clks;
443 unsigned int clk_num;
444};
445
446#define CLK_OF_DECLARE(name, compat, fn) \
447 static const struct of_device_id __clk_of_table_##name \
448 __used __section(__clk_of_table) \
449 = { .compatible = compat, .data = fn };
450
451#ifdef CONFIG_OF
426int of_clk_add_provider(struct device_node *np, 452int of_clk_add_provider(struct device_node *np,
427 struct clk *(*clk_src_get)(struct of_phandle_args *args, 453 struct clk *(*clk_src_get)(struct of_phandle_args *args,
428 void *data), 454 void *data),
@@ -430,19 +456,39 @@ int of_clk_add_provider(struct device_node *np,
430void of_clk_del_provider(struct device_node *np); 456void of_clk_del_provider(struct device_node *np);
431struct clk *of_clk_src_simple_get(struct of_phandle_args *clkspec, 457struct clk *of_clk_src_simple_get(struct of_phandle_args *clkspec,
432 void *data); 458 void *data);
433struct clk_onecell_data {
434 struct clk **clks;
435 unsigned int clk_num;
436};
437struct clk *of_clk_src_onecell_get(struct of_phandle_args *clkspec, void *data); 459struct clk *of_clk_src_onecell_get(struct of_phandle_args *clkspec, void *data);
438const char *of_clk_get_parent_name(struct device_node *np, int index); 460const char *of_clk_get_parent_name(struct device_node *np, int index);
439 461
440void of_clk_init(const struct of_device_id *matches); 462void of_clk_init(const struct of_device_id *matches);
441 463
442#define CLK_OF_DECLARE(name, compat, fn) \ 464#else /* !CONFIG_OF */
443 static const struct of_device_id __clk_of_table_##name \
444 __used __section(__clk_of_table) \
445 = { .compatible = compat, .data = fn };
446 465
466static inline int of_clk_add_provider(struct device_node *np,
467 struct clk *(*clk_src_get)(struct of_phandle_args *args,
468 void *data),
469 void *data)
470{
471 return 0;
472}
473#define of_clk_del_provider(np) \
474 { while (0); }
475static inline struct clk *of_clk_src_simple_get(
476 struct of_phandle_args *clkspec, void *data)
477{
478 return ERR_PTR(-ENOENT);
479}
480static inline struct clk *of_clk_src_onecell_get(
481 struct of_phandle_args *clkspec, void *data)
482{
483 return ERR_PTR(-ENOENT);
484}
485static inline const char *of_clk_get_parent_name(struct device_node *np,
486 int index)
487{
488 return NULL;
489}
490#define of_clk_init(matches) \
491 { while (0); }
492#endif /* CONFIG_OF */
447#endif /* CONFIG_COMMON_CLK */ 493#endif /* CONFIG_COMMON_CLK */
448#endif /* CLK_PROVIDER_H */ 494#endif /* CLK_PROVIDER_H */
diff --git a/include/linux/clk/tegra.h b/include/linux/clk/tegra.h
index 642789baec74..23a0ceee831f 100644
--- a/include/linux/clk/tegra.h
+++ b/include/linux/clk/tegra.h
@@ -120,9 +120,13 @@ static inline void tegra_cpu_clock_resume(void)
120} 120}
121#endif 121#endif
122 122
123#ifdef CONFIG_ARCH_TEGRA
123void tegra_periph_reset_deassert(struct clk *c); 124void tegra_periph_reset_deassert(struct clk *c);
124void tegra_periph_reset_assert(struct clk *c); 125void tegra_periph_reset_assert(struct clk *c);
125void tegra_clocks_init(void); 126#else
127static inline void tegra_periph_reset_deassert(struct clk *c) {}
128static inline void tegra_periph_reset_assert(struct clk *c) {}
129#endif
126void tegra_clocks_apply_init_table(void); 130void tegra_clocks_apply_init_table(void);
127 131
128#endif /* __LINUX_CLK_TEGRA_H_ */ 132#endif /* __LINUX_CLK_TEGRA_H_ */
diff --git a/include/linux/mfd/abx500/ab8500-sysctrl.h b/include/linux/mfd/abx500/ab8500-sysctrl.h
index 990bc93f46e1..adba89d9c660 100644
--- a/include/linux/mfd/abx500/ab8500-sysctrl.h
+++ b/include/linux/mfd/abx500/ab8500-sysctrl.h
@@ -278,8 +278,8 @@ struct ab8500_sysctrl_platform_data {
278 278
279#define AB9540_SYSCLK12CONFCTRL_PLL26TO38ENA BIT(0) 279#define AB9540_SYSCLK12CONFCTRL_PLL26TO38ENA BIT(0)
280#define AB9540_SYSCLK12CONFCTRL_SYSCLK12USBMUXSEL BIT(1) 280#define AB9540_SYSCLK12CONFCTRL_SYSCLK12USBMUXSEL BIT(1)
281#define AB9540_SYSCLK12CONFCTRL_INT384MHZMUXSEL_MASK 0x0C 281#define AB9540_SYSCLK12CONFCTRL_INT384MHZMUXSEL0 BIT(2)
282#define AB9540_SYSCLK12CONFCTRL_INT384MHZMUXSEL_SHIFT 2 282#define AB9540_SYSCLK12CONFCTRL_INT384MHZMUXSEL1 BIT(3)
283#define AB9540_SYSCLK12CONFCTRL_SYSCLK12BUFMUX BIT(4) 283#define AB9540_SYSCLK12CONFCTRL_SYSCLK12BUFMUX BIT(4)
284#define AB9540_SYSCLK12CONFCTRL_SYSCLK12PLLMUX BIT(5) 284#define AB9540_SYSCLK12CONFCTRL_SYSCLK12PLLMUX BIT(5)
285#define AB9540_SYSCLK12CONFCTRL_SYSCLK2MUXVALID BIT(6) 285#define AB9540_SYSCLK12CONFCTRL_SYSCLK2MUXVALID BIT(6)
diff --git a/include/linux/mfd/dbx500-prcmu.h b/include/linux/mfd/dbx500-prcmu.h
index 689e6a0d9c99..ca0790fba2f5 100644
--- a/include/linux/mfd/dbx500-prcmu.h
+++ b/include/linux/mfd/dbx500-prcmu.h
@@ -134,6 +134,11 @@ enum prcmu_clock {
134 PRCMU_SIACLK, 134 PRCMU_SIACLK,
135 PRCMU_SVACLK, 135 PRCMU_SVACLK,
136 PRCMU_ACLK, 136 PRCMU_ACLK,
137 PRCMU_HVACLK, /* Ux540 only */
138 PRCMU_G1CLK, /* Ux540 only */
139 PRCMU_SDMMCHCLK,
140 PRCMU_CAMCLK,
141 PRCMU_BML8580CLK,
137 PRCMU_NUM_REG_CLOCKS, 142 PRCMU_NUM_REG_CLOCKS,
138 PRCMU_SYSCLK = PRCMU_NUM_REG_CLOCKS, 143 PRCMU_SYSCLK = PRCMU_NUM_REG_CLOCKS,
139 PRCMU_CDCLK, 144 PRCMU_CDCLK,
@@ -148,6 +153,13 @@ enum prcmu_clock {
148 PRCMU_DSI0ESCCLK, 153 PRCMU_DSI0ESCCLK,
149 PRCMU_DSI1ESCCLK, 154 PRCMU_DSI1ESCCLK,
150 PRCMU_DSI2ESCCLK, 155 PRCMU_DSI2ESCCLK,
156 /* LCD DSI PLL - Ux540 only */
157 PRCMU_PLLDSI_LCD,
158 PRCMU_DSI0CLK_LCD,
159 PRCMU_DSI1CLK_LCD,
160 PRCMU_DSI0ESCCLK_LCD,
161 PRCMU_DSI1ESCCLK_LCD,
162 PRCMU_DSI2ESCCLK_LCD,
151}; 163};
152 164
153/** 165/**
diff --git a/include/linux/platform_data/clk-ux500.h b/include/linux/platform_data/clk-ux500.h
index 320d9c39ea0a..9d98f3aaa16c 100644
--- a/include/linux/platform_data/clk-ux500.h
+++ b/include/linux/platform_data/clk-ux500.h
@@ -12,7 +12,9 @@
12 12
13void u8500_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base, 13void u8500_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
14 u32 clkrst5_base, u32 clkrst6_base); 14 u32 clkrst5_base, u32 clkrst6_base);
15void u9540_clk_init(void); 15void u9540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
16void u8540_clk_init(void); 16 u32 clkrst5_base, u32 clkrst6_base);
17void u8540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
18 u32 clkrst5_base, u32 clkrst6_base);
17 19
18#endif /* __CLK_UX500_H */ 20#endif /* __CLK_UX500_H */
diff --git a/include/linux/platform_data/si5351.h b/include/linux/platform_data/si5351.h
index 92dabcaf6499..54334393ab92 100644
--- a/include/linux/platform_data/si5351.h
+++ b/include/linux/platform_data/si5351.h
@@ -79,6 +79,23 @@ enum si5351_drive_strength {
79}; 79};
80 80
81/** 81/**
82 * enum si5351_disable_state - Si5351 clock output disable state
83 * @SI5351_DISABLE_DEFAULT: default, do not change eeprom config
84 * @SI5351_DISABLE_LOW: CLKx is set to a LOW state when disabled
85 * @SI5351_DISABLE_HIGH: CLKx is set to a HIGH state when disabled
86 * @SI5351_DISABLE_FLOATING: CLKx is set to a FLOATING state when
87 * disabled
88 * @SI5351_DISABLE_NEVER: CLKx is NEVER disabled
89 */
90enum si5351_disable_state {
91 SI5351_DISABLE_DEFAULT = 0,
92 SI5351_DISABLE_LOW,
93 SI5351_DISABLE_HIGH,
94 SI5351_DISABLE_FLOATING,
95 SI5351_DISABLE_NEVER,
96};
97
98/**
82 * struct si5351_clkout_config - Si5351 clock output configuration 99 * struct si5351_clkout_config - Si5351 clock output configuration
83 * @clkout: clkout number 100 * @clkout: clkout number
84 * @multisynth_src: multisynth source clock 101 * @multisynth_src: multisynth source clock
@@ -91,6 +108,7 @@ struct si5351_clkout_config {
91 enum si5351_multisynth_src multisynth_src; 108 enum si5351_multisynth_src multisynth_src;
92 enum si5351_clkout_src clkout_src; 109 enum si5351_clkout_src clkout_src;
93 enum si5351_drive_strength drive; 110 enum si5351_drive_strength drive;
111 enum si5351_disable_state disable_state;
94 bool pll_master; 112 bool pll_master;
95 unsigned long rate; 113 unsigned long rate;
96}; 114};