hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/iio/adc/ad7266.c
....@@ -1,9 +1,8 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * AD7266/65 SPI ADC driver
34 *
45 * Copyright 2012 Analog Devices Inc.
5
- *
6
- * Licensed under the GPL-2.
76 */
87
98 #include <linux/device.h>
....@@ -12,7 +11,7 @@
1211 #include <linux/spi/spi.h>
1312 #include <linux/regulator/consumer.h>
1413 #include <linux/err.h>
15
-#include <linux/gpio.h>
14
+#include <linux/gpio/consumer.h>
1615 #include <linux/module.h>
1716
1817 #include <linux/interrupt.h>
....@@ -35,7 +34,7 @@
3534 enum ad7266_range range;
3635 enum ad7266_mode mode;
3736 bool fixed_addr;
38
- struct gpio gpios[3];
37
+ struct gpio_desc *gpios[3];
3938
4039 /*
4140 * DMA (thus cache coherency maintenance) requires the
....@@ -75,8 +74,6 @@
7574
7675 static const struct iio_buffer_setup_ops iio_triggered_buffer_setup_ops = {
7776 .preenable = &ad7266_preenable,
78
- .postenable = &iio_triggered_buffer_postenable,
79
- .predisable = &iio_triggered_buffer_predisable,
8077 .postdisable = &ad7266_postdisable,
8178 };
8279
....@@ -118,7 +115,7 @@
118115 }
119116
120117 for (i = 0; i < 3; ++i)
121
- gpio_set_value(st->gpios[i].gpio, (bool)(nr & BIT(i)));
118
+ gpiod_set_value(st->gpios[i], (bool)(nr & BIT(i)));
122119 }
123120
124121 static int ad7266_update_scan_mode(struct iio_dev *indio_dev,
....@@ -377,7 +374,7 @@
377374 }
378375
379376 static const char * const ad7266_gpio_labels[] = {
380
- "AD0", "AD1", "AD2",
377
+ "ad0", "ad1", "ad2",
381378 };
382379
383380 static int ad7266_probe(struct spi_device *spi)
....@@ -420,14 +417,14 @@
420417
421418 if (!st->fixed_addr) {
422419 for (i = 0; i < ARRAY_SIZE(st->gpios); ++i) {
423
- st->gpios[i].gpio = pdata->addr_gpios[i];
424
- st->gpios[i].flags = GPIOF_OUT_INIT_LOW;
425
- st->gpios[i].label = ad7266_gpio_labels[i];
420
+ st->gpios[i] = devm_gpiod_get(&spi->dev,
421
+ ad7266_gpio_labels[i],
422
+ GPIOD_OUT_LOW);
423
+ if (IS_ERR(st->gpios[i])) {
424
+ ret = PTR_ERR(st->gpios[i]);
425
+ goto error_disable_reg;
426
+ }
426427 }
427
- ret = gpio_request_array(st->gpios,
428
- ARRAY_SIZE(st->gpios));
429
- if (ret)
430
- goto error_disable_reg;
431428 }
432429 } else {
433430 st->fixed_addr = true;
....@@ -438,8 +435,6 @@
438435 spi_set_drvdata(spi, indio_dev);
439436 st->spi = spi;
440437
441
- indio_dev->dev.parent = &spi->dev;
442
- indio_dev->dev.of_node = spi->dev.of_node;
443438 indio_dev->name = spi_get_device_id(spi)->name;
444439 indio_dev->modes = INDIO_DIRECT_MODE;
445440 indio_dev->info = &ad7266_info;
....@@ -466,7 +461,7 @@
466461 ret = iio_triggered_buffer_setup(indio_dev, &iio_pollfunc_store_time,
467462 &ad7266_trigger_handler, &iio_triggered_buffer_setup_ops);
468463 if (ret)
469
- goto error_free_gpios;
464
+ goto error_disable_reg;
470465
471466 ret = iio_device_register(indio_dev);
472467 if (ret)
....@@ -476,9 +471,6 @@
476471
477472 error_buffer_cleanup:
478473 iio_triggered_buffer_cleanup(indio_dev);
479
-error_free_gpios:
480
- if (!st->fixed_addr)
481
- gpio_free_array(st->gpios, ARRAY_SIZE(st->gpios));
482474 error_disable_reg:
483475 if (!IS_ERR(st->reg))
484476 regulator_disable(st->reg);
....@@ -493,8 +485,6 @@
493485
494486 iio_device_unregister(indio_dev);
495487 iio_triggered_buffer_cleanup(indio_dev);
496
- if (!st->fixed_addr)
497
- gpio_free_array(st->gpios, ARRAY_SIZE(st->gpios));
498488 if (!IS_ERR(st->reg))
499489 regulator_disable(st->reg);
500490