summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/boardobj/boardobjgrp.c
diff options
context:
space:
mode:
authorThomas Fleury <tfleury@nvidia.com>2017-10-23 18:52:00 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-11-06 16:40:59 -0500
commit13093eff52d0ef9071bb09cade01ea064c99468d (patch)
tree3fb71377826a4280fbfdee74957fbae06417bcf9 /drivers/gpu/nvgpu/boardobj/boardobjgrp.c
parent8bdce5337ee5f4d1e1f6d4c7b2dc0abe4a532893 (diff)
gpu: nvgpu: add g cross reference in boardobjgrp
Added a pointer to GPU context in boardobjgrp, and updated constructors. It will be useful to free allocated DMA resources. JIRA EVLR-1959 Bug 200352099 Change-Id: I006e4f970c9a2525dabdfd6ad417be64e36b7b68 Signed-off-by: Thomas Fleury <tfleury@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1586551 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/boardobj/boardobjgrp.c')
-rw-r--r--drivers/gpu/nvgpu/boardobj/boardobjgrp.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/gpu/nvgpu/boardobj/boardobjgrp.c b/drivers/gpu/nvgpu/boardobj/boardobjgrp.c
index e03dbe8d..66c87e08 100644
--- a/drivers/gpu/nvgpu/boardobj/boardobjgrp.c
+++ b/drivers/gpu/nvgpu/boardobj/boardobjgrp.c
@@ -44,7 +44,7 @@ struct boardobjgrp_pmucmdhandler_params {
44 u32 success; 44 u32 success;
45}; 45};
46 46
47u32 boardobjgrp_construct_super(struct boardobjgrp *pboardobjgrp) 47u32 boardobjgrp_construct_super(struct gk20a *g, struct boardobjgrp *pboardobjgrp)
48{ 48{
49 gk20a_dbg_info(""); 49 gk20a_dbg_info("");
50 50
@@ -57,6 +57,7 @@ u32 boardobjgrp_construct_super(struct boardobjgrp *pboardobjgrp)
57 if (pboardobjgrp->mask == NULL) 57 if (pboardobjgrp->mask == NULL)
58 return -EINVAL; 58 return -EINVAL;
59 59
60 pboardobjgrp->g = g;
60 pboardobjgrp->objmask = 0; 61 pboardobjgrp->objmask = 0;
61 62
62 pboardobjgrp->classid = 0; 63 pboardobjgrp->classid = 0;
@@ -104,6 +105,7 @@ u32 boardobjgrp_destruct_impl(struct boardobjgrp *pboardobjgrp)
104u32 boardobjgrp_destruct_super(struct boardobjgrp *pboardobjgrp) 105u32 boardobjgrp_destruct_super(struct boardobjgrp *pboardobjgrp)
105{ 106{
106 struct boardobj *pboardobj; 107 struct boardobj *pboardobj;
108 struct gk20a *g = pboardobjgrp->g;
107 u32 status = 0; 109 u32 status = 0;
108 u32 stat; 110 u32 stat;
109 u8 index; 111 u8 index;
@@ -134,11 +136,11 @@ u32 boardobjgrp_destruct_super(struct boardobjgrp *pboardobjgrp)
134 } 136 }
135 137
136 /* Destroy the PMU CMD data */ 138 /* Destroy the PMU CMD data */
137 stat = boardobjgrp_pmucmd_destroy_impl(&pboardobjgrp->pmu.set); 139 stat = boardobjgrp_pmucmd_destroy_impl(g, &pboardobjgrp->pmu.set);
138 if (status == 0) 140 if (status == 0)
139 status = stat; 141 status = stat;
140 142
141 stat = boardobjgrp_pmucmd_destroy_impl(&pboardobjgrp->pmu.getstatus); 143 stat = boardobjgrp_pmucmd_destroy_impl(g, &pboardobjgrp->pmu.getstatus);
142 if (status == 0) 144 if (status == 0)
143 status = stat; 145 status = stat;
144 146
@@ -163,9 +165,12 @@ u32 boardobjgrp_pmucmd_construct_impl(struct gk20a *g, struct boardobjgrp
163 return 0; 165 return 0;
164} 166}
165 167
166 168u32 boardobjgrp_pmucmd_destroy_impl(struct gk20a *g,
167u32 boardobjgrp_pmucmd_destroy_impl(struct boardobjgrp_pmu_cmd *cmd) 169 struct boardobjgrp_pmu_cmd *cmd)
168{ 170{
171 struct nvgpu_mem *mem = &cmd->surf.sysmem_desc;
172
173 nvgpu_pmu_surface_free(g, mem);
169 return 0; 174 return 0;
170} 175}
171 176