aboutsummaryrefslogtreecommitdiffstats
path: root/include/boardobj/boardobjgrp_e255.c
diff options
context:
space:
mode:
Diffstat (limited to 'include/boardobj/boardobjgrp_e255.c')
-rw-r--r--include/boardobj/boardobjgrp_e255.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/include/boardobj/boardobjgrp_e255.c b/include/boardobj/boardobjgrp_e255.c
new file mode 100644
index 0000000..63546a9
--- /dev/null
+++ b/include/boardobj/boardobjgrp_e255.c
@@ -0,0 +1,91 @@
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
23#include <nvgpu/gk20a.h>
24
25#include "boardobj.h"
26#include "boardobjgrp_e255.h"
27#include "ctrl/ctrlboardobj.h"
28#include "boardobjgrp.h"
29#include "boardobjgrpmask.h"
30
31int boardobjgrpconstruct_e255(struct gk20a *g,
32 struct boardobjgrp_e255 *pboardobjgrp_e255)
33{
34 int status = 0;
35 u8 objslots;
36
37 nvgpu_log_info(g, " ");
38
39 objslots = 255;
40 status = boardobjgrpmask_e255_init(&pboardobjgrp_e255->mask, NULL);
41 if (status) {
42 goto boardobjgrpconstruct_e255_exit;
43 }
44
45 pboardobjgrp_e255->super.type = CTRL_BOARDOBJGRP_TYPE_E255;
46 pboardobjgrp_e255->super.ppobjects = pboardobjgrp_e255->objects;
47 pboardobjgrp_e255->super.objslots = objslots;
48 pboardobjgrp_e255->super.mask = &(pboardobjgrp_e255->mask.super);
49
50 status = boardobjgrp_construct_super(g, &pboardobjgrp_e255->super);
51 if (status) {
52 goto boardobjgrpconstruct_e255_exit;
53 }
54
55 pboardobjgrp_e255->super.pmuhdrdatainit =
56 boardobjgrp_pmuhdrdatainit_e255;
57
58boardobjgrpconstruct_e255_exit:
59 return status;
60}
61
62int boardobjgrp_pmuhdrdatainit_e255(struct gk20a *g,
63 struct boardobjgrp *pboardobjgrp,
64 struct nv_pmu_boardobjgrp_super *pboardobjgrppmu,
65 struct boardobjgrpmask *mask)
66{
67 struct nv_pmu_boardobjgrp_e255 *pgrpe255 =
68 (struct nv_pmu_boardobjgrp_e255 *)pboardobjgrppmu;
69 int status;
70
71 nvgpu_log_info(g, " ");
72
73 if (pboardobjgrp == NULL) {
74 return -EINVAL;
75 }
76
77 if (pboardobjgrppmu == NULL) {
78 return -EINVAL;
79 }
80
81 status = boardobjgrpmask_export(mask,
82 mask->bitcount,
83 &pgrpe255->obj_mask.super);
84 if (status) {
85 nvgpu_err(g, "e255 init:failed export grpmask");
86 return status;
87 }
88
89 return boardobjgrp_pmuhdrdatainit_super(g,
90 pboardobjgrp, pboardobjgrppmu, mask);
91}