This patch adds the function link_channel_to_aim to increase readability
of the function add_link_store.

Signed-off-by: Christian Gromm <christian.gr...@microchip.com>
---
 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
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to