linux-hardened/drivers/clk
Heiko Stuebner 5035981979 clk-divider: make sure read-only dividers do not write to their register
Commit e6d5e7d90b ("clk-divider: Fix READ_ONLY when divider > 1") removed
the special ops struct for read-only clocks and instead opted to handle
them inside the regular ops.

On the rk3368 this results in breakage as aclkm now gets set a value.
While it is the same divider value, the A53 core still doesn't like it,
which can result in the cpu ending up in a hang.
The reason being that "ACLKENMasserts one clock cycle before the rising
edge of ACLKM" and the clock should only be touched when STANDBYWFIL2
is asserted.

To fix this, reintroduce the read-only ops but do include the round_rate
callback. That way no writes that may be unsafe are done to the divider
register in any case.

The Rockchip use of the clk_divider_ops is adapted to this split again,
as is the nxp, lpc18xx-ccu driver that was included since the original
commit. On lpc18xx-ccu the divider seems to always be read-only
so only uses the new ops now.

Fixes: e6d5e7d90b ("clk-divider: Fix READ_ONLY when divider > 1")
Reported-by: Zhang Qing <zhangqing@rock-chips.com>
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
2016-01-29 12:44:37 -08:00
..
at91 clk: at91: Revert "keep slow clk enabled to prevent system hang" 2015-11-20 10:53:12 -08:00
bcm Merge branch 'clk-bcm2835' into clk-next 2015-12-24 20:39:02 -08:00
berlin ARM: SoC driver updates for v4.4 2015-11-10 15:00:03 -08:00
h8300 h8300: unaligned divcr register support. 2015-11-08 22:44:37 +09:00
hisilicon clk: Remove unneeded semicolons 2015-09-17 11:15:14 -07:00
imx Merge commit 'fe5fa8fbd4d47f40a45fa29ee1abdb10cb061ec2' into clk-next 2015-12-22 11:57:35 -08:00
ingenic clk: ingenic: Include clk.h 2015-07-20 11:11:36 -07:00
keystone clk: keystone: fix a trivial typo 2015-10-19 15:29:09 -07:00
mediatek clk: mediatek: Add USB clock support in MT8173 APMIXEDSYS 2015-10-01 12:06:00 +08:00
meson clk: meson8b: Properly include clk.h 2015-07-20 10:53:10 -07:00
mmp clk: mmp: stop using platform headers 2015-12-01 21:44:22 +01:00
mvebu clk: mvebu: Mark ioremapped memory as __iomem 2016-01-29 12:06:47 -08:00
mxs clk:mxs: Fix bug on frequency divider 2015-10-01 15:24:34 -07:00
nxp clk-divider: make sure read-only dividers do not write to their register 2016-01-29 12:44:37 -08:00
pistachio clk: pistachio: correct critical clock list 2015-08-26 11:34:43 -07:00
pxa ARM: pxa: make more mach/*.h files local 2015-12-01 21:52:50 +01:00
qcom Merge branch 'clk-msm8996' into clk-next 2015-12-01 00:00:48 -08:00
rockchip clk-divider: make sure read-only dividers do not write to their register 2016-01-29 12:44:37 -08:00
samsung ARM: DT updates for v4.5 2016-01-20 18:16:29 -08:00
shmobile Merge branch 'clk-renesas' into clk-next 2015-12-31 15:17:39 -08:00
sirf clk: atlas7: fix noc/socket disconnect/reconnect for unit clks 2015-09-29 08:27:14 -07:00
socfpga clk: socfpga: Add a second parent option for the dbg_base_clk 2015-08-24 16:49:03 -07:00
spear The clk framework changes for 4.3 are mostly updates to existing drivers 2015-08-31 17:26:48 -07:00
st clk: st: avoid uninitialized variable use 2015-11-20 10:59:26 -08:00
sunxi Allwinner clocks changes for 4.5 2015-12-23 23:23:18 -08:00
tegra asm-generic changes for 4.5 2016-01-20 17:30:20 -08:00
ti ARM: SoC non-urgent fixes for v4.5 2016-01-20 17:44:16 -08:00
ux500 clk/ARM: move Ux500 PRCC bases to the device tree 2015-08-24 16:49:14 -07:00
versatile ARM: SoC multiplatform code changes for v4.5 2016-01-20 18:03:56 -08:00
x86
zte clk: zx: Constify parent names in clock init data 2015-07-28 11:59:39 -07:00
zynq ARM: SoC platform updates for v4.3 2015-09-01 12:18:40 -07:00
clk-asm9260.c clk: asm9260: Fix of_io_request_and_map error check 2015-05-13 12:32:52 -07:00
clk-axi-clkgen.c clk: axi-clkgen: Remove clk.h include 2015-07-20 10:52:50 -07:00
clk-axm5516.c clk: axm55xx: Use %zu in pr_info for size_t 2015-05-13 12:32:53 -07:00
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: cdce925: Include clk.h 2015-07-20 11:11:32 -07:00
clk-clps711x.c clk: clps711x: Remove clk.h include 2015-07-20 10:52:53 -07:00
clk-composite.c clk: Convert basic types to clk_hw based provider APIs 2015-08-24 16:48:48 -07:00
clk-conf.c clk: clk-conf: Fix typo in comment 2015-05-21 11:55:05 -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: make sure read-only dividers do not write to their register 2016-01-29 12:44:37 -08:00
clk-efm32gg.c clk: efm32gg: Remove clk.h include 2015-07-20 10:52:54 -07:00
clk-fixed-factor.c clk: Convert basic types to clk_hw based provider APIs 2015-08-24 16:48:48 -07:00
clk-fixed-rate.c clk: basic-types: Remove useless allocation failure printks 2015-05-14 16:51:50 -07:00
clk-fractional-divider.c clk: fractional-divider: switch to rational best approximation 2015-10-02 11:29:48 -07:00
clk-gate.c clk: basic-type: Silence warnings about lock imbalances 2015-07-28 11:59:28 -07:00
clk-gpio.c clk: fix clk-gpio.c with optional clock= DT property 2016-01-02 23:19:50 -08:00
clk-highbank.c clk: highbank: Include clk.h 2015-07-20 11:11:22 -07:00
clk-ls1x.c clk: ls1x: Fix duplicate const for parent names 2015-05-05 22:50:50 -07:00
clk-max-gen.c clk: max-gen: Silence sparse warnings 2015-05-14 17:11:18 -07:00
clk-max-gen.h
clk-max77686.c drivers/clk: include <module.h> for clk-max77xxx modular code 2015-06-16 14:12:25 -04:00
clk-max77802.c clk: max77802: Update MODULE_AUTHOR() email address 2015-10-14 11:31:55 -07:00
clk-mb86s7x.c clk: Add clock driver for mb86s7x 2015-04-10 13:51:55 -07:00
clk-moxart.c clk: moxart: Include clk.h 2015-07-20 11:11:33 -07:00
clk-multiplier.c clk: Remove clk_{register,unregister}_multiplier() 2015-10-23 13:34:46 -07:00
clk-mux.c clk: fix codying style of if ... else blocks 2015-12-22 10:11:52 -08:00
clk-nomadik.c clk: nomadik: Remove clk.h and clkdev.h includes 2015-07-20 10:52:57 -07:00
clk-nspire.c
clk-palmas.c clk: palmas: Remove clkdev.h includes 2015-07-20 10:52:58 -07:00
clk-pwm.c clk: Add PWM clock driver 2015-04-10 14:44:43 -07:00
clk-qoriq.c clk: qoriq: fix memory leak 2015-11-30 13:00:54 -08:00
clk-rk808.c clk: rk808: Remove clk.h include 2015-07-20 10:53:00 -07:00
clk-s2mps11.c clk: s2mps11: Use kcalloc instead of kzalloc for array allocation 2015-07-28 11:59:32 -07:00
clk-scpi.c clk: scpi: Fix checking return value of platform_device_register_simple() 2016-01-29 12:07:59 -08:00
clk-si514.c Add driver for the si514 clock generator chip 2015-10-08 23:52:55 -07:00
clk-si570.c clk: si570: Include clk.h 2015-07-20 11:11:35 -07:00
clk-si5351.c clk: si5351: Add PLL soft reset 2015-11-20 10:40:37 -08:00
clk-si5351.h
clk-stm32f4.c clk: stm32f4: Convert to clk_hw based provider APIs 2015-08-24 16:48:51 -07:00
clk-tango4.c clk: tango4: clkgen driver for Tango4 platforms 2015-11-16 11:07:06 -08:00
clk-twl6040.c Merge branch 'cleanup-clk-h-includes' into clk-next 2015-07-28 11:59:09 -07:00
clk-u300.c clk: u300: Remove clk.h include 2015-07-20 10:53:04 -07:00
clk-vt8500.c
clk-wm831x.c clk: wm831x: Remove clk.h include 2015-07-20 10:53:05 -07:00
clk-xgene.c clk: xgene: Fix divider with non-zero shift value 2015-11-20 10:49:14 -08:00
clk.c Merge branch 'clk-rockchip' into clk-next 2015-12-23 13:08:56 -08:00
clk.h clk: Replace of_clk_get_by_clkspec() with of_clk_get_from_provider() 2015-03-12 12:20:34 -07:00
clkdev.c clkdev: fix clk_add_alias() with a NULL alias device name 2015-10-20 17:24:08 +01:00
Kconfig clk: remove duplicated COMMON_CLK_NXP record from clk/Kconfig 2016-01-13 18:09:52 -08:00
Makefile clk: tango4: rename ARCH_TANGOX to ARCH_TANGO 2016-01-29 12:08:02 -08:00