summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/vgpu
diff options
context:
space:
mode:
authorSumit Singh <sumsingh@nvidia.com>2015-01-04 03:00:33 -0500
committerDan Willemsen <dwillemsen@nvidia.com>2015-04-04 21:57:41 -0400
commit86637dcef9a978d21bae9978ce3f6863a45fc973 (patch)
tree98a00bd140aa0454d188cf897c2c6c69f748e7f4 /drivers/gpu/nvgpu/vgpu
parent182730599e3636b337b76fa49adbc1a5b243667f (diff)
gpu: nvgpu: Add DT support for gpu power-domain
First, defining a new structure to support gk20a power domain. Then making necessary modifications to add so as to add DT support for gpu power-domain. bug 200070810 Change-Id: I29e1c24b181e14743d3969103abfd1882d171f07 Signed-off-by: Sumit Singh <sumsingh@nvidia.com> Reviewed-on: http://git-master/r/668973 Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/vgpu')
-rw-r--r--drivers/gpu/nvgpu/vgpu/vgpu.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/vgpu.c b/drivers/gpu/nvgpu/vgpu/vgpu.c
index d3d793d1..c998b10b 100644
--- a/drivers/gpu/nvgpu/vgpu/vgpu.c
+++ b/drivers/gpu/nvgpu/vgpu/vgpu.c
@@ -311,7 +311,17 @@ static int vgpu_pm_initialise_domain(struct platform_device *pdev)
311{ 311{
312 struct gk20a_platform *platform = platform_get_drvdata(pdev); 312 struct gk20a_platform *platform = platform_get_drvdata(pdev);
313 struct dev_power_governor *pm_domain_gov = NULL; 313 struct dev_power_governor *pm_domain_gov = NULL;
314 struct generic_pm_domain *domain = &platform->g->pd; 314 struct gk20a_domain_data *vgpu_pd_data;
315 struct generic_pm_domain *domain;
316
317 vgpu_pd_data = (struct gk20a_domain_data *)kzalloc
318 (sizeof(struct gk20a_domain_data), GFP_KERNEL);
319
320 if (!vgpu_pd_data)
321 return -ENOMEM;
322
323 domain = &vgpu_pd_data->gpd;
324 vgpu_pd_data->gk20a = platform->g;
315 325
316 domain->name = "gpu"; 326 domain->name = "gpu";
317 327
@@ -432,11 +442,16 @@ int vgpu_probe(struct platform_device *dev)
432int vgpu_remove(struct platform_device *dev) 442int vgpu_remove(struct platform_device *dev)
433{ 443{
434 struct gk20a *g = get_gk20a(dev); 444 struct gk20a *g = get_gk20a(dev);
445 struct gk20a_domain_data *vgpu_gpd;
435 gk20a_dbg_fn(""); 446 gk20a_dbg_fn("");
436 447
437 if (g->remove_support) 448 if (g->remove_support)
438 g->remove_support(dev); 449 g->remove_support(dev);
439 450
451 vgpu_gpd = container_of(&g, struct gk20a_domain_data, gk20a);
452 vgpu_gpd->gk20a = NULL;
453 kfree(vgpu_gpd);
454
440 vgpu_comm_deinit(); 455 vgpu_comm_deinit();
441 gk20a_user_deinit(dev); 456 gk20a_user_deinit(dev);
442 gk20a_get_platform(dev)->g = NULL; 457 gk20a_get_platform(dev)->g = NULL;