sysmon             49 drivers/remoteproc/qcom_common.h void qcom_remove_sysmon_subdev(struct qcom_sysmon *sysmon);
sysmon             58 drivers/remoteproc/qcom_common.h static inline void qcom_remove_sysmon_subdev(struct qcom_sysmon *sysmon)
sysmon             96 drivers/remoteproc/qcom_q6v5_adsp.c 	struct qcom_sysmon *sysmon;
sysmon            457 drivers/remoteproc/qcom_q6v5_adsp.c 	adsp->sysmon = qcom_add_sysmon_subdev(rproc,
sysmon            460 drivers/remoteproc/qcom_q6v5_adsp.c 	if (IS_ERR(adsp->sysmon)) {
sysmon            461 drivers/remoteproc/qcom_q6v5_adsp.c 		ret = PTR_ERR(adsp->sysmon);
sysmon            486 drivers/remoteproc/qcom_q6v5_adsp.c 	qcom_remove_sysmon_subdev(adsp->sysmon);
sysmon            186 drivers/remoteproc/qcom_q6v5_mss.c 	struct qcom_sysmon *sysmon;
sysmon           1529 drivers/remoteproc/qcom_q6v5_mss.c 	qproc->sysmon = qcom_add_sysmon_subdev(rproc, "modem", 0x12);
sysmon           1530 drivers/remoteproc/qcom_q6v5_mss.c 	if (IS_ERR(qproc->sysmon)) {
sysmon           1531 drivers/remoteproc/qcom_q6v5_mss.c 		ret = PTR_ERR(qproc->sysmon);
sysmon           1557 drivers/remoteproc/qcom_q6v5_mss.c 	qcom_remove_sysmon_subdev(qproc->sysmon);
sysmon             67 drivers/remoteproc/qcom_q6v5_pas.c 	struct qcom_sysmon *sysmon;
sysmon            303 drivers/remoteproc/qcom_q6v5_pas.c 	adsp->sysmon = qcom_add_sysmon_subdev(rproc,
sysmon            306 drivers/remoteproc/qcom_q6v5_pas.c 	if (IS_ERR(adsp->sysmon)) {
sysmon            307 drivers/remoteproc/qcom_q6v5_pas.c 		ret = PTR_ERR(adsp->sysmon);
sysmon            330 drivers/remoteproc/qcom_q6v5_pas.c 	qcom_remove_sysmon_subdev(adsp->sysmon);
sysmon             57 drivers/remoteproc/qcom_sysmon.c static void sysmon_send_event(struct qcom_sysmon *sysmon, const char *name)
sysmon             67 drivers/remoteproc/qcom_sysmon.c 	mutex_lock(&sysmon->lock);
sysmon             68 drivers/remoteproc/qcom_sysmon.c 	reinit_completion(&sysmon->comp);
sysmon             69 drivers/remoteproc/qcom_sysmon.c 	sysmon->ssr_ack = false;
sysmon             71 drivers/remoteproc/qcom_sysmon.c 	ret = rpmsg_send(sysmon->ept, req, len);
sysmon             73 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "failed to send sysmon event\n");
sysmon             77 drivers/remoteproc/qcom_sysmon.c 	ret = wait_for_completion_timeout(&sysmon->comp,
sysmon             80 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "timeout waiting for sysmon ack\n");
sysmon             84 drivers/remoteproc/qcom_sysmon.c 	if (!sysmon->ssr_ack)
sysmon             85 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "unexpected response to sysmon event\n");
sysmon             88 drivers/remoteproc/qcom_sysmon.c 	mutex_unlock(&sysmon->lock);
sysmon             95 drivers/remoteproc/qcom_sysmon.c static void sysmon_request_shutdown(struct qcom_sysmon *sysmon)
sysmon            100 drivers/remoteproc/qcom_sysmon.c 	mutex_lock(&sysmon->lock);
sysmon            101 drivers/remoteproc/qcom_sysmon.c 	reinit_completion(&sysmon->comp);
sysmon            102 drivers/remoteproc/qcom_sysmon.c 	sysmon->ssr_ack = false;
sysmon            104 drivers/remoteproc/qcom_sysmon.c 	ret = rpmsg_send(sysmon->ept, req, strlen(req) + 1);
sysmon            106 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "send sysmon shutdown request failed\n");
sysmon            110 drivers/remoteproc/qcom_sysmon.c 	ret = wait_for_completion_timeout(&sysmon->comp,
sysmon            113 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "timeout waiting for sysmon ack\n");
sysmon            117 drivers/remoteproc/qcom_sysmon.c 	if (!sysmon->ssr_ack)
sysmon            118 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev,
sysmon            122 drivers/remoteproc/qcom_sysmon.c 	mutex_unlock(&sysmon->lock);
sysmon            128 drivers/remoteproc/qcom_sysmon.c 	struct qcom_sysmon *sysmon = priv;
sysmon            132 drivers/remoteproc/qcom_sysmon.c 	if (!sysmon)
sysmon            136 drivers/remoteproc/qcom_sysmon.c 		sysmon->ssr_ack = true;
sysmon            138 drivers/remoteproc/qcom_sysmon.c 	complete(&sysmon->comp);
sysmon            267 drivers/remoteproc/qcom_sysmon.c 	struct qcom_sysmon *sysmon = container_of(qmi, struct qcom_sysmon, qmi);
sysmon            269 drivers/remoteproc/qcom_sysmon.c 	complete(&sysmon->ind_comp);
sysmon            287 drivers/remoteproc/qcom_sysmon.c static void ssctl_request_shutdown(struct qcom_sysmon *sysmon)
sysmon            293 drivers/remoteproc/qcom_sysmon.c 	reinit_completion(&sysmon->ind_comp);
sysmon            294 drivers/remoteproc/qcom_sysmon.c 	reinit_completion(&sysmon->shutdown_comp);
sysmon            295 drivers/remoteproc/qcom_sysmon.c 	ret = qmi_txn_init(&sysmon->qmi, &txn, ssctl_shutdown_resp_ei, &resp);
sysmon            297 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "failed to allocate QMI txn\n");
sysmon            301 drivers/remoteproc/qcom_sysmon.c 	ret = qmi_send_request(&sysmon->qmi, &sysmon->ssctl, &txn,
sysmon            304 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "failed to send shutdown request\n");
sysmon            311 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "failed receiving QMI response\n");
sysmon            313 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "shutdown request failed\n");
sysmon            315 drivers/remoteproc/qcom_sysmon.c 		dev_dbg(sysmon->dev, "shutdown request completed\n");
sysmon            317 drivers/remoteproc/qcom_sysmon.c 	if (sysmon->shutdown_irq > 0) {
sysmon            318 drivers/remoteproc/qcom_sysmon.c 		ret = wait_for_completion_timeout(&sysmon->shutdown_comp,
sysmon            321 drivers/remoteproc/qcom_sysmon.c 			ret = try_wait_for_completion(&sysmon->ind_comp);
sysmon            323 drivers/remoteproc/qcom_sysmon.c 				dev_err(sysmon->dev,
sysmon            334 drivers/remoteproc/qcom_sysmon.c static void ssctl_send_event(struct qcom_sysmon *sysmon, const char *name)
sysmon            342 drivers/remoteproc/qcom_sysmon.c 	ret = qmi_txn_init(&sysmon->qmi, &txn, ssctl_subsys_event_resp_ei, &resp);
sysmon            344 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "failed to allocate QMI txn\n");
sysmon            355 drivers/remoteproc/qcom_sysmon.c 	ret = qmi_send_request(&sysmon->qmi, &sysmon->ssctl, &txn,
sysmon            359 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "failed to send shutdown request\n");
sysmon            366 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "failed receiving QMI response\n");
sysmon            368 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "ssr event send failed\n");
sysmon            370 drivers/remoteproc/qcom_sysmon.c 		dev_dbg(sysmon->dev, "ssr event send completed\n");
sysmon            382 drivers/remoteproc/qcom_sysmon.c 	struct qcom_sysmon *sysmon = container_of(qmi, struct qcom_sysmon, qmi);
sysmon            388 drivers/remoteproc/qcom_sysmon.c 		if (strcmp(sysmon->name, "modem"))
sysmon            392 drivers/remoteproc/qcom_sysmon.c 		if (svc->instance != sysmon->ssctl_instance)
sysmon            399 drivers/remoteproc/qcom_sysmon.c 	sysmon->ssctl_version = svc->version;
sysmon            401 drivers/remoteproc/qcom_sysmon.c 	sysmon->ssctl.sq_family = AF_QIPCRTR;
sysmon            402 drivers/remoteproc/qcom_sysmon.c 	sysmon->ssctl.sq_node = svc->node;
sysmon            403 drivers/remoteproc/qcom_sysmon.c 	sysmon->ssctl.sq_port = svc->port;
sysmon            405 drivers/remoteproc/qcom_sysmon.c 	svc->priv = sysmon;
sysmon            417 drivers/remoteproc/qcom_sysmon.c 	struct qcom_sysmon *sysmon = svc->priv;
sysmon            419 drivers/remoteproc/qcom_sysmon.c 	sysmon->ssctl_version = 0;
sysmon            434 drivers/remoteproc/qcom_sysmon.c 	struct qcom_sysmon *sysmon = container_of(subdev, struct qcom_sysmon, subdev);
sysmon            436 drivers/remoteproc/qcom_sysmon.c 	blocking_notifier_call_chain(&sysmon_notifiers, 0, (void *)sysmon->name);
sysmon            442 drivers/remoteproc/qcom_sysmon.c 	if (sysmon->ssctl_version)
sysmon            443 drivers/remoteproc/qcom_sysmon.c 		ssctl_request_shutdown(sysmon);
sysmon            444 drivers/remoteproc/qcom_sysmon.c 	else if (sysmon->ept)
sysmon            445 drivers/remoteproc/qcom_sysmon.c 		sysmon_request_shutdown(sysmon);
sysmon            457 drivers/remoteproc/qcom_sysmon.c 	struct qcom_sysmon *sysmon = container_of(nb, struct qcom_sysmon, nb);
sysmon            458 drivers/remoteproc/qcom_sysmon.c 	struct rproc *rproc = sysmon->rproc;
sysmon            462 drivers/remoteproc/qcom_sysmon.c 	if (rproc->state != RPROC_RUNNING || !strcmp(data, sysmon->name)) {
sysmon            463 drivers/remoteproc/qcom_sysmon.c 		dev_dbg(sysmon->dev, "not notifying %s\n", sysmon->name);
sysmon            468 drivers/remoteproc/qcom_sysmon.c 	if (sysmon->ssctl_version == 2)
sysmon            469 drivers/remoteproc/qcom_sysmon.c 		ssctl_send_event(sysmon, ssr_name);
sysmon            470 drivers/remoteproc/qcom_sysmon.c 	else if (sysmon->ept)
sysmon            471 drivers/remoteproc/qcom_sysmon.c 		sysmon_send_event(sysmon, ssr_name);
sysmon            478 drivers/remoteproc/qcom_sysmon.c 	struct qcom_sysmon *sysmon = data;
sysmon            480 drivers/remoteproc/qcom_sysmon.c 	complete(&sysmon->shutdown_comp);
sysmon            497 drivers/remoteproc/qcom_sysmon.c 	struct qcom_sysmon *sysmon;
sysmon            500 drivers/remoteproc/qcom_sysmon.c 	sysmon = kzalloc(sizeof(*sysmon), GFP_KERNEL);
sysmon            501 drivers/remoteproc/qcom_sysmon.c 	if (!sysmon)
sysmon            504 drivers/remoteproc/qcom_sysmon.c 	sysmon->dev = rproc->dev.parent;
sysmon            505 drivers/remoteproc/qcom_sysmon.c 	sysmon->rproc = rproc;
sysmon            507 drivers/remoteproc/qcom_sysmon.c 	sysmon->name = name;
sysmon            508 drivers/remoteproc/qcom_sysmon.c 	sysmon->ssctl_instance = ssctl_instance;
sysmon            510 drivers/remoteproc/qcom_sysmon.c 	init_completion(&sysmon->comp);
sysmon            511 drivers/remoteproc/qcom_sysmon.c 	init_completion(&sysmon->ind_comp);
sysmon            512 drivers/remoteproc/qcom_sysmon.c 	init_completion(&sysmon->shutdown_comp);
sysmon            513 drivers/remoteproc/qcom_sysmon.c 	mutex_init(&sysmon->lock);
sysmon            515 drivers/remoteproc/qcom_sysmon.c 	sysmon->shutdown_irq = of_irq_get_byname(sysmon->dev->of_node,
sysmon            517 drivers/remoteproc/qcom_sysmon.c 	if (sysmon->shutdown_irq < 0) {
sysmon            518 drivers/remoteproc/qcom_sysmon.c 		if (sysmon->shutdown_irq != -ENODATA) {
sysmon            519 drivers/remoteproc/qcom_sysmon.c 			dev_err(sysmon->dev,
sysmon            521 drivers/remoteproc/qcom_sysmon.c 			return ERR_PTR(sysmon->shutdown_irq);
sysmon            524 drivers/remoteproc/qcom_sysmon.c 		ret = devm_request_threaded_irq(sysmon->dev,
sysmon            525 drivers/remoteproc/qcom_sysmon.c 						sysmon->shutdown_irq,
sysmon            528 drivers/remoteproc/qcom_sysmon.c 						"q6v5 shutdown-ack", sysmon);
sysmon            530 drivers/remoteproc/qcom_sysmon.c 			dev_err(sysmon->dev,
sysmon            536 drivers/remoteproc/qcom_sysmon.c 	ret = qmi_handle_init(&sysmon->qmi, SSCTL_MAX_MSG_LEN, &ssctl_ops,
sysmon            539 drivers/remoteproc/qcom_sysmon.c 		dev_err(sysmon->dev, "failed to initialize qmi handle\n");
sysmon            540 drivers/remoteproc/qcom_sysmon.c 		kfree(sysmon);
sysmon            544 drivers/remoteproc/qcom_sysmon.c 	qmi_add_lookup(&sysmon->qmi, 43, 0, 0);
sysmon            546 drivers/remoteproc/qcom_sysmon.c 	sysmon->subdev.start = sysmon_start;
sysmon            547 drivers/remoteproc/qcom_sysmon.c 	sysmon->subdev.stop = sysmon_stop;
sysmon            549 drivers/remoteproc/qcom_sysmon.c 	rproc_add_subdev(rproc, &sysmon->subdev);
sysmon            551 drivers/remoteproc/qcom_sysmon.c 	sysmon->nb.notifier_call = sysmon_notify;
sysmon            552 drivers/remoteproc/qcom_sysmon.c 	blocking_notifier_chain_register(&sysmon_notifiers, &sysmon->nb);
sysmon            555 drivers/remoteproc/qcom_sysmon.c 	list_add(&sysmon->node, &sysmon_list);
sysmon            558 drivers/remoteproc/qcom_sysmon.c 	return sysmon;
sysmon            566 drivers/remoteproc/qcom_sysmon.c void qcom_remove_sysmon_subdev(struct qcom_sysmon *sysmon)
sysmon            568 drivers/remoteproc/qcom_sysmon.c 	if (!sysmon)
sysmon            572 drivers/remoteproc/qcom_sysmon.c 	list_del(&sysmon->node);
sysmon            575 drivers/remoteproc/qcom_sysmon.c 	blocking_notifier_chain_unregister(&sysmon_notifiers, &sysmon->nb);
sysmon            577 drivers/remoteproc/qcom_sysmon.c 	rproc_remove_subdev(sysmon->rproc, &sysmon->subdev);
sysmon            579 drivers/remoteproc/qcom_sysmon.c 	qmi_handle_release(&sysmon->qmi);
sysmon            581 drivers/remoteproc/qcom_sysmon.c 	kfree(sysmon);
sysmon            596 drivers/remoteproc/qcom_sysmon.c 	struct qcom_sysmon *sysmon;
sysmon            606 drivers/remoteproc/qcom_sysmon.c 	list_for_each_entry(sysmon, &sysmon_list, node) {
sysmon            607 drivers/remoteproc/qcom_sysmon.c 		if (sysmon->rproc == rproc)
sysmon            619 drivers/remoteproc/qcom_sysmon.c 	rpdev->ept->priv = sysmon;
sysmon            620 drivers/remoteproc/qcom_sysmon.c 	sysmon->ept = rpdev->ept;
sysmon            633 drivers/remoteproc/qcom_sysmon.c 	struct qcom_sysmon *sysmon = rpdev->ept->priv;
sysmon            635 drivers/remoteproc/qcom_sysmon.c 	sysmon->ept = NULL;
sysmon             94 drivers/remoteproc/qcom_wcnss.c 	struct qcom_sysmon *sysmon;
sysmon            547 drivers/remoteproc/qcom_wcnss.c 	wcnss->sysmon = qcom_add_sysmon_subdev(rproc, "wcnss", WCNSS_SSCTL_ID);
sysmon            548 drivers/remoteproc/qcom_wcnss.c 	if (IS_ERR(wcnss->sysmon)) {
sysmon            549 drivers/remoteproc/qcom_wcnss.c 		ret = PTR_ERR(wcnss->sysmon);
sysmon            574 drivers/remoteproc/qcom_wcnss.c 	qcom_remove_sysmon_subdev(wcnss->sysmon);