@@ -889,7 +889,9 @@ struct axp_data {
889
889
const struct iio_info * iio_info ;
890
890
int num_channels ;
891
891
struct iio_chan_spec const * channels ;
892
+ unsigned long adc_en1 ;
892
893
unsigned long adc_en1_mask ;
894
+ unsigned long adc_en2 ;
893
895
unsigned long adc_en2_mask ;
894
896
int (* adc_rate )(struct axp20x_adc_iio * info ,
895
897
int rate );
@@ -910,7 +912,9 @@ static const struct axp_data axp20x_data = {
910
912
.iio_info = & axp20x_adc_iio_info ,
911
913
.num_channels = ARRAY_SIZE (axp20x_adc_channels ),
912
914
.channels = axp20x_adc_channels ,
915
+ .adc_en1 = AXP20X_ADC_EN1 ,
913
916
.adc_en1_mask = AXP20X_ADC_EN1_MASK ,
917
+ .adc_en2 = AXP20X_ADC_EN2 ,
914
918
.adc_en2_mask = AXP20X_ADC_EN2_MASK ,
915
919
.adc_rate = axp20x_adc_rate ,
916
920
.maps = axp20x_maps ,
@@ -920,6 +924,7 @@ static const struct axp_data axp22x_data = {
920
924
.iio_info = & axp22x_adc_iio_info ,
921
925
.num_channels = ARRAY_SIZE (axp22x_adc_channels ),
922
926
.channels = axp22x_adc_channels ,
927
+ .adc_en1 = AXP20X_ADC_EN1 ,
923
928
.adc_en1_mask = AXP22X_ADC_EN1_MASK ,
924
929
.adc_rate = axp22x_adc_rate ,
925
930
.maps = axp22x_maps ,
@@ -929,6 +934,7 @@ static const struct axp_data axp813_data = {
929
934
.iio_info = & axp813_adc_iio_info ,
930
935
.num_channels = ARRAY_SIZE (axp813_adc_channels ),
931
936
.channels = axp813_adc_channels ,
937
+ .adc_en1 = AXP20X_ADC_EN1 ,
932
938
.adc_en1_mask = AXP22X_ADC_EN1_MASK ,
933
939
.adc_rate = axp813_adc_rate ,
934
940
.maps = axp22x_maps ,
@@ -988,14 +994,16 @@ static int axp20x_probe(struct platform_device *pdev)
988
994
indio_dev -> channels = info -> data -> channels ;
989
995
990
996
/* Enable the ADCs on IP */
991
- regmap_write (info -> regmap , AXP20X_ADC_EN1 , info -> data -> adc_en1_mask );
997
+ regmap_write (info -> regmap , info -> data -> adc_en1 ,
998
+ info -> data -> adc_en1_mask );
992
999
993
1000
if (info -> data -> adc_en2_mask )
994
- regmap_set_bits (info -> regmap , AXP20X_ADC_EN2 ,
1001
+ regmap_set_bits (info -> regmap , info -> data -> adc_en2 ,
995
1002
info -> data -> adc_en2_mask );
996
1003
997
1004
/* Configure ADCs rate */
998
- info -> data -> adc_rate (info , 100 );
1005
+ if (info -> data -> adc_rate )
1006
+ info -> data -> adc_rate (info , 100 );
999
1007
1000
1008
ret = iio_map_array_register (indio_dev , info -> data -> maps );
1001
1009
if (ret < 0 ) {
@@ -1015,10 +1023,10 @@ static int axp20x_probe(struct platform_device *pdev)
1015
1023
iio_map_array_unregister (indio_dev );
1016
1024
1017
1025
fail_map :
1018
- regmap_write (info -> regmap , AXP20X_ADC_EN1 , 0 );
1026
+ regmap_write (info -> regmap , info -> data -> adc_en1 , 0 );
1019
1027
1020
1028
if (info -> data -> adc_en2_mask )
1021
- regmap_write (info -> regmap , AXP20X_ADC_EN2 , 0 );
1029
+ regmap_write (info -> regmap , info -> data -> adc_en2 , 0 );
1022
1030
1023
1031
return ret ;
1024
1032
}
@@ -1031,10 +1039,10 @@ static void axp20x_remove(struct platform_device *pdev)
1031
1039
iio_device_unregister (indio_dev );
1032
1040
iio_map_array_unregister (indio_dev );
1033
1041
1034
- regmap_write (info -> regmap , AXP20X_ADC_EN1 , 0 );
1042
+ regmap_write (info -> regmap , info -> data -> adc_en1 , 0 );
1035
1043
1036
1044
if (info -> data -> adc_en2_mask )
1037
- regmap_write (info -> regmap , AXP20X_ADC_EN2 , 0 );
1045
+ regmap_write (info -> regmap , info -> data -> adc_en2 , 0 );
1038
1046
}
1039
1047
1040
1048
static struct platform_driver axp20x_adc_driver = {
0 commit comments