@@ -626,6 +626,7 @@ static const struct iio_chan_spec ad4170_channel_template = {
626
626
.differential = 1 ,
627
627
.info_mask_separate = BIT (IIO_CHAN_INFO_RAW ) |
628
628
BIT (IIO_CHAN_INFO_SCALE ) |
629
+ BIT (IIO_CHAN_INFO_CALIBBIAS ) |
629
630
BIT (IIO_CHAN_INFO_CALIBSCALE ) |
630
631
BIT (IIO_CHAN_INFO_OFFSET ),
631
632
.info_mask_separate_available = BIT (IIO_CHAN_INFO_SCALE ),
@@ -949,6 +950,9 @@ static int ad4170_read_raw(struct iio_dev *indio_dev,
949
950
pga = FIELD_GET (AD4170_AFE_PGA_GAIN_MSK , setup -> afe );
950
951
* val = chan_info -> offset_tbl [pga ];
951
952
return IIO_VAL_INT ;
953
+ case IIO_CHAN_INFO_CALIBBIAS :
954
+ * val = setup -> offset ;
955
+ return IIO_VAL_INT ;
952
956
case IIO_CHAN_INFO_CALIBSCALE :
953
957
* val = setup -> gain ;
954
958
return IIO_VAL_INT ;
@@ -1066,6 +1070,18 @@ static int ad4170_set_pga(struct ad4170_state *st,
1066
1070
return ad4170_write_channel_setup (st , chan -> address , false);
1067
1071
}
1068
1072
1073
+ static int ad4170_set_calib_offset (struct ad4170_state * st ,
1074
+ struct iio_chan_spec const * chan , int val )
1075
+ {
1076
+ struct ad4170_chan_info * chan_info = & st -> chan_infos [chan -> address ];
1077
+ struct ad4170_setup * setup = & chan_info -> setup ;
1078
+
1079
+ guard (mutex )(& st -> lock );
1080
+ setup -> offset = val ;
1081
+
1082
+ return ad4170_write_channel_setup (st , chan -> address , false);
1083
+ }
1084
+
1069
1085
static int ad4170_set_calib_gain (struct ad4170_state * st ,
1070
1086
struct iio_chan_spec const * chan , int val )
1071
1087
{
@@ -1087,6 +1103,8 @@ static int __ad4170_write_raw(struct iio_dev *indio_dev,
1087
1103
switch (info ) {
1088
1104
case IIO_CHAN_INFO_SCALE :
1089
1105
return ad4170_set_pga (st , chan , val , val2 );
1106
+ case IIO_CHAN_INFO_CALIBBIAS :
1107
+ return ad4170_set_calib_offset (st , chan , val );
1090
1108
case IIO_CHAN_INFO_CALIBSCALE :
1091
1109
return ad4170_set_calib_gain (st , chan , val );
1092
1110
default :
@@ -1115,6 +1133,7 @@ static int ad4170_write_raw_get_fmt(struct iio_dev *indio_dev,
1115
1133
switch (info ) {
1116
1134
case IIO_CHAN_INFO_SCALE :
1117
1135
return IIO_VAL_INT_PLUS_NANO ;
1136
+ case IIO_CHAN_INFO_CALIBBIAS :
1118
1137
case IIO_CHAN_INFO_CALIBSCALE :
1119
1138
return IIO_VAL_INT ;
1120
1139
default :
0 commit comments