From ce6b4bac7aba37b229efdd8abc3c72a8061fcfa1 Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Thu, 1 Dec 2016 11:14:43 -0800 Subject: 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 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 --- drivers/gpu/nvgpu/gk20a/gk20a.c | 3 +++ drivers/gpu/nvgpu/gk20a/gk20a.h | 1 + drivers/gpu/nvgpu/gk20a/platform_gk20a.h | 3 +++ 3 files changed, 7 insertions(+) (limited to 'drivers/gpu/nvgpu/gk20a') 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) if (g->ops.xve.available_speeds) { u32 speed; + if (platform->disable_aspm && g->ops.xve.disable_aspm) + g->ops.xve.disable_aspm(g); + g->ops.xve.sw_init(dev); g->ops.xve.available_speeds(g, &speed); 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 { void (*available_speeds)(struct gk20a *g, u32 *speed_mask); u32 (*xve_readl)(struct gk20a *g, u32 reg); void (*xve_writel)(struct gk20a *g, u32 reg, u32 val); + void (*disable_aspm)(struct gk20a *g); } xve; }; 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 { /* flag to set sync destroy aggressiveness */ bool aggressive_sync_destroy; + /* set if ASPM should be disabled on boot; only makes sense for PCI */ + bool disable_aspm; + /* Should be populated by probe. */ struct dentry *debugfs; struct dentry *debugfs_alias; -- cgit v1.2.2