@@ -53,24 +53,34 @@ static int16_t fir_64_2[] = {
53
53
54
54
int ad9361_set_trx_fir_enable (struct iio_device * dev , int enable )
55
55
{
56
- int ret = iio_device_attr_write_bool (dev ,
57
- "in_out_voltage_filter_fir_en" , !!enable );
58
- if (ret < 0 )
59
- ret = iio_channel_attr_write_bool (iio_device_find_channel (dev , "out" , false),
60
- "voltage_filter_fir_en" , !!enable );
56
+ int ret ;
57
+
58
+ const struct iio_attr * attr = iio_device_find_attr (dev , "in_out_voltage_filter_fir_en" );
59
+ if (!attr ) {
60
+ attr = iio_channel_find_attr (iio_device_find_channel (dev , "out" , false),
61
+ "voltage_filter_fir_en" );
62
+ if (!attr )
63
+ return - ENOENT ;
64
+ }
65
+
66
+ ret = iio_attr_write_bool (attr , !!enable );
61
67
return ret ;
62
68
}
63
69
64
70
int ad9361_get_trx_fir_enable (struct iio_device * dev , int * enable )
65
71
{
72
+ int ret ;
66
73
bool value ;
67
74
68
- int ret = iio_device_attr_read_bool (dev , "in_out_voltage_filter_fir_en" , & value );
69
-
70
- if (ret < 0 )
71
- ret = iio_channel_attr_read_bool (iio_device_find_channel (dev , "out" , false),
72
- "voltage_filter_fir_en" , & value );
75
+ const struct iio_attr * attr = iio_device_find_attr (dev , "in_out_voltage_filter_fir_en" );
76
+ if (!attr ) {
77
+ attr = iio_channel_find_attr (iio_device_find_channel (dev , "out" , false),
78
+ "voltage_filter_fir_en" );
79
+ if (!attr )
80
+ return - ENOENT ;
81
+ }
73
82
83
+ ret = iio_attr_read_bool (attr , & value );
74
84
if (!ret )
75
85
* enable = value ;
76
86
@@ -80,6 +90,7 @@ int ad9361_get_trx_fir_enable(struct iio_device *dev, int *enable)
80
90
int ad9361_set_bb_rate (struct iio_device * dev , unsigned long rate )
81
91
{
82
92
struct iio_channel * chan ;
93
+ const struct iio_attr * attr ;
83
94
long long current_rate ;
84
95
int dec , taps , ret , i , enable , len = 0 ;
85
96
int16_t * fir ;
@@ -107,7 +118,11 @@ int ad9361_set_bb_rate(struct iio_device *dev, unsigned long rate)
107
118
if (chan == NULL )
108
119
return - ENODEV ;
109
120
110
- ret = iio_channel_attr_read_longlong (chan , "sampling_frequency" , & current_rate );
121
+ attr = iio_channel_find_attr (chan , "sampling_frequency" );
122
+ if (!attr )
123
+ return - ENOENT ;
124
+
125
+ ret = iio_attr_read_longlong (attr , & current_rate );
111
126
if (ret < 0 )
112
127
return ret ;
113
128
@@ -117,7 +132,7 @@ int ad9361_set_bb_rate(struct iio_device *dev, unsigned long rate)
117
132
118
133
if (enable ) {
119
134
if (current_rate <= (25000000 / 12 ))
120
- iio_channel_attr_write_longlong ( chan , "sampling_frequency" , 3000000 );
135
+ iio_attr_write_longlong ( attr , 3000000 );
121
136
122
137
ret = ad9361_set_trx_fir_enable (dev , false);
123
138
if (ret < 0 )
@@ -136,7 +151,11 @@ int ad9361_set_bb_rate(struct iio_device *dev, unsigned long rate)
136
151
137
152
len += snprintf (buf + len , FIR_BUF_SIZE - len , "\n" );
138
153
139
- ret = iio_device_attr_write_raw (dev , "filter_fir_config" , buf , len );
154
+ attr = iio_device_find_attr (dev , "filter_fir_config" );
155
+ if (!attr )
156
+ return - ENOENT ;
157
+
158
+ ret = iio_attr_write_raw (attr , buf , len );
140
159
free (buf );
141
160
142
161
if (ret < 0 )
@@ -146,7 +165,11 @@ int ad9361_set_bb_rate(struct iio_device *dev, unsigned long rate)
146
165
int dacrate , txrate , max ;
147
166
char readbuf [100 ];
148
167
149
- ret = iio_device_attr_read_raw (dev , "tx_path_rates" , readbuf , sizeof (readbuf ));
168
+ attr = iio_device_find_attr (dev , "tx_path_rates" );
169
+ if (!attr )
170
+ return - ENOENT ;
171
+
172
+ ret = iio_attr_read_raw (attr , readbuf , sizeof (readbuf ));
150
173
if (ret < 0 )
151
174
return ret ;
152
175
ret = sscanf (readbuf , "BBPLL:%*d DAC:%d T2:%*d T1:%*d TF:%*d TXSAMP:%d" , & dacrate , & txrate );
@@ -156,18 +179,27 @@ int ad9361_set_bb_rate(struct iio_device *dev, unsigned long rate)
156
179
if (txrate == 0 )
157
180
return - EINVAL ;
158
181
182
+ attr = iio_channel_find_attr (chan , "sampling_frequency" );
183
+ if (!attr )
184
+ return - ENOENT ;
185
+
159
186
max = (dacrate / txrate ) * 16 ;
160
187
if (max < taps )
161
- iio_channel_attr_write_longlong ( chan , "sampling_frequency" , 3000000 );
188
+ iio_attr_write_longlong ( attr , 3000000 );
162
189
163
190
ret = ad9361_set_trx_fir_enable (dev , true);
164
191
if (ret < 0 )
165
192
return ret ;
166
- ret = iio_channel_attr_write_longlong (chan , "sampling_frequency" , rate );
193
+
194
+ ret = iio_attr_write_longlong (attr , rate );
167
195
if (ret < 0 )
168
196
return ret ;
169
197
} else {
170
- ret = iio_channel_attr_write_longlong (chan , "sampling_frequency" , rate );
198
+ attr = iio_channel_find_attr (chan , "sampling_frequency" );
199
+ if (!attr )
200
+ return - ENOENT ;
201
+
202
+ ret = iio_attr_write_longlong (attr , rate );
171
203
if (ret < 0 )
172
204
return ret ;
173
205
ret = ad9361_set_trx_fir_enable (dev , true);
0 commit comments