diff options
author | Alex Waterman <alexw@nvidia.com> | 2016-12-01 14:14:43 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-01-04 18:53:56 -0500 |
commit | ce6b4bac7aba37b229efdd8abc3c72a8061fcfa1 (patch) | |
tree | e7ca04b0d902d0497de4bfb90d0fd737ffe84f6f /drivers/gpu | |
parent | c116522b10a253f68dab8bf89c34a8b9e1be51b9 (diff) |
gpu: nvgpu: Add platform flag to disable ASPM
Add a platform flag and logic to disable ASPM on boot if a
platform does not want ASPM enabled.
Bug 200256272
Change-Id: I378997290377ef8ffa21bf8e7f3f59fa134b3d4d
Signed-off-by: Alex Waterman <alexw@nvidia.com>
Reviewed-on: http://git-master/r/1263271
(cherry picked from commit 01e4700b74f4b4c6f0b9ffb40747653f2b63ea3c)
Reviewed-on: http://git-master/r/1274477
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.c | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/platform_gk20a.h | 3 |
3 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index bed728cf..77d708dd 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c | |||
@@ -1084,6 +1084,9 @@ int gk20a_pm_finalize_poweron(struct device *dev) | |||
1084 | if (g->ops.xve.available_speeds) { | 1084 | if (g->ops.xve.available_speeds) { |
1085 | u32 speed; | 1085 | u32 speed; |
1086 | 1086 | ||
1087 | if (platform->disable_aspm && g->ops.xve.disable_aspm) | ||
1088 | g->ops.xve.disable_aspm(g); | ||
1089 | |||
1087 | g->ops.xve.sw_init(dev); | 1090 | g->ops.xve.sw_init(dev); |
1088 | g->ops.xve.available_speeds(g, &speed); | 1091 | g->ops.xve.available_speeds(g, &speed); |
1089 | 1092 | ||
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index dc130e33..9e0dd64a 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -744,6 +744,7 @@ struct gpu_ops { | |||
744 | void (*available_speeds)(struct gk20a *g, u32 *speed_mask); | 744 | void (*available_speeds)(struct gk20a *g, u32 *speed_mask); |
745 | u32 (*xve_readl)(struct gk20a *g, u32 reg); | 745 | u32 (*xve_readl)(struct gk20a *g, u32 reg); |
746 | void (*xve_writel)(struct gk20a *g, u32 reg, u32 val); | 746 | void (*xve_writel)(struct gk20a *g, u32 reg, u32 val); |
747 | void (*disable_aspm)(struct gk20a *g); | ||
747 | } xve; | 748 | } xve; |
748 | }; | 749 | }; |
749 | 750 | ||
diff --git a/drivers/gpu/nvgpu/gk20a/platform_gk20a.h b/drivers/gpu/nvgpu/gk20a/platform_gk20a.h index 2b17d32a..c2aec6e3 100644 --- a/drivers/gpu/nvgpu/gk20a/platform_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/platform_gk20a.h | |||
@@ -61,6 +61,9 @@ struct gk20a_platform { | |||
61 | /* flag to set sync destroy aggressiveness */ | 61 | /* flag to set sync destroy aggressiveness */ |
62 | bool aggressive_sync_destroy; | 62 | bool aggressive_sync_destroy; |
63 | 63 | ||
64 | /* set if ASPM should be disabled on boot; only makes sense for PCI */ | ||
65 | bool disable_aspm; | ||
66 | |||
64 | /* Should be populated by probe. */ | 67 | /* Should be populated by probe. */ |
65 | struct dentry *debugfs; | 68 | struct dentry *debugfs; |
66 | struct dentry *debugfs_alias; | 69 | struct dentry *debugfs_alias; |