18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci#ifndef __RPROC_QCOM_COMMON_H__ 38c2ecf20Sopenharmony_ci#define __RPROC_QCOM_COMMON_H__ 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci#include <linux/remoteproc.h> 68c2ecf20Sopenharmony_ci#include "remoteproc_internal.h" 78c2ecf20Sopenharmony_ci#include <linux/soc/qcom/qmi.h> 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_cistruct qcom_sysmon; 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_cistruct qcom_rproc_glink { 128c2ecf20Sopenharmony_ci struct rproc_subdev subdev; 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci const char *ssr_name; 158c2ecf20Sopenharmony_ci 168c2ecf20Sopenharmony_ci struct device *dev; 178c2ecf20Sopenharmony_ci struct device_node *node; 188c2ecf20Sopenharmony_ci struct qcom_glink *edge; 198c2ecf20Sopenharmony_ci}; 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_cistruct qcom_rproc_subdev { 228c2ecf20Sopenharmony_ci struct rproc_subdev subdev; 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci struct device *dev; 258c2ecf20Sopenharmony_ci struct device_node *node; 268c2ecf20Sopenharmony_ci struct qcom_smd_edge *edge; 278c2ecf20Sopenharmony_ci}; 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_cistruct qcom_ssr_subsystem; 308c2ecf20Sopenharmony_ci 318c2ecf20Sopenharmony_cistruct qcom_rproc_ssr { 328c2ecf20Sopenharmony_ci struct rproc_subdev subdev; 338c2ecf20Sopenharmony_ci struct qcom_ssr_subsystem *info; 348c2ecf20Sopenharmony_ci}; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_civoid qcom_add_glink_subdev(struct rproc *rproc, struct qcom_rproc_glink *glink, 378c2ecf20Sopenharmony_ci const char *ssr_name); 388c2ecf20Sopenharmony_civoid qcom_remove_glink_subdev(struct rproc *rproc, struct qcom_rproc_glink *glink); 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ciint qcom_register_dump_segments(struct rproc *rproc, const struct firmware *fw); 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_civoid qcom_add_smd_subdev(struct rproc *rproc, struct qcom_rproc_subdev *smd); 438c2ecf20Sopenharmony_civoid qcom_remove_smd_subdev(struct rproc *rproc, struct qcom_rproc_subdev *smd); 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_civoid qcom_add_ssr_subdev(struct rproc *rproc, struct qcom_rproc_ssr *ssr, 468c2ecf20Sopenharmony_ci const char *ssr_name); 478c2ecf20Sopenharmony_civoid qcom_remove_ssr_subdev(struct rproc *rproc, struct qcom_rproc_ssr *ssr); 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_QCOM_SYSMON) 508c2ecf20Sopenharmony_cistruct qcom_sysmon *qcom_add_sysmon_subdev(struct rproc *rproc, 518c2ecf20Sopenharmony_ci const char *name, 528c2ecf20Sopenharmony_ci int ssctl_instance); 538c2ecf20Sopenharmony_civoid qcom_remove_sysmon_subdev(struct qcom_sysmon *sysmon); 548c2ecf20Sopenharmony_ci#else 558c2ecf20Sopenharmony_cistatic inline struct qcom_sysmon *qcom_add_sysmon_subdev(struct rproc *rproc, 568c2ecf20Sopenharmony_ci const char *name, 578c2ecf20Sopenharmony_ci int ssctl_instance) 588c2ecf20Sopenharmony_ci{ 598c2ecf20Sopenharmony_ci return NULL; 608c2ecf20Sopenharmony_ci} 618c2ecf20Sopenharmony_ci 628c2ecf20Sopenharmony_cistatic inline void qcom_remove_sysmon_subdev(struct qcom_sysmon *sysmon) 638c2ecf20Sopenharmony_ci{ 648c2ecf20Sopenharmony_ci} 658c2ecf20Sopenharmony_ci#endif 668c2ecf20Sopenharmony_ci 678c2ecf20Sopenharmony_ci#endif 68