summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/volt
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2017-02-09 11:17:47 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-02-17 16:46:32 -0500
commit53465def649b813987ca0d4a7ced744305204b82 (patch)
treecdff16681cb0442de3b1a8bd151b2a38c0bc5311 /drivers/gpu/nvgpu/volt
parent29a79e6b80c6a0da489d8b0a470c86e2fec9c355 (diff)
gpu: nvgpu: Generalize BIOS code
Most of BIOS parsing code is not specific to any particular GPU. Move most of the code to generic files, and leave only chip specific parts dealing with microcontroller boot into chip specific files. As most of the parsing is generic, they do not need to be called via HALs so remove the HALs and change the calls into direct function calls. All definitions meant to be used outside BIOS code itself are now in <nvgpu/bios.h> Change-Id: Id48e94c74511d6e95645e90e5bba5c12ef8da45d Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1302222 GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/gpu/nvgpu/volt')
-rw-r--r--drivers/gpu/nvgpu/volt/volt_dev.c15
-rw-r--r--drivers/gpu/nvgpu/volt/volt_pmu.c2
-rw-r--r--drivers/gpu/nvgpu/volt/volt_policy.c18
-rw-r--r--drivers/gpu/nvgpu/volt/volt_rail.c16
4 files changed, 16 insertions, 35 deletions
diff --git a/drivers/gpu/nvgpu/volt/volt_dev.c b/drivers/gpu/nvgpu/volt/volt_dev.c
index ebc140ef..4807f023 100644
--- a/drivers/gpu/nvgpu/volt/volt_dev.c
+++ b/drivers/gpu/nvgpu/volt/volt_dev.c
@@ -14,17 +14,17 @@
14#include <linux/sort.h> 14#include <linux/sort.h>
15 15
16#include "gk20a/gk20a.h" 16#include "gk20a/gk20a.h"
17#include "include/bios.h"
18#include "boardobj/boardobjgrp.h" 17#include "boardobj/boardobjgrp.h"
19#include "boardobj/boardobjgrp_e32.h" 18#include "boardobj/boardobjgrp_e32.h"
20#include "gm206/bios_gm206.h" 19#include "gm206/bios_gm206.h"
21#include "ctrl/ctrlvolt.h" 20#include "ctrl/ctrlvolt.h"
22#include "gk20a/pmu_gk20a.h" 21#include "gk20a/pmu_gk20a.h"
23 22
24#include "include/bios.h"
25#include "volt.h" 23#include "volt.h"
26#include <nvgpu/pmuif/nvgpu_gpmu_cmdif.h> 24#include <nvgpu/pmuif/nvgpu_gpmu_cmdif.h>
27 25
26#include <nvgpu/bios.h>
27
28#define VOLT_DEV_PWM_VOLTAGE_STEPS_INVALID 0 28#define VOLT_DEV_PWM_VOLTAGE_STEPS_INVALID 0
29#define VOLT_DEV_PWM_VOLTAGE_STEPS_DEFAULT 1 29#define VOLT_DEV_PWM_VOLTAGE_STEPS_DEFAULT 1
30 30
@@ -363,14 +363,9 @@ static u32 volt_get_volt_devices_table(struct gk20a *g,
363 u8 entry_idx; 363 u8 entry_idx;
364 u8 *entry_offset; 364 u8 *entry_offset;
365 365
366 if (g->ops.bios.get_perf_table_ptrs) { 366 volt_device_table_ptr = (u8 *)nvgpu_bios_get_perf_table_ptrs(g,
367 volt_device_table_ptr = (u8 *)g->ops.bios.get_perf_table_ptrs(g, 367 g->bios.perf_token, VOLTAGE_DEVICE_TABLE);
368 g->bios.perf_token, VOLTAGE_DEVICE_TABLE); 368 if (volt_device_table_ptr == NULL) {
369 if (volt_device_table_ptr == NULL) {
370 status = -EINVAL;
371 goto done;
372 }
373 } else {
374 status = -EINVAL; 369 status = -EINVAL;
375 goto done; 370 goto done;
376 } 371 }
diff --git a/drivers/gpu/nvgpu/volt/volt_pmu.c b/drivers/gpu/nvgpu/volt/volt_pmu.c
index 488e67a3..f8167000 100644
--- a/drivers/gpu/nvgpu/volt/volt_pmu.c
+++ b/drivers/gpu/nvgpu/volt/volt_pmu.c
@@ -12,7 +12,6 @@
12 */ 12 */
13 13
14#include "gk20a/gk20a.h" 14#include "gk20a/gk20a.h"
15#include "include/bios.h"
16#include "boardobj/boardobjgrp.h" 15#include "boardobj/boardobjgrp.h"
17#include "boardobj/boardobjgrp_e32.h" 16#include "boardobj/boardobjgrp_e32.h"
18#include "gm206/bios_gm206.h" 17#include "gm206/bios_gm206.h"
@@ -20,7 +19,6 @@
20#include "ctrl/ctrlperf.h" 19#include "ctrl/ctrlperf.h"
21#include "gk20a/pmu_gk20a.h" 20#include "gk20a/pmu_gk20a.h"
22 21
23#include "include/bios.h"
24#include "volt.h" 22#include "volt.h"
25#include <nvgpu/pmuif/nvgpu_gpmu_cmdif.h> 23#include <nvgpu/pmuif/nvgpu_gpmu_cmdif.h>
26 24
diff --git a/drivers/gpu/nvgpu/volt/volt_policy.c b/drivers/gpu/nvgpu/volt/volt_policy.c
index e943e771..239b908e 100644
--- a/drivers/gpu/nvgpu/volt/volt_policy.c
+++ b/drivers/gpu/nvgpu/volt/volt_policy.c
@@ -11,16 +11,15 @@
11 * more details. 11 * more details.
12 */ 12 */
13 13
14#include <nvgpu/bios.h>
15
14#include "gk20a/gk20a.h" 16#include "gk20a/gk20a.h"
15#include "include/bios.h"
16#include "boardobj/boardobjgrp.h" 17#include "boardobj/boardobjgrp.h"
17#include "boardobj/boardobjgrp_e32.h" 18#include "boardobj/boardobjgrp_e32.h"
18#include "gm206/bios_gm206.h" 19#include "gm206/bios_gm206.h"
19#include "ctrl/ctrlvolt.h" 20#include "ctrl/ctrlvolt.h"
20#include "gk20a/pmu_gk20a.h" 21#include "gk20a/pmu_gk20a.h"
21 22
22#include <nvgpu/pmuif/nvgpu_gpmu_cmdif.h>
23#include "include/bios.h"
24#include "volt.h" 23#include "volt.h"
25 24
26static u32 volt_policy_pmu_data_init_super(struct gk20a *g, 25static u32 volt_policy_pmu_data_init_super(struct gk20a *g,
@@ -170,15 +169,10 @@ static u32 volt_get_volt_policy_table(struct gk20a *g,
170 struct voltage_policy_split_rail split_rail; 169 struct voltage_policy_split_rail split_rail;
171 } policy_type_data; 170 } policy_type_data;
172 171
173 if (g->ops.bios.get_perf_table_ptrs) { 172 voltage_policy_table_ptr =
174 voltage_policy_table_ptr = 173 (u8 *)nvgpu_bios_get_perf_table_ptrs(g,
175 (u8 *)g->ops.bios.get_perf_table_ptrs(g, 174 g->bios.perf_token, VOLTAGE_POLICY_TABLE);
176 g->bios.perf_token, VOLTAGE_POLICY_TABLE); 175 if (voltage_policy_table_ptr == NULL) {
177 if (voltage_policy_table_ptr == NULL) {
178 status = -EINVAL;
179 goto done;
180 }
181 } else {
182 status = -EINVAL; 176 status = -EINVAL;
183 goto done; 177 goto done;
184 } 178 }
diff --git a/drivers/gpu/nvgpu/volt/volt_rail.c b/drivers/gpu/nvgpu/volt/volt_rail.c
index 6d606228..aaad86a5 100644
--- a/drivers/gpu/nvgpu/volt/volt_rail.c
+++ b/drivers/gpu/nvgpu/volt/volt_rail.c
@@ -11,16 +11,15 @@
11 * more details. 11 * more details.
12 */ 12 */
13 13
14#include <nvgpu/bios.h>
15
14#include "gk20a/gk20a.h" 16#include "gk20a/gk20a.h"
15#include "include/bios.h"
16#include "boardobj/boardobjgrp.h" 17#include "boardobj/boardobjgrp.h"
17#include "boardobj/boardobjgrp_e32.h" 18#include "boardobj/boardobjgrp_e32.h"
18#include "gm206/bios_gm206.h" 19#include "gm206/bios_gm206.h"
19#include "ctrl/ctrlvolt.h" 20#include "ctrl/ctrlvolt.h"
20#include "gk20a/pmu_gk20a.h" 21#include "gk20a/pmu_gk20a.h"
21 22
22#include <nvgpu/pmuif/nvgpu_gpmu_cmdif.h>
23#include "include/bios.h"
24#include "volt.h" 23#include "volt.h"
25 24
26u8 volt_rail_volt_domain_convert_to_idx(struct gk20a *g, u8 volt_domain) 25u8 volt_rail_volt_domain_convert_to_idx(struct gk20a *g, u8 volt_domain)
@@ -241,14 +240,9 @@ static u32 volt_get_volt_rail_table(struct gk20a *g,
241 struct voltage_rail volt_rail; 240 struct voltage_rail volt_rail;
242 } rail_type_data; 241 } rail_type_data;
243 242
244 if (g->ops.bios.get_perf_table_ptrs) { 243 volt_rail_table_ptr = (u8 *)nvgpu_bios_get_perf_table_ptrs(g,
245 volt_rail_table_ptr = (u8 *)g->ops.bios.get_perf_table_ptrs(g, 244 g->bios.perf_token, VOLTAGE_RAIL_TABLE);
246 g->bios.perf_token, VOLTAGE_RAIL_TABLE); 245 if (volt_rail_table_ptr == NULL) {
247 if (volt_rail_table_ptr == NULL) {
248 status = -EINVAL;
249 goto done;
250 }
251 } else {
252 status = -EINVAL; 246 status = -EINVAL;
253 goto done; 247 goto done;
254 } 248 }