diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index 5caef6fe9..792408001 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); int gk20a_user_init(struct platform_device *dev); void gk20a_user_deinit(struct platform_device *dev); +extern void gk20a_debug_dump_device(struct platform_device *pdev); + #endif /* GK20A_H */ diff --git a/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c b/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c index 5e07ac552..f8e1e3b74 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) platform->g->host1x_dev = host1x_pdev; + if (platform->g->host1x_dev) + nvhost_register_dump_device(platform->g->host1x_dev, + gk20a_debug_dump_device); + /* WAR for bug 1547668: Disable railgating and scaling irrespective of * platform data if the rework has not been made. */ @@ -776,6 +780,11 @@ static int gk20a_tegra_late_probe(struct platform_device *dev) static int gk20a_tegra_remove(struct platform_device *dev) { + struct gk20a_platform *platform = gk20a_get_platform(dev); + + if (platform->g->host1x_dev) + nvhost_unregister_dump_device(platform->g->host1x_dev); + /* remove gk20a power subdomain from host1x */ nvhost_unregister_client_domain(dev_to_genpd(&dev->dev));