summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorYogesh <ybhosale@nvidia.com>2015-08-05 16:36:13 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2015-08-19 16:15:23 -0400
commite44e67333bb835c54a2a66835a13498d4080893f (patch)
treea64a9d362c8e6f48865a02f66738e92d6afc20cb /drivers
parent08f37cba39d846bc635098c4adae0c4a5629161a (diff)
gpu: nvgpu: Inject function address from nvgpu
This patch inserts the function address of gk20a_debug_dump_device into host data struct once the nvgpu module loads and removes it during unload. Bug 1476801 Change-Id: If49262208325b2aa0807705c26086e6d7c81632c Signed-off-by: Yogesh Bhosale <ybhosale@nvidia.com> Reviewed-on: http://git-master/r/779397 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: Automatic_Commit_Validation_User
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h2
-rw-r--r--drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c9
2 files changed, 11 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index 5caef6fe..79240800 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -863,4 +863,6 @@ void gk20a_pbus_isr(struct gk20a *g);
863int gk20a_user_init(struct platform_device *dev); 863int gk20a_user_init(struct platform_device *dev);
864void gk20a_user_deinit(struct platform_device *dev); 864void gk20a_user_deinit(struct platform_device *dev);
865 865
866extern void gk20a_debug_dump_device(struct platform_device *pdev);
867
866#endif /* GK20A_H */ 868#endif /* GK20A_H */
diff --git a/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c b/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c
index 5e07ac55..f8e1e3b7 100644
--- a/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c
+++ b/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c
@@ -747,6 +747,10 @@ static int gk20a_tegra_probe(struct platform_device *dev)
747 747
748 platform->g->host1x_dev = host1x_pdev; 748 platform->g->host1x_dev = host1x_pdev;
749 749
750 if (platform->g->host1x_dev)
751 nvhost_register_dump_device(platform->g->host1x_dev,
752 gk20a_debug_dump_device);
753
750 /* WAR for bug 1547668: Disable railgating and scaling irrespective of 754 /* WAR for bug 1547668: Disable railgating and scaling irrespective of
751 * platform data if the rework has not been made. */ 755 * platform data if the rework has not been made. */
752 756
@@ -776,6 +780,11 @@ static int gk20a_tegra_late_probe(struct platform_device *dev)
776 780
777static int gk20a_tegra_remove(struct platform_device *dev) 781static int gk20a_tegra_remove(struct platform_device *dev)
778{ 782{
783 struct gk20a_platform *platform = gk20a_get_platform(dev);
784
785 if (platform->g->host1x_dev)
786 nvhost_unregister_dump_device(platform->g->host1x_dev);
787
779 /* remove gk20a power subdomain from host1x */ 788 /* remove gk20a power subdomain from host1x */
780 nvhost_unregister_client_domain(dev_to_genpd(&dev->dev)); 789 nvhost_unregister_client_domain(dev_to_genpd(&dev->dev));
781 790