aboutsummaryrefslogtreecommitdiffstats
path: root/include/boardobj/boardobjgrp_e32.c
diff options
context:
space:
mode:
Diffstat (limited to 'include/boardobj/boardobjgrp_e32.c')
-rw-r--r--include/boardobj/boardobjgrp_e32.c89
1 files changed, 89 insertions, 0 deletions
diff --git a/include/boardobj/boardobjgrp_e32.c b/include/boardobj/boardobjgrp_e32.c
new file mode 100644
index 0000000..d72e8cb
--- /dev/null
+++ b/include/boardobj/boardobjgrp_e32.c
@@ -0,0 +1,89 @@
1/*
2* Copyright (c) 2016-2018, NVIDIA CORPORATION. All rights reserved.
3*
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 * DEALINGS IN THE SOFTWARE.
21*/
22#include <nvgpu/gk20a.h>
23
24#include "boardobj.h"
25#include "boardobjgrp.h"
26#include "boardobjgrp_e32.h"
27#include "ctrl/ctrlboardobj.h"
28#include "boardobjgrpmask.h"
29
30
31int boardobjgrpconstruct_e32(struct gk20a *g,
32 struct boardobjgrp_e32 *pboardobjgrp_e32)
33{
34 int status;
35 u8 objslots;
36
37 nvgpu_log_info(g, " ");
38 objslots = 32;
39
40 status = boardobjgrpmask_e32_init(&pboardobjgrp_e32->mask, NULL);
41 if (status) {
42 goto boardobjgrpconstruct_e32_exit;
43 }
44
45 pboardobjgrp_e32->super.type = CTRL_BOARDOBJGRP_TYPE_E32;
46 pboardobjgrp_e32->super.ppobjects = pboardobjgrp_e32->objects;
47 pboardobjgrp_e32->super.objslots = objslots;
48 pboardobjgrp_e32->super.mask = &(pboardobjgrp_e32->mask.super);
49
50 status = boardobjgrp_construct_super(g, &pboardobjgrp_e32->super);
51 if (status) {
52 goto boardobjgrpconstruct_e32_exit;
53 }
54
55 pboardobjgrp_e32->super.pmuhdrdatainit = boardobjgrp_pmuhdrdatainit_e32;
56
57boardobjgrpconstruct_e32_exit:
58 return status;
59}
60
61int boardobjgrp_pmuhdrdatainit_e32(struct gk20a *g,
62 struct boardobjgrp *pboardobjgrp,
63 struct nv_pmu_boardobjgrp_super *pboardobjgrppmu,
64 struct boardobjgrpmask *mask)
65{
66 struct nv_pmu_boardobjgrp_e32 *pgrpe32 =
67 (struct nv_pmu_boardobjgrp_e32 *)pboardobjgrppmu;
68 int status;
69
70 nvgpu_log_info(g, " ");
71
72 if (pboardobjgrp == NULL) {
73 return -EINVAL;
74 }
75
76 if (pboardobjgrppmu == NULL) {
77 return -EINVAL;
78 }
79 status = boardobjgrpmask_export(mask,
80 mask->bitcount,
81 &pgrpe32->obj_mask.super);
82 if (status) {
83 nvgpu_err(g, "e32 init:failed export grpmask");
84 return status;
85 }
86
87 return boardobjgrp_pmuhdrdatainit_super(g,
88 pboardobjgrp, pboardobjgrppmu, mask);
89}