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>
This commit is contained in:
parent
5e619b4867
commit
fade037e0f
|
@ -20,7 +20,10 @@
|
||||||
#define pr_fmt(fmt) "%s: " fmt, __func__
|
#define pr_fmt(fmt) "%s: " fmt, __func__
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/rpmsg.h>
|
#include <linux/rpmsg.h>
|
||||||
|
#include <linux/of_device.h>
|
||||||
|
#include <linux/slab.h>
|
||||||
|
|
||||||
#include "rpmsg_internal.h"
|
#include "rpmsg_internal.h"
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,53 @@
|
||||||
#define to_rpmsg_device(d) container_of(d, struct rpmsg_device, dev)
|
#define to_rpmsg_device(d) container_of(d, struct rpmsg_device, dev)
|
||||||
#define to_rpmsg_driver(d) container_of(d, struct rpmsg_driver, drv)
|
#define to_rpmsg_driver(d) container_of(d, struct rpmsg_driver, drv)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct rpmsg_device_ops - indirection table for the rpmsg_device operations
|
||||||
|
* @create_ept: create backend-specific endpoint, requried
|
||||||
|
* @announce_create: announce presence of new channel, optional
|
||||||
|
* @announce_destroy: announce destruction of channel, optional
|
||||||
|
*
|
||||||
|
* Indirection table for the operations that a rpmsg backend should implement.
|
||||||
|
* @announce_create and @announce_destroy are optional as the backend might
|
||||||
|
* advertise new channels implicitly by creating the endpoints.
|
||||||
|
*/
|
||||||
|
struct rpmsg_device_ops {
|
||||||
|
struct rpmsg_endpoint *(*create_ept)(struct rpmsg_device *rpdev,
|
||||||
|
rpmsg_rx_cb_t cb, void *priv,
|
||||||
|
struct rpmsg_channel_info chinfo);
|
||||||
|
|
||||||
|
int (*announce_create)(struct rpmsg_device *ept);
|
||||||
|
int (*announce_destroy)(struct rpmsg_device *ept);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct rpmsg_endpoint_ops - indirection table for rpmsg_endpoint operations
|
||||||
|
* @destroy_ept: destroy the given endpoint, required
|
||||||
|
* @send: see @rpmsg_send(), required
|
||||||
|
* @sendto: see @rpmsg_sendto(), optional
|
||||||
|
* @send_offchannel: see @rpmsg_send_offchannel(), optional
|
||||||
|
* @trysend: see @rpmsg_trysend(), required
|
||||||
|
* @trysendto: see @rpmsg_trysendto(), optional
|
||||||
|
* @trysend_offchannel: see @rpmsg_trysend_offchannel(), optional
|
||||||
|
*
|
||||||
|
* Indirection table for the operations that a rpmsg backend should implement.
|
||||||
|
* In addition to @destroy_ept, the backend must at least implement @send and
|
||||||
|
* @trysend, while the variants sending data off-channel are optional.
|
||||||
|
*/
|
||||||
|
struct rpmsg_endpoint_ops {
|
||||||
|
void (*destroy_ept)(struct rpmsg_endpoint *ept);
|
||||||
|
|
||||||
|
int (*send)(struct rpmsg_endpoint *ept, void *data, int len);
|
||||||
|
int (*sendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst);
|
||||||
|
int (*send_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
||||||
|
void *data, int len);
|
||||||
|
|
||||||
|
int (*trysend)(struct rpmsg_endpoint *ept, void *data, int len);
|
||||||
|
int (*trysendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst);
|
||||||
|
int (*trysend_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
||||||
|
void *data, int len);
|
||||||
|
};
|
||||||
|
|
||||||
int rpmsg_register_device(struct rpmsg_device *rpdev);
|
int rpmsg_register_device(struct rpmsg_device *rpdev);
|
||||||
int rpmsg_unregister_device(struct device *parent,
|
int rpmsg_unregister_device(struct device *parent,
|
||||||
struct rpmsg_channel_info *chinfo);
|
struct rpmsg_channel_info *chinfo);
|
||||||
|
|
|
@ -137,25 +137,6 @@ struct rpmsg_device {
|
||||||
|
|
||||||
typedef void (*rpmsg_rx_cb_t)(struct rpmsg_device *, void *, int, void *, u32);
|
typedef void (*rpmsg_rx_cb_t)(struct rpmsg_device *, void *, int, void *, u32);
|
||||||
|
|
||||||
/**
|
|
||||||
* struct rpmsg_device_ops - indirection table for the rpmsg_device operations
|
|
||||||
* @create_ept: create backend-specific endpoint, requried
|
|
||||||
* @announce_create: announce presence of new channel, optional
|
|
||||||
* @announce_destroy: announce destruction of channel, optional
|
|
||||||
*
|
|
||||||
* Indirection table for the operations that a rpmsg backend should implement.
|
|
||||||
* @announce_create and @announce_destroy are optional as the backend might
|
|
||||||
* advertise new channels implicitly by creating the endpoints.
|
|
||||||
*/
|
|
||||||
struct rpmsg_device_ops {
|
|
||||||
struct rpmsg_endpoint *(*create_ept)(struct rpmsg_device *rpdev,
|
|
||||||
rpmsg_rx_cb_t cb, void *priv,
|
|
||||||
struct rpmsg_channel_info chinfo);
|
|
||||||
|
|
||||||
int (*announce_create)(struct rpmsg_device *ept);
|
|
||||||
int (*announce_destroy)(struct rpmsg_device *ept);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct rpmsg_endpoint - binds a local rpmsg address to its user
|
* struct rpmsg_endpoint - binds a local rpmsg address to its user
|
||||||
* @rpdev: rpmsg channel device
|
* @rpdev: rpmsg channel device
|
||||||
|
@ -190,34 +171,6 @@ struct rpmsg_endpoint {
|
||||||
const struct rpmsg_endpoint_ops *ops;
|
const struct rpmsg_endpoint_ops *ops;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* struct rpmsg_endpoint_ops - indirection table for rpmsg_endpoint operations
|
|
||||||
* @destroy_ept: destroy the given endpoint, required
|
|
||||||
* @send: see @rpmsg_send(), required
|
|
||||||
* @sendto: see @rpmsg_sendto(), optional
|
|
||||||
* @send_offchannel: see @rpmsg_send_offchannel(), optional
|
|
||||||
* @trysend: see @rpmsg_trysend(), required
|
|
||||||
* @trysendto: see @rpmsg_trysendto(), optional
|
|
||||||
* @trysend_offchannel: see @rpmsg_trysend_offchannel(), optional
|
|
||||||
*
|
|
||||||
* Indirection table for the operations that a rpmsg backend should implement.
|
|
||||||
* In addition to @destroy_ept, the backend must at least implement @send and
|
|
||||||
* @trysend, while the variants sending data off-channel are optional.
|
|
||||||
*/
|
|
||||||
struct rpmsg_endpoint_ops {
|
|
||||||
void (*destroy_ept)(struct rpmsg_endpoint *ept);
|
|
||||||
|
|
||||||
int (*send)(struct rpmsg_endpoint *ept, void *data, int len);
|
|
||||||
int (*sendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst);
|
|
||||||
int (*send_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
|
||||||
void *data, int len);
|
|
||||||
|
|
||||||
int (*trysend)(struct rpmsg_endpoint *ept, void *data, int len);
|
|
||||||
int (*trysendto)(struct rpmsg_endpoint *ept, void *data, int len, u32 dst);
|
|
||||||
int (*trysend_offchannel)(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
|
||||||
void *data, int len);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct rpmsg_driver - rpmsg driver struct
|
* struct rpmsg_driver - rpmsg driver struct
|
||||||
* @drv: underlying device driver
|
* @drv: underlying device driver
|
||||||
|
|
Loading…
Reference in New Issue