Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 524c5e31 authored by Jilai Wang's avatar Jilai Wang
Browse files

msm: npu: Update NPU bandwidth while subsystem shuts down NPUSS



While subsystem shuts down NPUSS, minimum bandwidth is required
to be voted. This change is to move bandwidth voting to subsystem
notifier callbacks.

Change-Id: Idc0bcb89d42eddea7878953f37a333f3254522dd
Signed-off-by: default avatarJilai Wang <jilaiw@codeaurora.org>
parent 1f4fe1c5
Loading
Loading
Loading
Loading
+9 −10
Original line number Diff line number Diff line
@@ -194,7 +194,6 @@ int load_fw(struct npu_device *npu_dev)
int unload_fw(struct npu_device *npu_dev)
{
	struct npu_host_ctx *host_ctx = &npu_dev->host_ctx;
	int ret = 0;

	if (host_ctx->auto_pil_disable) {
		NPU_WARN("auto pil is disabled\n");
@@ -212,16 +211,7 @@ int unload_fw(struct npu_device *npu_dev)
		return -EBUSY;
	}

	/* vote minimum bandwidth before unload npu fw via PIL */
	ret = npu_set_bw(npu_dev, 100, 100);
	if (ret) {
		NPU_ERR("Can't update bandwidth\n");
		mutex_unlock(&host_ctx->lock);
		return ret;
	}

	subsystem_put_local(host_ctx->subsystem_handle);
	npu_set_bw(npu_dev, 0, 0);
	host_ctx->fw_state = FW_UNLOADED;
	NPU_DBG("fw is unloaded\n");
	mutex_unlock(&host_ctx->lock);
@@ -531,9 +521,18 @@ static int npu_notifier_cb(struct notifier_block *this, unsigned long code,
			npu_disable_core_power(npu_dev);
			npu_notify_aop(npu_dev, false);
		}

		/* vote minimum bandwidth before unload npu fw via PIL */
		ret = npu_set_bw(npu_dev, 100, 100);
		if (ret)
			NPU_WARN("Can't update bandwidth\n");

		break;
	}
	case SUBSYS_AFTER_SHUTDOWN:
		ret = npu_set_bw(npu_dev, 0, 0);
		if (ret)
			NPU_WARN("Can't update bandwidth\n");
		break;
	default:
		NPU_DBG("Ignoring event\n");