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

Commit 59c85e82 authored by Jonathan Cameron's avatar Jonathan Cameron Committed by Greg Kroah-Hartman
Browse files

staging:iio:trigger handle name attr in core, remove old alloc and register...


staging:iio:trigger handle name attr in core, remove old alloc and register any control_attrs via struct device

As the majority of triggers don't actually have any other control_attrs lets use the fact
that struct device has a groups element when we do need to have these attributes registered.
A vargs function is used to cut down on lots of building strings in every single driver
just in order to pass them into the allocate.

Also iio_allocate_trigger_named -> iio_allocate_trigger as there is no
unamed version any more, so that is now just confusing.

Blackfin tested and fixed by Michael Hennerich.

V2: Elements from Michael Hennerich's patches for the ade7758

Signed-off-by: default avatarJonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 3b8ebfb4
Loading
Loading
Loading
Loading
+2 −25
Original line number Diff line number Diff line
@@ -11,17 +11,6 @@
#include "../trigger.h"
#include "adis16201.h"

static DEVICE_ATTR(name, S_IRUGO, iio_trigger_read_name, NULL);

static struct attribute *adis16201_trigger_attrs[] = {
	&dev_attr_name.attr,
	NULL,
};

static const struct attribute_group adis16201_trigger_attr_group = {
	.attrs = adis16201_trigger_attrs,
};

/**
 * adis16201_data_rdy_trigger_set_state() set datardy interrupt state
 **/
@@ -39,19 +28,11 @@ int adis16201_probe_trigger(struct iio_dev *indio_dev)
{
	int ret;
	struct adis16201_state *st = indio_dev->dev_data;
	char *name;

	name = kasprintf(GFP_KERNEL,
			 "adis16201-dev%d",
			 indio_dev->id);
	if (name == NULL) {
		ret = -ENOMEM;
		goto error_ret;
	}
	st->trig = iio_allocate_trigger_named(name);
	st->trig = iio_allocate_trigger("adis16201-dev%d", indio_dev->id);
	if (st->trig == NULL) {
		ret = -ENOMEM;
		goto error_free_name;
		goto error_ret;
	}
	ret = request_irq(st->us->irq,
			  &iio_trigger_generic_data_rdy_poll,
@@ -64,7 +45,6 @@ int adis16201_probe_trigger(struct iio_dev *indio_dev)
	st->trig->owner = THIS_MODULE;
	st->trig->private_data = st;
	st->trig->set_trigger_state = &adis16201_data_rdy_trigger_set_state;
	st->trig->control_attrs = &adis16201_trigger_attr_group;
	ret = iio_trigger_register(st->trig);

	/* select default trigger */
@@ -78,8 +58,6 @@ int adis16201_probe_trigger(struct iio_dev *indio_dev)
	free_irq(st->us->irq, st->trig);
error_free_trig:
	iio_free_trigger(st->trig);
error_free_name:
	kfree(name);
error_ret:
	return ret;
}
@@ -89,7 +67,6 @@ void adis16201_remove_trigger(struct iio_dev *indio_dev)
	struct adis16201_state *state = indio_dev->dev_data;

	iio_trigger_unregister(state->trig);
	kfree(state->trig->name);
	free_irq(state->us->irq, state->trig);
	iio_free_trigger(state->trig);
}
+2 −26
Original line number Diff line number Diff line
@@ -12,17 +12,6 @@
#include "../trigger.h"
#include "adis16203.h"

static DEVICE_ATTR(name, S_IRUGO, iio_trigger_read_name, NULL);

static struct attribute *adis16203_trigger_attrs[] = {
	&dev_attr_name.attr,
	NULL,
};

static const struct attribute_group adis16203_trigger_attr_group = {
	.attrs = adis16203_trigger_attrs,
};

/**
 * adis16203_data_rdy_trigger_set_state() set datardy interrupt state
 **/
