| @@ -26,7 +26,7 @@ · 25 unmodified lines |
| 26 | * @rpdev: rpmsg device | 26 | * @rpdev: rpmsg device |
| 27 | * @chinfo: channel_info to bind | 27 | * @chinfo: channel_info to bind |
| 28 | * | 28 | * |
| 29 | * Returns a pointer to the new rpmsg device on success, or NULL on error. | 29 | * Return: a pointer to the new rpmsg device on success, or NULL on error. |
| 30 | */ | 30 | */ |
| 31 | struct rpmsg_device *rpmsg_create_channel(struct rpmsg_device *rpdev, | 31 | struct rpmsg_device *rpmsg_create_channel(struct rpmsg_device *rpdev, |
| 32 | struct rpmsg_channel_info *chinfo) | 32 | struct rpmsg_channel_info *chinfo) |
| @@ -48,7 +48,7 @@ EXPORT_SYMBOL(rpmsg_create_channel); · 15 unmodified lines |
| 48 | * @rpdev: rpmsg device | 48 | * @rpdev: rpmsg device |
| 49 | * @chinfo: channel_info to bind | 49 | * @chinfo: channel_info to bind |
| 50 | * | 50 | * |
| 51 | * Returns 0 on success or an appropriate error value. | 51 | * Return: 0 on success or an appropriate error value. |
| 52 | */ | 52 | */ |
| 53 | int rpmsg_release_channel(struct rpmsg_device *rpdev, | 53 | int rpmsg_release_channel(struct rpmsg_device *rpdev, |
| 54 | struct rpmsg_channel_info *chinfo) | 54 | struct rpmsg_channel_info *chinfo) |
| @@ -102,7 +102,7 @@ EXPORT_SYMBOL(rpmsg_release_channel); · 47 unmodified lines |
| 102 | * dynamically assign them an available rpmsg address (drivers should have | 102 | * dynamically assign them an available rpmsg address (drivers should have |
| 103 | * a very good reason why not to always use RPMSG_ADDR_ANY here). | 103 | * a very good reason why not to always use RPMSG_ADDR_ANY here). |
| 104 | * | 104 | * |
| 105 | * Returns a pointer to the endpoint on success, or NULL on error. | 105 | * Return: a pointer to the endpoint on success, or NULL on error. |
| 106 | */ | 106 | */ |
| 107 | struct rpmsg_endpoint *rpmsg_create_ept(struct rpmsg_device *rpdev, | 107 | struct rpmsg_endpoint *rpmsg_create_ept(struct rpmsg_device *rpdev, |
| 108 | rpmsg_rx_cb_t cb, void *priv, | 108 | rpmsg_rx_cb_t cb, void *priv, |
| @@ -146,7 +146,7 @@ EXPORT_SYMBOL(rpmsg_destroy_ept); · 37 unmodified lines |
| 146 | * | 146 | * |
| 147 | * Can only be called from process context (for now). | 147 | * Can only be called from process context (for now). |
| 148 | * | 148 | * |
| 149 | * Returns 0 on success and an appropriate error value on failure. | 149 | * Return: 0 on success and an appropriate error value on failure. |
| 150 | */ | 150 | */ |
| 151 | int rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len) | 151 | int rpmsg_send(struct rpmsg_endpoint *ept, void *data, int len) |
| 152 | { | 152 | { |
| @@ -175,7 +175,7 @@ EXPORT_SYMBOL(rpmsg_send); · 22 unmodified lines |
| 175 | * | 175 | * |
| 176 | * Can only be called from process context (for now). | 176 | * Can only be called from process context (for now). |
| 177 | * | 177 | * |
| 178 | * Returns 0 on success and an appropriate error value on failure. | 178 | * Return: 0 on success and an appropriate error value on failure. |
| 179 | */ | 179 | */ |
| 180 | int rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst) | 180 | int rpmsg_sendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst) |
| 181 | { | 181 | { |
| @@ -206,7 +206,7 @@ EXPORT_SYMBOL(rpmsg_sendto); · 24 unmodified lines |
| 206 | * | 206 | * |
| 207 | * Can only be called from process context (for now). | 207 | * Can only be called from process context (for now). |
| 208 | * | 208 | * |
| 209 | * Returns 0 on success and an appropriate error value on failure. | 209 | * Return: 0 on success and an appropriate error value on failure. |
| 210 | */ | 210 | */ |
| 211 | int rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst, | 211 | int rpmsg_send_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst, |
| 212 | void *data, int len) | 212 | void *data, int len) |
| @@ -235,7 +235,7 @@ EXPORT_SYMBOL(rpmsg_send_offchannel); · 22 unmodified lines |
| 235 | * | 235 | * |
| 236 | * Can only be called from process context (for now). | 236 | * Can only be called from process context (for now). |
| 237 | * | 237 | * |
| 238 | * Returns 0 on success and an appropriate error value on failure. | 238 | * Return: 0 on success and an appropriate error value on failure. |
| 239 | */ | 239 | */ |
| 240 | int rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len) | 240 | int rpmsg_trysend(struct rpmsg_endpoint *ept, void *data, int len) |
| 241 | { | 241 | { |
| @@ -263,7 +263,7 @@ EXPORT_SYMBOL(rpmsg_trysend); · 21 unmodified lines |
| 263 | * | 263 | * |
| 264 | * Can only be called from process context (for now). | 264 | * Can only be called from process context (for now). |
| 265 | * | 265 | * |
| 266 | * Returns 0 on success and an appropriate error value on failure. | 266 | * Return: 0 on success and an appropriate error value on failure. |
| 267 | */ | 267 | */ |
| 268 | int rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst) | 268 | int rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst) |
| 269 | { | 269 | { |
| @@ -282,7 +282,7 @@ EXPORT_SYMBOL(rpmsg_trysendto); · 12 unmodified lines |
| 282 | * @filp: file for poll_wait() | 282 | * @filp: file for poll_wait() |
| 283 | * @wait: poll_table for poll_wait() | 283 | * @wait: poll_table for poll_wait() |
| 284 | * | 284 | * |
| 285 | * Returns mask representing the current state of the endpoint's send buffers | 285 | * Return: mask representing the current state of the endpoint's send buffers |
| 286 | */ | 286 | */ |
| 287 | __poll_t rpmsg_poll(struct rpmsg_endpoint *ept, struct file *filp, | 287 | __poll_t rpmsg_poll(struct rpmsg_endpoint *ept, struct file *filp, |
| 288 | poll_table *wait) | 288 | poll_table *wait) |
| @@ -313,7 +313,7 @@ EXPORT_SYMBOL(rpmsg_poll); · 24 unmodified lines |
| 313 | * | 313 | * |
| 314 | * Can only be called from process context (for now). | 314 | * Can only be called from process context (for now). |
| 315 | * | 315 | * |
| 316 | * Returns 0 on success and an appropriate error value on failure. | 316 | * Return: 0 on success and an appropriate error value on failure. |
| 317 | */ | 317 | */ |
| 318 | int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst, | 318 | int rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src, u32 dst, |
| 319 | void *data, int len) | 319 | void *data, int len) |
| @@ -540,13 +540,25 @@ static int rpmsg_dev_probe(struct device *dev) · 220 unmodified lines |
| 540 | err = rpdrv->probe(rpdev); | 540 | err = rpdrv->probe(rpdev); |
| 541 | if (err) { | 541 | if (err) { |
| 542 | dev_err(dev, "%s: failed: %d\n", __func__, err); | 542 | dev_err(dev, "%s: failed: %d\n", __func__, err); |
| 543 | if (ept) | 543 | goto destroy_ept; |
| 544 | rpmsg_destroy_ept(ept); | | |
| 545 | goto out; | | |
| 546 | } | 544 | } |
| 547 | | 545 | |
| 548 | if (ept && rpdev->ops->announce_create) | 546 | if (ept && rpdev->ops->announce_create) { |
| 549 | err = rpdev->ops->announce_create(rpdev); | 547 | err = rpdev->ops->announce_create(rpdev); |
| | 548 | if (err) { |
| | 549 | dev_err(dev, "failed to announce creation\n"); |
| | 550 | goto remove_rpdev; |
| | 551 | } |
| | 552 | } |
| | 553 | |
| | 554 | return 0; |
| | 555 | |
| | 556 | remove_rpdev: |
| | 557 | if (rpdrv->remove) |
| | 558 | rpdrv->remove(rpdev); |
| | 559 | destroy_ept: |
| | 560 | if (ept) |
| | 561 | rpmsg_destroy_ept(ept); |
| 550 | out: | 562 | out: |
| 551 | return err; | 563 | return err; |
| 552 | } | 564 | } |
| @@ -623,7 +635,7 @@ EXPORT_SYMBOL(rpmsg_unregister_device); · 70 unmodified lines |
| 623 | * @rpdrv: pointer to a struct rpmsg_driver | 635 | * @rpdrv: pointer to a struct rpmsg_driver |
| 624 | * @owner: owning module/driver | 636 | * @owner: owning module/driver |
| 625 | * | 637 | * |
| 626 | * Returns 0 on success, and an appropriate error value on failure. | 638 | * Return: 0 on success, and an appropriate error value on failure. |
| 627 | */ | 639 | */ |
| 628 | int __register_rpmsg_driver(struct rpmsg_driver *rpdrv, struct module *owner) | 640 | int __register_rpmsg_driver(struct rpmsg_driver *rpdrv, struct module *owner) |
| 629 | { | 641 | { |
| @@ -637,7 +649,7 @@ EXPORT_SYMBOL(__register_rpmsg_driver); · 7 unmodified lines |
| 637 | * unregister_rpmsg_driver() - unregister an rpmsg driver from the rpmsg bus | 649 | * unregister_rpmsg_driver() - unregister an rpmsg driver from the rpmsg bus |
| 638 | * @rpdrv: pointer to a struct rpmsg_driver | 650 | * @rpdrv: pointer to a struct rpmsg_driver |
| 639 | * | 651 | * |
| 640 | * Returns 0 on success, and an appropriate error value on failure. | 652 | * Return: 0 on success, and an appropriate error value on failure. |
| 641 | */ | 653 | */ |
| 642 | void unregister_rpmsg_driver(struct rpmsg_driver *rpdrv) | 654 | void unregister_rpmsg_driver(struct rpmsg_driver *rpdrv) |
| 643 | { | 655 | { |