@@ -248,7 +248,6 @@ static int dln2_adc_set_chan_period(struct dln2_adc *dln2,
248
248
static int dln2_adc_read (struct dln2_adc * dln2 , unsigned int channel )
249
249
{
250
250
int ret , i ;
251
- struct iio_dev * indio_dev = platform_get_drvdata (dln2 -> pdev );
252
251
u16 conflict ;
253
252
__le16 value ;
254
253
int olen = sizeof (value );
@@ -257,13 +256,9 @@ static int dln2_adc_read(struct dln2_adc *dln2, unsigned int channel)
257
256
.chan = channel ,
258
257
};
259
258
260
- ret = iio_device_claim_direct_mode (indio_dev );
261
- if (ret < 0 )
262
- return ret ;
263
-
264
259
ret = dln2_adc_set_chan_enabled (dln2 , channel , true);
265
260
if (ret < 0 )
266
- goto release_direct ;
261
+ return ret ;
267
262
268
263
ret = dln2_adc_set_port_enabled (dln2 , true, & conflict );
269
264
if (ret < 0 ) {
@@ -300,8 +295,6 @@ static int dln2_adc_read(struct dln2_adc *dln2, unsigned int channel)
300
295
dln2_adc_set_port_enabled (dln2 , false, NULL );
301
296
disable_chan :
302
297
dln2_adc_set_chan_enabled (dln2 , channel , false);
303
- release_direct :
304
- iio_device_release_direct_mode (indio_dev );
305
298
306
299
return ret ;
307
300
}
@@ -337,10 +330,16 @@ static int dln2_adc_read_raw(struct iio_dev *indio_dev,
337
330
338
331
switch (mask ) {
339
332
case IIO_CHAN_INFO_RAW :
333
+ ret = iio_device_claim_direct_mode (indio_dev );
334
+ if (ret < 0 )
335
+ return ret ;
336
+
340
337
mutex_lock (& dln2 -> mutex );
341
338
ret = dln2_adc_read (dln2 , chan -> channel );
342
339
mutex_unlock (& dln2 -> mutex );
343
340
341
+ iio_device_release_direct_mode (indio_dev );
342
+
344
343
if (ret < 0 )
345
344
return ret ;
346
345
0 commit comments