Skip to content

Commit ade7ef7

Browse files
Jonathan Camerongregkh
Jonathan Cameron
authored andcommitted
staging:iio: Differential channel handling - use explicit flag rather than types.
Straight forward change in the core, but required some drivers to not use the IIO_CHAN macro as that doesn't allow setting this bit (and is going away anyway). Hence the churn. Tested on max1363 with a couple of supported parts. V2: differential bit in code got 7 bits and direction 1. Reversed that. Issue spotted by Michael - thanks! Signed-off-by: Jonathan Cameron <[email protected]> Acked-by: Michael Hennerich <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 8ce7375 commit ade7ef7

File tree

7 files changed

+323
-244
lines changed

7 files changed

+323
-244
lines changed

drivers/staging/iio/adc/ad7192.c

+4-4
Original file line numberDiff line numberDiff line change
@@ -886,8 +886,7 @@ static int ad7192_read_raw(struct iio_dev *indio_dev,
886886
((1 << (chan->scan_type.realbits)) - 1);
887887

888888
switch (chan->type) {
889-
case IIO_IN:
890-
case IIO_IN_DIFF:
889+
case IIO_VOLTAGE:
891890
if (!unipolar)
892891
*val -= (1 << (chan->scan_type.realbits - 1));
893892
break;
@@ -986,7 +985,8 @@ static const struct iio_info ad7192_info = {
986985
};
987986

988987
#define AD7192_CHAN_DIFF(_chan, _chan2, _name, _address, _si) \
989-
{ .type = IIO_IN_DIFF, \
988+
{ .type = IIO_VOLTAGE, \
989+
.differential = 1, \
990990
.indexed = 1, \
991991
.extend_name = _name, \
992992
.channel = _chan, \
@@ -997,7 +997,7 @@ static const struct iio_info ad7192_info = {
997997
.scan_type = IIO_ST('s', 24, 32, 0)}
998998

999999
#define AD7192_CHAN(_chan, _address, _si) \
1000-
{ .type = IIO_IN, \
1000+
{ .type = IIO_VOLTAGE, \
10011001
.indexed = 1, \
10021002
.channel = _chan, \
10031003
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED), \

drivers/staging/iio/adc/ad7280a.c

+16-10
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,8 @@ static int ad7280_channel_init(struct ad7280_state *st)
495495
for (ch = AD7280A_CELL_VOLTAGE_1; ch <= AD7280A_AUX_ADC_6; ch++,
496496
cnt++) {
497497
if (ch < AD7280A_AUX_ADC_1) {
498-
st->channels[cnt].type = IIO_IN_DIFF;
498+
st->channels[cnt].type = IIO_VOLTAGE;
499+
st->channels[cnt].differential = 1;
499500
st->channels[cnt].channel = (dev * 6) + ch;
500501
st->channels[cnt].channel2 =
501502
st->channels[cnt].channel + 1;
@@ -515,7 +516,8 @@ static int ad7280_channel_init(struct ad7280_state *st)
515516
st->channels[cnt].scan_type.shift = 0;
516517
}
517518

518-
st->channels[cnt].type = IIO_IN_DIFF;
519+
st->channels[cnt].type = IIO_VOLTAGE;
520+
st->channels[cnt].differential = 1;
519521
st->channels[cnt].channel = 0;
520522
st->channels[cnt].channel2 = dev * 6;
521523
st->channels[cnt].address = AD7280A_ALL_CELLS;
@@ -692,18 +694,22 @@ static irqreturn_t ad7280_event_handler(int irq, void *private)
692694
if (((channels[i] >> 11) & 0xFFF) >=
693695
st->cell_threshhigh)
694696
iio_push_event(dev_info,
695-
IIO_UNMOD_EVENT_CODE(IIO_IN_DIFF,
696-
0,
697-
IIO_EV_TYPE_THRESH,
698-
IIO_EV_DIR_RISING),
697+
IIO_EVENT_CODE(IIO_VOLTAGE,
698+
1,
699+
0,
700+
IIO_EV_DIR_RISING,
701+
IIO_EV_TYPE_THRESH,
702+
0, 0, 0),
699703
iio_get_time_ns());
700704
else if (((channels[i] >> 11) & 0xFFF) <=
701705
st->cell_threshlow)
702706
iio_push_event(dev_info,
703-
IIO_UNMOD_EVENT_CODE(IIO_IN_DIFF,
704-
0,
705-
IIO_EV_TYPE_THRESH,
706-
IIO_EV_DIR_FALLING),
707+
IIO_EVENT_CODE(IIO_VOLTAGE,
708+
1,
709+
0,
710+
IIO_EV_DIR_FALLING,
711+
IIO_EV_TYPE_THRESH,
712+
0, 0, 0),
707713
iio_get_time_ns());
708714
} else {
709715
if (((channels[i] >> 11) & 0xFFF) >= st->aux_threshhigh)

drivers/staging/iio/adc/ad7793.c

+128-48
Original file line numberDiff line numberDiff line change
@@ -767,57 +767,137 @@ static const struct iio_info ad7793_info = {
767767

768768
static const struct ad7793_chip_info ad7793_chip_info_tbl[] = {
769769
[ID_AD7793] = {
770-
.channel[0] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 0, 0,
771-
(1 << IIO_CHAN_INFO_SCALE_SHARED),
772-
AD7793_CH_AIN1P_AIN1M,
773-
0, IIO_ST('s', 24, 32, 0), 0),
774-
.channel[1] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 1, 1,
775-
(1 << IIO_CHAN_INFO_SCALE_SHARED),
776-
AD7793_CH_AIN2P_AIN2M,
777-
1, IIO_ST('s', 24, 32, 0), 0),
778-
.channel[2] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 2, 2,
779-
(1 << IIO_CHAN_INFO_SCALE_SHARED),
780-
AD7793_CH_AIN3P_AIN3M,
781-
2, IIO_ST('s', 24, 32, 0), 0),
782-
.channel[3] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, "shorted", 0, 0,
783-
(1 << IIO_CHAN_INFO_SCALE_SHARED),
784-
AD7793_CH_AIN1M_AIN1M,
785-
3, IIO_ST('s', 24, 32, 0), 0),
786-
.channel[4] = IIO_CHAN(IIO_TEMP, 0, 1, 0, NULL, 0, 0,
787-
(1 << IIO_CHAN_INFO_SCALE_SEPARATE),
788-
AD7793_CH_TEMP,
789-
4, IIO_ST('s', 24, 32, 0), 0),
790-
.channel[5] = IIO_CHAN(IIO_IN, 0, 1, 0, "supply", 4, 0,
791-
(1 << IIO_CHAN_INFO_SCALE_SEPARATE),
792-
AD7793_CH_AVDD_MONITOR,
793-
5, IIO_ST('s', 24, 32, 0), 0),
770+
.channel[0] = {
771+
.type = IIO_VOLTAGE,
772+
.differential = 1,
773+
.indexed = 1,
774+
.channel = 0,
775+
.channel2 = 0,
776+
.address = AD7793_CH_AIN1P_AIN1M,
777+
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
778+
.scan_index = 0,
779+
.scan_type = IIO_ST('s', 24, 32, 0)
780+
},
781+
.channel[1] = {
782+
.type = IIO_VOLTAGE,
783+
.differential = 1,
784+
.indexed = 1,
785+
.channel = 1,
786+
.channel2 = 1,
787+
.address = AD7793_CH_AIN2P_AIN2M,
788+
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
789+
.scan_index = 1,
790+
.scan_type = IIO_ST('s', 24, 32, 0)
791+
},
792+
.channel[2] = {
793+
.type = IIO_VOLTAGE,
794+
.differential = 1,
795+
.indexed = 1,
796+
.channel = 2,
797+
.channel2 = 2,
798+
.address = AD7793_CH_AIN3P_AIN3M,
799+
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
800+
.scan_index = 2,
801+
.scan_type = IIO_ST('s', 24, 32, 0)
802+
},
803+
.channel[3] = {
804+
.type = IIO_VOLTAGE,
805+
.differential = 1,
806+
.extend_name = "shorted",
807+
.indexed = 1,
808+
.channel = 2,
809+
.channel2 = 2,
810+
.address = AD7793_CH_AIN1M_AIN1M,
811+
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
812+
.scan_index = 2,
813+
.scan_type = IIO_ST('s', 24, 32, 0)
814+
},
815+
.channel[4] = {
816+
.type = IIO_TEMP,
817+
.indexed = 1,
818+
.channel = 0,
819+
.address = AD7793_CH_TEMP,
820+
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
821+
.scan_index = 4,
822+
.scan_type = IIO_ST('s', 24, 32, 0),
823+
},
824+
.channel[5] = {
825+
.type = IIO_VOLTAGE,
826+
.extend_name = "supply",
827+
.indexed = 1,
828+
.channel = 4,
829+
.address = AD7793_CH_AVDD_MONITOR,
830+
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
831+
.scan_index = 5,
832+
.scan_type = IIO_ST('s', 24, 32, 0),
833+
},
794834
.channel[6] = IIO_CHAN_SOFT_TIMESTAMP(6),
795835
},
796836
[ID_AD7792] = {
797-
.channel[0] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 0, 0,
798-
(1 << IIO_CHAN_INFO_SCALE_SHARED),
799-
AD7793_CH_AIN1P_AIN1M,
800-
0, IIO_ST('s', 16, 32, 0), 0),
801-
.channel[1] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 1, 1,
802-
(1 << IIO_CHAN_INFO_SCALE_SHARED),
803-
AD7793_CH_AIN2P_AIN2M,
804-
1, IIO_ST('s', 16, 32, 0), 0),
805-
.channel[2] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, NULL, 2, 2,
806-
(1 << IIO_CHAN_INFO_SCALE_SHARED),
807-
AD7793_CH_AIN3P_AIN3M,
808-
2, IIO_ST('s', 16, 32, 0), 0),
809-
.channel[3] = IIO_CHAN(IIO_IN_DIFF, 0, 1, 0, "shorted", 0, 0,
810-
(1 << IIO_CHAN_INFO_SCALE_SHARED),
811-
AD7793_CH_AIN1M_AIN1M,
812-
3, IIO_ST('s', 16, 32, 0), 0),
813-
.channel[4] = IIO_CHAN(IIO_TEMP, 0, 1, 0, NULL, 0, 0,
814-
(1 << IIO_CHAN_INFO_SCALE_SEPARATE),
815-
AD7793_CH_TEMP,
816-
4, IIO_ST('s', 16, 32, 0), 0),
817-
.channel[5] = IIO_CHAN(IIO_IN, 0, 1, 0, "supply", 4, 0,
818-
(1 << IIO_CHAN_INFO_SCALE_SEPARATE),
819-
AD7793_CH_AVDD_MONITOR,
820-
5, IIO_ST('s', 16, 32, 0), 0),
837+
.channel[0] = {
838+
.type = IIO_VOLTAGE,
839+
.differential = 1,
840+
.indexed = 1,
841+
.channel = 0,
842+
.channel2 = 0,
843+
.address = AD7793_CH_AIN1P_AIN1M,
844+
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
845+
.scan_index = 0,
846+
.scan_type = IIO_ST('s', 16, 32, 0)
847+
},
848+
.channel[1] = {
849+
.type = IIO_VOLTAGE,
850+
.differential = 1,
851+
.indexed = 1,
852+
.channel = 1,
853+
.channel2 = 1,
854+
.address = AD7793_CH_AIN2P_AIN2M,
855+
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
856+
.scan_index = 1,
857+
.scan_type = IIO_ST('s', 16, 32, 0)
858+
},
859+
.channel[2] = {
860+
.type = IIO_VOLTAGE,
861+
.differential = 1,
862+
.indexed = 1,
863+
.channel = 2,
864+
.channel2 = 2,
865+
.address = AD7793_CH_AIN3P_AIN3M,
866+
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
867+
.scan_index = 2,
868+
.scan_type = IIO_ST('s', 16, 32, 0)
869+
},
870+
.channel[3] = {
871+
.type = IIO_VOLTAGE,
872+
.differential = 1,
873+
.extend_name = "shorted",
874+
.indexed = 1,
875+
.channel = 2,
876+
.channel2 = 2,
877+
.address = AD7793_CH_AIN1M_AIN1M,
878+
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SHARED),
879+
.scan_index = 2,
880+
.scan_type = IIO_ST('s', 16, 32, 0)
881+
},
882+
.channel[4] = {
883+
.type = IIO_TEMP,
884+
.indexed = 1,
885+
.channel = 0,
886+
.address = AD7793_CH_TEMP,
887+
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
888+
.scan_index = 4,
889+
.scan_type = IIO_ST('s', 16, 32, 0),
890+
},
891+
.channel[5] = {
892+
.type = IIO_VOLTAGE,
893+
.extend_name = "supply",
894+
.indexed = 1,
895+
.channel = 4,
896+
.address = AD7793_CH_AVDD_MONITOR,
897+
.info_mask = (1 << IIO_CHAN_INFO_SCALE_SEPARATE),
898+
.scan_index = 5,
899+
.scan_type = IIO_ST('s', 16, 32, 0),
900+
},
821901
.channel[6] = IIO_CHAN_SOFT_TIMESTAMP(6),
822902
},
823903
};

0 commit comments

Comments
 (0)