rpmsg updates for v5.4
This contains updates to make the rpmsg sample driver more useful, fixes the naming of GLINK devices to avoid naming collisions and a few minor bug fixes. It also updates MAINTAINERS to reflect the move to kernel.org. -----BEGIN PGP SIGNATURE----- iQJPBAABCAA5FiEEBd4DzF816k8JZtUlCx85Pw2ZrcUFAl2GU7UbHGJqb3JuLmFu ZGVyc3NvbkBsaW5hcm8ub3JnAAoJEAsfOT8Nma3FNMYP/3Y7UTRh1pNc+dfNz+lV NqvSJ+59YQiBNo9eJY8U2sj7htHSFm0Pds1+heYSl8UwVkxNXCCyELps2YYUvFip Jnga0TgWAwx2p224E2eFkW7onB6TF9QvEOQ4Pb8pkXXTtwqIy8z3rhic4FSo2gGS jQeeT61eHCDZnwD7WJJPTuAzZJYt2RQSZbsiBEBnGcDe/bIhH3zLfYRVwPB6vFeS tf82G1YBaWktW5qELh41VngmGtVquS4UDMmccRl8umYmGQPG90p8ioq1FNLqMDdV /+rnUxe3hrhYPJuib1F1vwJLa5jAQmqeQmp34lMStBbGUXSGK9nPT7iBSHV4VwMu 2/Gvq7VkFvix7toAXEJUiTihbBe+IfyW1MI/Qm9L3H/ZXjBFf9ARPttpgwaNxkeP bmrni4iKkUHCEQXBvhR5FaL9jRE/8PFLcOuTPlasdEffKtWuoGZgGhXctaqVCTHs CawFanS9mWZGRuNFFw8qHuVTwXavTawLXJrIXp/OUceMRakEbzcaxZ1Z76fCtXMk 75oMrKi6CgqddhU5BAGMbAoC65T1nMofYGALQb3vxr4HyNIFRRzKHX1Z22+uoQmg 6Odi9xr+eR0A0f5haDq3xr2n7o7KN6XrE60gdlOiFb1kR+GhAyd5olLz9LtrnMC1 57QeZq1TiloUwg8vRStf8DiK =1BvW -----END PGP SIGNATURE----- Merge tag 'rpmsg-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc Pull rpmsg updates from Bjorn Andersson: "This contains updates to make the rpmsg sample driver more useful, fixes the naming of GLINK devices to avoid naming collisions and a few minor bug fixes. It also updates MAINTAINERS to reflect the move to kernel.org" * tag 'rpmsg-v5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc: rpmsg: glink-smem: Name the edge based on parent remoteproc rpmsg: glink: Use struct_size() helper rpmsg: virtio_rpmsg_bus: replace "%p" with "%pK" MAINTAINERS: rpmsg: fix git tree location rpmsg: core: fix comments samples/rpmsg: Introduce a module parameter for message count samples/rpmsg: Replace print_hex_dump() with print_hex_dump_debug()
This commit is contained in:
Коммит
379bb04517
|
@ -13761,7 +13761,7 @@ REMOTE PROCESSOR MESSAGING (RPMSG) SUBSYSTEM
|
||||||
M: Ohad Ben-Cohen <ohad@wizery.com>
|
M: Ohad Ben-Cohen <ohad@wizery.com>
|
||||||
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
M: Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||||
L: linux-remoteproc@vger.kernel.org
|
L: linux-remoteproc@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/ohad/rpmsg.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc.git rpmsg-next
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/rpmsg/
|
F: drivers/rpmsg/
|
||||||
F: Documentation/rpmsg.txt
|
F: Documentation/rpmsg.txt
|
||||||
|
|
|
@ -892,7 +892,7 @@ static void qcom_glink_handle_intent(struct qcom_glink *glink,
|
||||||
struct intent_pair intents[];
|
struct intent_pair intents[];
|
||||||
} __packed * msg;
|
} __packed * msg;
|
||||||
|
|
||||||
const size_t msglen = sizeof(*msg) + sizeof(struct intent_pair) * count;
|
const size_t msglen = struct_size(msg, intents, count);
|
||||||
int ret;
|
int ret;
|
||||||
int i;
|
int i;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
|
@ -201,7 +201,7 @@ struct qcom_glink *qcom_glink_smem_register(struct device *parent,
|
||||||
dev->parent = parent;
|
dev->parent = parent;
|
||||||
dev->of_node = node;
|
dev->of_node = node;
|
||||||
dev->release = qcom_glink_smem_release;
|
dev->release = qcom_glink_smem_release;
|
||||||
dev_set_name(dev, "%pOFn:%pOFn", node->parent, node);
|
dev_set_name(dev, "%s:%pOFn", dev_name(parent->parent), node);
|
||||||
ret = device_register(dev);
|
ret = device_register(dev);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_err("failed to register glink edge\n");
|
pr_err("failed to register glink edge\n");
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
* equals to the src address of their rpmsg channel), the driver's handler
|
* equals to the src address of their rpmsg channel), the driver's handler
|
||||||
* is invoked to process it.
|
* is invoked to process it.
|
||||||
*
|
*
|
||||||
* That said, more complicated drivers might do need to allocate
|
* That said, more complicated drivers might need to allocate
|
||||||
* additional rpmsg addresses, and bind them to different rx callbacks.
|
* additional rpmsg addresses, and bind them to different rx callbacks.
|
||||||
* To accomplish that, those drivers need to call this function.
|
* To accomplish that, those drivers need to call this function.
|
||||||
*
|
*
|
||||||
|
@ -177,7 +177,7 @@ int rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst,
|
||||||
EXPORT_SYMBOL(rpmsg_send_offchannel);
|
EXPORT_SYMBOL(rpmsg_send_offchannel);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* rpmsg_send() - send a message across to the remote processor
|
* rpmsg_trysend() - send a message across to the remote processor
|
||||||
* @ept: the rpmsg endpoint
|
* @ept: the rpmsg endpoint
|
||||||
* @data: payload of message
|
* @data: payload of message
|
||||||
* @len: length of payload
|
* @len: length of payload
|
||||||
|
@ -205,7 +205,7 @@ int rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len)
|
||||||
EXPORT_SYMBOL(rpmsg_trysend);
|
EXPORT_SYMBOL(rpmsg_trysend);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* rpmsg_sendto() - send a message across to the remote processor, specify dst
|
* rpmsg_trysendto() - send a message across to the remote processor, specify dst
|
||||||
* @ept: the rpmsg endpoint
|
* @ept: the rpmsg endpoint
|
||||||
* @data: payload of message
|
* @data: payload of message
|
||||||
* @len: length of payload
|
* @len: length of payload
|
||||||
|
@ -253,7 +253,7 @@ __poll_t rpmsg_poll(struct rpmsg_endpoint *ept, struct file *filp,
|
||||||
EXPORT_SYMBOL(rpmsg_poll);
|
EXPORT_SYMBOL(rpmsg_poll);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* rpmsg_send_offchannel() - send a message using explicit src/dst addresses
|
* rpmsg_trysend_offchannel() - send a message using explicit src/dst addresses
|
||||||
* @ept: the rpmsg endpoint
|
* @ept: the rpmsg endpoint
|
||||||
* @src: source address
|
* @src: source address
|
||||||
* @dst: destination address
|
* @dst: destination address
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct rpmsg_device_ops - indirection table for the rpmsg_device operations
|
* struct rpmsg_device_ops - indirection table for the rpmsg_device operations
|
||||||
* @create_ept: create backend-specific endpoint, requried
|
* @create_ept: create backend-specific endpoint, required
|
||||||
* @announce_create: announce presence of new channel, optional
|
* @announce_create: announce presence of new channel, optional
|
||||||
* @announce_destroy: announce destruction of channel, optional
|
* @announce_destroy: announce destruction of channel, optional
|
||||||
*
|
*
|
||||||
|
@ -39,13 +39,14 @@ struct rpmsg_device_ops {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct rpmsg_endpoint_ops - indirection table for rpmsg_endpoint operations
|
* struct rpmsg_endpoint_ops - indirection table for rpmsg_endpoint operations
|
||||||
* @destroy_ept: destroy the given endpoint, required
|
* @destroy_ept: see @rpmsg_destroy_ept(), required
|
||||||
* @send: see @rpmsg_send(), required
|
* @send: see @rpmsg_send(), required
|
||||||
* @sendto: see @rpmsg_sendto(), optional
|
* @sendto: see @rpmsg_sendto(), optional
|
||||||
* @send_offchannel: see @rpmsg_send_offchannel(), optional
|
* @send_offchannel: see @rpmsg_send_offchannel(), optional
|
||||||
* @trysend: see @rpmsg_trysend(), required
|
* @trysend: see @rpmsg_trysend(), required
|
||||||
* @trysendto: see @rpmsg_trysendto(), optional
|
* @trysendto: see @rpmsg_trysendto(), optional
|
||||||
* @trysend_offchannel: see @rpmsg_trysend_offchannel(), optional
|
* @trysend_offchannel: see @rpmsg_trysend_offchannel(), optional
|
||||||
|
* @poll: see @rpmsg_poll(), optional
|
||||||
*
|
*
|
||||||
* Indirection table for the operations that a rpmsg backend should implement.
|
* Indirection table for the operations that a rpmsg backend should implement.
|
||||||
* In addition to @destroy_ept, the backend must at least implement @send and
|
* In addition to @destroy_ept, the backend must at least implement @send and
|
||||||
|
|
|
@ -920,7 +920,7 @@ static int rpmsg_probe(struct virtio_device *vdev)
|
||||||
goto vqs_del;
|
goto vqs_del;
|
||||||
}
|
}
|
||||||
|
|
||||||
dev_dbg(&vdev->dev, "buffers: va %p, dma %pad\n",
|
dev_dbg(&vdev->dev, "buffers: va %pK, dma %pad\n",
|
||||||
bufs_va, &vrp->bufs_dma);
|
bufs_va, &vrp->bufs_dma);
|
||||||
|
|
||||||
/* half of the buffers is dedicated for RX */
|
/* half of the buffers is dedicated for RX */
|
||||||
|
|
|
@ -14,7 +14,9 @@
|
||||||
#include <linux/rpmsg.h>
|
#include <linux/rpmsg.h>
|
||||||
|
|
||||||
#define MSG "hello world!"
|
#define MSG "hello world!"
|
||||||
#define MSG_LIMIT 100
|
|
||||||
|
static int count = 100;
|
||||||
|
module_param(count, int, 0644);
|
||||||
|
|
||||||
struct instance_data {
|
struct instance_data {
|
||||||
int rx_count;
|
int rx_count;
|
||||||
|
@ -29,11 +31,11 @@ static int rpmsg_sample_cb(struct rpmsg_device *rpdev, void *data, int len,
|
||||||
dev_info(&rpdev->dev, "incoming msg %d (src: 0x%x)\n",
|
dev_info(&rpdev->dev, "incoming msg %d (src: 0x%x)\n",
|
||||||
++idata->rx_count, src);
|
++idata->rx_count, src);
|
||||||
|
|
||||||
print_hex_dump(KERN_DEBUG, __func__, DUMP_PREFIX_NONE, 16, 1,
|
print_hex_dump_debug(__func__, DUMP_PREFIX_NONE, 16, 1, data, len,
|
||||||
data, len, true);
|
true);
|
||||||
|
|
||||||
/* samples should not live forever */
|
/* samples should not live forever */
|
||||||
if (idata->rx_count >= MSG_LIMIT) {
|
if (idata->rx_count >= count) {
|
||||||
dev_info(&rpdev->dev, "goodbye!\n");
|
dev_info(&rpdev->dev, "goodbye!\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче