Loading drivers/media/platform/msm/npu/npu_dev.c +19 −6 Original line number Diff line number Diff line Loading @@ -335,26 +335,28 @@ int npu_enable_core_power(struct npu_device *npu_dev) struct npu_pwrctrl *pwr = &npu_dev->pwrctrl; int ret = 0; mutex_lock(&npu_dev->dev_lock); if (!pwr->pwr_vote_num) { ret = npu_enable_regulators(npu_dev); if (ret) return ret; goto fail; ret = npu_set_bw(npu_dev, 100, 100); if (ret) { npu_disable_regulators(npu_dev); return ret; goto fail; } ret = npu_enable_core_clocks(npu_dev); if (ret) { npu_set_bw(npu_dev, 0, 0); npu_disable_regulators(npu_dev); pwr->pwr_vote_num = 0; return ret; goto fail; } } pwr->pwr_vote_num++; fail: mutex_unlock(&npu_dev->dev_lock); return ret; } Loading @@ -363,8 +365,12 @@ void npu_disable_core_power(struct npu_device *npu_dev) { struct npu_pwrctrl *pwr = &npu_dev->pwrctrl; if (!pwr->pwr_vote_num) mutex_lock(&npu_dev->dev_lock); if (!pwr->pwr_vote_num) { mutex_unlock(&npu_dev->dev_lock); return; } pwr->pwr_vote_num--; if (!pwr->pwr_vote_num) { npu_disable_core_clocks(npu_dev); Loading @@ -376,6 +382,7 @@ void npu_disable_core_power(struct npu_device *npu_dev) NPU_DBG("setting back to power level=%d\n", pwr->active_pwrlevel); } mutex_unlock(&npu_dev->dev_lock); } static int npu_enable_core_clocks(struct npu_device *npu_dev) Loading Loading @@ -792,7 +799,13 @@ static int npu_enable_regulators(struct npu_device *npu_dev) regulators[i].regulator_name); } } if (rc) { for (i--; i >= 0; i--) regulator_disable(regulators[i].regulator); } else { host_ctx->power_vote_num++; } return rc; } Loading Loading
drivers/media/platform/msm/npu/npu_dev.c +19 −6 Original line number Diff line number Diff line Loading @@ -335,26 +335,28 @@ int npu_enable_core_power(struct npu_device *npu_dev) struct npu_pwrctrl *pwr = &npu_dev->pwrctrl; int ret = 0; mutex_lock(&npu_dev->dev_lock); if (!pwr->pwr_vote_num) { ret = npu_enable_regulators(npu_dev); if (ret) return ret; goto fail; ret = npu_set_bw(npu_dev, 100, 100); if (ret) { npu_disable_regulators(npu_dev); return ret; goto fail; } ret = npu_enable_core_clocks(npu_dev); if (ret) { npu_set_bw(npu_dev, 0, 0); npu_disable_regulators(npu_dev); pwr->pwr_vote_num = 0; return ret; goto fail; } } pwr->pwr_vote_num++; fail: mutex_unlock(&npu_dev->dev_lock); return ret; } Loading @@ -363,8 +365,12 @@ void npu_disable_core_power(struct npu_device *npu_dev) { struct npu_pwrctrl *pwr = &npu_dev->pwrctrl; if (!pwr->pwr_vote_num) mutex_lock(&npu_dev->dev_lock); if (!pwr->pwr_vote_num) { mutex_unlock(&npu_dev->dev_lock); return; } pwr->pwr_vote_num--; if (!pwr->pwr_vote_num) { npu_disable_core_clocks(npu_dev); Loading @@ -376,6 +382,7 @@ void npu_disable_core_power(struct npu_device *npu_dev) NPU_DBG("setting back to power level=%d\n", pwr->active_pwrlevel); } mutex_unlock(&npu_dev->dev_lock); } static int npu_enable_core_clocks(struct npu_device *npu_dev) Loading Loading @@ -792,7 +799,13 @@ static int npu_enable_regulators(struct npu_device *npu_dev) regulators[i].regulator_name); } } if (rc) { for (i--; i >= 0; i--) regulator_disable(regulators[i].regulator); } else { host_ctx->power_vote_num++; } return rc; } Loading