mtk_rpmsg.h (1231B)
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* 3 * Copyright 2019 Google LLC. 4 */ 5 6#ifndef __LINUX_RPMSG_MTK_RPMSG_H 7#define __LINUX_RPMSG_MTK_RPMSG_H 8 9#include <linux/platform_device.h> 10#include <linux/remoteproc.h> 11 12typedef void (*ipi_handler_t)(void *data, unsigned int len, void *priv); 13 14/* 15 * struct mtk_rpmsg_info - IPI functions tied to the rpmsg device. 16 * @register_ipi: register IPI handler for an IPI id. 17 * @unregister_ipi: unregister IPI handler for a registered IPI id. 18 * @send_ipi: send IPI to an IPI id. wait is the timeout (in msecs) to wait 19 * until response, or 0 if there's no timeout. 20 * @ns_ipi_id: the IPI id used for name service, or -1 if name service isn't 21 * supported. 22 */ 23struct mtk_rpmsg_info { 24 int (*register_ipi)(struct platform_device *pdev, u32 id, 25 ipi_handler_t handler, void *priv); 26 void (*unregister_ipi)(struct platform_device *pdev, u32 id); 27 int (*send_ipi)(struct platform_device *pdev, u32 id, 28 void *buf, unsigned int len, unsigned int wait); 29 int ns_ipi_id; 30}; 31 32struct rproc_subdev * 33mtk_rpmsg_create_rproc_subdev(struct platform_device *pdev, 34 struct mtk_rpmsg_info *info); 35 36void mtk_rpmsg_destroy_rproc_subdev(struct rproc_subdev *subdev); 37 38#endif