summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/therm/thrmpmu.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/therm/thrmpmu.c')
-rw-r--r--drivers/gpu/nvgpu/therm/thrmpmu.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/therm/thrmpmu.c b/drivers/gpu/nvgpu/therm/thrmpmu.c
new file mode 100644
index 00000000..0ff7090b
--- /dev/null
+++ b/drivers/gpu/nvgpu/therm/thrmpmu.c
@@ -0,0 +1,51 @@
1/*
2 * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms and conditions of the GNU General Public License,
6 * version 2, as published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope it will be useful, but WITHOUT
9 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
11 * more details.
12 */
13
14#include "gk20a/gk20a.h"
15#include "include/bios.h"
16#include "boardobj/boardobjgrp.h"
17#include "boardobj/boardobjgrp_e32.h"
18#include "pmuif/gpmuifboardobj.h"
19#include "thrmpmu.h"
20
21u32 therm_send_pmgr_tables_to_pmu(struct gk20a *g)
22{
23 u32 status = 0;
24 struct boardobjgrp *pboardobjgrp = NULL;
25
26 if (!BOARDOBJGRP_IS_EMPTY(&g->therm_pmu.therm_deviceobjs.super.super)) {
27 pboardobjgrp = &g->therm_pmu.therm_deviceobjs.super.super;
28 status = pboardobjgrp->pmuinithandle(g, pboardobjgrp);
29 if (status) {
30 gk20a_err(dev_from_gk20a(g),
31 "therm_send_pmgr_tables_to_pmu - therm_device failed %x",
32 status);
33 goto exit;
34 }
35 }
36
37 if (!BOARDOBJGRP_IS_EMPTY(
38 &g->therm_pmu.therm_channelobjs.super.super)) {
39 pboardobjgrp = &g->therm_pmu.therm_channelobjs.super.super;
40 status = pboardobjgrp->pmuinithandle(g, pboardobjgrp);
41 if (status) {
42 gk20a_err(dev_from_gk20a(g),
43 "therm_send_pmgr_tables_to_pmu - therm_channel failed %x",
44 status);
45 goto exit;
46 }
47 }
48
49exit:
50 return status;
51}