summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMahantesh Kumbar <mkumbar@nvidia.com>2016-05-24 06:02:22 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2016-05-26 19:07:33 -0400
commited32288ee8a0664ebe6cd42a290deb0e07ebe356 (patch)
tree518510eef6d92094a3f58dca08abdc3de531aa2f
parent147330c2dac6ffaed78100a7ad46907d7e622dca (diff)
gpu: nvgpu: ELPG init based on flag
flag helps to enable/disable ELPG init in SW Bug N/A Change-Id: I73eb592b789c2c29db8a75018cbd1617dcf16df8 Signed-off-by: Mahantesh Kumbar <mkumbar@nvidia.com> Reviewed-on: http://git-master/r/1152430 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gk20a/platform_gk20a.h3
-rw-r--r--drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c2
-rw-r--r--drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c1
-rw-r--r--drivers/gpu/nvgpu/gk20a/pmu_gk20a.c4
-rw-r--r--drivers/gpu/nvgpu/pci.c2
5 files changed, 11 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/platform_gk20a.h b/drivers/gpu/nvgpu/gk20a/platform_gk20a.h
index 38ce5a97..14f90c94 100644
--- a/drivers/gpu/nvgpu/gk20a/platform_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/platform_gk20a.h
@@ -43,6 +43,9 @@ struct gk20a_platform {
43 bool can_railgate; 43 bool can_railgate;
44 44
45 /* Should be populated at probe. */ 45 /* Should be populated at probe. */
46 bool can_elpg;
47
48 /* Should be populated at probe. */
46 bool has_syncpoints; 49 bool has_syncpoints;
47 50
48 /* flag to set sync destroy aggressiveness */ 51 /* flag to set sync destroy aggressiveness */
diff --git a/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c b/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c
index ca36d481..4d592d28 100644
--- a/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c
+++ b/drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c
@@ -863,6 +863,7 @@ struct gk20a_platform gk20a_tegra_platform = {
863 .railgate_delay = 500, 863 .railgate_delay = 500,
864 .clockgate_delay = 50, 864 .clockgate_delay = 50,
865 .can_railgate = true, 865 .can_railgate = true,
866 .can_elpg = true,
866 .enable_slcg = true, 867 .enable_slcg = true,
867 .enable_blcg = true, 868 .enable_blcg = true,
868 .enable_elcg = true, 869 .enable_elcg = true,
@@ -923,6 +924,7 @@ struct gk20a_platform gm20b_tegra_platform = {
923 .railgate_delay = 500, 924 .railgate_delay = 500,
924 .clockgate_delay = 50, 925 .clockgate_delay = 50,
925 .can_railgate = true, 926 .can_railgate = true,
927 .can_elpg = true,
926 .enable_slcg = true, 928 .enable_slcg = true,
927 .enable_blcg = true, 929 .enable_blcg = true,
928 .enable_elcg = true, 930 .enable_elcg = true,
diff --git a/drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c b/drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c
index bb8d05b8..b260b3ac 100644
--- a/drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c
+++ b/drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c
@@ -52,6 +52,7 @@ struct gk20a_platform vgpu_tegra_platform = {
52 52
53 /* power management configuration */ 53 /* power management configuration */
54 .can_railgate = false, 54 .can_railgate = false,
55 .can_elpg = false,
55 .enable_slcg = false, 56 .enable_slcg = false,
56 .enable_blcg = false, 57 .enable_blcg = false,
57 .enable_elcg = false, 58 .enable_elcg = false,
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
index a8ebaf7a..64828a3f 100644
--- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
@@ -2462,6 +2462,7 @@ static int gk20a_prepare_ucode(struct gk20a *g)
2462 2462
2463static int gk20a_init_pmu_setup_sw(struct gk20a *g) 2463static int gk20a_init_pmu_setup_sw(struct gk20a *g)
2464{ 2464{
2465 struct gk20a_platform *platform = dev_get_drvdata(g->dev);
2465 struct pmu_gk20a *pmu = &g->pmu; 2466 struct pmu_gk20a *pmu = &g->pmu;
2466 struct mm_gk20a *mm = &g->mm; 2467 struct mm_gk20a *mm = &g->mm;
2467 struct vm_gk20a *vm = &mm->pmu.vm; 2468 struct vm_gk20a *vm = &mm->pmu.vm;
@@ -2514,7 +2515,8 @@ static int gk20a_init_pmu_setup_sw(struct gk20a *g)
2514 2515
2515 pmu_seq_init(pmu); 2516 pmu_seq_init(pmu);
2516 2517
2517 INIT_WORK(&pmu->pg_init, pmu_setup_hw); 2518 if (platform->can_elpg)
2519 INIT_WORK(&pmu->pg_init, pmu_setup_hw);
2518 2520
2519 err = gk20a_gmmu_alloc_map(vm, GK20A_PMU_SEQ_BUF_SIZE, &pmu->seq_buf); 2521 err = gk20a_gmmu_alloc_map(vm, GK20A_PMU_SEQ_BUF_SIZE, &pmu->seq_buf);
2520 if (err) { 2522 if (err) {
diff --git a/drivers/gpu/nvgpu/pci.c b/drivers/gpu/nvgpu/pci.c
index 3057a625..cc68a681 100644
--- a/drivers/gpu/nvgpu/pci.c
+++ b/drivers/gpu/nvgpu/pci.c
@@ -57,6 +57,8 @@ static struct gk20a_platform nvgpu_pci_device = {
57 .remove = nvgpu_pci_tegra_remove, 57 .remove = nvgpu_pci_tegra_remove,
58 .busy = nvgpu_pci_busy, 58 .busy = nvgpu_pci_busy,
59 59
60 .can_elpg = false,
61
60 /* power management callbacks */ 62 /* power management callbacks */
61 .is_railgated = nvgpu_pci_tegra_is_railgated, 63 .is_railgated = nvgpu_pci_tegra_is_railgated,
62 64