summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorThomas Fleury <tfleury@nvidia.com>2017-06-07 14:26:47 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-06-30 11:46:26 -0400
commit7eb34d10f6d3807fb19f21cdeb2a1e931cd4614a (patch)
tree5d024218eb4d7302df20f15b27db9e9842a2f317 /drivers
parent125c770c2a9c84d8243d015de4b515f33d45b2d7 (diff)
gpu: nvgpu: determine memory configuration in hal
Remove mem_config_idx from platform data, and instead let HAL determine which memory configuration to use. For this purpose, HAL may use PCI device identifiers, VBIOS version and possibly RAMCFG strap register. Bug 1929155 Change-Id: I6633e9e0c79728c8e3740f3f956b53b3abfc667b Reviewed-on: http://git-master/r/1497812 Signed-off-by: Thomas Fleury <tfleury@nvidia.com> (cherry picked from commit b7141ff5441b7ea95f9826eb37ae869f408e1414) Reviewed-on: https://git-master/r/1506584 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/nvgpu/gp106/pmu_gp106.c1
-rw-r--r--drivers/gpu/nvgpu/gp106/pmu_mclk_gp106.c9
2 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gp106/pmu_gp106.c b/drivers/gpu/nvgpu/gp106/pmu_gp106.c
index 56f1e194..632023ba 100644
--- a/drivers/gpu/nvgpu/gp106/pmu_gp106.c
+++ b/drivers/gpu/nvgpu/gp106/pmu_gp106.c
@@ -332,6 +332,7 @@ void gp106_init_pmu_ops(struct gpu_ops *gops)
332 gops->pmu.pmu_pg_param_post_init = nvgpu_lpwr_post_init; 332 gops->pmu.pmu_pg_param_post_init = nvgpu_lpwr_post_init;
333 gops->pmu.dump_secure_fuses = NULL; 333 gops->pmu.dump_secure_fuses = NULL;
334 gops->pmu.mclk_init = gp106_mclk_init; 334 gops->pmu.mclk_init = gp106_mclk_init;
335 gops->pmu.mclk_change = gp106_mclk_change;
335 gops->pmu.mclk_deinit = gp106_mclk_deinit; 336 gops->pmu.mclk_deinit = gp106_mclk_deinit;
336 gops->pmu.is_pmu_supported = gp106_is_pmu_supported; 337 gops->pmu.is_pmu_supported = gp106_is_pmu_supported;
337 gops->pmu.reset_engine = gp106_pmu_engine_reset; 338 gops->pmu.reset_engine = gp106_pmu_engine_reset;
diff --git a/drivers/gpu/nvgpu/gp106/pmu_mclk_gp106.c b/drivers/gpu/nvgpu/gp106/pmu_mclk_gp106.c
index c510a8d7..2ca29750 100644
--- a/drivers/gpu/nvgpu/gp106/pmu_mclk_gp106.c
+++ b/drivers/gpu/nvgpu/gp106/pmu_mclk_gp106.c
@@ -2725,6 +2725,14 @@ int gp106_mclk_init(struct gk20a *g)
2725 2725
2726 mclk->speed = GP106_MCLK_LOW_SPEED; /* Value from Devinit */ 2726 mclk->speed = GP106_MCLK_LOW_SPEED; /* Value from Devinit */
2727 2727
2728 /* Find out which memory configuration to use */
2729 g->mem_config_idx = GP106_MEM_CONFIG_GDDR5_PG418;
2730 if ((g->pci_vendor_id == PCI_VENDOR_ID_NVIDIA) &&
2731 (g->pci_device_id == 0x1c75) &&
2732 (g->gpu_characteristics.vbios_version == 0x86065800)) {
2733 g->mem_config_idx = GP106_MEM_CONFIG_GDDR5_PG419;
2734 }
2735
2728 /* Parse VBIOS */ 2736 /* Parse VBIOS */
2729 status = mclk_get_memclk_table(g); 2737 status = mclk_get_memclk_table(g);
2730 if (status < 0) { 2738 if (status < 0) {
@@ -2791,6 +2799,7 @@ int gp106_mclk_change(struct gk20a *g, u16 val)
2791 u32 seqdesc; 2799 u32 seqdesc;
2792 int status = 0; 2800 int status = 0;
2793 struct memory_config *m = &mem_config[g->mem_config_idx]; 2801 struct memory_config *m = &mem_config[g->mem_config_idx];
2802
2794 u32 seq_completion_status = ~0x0; 2803 u32 seq_completion_status = ~0x0;
2795 u8 *seq_script_ptr = NULL; 2804 u8 *seq_script_ptr = NULL;
2796 size_t seq_script_size = 0; 2805 size_t seq_script_size = 0;