Commit fc9d6952 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'rpmsg-v5.17' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux

Pull rpmsg updates from Bjorn Andersson:
 "This adds pr_fmt for the rpmsg_char driver, fixes error handling in
  rpmsg_dev_probe() and corrects the spelling of "Return:" in various
  places, in order to fix kerneldoc"

* tag 'rpmsg-v5.17' of git://git.kernel.org/pub/scm/linux/kernel/git/remoteproc/linux:
  rpmsg: core: Clean up resources on announce_create failure.
  rpmsg: Fix documentation return formatting
  rpmsg: char: Add pr_fmt() to prefix messages
parents 722d9484 8066c615
...@@ -427,7 +427,7 @@ static void qcom_glink_handle_intent_req_ack(struct qcom_glink *glink, ...@@ -427,7 +427,7 @@ static void qcom_glink_handle_intent_req_ack(struct qcom_glink *glink,
* Allocates a local channel id and sends a RPM_CMD_OPEN message to the remote. * Allocates a local channel id and sends a RPM_CMD_OPEN message to the remote.
* Will return with refcount held, regardless of outcome. * Will return with refcount held, regardless of outcome.
* *
* Returns 0 on success, negative errno otherwise. * Return: 0 on success, negative errno otherwise.
*/ */
static int qcom_glink_send_open_req(struct qcom_glink *glink, static int qcom_glink_send_open_req(struct qcom_glink *glink,
struct glink_channel *channel) struct glink_channel *channel)
......
...@@ -1467,7 +1467,7 @@ ATTRIBUTE_GROUPS(qcom_smd_edge); ...@@ -1467,7 +1467,7 @@ ATTRIBUTE_GROUPS(qcom_smd_edge);
* @parent: parent device for the edge * @parent: parent device for the edge
* @node: device_node describing the edge * @node: device_node describing the edge
* *
* Returns an edge reference, or negative ERR_PTR() on failure. * Return: an edge reference, or negative ERR_PTR() on failure.
*/ */
struct qcom_smd_edge *qcom_smd_register_edge(struct device *parent, struct qcom_smd_edge *qcom_smd_register_edge(struct device *parent,
struct device_node *node) struct device_node *node)
......
...@@ -9,6 +9,9 @@ ...@@ -9,6 +9,9 @@
* Based on rpmsg performance statistics driver by Michal Simek, which in turn * Based on rpmsg performance statistics driver by Michal Simek, which in turn
* was based on TI & Google OMX rpmsg driver. * was based on TI & Google OMX rpmsg driver.
*/ */
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/cdev.h> #include <linux/cdev.h>
#include <linux/device.h> #include <linux/device.h>
#include <linux/fs.h> #include <linux/fs.h>
...@@ -550,7 +553,7 @@ static int rpmsg_chrdev_init(void) ...@@ -550,7 +553,7 @@ static int rpmsg_chrdev_init(void)
ret = alloc_chrdev_region(&rpmsg_major, 0, RPMSG_DEV_MAX, "rpmsg"); ret = alloc_chrdev_region(&rpmsg_major, 0, RPMSG_DEV_MAX, "rpmsg");
if (ret < 0) { if (ret < 0) {
pr_err("rpmsg: failed to allocate char dev region\n"); pr_err("failed to allocate char dev region\n");
return ret; return ret;
} }
...@@ -563,7 +566,7 @@ static int rpmsg_chrdev_init(void) ...@@ -563,7 +566,7 @@ static int rpmsg_chrdev_init(void)
ret = register_rpmsg_driver(&rpmsg_chrdev_driver); ret = register_rpmsg_driver(&rpmsg_chrdev_driver);
if (ret < 0) { if (ret < 0) {
pr_err("rpmsgchr: failed to register rpmsg driver\n"); pr_err("failed to register rpmsg driver\n");
class_destroy(rpmsg_class); class_destroy(rpmsg_class);
unregister_chrdev_region(rpmsg_major, RPMSG_DEV_MAX); unregister_chrdev_region(rpmsg_major, RPMSG_DEV_MAX);
} }
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
* @rpdev: rpmsg device * @rpdev: rpmsg device
* @chinfo: channel_info to bind * @chinfo: channel_info to bind
* *
* Returns a pointer to the new rpmsg device on success, or NULL on error. * Return: a pointer to the new rpmsg device on success, or NULL on error.
*/ */
struct rpmsg_device *rpmsg_create_channel(struct rpmsg_device *rpdev, struct rpmsg_device *rpmsg_create_channel(struct rpmsg_device *rpdev,
struct rpmsg_channel_info *chinfo) struct rpmsg_channel_info *chinfo)
...@@ -48,7 +48,7 @@ EXPORT_SYMBOL(rpmsg_create_channel); ...@@ -48,7 +48,7 @@ EXPORT_SYMBOL(rpmsg_create_channel);
* @rpdev: rpmsg device * @rpdev: rpmsg device
* @chinfo: channel_info to bind * @chinfo: channel_info to bind
* *
* Returns 0 on success or an appropriate error value. * Return: 0 on success or an appropriate error value.
*/ */
int rpmsg_release_channel(struct rpmsg_device *rpdev, int rpmsg_release_channel(struct rpmsg_device *rpdev,
struct rpmsg_channel_info *chinfo) struct rpmsg_channel_info *chinfo)
...@@ -102,7 +102,7 @@ EXPORT_SYMBOL(rpmsg_release_channel); ...@@ -102,7 +102,7 @@ EXPORT_SYMBOL(rpmsg_release_channel);
* dynamically assign them an available rpmsg address (drivers should have * dynamically assign them an available rpmsg address (drivers should have
* a very good reason why not to always use RPMSG_ADDR_ANY here). * a very good reason why not to always use RPMSG_ADDR_ANY here).
* *
* Returns a pointer to the endpoint on success, or NULL on error. * Return: a pointer to the endpoint on success, or NULL on error.
*/ */
struct rpmsg_endpoint *rpmsg_create_ept(struct rpmsg_device *rpdev, struct rpmsg_endpoint *rpmsg_create_ept(struct rpmsg_device *rpdev,
rpmsg_rx_cb_t cb, void *priv, rpmsg_rx_cb_t cb, void *priv,
...@@ -146,7 +146,7 @@ EXPORT_SYMBOL(rpmsg_destroy_ept); ...@@ -146,7 +146,7 @@ EXPORT_SYMBOL(rpmsg_destroy_ept);
* *
* Can only be called from process context (for now). * Can only be called from process context (for now).
* *
* Returns 0 on success and an appropriate error value on failure. * Return: 0 on success and an appropriate error value on failure.
*/ */
int rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len) int rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len)
{ {
...@@ -175,7 +175,7 @@ EXPORT_SYMBOL(rpmsg_send); ...@@ -175,7 +175,7 @@ EXPORT_SYMBOL(rpmsg_send);
* *
* Can only be called from process context (for now). * Can only be called from process context (for now).
* *
* Returns 0 on success and an appropriate error value on failure. * Return: 0 on success and an appropriate error value on failure.
*/ */
int rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst) int rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst)
{ {
...@@ -206,7 +206,7 @@ EXPORT_SYMBOL(rpmsg_sendto); ...@@ -206,7 +206,7 @@ EXPORT_SYMBOL(rpmsg_sendto);
* *
* Can only be called from process context (for now). * Can only be called from process context (for now).
* *
* Returns 0 on success and an appropriate error value on failure. * Return: 0 on success and an appropriate error value on failure.
*/ */
int rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst, int rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst,
void *data, int len) void *data, int len)
...@@ -235,7 +235,7 @@ EXPORT_SYMBOL(rpmsg_send_offchannel); ...@@ -235,7 +235,7 @@ EXPORT_SYMBOL(rpmsg_send_offchannel);
* *
* Can only be called from process context (for now). * Can only be called from process context (for now).
* *
* Returns 0 on success and an appropriate error value on failure. * Return: 0 on success and an appropriate error value on failure.
*/ */
int rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len) int rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len)
{ {
...@@ -263,7 +263,7 @@ EXPORT_SYMBOL(rpmsg_trysend); ...@@ -263,7 +263,7 @@ EXPORT_SYMBOL(rpmsg_trysend);
* *
* Can only be called from process context (for now). * Can only be called from process context (for now).
* *
* Returns 0 on success and an appropriate error value on failure. * Return: 0 on success and an appropriate error value on failure.
*/ */
int rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst) int rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst)
{ {
...@@ -282,7 +282,7 @@ EXPORT_SYMBOL(rpmsg_trysendto); ...@@ -282,7 +282,7 @@ EXPORT_SYMBOL(rpmsg_trysendto);
* @filp: file for poll_wait() * @filp: file for poll_wait()
* @wait: poll_table for poll_wait() * @wait: poll_table for poll_wait()
* *
* Returns mask representing the current state of the endpoint's send buffers * Return: mask representing the current state of the endpoint's send buffers
*/ */
__poll_t rpmsg_poll(struct rpmsg_endpoint *ept, struct file *filp, __poll_t rpmsg_poll(struct rpmsg_endpoint *ept, struct file *filp,
poll_table *wait) poll_table *wait)
...@@ -313,7 +313,7 @@ EXPORT_SYMBOL(rpmsg_poll); ...@@ -313,7 +313,7 @@ EXPORT_SYMBOL(rpmsg_poll);
* *
* Can only be called from process context (for now). * Can only be called from process context (for now).
* *
* Returns 0 on success and an appropriate error value on failure. * Return: 0 on success and an appropriate error value on failure.
*/ */
int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst, int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst,
void *data, int len) void *data, int len)
...@@ -540,13 +540,25 @@ static int rpmsg_dev_probe(struct device *dev) ...@@ -540,13 +540,25 @@ static int rpmsg_dev_probe(struct device *dev)
err = rpdrv->probe(rpdev); err = rpdrv->probe(rpdev);
if (err) { if (err) {
dev_err(dev, "%s: failed: %d\n", __func__, err); dev_err(dev, "%s: failed: %d\n", __func__, err);
if (ept) goto destroy_ept;
rpmsg_destroy_ept(ept);
goto out;
} }
if (ept && rpdev->ops->announce_create) if (ept && rpdev->ops->announce_create) {
err = rpdev->ops->announce_create(rpdev); err = rpdev->ops->announce_create(rpdev);
if (err) {
dev_err(dev, "failed to announce creation\n");
goto remove_rpdev;
}
}
return 0;
remove_rpdev:
if (rpdrv->remove)
rpdrv->remove(rpdev);
destroy_ept:
if (ept)
rpmsg_destroy_ept(ept);
out: out:
return err; return err;
} }
...@@ -623,7 +635,7 @@ EXPORT_SYMBOL(rpmsg_unregister_device); ...@@ -623,7 +635,7 @@ EXPORT_SYMBOL(rpmsg_unregister_device);
* @rpdrv: pointer to a struct rpmsg_driver * @rpdrv: pointer to a struct rpmsg_driver
* @owner: owning module/driver * @owner: owning module/driver
* *
* Returns 0 on success, and an appropriate error value on failure. * Return: 0 on success, and an appropriate error value on failure.
*/ */
int __register_rpmsg_driver(struct rpmsg_driver *rpdrv, struct module *owner) int __register_rpmsg_driver(struct rpmsg_driver *rpdrv, struct module *owner)
{ {
...@@ -637,7 +649,7 @@ EXPORT_SYMBOL(__register_rpmsg_driver); ...@@ -637,7 +649,7 @@ EXPORT_SYMBOL(__register_rpmsg_driver);
* unregister_rpmsg_driver() - unregister an rpmsg driver from the rpmsg bus * unregister_rpmsg_driver() - unregister an rpmsg driver from the rpmsg bus
* @rpdrv: pointer to a struct rpmsg_driver * @rpdrv: pointer to a struct rpmsg_driver
* *
* Returns 0 on success, and an appropriate error value on failure. * Return: 0 on success, and an appropriate error value on failure.
*/ */
void unregister_rpmsg_driver(struct rpmsg_driver *rpdrv) void unregister_rpmsg_driver(struct rpmsg_driver *rpdrv)
{ {
......
...@@ -547,7 +547,7 @@ static void rpmsg_downref_sleepers(struct virtproc_info *vrp) ...@@ -547,7 +547,7 @@ static void rpmsg_downref_sleepers(struct virtproc_info *vrp)
* should use the appropriate rpmsg_{try}send{to, _offchannel} API * should use the appropriate rpmsg_{try}send{to, _offchannel} API
* (see include/linux/rpmsg.h). * (see include/linux/rpmsg.h).
* *
* Returns 0 on success and an appropriate error value on failure. * Return: 0 on success and an appropriate error value on failure.
*/ */
static int rpmsg_send_offchannel_raw(struct rpmsg_device *rpdev, static int rpmsg_send_offchannel_raw(struct rpmsg_device *rpdev,
u32 src, u32 dst, u32 src, u32 dst,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment