xref: /linux/drivers/rpmsg/rpmsg_char.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1*69265bc1SArnaud Pouliquen /* SPDX-License-Identifier: GPL-2.0 */
2*69265bc1SArnaud Pouliquen /*
3*69265bc1SArnaud Pouliquen  * Copyright (C) 2022, STMicroelectronics
4*69265bc1SArnaud Pouliquen  */
5*69265bc1SArnaud Pouliquen 
6*69265bc1SArnaud Pouliquen #ifndef __RPMSG_CHRDEV_H__
7*69265bc1SArnaud Pouliquen #define __RPMSG_CHRDEV_H__
8*69265bc1SArnaud Pouliquen 
9*69265bc1SArnaud Pouliquen #if IS_ENABLED(CONFIG_RPMSG_CHAR)
10*69265bc1SArnaud Pouliquen /**
11*69265bc1SArnaud Pouliquen  * rpmsg_chrdev_eptdev_create() - register char device based on an endpoint
12*69265bc1SArnaud Pouliquen  * @rpdev:  prepared rpdev to be used for creating endpoints
13*69265bc1SArnaud Pouliquen  * @parent: parent device
14*69265bc1SArnaud Pouliquen  * @chinfo: associated endpoint channel information.
15*69265bc1SArnaud Pouliquen  *
16*69265bc1SArnaud Pouliquen  * This function create a new rpmsg char endpoint device to instantiate a new
17*69265bc1SArnaud Pouliquen  * endpoint based on chinfo information.
18*69265bc1SArnaud Pouliquen  */
19*69265bc1SArnaud Pouliquen int rpmsg_chrdev_eptdev_create(struct rpmsg_device *rpdev, struct device *parent,
20*69265bc1SArnaud Pouliquen 			       struct rpmsg_channel_info chinfo);
21*69265bc1SArnaud Pouliquen 
22*69265bc1SArnaud Pouliquen /**
23*69265bc1SArnaud Pouliquen  * rpmsg_chrdev_eptdev_destroy() - destroy created char device endpoint.
24*69265bc1SArnaud Pouliquen  * @data: private data associated to the endpoint device
25*69265bc1SArnaud Pouliquen  *
26*69265bc1SArnaud Pouliquen  * This function destroys a rpmsg char endpoint device created by the RPMSG_DESTROY_EPT_IOCTL
27*69265bc1SArnaud Pouliquen  * control.
28*69265bc1SArnaud Pouliquen  */
29*69265bc1SArnaud Pouliquen int rpmsg_chrdev_eptdev_destroy(struct device *dev, void *data);
30*69265bc1SArnaud Pouliquen 
31*69265bc1SArnaud Pouliquen #else  /*IS_ENABLED(CONFIG_RPMSG_CHAR) */
32*69265bc1SArnaud Pouliquen 
rpmsg_chrdev_eptdev_create(struct rpmsg_device * rpdev,struct device * parent,struct rpmsg_channel_info chinfo)33*69265bc1SArnaud Pouliquen static inline int rpmsg_chrdev_eptdev_create(struct rpmsg_device *rpdev, struct device *parent,
34*69265bc1SArnaud Pouliquen 					     struct rpmsg_channel_info chinfo)
35*69265bc1SArnaud Pouliquen {
36*69265bc1SArnaud Pouliquen 	return -ENXIO;
37*69265bc1SArnaud Pouliquen }
38*69265bc1SArnaud Pouliquen 
rpmsg_chrdev_eptdev_destroy(struct device * dev,void * data)39*69265bc1SArnaud Pouliquen static inline int rpmsg_chrdev_eptdev_destroy(struct device *dev, void *data)
40*69265bc1SArnaud Pouliquen {
41*69265bc1SArnaud Pouliquen 	return -ENXIO;
42*69265bc1SArnaud Pouliquen }
43*69265bc1SArnaud Pouliquen 
44*69265bc1SArnaud Pouliquen #endif /*IS_ENABLED(CONFIG_RPMSG_CHAR) */
45*69265bc1SArnaud Pouliquen 
46*69265bc1SArnaud Pouliquen #endif /*__RPMSG_CHRDEV_H__ */
47