diff options
author | Bjorn Andersson <bjorn.andersson@linaro.org> | 2016-09-01 18:28:05 -0400 |
---|---|---|
committer | Bjorn Andersson <bjorn.andersson@linaro.org> | 2016-09-09 01:15:24 -0400 |
commit | fade037e0fd504cd02f51d280928d89c75527f2e (patch) | |
tree | f8497e920119bc4c4889af65c822560e739b4866 /drivers/rpmsg/rpmsg_internal.h | |
parent | 5e619b48677ca8c9fb907c58383859cea78705c9 (diff) |
rpmsg: Hide rpmsg indirection tables
Move the device and endpoint indirection tables to the rpmsg internal
header file, to hide them from the public API.
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Diffstat (limited to 'drivers/rpmsg/rpmsg_internal.h')
-rw-r--r-- | drivers/rpmsg/rpmsg_internal.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/drivers/rpmsg/rpmsg_internal.h b/drivers/rpmsg/rpmsg_internal.h index 8ac98fd0bf1d..8075a20f919b 100644 --- a/drivers/rpmsg/rpmsg_internal.h +++ b/drivers/rpmsg/rpmsg_internal.h | |||
@@ -25,6 +25,53 @@ | |||
25 | #define to_rpmsg_device(d) container_of(d, struct rpmsg_device, dev) | 25 | #define to_rpmsg_device(d) container_of(d, struct rpmsg_device, dev) |
26 | #define to_rpmsg_driver(d) container_of(d, struct rpmsg_driver, drv) | 26 | #define to_rpmsg_driver(d) container_of(d, struct rpmsg_driver, drv) |
27 | 27 | ||
28 | /** | ||
29 | * struct rpmsg_device_ops - indirection table for the rpmsg_device operations | ||
30 | * @create_ept: create backend-specific endpoint, requried | ||
31 | * @announce_create: announce presence of new channel, optional | ||
32 | * @announce_destroy: announce destruction of channel, optional | ||
33 | * | ||
34 | * Indirection table for the operations that a rpmsg backend should implement. | ||
35 | * @announce_create and @announce_destroy are optional as the backend might | ||
36 | * advertise new channels implicitly by creating the endpoints. | ||
37 | */ | ||
38 | struct rpmsg_device_ops { | ||
39 | struct rpmsg_endpoint *(*create_ept)(struct rpmsg_device *rpdev, | ||
40 | rpmsg_rx_cb_t cb, void *priv, | ||
41 | struct rpmsg_channel_info chinfo); | ||
42 | |||
43 | int (*announce_create)(struct rpmsg_device *ept); | ||
44 | int (*announce_destroy)(struct rpmsg_device *ept); | ||
45 | }; | ||
46 | |||
47 | /** | ||
48 | * struct rpmsg_endpoint_ops - indirection table for rpmsg_endpoint operations | ||
49 | * @destroy_ept: destroy the given endpoint, required | ||
50 | * @send: see @rpmsg_send(), required | ||
51 | * @sendto: see @rpmsg_sendto(), optional | ||
52 | * @send_offchannel: see @rpmsg_send_offchannel(), optional | ||
53 | * @trysend: see @rpmsg_trysend(), required | ||
54 | * @trysendto: see @rpmsg_trysendto(), optional | ||
55 | * @trysend_offchannel: see @rpmsg_trysend_offchannel(), optional | ||
56 | * | ||
57 | * Indirection table for the operations that a rpmsg backend should implement. | ||
58 | * In addition to @destroy_ept, the backend must at least implement @send and | ||
59 | * @trysend, while the variants sending data off-channel are optional. | ||
60 | */ | ||
61 | struct rpmsg_endpoint_ops { | ||
62 | void (*destroy_ept)(struct rpmsg_endpoint *ept); | ||
63 | |||
64 | int (*send)(struct rpmsg_endpoint *ept, void *data, int len); | ||
65 | int (*sendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst); | ||
66 | int (*send_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst, | ||
67 | void *data, int len); | ||
68 | |||
69 | int (*trysend)(struct rpmsg_endpoint *ept, void *data, int len); | ||
70 | int (*trysendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst); | ||
71 | int (*trysend_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst, | ||
72 | void *data, int len); | ||
73 | }; | ||
74 | |||
28 | int rpmsg_register_device(struct rpmsg_device *rpdev); | 75 | int rpmsg_register_device(struct rpmsg_device *rpdev); |
29 | int rpmsg_unregister_device(struct device *parent, | 76 | int rpmsg_unregister_device(struct device *parent, |
30 | struct rpmsg_channel_info *chinfo); | 77 | struct rpmsg_channel_info *chinfo); |