forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-10-09 244b2c5ca8b14627e4a17755e5922221e121c771
kernel/drivers/iio/adc/hi8435.c
....@@ -1,13 +1,9 @@
1
+// SPDX-License-Identifier: GPL-2.0-or-later
12 /*
23 * Holt Integrated Circuits HI-8435 threshold detector driver
34 *
45 * Copyright (C) 2015 Zodiac Inflight Innovations
56 * Copyright (C) 2015 Cogent Embedded, Inc.
6
- *
7
- * This program is free software; you can redistribute it and/or modify it
8
- * under the terms of the GNU General Public License as published by the
9
- * Free Software Foundation; either version 2 of the License, or (at your
10
- * option) any later version.
117 */
128
139 #include <linux/delay.h>
....@@ -19,9 +15,7 @@
1915 #include <linux/iio/triggered_event.h>
2016 #include <linux/interrupt.h>
2117 #include <linux/module.h>
22
-#include <linux/of.h>
23
-#include <linux/of_device.h>
24
-#include <linux/of_gpio.h>
18
+#include <linux/mod_devicetable.h>
2519 #include <linux/spi/spi.h>
2620 #include <linux/gpio/consumer.h>
2721
....@@ -460,6 +454,11 @@
460454 return IRQ_HANDLED;
461455 }
462456
457
+static void hi8435_triggered_event_cleanup(void *data)
458
+{
459
+ iio_triggered_event_cleanup(data);
460
+}
461
+
463462 static int hi8435_probe(struct spi_device *spi)
464463 {
465464 struct iio_dev *idev;
....@@ -481,14 +480,12 @@
481480 hi8435_writeb(priv, HI8435_CTRL_REG, 0);
482481 } else {
483482 udelay(5);
484
- gpiod_set_value(reset_gpio, 1);
483
+ gpiod_set_value_cansleep(reset_gpio, 1);
485484 }
486485
487486 spi_set_drvdata(spi, idev);
488487 mutex_init(&priv->lock);
489488
490
- idev->dev.parent = &spi->dev;
491
- idev->dev.of_node = spi->dev.of_node;
492489 idev->name = spi_get_device_id(spi)->name;
493490 idev->modes = INDIO_DIRECT_MODE;
494491 idev->info = &hi8435_info;
....@@ -517,27 +514,13 @@
517514 if (ret)
518515 return ret;
519516
520
- ret = iio_device_register(idev);
521
- if (ret < 0) {
522
- dev_err(&spi->dev, "unable to register device\n");
523
- goto unregister_triggered_event;
524
- }
517
+ ret = devm_add_action_or_reset(&spi->dev,
518
+ hi8435_triggered_event_cleanup,
519
+ idev);
520
+ if (ret)
521
+ return ret;
525522
526
- return 0;
527
-
528
-unregister_triggered_event:
529
- iio_triggered_event_cleanup(idev);
530
- return ret;
531
-}
532
-
533
-static int hi8435_remove(struct spi_device *spi)
534
-{
535
- struct iio_dev *idev = spi_get_drvdata(spi);
536
-
537
- iio_device_unregister(idev);
538
- iio_triggered_event_cleanup(idev);
539
-
540
- return 0;
523
+ return devm_iio_device_register(&spi->dev, idev);
541524 }
542525
543526 static const struct of_device_id hi8435_dt_ids[] = {
....@@ -555,10 +538,9 @@
555538 static struct spi_driver hi8435_driver = {
556539 .driver = {
557540 .name = DRV_NAME,
558
- .of_match_table = of_match_ptr(hi8435_dt_ids),
541
+ .of_match_table = hi8435_dt_ids,
559542 },
560543 .probe = hi8435_probe,
561
- .remove = hi8435_remove,
562544 .id_table = hi8435_id,
563545 };
564546 module_spi_driver(hi8435_driver);