@@ -40,20 +29,11 @@ int adis16203_probe_trigger(struct iio_dev *indio_dev)
{
	int ret;
	struct adis16203_state *st = indio_dev->dev_data;
	char *name;

	name = kasprintf(GFP_KERNEL,
			 "adis16203-dev%d",
			 indio_dev->id);
	if (name == NULL) {
		ret = -ENOMEM;
		goto error_ret;
	}

	st->trig = iio_allocate_trigger_named(name);
	st->trig = iio_allocate_trigger("adis16203-dev%d", indio_dev->id);
	if (st->trig == NULL) {
		ret = -ENOMEM;
		goto error_free_name;
		goto error_ret;
	}

	ret = request_irq(st->us->irq,
@@ -68,7 +48,6 @@ int adis16203_probe_trigger(struct iio_dev *indio_dev)
	st->trig->owner = THIS_MODULE;
	st->trig->private_data = st;
	st->trig->set_trigger_state = &adis16203_data_rdy_trigger_set_state;
	st->trig->control_attrs = &adis16203_trigger_attr_group;
	ret = iio_trigger_register(st->trig);

	/* select default trigger */
@@ -82,8 +61,6 @@ int adis16203_probe_trigger(struct iio_dev *indio_dev)
	free_irq(st->us->irq, st->trig);
error_free_trig:
	iio_free_trigger(st->trig);
error_free_name:
	kfree(name);
error_ret:
	return ret;
}
@@ -93,7 +70,6 @@ void adis16203_remove_trigger(struct iio_dev *indio_dev)
	struct adis16203_state *state = indio_dev->dev_data;

	iio_trigger_unregister(state->trig);
	kfree(state->trig->name);
	free_irq(state->us->irq, state->trig);
	iio_free_trigger(state->trig);
}
+2 −26
Original line number Diff line number Diff line
@@ -12,17 +12,6 @@
#include "../trigger.h"
#include "adis16204.h"

static DEVICE_ATTR(name, S_IRUGO, iio_trigger_read_name, NULL);

static struct attribute *adis16204_trigger_attrs[] = {
	&dev_attr_name.attr,
	NULL,
};

static const struct attribute_group adis16204_trigger_attr_group = {
	.attrs = adis16204_trigger_attrs,
};

/**
 * adis16204_data_rdy_trigger_set_state() set datardy interrupt state
 **/
@@ -40,20 +29,11 @@ int adis16204_probe_trigger(struct iio_dev *indio_dev)
{
	int ret;
	struct adis16204_state *st = indio_dev->dev_data;
	char *name;

	name = kasprintf(GFP_KERNEL,
			 "adis16204-dev%d",
			 indio_dev->id);
	if (name == NULL) {
		ret = -ENOMEM;
		goto error_ret;
	}

	st->trig = iio_allocate_trigger_named(name);
	st->trig = iio_allocate_trigger("adis16204-dev%d", indio_dev->id);
	if (st->trig == NULL) {
		ret = -ENOMEM;
		goto error_free_name;
		goto error_ret;
	}

	ret = request_irq(st->us->irq,
@@ -68,7 +48,6 @@ int adis16204_probe_trigger(struct iio_dev *indio_dev)
	st->trig->owner = THIS_MODULE;
	st->trig->private_data = st;
	st->trig->set_trigger_state = &adis16204_data_rdy_trigger_set_state;
	st->trig->control_attrs = &adis16204_trigger_attr_group;
	ret = iio_trigger_register(st->trig);

	/* select default trigger */
@@ -82,8 +61,6 @@ int adis16204_probe_trigger(struct iio_dev *indio_dev)
	free_irq(st->us->irq, st->trig);
error_free_trig:
	iio_free_trigger(st->trig);
error_free_name:
	kfree(name);
error_ret:
	return ret;
}
@@ -93,7 +70,6 @@ void adis16204_remove_trigger(struct iio_dev *indio_dev)
	struct adis16204_state *state = indio_dev->dev_data;

	iio_trigger_unregister(state->trig);
	kfree(state->trig->name);
	free_irq(state->us->irq, state->trig);
	iio_free_trigger(state->trig);
}
+2 −26
Original line number Diff line number Diff line
@@ -21,17 +21,6 @@ static irqreturn_t adis16209_data_rdy_trig_poll(int irq, void *trig)
	return IRQ_HANDLED;
}

static IIO_TRIGGER_NAME_ATTR;

static struct attribute *adis16209_trigger_attrs[] = {
	&dev_attr_name.attr,
	NULL,
};

static const struct attribute_group adis16209_trigger_attr_group = {
	.attrs = adis16209_trigger_attrs,
};

