]> git.baikalelectronics.ru Git - kernel.git/commit
clk: mvebu: armada-37xx-periph: Fix workaround for switching from L1 to L0
authorPali Rohár <pali@kernel.org>
Thu, 8 Apr 2021 11:42:19 +0000 (13:42 +0200)
committerViresh Kumar <viresh.kumar@linaro.org>
Fri, 9 Apr 2021 09:47:33 +0000 (15:17 +0530)
commit75c0487941f0f6f15759c78ab8b2f6743ceec189
tree7ee6265620d3b408ec443e59a201600917c5e67b
parent74430195fdb1c2ea392ed4eb6ffb77f515684f87
clk: mvebu: armada-37xx-periph: Fix workaround for switching from L1 to L0

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: 3a427970b99a ("clk: mvebu: armada-37xx-periph: Fix switching CPU rate from 300Mhz to 1.2GHz")
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/clk/mvebu/armada-37xx-periph.c