Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6e79b44 authored by Christian Gromm's avatar Christian Gromm Committed by Greg Kroah-Hartman
Browse files

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: default avatarChristian Gromm <christian.gromm@microchip.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 921c80c5
Loading
Loading
Loading
Loading
+26 −13
Original line number Diff line number Diff line
@@ -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;
}