summaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/resolver
diff options
context:
space:
mode:
authorJonathan Cameron <jic23@cam.ac.uk>2011-10-05 15:28:06 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2011-10-05 13:47:48 -0700
commit93decf3661bf1c7c05bbc217d4e69222b557512a (patch)
treeeadf2298c48bb21c4370e031ac24cba7b4648748 /drivers/staging/iio/resolver
parentf97beb535b14b07e89744c58d40d51646dceca75 (diff)
downloadop-kernel-dev-93decf3661bf1c7c05bbc217d4e69222b557512a.zip
op-kernel-dev-93decf3661bf1c7c05bbc217d4e69222b557512a.tar.gz
staging:iio:resolver:ad2s1210 cleanup gpio handling.
Basically make use of the gpio array functions. Technically the free doesn't need as much info as given here, but this keeps it clean and easy to follow. Signed-off-by: Jonathan Cameron <jic23@cam.ac.uk> Acked-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/iio/resolver')
-rw-r--r--drivers/staging/iio/resolver/ad2s1210.c51
1 files changed, 18 insertions, 33 deletions
diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c
index 4f248de..8a6fcb6 100644
--- a/drivers/staging/iio/resolver/ad2s1210.c
+++ b/drivers/staging/iio/resolver/ad2s1210.c
@@ -653,45 +653,30 @@ static const struct iio_info ad2s1210_info = {
static int ad2s1210_setup_gpios(struct ad2s1210_state *st)
{
- int ret;
unsigned long flags = st->pdata->gpioin ? GPIOF_DIR_IN : GPIOF_DIR_OUT;
+ struct gpio ad2s1210_gpios[] = {
+ { st->pdata->sample, GPIOF_DIR_IN, "sample" },
+ { st->pdata->a[0], flags, "a0" },
+ { st->pdata->a[1], flags, "a1" },
+ { st->pdata->res[0], flags, "res0" },
+ { st->pdata->res[0], flags, "res1" },
+ };
- ret = gpio_request_one(st->pdata->sample, GPIOF_DIR_IN, "sample");
- if (ret < 0)
- goto error_ret;
- ret = gpio_request_one(st->pdata->a[0], flags, "a0");
- if (ret < 0)
- goto error_free_sample;
- ret = gpio_request_one(st->pdata->a[1], flags, "a1");
- if (ret < 0)
- goto error_free_a0;
- ret = gpio_request_one(st->pdata->res[1], flags, "res0");
- if (ret < 0)
- goto error_free_a1;
- ret = gpio_request_one(st->pdata->res[1], flags, "res1");
- if (ret < 0)
- goto error_free_res0;
-
- return 0;
-error_free_res0:
- gpio_free(st->pdata->res[0]);
-error_free_a1:
- gpio_free(st->pdata->a[1]);
-error_free_a0:
- gpio_free(st->pdata->a[0]);
-error_free_sample:
- gpio_free(st->pdata->sample);
-error_ret:
- return ret;
+ return gpio_request_array(ad2s1210_gpios, ARRAY_SIZE(ad2s1210_gpios));
}
static void ad2s1210_free_gpios(struct ad2s1210_state *st)
{
- gpio_free(st->pdata->res[1]);
- gpio_free(st->pdata->res[0]);
- gpio_free(st->pdata->a[1]);
- gpio_free(st->pdata->a[0]);
- gpio_free(st->pdata->sample);
+ unsigned long flags = st->pdata->gpioin ? GPIOF_DIR_IN : GPIOF_DIR_OUT;
+ struct gpio ad2s1210_gpios[] = {
+ { st->pdata->sample, GPIOF_DIR_IN, "sample" },
+ { st->pdata->a[0], flags, "a0" },
+ { st->pdata->a[1], flags, "a1" },
+ { st->pdata->res[0], flags, "res0" },
+ { st->pdata->res[0], flags, "res1" },
+ };
+
+ gpio_free_array(ad2s1210_gpios, ARRAY_SIZE(ad2s1210_gpios));
}
static int __devinit ad2s1210_probe(struct spi_device *spi)
OpenPOWER on IntegriCloud