linux/drivers/clk
Chen-Yu Tsai 8adfb08605 clk: sunxi-ng: mux: Add clk notifier functions
On sunxi we support cpufreq by changing the clock rate of PLL-CPU.
It's possible the clock output of the PLL goes out of the CPU's
operational limits when the PLL's multipliers / dividers are changed
and it hasn't stabilized yet. This would result in the CPU hanging.

To circumvent this, we temporarily switch the CPU mux clock to another
stable clock before the rate change, and switch it back after the PLL
stabilizes. This is done with clk notifiers registered on the PLL.

This patch adds common functions for notifiers to reparent mux clocks.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
2016-08-25 22:30:36 +02:00
..
at91 Merge branch 'clk-fixes' into clk-next 2016-07-21 17:30:54 -07:00
axis clk: add artpec-6 clock controller 2016-04-15 16:02:16 -07:00
axs10x clk/axs10x: Add I2S PLL clock driver 2016-05-06 10:35:04 -07:00
bcm clk: bcm: iproc: Migrate to clk_hw based registration and OF APIs 2016-06-30 12:26:45 -07:00
berlin ARM: SoC driver updates for v4.4 2015-11-10 15:00:03 -08:00
h8300 clk: h8300: Properly cast to __iomem pointer 2016-02-26 16:01:32 -08:00
hisilicon clk: hi6220: Change syspll and media_syspll clk to 1.19GHz 2016-07-06 15:20:31 -07:00
imx clk: imx7d: do not set parent of ethernet time/ref clocks 2016-07-12 15:31:14 -07:00
ingenic clk: ingenic: Allow divider value to be divided 2016-05-12 14:48:25 -07:00
keystone clk: keystone: fix a trivial typo 2015-10-19 15:29:09 -07:00
mediatek clk: mediatek: remove hdmitx_dig_cts from TOP clocks 2016-05-06 17:47:42 +02:00
meson Merge branch 'clk-s905' into clk-next 2016-07-15 19:15:40 -07:00
microchip clk: microchip: Remove CLK_IS_ROOT 2016-06-01 14:52:54 -07:00
mmp clk: mmp: Remove CLK_IS_ROOT 2016-04-15 16:50:01 -07:00
mvebu clk: mvebu: new driver for Armada CP110 system controller 2016-05-06 15:27:02 -07:00
mxs clk: mxs: Remove CLK_IS_ROOT 2016-03-02 17:44:59 -08:00
nxp clk: lpc32xx: allow peripheral clock selection in device tree 2016-07-06 17:51:14 -07:00
pistachio clk: pistachio: correct critical clock list 2015-08-26 11:34:43 -07:00
pxa The clk changes for this release cycle are mostly dominated by 2016-03-23 06:06:45 -07:00
qcom clk: qcom: add EBI2 clocks to the MSM8660 GCC 2016-07-01 18:12:45 -07:00
renesas clk: renesas: r8a7795: Add THS/TSC clock 2016-06-21 09:21:06 +02:00
rockchip Placeholder for the rk3399 watchdog pclk, some newly exported 2016-07-01 17:30:42 -07:00
samsung clk: samsung: Allow modular build of the Audio Subsystem CLKCON driver 2016-07-13 14:59:53 -07:00
sirf clk: sirf: Remove CLK_IS_ROOT 2016-04-15 16:50:04 -07:00
socfpga clk: socfpga: allow for multiple parents on Arria10 periph clocks 2016-02-22 14:17:37 -08:00
spear clk: spear: Remove CLK_IS_ROOT 2016-03-02 17:46:55 -08:00
st clk: st: clkgen-pll: Detect critical clocks 2016-06-30 12:17:11 -07:00
sunxi Merge branch 'clk-fixes' into clk-next 2016-07-21 17:30:54 -07:00
sunxi-ng clk: sunxi-ng: mux: Add clk notifier functions 2016-08-25 22:30:36 +02:00
tegra clk: tegra: Initialize UTMI PLL when enabling PLLU 2016-06-30 17:43:17 +02:00
ti ARM: DT updates for v4.8 2016-08-01 18:37:45 -04:00
ux500 ARM: ux500: use CLK_OF_DECLARE() 2016-07-12 11:24:07 +02:00
versatile clk: versatile: Remove CLK_IS_ROOT 2016-03-15 15:19:21 -07:00
x86 clk: x86: Remove clkdev.h and clk.h includes 2016-03-03 11:27:26 -08:00
zte clk: zte: Remove CLK_IS_ROOT 2016-04-15 16:50:07 -07:00
zynq clk: zynq: Remove CLK_IS_ROOT 2016-03-02 17:48:26 -08:00
clk-asm9260.c
clk-axi-clkgen.c clk: axi-clkgen: Remove sometimes impossible check 2016-01-29 17:11:02 -08:00
clk-axm5516.c
clk-cdce706.c clk: Convert __clk_get_flags() to clk_hw_get_flags() 2015-08-24 16:48:44 -07:00
clk-cdce925.c
clk-clps711x.c clk: clps711x: Changing the compatibility string to match with the smallest supported chip 2016-07-06 17:38:13 +02:00
clk-composite.c Merge branch 'clk-hw-register' (early part) into clk-next 2016-04-21 14:47:18 -07:00
clk-conf.c clk: clk-conf: Fix error message when clock isn't found 2016-07-08 11:27:58 -07:00
clk-cs2000-cp.c clk: add CS2000 Fractional-N driver 2015-11-30 16:33:38 -08:00
clk-devres.c
clk-divider.c clk: divider: Add hw based registration APIs 2016-04-19 16:55:01 -07:00
clk-efm32gg.c clk: efm32gg: Remove CLK_IS_ROOT 2016-03-02 17:48:47 -08:00
clk-fixed-factor.c clk: fixed-factor: Allow for a few clocks to change the parent rate 2016-07-01 17:16:59 -07:00
clk-fixed-rate.c clk: fixed-rate: add clk_hw_unregister_fixed_rate() 2016-06-30 13:07:10 -07:00
clk-fractional-divider.c clk: fractional-divider: Add hw based registration APIs 2016-04-19 16:56:28 -07:00
clk-gate.c clk: gate: Add hw based registration APIs 2016-04-19 16:55:01 -07:00
clk-gpio.c clk: gpio: Add hw based registration APIs 2016-04-19 16:56:28 -07:00
clk-highbank.c clk: highbank: Migrate to clk_hw based registration and OF APIs 2016-06-30 12:25:28 -07:00
clk-ls1x.c clk: ls1x: Remove CLK_IS_ROOT 2016-04-15 16:50:10 -07:00
clk-max77686.c clk: max77{686,802}: Remove CLK_IS_ROOT 2016-03-15 15:19:49 -07:00
clk-max77802.c clk: max77{686,802}: Remove CLK_IS_ROOT 2016-03-15 15:19:49 -07:00
clk-max-gen.c
clk-max-gen.h
clk-mb86s7x.c clk: mb86s7x: Remove CLK_IS_ROOT 2016-03-03 11:27:48 -08:00
clk-moxart.c
clk-multiplier.c clk: multiplier: Prevent the multiplier from under / over flowing 2016-06-20 13:00:00 -07:00
clk-mux.c clk: mux: Add hw based registration APIs 2016-04-19 16:55:01 -07:00
clk-nomadik.c clk: nomadik: Migrate to clk_hw based OF and registration APIs 2016-06-30 12:25:53 -07:00
clk-nspire.c clk: nspire: Remove CLK_IS_ROOT 2016-04-15 16:50:12 -07:00
clk-oxnas.c clk: oxnas: make it explicitly non-modular 2016-07-06 15:20:33 -07:00
clk-palmas.c clk: palmas: Remove CLK_IS_ROOT 2016-04-15 16:50:14 -07:00
clk-pwm.c clk: pwm: Use pwm_get_args() where appropriate 2016-05-17 14:45:00 +02:00
clk-qoriq.c clk: qoriq: add __init attribute 2016-04-19 18:56:15 -07:00
clk-rk808.c clk: rk808: Remove CLK_IS_ROOT 2016-04-15 16:50:18 -07:00
clk-s2mps11.c clk: s2mps11: Migrate to clk_hw based OF and registration APIs 2016-06-30 12:29:14 -07:00
clk-scpi.c clk: scpi: Remove CLK_IS_ROOT 2016-03-02 17:50:58 -08:00
clk-si514.c clk: si5{14,351,70}: Remove CLK_IS_ROOT 2016-03-02 17:51:13 -08:00
clk-si570.c clk: si5{14,351,70}: Remove CLK_IS_ROOT 2016-03-02 17:51:13 -08:00
clk-si5351.c clk: si5{14,351,70}: Remove CLK_IS_ROOT 2016-03-02 17:51:13 -08:00
clk-si5351.h
clk-stm32f4.c clk: stm32f4: fix error handling 2016-07-06 17:55:31 -07:00
clk-tango4.c clk: tango4: improve clkgen driver 2016-04-15 17:16:06 -07:00
clk-twl6040.c clk: twl6040: Remove CLK_IS_ROOT 2016-04-15 16:50:21 -07:00
clk-u300.c clk: u300: Migrate to clk_hw based registration APIs 2016-06-30 12:26:18 -07:00
clk-vt8500.c clk: vt8500: rework wm8650_find_pll_bits() 2016-06-20 17:47:53 -07:00
clk-wm831x.c clk: wm831x: Remove CLK_IS_ROOT 2016-04-15 16:50:23 -07:00
clk-xgene.c clk: xgene: Remove CLK_IS_ROOT 2016-04-15 16:50:27 -07:00
clk.c clk: core: support clocks which requires parents enable (part 2) 2016-07-01 17:42:56 -07:00
clk.h
clkdev.c treewide: replace obsolete _refok by __ref 2016-08-02 17:31:41 -04:00
Kconfig clk: oxnas: Add hardware dependencies 2016-07-12 15:31:21 -07:00
Makefile clk: Makefile: re-sort and clean up 2016-07-19 09:53:52 -07:00