summaryrefslogtreecommitdiff
path: root/drivers/staging/most
diff options
context:
space:
mode:
authorChristian Gromm <christian.gromm@microchip.com>2017-11-21 15:04:46 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-11-27 09:20:34 +0100
commite6e79b449ed99925c59eff66ba836f2532fec911 (patch)
tree4f2f1ec70a40992a67bc12073f8c99bdc5a2fcc3 /drivers/staging/most
parent921c80c52b7440a0f5c5c542d40a3295d525276b (diff)
staging: most: core: encapsulate code in function
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@microchip.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/most')
-rw-r--r--drivers/staging/most/core.c39
1 files changed, 26 insertions, 13 deletions
diff --git a/drivers/staging/most/core.c b/drivers/staging/most/core.c
index ce063a1597c3..0ef90851f891 100644
--- a/drivers/staging/most/core.c
+++ b/drivers/staging/most/core.c
@@ -620,6 +620,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
@@ -648,7 +672,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;
@@ -674,19 +697,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;
}