summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/os/linux/nvhost.c
diff options
context:
space:
mode:
authorAlex Waterman <alexw@nvidia.com>2018-08-21 13:35:06 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-09-27 18:04:38 -0400
commit8789cafcfb0d1e16ad0b2c61b047d275f2d684b4 (patch)
tree34092ee2fcedbfbe719c9984c5f5f06807632158 /drivers/gpu/nvgpu/os/linux/nvhost.c
parentc6eae929fd74f11ab13d469a38bffd4e8ba50fb5 (diff)
gpu: nvgpu: Standardize HAS_SYNCPOINTs check
Nvgpu uses many ways to check if sync points are enabled. The four ways used to be: platform->has_syncpoints g->has_syncpoints nvgpu_is_enabled(g, NVPGU_HAS_SYNCPOINTS) gk20a_platform_has_syncpoints() This patch standardizes all usage to now be nvgpu_has_syncpoints() which is based on gk20a_platform_has_syncpoints() - just renamed to be general to nvgpu. All usage of the other forms have now been consolidated. However, under the hood nvgpu_has_syncpoints() does check the is_enabled flag. This flag is now set where g->has_syncpoints used to be set based on the platform data. The basic dependency chain is this: nvgpu_has_syncpoints -> NVGPU_HAS_SYNCPOINTS -> platform->has_syncpoints However, note: there are several places where syncpoints can be disabled if some other driver initialization fails (for ex. host1x). Also note that nvgpu_has_syncpoints() also considers a disable variable set by debugfs. Bug 2327574 Change-Id: Ia2375a80f5f2e27285e6175568dd13e6bb25fd33 Signed-off-by: Alex Waterman <alexw@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1803975 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/os/linux/nvhost.c')
-rw-r--r--drivers/gpu/nvgpu/os/linux/nvhost.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/nvgpu/os/linux/nvhost.c b/drivers/gpu/nvgpu/os/linux/nvhost.c
index ccb830cc..2becae54 100644
--- a/drivers/gpu/nvgpu/os/linux/nvhost.c
+++ b/drivers/gpu/nvgpu/os/linux/nvhost.c
@@ -21,6 +21,7 @@
21 21
22#include <nvgpu/gk20a.h> 22#include <nvgpu/gk20a.h>
23#include <nvgpu/nvhost.h> 23#include <nvgpu/nvhost.h>
24#include <nvgpu/enabled.h>
24 25
25#include "nvhost_priv.h" 26#include "nvhost_priv.h"
26 27
@@ -45,9 +46,9 @@ int nvgpu_get_nvhost_dev(struct gk20a *g)
45 } 46 }
46 47
47 } else { 48 } else {
48 if (g->has_syncpoints) { 49 if (nvgpu_has_syncpoints(g)) {
49 nvgpu_warn(g, "host1x reference not found. assuming no syncpoints support"); 50 nvgpu_warn(g, "host1x reference not found. assuming no syncpoints support");
50 g->has_syncpoints = false; 51 __nvgpu_set_enabled(g, NVGPU_HAS_SYNCPOINTS, false);
51 } 52 }
52 return 0; 53 return 0;
53 } 54 }
@@ -263,13 +264,13 @@ int nvgpu_nvhost_syncpt_init(struct gk20a *g)
263{ 264{
264 int err = 0; 265 int err = 0;
265 266
266 if (!g->has_syncpoints) 267 if (!nvgpu_has_syncpoints(g))
267 return -ENOSYS; 268 return -ENOSYS;
268 269
269 err = nvgpu_get_nvhost_dev(g); 270 err = nvgpu_get_nvhost_dev(g);
270 if (err) { 271 if (err) {
271 nvgpu_err(g, "host1x device not available"); 272 nvgpu_err(g, "host1x device not available");
272 g->has_syncpoints = false; 273 __nvgpu_set_enabled(g, NVGPU_HAS_SYNCPOINTS, false);
273 return -ENOSYS; 274 return -ENOSYS;
274 } 275 }
275 276
@@ -279,7 +280,7 @@ int nvgpu_nvhost_syncpt_init(struct gk20a *g)
279 &g->syncpt_unit_size); 280 &g->syncpt_unit_size);
280 if (err) { 281 if (err) {
281 nvgpu_err(g, "Failed to get syncpt interface"); 282 nvgpu_err(g, "Failed to get syncpt interface");
282 g->has_syncpoints = false; 283 __nvgpu_set_enabled(g, NVGPU_HAS_SYNCPOINTS, false);
283 return -ENOSYS; 284 return -ENOSYS;
284 } 285 }
285 286