/**
 * adis16209_data_rdy_trigger_set_state() set datardy interrupt state
 **/
@@ -49,20 +38,11 @@ int adis16209_probe_trigger(struct iio_dev *indio_dev)
{
	int ret;
	struct adis16209_state *st = indio_dev->dev_data;
	char *name;

	name = kasprintf(GFP_KERNEL,
			 "adis16209-dev%d",
			 indio_dev->id);
	if (name == NULL) {
		ret = -ENOMEM;
		goto error_ret;
	}

	st->trig = iio_allocate_trigger_named(name);
	st->trig = iio_allocate_trigger("adis16209-dev%d", indio_dev->id);
	if (st->trig == NULL) {
		ret = -ENOMEM;
		goto error_free_name;
		goto error_ret;
	}

	ret = request_irq(st->us->irq,
@@ -76,7 +56,6 @@ int adis16209_probe_trigger(struct iio_dev *indio_dev)
	st->trig->owner = THIS_MODULE;
	st->trig->private_data = st;
	st->trig->set_trigger_state = &adis16209_data_rdy_trigger_set_state;
	st->trig->control_attrs = &adis16209_trigger_attr_group;
	ret = iio_trigger_register(st->trig);

	/* select default trigger */
@@ -90,8 +69,6 @@ int adis16209_probe_trigger(struct iio_dev *indio_dev)
	free_irq(st->us->irq, st->trig);
error_free_trig:
	iio_free_trigger(st->trig);
error_free_name:
	kfree(name);
error_ret:
	return ret;
}
@@ -101,7 +78,6 @@ void adis16209_remove_trigger(struct iio_dev *indio_dev)
	struct adis16209_state *state = indio_dev->dev_data;

	iio_trigger_unregister(state->trig);
	kfree(state->trig->name);
	free_irq(state->us->irq, state->trig);
	iio_free_trigger(state->trig);
}
+2 −23
Original line number Diff line number Diff line
@@ -21,17 +21,6 @@ static irqreturn_t adis16240_data_rdy_trig_poll(int irq, void *trig)
	return IRQ_HANDLED;
}

static IIO_TRIGGER_NAME_ATTR;

static struct attribute *adis16240_trigger_attrs[] = {
	&dev_attr_name.attr,
	NULL,
};

static const struct attribute_group adis16240_trigger_attr_group = {
	.attrs = adis16240_trigger_attrs,
};

/**
 * adis16240_data_rdy_trigger_set_state() set datardy interrupt state
 **/
@@ -49,17 +38,11 @@ int adis16240_probe_trigger(struct iio_dev *indio_dev)
{
	int ret;
	struct adis16240_state *st = indio_dev->dev_data;
	char *name;

	name = kasprintf(GFP_KERNEL, "adis16240-dev%d", indio_dev->id);
	if (name == NULL) {
		ret = -ENOMEM;
		goto error_ret;
	}
	st->trig = iio_allocate_trigger_named(name);
	st->trig = iio_allocate_trigger("adis16240-dev%d", indio_dev->id);
	if (st->trig == NULL) {
		ret = -ENOMEM;
		goto error_free_name;
		goto error_ret;
	}

	ret = request_irq(st->us->irq,
@@ -74,7 +57,6 @@ int adis16240_probe_trigger(struct iio_dev *indio_dev)
	st->trig->owner = THIS_MODULE;
	st->trig->private_data = st;
	st->trig->set_trigger_state = &adis16240_data_rdy_trigger_set_state;
	st->trig->control_attrs = &adis16240_trigger_attr_group;
	ret = iio_trigger_register(st->trig);

	/* select default trigger */
@@ -88,8 +70,6 @@ int adis16240_probe_trigger(struct iio_dev *indio_dev)
	free_irq(st->us->irq, st->trig);
error_free_trig:
	iio_free_trigger(st->trig);
error_free_name:
	kfree(name);
error_ret:
	return ret;
}
@@ -99,7 +79,6 @@ void adis16240_remove_trigger(struct iio_dev *indio_dev)
	struct adis16240_state *state = indio_dev->dev_data;

	iio_trigger_unregister(state->trig);
	kfree(state->trig->name);
	free_irq(state->us->irq, state->trig);
	iio_free_trigger(state->trig);
}
Loading