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