aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/rpmsg
diff options
context:
space:
mode:
authorBjorn Andersson <bjorn.andersson@linaro.org>2016-09-01 18:28:03 -0400
committerBjorn Andersson <bjorn.andersson@linaro.org>2016-09-09 01:15:23 -0400
commit6eed598a049193917a2e15b163abb58c5c1ef466 (patch)
tree3ff7f2c0bd82f7a6f39d5a91e2111b641a6b031a /drivers/rpmsg
parent8b881c07cb805e1a126d434359706e45864ea2df (diff)
rpmsg: Split off generic tail of create_channel()
The tail of create_channel() is common among all rpmsg backends, so split it off from the virtio specific part to allow it to be extracted to the rpmsg core. Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Diffstat (limited to 'drivers/rpmsg')
-rw-r--r--drivers/rpmsg/virtio_rpmsg_bus.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/drivers/rpmsg/virtio_rpmsg_bus.c b/drivers/rpmsg/virtio_rpmsg_bus.c
index 488fd93a290c..e1052622c6a2 100644
--- a/drivers/rpmsg/virtio_rpmsg_bus.c
+++ b/drivers/rpmsg/virtio_rpmsg_bus.c
@@ -120,6 +120,7 @@ static int virtio_rpmsg_trysendto(struct rpmsg_endpoint *ept, void *data,
120 int len, u32 dst); 120 int len, u32 dst);
121static int virtio_rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src, 121static int virtio_rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src,
122 u32 dst, void *data, int len); 122 u32 dst, void *data, int len);
123static int rpmsg_register_device(struct rpmsg_device *rpdev);
123 124
124/* sysfs show configuration fields */ 125/* sysfs show configuration fields */
125#define rpmsg_show_attr(field, path, format_string) \ 126#define rpmsg_show_attr(field, path, format_string) \
@@ -499,10 +500,22 @@ static struct rpmsg_device *rpmsg_create_channel(struct virtproc_info *vrp,
499 500
500 strncpy(rpdev->id.name, chinfo->name, RPMSG_NAME_SIZE); 501 strncpy(rpdev->id.name, chinfo->name, RPMSG_NAME_SIZE);
501 502
503 rpdev->dev.parent = &vrp->vdev->dev;
504 ret = rpmsg_register_device(rpdev);
505 if (ret)
506 return NULL;
507
508 return rpdev;
509}
510
511static int rpmsg_register_device(struct rpmsg_device *rpdev)
512{
513 struct device *dev = &rpdev->dev;
514 int ret;
515
502 dev_set_name(&rpdev->dev, "%s:%s", 516 dev_set_name(&rpdev->dev, "%s:%s",
503 dev_name(dev->parent), rpdev->id.name); 517 dev_name(dev->parent), rpdev->id.name);
504 518
505 rpdev->dev.parent = &vrp->vdev->dev;
506 rpdev->dev.bus = &rpmsg_bus; 519 rpdev->dev.bus = &rpmsg_bus;
507 rpdev->dev.release = rpmsg_release_device; 520 rpdev->dev.release = rpmsg_release_device;
508 521
@@ -510,10 +523,9 @@ static struct rpmsg_device *rpmsg_create_channel(struct virtproc_info *vrp,
510 if (ret) { 523 if (ret) {
511 dev_err(dev, "device_register failed: %d\n", ret); 524 dev_err(dev, "device_register failed: %d\n", ret);
512 put_device(&rpdev->dev); 525 put_device(&rpdev->dev);
513 return NULL;
514 } 526 }
515 527
516 return rpdev; 528 return ret;
517} 529}
518 530
519/* 531/*