arm: tegra: make sure that the PG request is accepted by PMC
authorPrashant Gaikwad <pgaikwad@nvidia.com>
Tue, 15 Oct 2013 12:19:54 +0000 (17:19 +0530)
committerBharat Nihalani <bnihalani@nvidia.com>
Wed, 16 Oct 2013 12:20:49 +0000 (05:20 -0700)
commit7f36693c47cb23730a6b2822e0975be65fb0c51d
treedc7060640066c6da7522037ccbaa28f6b060da28
parent207abf8566b9861bc6e21b9dc11f74f2a81c2842
arm: tegra: make sure that the PG request is accepted by PMC

The role of START bit has changed, beginning T35. To account
for bug 863229 start bit will now be cleared by HW when PMC
accepts the request to powergate or unpowergate the partition.
So in order to powergate/unpowergate a partition SW needs to
do the following.

1. Check to see if the partition is already in the correct state,
by looking at the PWRGATE_STATUS register. If not then SW reads
the PWRGATE_TOGGLE register to see if START bit is 0. If not poll
till start bit is set to 0.
2. After that program the PWRGATE_TOGGLE register with start bit
set as 1 and choose the required partition to be powrgated.
3. Ideally then SW can poll to check the START bit going back to 0,
to indicate that PMC has accepted the request.
4. Then poll the STATUS register to make sure the required partition
is powergated/unpowergated.

Also, in current implementation SW is polling REMOVE_CLAMPING_CMD to
check the CLAMP remove status. As per the HW guys this register is
write only and does no make sense polling it. Instead use CLAMP_STATUS
for polling.

Bug 1376147

Change-Id: Id34e900dff870d4d22288922ee1d0487ab4911dc
Signed-off-by: Prashant Gaikwad <pgaikwad@nvidia.com>
Reviewed-on: http://git-master/r/299801
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Aleksandr Frid <afrid@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
arch/arm/mach-tegra/powergate.c