diff options
author | Lakshmanan M <lm@nvidia.com> | 2016-10-21 07:27:15 -0400 |
---|---|---|
committer | Deepak Nibade <dnibade@nvidia.com> | 2016-12-27 04:56:51 -0500 |
commit | 58b85dd106f35d16ff568f8836dcbc7a019854b4 (patch) | |
tree | a87c10e83f020bd9f414fa4dd0bea74d961034b3 /drivers/gpu/nvgpu/therm/thrmpmu.c | |
parent | 2f4405ddcb1cd7bb939d3b22ab72789afb435da6 (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.c | 51 |
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 | |||
21 | u32 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 | |||
49 | exit: | ||
50 | return status; | ||
51 | } | ||