#include <linux/completion.h>
#include <linux/module.h>
#include <linux/notifier.h>
#include <linux/rpmsg.h>
#include <linux/rpmsg/qcom_glink.h>
#include <linux/remoteproc/qcom_rproc.h>
struct do_cleanup_msg { … };
struct cleanup_done_msg { … };
#define GLINK_SSR_DO_CLEANUP …
#define GLINK_SSR_CLEANUP_DONE …
struct glink_ssr { … };
static BLOCKING_NOTIFIER_HEAD(ssr_notifiers);
void qcom_glink_ssr_notify(const char *ssr_name)
{ … }
EXPORT_SYMBOL_GPL(…);
static int qcom_glink_ssr_callback(struct rpmsg_device *rpdev,
void *data, int len, void *priv, u32 addr)
{ … }
static int qcom_glink_ssr_notifier_call(struct notifier_block *nb,
unsigned long event,
void *data)
{ … }
static int qcom_glink_ssr_probe(struct rpmsg_device *rpdev)
{ … }
static void qcom_glink_ssr_remove(struct rpmsg_device *rpdev)
{ … }
static const struct rpmsg_device_id qcom_glink_ssr_match[] = …;
MODULE_DEVICE_TABLE(rpmsg, qcom_glink_ssr_match);
static struct rpmsg_driver qcom_glink_ssr_driver = …;
module_rpmsg_driver(…) …;