1
0
Fork 0
freescale-linux-fslc/drivers/clk/mvebu
Pali Rohár 6d7507243e clk: mvebu: armada-37xx-periph: Fix workaround for switching from L1 to L0
[ Upstream commit e93033aff6 ]

When CPU frequency is at 250 MHz and set_rate() is called with 500 MHz (L1)
quickly followed by a call with 1 GHz (L0), the CPU does not necessarily
stay in L1 for at least 20ms as is required by Marvell errata.

This situation happens frequently with the ondemand cpufreq governor and
can be also reproduced with userspace governor. In most cases it causes CPU
to crash.

This change fixes the above issue and ensures that the CPU always stays in
L1 for at least 20ms when switching from any state to L0.

Signed-off-by: Marek Behún <kabel@kernel.org>
Signed-off-by: Pali Rohár <pali@kernel.org>
Acked-by: Stephen Boyd <sboyd@kernel.org>
Acked-by: Gregory CLEMENT <gregory.clement@bootlin.com>
Tested-by: Tomasz Maciej Nowak <tmn505@gmail.com>
Tested-by: Anders Trier Olesen <anders.trier.olesen@gmail.com>
Tested-by: Philip Soares <philips@netisense.com>
Fixes: 61c40f35f5 ("clk: mvebu: armada-37xx-periph: Fix switching CPU rate from 300Mhz to 1.2GHz")
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-05-14 09:50:17 +02:00
..
Kconfig clk: mvebu: ARMADA_AP_CPU_CLK needs to select ARMADA_AP_CP_HELPER 2020-07-11 09:07:06 -07:00
Makefile clk: mvebu: add CPU clock driver for Armada 7K/8K 2019-08-08 09:08:09 -07:00
ap-cpu-clk.c clk: mvebu: ap80x-cpu: use semicolons rather than commas to separate statements 2020-10-13 17:43:05 -07:00
ap806-system-controller.c clk: mvebu: ap80x: add AP807 clock support 2019-09-17 22:15:41 -07:00
armada-37xx-periph.c clk: mvebu: armada-37xx-periph: Fix workaround for switching from L1 to L0 2021-05-14 09:50:17 +02:00
armada-37xx-tbg.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
armada-37xx-xtal.c clk: mvebu: a3700: fix the XTAL MODE pin to MPP1_9 2020-12-30 11:54:26 +01:00
armada-38x.c clk: mvebu: use SPDX-License-Identifier 2018-10-01 15:12:47 -07:00
armada-39x.c clk: mvebu: use SPDX-License-Identifier 2018-10-01 15:12:47 -07:00
armada-370.c clk: armada-370: fix refcount leak in a370_clk_init() 2018-12-28 11:42:41 -08:00
armada-375.c clk: mvebu: use SPDX-License-Identifier 2018-10-01 15:12:47 -07:00
armada-xp.c clk: armada-xp: remove unused code 2019-11-13 13:19:56 -08:00
armada_ap_cp_helper.c clk: mvebu: add helper file for Armada AP and CP clocks 2019-08-08 09:08:09 -07:00
armada_ap_cp_helper.h clk: mvebu: add helper file for Armada AP and CP clocks 2019-08-08 09:08:09 -07:00
clk-corediv.c clk: Remove io.h from clk-provider.h 2019-05-15 13:21:37 -07:00
clk-cpu.c This time it looks like a quieter release cycle in the clk tree. I guess that's 2018-10-31 11:08:30 -07:00
common.c clk: mvebu: fix spelling mistake "gatable" -> "gateable" 2019-04-18 14:53:23 -07:00
common.h clk: mvebu: use SPDX-License-Identifier 2018-10-01 15:12:47 -07:00
cp110-system-controller.c drivers/clk: convert VL struct to struct_size 2019-11-08 08:36:12 -08:00
dove-divider.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dove-divider.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dove.c clk: dove: fix refcount leak in dove_clk_init() 2018-12-28 11:45:43 -08:00
kirkwood.c clk: kirkwood: Add support for MV98DX1135 2019-06-25 14:35:21 -07:00
mv98dx3236.c clk: mv98dx3236: fix refcount leak in mv98dx3236_clk_init() 2018-12-28 11:45:41 -08:00
orion.c clk: mvebu: use SPDX-License-Identifier 2018-10-01 15:12:47 -07:00