This patch adds the function link_channel_to_aim to increase readability of the function add_link_store. Signed-off-by: Christian Gromm <christian.gromm@xxxxxxxxxxxxx> --- drivers/staging/most/core.c | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/drivers/staging/most/core.c b/drivers/staging/most/core.c index dbd7258..662fe1c 100644 --- a/drivers/staging/most/core.c +++ b/drivers/staging/most/core.c @@ -626,6 +626,30 @@ most_c_obj *get_channel_by_name(char *mdev, char *mdev_ch) return c; } +static inline int link_channel_to_aim(struct most_c_obj *c, + struct most_aim *aim, char *aim_param) +{ + int ret; + struct most_aim **aim_ptr; + + if (!c->aim0.ptr) + aim_ptr = &c->aim0.ptr; + else if (!c->aim1.ptr) + aim_ptr = &c->aim1.ptr; + else + return -ENOSPC; + + *aim_ptr = aim; + ret = aim->probe_channel(c->iface, c->channel_id, + &c->cfg, aim_param); + if (ret) { + *aim_ptr = NULL; + return ret; + } + + return 0; +} + /** * add_link_store - store() function for add_link attribute * @aim_obj: pointer to AIM object @@ -654,7 +678,6 @@ static ssize_t add_link_store(struct device *dev, size_t len) { struct most_c_obj *c; - struct most_aim **aim_ptr; struct most_aim *aim = to_most_aim(dev); char buffer[STRING_SIZE]; char *mdev; @@ -680,19 +703,9 @@ static ssize_t add_link_store(struct device *dev, if (IS_ERR(c)) return -ENODEV; - if (!c->aim0.ptr) - aim_ptr = &c->aim0.ptr; - else if (!c->aim1.ptr) - aim_ptr = &c->aim1.ptr; - else - return -ENOSPC; - - *aim_ptr = aim; - ret = aim->probe_channel(c->iface, c->channel_id, &c->cfg, mdev_devnod); - if (ret) { - *aim_ptr = NULL; + ret = link_channel_to_aim(c, aim, mdev_devnod); + if (ret) return ret; - } return len; } -- 2.7.4 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel