forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/drivers/staging/iio/addac/adt7316.c
....@@ -1,14 +1,13 @@
1
+// SPDX-License-Identifier: GPL-2.0+
12 /*
23 * ADT7316 digital temperature sensor driver supporting ADT7316/7/8 ADT7516/7/9
34 *
4
- *
55 * Copyright 2010 Analog Devices Inc.
6
- *
7
- * Licensed under the GPL-2 or later.
86 */
97
108 #include <linux/interrupt.h>
11
-#include <linux/gpio.h>
9
+#include <linux/gpio/consumer.h>
10
+#include <linux/irq.h>
1211 #include <linux/workqueue.h>
1312 #include <linux/device.h>
1413 #include <linux/kernel.h>
....@@ -61,8 +60,8 @@
6160 #define ADT7316_CONFIG1 0x18
6261 #define ADT7316_CONFIG2 0x19
6362 #define ADT7316_CONFIG3 0x1A
64
-#define ADT7316_LDAC_CONFIG 0x1B
65
-#define ADT7316_DAC_CONFIG 0x1C
63
+#define ADT7316_DAC_CONFIG 0x1B
64
+#define ADT7316_LDAC_CONFIG 0x1C
6665 #define ADT7316_INT_MASK1 0x1D
6766 #define ADT7316_INT_MASK2 0x1E
6867 #define ADT7316_IN_TEMP_OFFSET 0x1F
....@@ -119,7 +118,7 @@
119118 */
120119 #define ADT7316_ADCLK_22_5 0x1
121120 #define ADT7316_DA_HIGH_RESOLUTION 0x2
122
-#define ADT7316_DA_EN_VIA_DAC_LDCA 0x4
121
+#define ADT7316_DA_EN_VIA_DAC_LDAC 0x8
123122 #define ADT7516_AIN_IN_VREF 0x10
124123 #define ADT7316_EN_IN_TEMP_PROP_DACA 0x20
125124 #define ADT7316_EN_EX_TEMP_PROP_DACB 0x40
....@@ -129,6 +128,7 @@
129128 */
130129 #define ADT7316_DA_2VREF_CH_MASK 0xF
131130 #define ADT7316_DA_EN_MODE_MASK 0x30
131
+#define ADT7316_DA_EN_MODE_SHIFT 4
132132 #define ADT7316_DA_EN_MODE_SINGLE 0x00
133133 #define ADT7316_DA_EN_MODE_AB_CD 0x10
134134 #define ADT7316_DA_EN_MODE_ABCD 0x20
....@@ -179,7 +179,7 @@
179179
180180 struct adt7316_chip_info {
181181 struct adt7316_bus bus;
182
- u16 ldac_pin;
182
+ struct gpio_desc *ldac_pin;
183183 u16 int_mask; /* 0x2f */
184184 u8 config1;
185185 u8 config2;
....@@ -219,8 +219,8 @@
219219 };
220220
221221 static ssize_t adt7316_show_enabled(struct device *dev,
222
- struct device_attribute *attr,
223
- char *buf)
222
+ struct device_attribute *attr,
223
+ char *buf)
224224 {
225225 struct iio_dev *dev_info = dev_to_iio_dev(dev);
226226 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -229,7 +229,7 @@
229229 }
230230
231231 static ssize_t _adt7316_store_enabled(struct adt7316_chip_info *chip,
232
- int enable)
232
+ int enable)
233233 {
234234 u8 config1;
235235 int ret;
....@@ -249,9 +249,9 @@
249249 }
250250
251251 static ssize_t adt7316_store_enabled(struct device *dev,
252
- struct device_attribute *attr,
253
- const char *buf,
254
- size_t len)
252
+ struct device_attribute *attr,
253
+ const char *buf,
254
+ size_t len)
255255 {
256256 struct iio_dev *dev_info = dev_to_iio_dev(dev);
257257 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -274,8 +274,8 @@
274274 0);
275275
276276 static ssize_t adt7316_show_select_ex_temp(struct device *dev,
277
- struct device_attribute *attr,
278
- char *buf)
277
+ struct device_attribute *attr,
278
+ char *buf)
279279 {
280280 struct iio_dev *dev_info = dev_to_iio_dev(dev);
281281 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -287,9 +287,9 @@
287287 }
288288
289289 static ssize_t adt7316_store_select_ex_temp(struct device *dev,
290
- struct device_attribute *attr,
291
- const char *buf,
292
- size_t len)
290
+ struct device_attribute *attr,
291
+ const char *buf,
292
+ size_t len)
293293 {
294294 struct iio_dev *dev_info = dev_to_iio_dev(dev);
295295 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -318,8 +318,8 @@
318318 0);
319319
320320 static ssize_t adt7316_show_mode(struct device *dev,
321
- struct device_attribute *attr,
322
- char *buf)
321
+ struct device_attribute *attr,
322
+ char *buf)
323323 {
324324 struct iio_dev *dev_info = dev_to_iio_dev(dev);
325325 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -331,9 +331,9 @@
331331 }
332332
333333 static ssize_t adt7316_store_mode(struct device *dev,
334
- struct device_attribute *attr,
335
- const char *buf,
336
- size_t len)
334
+ struct device_attribute *attr,
335
+ const char *buf,
336
+ size_t len)
337337 {
338338 struct iio_dev *dev_info = dev_to_iio_dev(dev);
339339 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -359,8 +359,8 @@
359359 0);
360360
361361 static ssize_t adt7316_show_all_modes(struct device *dev,
362
- struct device_attribute *attr,
363
- char *buf)
362
+ struct device_attribute *attr,
363
+ char *buf)
364364 {
365365 return sprintf(buf, "single_channel\nround_robin\n");
366366 }
....@@ -368,8 +368,8 @@
368368 static IIO_DEVICE_ATTR(all_modes, 0444, adt7316_show_all_modes, NULL, 0);
369369
370370 static ssize_t adt7316_show_ad_channel(struct device *dev,
371
- struct device_attribute *attr,
372
- char *buf)
371
+ struct device_attribute *attr,
372
+ char *buf)
373373 {
374374 struct iio_dev *dev_info = dev_to_iio_dev(dev);
375375 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -384,7 +384,7 @@
384384 return sprintf(buf, "1 - Internal Temperature\n");
385385 case ADT7316_AD_SINGLE_CH_EX:
386386 if (((chip->id & ID_FAMILY_MASK) == ID_ADT75XX) &&
387
- (chip->config1 & ADT7516_SEL_AIN1_2_EX_TEMP_MASK) == 0)
387
+ (chip->config1 & ADT7516_SEL_AIN1_2_EX_TEMP_MASK) == 0)
388388 return sprintf(buf, "2 - AIN1\n");
389389
390390 return sprintf(buf, "2 - External Temperature\n");
....@@ -406,9 +406,9 @@
406406 }
407407
408408 static ssize_t adt7316_store_ad_channel(struct device *dev,
409
- struct device_attribute *attr,
410
- const char *buf,
411
- size_t len)
409
+ struct device_attribute *attr,
410
+ const char *buf,
411
+ size_t len)
412412 {
413413 struct iio_dev *dev_info = dev_to_iio_dev(dev);
414414 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -452,8 +452,8 @@
452452 0);
453453
454454 static ssize_t adt7316_show_all_ad_channels(struct device *dev,
455
- struct device_attribute *attr,
456
- char *buf)
455
+ struct device_attribute *attr,
456
+ char *buf)
457457 {
458458 struct iio_dev *dev_info = dev_to_iio_dev(dev);
459459 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -473,8 +473,8 @@
473473 adt7316_show_all_ad_channels, NULL, 0);
474474
475475 static ssize_t adt7316_show_disable_averaging(struct device *dev,
476
- struct device_attribute *attr,
477
- char *buf)
476
+ struct device_attribute *attr,
477
+ char *buf)
478478 {
479479 struct iio_dev *dev_info = dev_to_iio_dev(dev);
480480 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -484,9 +484,9 @@
484484 }
485485
486486 static ssize_t adt7316_store_disable_averaging(struct device *dev,
487
- struct device_attribute *attr,
488
- const char *buf,
489
- size_t len)
487
+ struct device_attribute *attr,
488
+ const char *buf,
489
+ size_t len)
490490 {
491491 struct iio_dev *dev_info = dev_to_iio_dev(dev);
492492 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -512,8 +512,8 @@
512512 0);
513513
514514 static ssize_t adt7316_show_enable_smbus_timeout(struct device *dev,
515
- struct device_attribute *attr,
516
- char *buf)
515
+ struct device_attribute *attr,
516
+ char *buf)
517517 {
518518 struct iio_dev *dev_info = dev_to_iio_dev(dev);
519519 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -523,9 +523,9 @@
523523 }
524524
525525 static ssize_t adt7316_store_enable_smbus_timeout(struct device *dev,
526
- struct device_attribute *attr,
527
- const char *buf,
528
- size_t len)
526
+ struct device_attribute *attr,
527
+ const char *buf,
528
+ size_t len)
529529 {
530530 struct iio_dev *dev_info = dev_to_iio_dev(dev);
531531 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -551,8 +551,8 @@
551551 0);
552552
553553 static ssize_t adt7316_show_powerdown(struct device *dev,
554
- struct device_attribute *attr,
555
- char *buf)
554
+ struct device_attribute *attr,
555
+ char *buf)
556556 {
557557 struct iio_dev *dev_info = dev_to_iio_dev(dev);
558558 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -561,9 +561,9 @@
561561 }
562562
563563 static ssize_t adt7316_store_powerdown(struct device *dev,
564
- struct device_attribute *attr,
565
- const char *buf,
566
- size_t len)
564
+ struct device_attribute *attr,
565
+ const char *buf,
566
+ size_t len)
567567 {
568568 struct iio_dev *dev_info = dev_to_iio_dev(dev);
569569 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -589,8 +589,8 @@
589589 0);
590590
591591 static ssize_t adt7316_show_fast_ad_clock(struct device *dev,
592
- struct device_attribute *attr,
593
- char *buf)
592
+ struct device_attribute *attr,
593
+ char *buf)
594594 {
595595 struct iio_dev *dev_info = dev_to_iio_dev(dev);
596596 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -599,9 +599,9 @@
599599 }
600600
601601 static ssize_t adt7316_store_fast_ad_clock(struct device *dev,
602
- struct device_attribute *attr,
603
- const char *buf,
604
- size_t len)
602
+ struct device_attribute *attr,
603
+ const char *buf,
604
+ size_t len)
605605 {
606606 struct iio_dev *dev_info = dev_to_iio_dev(dev);
607607 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -627,16 +627,14 @@
627627 0);
628628
629629 static ssize_t adt7316_show_da_high_resolution(struct device *dev,
630
- struct device_attribute *attr,
631
- char *buf)
630
+ struct device_attribute *attr,
631
+ char *buf)
632632 {
633633 struct iio_dev *dev_info = dev_to_iio_dev(dev);
634634 struct adt7316_chip_info *chip = iio_priv(dev_info);
635635
636636 if (chip->config3 & ADT7316_DA_HIGH_RESOLUTION) {
637
- if (chip->id == ID_ADT7316 || chip->id == ID_ADT7516)
638
- return sprintf(buf, "1 (12 bits)\n");
639
- if (chip->id == ID_ADT7317 || chip->id == ID_ADT7517)
637
+ if (chip->id != ID_ADT7318 && chip->id != ID_ADT7519)
640638 return sprintf(buf, "1 (10 bits)\n");
641639 }
642640
....@@ -644,26 +642,21 @@
644642 }
645643
646644 static ssize_t adt7316_store_da_high_resolution(struct device *dev,
647
- struct device_attribute *attr,
648
- const char *buf,
649
- size_t len)
645
+ struct device_attribute *attr,
646
+ const char *buf,
647
+ size_t len)
650648 {
651649 struct iio_dev *dev_info = dev_to_iio_dev(dev);
652650 struct adt7316_chip_info *chip = iio_priv(dev_info);
653651 u8 config3;
654652 int ret;
655653
656
- chip->dac_bits = 8;
654
+ if (chip->id == ID_ADT7318 || chip->id == ID_ADT7519)
655
+ return -EPERM;
657656
658
- if (buf[0] == '1') {
659
- config3 = chip->config3 | ADT7316_DA_HIGH_RESOLUTION;
660
- if (chip->id == ID_ADT7316 || chip->id == ID_ADT7516)
661
- chip->dac_bits = 12;
662
- else if (chip->id == ID_ADT7317 || chip->id == ID_ADT7517)
663
- chip->dac_bits = 10;
664
- } else {
665
- config3 = chip->config3 & (~ADT7316_DA_HIGH_RESOLUTION);
666
- }
657
+ config3 = chip->config3 & (~ADT7316_DA_HIGH_RESOLUTION);
658
+ if (buf[0] == '1')
659
+ config3 |= ADT7316_DA_HIGH_RESOLUTION;
667660
668661 ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG3, config3);
669662 if (ret)
....@@ -680,8 +673,8 @@
680673 0);
681674
682675 static ssize_t adt7316_show_AIN_internal_Vref(struct device *dev,
683
- struct device_attribute *attr,
684
- char *buf)
676
+ struct device_attribute *attr,
677
+ char *buf)
685678 {
686679 struct iio_dev *dev_info = dev_to_iio_dev(dev);
687680 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -694,9 +687,9 @@
694687 }
695688
696689 static ssize_t adt7316_store_AIN_internal_Vref(struct device *dev,
697
- struct device_attribute *attr,
698
- const char *buf,
699
- size_t len)
690
+ struct device_attribute *attr,
691
+ const char *buf,
692
+ size_t len)
700693 {
701694 struct iio_dev *dev_info = dev_to_iio_dev(dev);
702695 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -726,8 +719,8 @@
726719 0);
727720
728721 static ssize_t adt7316_show_enable_prop_DACA(struct device *dev,
729
- struct device_attribute *attr,
730
- char *buf)
722
+ struct device_attribute *attr,
723
+ char *buf)
731724 {
732725 struct iio_dev *dev_info = dev_to_iio_dev(dev);
733726 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -737,9 +730,9 @@
737730 }
738731
739732 static ssize_t adt7316_store_enable_prop_DACA(struct device *dev,
740
- struct device_attribute *attr,
741
- const char *buf,
742
- size_t len)
733
+ struct device_attribute *attr,
734
+ const char *buf,
735
+ size_t len)
743736 {
744737 struct iio_dev *dev_info = dev_to_iio_dev(dev);
745738 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -760,13 +753,13 @@
760753 }
761754
762755 static IIO_DEVICE_ATTR(enable_proportion_DACA, 0644,
763
- adt7316_show_enable_prop_DACA,
764
- adt7316_store_enable_prop_DACA,
765
- 0);
756
+ adt7316_show_enable_prop_DACA,
757
+ adt7316_store_enable_prop_DACA,
758
+ 0);
766759
767760 static ssize_t adt7316_show_enable_prop_DACB(struct device *dev,
768
- struct device_attribute *attr,
769
- char *buf)
761
+ struct device_attribute *attr,
762
+ char *buf)
770763 {
771764 struct iio_dev *dev_info = dev_to_iio_dev(dev);
772765 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -776,9 +769,9 @@
776769 }
777770
778771 static ssize_t adt7316_store_enable_prop_DACB(struct device *dev,
779
- struct device_attribute *attr,
780
- const char *buf,
781
- size_t len)
772
+ struct device_attribute *attr,
773
+ const char *buf,
774
+ size_t len)
782775 {
783776 struct iio_dev *dev_info = dev_to_iio_dev(dev);
784777 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -799,13 +792,13 @@
799792 }
800793
801794 static IIO_DEVICE_ATTR(enable_proportion_DACB, 0644,
802
- adt7316_show_enable_prop_DACB,
803
- adt7316_store_enable_prop_DACB,
804
- 0);
795
+ adt7316_show_enable_prop_DACB,
796
+ adt7316_store_enable_prop_DACB,
797
+ 0);
805798
806799 static ssize_t adt7316_show_DAC_2Vref_ch_mask(struct device *dev,
807
- struct device_attribute *attr,
808
- char *buf)
800
+ struct device_attribute *attr,
801
+ char *buf)
809802 {
810803 struct iio_dev *dev_info = dev_to_iio_dev(dev);
811804 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -815,9 +808,9 @@
815808 }
816809
817810 static ssize_t adt7316_store_DAC_2Vref_ch_mask(struct device *dev,
818
- struct device_attribute *attr,
819
- const char *buf,
820
- size_t len)
811
+ struct device_attribute *attr,
812
+ const char *buf,
813
+ size_t len)
821814 {
822815 struct iio_dev *dev_info = dev_to_iio_dev(dev);
823816 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -842,18 +835,18 @@
842835 }
843836
844837 static IIO_DEVICE_ATTR(DAC_2Vref_channels_mask, 0644,
845
- adt7316_show_DAC_2Vref_ch_mask,
846
- adt7316_store_DAC_2Vref_ch_mask,
847
- 0);
838
+ adt7316_show_DAC_2Vref_ch_mask,
839
+ adt7316_store_DAC_2Vref_ch_mask,
840
+ 0);
848841
849842 static ssize_t adt7316_show_DAC_update_mode(struct device *dev,
850
- struct device_attribute *attr,
851
- char *buf)
843
+ struct device_attribute *attr,
844
+ char *buf)
852845 {
853846 struct iio_dev *dev_info = dev_to_iio_dev(dev);
854847 struct adt7316_chip_info *chip = iio_priv(dev_info);
855848
856
- if (!(chip->config3 & ADT7316_DA_EN_VIA_DAC_LDCA))
849
+ if (!(chip->config3 & ADT7316_DA_EN_VIA_DAC_LDAC))
857850 return sprintf(buf, "manual\n");
858851
859852 switch (chip->dac_config & ADT7316_DA_EN_MODE_MASK) {
....@@ -872,9 +865,9 @@
872865 }
873866
874867 static ssize_t adt7316_store_DAC_update_mode(struct device *dev,
875
- struct device_attribute *attr,
876
- const char *buf,
877
- size_t len)
868
+ struct device_attribute *attr,
869
+ const char *buf,
870
+ size_t len)
878871 {
879872 struct iio_dev *dev_info = dev_to_iio_dev(dev);
880873 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -882,15 +875,15 @@
882875 u8 data;
883876 int ret;
884877
885
- if (!(chip->config3 & ADT7316_DA_EN_VIA_DAC_LDCA))
878
+ if (!(chip->config3 & ADT7316_DA_EN_VIA_DAC_LDAC))
886879 return -EPERM;
887880
888881 ret = kstrtou8(buf, 10, &data);
889
- if (ret || data > ADT7316_DA_EN_MODE_MASK)
882
+ if (ret || data > (ADT7316_DA_EN_MODE_MASK >> ADT7316_DA_EN_MODE_SHIFT))
890883 return -EINVAL;
891884
892885 dac_config = chip->dac_config & (~ADT7316_DA_EN_MODE_MASK);
893
- dac_config |= data;
886
+ dac_config |= data << ADT7316_DA_EN_MODE_SHIFT;
894887
895888 ret = chip->bus.write(chip->bus.client, ADT7316_DAC_CONFIG, dac_config);
896889 if (ret)
....@@ -902,18 +895,18 @@
902895 }
903896
904897 static IIO_DEVICE_ATTR(DAC_update_mode, 0644,
905
- adt7316_show_DAC_update_mode,
906
- adt7316_store_DAC_update_mode,
907
- 0);
898
+ adt7316_show_DAC_update_mode,
899
+ adt7316_store_DAC_update_mode,
900
+ 0);
908901
909902 static ssize_t adt7316_show_all_DAC_update_modes(struct device *dev,
910
- struct device_attribute *attr,
911
- char *buf)
903
+ struct device_attribute *attr,
904
+ char *buf)
912905 {
913906 struct iio_dev *dev_info = dev_to_iio_dev(dev);
914907 struct adt7316_chip_info *chip = iio_priv(dev_info);
915908
916
- if (chip->config3 & ADT7316_DA_EN_VIA_DAC_LDCA)
909
+ if (chip->config3 & ADT7316_DA_EN_VIA_DAC_LDAC)
917910 return sprintf(buf, "0 - auto at any MSB DAC writing\n"
918911 "1 - auto at MSB DAC AB and CD writing\n"
919912 "2 - auto at MSB DAC ABCD writing\n"
....@@ -922,12 +915,12 @@
922915 }
923916
924917 static IIO_DEVICE_ATTR(all_DAC_update_modes, 0444,
925
- adt7316_show_all_DAC_update_modes, NULL, 0);
918
+ adt7316_show_all_DAC_update_modes, NULL, 0);
926919
927920 static ssize_t adt7316_store_update_DAC(struct device *dev,
928
- struct device_attribute *attr,
929
- const char *buf,
930
- size_t len)
921
+ struct device_attribute *attr,
922
+ const char *buf,
923
+ size_t len)
931924 {
932925 struct iio_dev *dev_info = dev_to_iio_dev(dev);
933926 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -935,7 +928,7 @@
935928 u8 data;
936929 int ret;
937930
938
- if (chip->config3 & ADT7316_DA_EN_VIA_DAC_LDCA) {
931
+ if (chip->config3 & ADT7316_DA_EN_VIA_DAC_LDAC) {
939932 if ((chip->dac_config & ADT7316_DA_EN_MODE_MASK) !=
940933 ADT7316_DA_EN_MODE_LDAC)
941934 return -EPERM;
....@@ -952,44 +945,38 @@
952945 if (ret)
953946 return -EIO;
954947 } else {
955
- gpio_set_value(chip->ldac_pin, 0);
956
- gpio_set_value(chip->ldac_pin, 1);
948
+ gpiod_set_value(chip->ldac_pin, 0);
949
+ gpiod_set_value(chip->ldac_pin, 1);
957950 }
958951
959952 return len;
960953 }
961954
962955 static IIO_DEVICE_ATTR(update_DAC, 0644,
963
- NULL,
964
- adt7316_store_update_DAC,
965
- 0);
956
+ NULL,
957
+ adt7316_store_update_DAC,
958
+ 0);
966959
967960 static ssize_t adt7316_show_DA_AB_Vref_bypass(struct device *dev,
968
- struct device_attribute *attr,
969
- char *buf)
961
+ struct device_attribute *attr,
962
+ char *buf)
970963 {
971964 struct iio_dev *dev_info = dev_to_iio_dev(dev);
972965 struct adt7316_chip_info *chip = iio_priv(dev_info);
973
-
974
- if ((chip->id & ID_FAMILY_MASK) == ID_ADT75XX)
975
- return -EPERM;
976966
977967 return sprintf(buf, "%d\n",
978968 !!(chip->dac_config & ADT7316_VREF_BYPASS_DAC_AB));
979969 }
980970
981971 static ssize_t adt7316_store_DA_AB_Vref_bypass(struct device *dev,
982
- struct device_attribute *attr,
983
- const char *buf,
984
- size_t len)
972
+ struct device_attribute *attr,
973
+ const char *buf,
974
+ size_t len)
985975 {
986976 struct iio_dev *dev_info = dev_to_iio_dev(dev);
987977 struct adt7316_chip_info *chip = iio_priv(dev_info);
988978 u8 dac_config;
989979 int ret;
990
-
991
- if ((chip->id & ID_FAMILY_MASK) == ID_ADT75XX)
992
- return -EPERM;
993980
994981 dac_config = chip->dac_config & (~ADT7316_VREF_BYPASS_DAC_AB);
995982 if (buf[0] == '1')
....@@ -1005,36 +992,30 @@
1005992 }
1006993
1007994 static IIO_DEVICE_ATTR(DA_AB_Vref_bypass, 0644,
1008
- adt7316_show_DA_AB_Vref_bypass,
1009
- adt7316_store_DA_AB_Vref_bypass,
1010
- 0);
995
+ adt7316_show_DA_AB_Vref_bypass,
996
+ adt7316_store_DA_AB_Vref_bypass,
997
+ 0);
1011998
1012999 static ssize_t adt7316_show_DA_CD_Vref_bypass(struct device *dev,
1013
- struct device_attribute *attr,
1014
- char *buf)
1000
+ struct device_attribute *attr,
1001
+ char *buf)
10151002 {
10161003 struct iio_dev *dev_info = dev_to_iio_dev(dev);
10171004 struct adt7316_chip_info *chip = iio_priv(dev_info);
1018
-
1019
- if ((chip->id & ID_FAMILY_MASK) == ID_ADT75XX)
1020
- return -EPERM;
10211005
10221006 return sprintf(buf, "%d\n",
10231007 !!(chip->dac_config & ADT7316_VREF_BYPASS_DAC_CD));
10241008 }
10251009
10261010 static ssize_t adt7316_store_DA_CD_Vref_bypass(struct device *dev,
1027
- struct device_attribute *attr,
1028
- const char *buf,
1029
- size_t len)
1011
+ struct device_attribute *attr,
1012
+ const char *buf,
1013
+ size_t len)
10301014 {
10311015 struct iio_dev *dev_info = dev_to_iio_dev(dev);
10321016 struct adt7316_chip_info *chip = iio_priv(dev_info);
10331017 u8 dac_config;
10341018 int ret;
1035
-
1036
- if ((chip->id & ID_FAMILY_MASK) == ID_ADT75XX)
1037
- return -EPERM;
10381019
10391020 dac_config = chip->dac_config & (~ADT7316_VREF_BYPASS_DAC_CD);
10401021 if (buf[0] == '1')
....@@ -1050,29 +1031,29 @@
10501031 }
10511032
10521033 static IIO_DEVICE_ATTR(DA_CD_Vref_bypass, 0644,
1053
- adt7316_show_DA_CD_Vref_bypass,
1054
- adt7316_store_DA_CD_Vref_bypass,
1055
- 0);
1034
+ adt7316_show_DA_CD_Vref_bypass,
1035
+ adt7316_store_DA_CD_Vref_bypass,
1036
+ 0);
10561037
10571038 static ssize_t adt7316_show_DAC_internal_Vref(struct device *dev,
1058
- struct device_attribute *attr,
1059
- char *buf)
1039
+ struct device_attribute *attr,
1040
+ char *buf)
10601041 {
10611042 struct iio_dev *dev_info = dev_to_iio_dev(dev);
10621043 struct adt7316_chip_info *chip = iio_priv(dev_info);
10631044
10641045 if ((chip->id & ID_FAMILY_MASK) == ID_ADT75XX)
10651046 return sprintf(buf, "0x%x\n",
1066
- (chip->dac_config & ADT7516_DAC_IN_VREF_MASK) >>
1047
+ (chip->ldac_config & ADT7516_DAC_IN_VREF_MASK) >>
10671048 ADT7516_DAC_IN_VREF_OFFSET);
10681049 return sprintf(buf, "%d\n",
1069
- !!(chip->dac_config & ADT7316_DAC_IN_VREF));
1050
+ !!(chip->ldac_config & ADT7316_DAC_IN_VREF));
10701051 }
10711052
10721053 static ssize_t adt7316_store_DAC_internal_Vref(struct device *dev,
1073
- struct device_attribute *attr,
1074
- const char *buf,
1075
- size_t len)
1054
+ struct device_attribute *attr,
1055
+ const char *buf,
1056
+ size_t len)
10761057 {
10771058 struct iio_dev *dev_info = dev_to_iio_dev(dev);
10781059 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1111,12 +1092,12 @@
11111092 }
11121093
11131094 static IIO_DEVICE_ATTR(DAC_internal_Vref, 0644,
1114
- adt7316_show_DAC_internal_Vref,
1115
- adt7316_store_DAC_internal_Vref,
1116
- 0);
1095
+ adt7316_show_DAC_internal_Vref,
1096
+ adt7316_store_DAC_internal_Vref,
1097
+ 0);
11171098
11181099 static ssize_t adt7316_show_ad(struct adt7316_chip_info *chip,
1119
- int channel, char *buf)
1100
+ int channel, char *buf)
11201101 {
11211102 u16 data;
11221103 u8 msb, lsb;
....@@ -1124,7 +1105,7 @@
11241105 int ret;
11251106
11261107 if ((chip->config2 & ADT7316_AD_SINGLE_CH_MODE) &&
1127
- channel != (chip->config2 & ADT7516_AD_SINGLE_CH_MASK))
1108
+ channel != (chip->config2 & ADT7516_AD_SINGLE_CH_MASK))
11281109 return -EPERM;
11291110
11301111 switch (channel) {
....@@ -1191,8 +1172,8 @@
11911172 }
11921173
11931174 static ssize_t adt7316_show_VDD(struct device *dev,
1194
- struct device_attribute *attr,
1195
- char *buf)
1175
+ struct device_attribute *attr,
1176
+ char *buf)
11961177 {
11971178 struct iio_dev *dev_info = dev_to_iio_dev(dev);
11981179 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1202,8 +1183,8 @@
12021183 static IIO_DEVICE_ATTR(VDD, 0444, adt7316_show_VDD, NULL, 0);
12031184
12041185 static ssize_t adt7316_show_in_temp(struct device *dev,
1205
- struct device_attribute *attr,
1206
- char *buf)
1186
+ struct device_attribute *attr,
1187
+ char *buf)
12071188 {
12081189 struct iio_dev *dev_info = dev_to_iio_dev(dev);
12091190 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1214,8 +1195,8 @@
12141195 static IIO_DEVICE_ATTR(in_temp, 0444, adt7316_show_in_temp, NULL, 0);
12151196
12161197 static ssize_t adt7316_show_ex_temp_AIN1(struct device *dev,
1217
- struct device_attribute *attr,
1218
- char *buf)
1198
+ struct device_attribute *attr,
1199
+ char *buf)
12191200 {
12201201 struct iio_dev *dev_info = dev_to_iio_dev(dev);
12211202 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1224,12 +1205,12 @@
12241205 }
12251206
12261207 static IIO_DEVICE_ATTR(ex_temp_AIN1, 0444, adt7316_show_ex_temp_AIN1,
1227
- NULL, 0);
1208
+ NULL, 0);
12281209 static IIO_DEVICE_ATTR(ex_temp, 0444, adt7316_show_ex_temp_AIN1, NULL, 0);
12291210
12301211 static ssize_t adt7316_show_AIN2(struct device *dev,
1231
- struct device_attribute *attr,
1232
- char *buf)
1212
+ struct device_attribute *attr,
1213
+ char *buf)
12331214 {
12341215 struct iio_dev *dev_info = dev_to_iio_dev(dev);
12351216 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1239,8 +1220,8 @@
12391220 static IIO_DEVICE_ATTR(AIN2, 0444, adt7316_show_AIN2, NULL, 0);
12401221
12411222 static ssize_t adt7316_show_AIN3(struct device *dev,
1242
- struct device_attribute *attr,
1243
- char *buf)
1223
+ struct device_attribute *attr,
1224
+ char *buf)
12441225 {
12451226 struct iio_dev *dev_info = dev_to_iio_dev(dev);
12461227 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1250,8 +1231,8 @@
12501231 static IIO_DEVICE_ATTR(AIN3, 0444, adt7316_show_AIN3, NULL, 0);
12511232
12521233 static ssize_t adt7316_show_AIN4(struct device *dev,
1253
- struct device_attribute *attr,
1254
- char *buf)
1234
+ struct device_attribute *attr,
1235
+ char *buf)
12551236 {
12561237 struct iio_dev *dev_info = dev_to_iio_dev(dev);
12571238 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1261,7 +1242,7 @@
12611242 static IIO_DEVICE_ATTR(AIN4, 0444, adt7316_show_AIN4, NULL, 0);
12621243
12631244 static ssize_t adt7316_show_temp_offset(struct adt7316_chip_info *chip,
1264
- int offset_addr, char *buf)
1245
+ int offset_addr, char *buf)
12651246 {
12661247 int data;
12671248 u8 val;
....@@ -1279,7 +1260,9 @@
12791260 }
12801261
12811262 static ssize_t adt7316_store_temp_offset(struct adt7316_chip_info *chip,
1282
- int offset_addr, const char *buf, size_t len)
1263
+ int offset_addr,
1264
+ const char *buf,
1265
+ size_t len)
12831266 {
12841267 int data;
12851268 u8 val;
....@@ -1302,8 +1285,8 @@
13021285 }
13031286
13041287 static ssize_t adt7316_show_in_temp_offset(struct device *dev,
1305
- struct device_attribute *attr,
1306
- char *buf)
1288
+ struct device_attribute *attr,
1289
+ char *buf)
13071290 {
13081291 struct iio_dev *dev_info = dev_to_iio_dev(dev);
13091292 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1312,9 +1295,9 @@
13121295 }
13131296
13141297 static ssize_t adt7316_store_in_temp_offset(struct device *dev,
1315
- struct device_attribute *attr,
1316
- const char *buf,
1317
- size_t len)
1298
+ struct device_attribute *attr,
1299
+ const char *buf,
1300
+ size_t len)
13181301 {
13191302 struct iio_dev *dev_info = dev_to_iio_dev(dev);
13201303 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1324,12 +1307,12 @@
13241307 }
13251308
13261309 static IIO_DEVICE_ATTR(in_temp_offset, 0644,
1327
- adt7316_show_in_temp_offset,
1328
- adt7316_store_in_temp_offset, 0);
1310
+ adt7316_show_in_temp_offset,
1311
+ adt7316_store_in_temp_offset, 0);
13291312
13301313 static ssize_t adt7316_show_ex_temp_offset(struct device *dev,
1331
- struct device_attribute *attr,
1332
- char *buf)
1314
+ struct device_attribute *attr,
1315
+ char *buf)
13331316 {
13341317 struct iio_dev *dev_info = dev_to_iio_dev(dev);
13351318 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1338,9 +1321,9 @@
13381321 }
13391322
13401323 static ssize_t adt7316_store_ex_temp_offset(struct device *dev,
1341
- struct device_attribute *attr,
1342
- const char *buf,
1343
- size_t len)
1324
+ struct device_attribute *attr,
1325
+ const char *buf,
1326
+ size_t len)
13441327 {
13451328 struct iio_dev *dev_info = dev_to_iio_dev(dev);
13461329 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1350,12 +1333,12 @@
13501333 }
13511334
13521335 static IIO_DEVICE_ATTR(ex_temp_offset, 0644,
1353
- adt7316_show_ex_temp_offset,
1354
- adt7316_store_ex_temp_offset, 0);
1336
+ adt7316_show_ex_temp_offset,
1337
+ adt7316_store_ex_temp_offset, 0);
13551338
13561339 static ssize_t adt7316_show_in_analog_temp_offset(struct device *dev,
1357
- struct device_attribute *attr,
1358
- char *buf)
1340
+ struct device_attribute *attr,
1341
+ char *buf)
13591342 {
13601343 struct iio_dev *dev_info = dev_to_iio_dev(dev);
13611344 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1365,9 +1348,9 @@
13651348 }
13661349
13671350 static ssize_t adt7316_store_in_analog_temp_offset(struct device *dev,
1368
- struct device_attribute *attr,
1369
- const char *buf,
1370
- size_t len)
1351
+ struct device_attribute *attr,
1352
+ const char *buf,
1353
+ size_t len)
13711354 {
13721355 struct iio_dev *dev_info = dev_to_iio_dev(dev);
13731356 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1377,12 +1360,12 @@
13771360 }
13781361
13791362 static IIO_DEVICE_ATTR(in_analog_temp_offset, 0644,
1380
- adt7316_show_in_analog_temp_offset,
1381
- adt7316_store_in_analog_temp_offset, 0);
1363
+ adt7316_show_in_analog_temp_offset,
1364
+ adt7316_store_in_analog_temp_offset, 0);
13821365
13831366 static ssize_t adt7316_show_ex_analog_temp_offset(struct device *dev,
1384
- struct device_attribute *attr,
1385
- char *buf)
1367
+ struct device_attribute *attr,
1368
+ char *buf)
13861369 {
13871370 struct iio_dev *dev_info = dev_to_iio_dev(dev);
13881371 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1392,9 +1375,9 @@
13921375 }
13931376
13941377 static ssize_t adt7316_store_ex_analog_temp_offset(struct device *dev,
1395
- struct device_attribute *attr,
1396
- const char *buf,
1397
- size_t len)
1378
+ struct device_attribute *attr,
1379
+ const char *buf,
1380
+ size_t len)
13981381 {
13991382 struct iio_dev *dev_info = dev_to_iio_dev(dev);
14001383 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1404,21 +1387,21 @@
14041387 }
14051388
14061389 static IIO_DEVICE_ATTR(ex_analog_temp_offset, 0644,
1407
- adt7316_show_ex_analog_temp_offset,
1408
- adt7316_store_ex_analog_temp_offset, 0);
1390
+ adt7316_show_ex_analog_temp_offset,
1391
+ adt7316_store_ex_analog_temp_offset, 0);
14091392
14101393 static ssize_t adt7316_show_DAC(struct adt7316_chip_info *chip,
1411
- int channel, char *buf)
1394
+ int channel, char *buf)
14121395 {
14131396 u16 data = 0;
14141397 u8 msb, lsb, offset;
14151398 int ret;
14161399
14171400 if (channel >= ADT7316_DA_MSB_DATA_REGS ||
1418
- (channel == 0 &&
1419
- (chip->config3 & ADT7316_EN_IN_TEMP_PROP_DACA)) ||
1420
- (channel == 1 &&
1421
- (chip->config3 & ADT7316_EN_EX_TEMP_PROP_DACB)))
1401
+ (channel == 0 &&
1402
+ (chip->config3 & ADT7316_EN_IN_TEMP_PROP_DACA)) ||
1403
+ (channel == 1 &&
1404
+ (chip->config3 & ADT7316_EN_EX_TEMP_PROP_DACB)))
14221405 return -EPERM;
14231406
14241407 offset = chip->dac_bits - 8;
....@@ -1445,17 +1428,17 @@
14451428 }
14461429
14471430 static ssize_t adt7316_store_DAC(struct adt7316_chip_info *chip,
1448
- int channel, const char *buf, size_t len)
1431
+ int channel, const char *buf, size_t len)
14491432 {
14501433 u8 msb, lsb, lsb_reg, offset;
14511434 u16 data;
14521435 int ret;
14531436
14541437 if (channel >= ADT7316_DA_MSB_DATA_REGS ||
1455
- (channel == 0 &&
1456
- (chip->config3 & ADT7316_EN_IN_TEMP_PROP_DACA)) ||
1457
- (channel == 1 &&
1458
- (chip->config3 & ADT7316_EN_EX_TEMP_PROP_DACB)))
1438
+ (channel == 0 &&
1439
+ (chip->config3 & ADT7316_EN_IN_TEMP_PROP_DACA)) ||
1440
+ (channel == 1 &&
1441
+ (chip->config3 & ADT7316_EN_EX_TEMP_PROP_DACB)))
14591442 return -EPERM;
14601443
14611444 offset = chip->dac_bits - 8;
....@@ -1486,8 +1469,8 @@
14861469 }
14871470
14881471 static ssize_t adt7316_show_DAC_A(struct device *dev,
1489
- struct device_attribute *attr,
1490
- char *buf)
1472
+ struct device_attribute *attr,
1473
+ char *buf)
14911474 {
14921475 struct iio_dev *dev_info = dev_to_iio_dev(dev);
14931476 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1496,9 +1479,9 @@
14961479 }
14971480
14981481 static ssize_t adt7316_store_DAC_A(struct device *dev,
1499
- struct device_attribute *attr,
1500
- const char *buf,
1501
- size_t len)
1482
+ struct device_attribute *attr,
1483
+ const char *buf,
1484
+ size_t len)
15021485 {
15031486 struct iio_dev *dev_info = dev_to_iio_dev(dev);
15041487 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1507,11 +1490,11 @@
15071490 }
15081491
15091492 static IIO_DEVICE_ATTR(DAC_A, 0644, adt7316_show_DAC_A,
1510
- adt7316_store_DAC_A, 0);
1493
+ adt7316_store_DAC_A, 0);
15111494
15121495 static ssize_t adt7316_show_DAC_B(struct device *dev,
1513
- struct device_attribute *attr,
1514
- char *buf)
1496
+ struct device_attribute *attr,
1497
+ char *buf)
15151498 {
15161499 struct iio_dev *dev_info = dev_to_iio_dev(dev);
15171500 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1520,9 +1503,9 @@
15201503 }
15211504
15221505 static ssize_t adt7316_store_DAC_B(struct device *dev,
1523
- struct device_attribute *attr,
1524
- const char *buf,
1525
- size_t len)
1506
+ struct device_attribute *attr,
1507
+ const char *buf,
1508
+ size_t len)
15261509 {
15271510 struct iio_dev *dev_info = dev_to_iio_dev(dev);
15281511 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1531,11 +1514,11 @@
15311514 }
15321515
15331516 static IIO_DEVICE_ATTR(DAC_B, 0644, adt7316_show_DAC_B,
1534
- adt7316_store_DAC_B, 0);
1517
+ adt7316_store_DAC_B, 0);
15351518
15361519 static ssize_t adt7316_show_DAC_C(struct device *dev,
1537
- struct device_attribute *attr,
1538
- char *buf)
1520
+ struct device_attribute *attr,
1521
+ char *buf)
15391522 {
15401523 struct iio_dev *dev_info = dev_to_iio_dev(dev);
15411524 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1544,9 +1527,9 @@
15441527 }
15451528
15461529 static ssize_t adt7316_store_DAC_C(struct device *dev,
1547
- struct device_attribute *attr,
1548
- const char *buf,
1549
- size_t len)
1530
+ struct device_attribute *attr,
1531
+ const char *buf,
1532
+ size_t len)
15501533 {
15511534 struct iio_dev *dev_info = dev_to_iio_dev(dev);
15521535 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1555,11 +1538,11 @@
15551538 }
15561539
15571540 static IIO_DEVICE_ATTR(DAC_C, 0644, adt7316_show_DAC_C,
1558
- adt7316_store_DAC_C, 0);
1541
+ adt7316_store_DAC_C, 0);
15591542
15601543 static ssize_t adt7316_show_DAC_D(struct device *dev,
1561
- struct device_attribute *attr,
1562
- char *buf)
1544
+ struct device_attribute *attr,
1545
+ char *buf)
15631546 {
15641547 struct iio_dev *dev_info = dev_to_iio_dev(dev);
15651548 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1568,9 +1551,9 @@
15681551 }
15691552
15701553 static ssize_t adt7316_store_DAC_D(struct device *dev,
1571
- struct device_attribute *attr,
1572
- const char *buf,
1573
- size_t len)
1554
+ struct device_attribute *attr,
1555
+ const char *buf,
1556
+ size_t len)
15741557 {
15751558 struct iio_dev *dev_info = dev_to_iio_dev(dev);
15761559 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1579,11 +1562,11 @@
15791562 }
15801563
15811564 static IIO_DEVICE_ATTR(DAC_D, 0644, adt7316_show_DAC_D,
1582
- adt7316_store_DAC_D, 0);
1565
+ adt7316_store_DAC_D, 0);
15831566
15841567 static ssize_t adt7316_show_device_id(struct device *dev,
1585
- struct device_attribute *attr,
1586
- char *buf)
1568
+ struct device_attribute *attr,
1569
+ char *buf)
15871570 {
15881571 struct iio_dev *dev_info = dev_to_iio_dev(dev);
15891572 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1600,8 +1583,8 @@
16001583 static IIO_DEVICE_ATTR(device_id, 0444, adt7316_show_device_id, NULL, 0);
16011584
16021585 static ssize_t adt7316_show_manufactorer_id(struct device *dev,
1603
- struct device_attribute *attr,
1604
- char *buf)
1586
+ struct device_attribute *attr,
1587
+ char *buf)
16051588 {
16061589 struct iio_dev *dev_info = dev_to_iio_dev(dev);
16071590 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1616,11 +1599,11 @@
16161599 }
16171600
16181601 static IIO_DEVICE_ATTR(manufactorer_id, 0444,
1619
- adt7316_show_manufactorer_id, NULL, 0);
1602
+ adt7316_show_manufactorer_id, NULL, 0);
16201603
16211604 static ssize_t adt7316_show_device_rev(struct device *dev,
1622
- struct device_attribute *attr,
1623
- char *buf)
1605
+ struct device_attribute *attr,
1606
+ char *buf)
16241607 {
16251608 struct iio_dev *dev_info = dev_to_iio_dev(dev);
16261609 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1637,8 +1620,8 @@
16371620 static IIO_DEVICE_ATTR(device_rev, 0444, adt7316_show_device_rev, NULL, 0);
16381621
16391622 static ssize_t adt7316_show_bus_type(struct device *dev,
1640
- struct device_attribute *attr,
1641
- char *buf)
1623
+ struct device_attribute *attr,
1624
+ char *buf)
16421625 {
16431626 struct iio_dev *dev_info = dev_to_iio_dev(dev);
16441627 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1718,8 +1701,6 @@
17181701 &iio_dev_attr_DAC_update_mode.dev_attr.attr,
17191702 &iio_dev_attr_all_DAC_update_modes.dev_attr.attr,
17201703 &iio_dev_attr_update_DAC.dev_attr.attr,
1721
- &iio_dev_attr_DA_AB_Vref_bypass.dev_attr.attr,
1722
- &iio_dev_attr_DA_CD_Vref_bypass.dev_attr.attr,
17231704 &iio_dev_attr_DAC_internal_Vref.dev_attr.attr,
17241705 &iio_dev_attr_VDD.dev_attr.attr,
17251706 &iio_dev_attr_in_temp.dev_attr.attr,
....@@ -1817,12 +1798,49 @@
18171798 return IRQ_HANDLED;
18181799 }
18191800
1801
+static int adt7316_setup_irq(struct iio_dev *indio_dev)
1802
+{
1803
+ struct adt7316_chip_info *chip = iio_priv(indio_dev);
1804
+ int irq_type, ret;
1805
+
1806
+ irq_type = irqd_get_trigger_type(irq_get_irq_data(chip->bus.irq));
1807
+
1808
+ switch (irq_type) {
1809
+ case IRQF_TRIGGER_HIGH:
1810
+ case IRQF_TRIGGER_RISING:
1811
+ break;
1812
+ case IRQF_TRIGGER_LOW:
1813
+ case IRQF_TRIGGER_FALLING:
1814
+ break;
1815
+ default:
1816
+ dev_info(&indio_dev->dev, "mode %d unsupported, using IRQF_TRIGGER_LOW\n",
1817
+ irq_type);
1818
+ irq_type = IRQF_TRIGGER_LOW;
1819
+ break;
1820
+ }
1821
+
1822
+ ret = devm_request_threaded_irq(&indio_dev->dev, chip->bus.irq,
1823
+ NULL, adt7316_event_handler,
1824
+ irq_type | IRQF_ONESHOT,
1825
+ indio_dev->name, indio_dev);
1826
+ if (ret) {
1827
+ dev_err(&indio_dev->dev, "failed to request irq %d\n",
1828
+ chip->bus.irq);
1829
+ return ret;
1830
+ }
1831
+
1832
+ if (irq_type & IRQF_TRIGGER_HIGH)
1833
+ chip->config1 |= ADT7316_INT_POLARITY;
1834
+
1835
+ return 0;
1836
+}
1837
+
18201838 /*
18211839 * Show mask of enabled interrupts in Hex.
18221840 */
18231841 static ssize_t adt7316_show_int_mask(struct device *dev,
1824
- struct device_attribute *attr,
1825
- char *buf)
1842
+ struct device_attribute *attr,
1843
+ char *buf)
18261844 {
18271845 struct iio_dev *dev_info = dev_to_iio_dev(dev);
18281846 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1834,9 +1852,9 @@
18341852 * Set 1 to the mask in Hex to enabled interrupts.
18351853 */
18361854 static ssize_t adt7316_set_int_mask(struct device *dev,
1837
- struct device_attribute *attr,
1838
- const char *buf,
1839
- size_t len)
1855
+ struct device_attribute *attr,
1856
+ const char *buf,
1857
+ size_t len)
18401858 {
18411859 struct iio_dev *dev_info = dev_to_iio_dev(dev);
18421860 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1875,8 +1893,8 @@
18751893 }
18761894
18771895 static inline ssize_t adt7316_show_ad_bound(struct device *dev,
1878
- struct device_attribute *attr,
1879
- char *buf)
1896
+ struct device_attribute *attr,
1897
+ char *buf)
18801898 {
18811899 struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
18821900 struct iio_dev *dev_info = dev_to_iio_dev(dev);
....@@ -1886,7 +1904,7 @@
18861904 int ret;
18871905
18881906 if ((chip->id & ID_FAMILY_MASK) == ID_ADT73XX &&
1889
- this_attr->address > ADT7316_EX_TEMP_LOW)
1907
+ this_attr->address > ADT7316_EX_TEMP_LOW)
18901908 return -EPERM;
18911909
18921910 ret = chip->bus.read(chip->bus.client, this_attr->address, &val);
....@@ -1896,7 +1914,7 @@
18961914 data = (int)val;
18971915
18981916 if (!((chip->id & ID_FAMILY_MASK) == ID_ADT75XX &&
1899
- (chip->config1 & ADT7516_SEL_AIN1_2_EX_TEMP_MASK) == 0)) {
1917
+ (chip->config1 & ADT7516_SEL_AIN1_2_EX_TEMP_MASK) == 0)) {
19001918 if (data & 0x80)
19011919 data -= 256;
19021920 }
....@@ -1905,9 +1923,9 @@
19051923 }
19061924
19071925 static inline ssize_t adt7316_set_ad_bound(struct device *dev,
1908
- struct device_attribute *attr,
1909
- const char *buf,
1910
- size_t len)
1926
+ struct device_attribute *attr,
1927
+ const char *buf,
1928
+ size_t len)
19111929 {
19121930 struct iio_dev_attr *this_attr = to_iio_dev_attr(attr);
19131931 struct iio_dev *dev_info = dev_to_iio_dev(dev);
....@@ -1917,7 +1935,7 @@
19171935 int ret;
19181936
19191937 if ((chip->id & ID_FAMILY_MASK) == ID_ADT73XX &&
1920
- this_attr->address > ADT7316_EX_TEMP_LOW)
1938
+ this_attr->address > ADT7316_EX_TEMP_LOW)
19211939 return -EPERM;
19221940
19231941 ret = kstrtoint(buf, 10, &data);
....@@ -1925,7 +1943,7 @@
19251943 return -EINVAL;
19261944
19271945 if ((chip->id & ID_FAMILY_MASK) == ID_ADT75XX &&
1928
- (chip->config1 & ADT7516_SEL_AIN1_2_EX_TEMP_MASK) == 0) {
1946
+ (chip->config1 & ADT7516_SEL_AIN1_2_EX_TEMP_MASK) == 0) {
19291947 if (data > 255 || data < 0)
19301948 return -EINVAL;
19311949 } else {
....@@ -1946,8 +1964,8 @@
19461964 }
19471965
19481966 static ssize_t adt7316_show_int_enabled(struct device *dev,
1949
- struct device_attribute *attr,
1950
- char *buf)
1967
+ struct device_attribute *attr,
1968
+ char *buf)
19511969 {
19521970 struct iio_dev *dev_info = dev_to_iio_dev(dev);
19531971 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -1956,9 +1974,9 @@
19561974 }
19571975
19581976 static ssize_t adt7316_set_int_enabled(struct device *dev,
1959
- struct device_attribute *attr,
1960
- const char *buf,
1961
- size_t len)
1977
+ struct device_attribute *attr,
1978
+ const char *buf,
1979
+ size_t len)
19621980 {
19631981 struct iio_dev *dev_info = dev_to_iio_dev(dev);
19641982 struct adt7316_chip_info *chip = iio_priv(dev_info);
....@@ -2107,12 +2125,11 @@
21072125 * device probe and remove
21082126 */
21092127 int adt7316_probe(struct device *dev, struct adt7316_bus *bus,
2110
- const char *name)
2128
+ const char *name)
21112129 {
21122130 struct adt7316_chip_info *chip;
21132131 struct iio_dev *indio_dev;
2114
- unsigned short *adt7316_platform_data = dev->platform_data;
2115
- int ret = 0;
2132
+ int ret;
21162133
21172134 indio_dev = devm_iio_device_alloc(dev, sizeof(*chip));
21182135 if (!indio_dev)
....@@ -2130,9 +2147,23 @@
21302147 else
21312148 return -ENODEV;
21322149
2133
- chip->ldac_pin = adt7316_platform_data[1];
2134
- if (chip->ldac_pin) {
2135
- chip->config3 |= ADT7316_DA_EN_VIA_DAC_LDCA;
2150
+ if (chip->id == ID_ADT7316 || chip->id == ID_ADT7516)
2151
+ chip->dac_bits = 12;
2152
+ else if (chip->id == ID_ADT7317 || chip->id == ID_ADT7517)
2153
+ chip->dac_bits = 10;
2154
+ else
2155
+ chip->dac_bits = 8;
2156
+
2157
+ chip->ldac_pin = devm_gpiod_get_optional(dev, "adi,ldac",
2158
+ GPIOD_OUT_LOW);
2159
+ if (IS_ERR(chip->ldac_pin)) {
2160
+ ret = PTR_ERR(chip->ldac_pin);
2161
+ dev_err(dev, "Failed to request ldac GPIO: %d\n", ret);
2162
+ return ret;
2163
+ }
2164
+
2165
+ if (!chip->ldac_pin) {
2166
+ chip->config3 |= ADT7316_DA_EN_VIA_DAC_LDAC;
21362167 if ((chip->id & ID_FAMILY_MASK) == ID_ADT75XX)
21372168 chip->config1 |= ADT7516_SEL_AIN3;
21382169 }
....@@ -2140,7 +2171,6 @@
21402171 if ((chip->id & ID_FAMILY_MASK) == ID_ADT75XX)
21412172 chip->int_mask |= ADT7516_AIN_INT_MASK;
21422173
2143
- indio_dev->dev.parent = dev;
21442174 if ((chip->id & ID_FAMILY_MASK) == ID_ADT75XX)
21452175 indio_dev->info = &adt7516_info;
21462176 else
....@@ -2149,21 +2179,9 @@
21492179 indio_dev->modes = INDIO_DIRECT_MODE;
21502180
21512181 if (chip->bus.irq > 0) {
2152
- if (adt7316_platform_data[0])
2153
- chip->bus.irq_flags = adt7316_platform_data[0];
2154
-
2155
- ret = devm_request_threaded_irq(dev, chip->bus.irq,
2156
- NULL,
2157
- adt7316_event_handler,
2158
- chip->bus.irq_flags |
2159
- IRQF_ONESHOT,
2160
- indio_dev->name,
2161
- indio_dev);
2182
+ ret = adt7316_setup_irq(indio_dev);
21622183 if (ret)
21632184 return ret;
2164
-
2165
- if (chip->bus.irq_flags & IRQF_TRIGGER_HIGH)
2166
- chip->config1 |= ADT7316_INT_POLARITY;
21672185 }
21682186
21692187 ret = chip->bus.write(chip->bus.client, ADT7316_CONFIG1, chip->config1);
....@@ -2179,7 +2197,7 @@
21792197 return ret;
21802198
21812199 dev_info(dev, "%s temperature sensor, ADC and DAC registered.\n",
2182
- indio_dev->name);
2200
+ indio_dev->name);
21832201
21842202 return 0;
21852203 }