ARM: tegra: Special-case the 3D clamps on Tegra124
authorThierry Reding <thierry.reding@gmail.com>
Fri, 13 Dec 2013 16:31:04 +0000 (17:31 +0100)
committerStephen Warren <swarren@nvidia.com>
Mon, 16 Dec 2013 21:02:51 +0000 (14:02 -0700)
A separate register is used to remove the clamps for the GPU on
Tegra124. In order to be able to use the same API, special-case
this particular partition.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
arch/arm/mach-tegra/powergate.c

index a8ac634eda7732549bd27bf8aee3d1cdf42aab44..0026fb6c984b96d490e45a2937934b27a2712300 100644 (file)
@@ -41,6 +41,8 @@
 
 #define PWRGATE_STATUS         0x38
 
+#define GPU_RG_CNTRL           0x2d4
+
 static int tegra_num_powerdomains;
 static int tegra_num_cpu_domains;
 static const u8 *tegra_cpu_domains;
@@ -136,6 +138,17 @@ int tegra_powergate_remove_clamping(int id)
        if (id < 0 || id >= tegra_num_powerdomains)
                return -EINVAL;
 
+       /*
+        * The Tegra124 GPU has a separate register (with different semantics)
+        * to remove clamps.
+        */
+       if (tegra_chip_id == TEGRA124) {
+               if (id == TEGRA_POWERGATE_3D) {
+                       pmc_write(0, GPU_RG_CNTRL);
+                       return 0;
+               }
+       }
+
        /*
         * Tegra 2 has a bug where PCIE and VDE clamping masks are
         * swapped relatively to the partition ids