linux/drivers/clk
Michael Turquette 904e6ead02 clk: migrate ref counts when orphans are reunited
It's always nice to see families reunited, and this is equally true when
talking about parent clocks and their children. However, if the orphan
clk had a positive prepare_count or enable_count, then we would not
migrate those counts up the parent chain correctly.

This has manifested with the recent critical clocks feature, which often
enables clocks very early, before their parents have been registered.

Fixed by replacing the call to clk_core_reparent with calls to
__clk_set_parent_{before,after}.

Cc: James Liao <jamesjj.liao@mediatek.com>
Cc: Erin Lo <erin.lo@mediatek.com>
Signed-off-by: Michael Turquette <mturquette@baylibre.com>
[sboyd@codeaurora.org: Recalc accuracies and rates too]
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2016-08-11 18:06:50 -07: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: Fix SD clocks 2016-08-11 17:47:56 -07: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: Fix inverted test condition in ccu_helper_wait_for_lock 2016-08-10 15:07:01 -07: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: moxart: Include clk.h 2015-07-20 11:11:33 -07:00
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: migrate ref counts when orphans are reunited 2016-08-11 18:06:50 -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