diff options
author | Thomas Fleury <tfleury@nvidia.com> | 2017-01-18 18:08:38 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-01-23 08:53:55 -0500 |
commit | a86122e01a3b27652f2dea8cbdadd47ed6b3d216 (patch) | |
tree | 3e1abfe166ec22a7307cd02ff35da233ac4735a4 /drivers/gpu/nvgpu/include | |
parent | 8b4aadaaddce14bcf4109dd9f835993865c60b3b (diff) |
gpu: nvgpu: read overcurrent policy from VBIOS
Since pwr_sensors, pwr_topology_ and pwr_policy_* tables in bios.h
are not defined as packed, nvgpu driver is not able to find hw
threshold pwr_policy table in VBIOS and ends up hard coding the HW
thershold policy.
Changed definitions to packed, and explicitly unpack structures
when parsing the power policy table. Removed the function that
did the hard coding.
Jira DNVGPU-206
Change-Id: Idc2b5b5c86ddfe735631190dda10218cc462be3b
Signed-off-by: Thomas Fleury <tfleury@nvidia.com>
Reviewed-on: http://git-master/r/1290303
GVS: Gerrit_Virtual_Submit
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/include')
-rw-r--r-- | drivers/gpu/nvgpu/include/bios.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/gpu/nvgpu/include/bios.h b/drivers/gpu/nvgpu/include/bios.h index 097e90ec..bcb24343 100644 --- a/drivers/gpu/nvgpu/include/bios.h +++ b/drivers/gpu/nvgpu/include/bios.h | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * vbios tables support | 2 | * vbios tables support |
3 | * | 3 | * |
4 | * Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. | 4 | * Copyright (c) 2016-2017, NVIDIA CORPORATION. All rights reserved. |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify it | 6 | * This program is free software; you can redistribute it and/or modify it |
7 | * under the terms and conditions of the GNU General Public License, | 7 | * under the terms and conditions of the GNU General Public License, |
@@ -510,7 +510,7 @@ struct pwr_sensors_2x_header { | |||
510 | u8 table_entry_size; | 510 | u8 table_entry_size; |
511 | u8 num_table_entries; | 511 | u8 num_table_entries; |
512 | u32 ba_script_pointer; | 512 | u32 ba_script_pointer; |
513 | }; | 513 | } __packed; |
514 | 514 | ||
515 | #define VBIOS_POWER_SENSORS_2X_ENTRY_SIZE_15 0x00000015 | 515 | #define VBIOS_POWER_SENSORS_2X_ENTRY_SIZE_15 0x00000015 |
516 | 516 | ||
@@ -521,7 +521,7 @@ struct pwr_sensors_2x_entry { | |||
521 | u32 sensor_param1; | 521 | u32 sensor_param1; |
522 | u32 sensor_param2; | 522 | u32 sensor_param2; |
523 | u32 sensor_param3; | 523 | u32 sensor_param3; |
524 | }; | 524 | } __packed; |
525 | 525 | ||
526 | #define NV_VBIOS_POWER_SENSORS_2X_ENTRY_FLAGS0_CLASS_MASK 0xF | 526 | #define NV_VBIOS_POWER_SENSORS_2X_ENTRY_FLAGS0_CLASS_MASK 0xF |
527 | #define NV_VBIOS_POWER_SENSORS_2X_ENTRY_FLAGS0_CLASS_SHIFT 0 | 527 | #define NV_VBIOS_POWER_SENSORS_2X_ENTRY_FLAGS0_CLASS_SHIFT 0 |
@@ -560,7 +560,7 @@ struct pwr_topology_2x_header { | |||
560 | u8 num_table_entries; | 560 | u8 num_table_entries; |
561 | u8 rel_entry_size; | 561 | u8 rel_entry_size; |
562 | u8 num_rel_entries; | 562 | u8 num_rel_entries; |
563 | }; | 563 | } __packed; |
564 | 564 | ||
565 | #define VBIOS_POWER_TOPOLOGY_2X_ENTRY_SIZE_16 0x00000016 | 565 | #define VBIOS_POWER_TOPOLOGY_2X_ENTRY_SIZE_16 0x00000016 |
566 | 566 | ||
@@ -572,7 +572,7 @@ struct pwr_topology_2x_entry { | |||
572 | u32 curr_corr_offset; | 572 | u32 curr_corr_offset; |
573 | u32 param1; | 573 | u32 param1; |
574 | u32 param2; | 574 | u32 param2; |
575 | }; | 575 | } __packed; |
576 | 576 | ||
577 | #define NV_VBIOS_POWER_TOPOLOGY_2X_ENTRY_FLAGS0_CLASS_MASK 0xF | 577 | #define NV_VBIOS_POWER_TOPOLOGY_2X_ENTRY_FLAGS0_CLASS_MASK 0xF |
578 | #define NV_VBIOS_POWER_TOPOLOGY_2X_ENTRY_FLAGS0_CLASS_SHIFT 0 | 578 | #define NV_VBIOS_POWER_TOPOLOGY_2X_ENTRY_FLAGS0_CLASS_SHIFT 0 |
@@ -609,7 +609,7 @@ struct pwr_policy_3x_header_struct { | |||
609 | u8 sm_bus_policy_idx; | 609 | u8 sm_bus_policy_idx; |
610 | u8 table_viol_entry_size; | 610 | u8 table_viol_entry_size; |
611 | u8 num_table_viol_entries; | 611 | u8 num_table_viol_entries; |
612 | }; | 612 | } __packed; |
613 | 613 | ||
614 | #define VBIOS_POWER_POLICY_3X_ENTRY_SIZE_2E 0x0000002E | 614 | #define VBIOS_POWER_POLICY_3X_ENTRY_SIZE_2E 0x0000002E |
615 | 615 | ||
@@ -631,7 +631,7 @@ struct pwr_policy_3x_entry_struct { | |||
631 | u16 ratio_max; | 631 | u16 ratio_max; |
632 | u8 sample_mult; | 632 | u8 sample_mult; |
633 | u32 filter_param; | 633 | u32 filter_param; |
634 | }; | 634 | } __packed; |
635 | 635 | ||
636 | #define NV_VBIOS_POWER_POLICY_3X_ENTRY_FLAGS0_CLASS_MASK 0xF | 636 | #define NV_VBIOS_POWER_POLICY_3X_ENTRY_FLAGS0_CLASS_MASK 0xF |
637 | #define NV_VBIOS_POWER_POLICY_3X_ENTRY_FLAGS0_CLASS_SHIFT 0 | 637 | #define NV_VBIOS_POWER_POLICY_3X_ENTRY_FLAGS0_CLASS_SHIFT 0 |