diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c index de65daa8b05ad..3f437014db46c 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gk20a.c @@ -3171,7 +3171,11 @@ gk20a_pmu_init(struct nvkm_object *object) nvkm_timer_alarm(priv, PMU_DVFS_INTERVAL, &priv->alarm); mutex_lock(&priv->elpg_mutex); - priv->elpg_disable_depth = 0; + /* + * ELPG will be enabled when PMU finishes booting, so setting the + * counter to 1 initialy. + */ + priv->elpg_disable_depth = 1; mutex_unlock(&priv->elpg_mutex); mutex_lock(&priv->clk_gating_mutex); @@ -3193,10 +3197,6 @@ gk20a_pmu_fini(struct nvkm_object *object, bool suspend) cancel_work_sync(&priv->base.recv.work); cancel_work_sync(&priv->pg_init); - mutex_lock(&priv->elpg_mutex); - priv->elpg_disable_depth = 0; - mutex_unlock(&priv->elpg_mutex); - mutex_lock(&priv->clk_gating_mutex); priv->clk_gating_disable_depth = 0; mutex_unlock(&priv->clk_gating_mutex); diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c index 41feb6865523a..729d688d1d801 100644 --- a/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/pmu/gm20b.c @@ -2613,9 +2613,6 @@ gm20b_pmu_fini(struct nvkm_object *object, bool suspend) gk20a_pmu_enable(priv, pmc, false); priv->isr_enabled = false; mutex_unlock(&priv->isr_mutex); - mutex_lock(&priv->elpg_mutex); - priv->elpg_disable_depth = 0; - mutex_unlock(&priv->elpg_mutex); priv->pmu_state = PMU_STATE_OFF; mutex_lock(&priv->clk_gating_mutex); priv->clk_gating_disable_depth = 0; @@ -2692,7 +2689,11 @@ gm20b_pmu_init(struct nvkm_object *object) { priv->pmu_setup_elpg = gm20b_pmu_setup_elpg; mutex_lock(&priv->elpg_mutex); - priv->elpg_disable_depth = 0; + /* + * ELPG will be enabled when PMU finishes booting, so setting the + * counter to 1 initialy. + */ + priv->elpg_disable_depth = 1; mutex_unlock(&priv->elpg_mutex); mutex_lock(&priv->clk_gating_mutex);