summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/therm/thrmpmu.c
diff options
context:
space:
mode:
authorLakshmanan M <lm@nvidia.com>2016-10-21 07:27:15 -0400
committerDeepak Nibade <dnibade@nvidia.com>2016-12-27 04:56:51 -0500
commit58b85dd106f35d16ff568f8836dcbc7a019854b4 (patch)
treea87c10e83f020bd9f414fa4dd0bea74d961034b3 /drivers/gpu/nvgpu/therm/thrmpmu.c
parent2f4405ddcb1cd7bb939d3b22ab72789afb435da6 (diff)
gpu: nvgpu: Add thermal module support
The following CL contains the following VBIOS thermal table parsing and PMU interface support. 1) Thermal device table 2) Thermal channel table JIRA DNVGPU-130 Change-Id: Ie3abab4bf099a022b1b59db96811c2ed44079519 Signed-off-by: Lakshmanan M <lm@nvidia.com> Reviewed-on: http://git-master/r/1240630 (cherry picked from commit 814962a4be0a8cd0cddc7bc5211c62308ab1fea2) Reviewed-on: http://git-master/r/1246210 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
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}