diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2017-02-09 11:17:47 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-02-17 16:46:32 -0500 |
commit | 53465def649b813987ca0d4a7ced744305204b82 (patch) | |
tree | cdff16681cb0442de3b1a8bd151b2a38c0bc5311 /drivers/gpu/nvgpu/volt | |
parent | 29a79e6b80c6a0da489d8b0a470c86e2fec9c355 (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.c | 15 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/volt/volt_pmu.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/volt/volt_policy.c | 18 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/volt/volt_rail.c | 16 |
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 | ||
26 | static u32 volt_policy_pmu_data_init_super(struct gk20a *g, | 25 | static 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 | ||
26 | u8 volt_rail_volt_domain_convert_to_idx(struct gk20a *g, u8 volt_domain) | 25 | u8 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 | } |