diff options
author | Debarshi Dutta <ddutta@nvidia.com> | 2019-04-30 04:24:08 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2019-05-09 17:41:30 -0400 |
commit | c81cc032c48a1b25e095b17b77399166c9091ff3 (patch) | |
tree | ace7d238c55bbb5e96fb6fd74deb156f3c513bae /drivers/gpu/nvgpu/gk20a/gr_gk20a.h | |
parent | f495f52c70c6bd7b7a4e6897270e4696efa57d5c (diff) |
gpu: nvgpu: add cg and pg function
Add new power/clock gating functions that can be called by
other units.
New clock_gating functions will reside in cg.c under
common/power_features/cg unit.
New power gating functions will reside in pg.c under
common/power_features/pg unit.
Use nvgpu_pg_elpg_disable and nvgpu_pg_elpg_enable to disable/enable
elpg and also in gr_gk20a_elpg_protected macro to access gr registers.
Add cg_pg_lock to make elpg_enabled, elcg_enabled, blcg_enabled
and slcg_enabled thread safe.
JIRA NVGPU-2014
Change-Id: I00d124c2ee16242c9a3ef82e7620fbb7f1297aff
Signed-off-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/2025493
Signed-off-by: Debarshi Dutta <ddutta@nvidia.com>
(cherry-picked from c90585856567a547173a8b207365b3a4a3ccdd57 in
dev-kernel)
Reviewed-on: https://git-master.nvidia.com/r/2108406
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bibek Basu <bbasu@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.h | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.h b/drivers/gpu/nvgpu/gk20a/gr_gk20a.h index d795a3fc..8ff2cfd4 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.h | |||
@@ -28,6 +28,7 @@ | |||
28 | 28 | ||
29 | #include "gr_ctx_gk20a.h" | 29 | #include "gr_ctx_gk20a.h" |
30 | #include "mm_gk20a.h" | 30 | #include "mm_gk20a.h" |
31 | #include <nvgpu/power_features/pg.h> | ||
31 | 32 | ||
32 | #include <nvgpu/comptags.h> | 33 | #include <nvgpu/comptags.h> |
33 | #include <nvgpu/cond.h> | 34 | #include <nvgpu/cond.h> |
@@ -598,16 +599,16 @@ u32 gk20a_gr_get_sm_no_lock_down_hww_global_esr_mask(struct gk20a *g); | |||
598 | #define gr_gk20a_elpg_protected_call(g, func) \ | 599 | #define gr_gk20a_elpg_protected_call(g, func) \ |
599 | ({ \ | 600 | ({ \ |
600 | int err = 0; \ | 601 | int err = 0; \ |
601 | if ((g->support_pmu) && (g->elpg_enabled)) {\ | 602 | if (g->support_pmu) {\ |
602 | err = nvgpu_pmu_disable_elpg(g); \ | 603 | err = nvgpu_pg_elpg_disable(g);\ |
603 | if (err != 0) {\ | 604 | if (err != 0) {\ |
604 | nvgpu_pmu_enable_elpg(g); \ | 605 | err = nvgpu_pg_elpg_enable(g); \ |
605 | } \ | 606 | } \ |
606 | } \ | 607 | } \ |
607 | if (err == 0) { \ | 608 | if (err == 0) { \ |
608 | err = func; \ | 609 | err = func; \ |
609 | if ((g->support_pmu) && (g->elpg_enabled)) {\ | 610 | if (g->support_pmu) {\ |
610 | nvgpu_pmu_enable_elpg(g); \ | 611 | (void)nvgpu_pg_elpg_enable(g); \ |
611 | } \ | 612 | } \ |
612 | } \ | 613 | } \ |
613 | err; \ | 614 | err; \ |