diff options
| author | Bjorn Andersson <bjorn.andersson@linaro.org> | 2016-09-01 18:28:03 -0400 |
|---|---|---|
| committer | Bjorn Andersson <bjorn.andersson@linaro.org> | 2016-09-09 01:15:23 -0400 |
| commit | 6eed598a049193917a2e15b163abb58c5c1ef466 (patch) | |
| tree | 3ff7f2c0bd82f7a6f39d5a91e2111b641a6b031a /drivers/rpmsg | |
| parent | 8b881c07cb805e1a126d434359706e45864ea2df (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.c | 18 |
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); |
| 121 | static int virtio_rpmsg_trysend_offchannel(struct rpmsg_endpoint *ept, u32 src, | 121 | static 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); |
| 123 | static 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 | |||
| 511 | static 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 | /* |
