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 | |
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>
-rw-r--r-- | drivers/rpmsg/rpmsg_core.c | 3 | ||||
-rw-r--r-- | drivers/rpmsg/rpmsg_internal.h | 47 | ||||
-rw-r--r-- | include/linux/rpmsg.h | 47 |
3 files changed, 50 insertions, 47 deletions
diff --git a/drivers/rpmsg/rpmsg_core.c b/drivers/rpmsg/rpmsg_core.c index e1d765a7372c..b6ea9ffa7381 100644 --- a/drivers/rpmsg/rpmsg_core.c +++ b/drivers/rpmsg/rpmsg_core.c | |||
@@ -20,7 +20,10 @@ | |||
20 | #define pr_fmt(fmt) "%s: " fmt, __func__ | 20 | #define pr_fmt(fmt) "%s: " fmt, __func__ |
21 | 21 | ||
22 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
23 | #include <linux/module.h> | ||
23 | #include <linux/rpmsg.h> | 24 | #include <linux/rpmsg.h> |
25 | #include <linux/of_device.h> | ||
26 | #include <linux/slab.h> | ||
24 | 27 | ||
25 | #include "rpmsg_internal.h" | 28 | #include "rpmsg_internal.h" |
26 | 29 | ||
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); |
diff --git a/include/linux/rpmsg.h b/include/linux/rpmsg.h index 99efd598590e..4f9445f71f2f 100644 --- a/include/linux/rpmsg.h +++ b/include/linux/rpmsg.h | |||
@@ -138,25 +138,6 @@ struct rpmsg_device { | |||
138 | typedef void (*rpmsg_rx_cb_t)(struct rpmsg_device *, void *, int, void *, u32); | 138 | typedef void (*rpmsg_rx_cb_t)(struct rpmsg_device *, void *, int, void *, u32); |
139 | 139 | ||
140 | /** | 140 | /** |
141 | * struct rpmsg_device_ops - indirection table for the rpmsg_device operations | ||
142 | * @create_ept: create backend-specific endpoint, requried | ||
143 | * @announce_create: announce presence of new channel, optional | ||
144 | * @announce_destroy: announce destruction of channel, optional | ||
145 | * | ||
146 | * Indirection table for the operations that a rpmsg backend should implement. | ||
147 | * @announce_create and @announce_destroy are optional as the backend might | ||
148 | * advertise new channels implicitly by creating the endpoints. | ||
149 | */ | ||
150 | struct rpmsg_device_ops { | ||
151 | struct rpmsg_endpoint *(*create_ept)(struct rpmsg_device *rpdev, | ||
152 | rpmsg_rx_cb_t cb, void *priv, | ||
153 | struct rpmsg_channel_info chinfo); | ||
154 | |||
155 | int (*announce_create)(struct rpmsg_device *ept); | ||
156 | int (*announce_destroy)(struct rpmsg_device *ept); | ||
157 | }; | ||
158 | |||
159 | /** | ||
160 | * struct rpmsg_endpoint - binds a local rpmsg address to its user | 141 | * struct rpmsg_endpoint - binds a local rpmsg address to its user |
161 | * @rpdev: rpmsg channel device | 142 | * @rpdev: rpmsg channel device |
162 | * @refcount: when this drops to zero, the ept is deallocated | 143 | * @refcount: when this drops to zero, the ept is deallocated |
@@ -191,34 +172,6 @@ struct rpmsg_endpoint { | |||
191 | }; | 172 | }; |
192 | 173 | ||
193 | /** | 174 | /** |
194 | * struct rpmsg_endpoint_ops - indirection table for rpmsg_endpoint operations | ||
195 | * @destroy_ept: destroy the given endpoint, required | ||
196 | * @send: see @rpmsg_send(), required | ||
197 | * @sendto: see @rpmsg_sendto(), optional | ||
198 | * @send_offchannel: see @rpmsg_send_offchannel(), optional | ||
199 | * @trysend: see @rpmsg_trysend(), required | ||
200 | * @trysendto: see @rpmsg_trysendto(), optional | ||
201 | * @trysend_offchannel: see @rpmsg_trysend_offchannel(), optional | ||
202 | * | ||
203 | * Indirection table for the operations that a rpmsg backend should implement. | ||
204 | * In addition to @destroy_ept, the backend must at least implement @send and | ||
205 | * @trysend, while the variants sending data off-channel are optional. | ||
206 | */ | ||
207 | struct rpmsg_endpoint_ops { | ||
208 | void (*destroy_ept)(struct rpmsg_endpoint *ept); | ||
209 | |||
210 | int (*send)(struct rpmsg_endpoint *ept, void *data, int len); | ||
211 | int (*sendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst); | ||
212 | int (*send_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst, | ||
213 | void *data, int len); | ||
214 | |||
215 | int (*trysend)(struct rpmsg_endpoint *ept, void *data, int len); | ||
216 | int (*trysendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst); | ||
217 | int (*trysend_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst, | ||
218 | void *data, int len); | ||
219 | }; | ||
220 | |||
221 | /** | ||
222 | * struct rpmsg_driver - rpmsg driver struct | 175 | * struct rpmsg_driver - rpmsg driver struct |
223 | * @drv: underlying device driver | 176 | * @drv: underlying device driver |
224 | * @id_table: rpmsg ids serviced by this driver | 177 | * @id_table: rpmsg ids serviced by this driver |