diff options
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/platform_gk20a.h | 3 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/platform_gk20a_tegra.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/platform_vgpu_tegra.c | 1 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | 4 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/pci.c | 2 |
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 | ||
2463 | static int gk20a_init_pmu_setup_sw(struct gk20a *g) | 2463 | static 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 | ||