summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMatt Craighead <mcraighead@nvidia.com>2015-10-06 18:22:08 -0400
committerDeepak Nibade <dnibade@nvidia.com>2016-12-27 04:52:08 -0500
commit6f4d1bb2e70e97424d44cba131199b41deb102d8 (patch)
treedf12f14240cc9fbc341199a1e80fc84f5a7fd55a /drivers
parent1ba28cf44d91c0d3c83372ea2f248b5588893f6a (diff)
gpu: nvgpu: gp10b: skip powergate if no BPMP
The powergating APIs only work if the BPMP is running. Skip these calls if it's not available, instead of relying on is_linsim, which doesn't work under all environments. Change-Id: I34325847b2ebf33c5db2f31111c57d22ed28ef53 Signed-off-by: Matt Craighead <mcraighead@nvidia.com> Reviewed-on: http://git-master/r/812415 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c b/drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c
index eb99a66c..559cad2e 100644
--- a/drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c
+++ b/drivers/gpu/nvgpu/gp10b/platform_gp10b_tegra.c
@@ -25,6 +25,7 @@
25#include <linux/nvmap.h> 25#include <linux/nvmap.h>
26#include <linux/tegra_pm_domains.h> 26#include <linux/tegra_pm_domains.h>
27#include <linux/reset.h> 27#include <linux/reset.h>
28#include <soc/tegra/tegra_bpmp.h>
28#include "gk20a/platform_gk20a.h" 29#include "gk20a/platform_gk20a.h"
29#include "gk20a/gk20a.h" 30#include "gk20a/gk20a.h"
30#include "platform_tegra.h" 31#include "platform_tegra.h"
@@ -136,7 +137,7 @@ static bool gp10b_tegra_is_railgated(struct platform_device *pdev)
136{ 137{
137 bool ret = false; 138 bool ret = false;
138 139
139 if (!tegra_platform_is_linsim()) 140 if (tegra_bpmp_running())
140 ret = !tegra_powergate_is_powered(TEGRA_POWERGATE_GPU); 141 ret = !tegra_powergate_is_powered(TEGRA_POWERGATE_GPU);
141 142
142 return ret; 143 return ret;
@@ -146,7 +147,7 @@ static int gp10b_tegra_railgate(struct platform_device *pdev)
146{ 147{
147 struct gk20a_platform *platform = gk20a_get_platform(pdev); 148 struct gk20a_platform *platform = gk20a_get_platform(pdev);
148 149
149 if (!tegra_platform_is_linsim() && 150 if (tegra_bpmp_running() &&
150 tegra_powergate_is_powered(TEGRA_POWERGATE_GPU)) { 151 tegra_powergate_is_powered(TEGRA_POWERGATE_GPU)) {
151 int i; 152 int i;
152 for (i = 0; i < platform->num_clks; i++) { 153 for (i = 0; i < platform->num_clks; i++) {
@@ -163,7 +164,7 @@ static int gp10b_tegra_unrailgate(struct platform_device *pdev)
163 int ret = 0; 164 int ret = 0;
164 struct gk20a_platform *platform = gk20a_get_platform(pdev); 165 struct gk20a_platform *platform = gk20a_get_platform(pdev);
165 166
166 if (!tegra_platform_is_linsim()) { 167 if (tegra_bpmp_running()) {
167 int i; 168 int i;
168 ret = tegra_unpowergate_partition(TEGRA_POWERGATE_GPU); 169 ret = tegra_unpowergate_partition(TEGRA_POWERGATE_GPU);
169 for (i = 0; i < platform->num_clks; i++) { 170 for (i = 0; i < platform->num_clks; i++) {