clk: tegra: MBIST work around for Tegra210
authorPeter De Schrijver <pdeschrijver@nvidia.com>
Thu, 25 Jan 2018 14:00:12 +0000 (16:00 +0200)
committerThierry Reding <treding@nvidia.com>
Thu, 8 Mar 2018 18:18:08 +0000 (19:18 +0100)
commite403d00573431e1e3de1710a91c6090c60ec16af
tree5f6822fecb0e38b045b2fcf1a2848920cace7542
parentcbfc8d0a85aa72ad66227c69b08904143dc73bbb
clk: tegra: MBIST work around for Tegra210

Tegra210 has a hw bug which can cause IP blocks to lock up when ungating a
domain. The reason is that the logic responsible for resetting the memory
built-in self test mode can come up in an undefined state because its
clock is gated by a second level clock gate (SLCG). Work around this by
making sure the logic will get some clock edges by ensuring the relevant
clock is enabled and temporarily override the relevant SLCGs.
Unfortunately for some IP blocks, the control bits for overriding the
SLCGs are not in CAR, but in the IP block itself. This means we need to
map a few extra register banks in the clock code.

Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>
Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Tested-by: Jon Hunter <jonathanh@nvidia.com>
Tested-by: Hector Martin <marcan@marcan.st>
Tested-by: Andre Heider <a.heider@gmail.com>
Tested-by: Mikko Perttunen <mperttunen@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
fixup mbist
drivers/clk/tegra/clk-tegra210.c
include/linux/clk/tegra.h