mirror_ubuntu-kernels/drivers/soc
Dmitry Osipenko c45e66a6b9 soc/tegra: pmc: Fix completion of power-gate toggling
The SW-initiated power gate toggling is dropped by PMC if there is
contention with a HW-initiated toggling, i.e. when one of CPU cores is
gated by cpuidle driver. Software should retry the toggling after 10
microseconds on Tegra20/30 SoCs, hence add the retrying. On Tegra114+ the
toggling method was changed in hardware, the TOGGLE_START bit indicates
whether PMC is busy or could accept the command to toggle, hence handle
that bit properly.

The problem pops up after enabling dynamic power gating of 3D hardware,
where 3D power domain fails to turn on/off "randomly".

The programming sequence and quirks are documented in TRMs, but PMC
driver obliviously re-used the Tegra20 logic for Tegra30+, which strikes
back now. The 10 microseconds and other timeouts aren't documented in TRM,
they are taken from downstream kernel.

Link: https://nv-tegra.nvidia.com/gitweb/?p=linux-2.6.git;a=commit;h=311dd1c318b70e93bcefec15456a10ff2b9eb0ff
Link: https://nv-tegra.nvidia.com/gitweb/?p=linux-3.10.git;a=commit;h=7f36693c47cb23730a6b2822e0975be65fb0c51d
Tested-by: Peter Geis <pgwipeout@gmail.com> # Ouya T30
Tested-by: Nicolas Chauvet <kwizart@gmail.com> # PAZ00 T20 and TK1 T124
Tested-by: Matt Merhar <mattmerhar@protonmail.com> # Ouya T30
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
2021-03-26 13:10:25 +01:00
..
actions soc: actions: include header to fix missing prototype 2020-09-22 12:45:16 +05:30
amlogic soc: amlogic: replace devm_reset_control_array_get() 2020-11-30 16:23:11 -08:00
aspeed soc: aspeed: socinfo: Add new systems 2021-02-10 22:25:45 +10:30
atmel drivers: soc: atmel: fix type for same7 2021-02-04 21:54:31 +01:00
bcm soc: bcm: brcmstb: Remove soc_is_brcmstb() 2021-01-27 09:36:41 -08:00
canaan clk: Add RISC-V Canaan Kendryte K210 clock driver 2021-02-22 17:51:04 -08:00
dove
fsl soc: fsl: qe: add cpm_muram_free_addr() helper 2021-01-21 12:19:55 -08:00
gemini
imx ARM: SoC drivers for v5.12 2021-02-20 18:42:28 -08:00
ixp4xx
lantiq
litex OpenRISC updates for 5.12 2021-02-26 14:16:06 -08:00
mediatek drm pull for 5.12-rc1 2021-02-21 14:44:44 -08:00
qcom soc: qcom: ocmem: don't return NULL in of_get_ocmem 2021-02-02 15:39:13 -06:00
renesas soc: renesas: rcar-sysc: Mark device node OF_POPULATED after init 2021-01-29 09:10:25 +01:00
rockchip soc: rockchip: io-domain: Fix error return code in rockchip_iodomain_probe() 2020-12-04 11:20:47 +01:00
samsung soc: samsung: pm_domains: Convert to regular platform driver 2021-01-15 20:50:34 +01:00
sifive RISC-V: sifive_l2_cache: Update L2 cache driver to support SiFive FU740 2021-01-07 17:28:27 -08:00
sunxi ARM: SoC drivers for v5.12 2021-02-20 18:42:28 -08:00
tegra soc/tegra: pmc: Fix completion of power-gate toggling 2021-03-26 13:10:25 +01:00
ti ARM: SoC drivers for v5.12 2021-02-20 18:42:28 -08:00
ux500 soc: ux500: Use custom soc attribute group instead of device_create_file 2020-07-06 09:48:06 +01:00
versatile soc: integrator: Drop pointless static qualifier in integrator_soc_init() 2020-08-20 08:57:05 +02:00
xilinx clk: xilinx: move xlnx_vcu clock driver from soc 2021-02-08 18:31:25 -08:00
Kconfig RISC-V Patches for the 5.12 Merge Window 2021-02-26 10:28:35 -08:00
Makefile RISC-V Patches for the 5.12 Merge Window 2021-02-26 10:28:35 -08:00