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>
This commit is contained in:
Christian Gromm 2017-11-21 15:04:46 +01:00 committed by Greg Kroah-Hartman
parent 921c80c52b
commit e6e79b449e

View file

@ -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;
}