90 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef __RPROC_QCOM_COMMON_H__3#define __RPROC_QCOM_COMMON_H__4 5#include <linux/remoteproc.h>6#include "remoteproc_internal.h"7#include <linux/soc/qcom/qmi.h>8 9struct qcom_glink_smem;10struct qcom_sysmon;11 12struct qcom_rproc_glink {13 struct rproc_subdev subdev;14 15 const char *ssr_name;16 17 struct device *dev;18 struct device_node *node;19 struct qcom_glink_smem *edge;20};21 22struct qcom_rproc_subdev {23 struct rproc_subdev subdev;24 25 struct device *dev;26 struct device_node *node;27 struct qcom_smd_edge *edge;28};29 30struct qcom_ssr_subsystem;31 32struct qcom_rproc_ssr {33 struct rproc_subdev subdev;34 struct qcom_ssr_subsystem *info;35};36 37struct qcom_rproc_pdm {38 struct rproc_subdev subdev;39 struct device *dev;40 int index;41 struct auxiliary_device *adev;42};43 44void qcom_minidump(struct rproc *rproc, unsigned int minidump_id,45 void (*rproc_dumpfn_t)(struct rproc *rproc,46 struct rproc_dump_segment *segment, void *dest, size_t offset,47 size_t size));48 49void qcom_add_glink_subdev(struct rproc *rproc, struct qcom_rproc_glink *glink,50 const char *ssr_name);51void qcom_remove_glink_subdev(struct rproc *rproc, struct qcom_rproc_glink *glink);52 53int qcom_register_dump_segments(struct rproc *rproc, const struct firmware *fw);54 55void qcom_add_smd_subdev(struct rproc *rproc, struct qcom_rproc_subdev *smd);56void qcom_remove_smd_subdev(struct rproc *rproc, struct qcom_rproc_subdev *smd);57 58void qcom_add_ssr_subdev(struct rproc *rproc, struct qcom_rproc_ssr *ssr,59 const char *ssr_name);60void qcom_remove_ssr_subdev(struct rproc *rproc, struct qcom_rproc_ssr *ssr);61 62void qcom_add_pdm_subdev(struct rproc *rproc, struct qcom_rproc_pdm *pdm);63void qcom_remove_pdm_subdev(struct rproc *rproc, struct qcom_rproc_pdm *pdm);64 65#if IS_ENABLED(CONFIG_QCOM_SYSMON)66struct qcom_sysmon *qcom_add_sysmon_subdev(struct rproc *rproc,67 const char *name,68 int ssctl_instance);69void qcom_remove_sysmon_subdev(struct qcom_sysmon *sysmon);70bool qcom_sysmon_shutdown_acked(struct qcom_sysmon *sysmon);71#else72static inline struct qcom_sysmon *qcom_add_sysmon_subdev(struct rproc *rproc,73 const char *name,74 int ssctl_instance)75{76 return NULL;77}78 79static inline void qcom_remove_sysmon_subdev(struct qcom_sysmon *sysmon)80{81}82 83static inline bool qcom_sysmon_shutdown_acked(struct qcom_sysmon *sysmon)84{85 return false;86}87#endif88 89#endif90